- 博客(100)
- 资源 (9)
- 收藏
- 关注
原创 字节长度与打印格式
采用的编译器是GCC,32位系统上sizeof : int = 4, long = 4, long long = 8sizeof: float = 4, double = 8, long double = 864位系统上sizeof : int = 4, long = 8, long long = 8sizeof: float = 4, double = 8, long doubl
2017-09-22 17:59:34
1226
转载 长期运行程序的文件描述符泄漏问题
摘自https://oroboro.com/file-handle-leaks-server/So you’ve created a socket server that opens sockets over TCP/IP. After running it for a few hours under heavy load the operating system kills yo
2017-07-26 17:13:18
2654
转载 Close on exec by deault
Excuse me son, but your code is leaking !!!I have written over the years about leaked file descriptors, and what a pain they have been to SELinux.C on Unix many many years ago was
2017-04-13 23:36:46
705
转载 键盘按键和字符的英文名
Key/SymbolExplanationWindowsPC keyboards have a Windows key that looks like a four-pane windowCommandApple Mac computers have a command key.MenuPC keyboards als
2017-04-09 16:24:15
4194
转载 “Parameter” vs “Argument”
A parameter is the variable which is part of the method’s signature (method declaration). An argument is an expression used when calling the method.Consider the following code:void Foo(int i, fl
2017-04-09 16:05:48
592
原创 进程与线程
1、多进程比多线程的缺点:> It is difficult to share information between processes. Since the parent andchild don’t share memory (other than the read-only text segment), we must usesome form of interprocess
2017-03-14 23:42:56
460
原创 The Linux Programming Interface 笔记之malloc和free的实现
Althoughmalloc() and free() provide an interface for allocating memory that ismuch easier to use than brk() andsbrk(), it is still possible to make various programmingerrors when using them.
2017-02-04 23:20:20
648
转载 off-by-one(大小差一)错误介绍
详细了解请移步这里off-by-one,大小差一错误是一类常见的程序设计错误。这方面有一个经典的例子OpenSSH.去Google搜索关键词“OpenSSH off-by-one”可以了解相关状况。具体来说,1. if(id channels_alloc)...2. if(id = channels_alloc)...第二句应该是正确的写法。举个更通俗的例子:int a
2017-02-04 22:55:09
2382
2
原创 当进程退出后,动态申请的内存会自动释放吗
stackoverflow有人问了这么一个问题,下面这段程序执行完毕后,malloc的内存会释放吗int main () { int *p = malloc(10 * sizeof *p); *p = 42; return 0; //Exiting without freeing the allocated memory}赞数最多的这么回答:It depends
2017-02-04 20:50:03
12854
原创 Linux驱动笔记
1.Linux设备类型:字符设备,块设备,网络设备。(1)字符设备 作为字节流来处理。至少实现open,close,read,write系统调用。在文件系统的/dev目录下。(2)块设备 整块IO操作。与字符设备接口不同。在文件系统的/dev目录下。(3)网络接口 网络接口一般是硬件,也可以是软件,如loopback。并不在文件系统/dev目录下,没有路径
2016-08-23 11:20:32
540
转载 柔性数组
* 柔性数组即数组大小待定的数组 * C语言中结构体的最后一个元素可以是大小未知的数组 * C语言中可以由结构体产生柔性数组#include #include typedef struct _soft_array{ int len; int array[];}SoftArray;int main(){ int
2016-07-21 16:14:22
470
转载 do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在
2016-07-12 09:48:35
351
转载 Linux内核源码树学习:Kconfig和Makefile
Linux内核源码树的每个目录下都有两个文档Kconfig和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单。在执行内核配置make menuconfig时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。在内核编译时,主Makefile调用这个.config,就知道了用户的
2016-07-01 14:30:57
615
转载 awk之变量篇
转自Eagle_6151.数值变量和字符串变量数值常量可以为整数,浮点数,或科学计数法,字符串括在双引号1.1初始化与强制类型转换 未经初始化的变量的值是0或者"",究竟是哪个取决于他们被使用时的上下文。 强制将字符串转换为数字: name + 0 将数字转换成字符串的方
2015-12-01 23:03:55
1293
原创 安卓APK去广告的一种方法
APK去广告所需资源如下:1.要去广告的apk文件2.反编译工具apktool apktool3.JDK(用于签名APK) 过程大体分为以下四步:解包、去广告、打包、签名,具体如下:1.解包解压下载的apktool压缩包,并把apk文件拷贝到该目录下。dos下进入解压后的目录,执行如下语句,得到解包的apk文件夹(例子中apk文件名为phys.apk,
2015-11-19 21:54:08
10987
1
转载 如何快速掌握一门技术
几周前一个朋友也打算通过跑步来甩一甩脂肪,控制一下自己那已经严重扭曲了的身材 —— 他便求教我从衣服到鞋,从腕表到心率带,都买了什么装备,性能如何,他好照着原样来一套。我告诉他我什么装备都没买,跑了半年多了,我还是随便套上件纯棉的T恤,穿条舒服的运动短裤,蹬着跑鞋,抓着手机,就这么跑将起来。他连连说不信,一个连排汗速干的衣服,臂包,运动腕表都没配的人,怎么也能(配得上)跑步?这让我想起了我
2015-11-18 22:46:42
529
原创 Effective C++笔记 55条编程法则
1. 视C++为一个语言联邦C++高效编程守则视状况而变化,取决于你使用C++的哪一部分。2. 尽量以const,enum,inline替代#define1) 对于单纯常量,最好以const对象或enum替换#define2) 对于形似函数的宏,最好改用inline函数替换#define3. 尽可能使用const1)如果关键字const出现在星号左边,表示被指物是常量
2015-07-10 16:55:54
1435
原创 泛型和面向对象C++
1. 在类内部定义的函数默认为inline......4.由于流对象不能复制,因此不能存储在容器中;由于流不能复制,因此形参或返回类型也不能为流类型,必须用指针或引用,对IO对象的读写会改变它的状态,因此引用必须是非const的。
2015-06-30 22:23:03
1690
原创 操作系统笔记
1.操作系统的特性:并发性、共享性、异步性和虚拟性。2.特权指令与非特权指令:(1)特权指令。只能在管态才能执行的指令为特权指令。这些指令一般只有操作系统才能执行,而一般用户程序不能执行。(2)非特权指令。在管态和目态均可执行的指令为非特权指令。3.处理器的状态:管态和目态,程序状态字中的一位标识。(1)管态:也称为系统态、核心态,是操作系统运行时所处的状态。(2)目态:也
2015-05-06 16:26:43
3117
转载 C++虚函数表深入剖析
多态性给我们带来了好处:多态使得我们可以通过基类的引用或指针来指明一个对象(包含其派生类的对象),当调用函数时可以自动判断调用的是哪个对象的函数。一个函数说明为虚函数,表明在继承的类中覆盖这个函数时,当调用这个函数时应当查看以确定调用哪个对象的这个函数。 (注:虚函数只能借助于指针或者引用来达到多态的效果。直接通过类的对象进行函数调用,而非指针或引用,即使被调用的函数是虚函数也
2015-05-06 16:24:45
819
原创 杂乱知识点
1.程序员和编译器不能用表达式(x-y<0)来替代(x<y),因为前者可能会产生溢出。甚至于也不能用表达式(-y<--x)来替代,因为在二进制补码表示中负数和正数的范围是不对称的。算术溢出是造成程序错误和安全漏洞的一个常见根源。
2015-03-30 11:55:58
676
转载 Ubuntu6.10 以后默认shell为dash,非bash
目录Dash as /bin/shWhy was this change made?My production system has broken and I just want to get it back up!I am a developer. How can I avoid this problem in future?[[[(($((n++)), $((--n))
2015-02-04 10:12:45
1966
转载 C,C++宏中#与##的讲解
文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x) #x之后,下面二条语句就等价。 char *pChar = "hello";
2015-01-24 12:48:14
718
原创 BTEA算法C语言实现
#include #include using namespace std;#include #define DELTA 0x9e3779b9#define MX (((z>>5^y>3^z<<4)) ^ ((sum^y) + (key[(p&3)^e] ^ z))) void btea(uint32_t *v, int n, uint32_t const key[4]) {
2015-01-22 22:32:44
2931
原创 利用管道获取控制台程序的标准输出
1.该程序调用控制台程序hello.exe,通过管道获取到hello.exe的标准输出数据,并打印到当前程序的标准输出。#include #include #include using namespace std;void invoke(string exe);int main(int argc, char* argv[]){ string exe = "hello.exe
2015-01-22 21:35:00
6035
5
原创 MD5和SHA1算法C++实现及运行时间分析
1.MD5代码实现HMAC.H即MD5头文件。#ifndef HMAC_H#define HMAC_H// POINTER defines a generic pointer type typedef unsigned char *POINTER;// UINT2 defines a two byte word typedef unsigned short int UINT2
2015-01-21 22:32:01
3135
1
原创 windows编写动态链接库DLL
1. 在VC中新建win32控制台工程,该工程调用动态链接库my.dll中的函数add,实现加法,代码如下#include #include typedef int(*lpAddFun)(int, int);//宏定义函数指针类型int main(int argc, char *argv[]){ HINSTANCE hDll;//DLL句柄 lpAddFun ad
2015-01-21 22:11:14
1665
原创 C/C++/MFC时间用法
1. C\C++中用法/* strftime example */#include /* puts */#include /* time_t, struct tm, time, localtime, strftime */int main (){ time_t rawtime; struct tm * timeinfo; char buffer [8
2015-01-21 21:46:09
1574
转载 MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
在开发过程中经常需要获得程序当前的运行目录,这时就可以使用GetCurrentDirectory()和GetModuleFileName()函数,GetCurrentDirectory只是返回当前进程的当前目录,而并不是进程的镜像文件(.exe)所在的目录,GetCurrentDirectory()适用于XP等系统,,在WinCE上不能使用,GetModuleFileName()适用于WinCE2
2015-01-18 14:36:18
1096
转载 常量指针与指针常量的区别
三个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。一) 常量指针。常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。在C/C++中,常量指针是这样声明的:1)const int *p
2015-01-08 16:17:41
586
转载 Nagle算法--TCP缓冲区管理算法
说明:本文是最近项目上使用tcp时遇到的问题找到的原因,参考了网络上的几篇文章整理出来,如有版权问题,请留言。 Nagle算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用程序系统的效率。1. Nagle算法的规则 (可参考tcp_output.c文件里tcp_nagle_check函数注释)
2015-01-03 19:41:07
1392
转载 eclipse最有用快捷键整理
在网上搜eclipse快捷键,可以搜出一大堆,大多罗列了n多的快捷键,估计大部分人看了以后都会头大的,我也头大,不过我一一尝试了一遍,整理出了eclipse最常用最有用,写代码必须用到的一些快捷键,大约只有网上快捷键大全的一半,减少大家的记忆量。如果大家把这些快捷键都很好的运用,写代码的效率一定会有提高。当然你也可以通过菜单栏中Window–>Preferences–>General–>Keys来
2014-12-08 15:36:48
613
转载 C++之string类
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的str
2014-11-10 10:20:26
933
转载 C语言文件操作fgets()
来说一说fgets(..)函数。 原型 char * fgets(char * s, int n,FILE *stream); 参数: s: 字符型指针,指向存储读入数据的缓冲区的地址。 n: 从流中读入n-1个字符 stream : 指向读取的流。 返回值:
2014-11-10 10:17:50
896
转载 vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
目前知道三种方式:WinExec,ShellExecute ,CreateProcess,别人已经总结的很好了《vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess》,我全文转载一下,另外后面加点自己的总结(黑体部分,除了标题)。三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程
2014-11-07 21:51:34
2398
转载 C和C++相互调用 error LNK2001: unresolved external symbol
在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题。近来在主程序是C语言,而调用C++功能函数的时候,C++的*.h头文件都能找到,功能函数也都定义了,最重要的是,单独编译C++的时候完全没有问题,但当用主程序的C调用C++的功能函数时总是提示该函数未定义(undefined)。这是什么问题?如何解决?关键点在这里:我们就靠在C++的*.h和*
2014-10-31 21:21:22
2368
转载 Visual Studio (VS)和Visual Assist X(VA)快捷键
“文本操作”快捷键命令名快捷键说明编辑.折叠到定义Ctrl + M,Ctrl + O自动确定在代码中创建区域的逻辑边界(如过程),然后隐藏它们。编辑.注释选定内容Ctrl + K,Ctrl + C使用编程语言的正确注释语法将代码的当前行标记为注释。(vc200
2014-10-30 20:11:50
3938
转载 VC++动态链接库(DLL)编程深入浅出
1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该D
2014-09-28 22:02:00
1181
原创 网络编程技术笔记
1. 网络数据传输时需要考虑字节序问题,即大端小端问题: x86系列CPU都是little-endian的字节序.网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big endian排序方式。为了进行转换 bsd socket提供了转换的函数 有下面四个h
2014-09-19 10:35:31
1333
Hands.On.Machine.Learning.with.Scikit.Learn.and.TensorFlow
2017-11-07
Deep Learning 英文原版
2017-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人