用户态和内核态的概念区别 究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:
怎样去理解Linux用户态和内核态? 在Linux技术讨论中经常会用户态和内核态术语脱口而出,可你们想过吗?用户态和内核态代表是什么?本片文章,就来谈一谈这个话题。我们先来看一张Linux整体架构图。从图上我们可以看出来通过系统调用将Linux整个体系分为用户态和内核态(或者说内核空间和用户空间)。那内核态到底是什么呢?其实从本质上说就是我们所说的内核,它是一种特殊的软件程序,特殊在哪儿呢?控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。用户态就是提供应用程序运行的空间,为了使应用程..
使用openssl 生成免费证书 一:什么是openssl? 它的作用是?应用场景是什么? 二:使用openssl生成免费证书回到顶部一:什么是openssl? 它的作用是?应用场景是什么?即百度百科说:openssl是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,它可以避免信息被窃听到。SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape(网景)公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用...
如何本地调试微信小程序接口服务器 微信小程序所访问的接口路径需是合法域名且必须为 Https 协议,如果你作为微信小程序的接口服务器开发者,并且很不幸的接到了一个服务端异常(500)的反馈,你会如何调试?一、束手束脚的服务端调试若是浏览器端开发,还可以通过修改访问域名,直接连接到本机 Ip,通过本地调试环境,舒适的查找问题。但是由于小程序的限制,直连 Ip 已然无用。此时一个低效但是有效的定位问题的路径为:通过完善的服务器日志体系,寻找突破口(完善的日志体系,就比较重要了) 检查代码,寻找潜在的问题原因 修改代码(...
MySQL如何监测是否命中索引? mysql执行计划解读 Explain语法EXPLAIN SELECT ……变体:1. EXPLAIN EXTENDED SELECT ……将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT ……用于分区表的EXPLAIN执行计划包含的信息id包含一组数字,表示查询中执行select子句或操作表的顺序id相同,执行顺序由上至下如果是子查询,id的...
MySQL 索引 B树 优化 MySQL背后的数据结构及算法原理 摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyIS
数据库是如何通过索引定位数据,索引的原理讲解 前言我们之前讲了MySQL索引的底层数据结构,以及索引的失效原理等知识点。那么索引在硬盘上到底是怎么存储的呢?怎么通过索引定位查询出一条真实的数据呢?MySQL两大引擎MyIsam和InnoDB他们的索引又有哪些不同点呢?今天我们就来给大家揭晓一下MyIsam 和 InnoDB常见区别事务方面InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一。外键方面InnoDB 支持外键,而 MyISAM
Docker从入门到干活,看这一篇足矣 容器简介什么是Linux容器Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持 进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都 具有可移植性和一致性。更加详细地来说,请您假定您在开发一个应用。您使用的是一台笔记本电脑,而且您的开发环 境具有特定的配置。其他开发人员身处的环境配置可能稍有不同。您正在开发的应用依赖于您 当前的配置,还要依赖于某些特定文件。与此同时,您的企业还拥有标准化的测试和生产
PHP7到底有多快,基准测试与特性分析告诉你 PHP7到底有多快,基准测试与特性分析告诉你PHP 是一种跨平台开源语言,也是迄今为止最流行的 Web 开发语言,全球有超过 80%的网站由 PHP 驱动。自 1994 年由 Rasmus Lerdorf 创建以来已走过 20 多年,经历了 6 个大版本的更迭。下面就来了解 PHP7 带来的新特性。2015 年夏天,备受瞩目的 PHP7 发布了第一个 Alpha 版本。之后,经过大概 3 个 Beta 版本和 8 个 RC 版本,2016 年 1 月 PHP7 正式发布。PHP7 是 PHP 一个非
jq监听页面滚动 jq监听页面滚动事件 $(document).scroll(function() { varscroH = $(document).scrollTop();//滚动高度 varviewH = $(window).height();//可见高度 varcontentH = $(document).height();//内容高度 if(scroH >100){...
WINDOWS环境搭建本地SVN服务器 1.下载安装 VISUALSVNSERVER 1.1下载地址:https://www.visualsvn.com/server/download/1.2下载完成后,双击安装。2.下载安装TortoiseSVN1.1官网下载地址:http://tortoisesvn.net/downloads.html2.1下载完成后,双击安装。完成后Finish,安装成功。3.搭...
由于浏览器的缓存导致修改之后,后台还是显示原先的封面 今天在开发过程中遇到一个小问题,后台修改一本书的封面,上传图片后,由于浏览器的缓存导致修改之后,后台还是显示原先的封面,后来加入了两行代码搞定了这个问题。header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); header("Cache-Control: no-cache, must-revalidate" ); ...
随机截取一个汉字 话不多说直接上代码<?phpfunction getH($str){ // 利用preg_split函数,将汉字字符串拆分成数组,第一个参数是正则匹配,必须加上u,因为是utf8编码 // 这里不能使用substr或者mb_substr等,因为这些方法是针对字符有效的,汉字占2或者3个字符 $str = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY); // 利用shuffle函数,打乱汉字数组 // 不能.
不是吧,不是吧 !看完这个故事还有人不懂Redis? 我是Redis你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。说起我的诞生,跟关系数据库MySQL还挺有渊源的。在我还没来到这个世界上的时候,MySQL过得很辛苦,互联网发展得越来越快,它容纳的数据也越来越多,用户请求也随之暴涨,而每一个用户请求都变成了对它的一个又一个读写操作,MySQL是苦不堪言。尤其是到“双11”、“618“这种全民购物狂欢的日子,都是MySQL受苦受难的日子。据后来MySQL告诉我说,其实有一大半的用户请求都是读操作,而且经常都是重复查询一个东西
点赞功能如何设计,数据库如何选择,是否需要用缓存 点赞功能是目前app开发基本的功能今天我们就来聊聊 点赞、评论、收藏等这些场景的db数据库设计问题,1. 我们先来看看场景的需求: 显示点赞数量 判断用户是否点过赞,用于去重,必须的判断 显示个人点赞列表,一般在用户中心 显示文章点赞列表 我们先看一下头条和微博的例子这两个都是具有顶级流量的,后端肯定有复杂的架构,我们今天只谈大众化的方案。2.1 mysql方案mysql方案, 随着nosql的流行,大数据的持续热点,但是mysql仍然不可
四种优秀的数据库设计工具 本文将从用户界面、可支持的数据库、数据工具、以及售价四个方面,比较四种优秀数据库设计工具的各自优缺点。众所周知,良好的数据库设计能够大幅减少后期的运维工作,同时也能最大程度地减少软件项目出错的可能。由于我们所面临的真实项目需求往往五花八门,因此需要找到合适的设计工具,来实现事半功倍的效果。本文将从如下四个方面和您一起比较四种优秀数据库设计工具的各自优缺点。用户界面 可支持的数据库 数据工具 售价1.DbSchema官网:https://dbschema.com/DbSchem
数组 – 如何在Perl中不使用循环来过滤数组? 在这里,我试图仅过滤没有子字符串世界的元素,并将结果存储回同一个数组。在Perl中这样做的正确方法是什么?$ cat test.pluse strict;use warnings;my @arr = ('hello 1', 'hello 2', 'hello 3', 'world1', 'hello 4', 'world2');print "@arr";@arr =~ v/...