自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(200)
  • 资源 (10)
  • 收藏
  • 关注

原创 C语言:htoi十六进制转十进制

编写函数htoi(s), 把由十六进制数字组成的字符串(包含可选的前缀0X和0x),转化为与之等价的整数值, 字符串中包含的字符可以是0 - 9,A - F,a - f。

2024-03-20 15:18:30 234

原创 inline函数的静态符号导致动态库无法动态加载和卸载

参考:https://www.cnblogs.com/your2b/p/9724488.html

2024-02-01 14:27:48 205

原创 shell使用总结

1. 字符串相等比较用“=”或“==”,但是有区别!在用echo输出变量内容时,要用双引号。

2023-12-27 19:57:08 394

原创 使用iptables丢弃指定ip和端口的包

【代码】使用iptables丢弃指定ip和端口的包。

2023-07-19 17:15:40 773

原创 shell:如何判断用户是否有sudo权限

如何判断用户是否有sudo权限呢?

2022-12-14 21:57:36 2116 1

转载 如何防止进程在oom时不被杀

在后台运行,就可以看到用更多进程的 score 是 0 仍然挂掉了,比如 sshd、dhclient、systemd-logind、systemd-timesyn、dbus-daemon 等,所以设置错误的。一是系统根据该进程的内存占用情况打分,进程的内存开销是变化的,所以该值也会动态变化。如果用户将该进程的 oom_score_adj 设定成。如果设置为正数,分数会增加,可以优先杀死该进程,,OOM killer 给进程打分,把。如果设置为负数,表示分数会打一定的折扣,,表示用户不调整分数,

2022-12-14 21:51:01 1567

原创 单例对象与多进程

多进程模型中,调用单例对象,发现单例对象在不同进程中打印出来的对象首地址和其成员变量地址是一样的,一开始百思不得其解,还以为单例对象在不同进程中也是共享的呢,但是明显单例对象在不同进程中变量值是独立的。最后考虑应该是单例对象在父子进程中的虚拟地址是一样的,打印出来的地址一致,但是父子进程内存是独立的,所以单例对象在父进程和子进程中调用,访问的物理内存是不同的。以上记录,为自己思考,并没有求得绝对正确的解释。

2022-11-30 14:44:13 437

原创 CLion:windows版本远程同步设置

windows版本CLion的远程同步相关问题

2022-10-10 16:00:01 1338

原创 C++ vector容器遍历并删除元素

在使用C++ vector的迭代器遍历并删除元素时,存在一些不注意的误区,这里特此记录。在使用迭代器遍历vector元素时,错误的删除方法: vector<int>::iterator it = vec.begin(); for (; it != vec.end();) { vector<int>::iterator tmpit = it; it++; vec.erase(tmpit); }正确的删除方法: vector&l

2022-05-05 20:23:15 11908 1

原创 c/c++动态检测内存错误利器 - ASan

注:asan的完整功能是要gcc版本在4.9.2以上才能使用,较低版本比如4.8.5不能使用内存泄漏的功能。如何使用1、使用ASan时,只需gcc选项加上-fsanitize=address;2、如果想要在使用asan的时候获取更好的性能,可以加上O1或者更高的编译优化选项;3、想要在错误信息中让栈追溯信息更友好,可以加上-fno-omit-frame-pointer选项;4、编译时有时候需要加上-static-libasan;5、如果需要输出的调用链中信息更精确,对应到代码文件

2022-05-05 17:01:32 832

原创 linux命令提示符样式PS1

PS1样式:PS1="\[\e[31;1m\][\[\e[32;1m\]\u\[\e[33;1m\]@\[\e[35;1m\]\h\[\e[36;1m\]:\[\e[32;1m\]\w\[\e[31;1m\]]\[\e[33;1m\]\$ \[\e[0m\]"效果图:

2022-04-27 10:51:26 809

原创 centos下升级gcc-7.2.0

