自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

linghao3141的博客

每天记录一点学习

  • 博客(38)
  • 收藏
  • 关注

转载 转载汇总:互斥锁pthread_mutex_init()函数,shell教程,makefile等问题汇总

https://www.cnblogs.com/eustoma/p/10054783.html

2020-11-24 19:43:52 239

转载 转载:linux编译动态库和静态库的makefile示例

https://blog.csdn.net/shaoxiaohu1/article/details/46943417

2020-11-24 19:43:10 221

转载 转载:C 库函数 - strftime()

转载:https://www.runoob.com/cprogramming/c-function-strftime.html

2020-11-24 19:42:16 119

转载 回调函数callback的作用

回调函数callback的作用查阅了网上的一些内容,自己总结了一下,算是比较全面了。定义:一个函数指针作为另一个函数A()的参数被调用时,它是回调函数。A(int m, int n, bool * f(m,n))既然是函数的参数,就具备了扩展性和代码重用的作用,因为形参不变,实参是可变的。所以调用时,可以A(x,y,B),也可以A(x,y,C),这里B和C都是回调函数,有点像虚函数。(B和C可以实现不同的功能,或以不同的方式实现)----场景:代码重用。A(x, y, isGreater),

2020-11-24 19:37:56 1488

转载 转载:单链表反转详解(4种算法实现)

转载:单链表反转详解(4种算法实现)http://c.biancheng.net/view/8105.html

2020-11-24 19:36:24 137

转载 转载:c实现树(二叉树)的建立和遍历算法(一)(前序,中序,后序)

转载:https://www.cnblogs.com/liuamin/p/6269950.html

2020-11-24 19:35:08 53

转载 转载:C/C++内存泄漏及检测

转载:https://www.cnblogs.com/skynet/archive/2011/02/20/1959162.html

2020-11-24 19:34:05 61

转载 转载:数据结构:八大数据结构分类

转载:https://blog.csdn.net/yeyazhishang/article/details/82353846

2020-11-24 19:25:03 44

转载 互斥量mutex和文件锁

转载:https://www.cnblogs.com/yychuyu/p/13709088.html

2020-11-24 19:23:06 143

原创 typora使用教程

文章目录背景Typora常用快捷键汇总1. 基本操作1.1 生成内容目录1.2 标题1.3 引用2、代码块2.1 表格2.2 图片2.3 超链接3、其他3.1 斜体3.2 加粗3.3 下划线3.4 删除线3.5 分隔线3.6 注脚3.7 上下标3.8 符号的输入3.9 特殊字符4 序列无序序列和有序序列可选序列背景Markdown 是一种轻量级标记语言,创始人是约翰·格鲁伯(John Gruber)。它允许人们 “使用易读易写的纯文本格式编写文档,然后转换成有效的 HTML 文档。而Typora是一款

2020-11-24 19:21:22 257

转载 Linux进程全解7——父进程wait / waitip回收子进程

转载:https://blog.csdn.net/oqqhutu12345678/article/details/75043726一、wait介绍1、wait的工作原理(1)子进程结束时,系统向其父进程发送SIGCHILD信号;(2)父进程调用wait函数后阻塞;(3)父进程被SIGCHILD信号唤醒,然后去回收僵尸子进程;(4)父子进程之间是异步的,SIGCHILD信号机制就是为了解决父子进程之间的异步通信问题,让父进程可以及时的去回收僵尸子进程。(5)若父进程没有任何子进程则wait返回错

2020-11-21 11:22:01 244

转载 C语言NULL和0的区别及NULL详解

#include<stdo.h>int main(){ int *p=NULL; printf("%s",p); }上面这个代码输出的是NULL。单步调试可以看出执行int *p=NULL,p的值为0x00000000,可以看出,NULL在实际底层调用中就是0。在C语言中,NULL和0的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于指针和对象,0用于数值对于字符串的结尾,使用’\0’,它的值也是0,但是让人一看就知道这是字符串的结尾,不是指针,

2020-11-20 19:49:12 3055

转载 转载-数据结构(C语言版本)

