自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (2)
  • 收藏
  • 关注

原创 为你的Archlinux Chromium安装flash插件

wiki.archlinux.org  Browser_plugins中说到,Chromium不再支持官方软件仓库中的flashplugin。需要到aur.archlinux.org/packages/chromium-pepper-flash下载这个pepper-flash。直接git https://aur.archlinux.org/chromium-pepper-flash.git

2015-09-18 15:31:02 5157

转载 深入浅出:进程、线程、协程、同步、异步、回调(转载)

进程和线程究竟是什么东西?传统网络服务模型是如何工作的?协程和线程的关系和区别有哪些?IO过程在什么时间发生?在刚刚结束的 PyCon2014 上海站,来自七牛云存储的 Python 高级工程师许智翔带来了关于 Python 的分享《Python中的进程、线程、协程、同步、异步、回调》。一、上下文切换技术简述在进一步之前,让我们先回顾一下各种上下文切换技术。

2015-09-14 00:06:44 2379

转载 Copy On Write和fork、vfork(很容易理解的图解)

转自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601655.htmlCOW技术初窥:      在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复

2015-09-14 00:01:16 1286

原创 求两个字符串的最长连续公共子串

这个问题和求公共子序列LCS是类似的问题,相比之下,更加简单,因为要考虑连续性。同样的,我们也可以用动态规划法求解,用一个数组C[m+1][n+1],C[i][j]代表字符串的前i个Mi和另一个字符串的前j个Nj的最长连续公共子串的长度。假设两个字符串M[0...m-1]和N[0...n-1]C[i][j] = 0,   i=0或者j=0; C[i][j] = C[i-1][j-1

2015-08-30 00:16:44 937

原创 C语言变量存储区域 进程内存布局

C程序中,内存通常分为几个大区:共享存储区、栈区、堆区、全局静态区、文字常量区,此外还有程序代码区,其中,全局静态区又可以分为全局非初始化区和全局初始化区,从具体程序中来看,初始化和非初始化的全局OR全局静态OR局部静态变量,其地址相差并不远,但还是可以看到明显的非初始化和初始化有分隔。关于初始化和非初始化的问题,我们一般认为全局变量、static变量在不显示初始化时都会默认初始化,这是肯定的

2015-08-28 15:54:25 1388

原创 UNIX网络编程8 从图中了解TCP协议在Linux内核中的实现

Packet Reception图1展示了一个新的包从网线进入到用户应用的路径。Linux 内核使用一个sk buff数据结构来描述每个packet。当一个packet到达网卡NIC时,它调用DMA引擎将packet放进内核内存中通过存储在一个环形buffer的空的sk buffs叫做rx ring。一个进入的packet如果环形缓冲区满了则被丢掉。当一个packet在较高协议层被

2015-08-27 21:00:00 663

原创 UNIX网络编程7 利用tdpdump理解socket相关函数和数据包的时序

本次测试的主要原因是不了解connect() accept()和三次握手的先后顺序。为了能够方便获得时序关系,在程序关键点都插入了printTimeLog()打印出时间戳和日志信息,并且在服务端listen()和accept()之间插入长时间的sleep(),在客户端connect()和send()之间也插入一定时间的sleep(),然后一次启动tcpdump和server以及client,根据程

2015-08-27 20:51:47 1034

原创 UNIX网络编程6 从tcpdump了解到的TCP/UDP发送限制和缓冲区问题

本节主要解决的问题:MTU和TCP/UDP一次发送的大小限制,read/write 或者 send/recv返回时机和数值,内核发送和接收缓冲区大小,未解决通告窗口win大小和发送包长length的关系,内核TCP再往下层的实现未关注。一些结论:首先明白,用户空间缓冲区就是指你的程序中存放原始数据的和用于接收数据的char数组,内核空间的tcp收发缓冲区有默认值,也会自动动态地增加

2015-08-27 20:43:32 1711

转载 UNIX网络编程0 IP头,TCP头,UDP头,MAC帧头定义

转自 http://www.cnblogs.com/li-hao/archive/2011/12/07/2279912.html一、MAC帧头定义/*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6];    //目的mac地址 char m_cSrcMac

2015-08-26 10:35:06 872

转载 C语言变量声明内存分配

转自:http://www.cnblogs.com/emanlee/archive/2009/04/12/1434278.html一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap) — 在内存开辟另一块

2015-08-21 22:08:15 407

转载 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete

转自 http://blog.csdn.net/u014401044/article/details/390339651、安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件。这些使用apt-get安装即可:lingd@ubuntu:~/arm$sudo apt-get install vim vim-scripts vim-doc其中vim-scripts是vim的一些基本

2015-08-21 20:54:47 490

原创 使用python进行系统资源使用率监控

Linux系统下:静态指标信息:名称描述单位所在文件mem_total内存总容量KB/proc/meminfodisks磁盘相关信息--disks.size磁盘总容量KB

2015-08-18 16:30:33 4896

原创 UNIX网络编程5 一些相似函数的比较和使用

1. bzero和memsetbzero是传统BSD函数,属于POSIX标准,使用头文件string.h,bzero无返回值,推荐使用memset替代bzero。bzero(&servaddr, sizeof(servaddr));memset(&remote_addr, 0, sizeof(remote_addr));2. perror和stderrperror和st

2015-08-18 15:13:58 555

原创 UNIX网络编程4 使用epoll

使用:http://blog.chinaunix.net/uid-20384806-id-1954307.html优点:http://blog.csdn.net/wangpengqi/article/details/9933011源码分析 http://blog.csdn.net/chen19870707/article/details/42525887 int epo

2015-08-18 10:33:51 558

原创 字符串匹配——KMP算法

字符串匹配的问题是:在主串中匹配模式串,并返回匹配到模式串的起始位置。 蛮力搜索O(m*n)的时间复杂度,重复匹配步骤太多。KMP算法的核心是发现模式串中的“前缀=后缀”,避免在模式串j位置发生匹配失败时还要回退到0位置开始匹配。 发现“前缀=后缀”,只需要将模式串向前移动合适的位置,跳过了重复匹配前缀的步骤。所以,KMP算法使用了一个next数组来保存模式串中的前缀=后缀的最大的k值,n

2015-08-17 17:36:44 517

原创 最长公共子序列LCS和字符串编辑距离

最长公共子序列问题是求两个字符串中出现的出现的相同的有先后次序的字符集合(可以不连续),连续的公共子序列是公共子串问题。参考 http://www.cnblogs.com/huangxincheng/archive/2012/11/11/2764625.html解决方案是动态规划算法,明白递推公式即可快速写出代码,动态规划算法就是解决子问题重叠的场景,不断利用子问题的最优解,所以一般会用到辅助

2015-08-17 11:06:03 1619

原创 设计模式——抽象工厂

参考:http://www.cnblogs.com/xing901022/p/4034813.html抽象工厂的主要意图:隐藏对象的创建过程,提供对象的使用接口模式结构AbstractFactory 提供创建对象的接口。ConcreteFactory 提供真正创建对象的实现类,用于组合并创建不同的对象,实现一个产品族。AbstractProduct 提供对象的使用接口。

2015-08-16 23:19:55 442

转载 8天学通MongoDB——索引操作(转)

序:《8天学通MongoDB》对于入门来说还是不错的,当然只是对于操作而言,对于MongoDB的原理,并没有研究。http://www.cnblogs.com/huangxincheng/category/355399.html基础入门、细说增删查改、细说高级操作都是基础,自不必说,下面主要转载索引操作、主从复制、分片技术、运维技术。8天学通MongoDB——索引操作

2015-08-16 11:34:37 441

原创 UNIX网络编程3 使用select()

select函数必需的头文件:和。这个函数允许进程指示内核等待多个事件(任何描述符字准备好读或写或有异常条件待处理)中的任一个发生,并仅在事件发生或经过某指定的时间后才唤醒进程。所以调用select的进程会在这个函数阻塞,等待事件发生或者超时。函数原型:select(int maxfdp, fd_set *readset, fd_set *writeset, fd_set *excep

2015-08-14 10:49:45 503

原创 UNIX网络编程2 理解select、poll、epoll原理

三者实现原理对比分析select, poll, epoll都是IO多路复用的机制,上文中提到的多路复用主要是以select为例,select和poll大同小异,因为select和poll的实现有明显的缺点,所以在Linux2.5.44中引入了新的处理大批量句柄的API——epoll,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。这里还是要强调,I/O多路复用机制的目的是应对大量的

2015-08-13 17:48:06 1459

原创 UNIX网络编程1 理解同步、阻塞、非阻塞、异步网络I/O

本文侧重的是网络I/O,如blocking、non-blocking、I/O multiplexing(event driven I/O)、signal-driven(不常用)、 asynchronous这几种UNIX网络编程中提到的模型。wiki中的Asynchronous I/O认为,asynchronous I/O和non-blocking I/O是一个意思,都是指一种I/O处理形式:在

2015-08-12 16:22:38 1022

原创 汇总一些网络相关的基础概念

TCP/IP参考模型:四层,自下而上分别是:主机到网络层->网络互联层->传输层->应用层。对应OSI七层模型:(物理层、数据链路层)->网络层->传输层->(会话层->表示层->应用层)每一层的数据单元:(比特->帧)->包packet带IP头->段segment带TCP/UDP头->(数据、消息、报文message) TCP/IP协议格式:报文封装格式:Ethernet

2015-08-12 15:55:18 517

原创 监控与性能分析系列:3)systemtap

原理:SystemTap允许用户编写和重用一些简单的脚本来深入检查一个运行的Linux系统的活动。这些脚本可以用来提取数据、过滤数据和统计数据以快速和安全的方式,使得对复杂性能问题的诊断成为可能。SystemTap背后的基本思想是事件,并且还有给他们绑定的handlers。当SystemTap运行脚本,它监控定义的事件,当该事件发生时,Linux内核就运行相应的handler作为一个快速子

2015-08-12 09:12:03 1766

原创 监控与性能分析系列:2)netstat、ss对比使用