所需依赖资源包详情如下:gcc-7.2.0.tar.xzgmp-6.1.0.tar.bz2mpc-1.0.3.tar.gzmpfr-3.1.4.tar.bz2isl-0.16.1.tar.bz2温馨提示:若以上资源包下载不了,可以使用离线的资源,亲测可用:gcc7.2.0_download_prerequisites_安装gcc依赖安装过程中./contrib/download_prerequisites这一步大部分国内用户都会失败,由于网络等问题,所需的资源包下载不了,下面的命令本质

2022-04-26 15:48:20 785 1

原创 使用cmake的一些小结

1、环境变量cmake调用环境变量JAVA_HOME的方式: $ENV{JAVA_HOME} 如果需要判断环境变量JAVA_HOME是否定义,可以使用:DEFINED ENV{JAVA_HOME}2、判断字符串变量相等:STREQUAL

2021-12-26 19:01:10 1140

原创 C++模板函数的声明和定义是否可以分开?

如果按照普通函数一样,将模板函数的声明与定义的分开,声明放在头文件,定义放在cpp文件实现,你会发现,编译没问题,但是在链接阶段会报”undefined references“。因此在实际开发中,不管是类模板还是模板函数,声明和定义最好放在一个头文件中。具体原因和细节可参考C++模板的定义是否只能放在头文件中?...

2021-12-26 18:50:14 2762 1

原创 pthread_create创建线程失败,返回11: Resource temporarily unavailable

一、问题背景在重启一个程序时死活启动不起来,后发现程序中在使用pthread_create函数创建线程时失败,返回值11,即Resource temporarily unavailable。二、问题解决谷歌发现,大部分解决方法都是调大系统线程数目上限,但是我使用ulimit -a发现该系统的最大用户线程数是62809,但是pstree -p | wc -l查看系统当前的线程数目只有1153,很明显不是系统最大线程数目设小了。ulimit -a的系统信息:但是 ,该系统的栈空间大小

2021-11-08 14:47:07 8513

原创 linux下添加动态链接库路径的方法

