自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 c++ 正则表达式处理语言文本,根据标点符号分割句子

支持对中 日 英的文本处理,根据标点符号将文本分割为句子,结果为每行为一个完整句子。

2024-03-15 14:23:31 407

原创 so库后缀数字的目的和含义

Linux学习之旅(13)-----静态库和动态库_so文件后面的数字-CSDN博客https://www.cnblogs.com/lidabo/p/13862630.html

2024-02-22 16:48:20 392

原创 【无标题】面试

3.智能指针 哪几种,unique_ptr不支持直接赋值操作 需通过move转交权限,shared_ptr(引用计数) , weak_prt的作用 以及循环引用的情况举例。7.ASAN 的一些配置操作有哪些,比如出错是否停止程序、是否开启内存泄漏检测。1. malloc 空间连续性(物理地址不连续),底层原理(blk)2. STL vector内存特点、扩容机制、扩容时数据的拷贝方式。5.设计模式:抽象工厂、观察者模式、单例模式(写代码)4.类 多态如何实现的,虚函数、虚函数表、重载。

2023-10-16 11:24:20 93

原创 多线程下的signal信号处理

下边的代码可以验证该结论,多次Ctrl+c,会被不同的线程捕获此信号,并处理,最终每个线程死锁,阻塞在等待锁的状态。多线程中,信号在哪个线程中处理是不确定的,可能被任意一个线程处理。

2023-08-25 10:54:23 927

原创 ARM设备支持exFAT文件挂载

ARM 内核是不支持exfat格式的,需要移植exfat驱动源码来做支持。

2023-08-21 10:15:52 150

原创 Linux 随usb设备插拔 自动挂载和卸载

vi /etc/mdev.conf 文件中添加一行。

2023-07-31 19:17:17 500

原创 共享内存、信号量 进程间通讯应用示例

/必须加斜杠‘/’,不得用相对路径。//必须加斜杠‘/’,不得用相对路径。使用POSIX机制共享内存、信号量的API,实现进程通讯。

2023-07-12 18:31:13 226

原创 C代码 如何定位某函数的调用者是谁?

在代码调试中,有时想知道某个函数(如 add(int a, int b)函数)被谁所调用了,最笨的方法就是在每个add()被调用的行前面加上log,如果有几十处地方调用了该函数, 修改起来太麻烦。因此,为了“偷懒”,可在不改变add原函数和调用者函数的情况下,通过宏的方式可实现,如。用宏add代替原来的函数add,宏展开后相当于在每个add函数调用的地方前都会增加一行代码 printf("%s(), line %d\r\n",__FUNCTION__, __LINE__);即打印出调用者的函数名和行号。

2023-03-28 15:59:12 871

原创 Linux线程调度策略与优先级

Linux线程调度策略与优先级

2022-12-14 18:20:01 2326 2

原创 标准I/O和系统I/O的本质区别

这些API根据是否涉及系统调用,可以分为两种,系统API:如open、read、write等函数是内核代码提供的API,当应用程序中调用某个系统API时,cpu就会“跳转”到内核中执行open的代码,执行完之后再回到应用层,即从用户态进入到内核态,再回到用户态。涉及到系统调用:如fopen、fread、fwrite、fseek等,这类API内部代码实际上会调用到一个或者多个系统API。未涉及系统调用:如memcpy、strlen、malloc等,这类API内部代码 不会再调用到任何系统API。

2022-09-16 11:16:59 431

原创 从汇编看c++中的多态详解

https://www.jb51.net/article/87058.htm

2022-09-13 18:33:37 174

原创 TCP三次握手过程中的半连接和全连接

accept过程: 当server端主动调用accept时,会将该client从半连接状态队列转入到全连接状态队列,并生成该client的fd,此后server通过该fd与client进行会话。之后 如果client不断去重新发出连接请求,最终server端的半连接状态队列将满(大小有listen接口设置),连接状态处于SYN_RECV状态(通过netstat 命令可以看到 Recv-Q已达到连接个数上限和连接状态)对于server端来说,

2022-09-13 14:33:16 2385 1

