
系统编程
文章平均质量分 90
修炼成妖kkk
咸鱼一条
展开
-
MySQL---数据类型与索引
在前面的学习中我们知道数据库其实就是很多表的一个集合,在创建表的时候,禁止使用中文做字段名,禁止使用字符型作为主键,禁止无主见或是唯一索引的出现,同时我们需要考虑为每一个字段设置合适的数据类型。数据类型整形类型大小范围tinyint1字节(-128,127)smallint2字节(-32768,32767)mediumint3字节(-838860...原创 2019-05-22 17:29:56 · 292 阅读 · 0 评论 -
MySQL---事务和锁
事务事务其实就是一组DML语句的集合,MySQL数据库InnoDB存储引擎支持事务,MyISAM不支持,而且MySQL的事务默认是自提交模式。事务的特性原子性:事物的原子性是指包含所有的操作,要不然全部都做,要不然全部都不做,他是一个不可以被打断的过程。一致性:一致性是说数据库中的数据在事务操作前和操作后必须满足业务规则的约束。隔离性:这个是我们的重点,隔离性是数据库允许多个并发事务同...原创 2019-05-25 10:32:42 · 263 阅读 · 0 评论 -
MySQL---体系结构与存储引擎
体系结构如果把mysql比喻成一条龙的话,那么体系结构就是龙头部分,mysql的体系结构分为两层,mysql server层与存储引擎层,在mysql层中又分为连接层和sql层。应用程序通过接口(ODBC,JDBC)来连接mysql,最先连接处理的是连接层,连接层包括通信协议,现场处理,用户名密码确认三个部分,通信协议负责检测客户端版本是否兼容mysql服务器,线程处理是每一个连接请求都会分配...原创 2019-04-18 17:39:01 · 322 阅读 · 0 评论 -
Redis学习笔记(三)
这一篇博客主要是学习redis的复制以及阻塞相关知识,在分布式系统中为了解决单点问题,通常会把数据复制多个副本到其他机器,满足故障恢复以及负载均衡等需求,redis也是如此,复制功能是redis高可用的基础。redis是单线程架构,所有的读写操作都是在主线程中完成,当redis用于高并发时,如果出现阻塞,对于应用都是不好的,所以阻塞是redis是重点知识。复制我们将从redis复制的使用方式...原创 2019-04-09 14:41:54 · 155 阅读 · 0 评论 -
Redis学习笔记(二)
尽管redis提供的五种数据结构以及足够强大,但是除此之外,redis还提供了许多其他的功能以及优化。本篇博客前期就是通过介绍这些功能来体现redis的强大。附加功能redis除了提供五个基础的数据结构外,我们接下来介绍redis中的慢查询,pipeline,发布订阅等优化功能。慢查询在许多存储系统中提供满查询日志帮助开发运维人员定位系统存在的慢操作,所谓慢查询日志就是说系统在命令执行前后...原创 2019-04-01 14:49:11 · 190 阅读 · 0 评论 -
Redis学习笔记(一)
什么是redis在最近的面试中由于项目需要所以经常被面试官问到redis,所以在图书馆找了书,接下来几篇博客就是为了具体的学习redis,首先redis是完全开源免费的,高性能的kv数据库。关于redis的特点,做下面几点说明:速度快:redis是用C语言实现的,由于直接操纵底层所以语言层面处理速度较快,并且redis的数据都是存在内存中的,内存的执行速度是各层级中最快的,其次redis使用...原创 2019-03-31 10:29:24 · 1247 阅读 · 3 评论 -
Linux环境编程--线程安全
由于线程共享一份进程空间,所以当一个线程可以修改变量的时候,其他线程也可以读取或者修改,我们需要对这些线程进行同步,确保他们在访问变量的存储内容时不会访问到无效的值,假设在堆上有一份数据,线程A与B同时对他进行修改,那么就会造成竞态条件,因为这两个修改过程都不是原子操作, 都可以被打断,那么我们如何解决这个问题呢,这就引出了线程同步的概念。线程通过同步与互斥机制来保证线程安全。我们这里介绍几种常...原创 2018-11-29 20:18:42 · 216 阅读 · 0 评论 -
Linux环境编程---进程调度
这一章我们主要介绍进程的状态,进程的调度算法,内核如何为不同的进程分配资源等,帮助我们加深对于进程相关知识的了解。进程的状态首先我们要知道进程虽然是占有CPU资源的可是就像人不能一直工作一样,进程也不能一直占用CPU资源,同时我们还要考虑并发问题等,具体原因有:进程可能需要等待某种外部条件的满足,在满足条件之气那无法继续执行,在这种情况下占用CPU是对资源的浪费linux是多用户多任务的...原创 2018-11-21 14:51:02 · 413 阅读 · 0 评论 -
Linux环境编程---系统数据文件
linux系统的正常运行需要使用大量与系统有关的数据文件,例如口令文件/etc/passwd和件/etc/group等,由于历史原因,这些数据文件都是ASCII文本文件,并且使用标准IO库读这些文件,对于较大的系统,顺序扫描这些文件很花费时间,我们需要能够以非ASCII文本格式存放这些文件。口令文件在posix中称为用户数据库,在linux中系统口令文件包含了用户名,加密口令,数值用户ID,数...原创 2018-11-14 16:09:25 · 265 阅读 · 0 评论 -
Linux环境编程--文件I/O
这一章的IO是基础IO,不带缓冲的IO,每个read和write都调用内核中的一个系统调用,包含open,read,write,lseek以及close几个函数。只要设计多个进程间的共享资源,原子操作就很重要,这一章通过文件IO与相关函数来讨论,进一步讨论多个进程间如何共享文件,以及说明dup,fcntl,sync等函数文件描述符对于内核而言,所有打开的文件都通过文件描述符来引用,文件描述符...原创 2018-11-08 16:40:04 · 260 阅读 · 0 评论 -
Linux环境编程--基础知识
所有操作系统都为他们所运行的程序提供服务,典型的服务包括:执行新程序,读文件,分配存储区以及获取当前时间等。从严格意义来说我们我们可以将操作系统定义为一个软件,他控制计算机硬件资源,提供程序运行环境,由于较小并且位于环境的核心,我们一称为内核。内核的接口被称作系统调用,公用函数库构建在系统调用之上,应用函数既可以使用公用库函数也可以使用系统调用输入和输出文件描述符通常是一个很小的非负证书,内...原创 2018-11-05 11:42:11 · 187 阅读 · 0 评论