转载:https://blog.csdn.net/conanswp/article/details/80041985数据结构(C语言版本)第1章 绪论1.常用的数据结构类型:集合、线性、树形、图状。2.数据结构:逻辑结构:数据元素之间的关系存储结构:数据结构在计算机中的表示。存储结构分为:顺序存储结构和链式存储结构。3.算法是对特定问题求解步骤的一种描述,算法具有如下特性:有穷性、确定性、可行性、输入、输出。4.算法的度量:时间复杂度空间复杂度第二章 线性表1.线性表的定义:

2020-11-20 19:39:46 124

转载 【C/C++】空间复杂度和时间复杂度的计算

转载:https://blog.csdn.net/NeoAdrian/article/details/53472231算法的时间复杂度和空间复杂度-总结通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二步就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法时间复

2020-11-19 20:52:47 2111

转载 C语言-头插法-尾插法建单链表

转载:https://blog.csdn.net/huangjiaaaaa/article/details/104389013C语言单链表1、单链表定义链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单元可以是连续的也可以是不连续的。为了建立起数据元素之间的关系,对于每个数据元素除了存放数据元素自身的信息外,还必须有包含的指示该元素直接后继元素存储位置的信息,这两部分信息组成一个结点,即每个结点都有至少包括两个域,一个域存储数据元素信息,称为数据域,另一个域存储直接后继的地址,称为指

2020-11-19 20:02:53 690

转载 Linux下TCP连接,send错误代码32-管道破裂

问题描述:今天写程序,socket后send出现这个问题,send的返回值为-1,而errno为32,这个错误代码为broken pipe,即管道破裂。问题形成原因:后来通过排查研究,发现出现该种问题出现的可能性为以下两种:1.socket失败,与服务器端的链接没有成功,从而管道破裂。2.服务端将客户端的socket断开,一样造成这样的问题。此时这样的程序收到broken pipe的信号,会自动退出我们可以在产生信号前利用方法 signal(int signum, sighandler_t hand

2020-11-19 19:21:06 5113

原创 linux简记-创建定时任务

目的定时的备份数据库或者做一些检查方法atd服务或者crond服务。可以通过在linux命令窗口输入setup,进入system sevices,启动这两个服务。路径cd /etcls -ld cron*,可以看到**/etc目录**下,存在多个以con开头的文件夹,文件夹中存在多个脚本。文件夹后缀 .daily 代表该文件夹下的脚本每天都会执行一遍,.hourly 表示每个小时都会执行一遍。.monthly 表示每月都会执行一遍。.weekly 表示每周都会执行一遍。创建定时

2020-10-07 00:11:24 104

原创 linux简记-wireshark使用

背景目前的网络结构使用的TCP/IP模型,是基于OSI系统网络模型的。对网络上的数据包进行分层传输处理。WireShark界面数据包从上到下依次为1、帧信息。2、数据链路层信息:以太网。3、网络层信息:IP。可以在网络层看到数据包的源地址和目标地址,当前的校验值,TTL。4、传输层信息:UDP。可以在传输层看到数据包的源端口和目标端口,长度校验值。5、应用层信息。可以在应用层里看到我们的请求和回复。Wireshark过滤器FilterWireShark常用过滤器规则http

2020-10-05 01:02:46 142

原创 linux简记——htop工具使用

下载命令yum install -y htophtop工具作用相当于top工具的美化,对用户更加友好,相比于top命令,启动更快。界面效果1、CPU使用率2、内存使用率3、swap交换空间使用率4、任务数量,正在执行的任务数量5、平均负载6、启动时间基本使用**1、**使用上下键可以选择进程,可以通过空格键选择多个进程。选中的进程会变成黄色。**2、**鼠标点击绿色标题栏,可以对进程进行相应排序。**3、**对选中的进程,可以执行相同的操作,如:杀死进程KILL,或者改变进程

2020-10-05 00:32:23 173

转载 第十八天学习-二维数组的简单使用

前言本文将探讨一下关于二维数组在内存中的存储和二维数组在参数传递时的使用。一、二维数组在内存中的存储如果定义一个这样的二维数组int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};则其在内存中的表示可能下面这样的。由上图可以看出,在内存中二维数组是按照行主序进行存储的,从内存的角度上看,二维数组本质就是一个一维数组。如果把二维数组的每一行看成一个整体,即看成一个数组中的一个元素,那么整个二维数组就是一个一维数组。而二维数组的名字代表二维数组第0行的首

