自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 问答 (13)
  • 收藏
  • 关注

原创 知识点记录, 持续更新中

1,查看当前进程打开了哪些文件 lsof -c a.out,查看端口对应相应进程(两种方法): lsof -i:50000/netstat -tunlp | grep 50000,根据进程id查看进程占用端口 netstat -nap | grep pid2, 查看当前目录下c文件的行数 find . -name "*.c" | xargs wc -l3, pidof a...

2019-03-06 22:23:04 629 1

原创 windows进程当前目录和进程的绝对路径获取方法

windows下获取进程当前的运行目录GetCurrentDirectory 获取进程绝对路径函数GetModuleFileName例如我在cmd中D盘根目录直接运行D:\test\wangjiyao\test.exe那么此时GetCurrentDirectory结果就是D:\然后GetModuleFileName结果是D:\test\wangjiyao\test.exe...

2020-04-15 10:07:01 1065

转载 linux判断当前程序是否存在

#include <stdio.h>#include <string.h>int is_running(const char* prg){ const char* pid_file = ".tmp_pid"; const char* p = strrchr(prg,'/'); if(p) p++; else ...

2020-03-30 09:25:00 430

原创 大量warning:libb.so needed by liba.so not found.的问题解决方法

例如:warning:libb.so needed by liba.so not found.原因是:例如代码引用了liba.so,但是liba.so又引用了libb.so,这种情况是由于makefile没有显示指定需要链接b.so,解决这个问题目前有三种方法:1:在makefile里面显示链接-lb,2:可以增加rpath参数,指定libb.so的路径3:可以将libb.so的路径加入系统链接...

2020-03-02 22:42:10 6303

转载 c++ what is “instantiated from here“ error?

转载自Stack Overflow。struct Data{ Data(int a,int b){ x = a; y = b; } int x; int y;}std::map<int,Data> m;m[1] = Data(1,2);compile error:1: no matching functio...

2019-12-16 09:15:17 1128

原创 new/delete

一个new的大概实现。所以delete 空指针是没错的,算是合法操作// new circle(…){ void* temp = operator new(sizeof(circle)); try { circle* ptr = static_cast<circle*>(temp); ptr->circle(…); return p...

2019-11-26 11:19:45 133

原创 sizeof相关

int main(int argc,char* argv[]){ char c[] = "123456"; printf("sizeof = %d,strlen = %d\n",sizeof(c),strlen(c));//6,7 char c1[100] = "123456"; printf("sizeof = %d,strlen = %d\n",sizeof(...

2019-11-21 14:21:57 157

原创 模块之间传递强转的应用

两个模块之间互相传递一个ip地址。char* ip = "192.168.100.101";U32 uaddr = 0;int ret = inet_pton(AF_INET,ip,&addr);U8* pByte = (U8*)&addr;char r[4] = {0};r[0] = pByte[0];r[1] = pByte[1];r[2] = pByte[2]...

2019-11-21 12:03:21 189

原创 环境变量打印

#include <stdio.h> int main(){ extern char** environ; char** env; for(env = environ;env && *env;++env){ printf("%s\n",*env); } }~...

2019-06-24 23:38:10 372

原创 linux 静态库,动态库简单使用示例

nm 命令可以看二进制文件的符号预编译 去掉宏 gcc -E hello.c -o hello.i编译 高级语言-->汇编 gcc -S hello.i汇编 汇编-->目标文件 gcc -c hello.s链接 gcc hello.o -o hello.h 源码头文件.c 预处理前的源码.i 预处理后的源码.s 汇编语言文件.o 目标文件.a 静态库.s...

2019-06-23 14:06:43 255

原创 gdb调试整理中,常用命令

gdb调试编译时必须加-g选项,如果想去掉符号表strip a.outgdb ./a.outulimit -c unlimited可以生成core文件调试core文件 gdb a.out core.111运行r(run) 开始运行r argv[1] argv[2]//命令行参数c(continue):继续执行到下一断点n(next):单步调试,不进函数s(step):进入函...

2019-06-17 23:02:37 219

原创 常用最简单汇编命令:

操作码 操作数 功能mov A,B 把B的值赋给Aadd A,B 把A同B的值相加,并将结果赋给Apush A 把A的值存储在栈中pop A 从栈中取出值,并将其赋给Acall A 调用函数Aret 无 将处理返回到函数的调用源以下有一些简单例子:push...

2019-06-16 18:26:09 498

原创 vim 常用的一些命令

vim常用命令总结:移动:w 移动光标到下一个单词的开头e 移动光标到下一个单词结尾b 移动光标到上一个单词0 移动单词到本行最开头$ 移动光标到本行末尾处H 移动光标到屏幕的首行L 移动光标到屏幕尾行gg 移动光标到文档首行G 移动光标到文档尾行ctrl+f 向下翻页ctrl+b 向上翻页ctrl+d 向下翻半页ctrl+u 向上翻半页查找:/xxx(?xxx):...

2019-06-16 18:07:18 257 1

原创 获取ip地址

#include <stdio.h>#include <sys/socket.h>#include <unistd.h>#include <net/if.h>#include <string.h>#include <sys/ioctl.h>#include <stdlib.h>#include &lt...

2019-06-16 17:46:52 380

原创 tcpdump选项机密多少

机密激动撒的

2019-06-08 18:52:25 284

原创 SO_REUSERADDR选项作用

套接字选项总结:SO_REUSEADDR:1)SO_REUSEADDR允许启动一个监听服务器并捆绑其众所周知的端口,即使以前建立的将该端口用作他们的本地端口的连接仍存在。这个条件通常是这样碰到的:a)启动一个监听服务器,b)连接请求到达,派生一个子进程来处理这个客户c)监听服务器终止,但子进程继续为现有连接上的客户提供服务d)重启监听服务器默认情况下,当监听服务器在步骤d通过调用s...

