编程相关
qq_14898543
这个作者很懒,什么都没留下…
展开
-
文件完整性校验——关于散列值和数字签名
转自:http://jmchxy.blog.163.com/blog/static/746082322013121113818518/ 近期有网友在博客中留言,希望俺介绍散列值校验文件的知识。所以俺干脆写一篇”文件完整性校验”的扫盲教程。由于本文是扫盲性质,尽量不涉及太技术化的内容。★什么是”完整性校验”? 所谓的”完整性校验”,顾名思义,就是检查文件是否完整。那么,什么情况转载 2017-08-21 10:23:39 · 1146 阅读 · 0 评论 -
linux进程状态及转换关系
linux中的进程状态:◆运行状态(TASK_RUNNING)指正在被CPU运行或者就绪的状态。这样的进程被成为runnning进程。运行态的进程可以分为3种情况:内核运行态、用户运行态、就绪态。◆可中断睡眠状态(TASK_INTERRUPTIBLE)处于等待状态中的进程,一旦被该进程等待的资源被释放,那么该进程就会进入运行状态。◆不可中转载 2016-04-06 16:19:47 · 325 阅读 · 0 评论 -
STL中map 和 hash_map 的使用方法
STL map常用操作简介1。目录map简介map的功能使用map在map中插入元素查找并获取map中的元素从map中删除元素2。map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。3。map的功能自转载 2016-01-04 11:22:22 · 2098 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
select、poll、epoll之间的区别总结[整理] select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的转载 2015-12-18 11:22:38 · 234 阅读 · 0 评论 -
SMPP协议解析
SMPP 协议是一个开放式的工业标准协议为信息中心和短消息系统应用端在短信数据传输时提供灵活的数据通信接口规范信息中心有短消息中心SMSC GSM 非结构化补充服务数据服务器USSD 等类型短消息系统应用端包括WAP 代理服务器EMAIL 网关和其它一些信息网关等。 SMPP支持以下双向信息传送功能: 1. 通过SMSC,转载 2015-12-01 13:52:52 · 15061 阅读 · 2 评论 -
Linux中.a,.la,.o,.so文件的意义和编程实现
Linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为静态库,是好多个.o合在一起,用于静态连接 .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格转载 2015-11-13 12:29:19 · 397 阅读 · 0 评论 -
static作用(修饰函数、局部变量、全局变量、成员函数、成员变量)
C++中的static数据成员/成员函数表示属于一个类而不是属于此类的任何特定对象的变量和函数. 这是与普通成员函数的最大区别, 也是其应用所在, 比如在对某一个类的对象进行计数时, 计数生成多少个类的实例, 就可以用到静态数据成员. 在这里面, static既不是限定作用域的, 也不是扩展生存期的作用, 而是指示变量/函数在此类中的唯一性. 这也是”属于一个类而不是属于此类的任何特定对象的变量和转载 2015-12-06 15:10:28 · 3159 阅读 · 2 评论 -
按位与、或、异或等运算方法
按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。 另,负数按补码形式参加按位与运转载 2015-11-30 09:16:48 · 379 阅读 · 0 评论 -
阻塞机制下的recv小结
recv是socket编程中最常用的函数之一,在阻塞状态的recv有时候会返回不同的值,而对于错误值也有相应的错误码,分别对应不同的状态,下面是我针对常见的几种网络状态的简单总结。 首先阻塞接收的recv有时候会返回0,这仅在socket被正常关闭时才会发生。 而当拔掉设备网线的时候,recv并不会发生变化,仍然阻塞,如果在这个拔网线阶段,socket被关掉了,后果可能转载 2015-11-26 13:35:02 · 307 阅读 · 0 评论 -
GCC 提供的原子操作-__sync_fetch_and_add系列
最近编码需要实现多线程环境下的计数器操作,统计相关事件的次数。下面是一些学习心得和体会。不敢妄称原创,基本是学习笔记。遇到相关的引用,我会致谢。 当然我们知道,count++这种操作不是原子的。一个自加操作,本质是分成三步的: 1 从缓存取到寄存器 2 在寄存器加1 3 存入缓存。 由于时序的因素,多个线程操作同一个全局变量,会出现问题。这也转载 2015-11-17 16:05:29 · 4247 阅读 · 0 评论 -
linux中fork()函数详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来转载 2015-11-16 14:35:37 · 224 阅读 · 0 评论 -
Linux pipe函数
1. 函数说明pipe(建立管道):1) 头文件 #include2) 定义函数: int pipe(int filedes[2]);3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。 filedes[0]为管道里的读取端 filedes[1]则为管道的写入端。4) 返回值:转载 2015-11-16 14:26:41 · 266 阅读 · 0 评论 -
EPOLL简介
EPOLL事件分发系统可以运转在两种模式下:Edge Triggered (ET)、Level Triggered (LT)。LT是缺省的工作方式,并且同时支持block和no-blocksocket;在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可能性要小一点。传统的selec转载 2015-11-16 16:05:11 · 664 阅读 · 0 评论 -
浅谈HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1转载 2016-05-12 09:35:02 · 256 阅读 · 0 评论 -
STL容器的适用情况和缺点
一.各种容器的特性vector典型的序列容器,C++标准严格要求次容器的实现内存必须是连续的,唯一可以和标准C兼容的stl容器,任意元素的读取、修改具有常数时间复杂度,在序列尾部进行插入、删除是常数时间复杂度,但在序列的头部插入、删除的时间复杂度是O(n),可以在任何位置插入新元素,有随机访问功能,插入删除操作需要考虑。deque转载 2016-05-12 09:56:59 · 3149 阅读 · 0 评论 -
简明解释算法中的大O符号
伯乐在线导读:2009年1月28日Arec Barrwin在StackOverflow上提问,“有没有关于大O符号(Big O notation)的简单解释?尽量别用那么正式的定义,用尽可能简单的数学来解释”。在经过众多热心网友的修改更新后,最佳回复的得分已高达 3234 分,详细内容,请见下文。最佳回复所给出的大O符号的最简单定义如下:大O符号是一种算法复杂度的相对表示方式。转载 2016-08-18 14:41:55 · 265 阅读 · 0 评论 -
linux下通过JNI用C/C++中调用JAVA类
决定使用JNI,实际是为了能够将通讯与调用后台的lucene索引,因此老大决定要采用这种方式来实现index的多机分布式的索引服务。接到任务,使用C++来调用Lucene的java查询的封装类。 用了java,c++各一段时间,却从未接触过JNI. 开始从网上收集该方面的资料,从头开始没有指导的时候特别郁闷,网上找到的大多数资料是讲述如何用java来调用C++的,而且多试wi转载 2017-06-13 10:46:08 · 3421 阅读 · 0 评论 -
Scala集合
本文作者: ImportNew - 朱伟杰 未经许可,禁止转载!这个章节的内容包含基本数据结构ListSetTupleMaps函数组合器mapforeachfilterzippartitionfinddrop and dropWhilefoldRight and foldLeftflattenflatMap广义的函数组合器如何处理好Map?基转载 2017-05-26 16:13:27 · 303 阅读 · 0 评论 -
函数式编程入门教程
http://www.ruanyifeng.com/blog/2017/02/fp-tutorial.html作者: 阮一峰日期: 2017年2月22日你可能听说过函数式编程(Functional programming),甚至已经使用了一段时间。但是,你能说清楚,它到底是什么吗?网上搜索一下,你会轻松找到好多答案。转载 2017-05-24 16:26:43 · 316 阅读 · 0 评论 -
一个程序员的Java和C++学习之路(整理)
转载:http://blog.csdn.net/ajian005/article/details/8003655Java学习之路一直有这么个想法,列一下我个人认为在学习和使用Java过程中可以推荐一读的书籍,给初学者或者想深入的朋友一些建议,帮助成长。推荐的的都是我自己读过,也会推荐一些朋友读过并且口碑不错的书籍。一、基础类1、《Thinking i转载 2017-05-24 11:28:15 · 1141 阅读 · 0 评论 -
腾讯后台开发面试总结,转载,吐血推荐!!
前段时间专心面过腾讯,经过了N轮的技术面,结果还是挂了,但没挂在技术面,比较欣慰,回来之后写一点总结,以供有梦想进入腾讯做后台服务器开发的同学参考,本文章为胡成精心总结,胡成原创,copy和转载请通知。ps:()之内的文字由作者点评,非面试题文字。linux和os:netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的转载 2016-12-30 11:13:39 · 420 阅读 · 0 评论 -
C++ STL中哈希表 hash_map介绍
0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信转载 2016-09-18 13:22:01 · 234 阅读 · 0 评论 -
linux hash_map的使用
简单的使用下:[cpp] view plain copy"font-size:18px;">#include #include using namespace __gnu_cxx; int main(int argc, char** argv) { hash_mapint , int> hm;原创 2016-09-18 12:47:51 · 607 阅读 · 0 评论 -
几种常见 容器 比较和分析 hashmap, map, vector, list ...hash table
转自:http://www.haogongju.net/art/1543058 list支持快速的插入和删除,但是查找费时;vector支持快速的查找,但是插入费时。map查找的时间复杂度是对数的,这几乎是最快的,hash也是对数的。 如果我自己写,我也会用二叉检索树,它在大部分情况下可以保证对数复杂度,最坏情况是常数复杂度,而std::map在任何情况下都可以转载 2016-09-18 10:14:22 · 271 阅读 · 0 评论 -
数组名与数组名的地址
假设我们定义一个数组char a[16]; 那么a与&a分别代表什么呢?它们完全一样吗? a其实代表的是数组中首元素的地址,即a[0]的地址,&a代表的是整个数组的起始地址。我们做个测试就可以很容易知道。 我们分别测试a a+1 &a &a+1这四个值,它们分别为:a0x0012fcc8a+10x001转载 2015-11-21 00:55:52 · 645 阅读 · 0 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难转载 2016-08-23 15:54:12 · 187 阅读 · 0 评论 -
值得推荐的C/C++框架和库
值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.转载 2016-08-22 11:58:13 · 242 阅读 · 0 评论 -
acl 的编译与使用
acl 库的功能参见文章 acl介绍 及 https://github.com/zhengshuxin/acl,本文主要讲述如何编译和使用 acl 库。 acl 下其实有四个库:lib_acl (基础库)、lib_protocol(http 和 icmp 协议库)、lib_acl_cpp(封装了 lib_acl 和 lib_protocol 两个 C 库的 C++ 版本实现,转载 2016-08-19 13:22:29 · 470 阅读 · 0 评论 -
epoll 使用简单例子
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXBUF 1024#define MAXEPOLLSIZE 6553原创 2015-11-13 13:46:10 · 438 阅读 · 0 评论 -
c socket 单线程多用户并发
使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。1. 程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组。2. 首先生成一个叫sock_fd的socket描述符,用于监听端口。3. 将sock_fd和数转载 2015-11-13 13:30:40 · 557 阅读 · 0 评论 -
异步套接字基础:select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
select函数: 系统提供select函数来实现多路复用输入/输出模型。原型: #include #include select函数: 系统提供select函数来实现多路复用输入/输出模型。原型: #include #include int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct time转载 2015-11-13 11:12:36 · 293 阅读 · 0 评论 -
VC下配置使用OTL
首先配置好ORACLE如何才能实现在CMD下 CD XXX就能进入ORACLE_HOME呢?C:\>set ORACLE_HOME=C:\oracle\productC:\>cd oracle_home系统找不到指定的路径。C:\>echo oracle_homeoracle_homeC:\>echo %oracle_home%C:\oracle转载 2015-11-13 12:44:57 · 269 阅读 · 0 评论 -
count、find、binary_search、lower_bound、upper_bound和equal_range的区别
你要寻找什么,而且你有一个容器或者你有一个由迭代器划分出来的区间——你要找的东西就在里面。你要怎么完成搜索呢?你箭袋中的箭有这些:count、count_if、find、find_if、binary_search、lower_bound、upper_bound和equal_range。面对着它们,你要怎么做出选择?简单。你寻找的是能又快又简单的东西。越快越简单的越好。暂时,我假转载 2015-11-13 12:43:09 · 349 阅读 · 0 评论 -
用alarm检测并处理代码执行超时
alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。所需头文件 #include函数原型转载 2015-11-13 13:32:20 · 1126 阅读 · 1 评论 -
非阻塞Connect对于select时应注意问题
对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后必须调用bind绑定到一个指定的地址,然后调用int listen(int sockfd, int backlog);进行监听。此时服务器socket允许客户端进行连接,backlog提示没被acce转载 2015-11-13 13:29:03 · 503 阅读 · 0 评论 -
windows下创建线程函数CreateThread
#include #include #include long c = 0;ULONG __stdcall t(void *t)//返回值必须是这个类型{ printf("%d\n", t); _InterlockedIncrement(&c);return 0;}int main(){for (int i原创 2015-11-13 13:17:49 · 366 阅读 · 0 评论 -
JAVA如何调用C/C++方法
JAVA通过JNI调用本地C语言方法 JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。 JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过转载 2015-11-13 13:03:07 · 216 阅读 · 0 评论 -
常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-8
常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-8 ANSI字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件 Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的是这种字符串,常被定义为typedef unsigned short wcha转载 2015-11-13 13:15:42 · 493 阅读 · 0 评论 -
VC OPEN之后没有反应解决办法
VC OPEN之后没有反应,估计是和某个软件有冲突,网上查了些资料后说可能是OFFICE EXCEL 2007,卸载之后居然还真好使了,都是微软的东西。。匪夷所思啊!原创 2015-11-13 12:46:23 · 423 阅读 · 0 评论 -
pthread_create 参数传递指针问题
linux 下常用的创建多线程函数pthread_create(pthread_t * thread , pthread_attr_t * attr , void *(*start_routine)(void*) , void *args);其中第一个参数用来保存线程信息,第二个参数指新线程的运行属性,可以设置为NULL,第三个参数为自定义的线程函数,第四个参数就是线程函数需要用到的参数,转载 2015-11-13 12:40:27 · 482 阅读 · 0 评论