原创 Linux 设置系统时间函数

关于时间的库函数#include <stdio.h>#include<sys/time.h>#include<unistd.h>#include <time.h>int SetSystemTime(char *dt){ struct tm rtc_time; struct tm _tm; struct timeval tv; time_t timep; sscanf(dt, "%d-%d-%d %d:%......

2022-06-16 19:21:17 643

原创 内存泄漏检测工具ASAN

1.编译环境配置CCFLAGS += -fsanitize=address -g #开启内存越界检测,加-g定位到代码行号。CCFLAGS += -fsanitize-recover=address#采用该选项支持内存出错之后程序继续运行,并且必须运行环境下配置export ASAN_OPTIONS=halt_on_error=0才会生效。LDFLAGS += -lasan #链接asan动态库4.asan库存放路径,供链接时使用lib/CortexA5_linux/libas...

2022-05-05 01:02:12 1429

原创 Linux 下source、sh、bash、./的本质区别及用途

之前也试图多次理解它们的区别,都没理解透彻,今天算是有了更清晰的认识,记录一下。首先理解这几个命令的本质区别前,先要明白进程和子进程的概念。比如Linux 一个shell命令窗口,就是Linux系统的一个shell进程,如果打开命令窗口就是多个shell进程,每个进程都有自己独立的的环境,比如使用env命令查看到的就是当前窗口进程的环境变量。在这个窗口下通过命令运行起来的程序(比如一些Linux命令,如ls命令或./ext_file 命令,命令即程序),就是该shell窗口进程的子进程,子进程会继承父进

2022-04-29 18:59:42 4857

原创 gdb定位Segmentation fault 问题

1. gcc编译参数加上 -ggcc -g test -o test.c直接gdb环境下运行test,异常时会打印所在代码行号,或者按照一下方式2. 命令打开core dump 功能$ ulimit -c unlimited3. 运行程序$ ./test程序Segmentation fault退出后,在当前目录下生成一个core文件4. 使用gdb 工具解析该core文件,定位到代码错误行号Linux之core dumped出错原因及位置分析_ZONG_XP的博客-C..

2022-04-27 22:24:56 1466

原创 代码调试手段之__builtin_return_address

1. 如何知道某个函数被是被谁调用的Linux 内核:可通过dump_stack()分析dump_stack()使用方法_yanlaifan的博客-CSDN博客_dump_stacklinux内核中打印栈回溯信息 - dump_stack()函数分析_落尘纷扰的博客-CSDN博客_dump_stack应用程序:使用 __builtin_frame_address()、__builtin_return_address()分析__builtin_return_address(LEVEL)函数

2022-04-18 12:11:38 1547

原创 线程、进程 互斥、同步

进程  系统中程序执行和资源分配的基本单位  每个进程有自己的数据段、代码段和堆栈段  在进行切换时需要有比较复杂的上下文切换线程  减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多  进程内独立的一条运行路线  处理器调度的最小单元,也称为轻量级进程可以对进程的内存空间和资源进行访问,并与同一进程中的其他线程共享线程  线程相关的执行状态和存储变量放在线程控制表内  一个进程可以有多个线程,有多个线程控制表及堆栈寄存器,共..

2022-04-18 11:40:36 222

原创 循环双向链表写法

#include <stdio.h>struct list_head{ struct list_head *next, *prev; int num;};int list_add(struct list_head *new,struct list_head *prev,struct list_head *next){ if(new == NULL || prev == NULL || next == NULL) { printf("new %p,prev ...

2022-04-18 11:39:55 95

原创 mmap函数用法,实现一个devmem工具

#include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);int munmap(void *addr, size_t length);addr 所要映射的虚拟内存地址,映射成功后返回该地址。 如果为NULL或者无效地址,由系统会自动分配映射的虚拟地址。 length 需要映射的空间大小 pro...

2021-12-21 15:15:44 320

原创 软件测试汇总