2019-06-08 17:38:48 1601

原创 最基本网络编程模型

tcp编程最基本模型server: client:socket socketbind connectlisten while(1){acceptwhile(1){ write() read() read() write() }}...

2019-06-08 17:22:24 329

转载 视频最基本知识,持续整理中

I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解...

2019-05-28 23:44:23 307

原创 一些基本网络知识

通过ip地址可以对计算机进行分组管理,AAA.BBB.CCC.YYY。这样一个ip地址,通过把AAA.BBB.CCC部分称为网络部分,把YYY称为主机地址,例如一个ip是202.26.186.174,子网掩码是255.255.255.240.子网掩码的作用是标识ip地址从哪一位到哪一位是网络地址,从哪一位到哪一位是主机地址。把255.255.255.240用二进制表示的话:结果如下所示。1...

2019-05-28 23:31:15 491

转载 四次挥手的相关问题(转载)

当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次挥手”。第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了; ...

2019-05-09 22:38:10 123

翻译 惊群效应

服务器进程在程序启动阶段派生N个子进程,它们各自调用accept并因而均被内核投入睡眠。当第一个客户连接到达时,所有N个子进程均被唤醒,这是因为所以N个子进程所用的监听描述符指向同一个socket结构,致使它们在同一个等待通道(wait channel)即这个socket结构的so_timeo成员上进入睡眠。尽管所有N个子进程均被唤醒,其中只有最先运行的子进程获得那个客户连接,其余N-1个子进程继...

2019-05-07 21:39:00 278

原创 c++虚函数