从下面这个图来看,netstat和ss都是网络相关的监控,netstat在协议栈中每一层都可以做监控统计:TCP、路由表、网络接口、协议等,但是在Linux中,netstat已经不为推荐,取而代之的是ss。 1)netstat参数和使用常用参数-anplt-a 显示所有活动的连接以及本机侦听的TCP、UDP端口-l 显示监听的server port-n 直接使用IP

2015-08-12 08:59:53 10922

原创 监控与性能分析系列:1)strace和ltrace跟踪对比同一个socket应用程序

本文简单对比一下strace和ltrace的使用和输出信息。首先编写一个简单的socket服务端和客户端,服务端用父进程来监听listenfd,将请求connfd交给fork出的子进程来处理,主要代码如下:客户端主要代码如下: strace和truss用来跟踪一个进程的系统调用或信号产生的情况,strace -f -o server.strace ./echoser

2015-08-12 08:48:14 1904

转载 设计模式——总览导图

转自http://www.cnblogs.com/xing901022/p/4034492.html设计模式思维导图

2015-08-10 10:52:08 507

原创 Eclipse启动计时插件

Eclipse版本如下:Eclipse Java EE IDE for Web Developers.Version: Kepler Service Release 2Build id: 20140224-0627不需要下载额外的Eclipse for RCP and RAP DevelopersFile->New->Plug-in Project

