
闲得慌
文章平均质量分 50
去级得骨灰
我想飞快点儿
展开
-
source insight修改字体大小
在 options -> document options 里的 screen fonts 来修改字体、字号和颜色。在options -> preferences 里面可以在上面的基础上针对不同区域修改字体、字号和颜色以及背景色。保护色就是85, 125, 205。...原创 2018-06-06 14:48:22 · 6090 阅读 · 0 评论 -
xxxxxxyyttz
receiver.c#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#define HELLO_PORT 12345#define HELLO_GROUP "22...原创 2018-06-06 01:06:39 · 2845 阅读 · 0 评论 -
doxygen, gtags, cscope
doxygen: https://blog.youkuaiyun.com/ZeroLiko/article/details/78162408 https://blog.youkuaiyun.com/kongbu0622/article/details/3139426 https://blog.youkuaiyun.com/caostorm/article/details/53046518gtags: https://bl...转载 2018-06-11 15:07:37 · 667 阅读 · 0 评论 -
socket最基础的例子——别看!
一个tcp select的socket server,注意里面对select的时候和对信号的处理:#include &lt;stdio.h&gt;#include &lt;netinet/in.h&gt; // for sockaddr_in#include &lt;sys/types.h&gt; // for socket#include &lt;sys/socket.原创 2018-05-27 21:05:25 · 986 阅读 · 0 评论 -
文件流中读行的正确使用(fgets、feof、ferror)
原文地址:https://blog.youkuaiyun.com/yss28/article/details/53453959转载 2018-05-07 13:41:39 · 455 阅读 · 0 评论 -
Linux IO的buffer cache和page cache的区别,以及二者合并的原因
What is the major difference between the buffer cache and the page cache? Why were they separate entities in older kernels? Why were they merged later on?原文地址:quora.com/Linux-KernelThe page cache ...转载 2018-04-28 16:53:04 · 1173 阅读 · 0 评论 -
文件系统和裸块设备的page cache问题
原文地址:http://www.wowotech.net/filesystem/439.html 作者:阿克曼注:本文代码基于linux-3.18.31,此版本中块缓存已经合入页缓存(两个缓存合并的意思是:这里)。普通文件的address space文件系统读取文件一般会使用do_generic_file_read(),mapping指向普通文件的address space。如果一个...转载 2018-04-28 16:41:49 · 979 阅读 · 0 评论 -
Linux内核中的内存屏障
编译器有时会对代码做一些优化,例如尝试在保证程序执行正确的前提下修改指令顺序或优化ldr/str指令,让程序执行地更快。但是编译器毕竟不能完全猜透人的心思,有时候它做的优化会导致程序运行不符我们的预期。因此,内核中提供了一些额外的函数,可以插在某段代码里,告诉编译器不要在这里做指令优化。这些函数分为两种:内存屏障:rmb(), wmb(), mb(),可以防止硬件上的指令重排。除了编译器,...原创 2018-04-28 01:08:35 · 822 阅读 · 0 评论 -
__attribute__((context())属性理解
原文:http://blog.chinaunix.net/uid-14528823-id-4284946.html 另外还有一篇补充:内核工具 – Sparse 简介看spinlock的实现代码中,会发现有如下的实现:void __lockfunc _raw_spin_lock(raw_spinlock_t *lock) __acquires(lock);void __lockfunc...转载 2018-04-27 20:32:58 · 1210 阅读 · 0 评论 -
读小说摘抄 —— 钱钟书的《围城》
《围城》 围在城里的人想逃出来,城外的人想冲进去,对婚姻也罢,职业也罢,人生的愿望大都如此。忠厚老实人的恶毒,像饭里的砂砾或者出骨鱼片里未净的刺,会给人一种不期待的伤痛。又有人叫她“真理”,因为据说“真理是赤裸裸的”。鲍小姐并未一丝不挂,所以他们修正为“局部的真理”。尚望大人垂体下情,善为解铃,毋小不忍而成终天之恨。汝非妇人女子,何须置镜?惟梨园子弟,身为丈夫而对镜顾影,为...原创 2018-05-18 14:00:10 · 2092 阅读 · 0 评论 -
另一道题 —— 生成不重复的随机数
前面一篇文章中这里给出了由rand5()实现rand7()的随机数,要求数字不能重复的一种解法。但这个解法有一个问题,就是goto的次数无法控制,尤其越到最后得到期望的数字的概率越小,极端情况下可能很长时间才能获得1~7之间的全部整数。那么,对于下面这道题: 实现函数rand100(),要求输出1~100之间的全部整数,要求输出随机,且数字不得重复。这道题当然也可以用前面的方法,遇到重复...原创 2018-05-05 00:45:18 · 378 阅读 · 0 评论 -
一些时间的概念与区分(UTC、GMT、LT、TAI等)
UT - 世界时Universal Time 世界时是最早的时间标准。 在1884年,国际上将1s确定为全年内每日平均长度的1/8.64×104。以此标准形成的时间系统,称为世界时,即 UT1。 1972年国际上开始使用国际原子时标,从那以后,经过格林威治老天文台本初子午线的时间便被称为世界时,即UT2, 或称格林威治时间(GMT),是对地球转速周期性差异进行校正后的世界时。TAI...原创 2018-06-06 19:59:28 · 7493 阅读 · 0 评论 -
leap smear是什么
用来解决润秒突变时可能会造成的系统运行异常。对时间同步也有一定参考意义。 原文:https://googleblog.blogspot.com/2011/09/time-technology-and-leaping-seconds.htmlGoogle’s Site Reliability team is responsible for keeping Google’s services a...转载 2018-06-06 21:08:15 · 477 阅读 · 0 评论 -
几种开源TCPIP协议概述--LwIP,uIP,TinyTcp和uC/IP
1. BSD TCP/IP协议栈BSD栈历史上是商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的点。2. uC/IPuC/...转载 2018-06-01 23:48:55 · 2324 阅读 · 0 评论 -
C++模板的使用例子(别看)
#include &lt;stdio.h&gt;#include &lt;iostream&gt;#include &lt;functional&gt;template &lt;typename MsgT&gt;class Msg {public: Msg(int size) : size_(size) { element_ = new MsgT[siz原创 2019-01-14 01:01:30 · 1297 阅读 · 0 评论 -
收发包的设备变化
开关中断:local_irq_disable()local_irq_enable()下面的方法更安全:local_irq_save(flags) //保存中断环境并关中断local_irq_restore(flags) //恢复中断环境如果本来就在中断环境中,然后调用local_irq_disable不会做事情,但local_irq_enable会开中断,而这是实际是要保持原来的中断环...原创 2018-09-25 23:46:02 · 561 阅读 · 0 评论 -
调试网址
http://www.chenjianjx.com/myblog/entry/关于pipeline架构的几点说明http://www.52im.net/thread-100-1-1.htmlhttps://blog.youkuaiyun.com/lyztyycode/article/details/78648798http://originlee.com/2015/01/21/trick-in-cond...原创 2018-09-19 21:44:57 · 408 阅读 · 0 评论 -
gprofile, oprofile, LTT
http://www.mamicode.com/info-detail-1383535.html转载 2018-09-25 10:52:32 · 703 阅读 · 0 评论 -
增加测试代码
+#ifdef DMALLOC+#define DMALLOC_SETUP "debug=log-stats,log-non-free,log-bad-space,\+log-elapsed-time,check-fence,check-heap,check-blank,check-funcs,\+realloc-copy,free-blank,error-abort,al...原创 2018-09-25 00:13:02 · 473 阅读 · 0 评论 -
中国名人录?
http://chinavitae.com原创 2018-09-10 13:00:07 · 970 阅读 · 0 评论 -
clang自己的一些sanitizer,可以借鉴
http://clang.llvm.org/docs/index.html原创 2018-09-11 20:02:37 · 866 阅读 · 0 评论 -
C/C++ 调用avx/sse函数(Intrinsics函数)
原文地址:https://blog.youkuaiyun.com/reformatsky/article/details/69388772最近,实验室同学要写一个计算异或校验的代码,用在raid6里,他说kernel里面用的avx,于是我参考网上一些教程和Intel.org的资料,花了4,5天,踏平了一个大坑之后完成一个简单的对比测试。IDE 用的qt creator,gcc 需要加 -mavx2 代...转载 2018-08-26 01:15:24 · 4741 阅读 · 0 评论 -
Google C++代码规范笔记(一)
头文件: 如果 .h 文件声明了一个模板或内联函数,同时也在该文件加以定义。 至于用来插入文本的文件,说到底它们并不是头文件,所以应以 .inc 结尾。(不允许分离出 -inl.h 头文件的做法)如果一个文件并不是 self-contained 的,而是作为文本插入到代码某处。或者,文件内容实际上是其它头文件的特定平台(platform-specific)扩展部分。这些文件就要用 .inc...原创 2018-08-13 01:35:43 · 2202 阅读 · 0 评论 -
xchariot使用笔记
xChariot测试WAN-LAN的吞吐量,把脚本中send和receive那一行swap一下子。 跑chariot前要打开双方的endpoint,在chariot的安装目录下:我的是在D:\Program Files\Ixia\EndPoint. 他们跑WAN到LAN用的DMZ主机,wan口PC和wan口跑chariot,就可以达到lan口PC。 <<< 使用xChar...原创 2018-06-29 01:36:30 · 2737 阅读 · 1 评论 -
End-to-End Versus Peer-to-Peer
https://blog.meinbergglobal.com/2013/09/19/end-end-versus-peer-peer/转载 2018-06-10 16:05:53 · 1055 阅读 · 0 评论 -
虚拟机配置samba
Redhat:首先要确保已经安装了iptables、smb和sshd服务,以及虚拟机的防火墙被关闭了。samba共享文件: cd /etc/selinux vi config 注释掉SELINUX=enforing 添加SELINUX=disabled[root@localhost ~]# ntsysv 选中smb和sshd,然后OK,退出。smbpasswd -a ro...原创 2018-06-09 14:24:09 · 2640 阅读 · 0 评论 -
stdout行缓冲和stderr无缓冲的含义
stdout和stderr有人说stdio是带缓冲的,stderr是不带缓冲的,这并不是指fd=1和fd=2这两个设备文件,这两个设备是字符设备,本身没有缓存。并且你看一个进程的1和2两个fd指向的其实是同一个终端设备文件:[root@ubuntu]arm-code:$ ls -l /proc/8669/fd/total 0lrwx------ 1 root root 64 4月...原创 2018-04-25 21:44:45 · 1711 阅读 · 0 评论 -
exit() 和 _exit() 的区别
exit()和_exit()的效果都是让程序退出执行,而_exit()用来“尽快”退出。atexit()先说一下atexit()函数。我们可以用atexit()注册一个或多个函数退出清理函数(或者on_exit()但这个函数不建议用),这些清理函数按照注册时的反顺序,在exit()或main函数return时被调用。#include <stdlib.h>int a...原创 2018-04-19 18:35:44 · 917 阅读 · 0 评论 -
Linux进程间通信 —— 共享内存
原文链接如下,介绍了mmap()系统调用实现共享内存,和system V共享内存。 https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html 还有下面这篇一些简单的概括: htt...转载 2018-03-21 19:35:30 · 188 阅读 · 0 评论 -
聊聊为什么写博客
我是在2014年年底决定开始写博客的,而写第一篇文章时已经是15年3月份了。在这之前,我的优快云账号就是用来下载资源的。我对我决定写博客的原因还记得很清楚,那时我已经工作两年了,公司的个人工作电脑不能上网,所以你想查一些资料的话,就得去找个能上网的电脑,然后把资料传到一个单向的服务器上,再回到工作电脑下载下来,效率很低。 虽然是搞IT的,但好在我在工作中用到的技术不多,也是很传统的技术,也...原创 2018-03-31 01:31:44 · 292 阅读 · 0 评论 -
指针、数组、数组指针、函数指针
数组和指针的大小对于指针,无论它指向何种类型(int、char或是结构体等类型),指针自身总是占用4个字节(32位的long型大小),因为指针和它指向的内容是分离开的,指针本身只保存实际内容的地址,因此其大小就是系统地址范围的大小。 对于数组,其本身就是用在存放实际内容的,因此它的大小就是这个数组实际需要的内存大小,例如数组 short score[6]; 就是定义了一个包含6个short元...原创 2018-03-25 17:30:25 · 256 阅读 · 0 评论 -
[leetcode] Minimum Path Sum
leetcode的一道题:Minimum Path Sum 题目描述: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You c...原创 2018-03-21 11:09:25 · 210 阅读 · 0 评论 -
应用程序中各区域的内存映射位置
我们都知道一个进程跑起来后,其代码段、数据段、堆、栈等都分布在虚拟地址空间的不同位置。一个大致的内存映射图(ARM/MIPS架构均是如此)如下: 首先需要说明的是,这里说的都是虚拟地址空间,即对于32位系统来说的0~4G的空间;另外,进程中每个线程的栈、特有变量都是各自独有的,而代码段、只读数据、动态库代码段、堆都是所有线程共享的。我们可以通过/proc下面的maps文件查看到一个进程的...原创 2018-03-30 00:52:29 · 866 阅读 · 0 评论 -
文件读写操作的函数
笔记:/*#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags...原创 2018-03-19 16:41:57 · 504 阅读 · 0 评论 -
fcntl的close-on-exec标志
原文地址:http://blog.163.com/tlost_heaven/blog/static/79246122200910239562451/每个文件描述符都有一个close-on-exec标志。默认情况下,这个标志最后一位被设置为 0。这个标志符的具体作用在于当开辟其他进程调用exec()族函数时,在调用exec函数之前为exec族函数释放对应的文件描述符。我们来看一下具体的实例。...转载 2018-03-19 16:36:02 · 317 阅读 · 0 评论 -
Linux中的字符串和字节序列处理函数
花了两天的时间总结了Linux编程时的字符串操作函数和字节序列操作函数,以便后续查阅。这些函数大都不会去检查传入的参数是否为NULL,因此在使用之前要自己做检查,否则后果你懂的。一个基本知识点: 字符串处理中,如strcpy,字符串都是以’\0’来判断结束的。 字节序列处理中,如memcpy,操作内存字节,不在乎’\0’或其他字符。下列函数基本都包含在头文件string.h中,如果...原创 2018-03-18 23:04:44 · 1341 阅读 · 0 评论 -
typedef与typeof
typedef作用: 给一个数据类型起一个别名。使得编程时较简单规范。其中有一点需要注意,如typedef char* pstr2;char string[4];const char * pstr1=string;const pstr2=string;pstr1++;pstr2++;这里会在pstr2++处报错。原因是pstr2是const类型,不能进行修改。...转载 2018-03-22 15:29:11 · 783 阅读 · 0 评论 -
offsetof 和 container_of 的用途
offsetof() 和 container_of() 两个宏定义在Linux内核中很常见。我们在应用程序编程时可能也需要用到,因此可以把这两个宏定义copy过来。offsetof(type, member)用来求结构体type中的member成员在type中的偏移, 其定义如下:#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)...原创 2018-03-22 15:26:48 · 564 阅读 · 0 评论 -
TCP/IP学习笔记
TCP断开连接时的TIME_WAIT和MSL的关系 Maximum segment lifetime is the time a TCP segment can exist in the internetwork system. It is arbitrarily defined to be 2 minutes long. The Maximum Segment Lifetime value i...原创 2018-03-16 17:02:08 · 186 阅读 · 0 评论 -
为什么最小帧长度是64字节
我们来看一下,假设A检测到网络是空闲的,开始发数据包,尽力传输,当数据包还没有到达B时,B也监测到网络是空闲的,开始发数据包,这时就会发生碰撞,B首先发现发生碰撞,开始发送碰撞信号,所谓碰撞信号,就是连续的01010101或者10101010,十六进制就是55或AA。这个碰撞信号会返回到A,如果碰撞信号到达A时,A还没有发完这个数据包,A就知道这个数据包发生了错误,就会重传这个数据包。但如果碰撞信...转载 2018-03-17 20:21:16 · 7149 阅读 · 1 评论