自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 静态库的编写

https://blog.csdn.net/stf1065716904/article/details/73656004

2019-04-23 15:03:00 246

原创 多线程服务器端的实现

1.单CPU系统中如何同时执行多个进程?请解释该过程中发生的上下文切换。答:只有1个CPU(CPU的运算设备CORE)的系统中不是也可以同时运行多个进程吗?只是因为系统将CPU时间分成了多个微小的块后分配给了多个进程。为了分时使用CPU,需要“上下文切换”的过程。上下文切换:如果运行进程A后需要紧接着运行进程B,就应该将进程A的相关信息移出内存,并读入进程B的相关信息,这就是上下文切换。...

2018-10-12 16:29:25 520

原创 “优雅”断开的套接字连接

之前用的方法不够优雅是因为,我们是调用close或closesocket函数单方面断开连接。1.解释TCP中“流”的概念。UDP中能否形成流?请说明原因。答:两台主机通过套接字建立连接后进入可交换数据的状态,又称“流形成的状态”。也就是把建立套接字后可交换数据的状态看作是一种流,此处的流可以比作水流,水朝着一个方向流动,同样,在套接字的流中,数据也只能向一个方向移动,因此,为了进行双向通信...

2018-09-27 11:17:54 312

原创 基于UDP的服务端/客户端

1.UDP为什么比TCP速度快?答:(1)因为TCP收发数据前后进行的连接设置及清除过程       (2)TCP收发数据过程中为保证可靠性而添加的流控制2.为什么TCP数据传输可靠而UDP数据传输不可靠?答:因为TCP为了提供可靠的数据传输服务,TCP在不可靠的IP层进行流控制,而UDP就缺少这种流控制机制。3.使用sendto传输数据过程:答:第一阶段:向UDP套接字注...

2018-09-26 22:35:20 171

转载 TCP/IP四层协议,TCP与UDP的区别

转载地址:http://www.cnblogs.com/BlueTzar/articles/811160.htmlhttp://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html  TCP/IP四层模型TCP/IP参考模型    ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的T...

2018-09-26 09:49:39 1110

原创 select函数的作用

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式...

2018-08-30 00:08:38 1479

转载 Select函数用法

http://hi.baidu.com/%B1%D5%C4%BF%B3%C9%B7%F0/blog/item/e7284ef16bcec3c70a46e05e.html select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型:         #include <sys/time.h> ...

2018-08-29 23:15:17 155

转载 fd_set 详细解答

一、winsock中#include <winsock.h>原型int   select( int   nfds ,fd_set*   readfds ,fd_set*   writefds ,fd_set*   exceptfds ,const struct timeval*   timeout );nfds:本参数忽略,仅起到兼容作用。    read...

2018-08-29 18:36:13 381

原创 线程通信中pthread_join和pthread_exit

1.什么是主线程?      当一个程序启动时,就有一个进程被操作系统(OS)创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程(Main Thread),因为它是程序开始时就执行的,如果你需要再创建线程,那么创建的线程就是这个主线程的子线程。每个进程至少都有一个主线程,在Winform中,应该就是创建GUI的线程。pthread_join和pthreas_exit的用法:函...

2018-08-20 22:36:43 573

原创 进程间通信

1.什么是进程间通信?       进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是"公共场所",所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过"注册表"或其...

2018-08-18 14:58:45 121

原创 八大排序复习

插入排序:#include <stdio.h>void InsertSort(int par_array[], int array_size){ int i, j; int temp; for (i = 1; i < array_size; i++) { temp = par_array[i]; for (j = i - 1; j >= 0; ...

2018-08-16 21:31:46 128

转载 深入学习fork函数

二、fork进阶知识    先看一份代码:点击(此处)折叠或打开#include <unistd.h> #include <stdio.h>   int main(int argc, char *argv[]) {     int i = 0;     printf("i\tson/pa\tppid\tpid\treturn\n");     /*...

2018-08-15 21:20:55 148

原创 linux 进程控制编程

       在语句pid=fork()之前,只有一个进程在执行这段代码,但在这条语句之后,就变成两个进程在执行了,这两个进程的几乎完全相同,将要执行的下一条语句都是if(pid == -1)……    为什么两个进程的pid不同呢,这与fork函数的特性有关。fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:    1)在父进程中,fork返回新创建子进程...

2018-08-15 21:11:51 230

原创 学习笔记——8.14

 1.库函数和系统调用区别 库函数调用 系统调用 平台移植性好 依赖于内核,不保证移植性 调用函数库中的一段程序(或函数) 调用系统内核的服务 一个普通功能函数的调用 是操作系统的一个入口点 在用户空间执行 ...

2018-08-14 23:53:22 105

转载 c语言有关的时间函数

1.概念在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。下面主要介绍在C/C++中时间和日期的使用方法.通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大...

2018-08-13 00:47:41 241

转载 计算器实现与顺序队列

#include <stdio.h>#include "LinkStack.h"int Priority(char ch){ switch(ch) { case '(': return 3; case '*': case '/': return 2; case '+': case '-': return 1; default: ...

2018-08-08 21:08:51 233

原创 头插法和尾插法

#define SUCCESS 10000#define FAILURE 10001#include <stdio.h>#include <string.h>#include <stdlib.h>typedef int ElemType;struct node{ ElemType data; struct node *next;...

2018-08-08 00:12:23 735 2

原创 简易版通讯录————单链表实现

