<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bigengine的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bigengine</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bigengine]]></copyright><item><title><![CDATA[Linux/Ubuntu sudo不用输入密码的方法]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/52383735</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/52383735</guid><author>bigengine</author><pubDate>Wed, 31 Aug 2016 12:22:51 +0800</pubDate><description><![CDATA[经常输入sudo 麻烦的用户， 可以用下面步骤取消密码


Step 1: 修改文件
sudo vi /etc/sudoers



Step 2： 注释# 下面
%sudo all=（all:all） all


Step 3: 添加下面新命令到文件最下面  

%sudoALL=NOPASSWD:ALL


Step 4：用 wq! 来保存修改


前提]]></description><category></category></item><item><title><![CDATA[Linux strace命令]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/51831317</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/51831317</guid><author>bigengine</author><pubDate>Tue, 05 Jul 2016 14:30:08 +0800</pubDate><description><![CDATA[strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界，进程不能直接访问硬件设备，当进程需要访问硬件设备(比如读取磁盘文件，接收网络数据等等)时，必须由用户态模式切换至内核态模式，通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数，返回值，执行消耗的时间。
输出参数含义


root@ubuntu:/usr# strace cat /d]]></description><category></category></item><item><title><![CDATA[awk 求最大值，平均值，最小值]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50990807</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50990807</guid><author>bigengine</author><pubDate>Sun, 27 Mar 2016 11:27:33 +0800</pubDate><description><![CDATA[统计类命令还是挺有用的

http://www.jb51.net/LINUXjishu/287783.html





、求和




复制代码
代码如下:


cat data|awk '{sum+=$1} END {print "Sum = ", sum}'


2、求平均



复制代码
代码如下:


cat data|awk '{]]></description><category></category></item><item><title><![CDATA[GSL library 安装 in Ubuntu 14.04 （附gamma 分布的随机函数）]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50855091</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50855091</guid><author>bigengine</author><pubDate>Fri, 11 Mar 2016 12:34:58 +0800</pubDate><description><![CDATA[GSL 库对于很多科学运算支持的比较好，比如很多不同的概率分布产生
Steps:
1. Download gsl-1.6.tar.gz from ftp://ftp.gnu.org/gnu/gsl/
2. Extract (tar -zxvf gsl-1.6.tar.gz)
3. Create (mkdir) the folder "gsl" where you want to insta]]></description><category></category></item><item><title><![CDATA[Linux split cat 分割和合并文件的指令]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50762969</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50762969</guid><author>bigengine</author><pubDate>Mon, 29 Feb 2016 07:17:37 +0800</pubDate><description><![CDATA[将一个大文件分成若干个小文件方法

例如将一个BLM.txt文件分成前缀为 BLM_ 的1000个小文件，后缀为系数形式，且后缀为4位数字形式

先利用

wc -l BLM.txt       读出 BLM.txt 文件一共有多少行

再利用 split 命令

split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_

将 文件 BLM.txt]]></description><category></category></item><item><title><![CDATA[同时输出屏幕和文件 linux命令tee]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50749530</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50749530</guid><author>bigengine</author><pubDate>Fri, 26 Feb 2016 14:33:45 +0800</pubDate><description><![CDATA[推荐一个很好用但是不一定每个人都知道的linux指令

如果你在linux下希望将程序或命令运行的信息，在输入到文件的同时，也能够显示在屏幕上，你可以考虑使用tee这个命令。

下图是对这个命令的形象介绍：






上图的解释是：ls -l 的输出重定向到 tee, tee 用于将内容存入file.txt文件，管道符号将内容输出到less命令；上图很像一个大写T，因此该命]]></description><category></category></item><item><title><![CDATA[linux iptables防火墙常用规则整理收集]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50727691</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50727691</guid><author>bigengine</author><pubDate>Wed, 24 Feb 2016 08:57:09 +0800</pubDate><description><![CDATA[这里是一个朋友在使用linux系统时的一些常用到的iptables防火墙规则整理了一篇文章，下面我转过来作记录的同时也给各位同学参考参考。


安装iptables防火墙


如果没有安装iptables需要先安装，CentOS执行：

yum install iptables
Debian/Ubuntu执行：

apt-get install iptables

清除已]]></description><category></category></item><item><title><![CDATA[GDB watch if var !=value]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50685452</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50685452</guid><author>bigengine</author><pubDate>Thu, 18 Feb 2016 13:38:32 +0800</pubDate><description><![CDATA[有一个内存越界的bug找了2天才找到，最后还是通过借助gdb的帮助，利用watch if 来跟踪某个值什么时候不等于期望值，从而跟踪到越界指令。
reproduce a bug 是找到bug的的第一步，然后再通过一些跟踪调试工具来找到原因。


这个bug算是我目前为止遇到最复杂的了，因为有一定的随机性，所以一开始要找到产生bug时的seed，然后再reproduce the bug ,如]]></description><category></category></item><item><title><![CDATA[在Linux信号处理中longjmp和siglongjmp]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50649840</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50649840</guid><author>bigengine</author><pubDate>Wed, 10 Feb 2016 14:54:40 +0800</pubDate><description><![CDATA[以下是我网上搜索到的，觉得写的还行，记录下来以供以后查阅。




相关函数：longjmp, siglongjmp, setjmp 
表头文件：#include  
函数定义：int sigsetjmp(sigjmp_buf env, int savesigs) 
函数说明：sigsetjmp()会保存目前堆栈环境，然后将目前的地址作一个记号，而在程序其他地方调用siglongj]]></description><category></category></item><item><title><![CDATA[C语言的STL 库]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50641919</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50641919</guid><author>bigengine</author><pubDate>Sun, 07 Feb 2016 02:52:11 +0800</pubDate><description><![CDATA[今天推荐一个函数库glib 注意不是glibc 

https://developer.gnome.org/glib/

一直在抱怨，标准C中为什么没有类似于STL的标准容器，让全世界的程序员在数以万次的重复实现它们。不过，还算走运，有了glib，恶梦在此终结了。glib提供了动态数组、单/双向链表、哈希表、多叉树、平衡二叉树、字符串等常用容器，完全是面向对象设计的，实现得非常精致。
]]></description><category></category></item><item><title><![CDATA[C变异测试 mutation testing 工具 Milu]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50641915</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50641915</guid><author>bigengine</author><pubDate>Sun, 07 Feb 2016 02:48:41 +0800</pubDate><description><![CDATA[最近在做mutation testing实验时，发现支持传统C语言的工具很少，不像JAVA, 有很多很强大的比如PIT，很早之前出过一个Proteum/IM 2.0, 这个算是老古董了基于LI中间语言的，很多如今的程序是支持不来了
下面推荐一个新的基于clang的工具Milu,中文麋鹿，是一个中国人开发的


git clone https://github.com/yuejia/Milu]]></description><category></category></item><item><title><![CDATA[register， volatile 关键字]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50638479</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50638479</guid><author>bigengine</author><pubDate>Fri, 05 Feb 2016 16:18:37 +0800</pubDate><description><![CDATA[register：这个关键字请求编译器尽可能的将变量存在CPU 内部寄存器中而不是通过内存寻址访问以提高效率。
为啥要这么麻烦啊？速度！就是因为速度。寄存器其实就是一块一块小的存储空间，只不过其存取速度要比内存快得多。进水楼台先得月嘛，它离CPU 很近，CPU 一伸手就拿到数据了，比在那么大的一块内存里去寻找某个地址上的数据是不是快多了？
 
详细可以参考： http://c.bianche]]></description><category></category></item><item><title><![CDATA[strcpy 溢出问题]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50638411</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50638411</guid><author>bigengine</author><pubDate>Fri, 05 Feb 2016 16:14:49 +0800</pubDate><description><![CDATA[今天编译一个老程序，后来发现了是strcpy溢出了，这个老程序以前是没问题的，但是strcpy 有一些不确定的行为，和memory layout相关，所以有可能现在版本的编译器导致了这个问题。

这里详细说一下strcpy溢出问题，

简单的说就是strcpy 不考虑目的地址的剩余空间，假设你已经分配了足够的空间， 它会一直赋值到源字符串结尾遇到\0 位置才停止, 所以有可能会触发一些内存]]></description><category></category></item><item><title><![CDATA[shell中同时执行多个命令，逻辑与&&和或||]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50629017</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50629017</guid><author>bigengine</author><pubDate>Wed, 03 Feb 2016 13:26:08 +0800</pubDate><description><![CDATA[部分内容参考http://151wqooo.blog.51cto.com/2610898/1174066




shell中&&和||的使用方法

&&运算符:

 

command1  && command2

 

&&左边的命令（命令1）返回真(即返回0，成功被执行）后，&&右边的命令（命令2）才能够被执行；换句话说，“如果这个命令执行成功&&那么执行这个命]]></description><category></category></item><item><title><![CDATA[如何产生真正随机数]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50623126</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50623126</guid><author>bigengine</author><pubDate>Tue, 02 Feb 2016 12:13:33 +0800</pubDate><description><![CDATA[在自动化测试中，随机测试是很常见的，一般人都知道srand和rand()配合使用产生伪随机数序列，但是如何选择seed,　其实是个问题，用最简单的time(NULL)是可以，但是如果在一个脚本里面快速执行很多遍时，很有可能时间还没有超过１个时间颗粒度，这样前后执行的测试取的是一样的随机数。
一般可以再加上　getpid()这个因素。seed=time(NULL)+getpid();　


]]></description><category></category></item><item><title><![CDATA[RAND_MAX+1 会溢出]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50621668</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50621668</guid><author>bigengine</author><pubDate>Tue, 02 Feb 2016 08:16:09 +0800</pubDate><description><![CDATA[RAND_MAX是C中stdlib.h中宏定义的一个字符常量：

一般情况下会定义为

#define RAND_MAX Ox7FFF

其值最小为0,最大为32767
　　但是在GNU LIBRARY 定义为2147483647

所以用double 转换然后再加１　防止溢出
((double) rand() / ((double) RAND_MAX + 1)

不能用加]]></description><category></category></item><item><title><![CDATA[北美IT公司大致分档]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50617810</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50617810</guid><author>bigengine</author><pubDate>Mon, 01 Feb 2016 11:47:51 +0800</pubDate><description><![CDATA[转载了一份来自mitbbs上面的大致分档，想肉身翻墙找工作的可以参考一下:





应该是以面试难度划分的。




北美IT公司大致分档

第一档: Uber, Snapchat, Airbnb,  Pinterest

第二档：Facebook, LinkedIn, Google, Twitter, Apple

第三档: Square, Yelp, Net]]></description><category></category></item><item><title><![CDATA[bind: Address already in use 错误追踪]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50416491</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50416491</guid><author>bigengine</author><pubDate>Mon, 28 Dec 2015 05:03:34 +0800</pubDate><description><![CDATA[Linux socket 编程  经常遇到这种错误。很大情况是一些进程绑定了端口，忘记解除绑定了。
可以通过netstat 命令找到占用的端口 然后用kill 命令杀掉。




netstat -ntupl

n表示不查询dns

t表示tcp协议

u表示udp协议

p表示查询占用的程序

l表示查询正在监听的程序




netstat -anp ]]></description><category></category></item><item><title><![CDATA[Syslog Linux]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50384237</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50384237</guid><author>bigengine</author><pubDate>Wed, 23 Dec 2015 08:56:20 +0800</pubDate><description><![CDATA[syslog 查看：
cat /var/log/syslog


什么时候使用：
我个人感觉syslog比printf cout 等打印语句靠谱，因为它是立刻写入的。一些打印语句有时候会存入到临时的buffer里面还没来得及写入文件，就被错误结束运行了(从而丢了不少信息)。


下面是一个简单的例子，如何使用syslog:

#include 
setlogmask (LOG]]></description><category></category></item><item><title><![CDATA[libxml2 ubuntu安装]]></title><link>https://blog.youkuaiyun.com/bigengine/article/details/50384097</link><guid>https://blog.youkuaiyun.com/bigengine/article/details/50384097</guid><author>bigengine</author><pubDate>Wed, 23 Dec 2015 05:47:36 +0800</pubDate><description><![CDATA[在ubuntu 下安装特别简单
sudo apt-get install libxml2
sudo apt-get install libxml2-dev






使用例子：
gcc demo.c -lxml2

但是这样还是会报错:找不到一些头文件


解决方法:　
sudo cp -r /usr/include/libxml2/libxml/ /usr/incl]]></description><category></category></item></channel></rss>