- 博客(28)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 关于switch-case的default坑
1、普通switch-case语句int main(){ int x = 1; switch (x) { case 1: cout << 1; break; case 2: cout << 2; break: case 3: cout << 3; break; default: cout << "default"; } return 0;}
2016-10-14 12:34:20
2422
原创 数据库复习
一、基本点数据库系统的三层模式:模式 又称逻辑模式,是数据库中全体数据的逻辑结构和特征的秒手机。一个数据库仅有一个模式,DDL来定义模式外模式 又称子模或用户模式,外模式是模式的子集,一个数据库可以有多个外模式。内模式 又称存储模式,一个数据库仅有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织形式。(包括存储方
2016-09-19 13:53:05
731
原创 单例模式简析
一、单例模式 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。 特点就是多读单写。函数简单实现:classSingleton{public: staticSingleton*GetInstance()//申明为static,可以由对象直接调用,不用用类调用 { i
2016-08-31 13:28:27
452
原创 awk、cut、sort和uniq
一、awk sed以行为单位处理文件,awk不仅能以行为单位还能以列为单位处理文件。 awk缺省的行分隔符是换行符,缺省的列分隔符是连续的空格和tab,而且行分隔符和列分隔符都可以重定义,比如/ect/passwd文件的每一行有若干字段以:分隔,则重新定义awk的分隔符为:并可以以列处理这个文件。 awk可以像C语言一样支持分支和循环结构,基本语法和sed类似。
2016-08-21 17:10:29
840
原创 正则表达式与grep、sed
一、正则表达式 一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。绝大部分是基于vi中的文本替换命令和grep文本搜索命令,还可以在sed、awk、perl等支持正则表达式的编程语言中使用。 规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表达一个模式。1、字符类:在模式中表示某个字符的取值范围是一类字符中任意一个。2、
2016-08-20 23:19:59
1007
原创 shell脚本学习之语法
一、条件测试1、条件测试:test或[ 命令test可以测试一个条件是否成立,若测试结果为真,则退出码为0,若测试结果为假,则为1字符串比较时:用==或=或 !=(建议用==)表示比较两字符相同或不相同[ -z string ] 若string的长度为0则为真[ -n string ] 若string的长度不为0则为真*在比较两个字符串是否相等时,建议加上双
2016-08-18 14:57:10
829
原创 shell脚本学习--符号
一、shell简单介绍 shell的作用是解释执行用户的命令,用户输入一条命令,shell就解释一行【交互式】。另一种执行命令的方式是【批处理】,用户事先写一个shell脚本,其中有很多条命令,shell一次把这些命令执行完。shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到shell提示符下执行 shell脚本是解释执行的,不需要编
2016-08-14 21:10:19
1651
原创 IO多路复用
一、LINUX IO模型 网络IO本质是socket读取,socket在Linux系统被中抽取为流,IO可以理解为对流操作。对于一次IO访问,对read,数据先被拷贝到操作系统内核的缓冲区,然后才会从操作系统内核拷贝到应用程序的地址空间。即:第一阶段:等待数据第二阶段:将数据从内核拷贝到进程网络IO有五种模型:1.阻塞IO2.非阻塞IO3.多路复用IO4.信号驱
2016-08-13 23:29:27
999
原创 网络编程基础<二>
3.TCP通信流程TCP三次握手 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器响应,服务器应答一个SYN+ACK段,客户端接收到后从connect()返回,同时应答一个ACK段,服务器收到后从acce
2016-08-10 22:05:42
437
原创 网络编程基础
一、网络编程基本知识1、网络字节序 内存中的多字节数据对于内存地址有大端小端 之分,磁盘文件中的多字节数据相对于文件中偏移地址也有大端小端之分。网络数据流也有大小端之分。 大端即数据低位存在高地址,高位存在低地址。 网络数据流的地址这样规定:先发出的数据是低地址(故先发送高位),后发出的数据是高地址。收数据从低地址收(先收高位)。 TCP/IP协
2016-08-09 21:26:12
636
原创 UDP及TCP详析
一、UDP1.UDP段格式2.UDP协议 UDP协议是不面向连接,也不保证传输的可靠性,是不可靠的传输层协议。 发送端UDP协议层值只管把应用层传来的数据封装成段交给IP协议层。若网络故障无法发送给对方,UDP协议层也不会给应用层返回任何错误消息。同样,接收端的UDP也只管把收到的数据根据端口号交给相应的应用程序。若发送端发来多个数据包且达到接收端顺序已
2016-08-07 20:08:05
728
3
原创 网络基础<一>
一、TCP/IP四层模型 TCP/IP是一组协议的代名词。TCP/IP协议簇分为四层,IP位于网络层,TCP位于传输层。 TCP/IP通信协议采用四层的结构,每一层呼叫它的下一层提供的网络来完成自己的需求。应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议。传输层:提供结点间数据传送服务。如传输控制协议T
2016-08-04 22:44:42
730
原创 进程组,作业与会话
一、进程组、作业、会话1.进程组(process group) 每个进程除了有一个进程ID(保存在PCB当中),还属于一个进程组。进程组由一个或多个进程组成,通常和一个作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。 每个进程组都有一个组长进程,组长进程的ID等于组ID。 组长进程可以组建一个进程组。只要进程组中有一个进程存在,
2016-08-03 11:45:42
2220
原创 多线程编程<二>
一、线程同步1.mutex互斥量 多个线程同时访问共享数据时有可能会冲突,这出现了和可重入性同样的问题。 例如,当两个线程都想把某个全局变量增加1这个操作在某平台需要三条指令:1.从内存读变量值到寄存器。寄存器加1。将寄存器的值写回内存。 此时,如果线程1在执行加1操作时,因为突发原因切出去,而线程2继续,则会导致这个全局变量不能达到预想
2016-08-01 21:09:38
479
原创 多线程编程<一>
一、理解线程1.进程与线程联系 线程:线程也是一个执行流,线程在进程内部运行 1.对一个进程来讲,每个进程都有个PCB,且每个进程均有自己的独立地址空间,进程的地址空间是00-FF,4G(32位下),再从地址空间由MMU和页表转化为物理内存--> 环境变量区 栈区 堆区 静态区 进程强调资源独占,进程间不受影响(fork的子进程和父进程代码共享数据
2016-07-31 22:20:37
490
原创 红黑树
红黑树 红黑树也是二叉搜索树,只是每个结点增加颜色表示。 红黑树有以下规则:每个结点不是red就是black根结点为black若结点为red,则它的两个子节点为black从每一条路径(根到叶)均有相同数目的black*红黑树保证最长路径不超过最短路径的两倍二叉树在插入时的几种需要转换的情况:情况1情况2情况3:
2016-07-29 15:50:57
340
原创 信号之可重入函数、竞态条件
一、可重入函数1.基本概念 当捕捉到信号时,不论进程的主控制流程当前执行到哪儿,都会先跳到信号处理函数中执行,从 信号处理函数返回后再继续执行主控制流程。信号处理函数是一个单独的控制流程,因为它 和主控制流程是异步的,二者不存在调⽤用和被调⽤用的关系,并且使用不同的堆栈空间。引入了 信号处理函数使得一个进程具有多个控制流程,如果这些控制流程访问相同的全局资源(全局 变量、硬件资源等)
2016-07-28 23:09:25
1379
原创 linux信号理解
一、信号的基本概念 当在shell下启动一个前台的进程时,用户可以通过键盘上ctrl+c使这个进程结束,即产生了一个硬件中断。当cpu在执行这个进程的代码时,该进程的用户空间代码暂停执行,cpu从用户态切换到内核态处理硬件中断。终端驱动程序将键盘上输入的ctrl+c解释成一个SIGINT信号, 记录在进程的PCB中。当某个时刻要从内核返回该进程的用户空间代码继续执行之前,需
2016-07-28 22:54:03
630
原创 IPC与信号量
一、信号量介绍信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphor
2016-07-24 23:24:34
610
原创 ipc--消息队列
消息队列也是一种进程间通信的方式,systemV 消息队列被大量使用特点:1.消息队列面向数据块2.ipc生命周期不是随进程的(进程退出则退出),系统中若创建IPC,若不显式删除,则一直存在,是随内核的(用命令行删除或者重启系统)3.消息类型队列和管道不同的就是它没有谁进谁出的规定,是半双工的4.消息队列是操作系统提供的第三方进程,完成双向通信消息队列f
2016-07-23 23:28:42
613
原创 linux的进程通信-管道
进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到。 在设计一个进程时,让进程感觉自己独占资源,一个进程占(可访问)的最大空间为2^32(32位下)(虚拟地址到物理地址的转换) 例如对于父子进程来说,父子进程的数据会分离,一旦子进程要写入数据就会触发写时拷贝,子进程写的数据父进程不能看到 进程间通信是本质是让不
2016-07-17 12:11:13
850
原创 子进程的创建
1.fork()函数 include 一个现有进程可以调用fork函数穿件一个新进程,子进程返回0,父进程返回子进程ID,出错返回-1 子进程是父进程的副本,子进程获得父进程的数据空间、堆和栈的副本,父子进程不共享这些空间。父子进程共享正文段。对于子进程,现在很多实现并不执行父进程的数据段。栈和堆的完全复制,而是使用写时拷贝技术,这些区域由父子进程共享,而且内核将他
2016-06-26 18:23:52
1096
原创 二叉搜索树
二叉搜索树二叉搜索树是基于二叉树的一种结构,对于一个二叉树它的左节点小于它的根节点,它的右节点大于它的根节点,它的每个子树的结构相同其结构以及接口实现过程如下templatestruct BSTreeNode{ BSTreeNode* _left; BSTreeNode* _right; K _key; V _value; BSTreeNode(const K&key,
2016-06-16 23:05:36
344
原创 快速排序的几种优化
快速排序是交换排序的一种。其主要过程为:1.在一组数中选取一个key2.将大于key的放到一边,小于key的放到另一边3.分区,重复上两步快速排序最易理解算法1:1.将最右边的数选为key2.begin和end分别为左下标和右下标3.从begin向后,找到比key大的数停下来;从end向前找,找到比key小的数停下来4.交换begin和end指向的值5.
2016-06-12 14:44:58
393
原创 进程
一.操作系统 1.操作系统是应用程序和硬件之间的插入的一层软件,所有应用程序对硬件的操作都要通过操作系统。任何计算机都包含一个基本的程序集合,称为操作系统 2. 内核: 是操作系统最基本的部分,主要负责管理系统资源( 通过进程间通信机制及系统调用,应用进程可间接控制所需的硬件资源(特别是处理器及IO设备) 3.操作系统的目的是与硬件交互,管理所有的硬件资源,同
2016-06-09 17:35:37
558
原创 排序
排序一、插入排序1.直接插入排序时间复杂度O(N^2)思想:每次用无序区的第一个元素和有序区的元素从后往前比,找到合适的位置后,把有序区的元素依次后移,插入那个元素后使有序区再次有序void InsertSort(int *a,int length){ for (int i = 0; i < length-1; i++) { int end = i
2016-05-31 16:15:46
401
原创 vim、gcc/g++、ctags简析
.vim 一.vim有主要有三种模式:命令模式、插入模式、底行模式 1.命令模式(command mode) 控制光标的移动、字符、字或行的删除,移动复制某段进入Insert mode下,或者lastline mode。 2.插入模式(Insert mode)
2016-05-28 22:53:41
659
原创 关于二叉树的结构与遍历
二叉树二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子。满二叉树:高度为N的满二叉树有2^N - 1个节点的二叉树。完全二叉树: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树遍历方式:前序遍历(先根遍历):(1):
2016-05-25 17:58:43
352
apn配置文件apns-conf.xml文件中authtype=9表示什么?
2017-10-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人