明天去面试软件测试,给我些建议,或者面试题预测? - 知乎软件测试面试题(带答案) - 知乎软件测试面试题分享-No.1 - 知乎软件测试面试题APP篇 - 知乎软件测试常见的面试题(46道) - 知乎2021年软件测试面试题大全_hard_days的博客-CSDN博客_软件测试面试题最全的软件测试面试题(含答案)软件测试面试题及答案【史上最全】 - 权宝 - 博客园软件测试面试题集合(一)_软件测试的技术博客_51CTO博客_测试面试常见的问题https://wenku

2021-09-28 00:00:36 100

原创 repo 修改代码比对 打包脚本

功能:repo管理多个git仓库时,想把原代码文件和修改后的代码文件进行打包,后边可将该包提供给他人,通过文本比对工具打开,即可查看new和old代码差异#!bin/bashPATH1=`pwd`DSTDIR_NEW="$PATH1/$1/new"DSTDIR_OLD="$PATH1/$1/old"STATUS=0GITPATH=GITPATH2=function call_m(){ if [ $STATUS -eq 0 ];then STATUS=1; ...

2021-01-22 15:19:07 491

原创 g++编译阶段打印宏内容方法

转载:https://blog.csdn.net/beanjoy/article/details/9144483  //两个用于测试的宏  #define PI 3.1415926  #define MAX(a,b) (a)>(b) ? (a) :(b)  //首先定义两个辅助宏  #define PRINT_MACRO_HELPER(x) #x  #define PRINT_MACRO(x) #x"="PRINT_MACRO_HELPER(x)  //编译阶段打印...

2020-12-01 15:29:18 509

原创 iconv 文本编码格式转换