2020-06-27 14:50:37 240 1

原创 第十八天学习-linux查看被占用的端口

linux查看被占用的端口**1、**可以通过netstat -tulnp | grep 端口号查看当前端口号是否被占用选项:-t(tcp)只显示tcp相关的-u(udp)只显示udp相关的-l(listening)只显示监听服务的端口-n(numeric)不解析名称,能用数字表示的就不用别名(例如:localhost会转成127.0.0.1)-p(programs)显示端口的PID和程序名称2、lsof -ilsof(list open files)是一个列出当前系统打开的所有文件的工具

2020-06-27 14:38:45 370

转载 第十七天学习-C语言中#和##的作用

http://blog.chinaunix.net/uid-27666459-id-3772549.html一、一般用法我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.用法:#include#includeusing namespace std;#define STR(s) #s#define CONS(a,b) int(a##e##b)int main(){printf(STR(vck)); // 输出字符串

2020-05-29 20:28:11 204

原创 第十六天学习-Linux下查看进程及其线程:ps命令和top命令简介

1.利用进程名获取进程号(以syslog为例)ps -ef|grep syslog|grep -v "grep"|awk '{print $2}'先看ps -ef|grep syslog的输出:grep的输出都会有grep自身这个进程在,用 grep -v “grep” 可以把这一行干掉,然后 awk ‘{print $2}’ 就是打印第二列数字,即7222.利用进程号查看该进程下的线程`ps -eLf|grep 722|grep -v "grep"` 输出如下:第四列就是

2020-05-19 21:47:38 649

转载 第十五天学习-ASCII码文件与二进制文件的区别

存储形式1、二进制文件是按该数据类型在内存中的存储形式存储的;2、文本文件则是将该数据类型转换为可在屏幕上显示的形式存储的;存储空间1、ASCII存储方式所占空间较多且所占空间大小与数值大小有关;读写时间1、ASCII码文件在外存上以ASCII码存放,而在内存中的数据都是以二进制存放,因此当进行文件读写时要进行转换,造成存取数据较慢;2、二进制文件的数据是按其在内存中的存储形式在外存上存放的,不需转换,所以存取速度较快作用1、ASCII文件可通过编辑程序,如edit、记事本等,进行建立和修

2020-05-11 21:05:53 850

原创 第十四天学习-strtok和strsep的使用 & 库函数源码在线查询网站

以下来自:https://blog.csdn.net/yafeng_jiang/article/details/7109285函数原型:char *strtok(char *s, const char *delim);char *strsep(char **s, const char *delim);功能:strtok和strsep两个函数的功能都是用来分解字符串为一组字符串。s为要分解的...

2020-05-07 20:54:20 283

原创 第十三天学习-SQLITE3

基于嵌入式linux的数据库主要有SQLite, Firebird, Berkeley DB, eXtremeDB。Firebird是关系型数据库,功能强大,支持存储过程,SQL兼容等SQLite也是关系型数据库,体积小,支持ACID事务(ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))。Berke...

2020-05-05 02:28:36 172

转载 第十一天学习-linux几种时间函数总结

linux几种时间函数总结一、linux时间函数总结最近的工作中用到的时间函数比较频繁,今天抽时间总结一下,在linux下,常用的获取时间的函数有如下几个:asctime, ctime, gmtime, localtime, gettimeofday ,mktime, asctime_r, ctime_r, gmtime_r, localtime_r二、常用的结构体(1)struct...

2020-04-26 10:50:34 92

转载 第十一天学习-C语言 计算程序运行时间

精确到毫秒时间#include<stdio.h>#include <stdlib.h>//用到rand()函数#include<time.h> //用到clock()函数int main() { int begintime,endtime; int i = 0; int a[1002]; begintime=clock(); //计时开始 ...

