0%

网络数据传输的是一个二进制的字节数组。把对象序列化为二进制字节数组和把二进制字节数组反序列化为对象的时间加起来,时间越少,性能越高。使用JSON 和XML的居多!

冯诺依曼计算机特点

  • 计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成
  • 指令与数据以同等地位存放在存储器,并可按地址寻访
  • 指令与数据均以二进制数表示
  • 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置
  • 指令在存储器中顺序存放。通常也顺序执行,在特定条件下,可根据运算结果或设定条件改变执行顺序
  • 机器以运算器为中心,输入输出设备与存储器间的数据传递通过运算器完成

数据库操作

字符集与校验规则

当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则 是:utf8_ general_ ci ,这个校验规则中的 ci就是Case insensitive意为不区分大小写

创建一个使用utf8 的字符集,并带校对规则为utf8_general_ci的数据库。

create database DBName charset=utf8 collate utf8_general_ci;

查看系统默认字符集、默认校验规则

show variables like 'character_set_database'; 
show variables like 'collation_database';

支持的字符集、支持的校验规则

show charset;
show collation;

基本概念

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。 数据库服务器、数据库和表的关系如下:

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品,只是存储引擎不同!

进程是操作系统虚拟出来的概念,用来组织计算机中的任务。它从诞生到随着CPU时间执行,直到最终消失。不过,进程的生命都得到了操作系统内核的关照。就好像疲于照顾几个孩子的母亲内核必须做出决定,如何在进程间分配有限的计算资源,最终让用户获得最佳的使用体验。内核中安排进程执行的模块称为调度器(scheduler)。这里将介绍调度器的工作方式。

结构体和指针是数据结构的根基,所以这篇博客这算是对结构体有一个重新的认识,主要内容包括:匿名结构体、结构体的自引用、结构体的不完整声明、结构体内存对齐、位段的使用、联合体的应用场景等等。

先说说函数栈帧的概念,函数栈帧又叫函数运行时堆栈,栈帧也叫过程活动记录,是编译器用来实现函数调用的一种数据结构。这个该概念说起来比较抽象,简单的说就是函数在被调用时的一块空间,这个空间由esp寄存器和ebp寄存器共同维护。首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(低地址)。

可以使用 file 命令,并添加 -i--mime 参数来查看一个文件的字符编码,但是这种查看编码的方式并不是准确,比如我在CentOS7.3 测试的时候它把GBK编码的文件识别成了ISO8859-1,所以最好是自己明白文件的原始编码。