static int conv_charset_fun(const char *dest, const char *src, char *input, size_t ilen, char *output, size_t olen){ size_t buflen = olen; iconv_t conv = iconv_open(dest, src); if(conv == (iconv_t) -1) { ULOG("iconv_open...

2020-10-20 14:23:43 1463

原创 socket select多路连接,及fd_set用法

fd_set用法:https://blog.csdn.net/w00347190/article/details/100972645/***********************************fd_set 用法:void FD_SET(int fd, fd_set *fdset);void FD_CLR(int fd, fd_set *fdset);void FD_ISSET(int fd, fd_set *fdset);void FD_ZERO(fd_set *fd.

2020-07-19 19:21:36 1549

原创 内存申请、释放通过标记统一管理

#include <errno.h>#include <pthread.h>#include <map>#include <stdlib.h>#include <sys/time.h>#include <stdio.h>#include <unistd.h>using namespace std;#define SFA_MEM_FLAG#define sfaMalloc(size) sfaMe...

2020-07-09 00:58:36 175

原创 time 、localtime、localtime_s、localtime_r、gettimeofday 的使用

1. time 函数 原型: time_t time(time_t *calptr) 得到自1970-1-1, 00:00:00以来经过的秒数,结果可以通过返回值,也可以通过参数得到,见实例 头文件 <time.h> 返回值: 成功:秒数 失败:-1 例: time_t now;...

2020-04-03 18:35:51 1949

原创 链表基本用法(添加节点、删除节点、清空节点、显示所有节点)

#include <stdlib.h>#include <stdio.h>typedef struct stNode{ int data; struct stNode * next;}Node;Node *addNode(Node *head);void clearList(Node *head);void displyNode(Node *hea...

2020-03-09 17:07:46 357

原创 so库生成和用法汇总

函数名 功能描述 dlopen 打开对象文件,使其可被程序访问 dlsym 获取执行了 dlopen 函数的对象文件中的函数的地址 dlerror 该函数没有参数,它会在发生前面的错误时返回一个字符串,同时将其从内存中清空; 在没有错误发生时返回 NULL, dlclose 关闭目标文件。如果无需再调用共享对象的话,应用程序可以调用该方法来通知...

2019-12-29 15:49:50 4727

原创 类静态成员、单件模式用法

私有构造函数实现单件模式:https://blog.csdn.net/zlf19910726/article/details/81228245https://www.runoob.com/design-pattern/singleton-pattern.html#include <stdio.h>#define PATTERN_SINGLETON_DECLARE(clas...

2019-12-01 18:07:31 167

原创 #define中 #与##用法

宏定义:#define SMART_LOG(fmt, args...) \ ULOG("[%d]" fmt, __LINE__, ## args);使用示例:SMART_LOG("count =%d,time=%d\n", count ,time);等价于==》ULOG("[%d]" "count =%d,time=%d\n", __LINE__,co...

2019-10-30 18:17:54 297

原创 检测点在多边形内外算法

#include<iostream>#include<cstdio>using namespace std;const int maxn=110;const double eps=1e-5;struct point{ double x,y;};point poly[maxn];bool insidepolygon(point p,int ...

2019-08-20 17:01:30 239

原创 位域(位段)详解

有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种叫做位域的数据结构。在结构体定义时,我们可以指定某个成员变量所占用的二进制位数(Bit),这就是位域。请看下面的例子:struct bs{ unsigned m; unsigned n: 4; u...

2019-08-12 23:39:13 1181

转载 C语言数据类型的隐式转换

算术运算符中的转换规则:double ←── float 高↑long↑unsigned↑int ←── char,short 低注意:  图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。  纵向箭头表示当运算符两边的运算数为不同类型时的转换,如一个long 型数据与一个int型数据一起...

2019-07-06 16:48:13 184

原创 指针与引用的本质

以下是上边程序的汇编代码,通过汇编代码可以看出给ra分配了内存空间,每个变量在栈内存中存储的顺序并不是按照代码行的顺序排的(因为编译器优化),ra的内存空间在a的上边。验证的思路:是否给变量ra分配了内存?若分配了内存,内存中存储的值是否就是变量a的地址?

2019-07-06 15:32:06 32

原创 Linux ping www.baidu.com 不通解决办法

ping www.baidu.com //提示找不到该网址,而直接与宿主机之间使用 IP 地址进行互ping,则可以ping得通;在Ubuntu的浏览器中输入www.baidu.com ,无法打开百度网页;但输入百度的IP地址,则可以打开百度,这说明是DNS服务出现了问题解决办法总结:前两个解决方案:转载:http://www.cnblogs.com/dongling/p/55918...

2019-04-01 00:15:54 8339

转载 Ubuntu 手动配置IP和dhcp自动配置IP

Ubuntu网络配置如下:Ubuntu上连了两块网卡,eth0为外网的eth1为内网的eth0上IP为自动获取eth1上为手工设置1、打开Ubuntu的/etc/network/interfaces文件 。默认内容如下 auto lo iface lo inet loopback2、如果以DHCP方式配置网卡,则改为:auto eth0 iface eth0 inet dh...

2019-03-31 22:34:18 10553

原创 三维空间离散点 平面拟合算法 C++实现

#include "pch.h"#include &lt;iostream&gt;#include &lt;windows.h&gt;#include &lt;vector&gt; using namespace std;#include "math.h" double test1[24][3]{{-735, -312, 193},{ -252 ,-298 ...

2019-03-07 13:49:29 7732 6

转载 samba 共享Ubuntu文件到Windows下后,打开无修改文件权限的问题

原文:https://blog.csdn.net/zz603976046/article/details/77530187第一步:share/是您samba共享的文件夹$ sudo chown -hR yourCreatName:Groupxxxx share_filename/yourCreatName:samba共享文件夹的创建者Groupxxxx:创建所属组$ sudo ch...

2019-02-21 10:04:00 2120

原创 Ubuntu永久修改IP、临时修改IP

永久修改IP第一步:配置文件首先 修改 /etc/network/interfaces文件:$ sudo vi /etc/network/interfaces###interfaces中####### auto eth0 //eth0为网卡名,具体根据自己的网卡名配置文件夹(ifconfig命令查看,入下图为ens33)if...

2018-09-20 16:32:13 37959 2

C++_Primer_Plus_第6版_中文电子书.pdf

C++_Primer_Plus_第6版_中文版.pdf

2016-10-10

OpenCV3编程入门_毛星云.pdf

OpenCV3编程入门_毛星云电子书.pdf

2016-10-10

空空如也

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

TA关注的人

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