#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 50#define FAILURE 10000#define SUCCESS 10001#define TRUE 10002#define FALSE 10003typedef int ElemType;//#defi...

2018-08-07 08:50:38 496

原创 双向循环链表

#ifndef _LINKLIST_H#define _LINKLIST_H#define FAILURE 10000#define SUCCESS 10001#define TRUE 10002#define FALSE 10003typedef int ElemType; struct node //双向链表{ ElemTyp...

2018-08-06 23:08:09 96

转载 C语言学习(五)链表的格式与操作示例

链表是为克服数组的缺点,在内存空间中离散存储,但需要一个指针记住下一个结点的地址,以便可以将链表结点连接起来。    链表与数组的比较:  数组                  优点:存取速度快。                  缺点:插入和删除元素的效率很低;                                需要一块连续的内存空间。         链表...

2018-08-04 23:11:51 281

原创 7.28

输入5个数(含负数、小数)将它们按由小到大的顺序排列起来#include <stdio.h>#include <string.h>void input(float a[]){ int i; printf("please input:\n"); for(i=0;i<5;i++) { scanf("%f",&am...

2018-07-28 22:29:30 100

原创 c语言————指针(2)

使用指针数组完成字符串排序:在实现这个功能之前,首先我们先要掌握冒泡排序法,然后根据具体情况做一些修改,排序方法就是冒泡排序,下面是代码:#include <stdio.h>#include <string.h>#include <stdlib.h>void GetArray(char *a[], int length){ int i; ...

2018-07-27 21:25:41 123

原创 c语言——部分指针内容

首先还是总结一下static的用法:1:修饰全局变量,改变变量的作用域,只能在当前文件夹被调用,其它文件不能调用。2:修饰函数;改变函数作用域,只能在当前文件中被调用。3:修饰局部变量,改变变量的生命周期,直到程序才释放(函数调用最后释放栈空间,被static修饰的局部变量,存放在数据段)---静态数据区再总结一下预处理和宏定义:预处理:#include"stdio.h":...

2018-07-26 00:00:14 197

原创 c语言基础——数组和函数

数组:    int a[10]:数组里所有元素都是整形,a时数组名,10为数组的长度,有10个元素。【错误示范】:int  a[k]:c语言不允许对数组大小作动态意义,即数组的大小不依赖于程序运行过程中变量的值。【常见错误】:float a[0]  //数组大小为0没有意义。                            int b(2)(3)     //不能使用圆括号...

2018-07-23 21:11:47 781

原创 7.22

今天写CSDN时间又很晚了,觉得博客还是挺重要的,所以来稍微总结一下:输出函数 printf(格式控制字符串, 输出项表列);输出若干个任意类型的数据 printf("a=%d b=%f", a, b);格式输入函数 scanf(格式控制字符串, 地址表列);                         scanf("%d,%f”, &a,&b);其次,今天...

2018-07-22 23:41:52 66

原创 c语言基础与提高(一)数据类型,混合运算,运算符,以及几种基本判断,循环语句

今天学习的内容内容比较多,为了节省十日,提高效率,di代码采用截图fa方式呈现,这样更直观,更明了,下面是jin'今天所学内容: 数据类型(32位操作系统中) int                      4个字节       32位(一个字节8位)float                    4个字节      ~double                8个字节    ...

2018-07-21 21:44:45 282

原创 嵌入式C语言高级开发讲解(三)——调试工具gdb和脚本文件

gdb调试工具:    首先编辑一个app.c文件,然后使用命令:gcc -g app.c -o app(-g专门用于调试二进制文件)                   gdb app 显示版本信息,然后进入gdb调试界面                  输入命令run(运行程序)gdb list(8) :列出代码(以10行为单位)(以第8行开始)   quit :tu...

2018-07-20 20:59:56 565

原创 嵌入式c语言高级开发讲解(二)关于vim,gcc,及make/makefile

编辑器 vim有三种模式:插入模式:点击I进入命令模式:点击ESC进入,在命令模式中,删除三个字符(3X),剪切三行(3DD),粘贴(P),复制(yy),撤销(u)                    按/进入查找,比如查找fg,按n切换关键字往下,按N切换关键字往上查找。退出编辑(shift+zz)底行模式:点击shift+:进入,保存并退出(wq),不保存强制退出(q!),直...

2018-07-19 20:37:21 248

原创 嵌入式c编程命令学习(二)

今天主要复习了昨天一些基本的操作命令,另外又自学了几个文件处理命令(如file,dd,find,diff,ln),以及几个系统安全相关的命令,(如umask,chgrp)file:通过探测文件内容判断文件类型,使用权限是所有用户ls -1:将所有文件排成一列显示。unmask:(和chmod功能类似)设置用户文件和目录文件chua创建缺省值屏蔽屏蔽值,若将此命令放入profile文件,...

2018-07-18 22:41:12 152

原创 嵌入式C语言高级开发讲解(一)Linux基本命令学习笔记

今天主要学习了linux的一些基本操作命令,如:ls:显示当前命令文件下的所有文件及目录cd:进入该目录cd ..:返回上一级菜单cd / :进入根目录mkdir:创建目录touch:创建文件(touch helloword.c 创建 .c 文件)vi: helloword.c 进入文件编程gcc: 编译c程序rm :强行删除rm -rf:删除一个目录或文件...

2018-07-17 20:47:08 286

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除