<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaorange131的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaorange131</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaorange131]]></copyright><item><title><![CDATA[进程与线程]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/54691748</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/54691748</guid><author>xiaorange131</author><pubDate>Mon, 23 Jan 2017 10:30:07 +0800</pubDate><description><![CDATA[﻿﻿
进程（Process）是计算机中的程序关于某数据集合上的一次运行活动，是系统进行资源分配和调度的基本单位，是操作系统结构的基础。
线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元，是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作，称为多线程


死锁：是指两个或两个以上的进程在执行过程中，因争夺资源而]]></description><category></category></item><item><title><![CDATA[三次握手四次挥手]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/54631356</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/54631356</guid><author>xiaorange131</author><pubDate>Fri, 20 Jan 2017 14:56:52 +0800</pubDate><description><![CDATA[﻿﻿
TCP头部： 其中 ACK   SYN  序号  这三个部分在以下会用到，它们的介绍也在下面。




暂时需要的信息有：
ACK ： TCP协议规定，只有ACK=1时有效，也规定连接建立后所有发送的报文的ACK必须为1
SYN(SYNchronization) ： 在连接建立时用来同步序号。当SYN=1而ACK=0时，表明这是一个连接请求报文。对方若同意建立连接，则应在响应]]></description><category></category></item><item><title><![CDATA[无缓冲访问文件]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/54619594</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/54619594</guid><author>xiaorange131</author><pubDate>Thu, 19 Jan 2017 21:30:03 +0800</pubDate><description><![CDATA[﻿﻿
Creat函数
表头文件：#include
          #include
          #include
定义函数： int creat(const char *pathname,mode_tmode);
函数说明： 参数pathname指向欲建立的文件路径字符串，creat()相当于使用下列的调用方式调用open();
   open(const char *p]]></description><category></category></item><item><title><![CDATA[sqlite]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/54604363</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/54604363</guid><author>xiaorange131</author><pubDate>Wed, 18 Jan 2017 20:54:56 +0800</pubDate><description><![CDATA[数据库是特殊文件，由DBMS（数据库管理系统软件操作）
嵌入式数据库要求：体积适当，可移植性好，编程接口简单，代码开源
主要用关系数据模型储存数据。
touch student.db
sqlite3 student.db
sqlite>create table student(id integer primary key,name text,age integer); 创建student]]></description><category></category></item><item><title><![CDATA[1 .17]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/54585943</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/54585943</guid><author>xiaorange131</author><pubDate>Tue, 17 Jan 2017 20:07:11 +0800</pubDate><description><![CDATA[系统调用：是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口，即就是设置在应用程序和硬件设备之间的一个接口层。
库函数：顾名思义是把函数放到库里。是把一些常用到的函数编完放到一个文件里，供别人用。


fopen:要用文件指针来接，其模式字符串有:r,w,a,r+,w+,a+等，r打开一个文件，可读取。w打开一个文件可写入，如果文件不存在则创建。a打开]]></description><category></category></item><item><title><![CDATA[9号笔记]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53574097</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53574097</guid><author>xiaorange131</author><pubDate>Sun, 11 Dec 2016 17:18:18 +0800</pubDate><description><![CDATA[﻿﻿
1、传入参数：一个变量的值，传入函数让函数使用，叫做传入参数。
2、传出参数：一个变量没有值，从函数中带出值的变量叫做传出参数。
3、函数返回值注意点：
①不能返回栈空间地址，因为一旦函数调用结束，内存立即释放，即不能返回局部变量地址。
②#define  LOG-SUCCESS　0
(return LOG-SUCCESS)
可以通过宏定义提高代码可读性。
③Ｃ语言主函数加r]]></description><category></category></item><item><title><![CDATA[回调函数]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53537688</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53537688</guid><author>xiaorange131</author><pubDate>Fri, 09 Dec 2016 13:06:17 +0800</pubDate><description><![CDATA[﻿﻿
一直不太理解回调函数的作用，下面是找到的一些关于回调函数的作用的解答。


1.回调函数是一个很有用，也很重要的概念。当发生某种事件时，系统或其他函数将会自动调用你定义的一段函数。


2.回调函数就相当于一个中断处理函数，由系统在符合你设定的条件时自动调用。为此，你需要做三件事：1，声明；2，定义；3，设置触发条件，就是在你的函数中把你的回调函数名称转化为地址作为一个参数，以]]></description><category></category></item><item><title><![CDATA[函数，函数指针]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53537671</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53537671</guid><author>xiaorange131</author><pubDate>Fri, 09 Dec 2016 13:04:01 +0800</pubDate><description><![CDATA[﻿﻿
数组的地址用数组指针变量来保存。
指针数组名做形参用二维指针来接。
char **argv  可能是指针的地址，也可能是指针数组。
 
主函数形参：int main（int argc, char *argv[ ] // char **argv）
argv 命令行参数保存空间
argc 命令行参数个数（包括命令本身argv[0]）
 
函数指针
int （*p）（int，i]]></description><category></category></item><item><title><![CDATA[数组与指针的区别]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53537630</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53537630</guid><author>xiaorange131</author><pubDate>Fri, 09 Dec 2016 13:01:19 +0800</pubDate><description><![CDATA[C语言的特点：移植性好，能访问硬件，运行效率高。其能访问硬件的原因就是指针能够访问地址。指针是变量数，组名是常量，所以指针比起数组用起来灵活。
从空间的分配上讲，由于数组是静态分配，利用率低。指针是动态分配，空间利用率高
从安全性上讲，指针会造成内存泄漏（野指针），数组只会产生越界。
从访问效率上讲，指针是间接的，数组是直接的，所以数组的访问效率较高。


﻿﻿]]></description><category></category></item><item><title><![CDATA[兔子产子问题]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53490665</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53490665</guid><author>xiaorange131</author><pubDate>Tue, 06 Dec 2016 18:20:35 +0800</pubDate><description><![CDATA[﻿﻿
题目：有一对兔子，从出生的第3个月起，每月都生一对兔子。小兔子长到3月后每月又生一对兔子，假设所有兔子不死，问30个月内，每月兔子个数是多少。


分析：刚开始可以枚举前7月的兔子个数，发现一个规律，当前月的兔子数等于前一个月兔子数加上前两月兔子数，之后便可以编写程序，结果如下]]></description><category></category></item><item><title><![CDATA[printf详细用法]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53454174</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53454174</guid><author>xiaorange131</author><pubDate>Sun, 04 Dec 2016 14:28:37 +0800</pubDate><description><![CDATA[﻿﻿
首先直接描述printf函数中的“格式描述串”，它是由一系列的“格式转换说明符号”组成，格式转换说明符号的描述形式如下：
%[+][-] 0 m[n][输出精度]
（1）形式字母：制定输出格式，如表
d：十进制整型数
i：十进制整型数
x:十六进制整型数
o：八进制整形数
u:无符号十进制整形数
c：单个字符
s:字符串
e：指数形式的浮点数
f：小数形式的浮点数
]]></description><category></category></item><item><title><![CDATA[指针小结]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53447752</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53447752</guid><author>xiaorange131</author><pubDate>Sat, 03 Dec 2016 21:28:37 +0800</pubDate><description><![CDATA[﻿﻿
int *p：p是指针变量，存放的是地址，这个地址是整型地址；；；
 
指针是个变量
步长：+1后跳的地址：
对应的内存空间；指向的内存空间；
 
Int num = 5；
int * p = &num；
num++：对num对应的内存空间的值+1；
P++：对p对应的内存空间+1；
（*p）++：对p指向的内存空间的值+1；
 
指向的内存空间：就是这个指针变量对]]></description><category></category></item><item><title><![CDATA[malloc实现原理]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53447730</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53447730</guid><author>xiaorange131</author><pubDate>Sat, 03 Dec 2016 21:18:27 +0800</pubDate><description><![CDATA[﻿﻿
malloc（）是C语言中动态存储管理 的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数，返回值 是一个指向所分配的连续存储域的起始地址的指针。
　　动态内存分配 就 是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间，而是由系统根据 程序的需要即时分]]></description><category></category></item><item><title><![CDATA[12.3笔记]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53447661</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53447661</guid><author>xiaorange131</author><pubDate>Sat, 03 Dec 2016 21:16:46 +0800</pubDate><description><![CDATA[对数组名取地址为数组的地址，对其+1跳数组的长度
对一维数组的地址取值等于一维数组首元素的地址
a[i] = *(a + i)
a[i][j] = *(*(a + i) + j)
a + i:第i + 1个一维数组的地址
*(a + i):第i + 1个一维数组的首元素地址
*（a + i） + j: 第i + 1个一维数组的第j + 1个元素的地址
*(*(a + i) + j):]]></description><category></category></item><item><title><![CDATA[malloc,ralloc,calloc]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53447643</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53447643</guid><author>xiaorange131</author><pubDate>Sat, 03 Dec 2016 21:06:57 +0800</pubDate><description><![CDATA[﻿﻿
1.分配内存空间函数malloc
调用形式： (类型说明符) malloc (size) 功能：在内存的动态存储区中分配一块长度为”size” 字节的连续区域。函数的返回值为该区域的首地址。 “类型说明符”表示把该区域用于何种数据类型。(类型说明符)表示把返回值强制转换为该类型指针。“size”是一个无符号数。例如： pc=(char *) malloc (100); 表示分配100个字]]></description><category></category></item><item><title><![CDATA[1130笔记]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53420736</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53420736</guid><author>xiaorange131</author><pubDate>Thu, 01 Dec 2016 14:07:21 +0800</pubDate><description><![CDATA[﻿﻿
野指针的定义：随机指向一块内存的指针称为野指针。（成因：因为在计算机中，内存的分配由操作系统来管理，要使用内存需要先向操作系统申请，系统分配后才可以使用，而野指针的内存空间是随机分配的，属于非法访问内存。）
野指针的危害：容易导致内存泄漏，即失去对内存的控制导致内存的浪费，在程序运行时由于非法访问内存会产生段错误，但是野指针不一定每次都产生段错误，因为有的时候系统分配给野指针的内存是其他]]></description><category></category></item><item><title><![CDATA[1128笔记]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53420765</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53420765</guid><author>xiaorange131</author><pubDate>Thu, 01 Dec 2016 14:07:13 +0800</pubDate><description><![CDATA[﻿﻿
printf注意事项：行缓冲
1满一行才输出
2遇到\n或\r才输出


没什么要求或指令时候在printf后加\n


对应的内存空间 ：  指向的内存空间：就是这个指针变量对应内存空间里保存的地址对应的内存空间，我们称之为指向的内存空间
int num = 5;
int *p; p=&num;
int *p = &num;


num++;    对num对]]></description><category></category></item><item><title><![CDATA[11 26 笔记]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53365010</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53365010</guid><author>xiaorange131</author><pubDate>Sun, 27 Nov 2016 16:18:17 +0800</pubDate><description><![CDATA[MMU：把虚拟空间映射到物理内存
进程虚拟地址区间有4G
高地址1G空间给予内核，剩余3G给用户
用户空间分为：栈空间，堆空间，数据区，代码段
栈空间存放：局部变量，函数形参，自动变量
堆空间存放：malloc,ralloc,calloc  动态分配的内存
数据区分为3部分：bss:未初始化或初始化为0的全局变量和静态局部变量                              ]]></description><category></category></item><item><title><![CDATA[十进制小数转换为二进制]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53364974</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53364974</guid><author>xiaorange131</author><pubDate>Sun, 27 Nov 2016 16:03:39 +0800</pubDate><description><![CDATA[﻿﻿
整数和小数分别转换。
整数除以2，商继续除以2，得到0为止，将余数逆序排列。
22 / 2  11 余0
11/2     5  余 1
5 /2      2  余 1
2 /2      1  余 0
1 /2      0  余 1
所以22的二进制是10110

小数乘以2，取整，小数部分继续乘以2，取整，得到小数部分0为止，将整数顺序排列。
0.8125x2=]]></description><category></category></item><item><title><![CDATA[scanf获取句子]]></title><link>https://blog.youkuaiyun.com/xiaorange131/article/details/53364940</link><guid>https://blog.youkuaiyun.com/xiaorange131/article/details/53364940</guid><author>xiaorange131</author><pubDate>Sun, 27 Nov 2016 16:00:23 +0800</pubDate><description><![CDATA[﻿﻿
scanf的结束标志是空格和回车键，而gets的结束标志为回车键，输入字符串时，一般采用gets


因此有下面两种方法可以在使用scanf时完整输入字符串

1）利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。 

Strcat()一般格式：char*strcat(char*dest,const char*src);  ]]></description><category></category></item></channel></rss>