2015-08-10 10:40:46 2796 3

原创 JVM学习:使用visualGC调优Eclipse启动过程

最近在学习JVM,了解了一些关于JVM的内存分配和垃圾回收的知识,其中有有一个实战是优化Eclipse的启动,从类加载时间、JIT编译时间、垃圾收集时间三个方面做了优化,简单、综合性强,可以加深对JVM的理解,所以这里对其进行验证。 硬件和操作系统环境:java版本(HotSpot虚拟机):Eclipse相关信息:原始的启动配置:最大永久代空间是25

2015-08-10 10:33:37 981

原创 Java基础的一些博客

UML建模相关:http://blog.csdn.net/tianhai110/article/details/6339565用例图、类图、序列图等。 黑马程序员系列文章 http://blog.csdn.net/hlhakey/article/month/2015/07new、this、super、final关键字IO流InputStream/OutputStream、R

2015-07-21 19:31:24 346

转载 (转)继承、重载、覆盖、多态

http://blog.chinaunix.net/uid-375137-id-2413340.html 1、继承(inheritance)   一旦你已经创建了一个定义了对象一般属性的超类,该超类可以被继承以生成特殊用途的类。每一个子类只增添它自己独特的属性。这是继承的本质。Java 不支持多超类的继承。   超类变量可以引用子类对象(运行时确定) 2、重载(over

2015-07-18 12:53:08 529

转载 (转)JVM的内存区域划分

JVM的内存区域划分  学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢?  由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:     