在构造函数和析构函数中调用虚函数不存在多态。看一个例子:class A{ A(void){bar()};void foo(){bar()}virtual void bar(){cout << "A" ;}}class B:public A{void bar(){cout << "B"};}int main(void){ B...

2019-05-07 13:33:44 145

转载 select函数应用示例以及一些网络模型简单介绍

我们看到tcp客户同时处理两个输入:标准输入和tcp套接字。此时程序有了两个焦点,当客户阻塞于标准输入上是,服务器进程被杀死,服务器tcp虽然正确给客户tcp发送了一个fin,但是既然客户进程正阻塞于标准输入读入的过程,它将看不到这个eof,直到从套接字读时为止(可能已经过了很长时间),这样的进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个i/o或者多个i/o条件就绪时它就通知进程,...

2019-05-03 19:48:07 227

转载 排序算法为什么需要考虑稳定性

仅仅用执行效率和内存消耗来衡量排序算法的好坏是不够的,针对排序算法,我们还有一个重要的度量指标,稳定性。这个概念就是如果待排序的序列中存在值相同的元素,经过排序之后,相等元素之间原有的先后顺序不变。我来举一个例子说明下:2,9,3,4,8,3。排序后为2 3 3 4 8 9.如果3的前后顺序没有发生变化,那么这种就叫稳定的排序。如果发生变化就叫不稳定排序。举一个实际的例子:要给电商的订...

2019-05-02 22:05:05 1408

原创 写文件的各种标记含义

r 打开只读文件,该文件必须存在。r+ 打开可读写的文件,该文件必须存在。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会...

2019-04-25 12:00:52 568

转载 makefile详解。

概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makef...

2019-04-14 21:58:26 191

原创 cgi程序简单原理叙述

Web客户端和服务器之间的交互用的是一个基于文本的应用级协议,叫做HTTP(hypertext transfer protocol)web服务器以两种不同的方式向客户端提供内容:1,取一个磁盘文件,并将它的内容返回给客户端,磁盘文件称为静态内容,而返回文件给客户端的过程称为服务静态内容。2,运行一个可执行文件,并将它的内容返回给客户端,运行时可执行文件产生的输出称为动态内容,而运行程序返回它...

2019-04-14 21:08:26 517

原创 各种sscanf用法,持续更新中

公司代码喜欢sscanf,sprintf等函数,字符串比对确实有大用处,记录下#include <stdio.h>int main(){ char buf[512] = ""; sscanf("123456","%s",buf); printf("buf = %s\n",buf); //123456 sscanf("123456","%4s",...

2019-03-12 19:32:34 264

转载 哈希表

hash表被广泛的用于搜索。设定集合A为搜索对象,集合B为存储位置,利用hash函数将搜索对象与存储位置对应起来。这样,我们就可以通过一次hash,将对象所在位置找到。一种常见的情形是,将集合B设定在数组下标。由于数组可以根据数组下标进行随机存取(random access,算法复杂度为1),所以搜索操作将取决于hash函数的复杂程度。比如我们以人名(字符串)为键值,以数组下标为hash值。每...

2019-02-28 11:18:27 131

原创 二叉树操作(c++)

#include &lt;iostream&gt;using namespace std;// 有序二叉树(二叉搜索树)class Tree {public:    // 构造过程中初始化为空树    Tree (void) : m_root (NULL), m_size (0) {}    // 析构过程中销毁剩余节点    ~Tree (void) {        clea...

2019-02-27 14:12:40 170

转载 如何阅读C/C++中复杂声明(转载)

原创: 上善若水  码农有道  2017-10-09我们经常遇到一些复杂的指针类型说明,很多初学者可能感觉有点蒙,即使是非常有经验的C/C++程序员,也会对那些比较复杂些的声明感到头疼。例如,下面这个是一个包含指针的数组,还是一个指向数组的指针呢int *a[10];好了,这个并不是特别复杂的声明,你可能快速而又准确的说出你的答案:一个含有10个指针的数组。那么,来一个更具挑战性的例子,...

2019-02-26 17:11:21 316

转载 阻塞I/O,非阻塞I/O,同步I/O,异步I/O

根据应用程序是否阻塞自身运行分为:阻塞I/O:是指应用程序在执行I/O操作后,如果没有获得响应,         就会阻塞当前线程,不能执行其他任务。非阻塞I/O:是指应用程序在执行I/O操作后,不会阻塞当前线程,           可以继续执行其他的任务根据I/O响应方式的不同,可分为:同步I/O:指收到I/O请求后,系统不会立刻响应应用程序,等到处理完成,系统         ...

2019-02-26 12:09:17 334 1

原创 十进制转换为十六进制

9999/16 624 15624/16 39 039/16 2 72/16 0 2(9999)D=(270F)H将十进制转换为二进制,可先将其转换为十六进制,在转换为二进制即可2         7         0       F0010   0111  0000  1111...

2019-02-25 11:32:28 1456

原创 前++与后++

区分increment/decrementclass UPInt{public:    UPInt&amp; operator++{        *this += 1;        return *this;    }    const UPInt operator++(int){        UPInt old = *this;        ++(*this);   ...

2019-02-13 17:46:40 390

原创 xargs的作用

xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数echo '--help' | xargs cat 等价于 cat --help 什么意思呢,就是xargs将其接受的字符串 --help 做成cat的一个命令参数来运行cat命令,同样 echo 'test.c test.cpp'...

2019-01-21 16:38:22 494

原创 一个守护进程写法daemon

  #include &lt;stdio.h&gt;                                                                                                                                                               #include &lt;u...

2019-01-11 14:13:40 302

原创 windows,linux 回车区别

在Unix系统下执行 换行操作 用“\n” 在windows 操作做系统下执行换行操作 用“\r\n”,如果用Linux打开会出现^M。在Mac操作系统下执行 换行操作用“\r”...

2019-01-04 10:10:46 211

原创 关于fork函数的两个小问题记录下

1,vfork如果调用后没有执行exec,会导致进程非正常退出,所以必须调用exec函数族或者exit2, fork后父进程的文件描述符表(进程级)也会被复制到子进程中,二者共享同一个文件表(内核级,不会复制。类似于dup函数)文件描述符表:进程级 fd flags,file pointers fd 0: fd1:文件表:内核级 ...

2018-12-26 10:03:07 212

原创 回收子进程的两种方法

#include &lt;stdio.h&gt;#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;stdlib.h&gt;#include &lt;pthread.h&gt;#include &lt;errno.h&gt;#include &lt;sys/wait.h&gt;void  sigchld(

2018-12-24 10:30:12 868

转载 深入理解inode结构,帮助理解硬链接与软链接,(转载)

一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做扇区,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据...

2018-12-05 19:48:54 218

空空如也

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

TA关注的人

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