- 博客(26)
- 收藏
- 关注
原创 MySQL学习笔记一之基础架构
MySQL学习笔记一之架构@TOC架构图如下Server层连接器负责跟客户端建立连接、获取权限、维持和管理连接客户端如果太长时间没有动静,连接器会将其自动断开,时间由参数wait_timeout控制,默认值八小时长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接使用长连接后内存会涨的特别快,因为mysql执行过程中临时使用的内存是管理在连接对象里的,这些资源会在连接断开的时候才释放解决方案:定期断开长连接5.7以上的版本,可以在每次执行一个比较大的操作之后通过执行
2020-05-24 13:40:01
387
原创 好久不见
晃晃悠悠如今已到了2017年11月10日,翻看之前的东西真是感慨万千。上一篇博客,还是在大四找工作的时候写的,想想找工作的时候是真的辛苦啊,天天看面经看算法看乱七八糟的东西就为了能找到一个工作。现在,完成了从学生到程序员身份的转换,领域上还从C++语言转到了PHP语言,现在是一个PHPer啦!咦很神奇的发现自己的csdn上还多了几个粉丝?哈哈虽然不知道是不是僵尸粉。工作之后,感觉有了很大的不同,学
2017-11-10 15:22:18
217
原创 小数在计算机中的表示
运行如下代码得到结果你猜是多少呢?嗯你没有看错得到的答案是57.所以为什么会出现这种情况呢?首先需要探究的是0.58这个数字是如何在计算机中存储的。我们一般用下面格式表示浮点数。SPM其中S是符号位,P是阶码,M是尾数。单精度浮点数是32位,双精度浮点数是64位。SPM表示公
2017-11-06 14:42:49
2160
原创 《深度探索C++对象模型》学习笔记之Data语意学
在写这个之前,我为毛觉得莫名激动,为何上篇文章阅读量都破三百了,难道是提到了什么了不得的关键字啊啊哈哈哈我不啰嗦了 你觉得一下代码结果是什么呢?#include<iostream>using namespace std;class A{};class Y:public virtual A{};class X:public virtual A{};class Z:public X,
2016-05-07 22:26:50
700
原创 《Linux内核设计的艺术》学习笔记(一)从开机加电到执行main函数之前的过程
分享一个最近丢了手机心塞到爆炸的我,现在穷的只剩下满脑子的智慧了,好了,我要开始学习了. 首先,搭建一个linux0.11的系统环境,贴出结果图. 从开机加电到执行main函数之前的过程. 1. 启动BIOS,准备实模式下的中断向量表和中断服务程序; 2. 从启动盘加载操作系统程序到内存,加载操作系统程序的工作就是利用第一步中断服务程序实现的; 3. 为执行32位的main函数做过渡工
2016-05-07 14:57:52
3309
原创 《More Effective C++》学习笔记之一引用与指针
《More Effective C++》学习笔记之一引用与指针引用没有空引用 首先要认识到,在任何情况下都不能使用指向空值的引用,引用应该被初始化,这也就意味着使用引用代码的效率比使用指针的要高,因为在使用引用之前不需要测试它的合法性。指针可以被重新赋值 这也就是说,指针可以被重新赋值以指向另一个不同的对象,但是引用则总是指向在初始化时被指向的对象,以后不能改变。重载某个操作符时应该使用引
2016-05-04 13:23:41
392
原创 《第一行代码》学习笔记之服务
好吧我也不知道为什么自己要写这篇文章,大概这就是传说中的被逼无奈吧。 提到android的多线程编程,那么不得不提的就是服务(service)。服务是android实现程序后台运行的解决方案,其运行不依赖于用户界面,需要注意的一点是服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程,当某个应用程序进程被杀掉时,所有依赖于该进程的服务也会停止运行。这个就说到这里了。 多线
2016-05-03 10:40:38
628
原创 基础知识之在浏览器中输入网址之后发生了什么
1. 首先是输入网址 以www.facebook.com为例1. 浏览器查找域名对应IP2.1 浏览器发起DNS查询请求:在广域网中,我们是基于IP地址进行通信的。但通常客户访问的是一个网址,为此,我们需要先得到网址对应的IP地址,这就需要域名服务系统将域名转换成IP地址。如下图所示,在客户端浏览器中输入网址:http://www.cricode.com时,浏览器会根据本地客户端DNS服务器配置
2016-05-02 12:00:36
893
原创 《linux高性能服务器编程》学习笔记(三)之I/O复用,信号,定时器
今天是个好日子!所以让我们在这大好的日子里来做点有意义的事情吧!比如说,学习,哈哈,我真是熬得一手好鸡汤. 服务器通常需要处理三类事件:I/O事件,信号和定时事件.这就是今天要开这篇文章的原因. unix下有可用的5种I/O模型: - 阻塞式I/O; - 非阻塞式I/O; - I/O复用; - 信号驱动式I/O; - 异步I/O; 首先,我们来聊聊I/O事件. I/0复用
2016-04-28 20:23:08
1002
原创 基础知识之深入分析malloc和new
今天这篇文章,主要是分析malloc和new的区别。1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应
2016-04-16 20:58:50
465
原创 linux进程间通讯学习总结
管道,信号,消息队列,共享内存,信号量,套接口. 管道:可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信; 信号:信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身; 消息队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权
2016-04-14 09:27:03
572
原创 《linux高性能服务器编程》学习笔记(二)之拥塞控制
上一篇写着写着电脑就崩了,估计嫌我太罗嗦了啦哈哈哈 换个地方继续罗嗦,可可,我就是这么一个罗嗦的人~~~~啦啦啦 今天让我们接着上篇开始唠叨. 拥塞控制: 由于接收方缓存的限制,发送窗口不能大于接收方接收窗口。在报文段首部有一个字段就叫做窗口(rwnd),这便是用于告诉对方自己的接收窗口,可见窗口的大小是可以变化的。那么窗口的大小是如何变化的呢?TCP 对于拥塞的控制总结为“慢启动、加性增、
2016-04-13 22:25:42
936
原创 《linux高性能服务器编程》学习笔记(一)
一。tcp/ip协议族 四层协议系统: 应用层:ping telnet OSPF DNS(用户空间) 传输层:TCP UDP SCTP(流控制传输协议) 网络层:ICMP IP 数据链路层:ARP RARP 数据链路层:实现了网卡家口的网络驱动程序,以处理数据在物理媒介上的传输。网络层:实现数据包的选路和转发。由于通信的两台主机一般不是直接相连的,而是
2016-04-13 21:00:36
4120
1
原创 基础知识之内存管理基础
内存分配方式有三种: (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内存分配。程序在运行的时
2016-04-04 16:30:59
390
原创 《STI源码剖析》学习笔记之空间配置器
C++中的new包含两个动作:调用operaotr new分配内存;然后调用构造函数构建对象。delete也包含两个过程:调用析构函数;然后调用operator delete释放内存。 在STL中allocator将这两个动作分开。分配内存由alloc:allocate()负责,释放内存由alloc:deallocate()负责,创建对象由::construct()负责,析构对象由::destro
2016-03-14 21:08:48
496
原创 Linux下gcc,g++,makefile的使用
流程: 预处理->编译->汇编->链接。 预处理文件.i; 编译文件.s; 汇编文件.o; -E 选项指示编译器仅对输入文件进行预处理。当这个选项被使用时,预处理器的输出被送到标准输出而不是存储在文件里。 -S 选项告诉gcc在为c代码产生了汇编语言文件后停止编译。GCC产生的汇编语言文件的缺省扩展名是.s -c 选项告诉gcc仅把源代码编译为目标代码。缺省时建立的目标代码文件有一
2016-03-13 20:42:44
520
原创 C++学习笔记之多态与虚函数,虚函数表
封装,继承和多态是C++语言的三大特性。而虚函数的作用就是实现多态性,多态性又包含编译时的多态和运行时的多态两大类,即静态多态性和动态多态性。 静态多态性是指定义在一个类或一个函数中的同名函数,根据参数表区别语义,并通过静态联编来实现,静态联编在编译时就已经确定好了。 动态多态性: 当程序发现虚函数名前的关键字virtual后,会自动将其作为动态联编处理,即在程序运行时动态的选择合适的成员函数
2016-03-12 22:57:59
486
原创 C语言笔记之关键字(二)
柔性数组: 结构中的最后一个元素是未知大小的数组,这就叫做柔性数组成员,但结构体中的柔性数组成员之前必须至少一个其他成员。sizeof返回的这种结构的大小是不包括柔性数组的内存。包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。typedef struct st_type{ int i; int a
2016-03-10 18:54:32
358
原创 C语言笔记之关键字(一)
register: 请求编译器尽可能的将变量存储在CPU内部寄存器,提高访问效率。补充:寄存器是一块一块小的存储空间,其存取速度比内存(大地址)要快得多,离CPU很近。register变量可能不存放在内存中,所以不能用取地址运算符 static: 修饰变量,但又分为局部变量和全局变量,但都存在内存的静态区,不过作用域不同。前者在函数体里面定义的,之鞥在这个函数里调用了,即使该函
2016-03-10 16:01:29
529
原创 基础知识之关于far,near,huge,base指针
在研究两个指针之前,我们先来理清win16,win32的一些知识。运行在16位CPU(80826微处理器)微机上的Windows16,对于内存按照“分段内存模式”(Segment Memory Mode)进行使用.在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。Windows 95开始的32位机上,支持32位平面内存模式,为Win32写的程序使用
2016-03-08 15:09:30
1785
原创 JAVA与C++,C与C++的区别
首先来分析JAVA与C++的区别:JAVA是纯面向对象的语言,而C++是基于面向对象过程的语言。JAVA有着垃圾回收机制,它的语法是C++的子集,即JAVA有的C++都有,而C++有的JAVA不全有。JAVA也分内置类型和自定义类型,在局部开辟空间,赋值之后才能使用。JAVA的类型都视为对象,无运算符,无自增自减操作,把运算符当作函数JAVA还有垃圾回收机制,反射机制。接着分析
2016-03-08 14:34:45
451
原创 基础知识之字符串函数
1.**strcat函数char *my_strcat(char*sd,const char*si){ assert(sd!=NULL&&si!=NULL); char *str = sd; while(*str++!='\0'); --str; while(*str++=*si++); return sd;} **2.strcmp函数** vo
2015-11-09 10:58:11
362
原创 基础知识之vim编辑器,gcc,gdb
早早的开始学习了,啧啧啧,快让我自己点个赞,快夸我啦啦啦。我是祖国的好少年 今天呢,整理一下关于无比强大的编辑器vim的使用方法与技巧。vim篇首先,vim有三种工作模式,分别是命令行模式,编辑模式,插入模式。 :set nu设置行号 :set nonu取消行号 a 在光标后附加文本 A 在本行行末附加文本 i 在光标前插入 I 在本行开始插入 o
2015-11-03 09:50:58
572
原创 c++笔记之赋值函数,拷贝构造函数,构造函数,析构函数
最近两个周,一直在断断续续的看这些东西,《Effective c++》,再加上杨老师的不间断洗脑。虽然迷迷糊糊,却也似乎有了几分眉目。让我先整理下脑袋,の,还有思路。。估计后续要不断的修改这篇文章了。学渣的痛,好痛,23333.。。 首先,需要注意的是,每个类只有一个析构函数和一个赋值函数,但却可以有多个构造函数(包含一个拷贝构造函数,其他的称为普通构造函数)。
2015-11-01 17:33:12
455
原创 一路走走停停之序言:往前走,别回头
hey~终于到了大三hey~我要开始开始码农生涯了hey~我一定得写个序言好好开始 把自己埋进土里,等到想出来的时候就发芽~hey~好久不见hey~我要往前走啦从此没有回头路
2015-11-01 17:12:10
362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人