自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

河西无名式

月影星痕

原创 动态规划分析总结——如何设计和实现动态规划算法

进行算法设计的时候,时常有这样的体会:如果已经知道一道题目可以用动态规划求解,那么很容易找到相应的动态规划算法并实现;动态规划算法的难度不在于实现,而在于分析和设计—— 首先你得知道这道题目需要用动态规划来求解。本文,我们主要在分析动态规划在算法分析设计和实现中的应用,讲解动态规划的原理、设计和实...

2014-07-19 19:13:08 12091 7

原创 python中的排序问题——多属性排序

摘要:排序问题是一个经典的问题,在python中,因为有了库函数,排序操作就就更加简单,本文主要讲解如何运用python进行排序操作。 1.sort函数说明: sort函数是list类的一个方法,说明如下:   | sort(...) | L.sort(cmp=None, ke...

2013-12-17 22:14:24 11313 0

原创 perf 性能分析实例——使用perf优化cache利用率

摘要:本文主要讲解如何使用perf观察程序在缓存利用方面的瓶颈,进而优化程序,提高cache命中率。主要讲解提高缓存利用的几种常用方法。 1.程序局部性 一个编写良好的计算机程序通常具有程序的局部性,它更倾向与引用最近引用过的数据项,或者这个数据周围的数据——前者是时间局部性,后者是空间局...

2013-12-16 11:11:47 8468 4

原创 C语言变长数组 struct中char data[0]的用法

摘要:在实际的编程中,我们经常需要使用变长数组,但是C语言并不支持变长的数组。此时,我们可以使用结构体的方法实现C语言变长数组。 struct MyData  {     int nLen;     char data[0]; };                  ...

2013-12-01 22:27:39 4564 1

原创 python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode

摘要:在进行python脚本的编写时,如果我们用python来处理网页数据或者进行与中文字符有关的处理工作,经常出现这样的出错信息:SyntaxError: Non-ASCII character '\xe6' in file ./filename.py on line 3, ...

2013-11-21 16:28:17 134713 7

原创 linux 高端内存页框管理:永久内核映射、临时内核映射以及非连续内存分配

摘要:高端内存页框的内核映射分为三种情况:永久内核映射、临时内核映射和非连续内存映射。那么这三者有什么区别和联系呢?临时内核映射如何保证不会被阻塞呢?本文主要为你解答这些疑问,并详细探讨高端内存映射的前两种方式。 1.高端内存的区域划分 内核将高端内存划分为3部分:VMALLOC_ST...

2013-10-25 10:41:53 5121 0

原创 linux下的内核测试工具——perf使用简介

摘要:Perf是Linux kernel自带的系统性能优化工具。Perf的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature。pef可以用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能。

2013-08-26 17:25:44 21846 0

原创 git pull报错:Auto Merge Failed; Fix Conflicts and Then Commit the Result.

1.出错场景: 协同开发时,我们从远程服务器上pull下代码的时候,出现以下提示信息: Auto Merge Failed; Fix Conflicts and Then Commit the Result. 2.原因分析: 利用git status,输出如下: root@hyk...

2013-08-20 11:32:17 36997 2

原创 数据包转发原理与iptables的使用方法简介与实例

对于连接到网络上的 Linux 系统来说,防火墙是必不可少的防御机制, 它只允许合法的网络流量进出系统,而禁止其它任何网络流量。为了确定网络流量是否合法, 防火墙依靠它所包含的由网络或系统管理员预定义的一组 规则。 这些规则告诉防火墙某个流量是否合法以及对于来自某个源、至某个目的地或具有某种协议类...

2013-07-26 09:06:50 9433 1

翻译 内核符号表详解——如何在module中利用内核符号

前言:在内核开发中,有时候我们必须检查某些内核状态,或者我们想冲用某些内核功能,我们需要得到(read,write,exe)内核符号。本文主要为你介绍内核如何保存这些符号表,我们怎样应用这些内核符号表。本文仅仅是阅读内核源码的一个guide,通过阅读内核源码,我们将有更深入的理解。

2013-07-24 10:41:41 10241 5

原创 linux 内核头文件 linux kernel header

概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关。那么,什么是内核头文件,为什么需要更新内核头文件?内核头文件作用是什么,如何更新?本文主要为你解答这些疑问。

2013-07-20 14:50:40 13645 1

原创 git中各个commit节点的查询 回溯 与 合并:git rebase与git reset

概述:在利用git进行管理的时候,除了对不同的分支进行merge以外,往往需要对同一个一个分支上的不同commit进行合并或者撤销;或者对不同分支上的多次提交进行合并,形成一个线性的提交历史,等等:这些都要用到git rebase,git reset和git log这三个命令。 1.commi...

2013-05-30 13:15:36 15260 0

原创 算法复杂度精讲——算法时间复杂度的数学原理:从O(n(log(n))说起

概述:在设计算法的时候,要考虑两个方面,一个是算法的正确性,另外一个就是算法的效率,也就是复杂度,通常情况下,我们优先考虑的是时间复杂度,这也是本文要讨论的内容。算法学习的时候,经常碰到这样的问题,为什么快速排序的时间复杂度是O(nlog(n))?为何插入排序的时间复杂度是O(n^2)?这些是我们...

2013-05-19 19:13:44 8358 0

原创 栈破坏下crash的分析方法

在众多的coredump中,有一类crash调试起来是最麻烦的,那就是“栈被破坏”导致的函数调用回溯结构破坏引发的coredump。本文,主要讲讲这一类crash的成因、原理以及调试方法。 1. SMTC(show me the code) 首先,让我们来看一段代码 #include &...

2019-02-13 10:30:57 628 0

转载 从汇编视角看函数调用

C语言函数如下int bar(int c, int d) { int e = c + d; return e; } int foo(int a, int b) { return bar(a, b); } int main(void) { foo...

2017-08-03 18:49:20 778 0

转载 laravel 简介

Laravel是一款基于MVC设计模式的PHP框架,提供了一系列便捷的API接口,包括数据库、路由、表单验证等等,使PHP开发更为快速和优雅,一言以蔽:Laravel为WEB艺术家而生!1.安装先保证你已经安装好了PHP,接下来,你可以直接参考官网的安装教程进行安装。如果遇到网络问题,上述安装教程...

2016-08-21 18:36:56 3501 0

转载 crond 简介[转]

0.cron简介工具是一个以系统服务的形式存在。通过/etc/rc.d/init.d 或者 /etc/init.d目录下的启动脚本crond来启动。 也可能直接通过 service crond start 命令来启动。cron 会从如下这些地方读取安装的任务: 1>. /etc/anacr...

2016-08-18 10:52:24 620 0

原创 automake 使用指南

在构建大型的C/C++项目时,往往需要借助Makefile. 然而手动编写makefile是相当复杂的,这一点在程序需要跨平台的时候表现地更为明显。在此背景下,我们需要借助于一些自动化的工具来生成Makefile和configure。本文主要介绍autoconf, automake等自动化工具,...

2015-10-28 10:12:21 2673 0

原创 linux svn命令使用简介

1. svn st –helpstatus (stat, st): 显示工作副本中目录与文件的状态。 用法: status [PATH…] 未指定参数时,只显示本地修改的条目(没有网络访问)。 使用 -q 时,只显示本地修改条目的摘要信息。 使用 -u 时,增加工...

2015-09-17 15:06:51 665 0

原创 gcc指定头文件及动态链接库路径

在利用源代码进行软件编译的过程中,经常会出现以下错误: undefined reference to ‘crypt’ libdl.so: error adding symbols: DSO missing from command line openssl/rsa.h: no such file ...

2015-09-16 11:27:04 3065 0

原创 C++中的类型转化

C++中的类型转换种类繁多,很容易出错。本文主要总结,在何种情形该使用什么类型转化。1. char* >> int atoi char s[100]; int i=atoi(s); sscanf int sscanf(const char *str, const char *fo...

2015-09-16 09:49:45 493 0

原创 C++中shared_ptr的使用

template class shared_ptr#include<memory>shared_ptr是C++ 11之后标准库引入的一个特性,用于简化内存管理,防止内存泄露。1.shared_ptr的作用是什么?Objects of shared_ptr types have the...

2015-09-14 15:50:46 1670 0

转载 Docker Image Specification v1.0.0

Docker Image Specification v1.0.0An Image is an ordered collection of root filesystem changes and the corresponding execution parameters for use wit...

2015-03-31 15:29:48 1111 0

原创 go语言文件操作

1.os包中File类首先,file类是在os包中的,封装了底层的文件描述符和相关信息,同时封装了Read和Write的实现。type File struct { *file }type file struct { fd int name string dirin...

2015-03-17 10:28:19 2064 0

原创 进程通信之linux信号机制

摘要:本文主要介绍,linux进程通信中的信号机制,介绍信号的本质与作用原理;重点讲解信号的处理流程,同时介绍了信号的安装\发送\阻塞等概念.

2015-03-17 09:56:10 1111 0

原创 僵尸进程

1.僵尸进程与孤儿进程 僵尸进程:如果子进程先于父进程退出,此时子进程便成为一个尸体;此前,如果父进程没有调用wait等相关系统调用,那么子进程便成为僵尸进程. 孤儿进程:如果父进程先于子进程退出,那么子进程变成为孤儿进程,将被init进程领养. 2.进程相关数据结构 进程控制块PCB:保留了进程...

2015-03-14 10:27:29 1947 0

转载 在ubuntu上搭建go编程环境(附带自动化部署脚本)

自2009年Go语言发布以来,我一直在关注Go语言,如今Go语言已经发展到1.2版本,而且也收到越来越多的人关注这门语言。Go语言设计的目的就是为了解决执行数度快但是编译数度并不理想(如C++)以及编译速度快但执行效率不佳(.NET、Java),或者开发难度低但执行速度一般的动态语言这一问题。所以...

2014-10-28 15:58:51 1704 0

原创 C++ 中的比较函数

在写程序的时候,排序是一种和常用的

2014-10-14 20:21:40 2796 0

转载 C++ static关键字的几点说明

(1)类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致 了它仅能访问类的静态数据和静态成员函数。       (2)不能将静态成员函数定义为虚函数。       (3)由于静态成员声明于类中,操作于其外,所以对其取地址操作,就多少有些特殊 ,变量地址是指向其数...

2014-10-14 16:01:15 652 0

原创 守护进程

本文,主要讲解守护进程的定义和相关的原理,并通过一个用户实例来说明如何编写守护进程。 1.守护进程的撰写条件: 1)D要在系统中处于一直运转的状态,也就是说while循环,时刻在监听服务 2)D不能在关闭终端的时候退出—— 为什么终端关闭将导致进程退出呢? 3)D要脱离控制终端,登...

2014-10-14 14:47:55 1946 0

原创 标准输入的原理:cin与scanf

1.cin 的处理方式 1)如果cin读取整数,会自动忽略换行和空格;遇到文件结束标记,cin  >> a返回的数false     int a;     while(cin >> a){          cout     }        ...

2014-10-11 20:49:51 2270 0

原创 雅虎笔试题目——最大集合问题

摘要:sort函数在日常编程中,经常被用到;同时,对内存的初始化函数,经常用到fill,本节,我们以计算LIS为例讲解这两个函数的应用。 例子:有一些老鼠,有x和y两个属性,现在要选择一个最大集合,其中从前到后,老鼠的x属性依次递减,y属性依次递增。 分析:如果我们先按照x属性递减排列...

2014-09-28 15:24:12 1097 0

原创 使用priority_queue建立小顶推

template < class Type, class Container=vector, class Compare=less > class priority_queue 注意,priority_queue是一个模板类,它的定义形式如上;其中,它...

2014-09-26 23:37:10 1926 0

转载 C++模板学习

1. 模板的概念。 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。 //函数1. int max...

2014-09-22 17:15:31 938 0

原创 ubuntu开启启动过程&&开启自动启动 &&chkconfig

ubuntu开启启动过程&&开启自动启动 &&chkconfig 摘要:很多情况下,我们需要让某些服务开机自动运行:apache、mysql等。或者,在其他时候,我们需要开机即设置某些环境变量的值,修改runlevel等;这个时候,我们需要弄明白系统的开机启动过...

2014-09-11 18:28:10 1833 0

转载 http协议详解

Author :Jeffrey   My Blog:http://blog.csdn.net/gueter/  引言                                         HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式...

2014-09-10 22:52:14 692 0

转载 segment fault 的调试方法

Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对...

2014-09-09 22:20:39 1643 0

原创 文件描述符与文件指针等文件操作的几个问题

1.二者对比: 文件描述符就是open文件时产生的一个整数,直到一个索引作用,它用于UNIX系统中,用于标识文件。它是系统调用产生的。 文件指针是指向一个FILE的结构体,这个结构体里有一个元素就是文件描述符。它用于ANSI C标准的IO库调用中,用于标识文件。fopen是依赖于ope...

2014-09-09 22:08:10 1577 0

转载 Ubuntu init启动流程分析 upstart

Ubuntu init启动流程分析   现行的Linux distros主流的有两种init方式:一种是广为流传的System V initialization,它来源于Unix并且至今仍被各种Linux distros所采用;另一种是近几年提出的Upstart方式,基于...

2014-08-22 15:19:12 1211 0

转载 linux 下任务前后台切换:ctr + z && bg && fg

假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,终止这个程序,然后可以看到系统提示:     [1]+ Stopped /root/bin/rsync.sh     然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)   ...

2014-08-22 14:44:17 1841 0

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