2015-07-16 17:42:47 467

原创 从链表操作理解C++传指针的问题

一般在函数调用时传入的参数有传值和传引用之分,传引用自不必说,理解上不会有太大问题,传指针容易对传值还是传引用产生混淆,实际上它还是传值,具体的,传指针可以理解为分两种情况(自我理解,不太准确,但是比较形象):把 *指针 传递给 *指针,把 *指针的地址传递给 **指针。当把 *指针 传递到函数中的*指针时,确保该指针指向有效的地址空间,则函数就可以通过指针操作那个地址空间;当把 *指针的地址 传

2015-07-12 23:12:31 706

原创 git遇到的诡异错误: Failed connect to github.com:443

为什么会说Failed connect to github.com:443是一个诡异的问题?乍一看,写明了无法连接到github.com,ping也不通,但是获取到了github的IP(192.30.252.131),而且ping其他网站如baidu.com是通的。更让人意想不到的是网关可以git,但是本机却不能git。然后就陷入了挣扎中。。。iptables挣扎:停掉本机iptables

2015-07-11 15:24:19 103020 9

原创 关于buffer overflow detected 程序崩溃的思考

我是在使用别人源码(DBT2 benchmark)的时候,编译成功一运行就出现了这个问题。本以为像这种开源的软件应该没什么bug,但是仔细想想,buffer overflow暗示着指针操作内存不当导致程序崩溃。。。遇到问题后,首先百度了一下,很多篇博客也提到了相同的问题,解决方案几乎都是针对什么ubuntu gcc版本,查看一下自己的gcc版本是4.4而且yum源最新,

2015-07-09 08:45:51 21989

原创 使用MYSQL benchmark - DBT2 Benchmark Tool遇到的问题

MYSQL Server是5.6版本下载DBT2 Benchmark,编译安装,按照README-MYSQL中的步骤来操作。需要由aclocal、autoheader、autoconf、automake,以及mysql、mysql-libs、mysql-devel。$ ./congigure --with-mysql$ make$ sudo make install 安装好da

2015-07-08 21:18:48 2485

翻译 sar/sysstat:10个非常有用的监控UNIX/Linux性能的sar用例

http://www.thegeekstuff.com/2011/03/sar-examples/使用sar可以实时监控Linux系统的多项性能指标如CPU、Memory、I/O等。sar是sysstat包的一部分。本文主要介绍怎样安装和配置sysstat包(包含sar),如何用sar监控以下的Linux性能统计:1. 聚合的CPU使用率2. 单个的CPU使用率3. 内存使

2015-07-07 22:20:04 2447

转载 Linux运维基础采集项

转自小米开源监控open-falcon,http://book.open-falcon.com/zh/faq/linux-metrics.html做运维,不怕出问题,怕的是出了问题,抓不到现场,两眼摸黑。所以,依靠强大的监控系统,收集尽可能多的指标,意义重大。但哪些指标才是有意义的呢,本着从实践中来的思想,各位工程师在长期摸爬滚打中总结出来的经验最有价值。在各位运维工程师长期的工作实践中,

2015-07-07 15:23:49 5606

转载 C++重载operator = 和初始化 =