Linux共享库路径配置  Linux下找不到共享库文件的典型现象为明明已经安装某个软包(如libnet,MySQL),编译连接可以正常进行,但是在运行时出现如“error while loading shared libraries: libnet.so.1:cannot open shared object file :No such file or directory”的错误提示。  原因是Linux下的共享库路径配置不正确。默认的linux共享库搜索路径为/lib和/usr/lib两个目录(

2021-09-02 21:20:05 5148

原创 主程序调用动态库的两种方式,动态库调用主程序的函数

主程序调用动态库有两种方式,即隐式调用和显式调用。隐式调用就是共享方式,程序一开始运行就调进去。在链接时候用如下的方式链接动态库:gcc -o main main.o -L./lib -ltest(就像链接像静态库的一样)显示调用就是在程序中用系统调用把动态库加载进来,用系统调用:dlopen、dlsym、dlerror、dlclose函数,那样在编译链接时候,就不用加上:-L./lib -ltest了。不过因为要使用dl*系列函数,需要在编译链接时要加上 -ldl 。动态库可以直接调用主程序中

2021-09-02 21:13:13 4830

原创 gdb如何调试守护进程的程序?

很多程序都使用了守护进程的方式,即程序启动之后,父进程退出,子进程被init进程托管,并且主程序交由子进程执行。这种情况下,如果使用gdb调试程序,使用一般的方式调试,我们会发现,调试开始后没有函数栈信息,这是因为gdb之后跟踪的是父进程,而父进程已经退出了。那么这种情况如何调试呢?gdb开始之后,先设置set follow-fork-mode child,gdb将在fork之后直接跟踪子进程。然后就是设置断点,r执行程序并调试。...

2021-09-01 15:13:46 2471

原创 Git 同步主分支

工作场景:某项目有master分支和dev分支,dev分支原本是从master分叉而来的,dev分支不断延伸,在这过程中master分支已经有了新的提交;现在问题是,我需要将dev分支与master分支同步,也就是说dev分支现在要将master分支最新的提交同步到dev这边来,使得dev的开发时刻是建立在最新的master基础上的。关键词概括:同步主分支跳坑指南:在dev分支上,直接git pull origin master(这相当于拉取远程master的最新提交到本地dev,并且与dev分..

2021-05-25 20:50:56 6084 1

转载 配置CLion clang-format保存时自动格式化

搬运自https://blog.csdn.net/terence_10years/article/details/102646054

2021-05-25 17:35:45 2482

原创 C++:对象及成员变量在内存中的存储分析

类的成员变量并不能决定自身的存储空间位置。决定存储位置的是对象的创建方式。即:如果对象是函数内的非静态局部变量,则对象,对象的成员变量保存在栈区。如果对象是全局变量,则对象,对象的成员变量保存在静态区。如果对象是函数内的静态局部变量,则对象,对象的成员变量保存在静态区。如果对象是new出来的,则对象,对象的成员变量保存在堆区。下面是一个示例:当对象是new出来的时,其对象地址和成员变量、成员变量的成员变量、成员变量存储的数据都在堆区存储。struct SQL{ SQL()

2021-05-19 18:11:45 3095 1

原创 C++常用容器在内存中的存储分析

本文以C++中常用的vector、set和map为例,分析其数据在内存中存储。总结:vector、set和map容器其数据都是动态存储在堆空间的内存; 在栈区定义容器变量,变量本身存储在栈区,但是变量存储的数据在堆区; 在堆空间定义的容器变量,变量本身存储在堆区,存储的数据也在堆区;例子:struct SQL{ set<int> s; vector<int> v;};//定义一个SQL类 vector<int> v; //栈区定义ve

2021-05-19 16:57:04 2873

原创 C++字符串变量、字符串常量、string变量在内存中的存储分析

C++中内存布局,内存地址:栈区>堆区>静态存储区一、字符串常量和字符串变量我们知道字符串常量是存储在文字常量区,也即C++中的静态存储区。而字符串变量一般定义在栈区,当使用malloc时则定义在堆区。 char* ss = "hello world"; printf("%p\n", &ss); //字符串变量ss的存储地址(变量声明的地址) printf("%c: %p\n", ss[0], &(ss[0]));//字符串变量ss中第一个字符h的存

2021-05-19 16:32:30 5645 3

原创 CLion远程同步

本文介绍CLion的远程同步功能,其主要的应用场景如下:当你在本地电脑上编辑代码,但是你需要将其修改实时同步到远程机器上(比如公司的开发机),在远程机器上编译。我们工作时经常会出现以上的场景,你自己办公的电脑可能是Mac电脑,但是你写的代码需要在公司的开发机linux系统上编译运行,因此你需要将你写的代码同步到远程开发机上,CLion的远程同步功能可以让这一切变得十分简单。配置方法如下:1、配置远程连接【CLion】-> 【Preferences】-> 【Build,Execut

2021-05-17 19:44:35 1566

原创 CLion提示This file does not belong to any project target,code insight features might not work properly

问题:CLion某工程目录下的所有文件打开是上方显示:This file does not belong to any project target,code insight features might not work properly.具体影响有:头文件中的变量,直接使用F12查找其usages时,没有反应,提示如下:解决方法:右键该工程目录的根目录,选择Mark Directotry as,然后选择Project Sources and Headers...

2021-04-26 16:18:16 1458 1

原创 C/C++静态变量与静态函数

1、C/C++的静态变量是分配于静态数据区,程序运行过程中一直存在,即变量的地址在程序运行过程中不变;如果重复申请同一个静态变量,则重复申请的无效;#include <iostream.h>void fn();void main(){ fn(); //10 fn(); //11 fn(); //12}void fn(){ static int n=10; cout<<n<<endl; n++;}2、类中用static定义一个静态成员变

2021-03-16 20:12:27 581

原创 CLion: rsync is not installed or not avaiable in PATH on remote host

问题:CLion在使用时突然出现以上问题,设置了本地代码与远程主机目录相映射,实时同步;出现以上问题时,无法同步,CLion的preference/Toolchains/Credentails出现以上红色告警信息解决:后面发现是远程主机的密码过期导致的,修改远程主机的密码之后解决...

2021-02-22 15:30:51 1671 1

原创 C++ static静态成员函数小结

在C++的类中,static 除了可以声明静态成员变量,还可以声明静态成员函数。普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只能访问静态成员。1、静态成员函数可以通过类直接调用,而不一定必须通过实例化对象来调用。编译器在编译一个普通成员函数时,会隐式地增加一个形参 this,并把当前对象的地址赋值给 this,所以普通成员函数只能在创建对象后通过对象来调用,因为它需要当前对象的地址。而静态成员函数可以通过类来直接调用,编译器不会为它增加形参 this,它不需要当前对象的地址,所以不

2020-11-25 11:46:36 2675

原创 Hadoop:loadFileSystems error & exception: ExceptionUtils::getStackTrace error 问题分析

问题描述:hadoop版本:hadoop-2.5.0jdk:jdk1.8.0_51在用hdfs.h中的C接口连接hadoop集群时出现以下问题:loadFileSystems error:(unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils::getStackTrace error.)hdfsBuilderConnect(forceNewInstance=0, nn

2020-10-22 15:21:14 804 1

原创 Git踩坑集锦(小白作者在工作场景使用git的总结)

1工作场景:某项目有master分支和dev分支,dev分支原本是从master分叉而来的,dev分支不断延伸,在这过程中master分支已经有了新的提交;现在问题是,我需要将dev分支与master分支同步,也就是说dev分支现在要将master分支最新的提交同步到dev这边来,使得dev的开发时刻是建立在最新的master基础上的。跳坑指南:在dev分支上,直接git pull origin master (这相当于拉取远程master的最新提交到本地dev,并且与dev分支merge)温.

2020-10-12 15:24:34 332 4

原创 vim: 打开、切换~多窗口、多文件

打开多个文件:一、vim还没有启动的时候:1.在终端里输入vim file1 file2 ... filen便可以打开所有想要打开的文件2.vim已经启动输入:e file可以再打开一个文件,并且此时vim里会显示出file文件的内容。3.同时显示多个文件::sp //水平切分窗口:vsplit //垂直切分窗口二、在文件之间切换:1.文件间切换Ctrl+6 //两文件间的切换:bn //下一个文件:bp ...

2020-09-10 20:53:06 562

原创 linux下用命令获取本地ip

在写一个脚本时,需要获取本地主机的ip,网上找了一番发现好多都不能成功获取正确的本地ip,经过研究我发现以下命令在大部分机器上可以获取到本地的local ipip addr show | grep inet | grep eth1 | awk -F'/' '{print $1}' | awk '{print $2}'...

2020-09-02 20:28:24 2162

原创 我的vim设置

在家目录下执行 vim .vimrc ,拷贝以下内容,保存即可set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936set termencoding=utf-8set encoding=utf-8set numberset relativenumberset cursorlineset linebreakset wrapmargin=2set rulerset showmatchset hlsearchset incs

2020-08-25 19:50:04 148

转载 vim常用命令之多行注释和多行删除

vim常用命令之多行注释和多行删除vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率。1.多行注释: 1). 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式; 2). 在行首使用上下键选择需要注释的多行; 3). 按下键盘(大写)“I”键,进入插入模式; 4). 然后输入注释符(“//”、“#”等); 5). 最后按下“Esc”键。 注:在按下esc键后,会稍等一会才会出现注释,不要着急~~时间很短的2.删除多行注释:...

2020-08-25 19:43:39 531

原创 mysql常用操作:登陆、添加新用户、分配权限及相关操作命令

一、登录mysql本地登录mysql账户:mysql -u 【mysql账户名】 -p--可以是root账户名也可以是普通账户,让后输入密码即可登陆登陆远程主机的mysql账户mysql -h [mysql所在的远程主机ip] -P [mysql所在的远程主机设置的mysql服务端口] -u 【mysql账户】 -p 【mysql账户密码】--mysql的默认服务端口是3306二、添加新账户允许本地 IP 访问 localhost, 127.0.0.1 ,假设添加的新账户名为

2020-08-25 19:20:12 888

原创 Linux下安装mysql-5.7.24及问题总结

前言:本文档讲解安装版本为mysql-5.7.24,对于5.7.24之后的版本,不适用此说明文档,主要原因在于之后版本的mysql配置文件的目录位置和结构有所改变,使用此说明可能会出现找不到配置文件或者配置后不生效的情况。 安装过程中务必保证文件路径的前后统一,否则可能会导致不可预期的结果,推荐直接使用文中的命令进行操作。此外,在文末会附上参考链接。一 安装前准备1、检查是否已经安装过mysql,执行命令[root@localhost /]# rpm -qa | grep mysql

2020-08-25 17:00:18 894

转载 Linux用户管理---创建用户和删除用户

一、用户管理的命令:(1)创建用户命令有两种: adduser useradd(2)删除用户命令: userdel二、两个用户创建命令之间的区别adduser: 会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。三、为用户指定参数的useradd命令:常用命令行选...

2020-07-31 10:59:21 436

转载 MAC全栈开发环境搭建指南

https://www.bookstack.cn/books/o2team-mac

2020-07-29 16:53:32 304

转载 zsh & oh-my-zsh 的配置与使用

https://zhuanlan.zhihu.com/p/58073103

2020-07-29 10:07:22 629

转载 安装homebrew报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation

https://www.jianshu.com/p/68efabd2e32b

2020-07-29 10:05:34 261

asan:asan_symbolize.py

asan:asan_symbolize.py

2022-05-05

asan_symbolize.py

asan_symbolize.py用于asan

2022-05-05

gcc7.2.0_download_prerequisites_安装gcc依赖

安装本地gcc版本所需的离线安装包详情如下: gcc-7.2.0.tar.xz gmp-6.1.0.tar.bz2 mpc-1.0.3.tar.gz mpfr-3.1.4.tar.bz2 isl-0.16.1.tar.bz2

2022-04-26

MedianFlow.rar

TLD开源代码MedianFlow部分,改造成一个运行程序示例,包含测试主程序及测试视频序列。运行环境:vs2008 + opencv2.4.2

2019-12-03

redis启动停止脚本.rar

Redis的启动停止重启脚本,使用shell脚本编写,包含start.sh、stop.sh、restart.sh三个脚本文件

2019-07-30

MySQL启动停止脚本.rar

MySQL的启动停止重启脚本,使用shell脚本编写,包含startmysql.sh、stopmysql.sh、restartmysql.sh三个脚本文件

2019-07-30

跟我一起写Makefile-陈皓.rar

学习Makefile的时候发现大神写的《跟我一起写Makefile-陈皓》的PDF版本,讲的清晰全面,是不错的Makefile学习资料

2019-07-30

C语言实现获取字符串的MD5码

计算一个字符串的md5码C语言实现! 该压缩包包含:封装后的实现包含三部分:md5.h头文件、md5.c实现文件、test.c测试文件 md5.c文件最后实现了char* getMd5(char* str)获取字符串strmd5码的接口;可以直接调用。

2019-06-27

基础链表练习(附详细注释)

实现一个带头结点的字符串链表,每插入一个字符串,链表会对其进行按字典进行排序。 重复插入的字符串自动忽略。 通过索引号可以获取到对应位置上的字符串。 移除一个特定的元素 返回链表中存储的字符串个数

2019-04-08

数字图像处理(MATLAB版)冈萨雷斯第二版

冈萨雷斯的数字图像处理,matlab版本的看着易懂一些,同时上传了这本书的全书测试图片。

2018-10-19

空空如也

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

TA关注的人

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