8 kikajack

尚未进行身份认证

暂无相关描述

等级
TA的排名 2k+

【Linux 应用编程】IO 多路转接 - select 和 poll

Linux中,read和write函数默认实现的是阻塞式的IO。例如:while((n=read(STDIN_FILENO,buf,BUFSIZ)>0){ if(write(STDOUT_FILENO,buf,n)!=n){ perror("write"); eixt(EXIT_FAILURE); }}如果需要同时从多个描述符读,则不...

2019-09-21 18:55:32

MySQL - explain 输出信息详解

常用SQL(假设表名是student)连接查询、联合查询、子查询:查看表结构:showcreatestudent;descstudent;增删索引:增加主键:altertableclassaddconstraintprimarykeycid_pk(cid);删除主键:altertableclassdropprimarykey;增加索引:alter...

2019-09-20 19:59:26

MySQL 连接查询、联合查询和子查询

准备测试数据createtableclass( cidint(10), cdescvarchar(20));createtablestudent( sidint(10), namevarchar(20), ageint(3), cidint(10));createtableteacher( tidint(10), namevarchar(2...

2019-09-20 19:44:51

【Linux 网络编程】多进程、多线程服务器并发模型

服务器在执行accept等待客户端连接时,会阻塞。客户端连接成功后accept函数返回,执行后面的代码。如果想要服务器同时为多个客户端服务,有以下几种方式:多进程:每来一个客户端,就开一个进程与其通讯。多线程:跟多进程类似,但每个客户端对应一个单独的线程IO多路复用:借助select、poll函数实现多进程服务器多进程模型中,为了避免产生僵尸进程,父进程必须回收子进程资...

2019-09-16 17:38:45

【Linux 网络编程】socket 实现服务器和客户端

IP地址可以标识网络中的主机,协议类型(TCP或UDP)加端口号可以表示主机上的进程。基本原理文件类型Linux中有七种类型的文件,这些文件类型可以使用一些基本的函数,例如read、write:普通文件目录链接文件字符设备块设备管道:pipe匿名管道,fifo有名管道套接字:socket套接字是全双工的,虽然只有一个文件描述符,但是在Linux内核中读写操作分别...

2019-09-16 11:46:12

C 语言中使用多字节字符,通过 UTF-8 支持中文

C语言默认的char类型是单字节字符,仅支持ASCII码。但是ISOC90标准开始,定义了wchar_t类型用于支持多字节字符(头文件wchar.h)。这一版标准中还定义了本地化和国际化相关的头文件locale.h,可以通过其中的setlocale函数设置使用的字符集编码,一般用UTF-8足够了。每一种语言都分为内部编码(程序代码中使用的)和外部编码(例如打开的...

2019-09-01 15:26:49

【算法与数据结构】双端队列示例

双端队列可以从两侧入队和出队:#include<stdio.h>#include<stdlib.h>structdequeNode{intdata;structdequeNode*next;structdequeNode*prev;};typedefstructdequeNodeNode;typedefNode*...

2019-08-25 18:12:00

【算法与数据结构】优先级队列 - 用二叉堆求数据流中的第K大的元素

数据流中的第K大的元素,总数据个数不足K个元素时返回-1。#include<stdio.h>#include<stdlib.h>typedefstruct{int*data;intcount;intcapacity;}KthLargest;voidheap_up(KthLargest*obj,intloc)...

2019-08-24 10:58:24

【算法与数据结构】 用栈实现队列、用队列实现栈

用栈实现队列效果(需要两个栈)思路:栈1负责进数据,每次要实现出队效果的时候,借助栈2颠倒顺序后出栈即可。元素出队后可以有两种方式:把出队后栈2中的数据再依次放入栈1。效率低。出队后,栈2中的数据不需要动,此时仍然用栈1入栈,栈2出栈,只有在栈2空的时候,再把栈1中的所有数据搬入栈1。高效。#include<stdio.h>#include<stdlib.h&...

2019-08-20 22:31:47

【算法与数据结构】链表逆序、相邻两元素逆序、探测环路

链表常见操作有:链表逆序链表每相邻两个元素逆序,例如1,2,3,4=>2,1,4,3探测是否构成环路#include<stdio.h>#include<stdlib.h>typedefstructNodeStruct{intdata;structNodeStruct*next;}Node,*...

2019-08-19 23:07:53

【算法与数据结构】无重复字符的最长子串 -暴力破解和滑动窗口

滑动窗口创建两个指针start和end,分别指向窗口起止位置。对于长度为n的字符串,总共需要循环n次。每次循环时,end指针加一,同时保存当前字符的下一个位置,然后判断是否出现重复字符。如果无重复,则继续下次循环如果重复,则把start移到记录中对应字符的下一个位置#include<stdio.h>#include<string.h>...

2019-08-18 12:28:21

HashTable 示例 - 找出数组中和为指定值的两个数

数组[2,4,6,8],和为8,则返回[0,2]数组[2,3,3],和为6,则返回[1,2]#include<stdio.h>#include<stdlib.h>typedefunsignedintIndex;typedefstructnode{intdata;structnode*next;...

2019-08-17 22:40:57

【算法与数据结构】堆 heap - 基于数组实现的完全二叉树

#include<stdio.h>#include<string.h>#defineMAXSIZE100typedefstructheap{intdata[MAXSIZE];intsize;}heap;voidheap_init(heap*h){h->size=0;memset(h-...

2019-08-14 22:52:03

Linux 进程间通信

Linux进程间通信的方式可以分为三大类:管道信号IPC,又可分为三类共享内存消息队列信号量管道管道是Linux内核中的数据结构,类似于队列,管道中的特性如下:数据只能读取一次,读取后消失,不可再次读半双工通信,两端都可以用来写数据,但一端开始写数据的话,另一端只能用来读无数据时,读会阻塞;数据写满时,会写阻塞用过命令行的人,对管道应该不陌生。例如,查看...

2019-07-01 23:04:23

Linux 中静态库、动态库的创建及使用

异同点静态库:文件名默认为libXXX.a,就是可重定位目标文件的集合。编译时gcc会将静态库中的依赖打包到可执行文件动态库:文件名默认为libXXX.so,执行时需要动态加载依赖创建并使用静态库创建静态库创建sub.c和sub.h两个文件,用于创建静态库:intsub(intx,inty){ returnx-y;}#ifndef_SUB_...

2019-06-30 16:20:23

gcc 和 gdb 常用选项

gcc编译步骤预处理,生成.i的文档[预处理器cpp]:cpptest.c-otest.i编译,得到汇编代码.s[编译器cc1]:/usr/local/gcc-4.8.1/libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/cc1test.i汇编,得到目标代码(机器指令).o[汇编器as]:astest.s-otest.o...

2019-06-19 13:31:14

C 语言二级指针的段错误

C语言中的指针变量C语言中,指针变量也是变量,只不过跟char、int型等基本类型变量不同,指针变量中保存的是其他变量的地址和类型。通过这个地址,并根据类型来读取指定长度的字节,就可以把这个变量解析出来。inta=3;int*p=&a;//&是取地址符号,返回变量a的地址printf("%d\n",*p);C语言中本身不支持字符串,但是...

2019-06-02 11:27:24

C语义的预处理 - 宏定义中 # 和 ## 的意义及用法

宏定义基本语法C语言中,所有预定义的宏,都会在预处理阶段进行替换。宏定义的语法为:#define宏名字符串简单宏定义下面的示例中,预处理后,所有出现MAX的位置都会被替换为100:#include<stdio.h>#defineMAX100intmain(){ printf("MAXis:%d\n",MAX); return0;}...

2019-05-25 13:12:03

【算法与数据结构】动态规划

用递归求解问题时,反复的嵌套会浪费内存。而且更重要的一点是,之前计算的结果无法有效存储,下一次碰到同一个问题时还需要再计算一次。例如递归求解Fibonacci数列,假设求第n位(从1开始)的值,C代码如下:#include<stdio.h>intfib(intn){ if(n<3){ return1; } returnfib(n...

2019-05-10 22:13:10

【算法与数据结构】图的最小生成树 MST - Prim 算法

Prim算法属于贪心算法。#include<stdio.h>#defineVERTEXNUM7#defineINF10000typedefstructGraph{ intvertex[VERTEXNUM]; intedge[VERTEXNUM][VERTEXNUM];}Graph;voidinitGraph(Graph*G){ int...

2019-05-06 22:52:01

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。