class Box{public:    int a;    //重载了 = 操作符,只有在赋值时才会调用,初始化时调用的是构造函数    Box& operator=(int x){        a = x;        return *this;    }    /*    //如果要这样:Box box=10,必须定

2015-07-06 10:17:40 738

转载 C++ Virtual详解

http://www.cnblogs.com/xd502djj/archive/2010/09/22/1832912.htmlVirtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base

2015-07-06 09:15:03 362

转载 C++类型转换关键字 *_cast<type> (expression)

在C/C++语言中用(type)value(在C++中还可以采用type(value))来进行显示类型转换(explicit type conversion),常常又被称为强制转换。这种转换的正确性完全掌握在程序员手中,传统上强制转换往往被过度使用,成为C++程序犯错的一个主要根源。     为了减少强制转换的副作用,并且在查错时使程序员能够快速定位强制转换,在标准C++中新增加了4个关键字*

2015-07-06 09:06:44 641

vim插件和配置 for Linux 自动补全 IDE

里面的vim插件已经包含了taglist,omnicppcomplete等插件,无需再下载,详细的配置参考.vimrc,注意快捷键使用即可。有什么不喜欢和bug的地方,自行调整.vimrc。ctags命令工具还是要下载安装的。 1. 安装ctags和cscope yum install即可 在.vimrc文件中增加map :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . 就可以在vim中使用快捷键F12来随时生成当前目录下的tags,这样后续配好omni自动补全以后,自己工程下定义的类中的public成员,也可以通过. :: ->来自动补全了。全局定义的查找。局部的符号不会生成tags,这个要使用superTab。 Ctrl ] 跳转到光标所在位置的符号的定义,前提是tags中有。 Ctrl t 回到上次跳转前的位置。 2. 下载其他vim插件 echofunc.vim 在底部状态栏显示函数原型 Alt - 和 Alt + 可以在多个函数原型间切换 winmanager 侧边栏显示文件浏览 直接把.vim文件拷贝到~/.vim/plugin/下即可 自动打开winmanager,参考http://blog.csdn.net/xuanwu_yan/article/details/43736299 : 在.vimrc中添加: let g:autoOpenWinManager=1 然后需要手动修改winmanager.vim文件,在末尾加入: " set auto open WinManager if g:autoOpenWinManager autocmd VimEnter * nested call s:StartWindowsManager() endif 调整winmanager窗口的大小,参考http://blog.csdn.net/yangzhongxuan/article/details/7944927 : let g:bufExplorerMaxHeight=30 let g:bufExplorerMoreThanOne=0 miniBufferExplorer,直接下载minibufexpl.vim 折叠设置 " --fold setting --- set foldmethod=syntax "用语法高亮来定义折叠 set foldlevel=100 "启动vim时不要自动折叠代码 set foldcolumn=5 "设置折叠栏宽度 常用命令: za 打开/关闭在光标下的折叠 zA 循环地打开/关闭光标下的折叠 zc 关闭close在光标下的折叠 zo 打开在光标下的折叠 安装SuperTab,参考http://blog.csdn.net/bokee/article/details/6633193 ,配了之后没反应 使Tab键具有更快捷的上下文提示功能,从http://www.vim.org/scripts/script.php?script_id=1643 下载安装,它是个vba文件,即Vimball格式的安装包,安装方法: 1)用vim打开supertab.vba文件 2)在vim命令行下运行命令UseVimball ~/.vim。就会将安装包安装到~/.vim目录下。 在~/.vimrc文件中添加: let g:SuperTabDefaultCompletionType="" 使用Ctrl - P键弹出SuperTab的自动补全 Ctrl - w - ] 弹出定义的位置 Ctrl - ] 跳到符号定义的位置,Ctrl - t返回上次跳走的位置 Ctrl-x Ctrll-o 弹出omni自动补全 F12 生成当前目录下的tags

2015-08-22

vim for Windows 集成环境 IDE 自动补全 tags

当前vim7.4适用于windows环境 已安装的插件和支持的功能: 1. 多语言环境,解决中文乱码问题 2. ctags:需要将vim路径设置到系统的环境变量path中,才能使用ctags命令,在vim中使用 Ctrl+F12运行命令在当前工作路径中生成tags,其他库tags文件路径自行生成和设置。Ctrl+]跳 到当前光标下单词的标签,Ctrl+t返回到跳转前的位置。tags只对全局的变量有效。目前,在编 辑模式下,用Ctrl+n可以直接打开自动提示和补全,也可以补全局部变量。 3. TagList:在侧边栏显示tags。 4. miniBuffer:管理打开的多个文件,Ctrl+方向键、Ctrl+hjkl、可以在窗口之间切换,Ctrl +Tab可以在打开的多个文件之间切换。 5. grep:命令已复制到vim路径下,但是可能会因为系统缺失某些dll而无法运行,在vim中使用 Ctrl+F11来运行grep。 6. pydiction:python代码补全,输入过程中按tab键弹出自动补全提示。 7. vimpdb:python编译调试器,默认F2设置断点,F5运行,F12查看stack trace,F3查看变量和 参数值。现在改为:Ctrl+M设置断点,Ctrl+D运行。 8. OmniCppComplete:默认Ctrl+x Ctrl+o弹出补全提示,依赖于ctags生成的tags。 9. winManager:文件浏览,默认没有自动打开,需要时使用wm命令打开winManager和TagList。 10. pyflakes:python代码检查,在命令模式输入:cc进行检查。

2015-08-22

空空如也

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

TA关注的人

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