2020-04-26 10:15:42 374

转载 第十天学习-前端学习——JSON格式详解

0.前言JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯...

2020-04-15 22:41:52 135

转载 第9天学习-svn merge操作详解

一、目的简单记录svn的merge操作,特别是merge时的from,to很容易根据字面意思弄错。二、操作本地创建Testing目录,里面自动包含三个文件夹branches,tags, trunk.trunk目录下创建examples1目录,里面添加文件hello.c,之后commit到server.3. 创建分支到branches/examples1。 在trunk的ex...

2020-04-14 23:30:56 506

转载 第八天学习-并发与异步

并发:对多任务的并行执行的支持机制。多任务的消费机制。多任务的处理机制;异步:一种通信机制;分流与合并机制。异步与同步是一对概念,在方法调用的时候,如果我们等待方法调用的返回则是同步,不等待而继续执行程序流则是异步。从处理器的角度来看,有些操作消耗的时间,远远高于其运行指令的时间,比如从网络获取数据,写入文件到磁盘等。如果采用同步方式,则大大的浪费了处理器的计算能力。在IO密集型的应用里...

2020-04-13 23:45:28 113

转载 第七天学习-libuv之async使用

简介uv_async_t是我们要用的handle,这个handle用来在线程间通信的。我们看一下官方的解释/* * uv_async_t is a subclass of uv_handle_t. * * uv_async_send wakes up the event loop and calls the async handle's callback. * There is no ...

2020-04-04 19:06:33 979

转载 第六天学习-linux查看和修改PATH环境变量

linux查看和修改PATH环境变量的方法查看PATH:echo $PATH默认情况下PATH会包含如下一些目录:/sbin:/usr/sbin:/bin:/usr/bin使用env命令显示所有的环境变量: $ env使用set命令显示所有本地定义的Shell变量: $ set使用unset命令来清除环境变量set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值...

2020-04-02 23:27:29 131

转载 第五天学习-环形缓冲区

背景:当有大量数据的时候,我们不能存储所有的数据,那么计算机处理数据的时候,只能先处理先来的,那么处理完后呢,就会把数据释放掉,再处理下一个。那么,已经处理的数据的内存就会被浪费掉。因为后来的数据只能往后排队,如过要将剩余的数据都往前移动一次,那么效率就会低下了,肯定不现实,所以,环形队列就出现了。目的:避免频繁的内存创建取消、分配。内存一直只用了一块。在发送线程使用的是普通队列。在发送任...

2020-04-01 20:11:06 210

原创 第5天学习-TPCircularBuffer环形缓冲区的使用

TPCircularBuffer 的使用环形缓冲区使用介绍1. 加入bool _TPCircularBufferInit(TPCircularBuffer *buffer, int32_t length, size_t structSize) { long page_size; int32_t req_size; char *base; assert(length > ...

2020-04-01 20:02:40 521

转载 第四天学习-do-while(0)的使用

linux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do…while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{…}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免引用的时候出错:举例来说,假设你需要定义这样一个宏:#defi...

2020-03-31 23:33:54 192

转载 理解TCP报文段的头部结构

基于TCP/IP的四层协议的信息封装如下所示:这里之观察基于tcp传输协议的tcp头部,了解tcp头部的各项信息。TCP报文头部如下:或者更详细一点:16位端口号:标示该段报文来自哪里(源端口)以及要传给哪个上层协议或应用程序(目的端口)。进行tcp通信时,一般client是通过系统自动选择的临时端口号,而服务器一般是使用知名服务端口号或者自己指定的端口号。32位序号:表示一次tc...

2020-03-30 22:01:07 742 1

原创 第二天学习-输入一个字符串,打印出该字符串中字符的所有排列

算法描述:输入一个字符串,打印出该字符串中字符的所有排列把一个字符串看成两部分组成:第一部分为它的第一个字符,第二部分是后面的所有字符。算法实现:/************************************************************************* > File Name: main.c > Author: cyf > ...

2020-03-29 14:12:31 524

空空如也

空空如也

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

TA关注的人

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