自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tuzhutuzhu的专栏

码农,在路上

  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

转载 十分钟搞清字符集和字符编码

十分钟搞清字符集和字符编码什么是字符集什么是字符编码UTF-8和Unicode的关系UTF-8编码简介为什么会出现乱码如何识别乱码的本来想要表达的文字常见问题处理之Emoji本文将简述字符集,字符编码的概念。以及在遭遇乱码时的一些常用诊断技巧背景:字符集和编码无疑是IT菜鸟甚至是各种大神的头痛问题。当遇到纷繁复杂的字符集,各种火星

2015-11-03 19:04:38 833

原创 CentOS-6.5离线安装docker-1.7教程

CentOS-6.5离线安装docker-1.7教程0.  准备本文是模拟实际上线时,没有网络的情况下使用rpm包安装docker-1.7的方法。不过安装中也是使用yum,相比较直接使用rpm安装,yum可以解决一些库文件的依赖关系。# cd /etc/yum.repos.d/# mkdir bak# mv * bak/1.  安装libcgroup# cd cgr

2015-09-28 16:10:47 8980 2

原创 CentOS-6.5在线安装docker-1.7教程(升级内核)

CentOS-6.5在线安装docker-1.7教程(升级内核)前一篇博客讲到了Centos6.5在线安装docker1.7的方式。由于docker官方推荐的内核版本是3.10以上,本文在上一篇基础上增加了升级内核的方法,然后再3.10内核基础上安装docker。1.  安装EPELFor CentOS-6.5, theDocker package is part of Extra P

2015-09-25 07:27:39 4771 1

原创 CentOS-6.5在线安装docker-1.7教程

CentOS-6.5在线安装docker-1.7教程1.  安装EPELFor CentOS-6.5, theDocker package is part of Extra Packages for EnterpriseLinux (EPEL) repository, a community effort to create and maintain additionalpackages

2015-09-25 07:22:49 906

原创 PostgreSQL regress test

PostgresSQL regress test最近看了下pg中的回归测试相关内容,现在将看到的内容记录下来。1.      先来一个例子[postgres@gorilla1 regress]$ make checkmake -C ../../../src/port allmake[1]: Entering directory `/tmp/postgresql-9.3.4/sr

2015-08-14 12:29:05 1971

原创 搭建centos 5.x本地yum源

大家都知道,在centos上安装rpm包时,最令人头疼的就是各种包的依赖关系。不过CentOS和RedHat以及SUSE中提供了一种shell前端软件包管理器yum,用来解决软件包的依赖关系。使用yum安装所需的软件,过程变得简单很多。但是一般来说,yum都是在线安装软件的。对于没有网络的情况下,我们该怎么办呢?本文以 CentOS 5.5 为例,完整讲解 CentOS 系统创建本地 yum

2014-11-16 23:27:20 1134

转载 shell中常用功能与C语言的对比

要实现的功能C语言编程Linux Shell脚本编程程序/脚本的参数传递int main(int argc, char** argv){if (argv != 4) {    printf( “Usage: %s arg1 arg2 arg3”, argv[0] );    return 1;} 

2014-09-04 15:23:10 768

原创 SQL的四种语言:DDL、DML、DCL、TCL

1. DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema。用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束。DDL不需要commit。DDL的操作包含:CREATE

2014-09-03 09:50:25 1211

翻译 MySQL Fabric概述

Oracle在今年5月推出了一套为各方寄予厚望的MySQL产品 -- MySQL Fabric,从字面上不太能看出它是啥,但是从名称上还是有迹可循的。fabric是“织物”的意思,这意味着它是用来“织”起一片MySQL资料库。MySQL Fabric是一套数据库服务器场(Database Server Farm)的架构管理系统。

2014-08-22 11:30:07 6323 4

原创 linux上源码安装MySQL详解

最近需要使用MySQL Fabric,这货是MySQL5.6.10之后才出现的utility。手头机器装的是MySQL5.1,所以需要先把旧版MySQL升级成5.6版本。之前没有玩过MySQL,所以这次稍微费了点事。在此,把过程记录下来,希望能给有需求的人提供一点帮助。下面我们就正式开始。

2014-08-20 15:58:15 1204

原创 MySQL出现Ignoring query to other database的问题

今天使用mysql的时候,输入任意一条命令都会出:Ignoring query to other database这条错误信息,很是奇怪。后来才发现是登录数据库时,少了个-u的参数。。正确的命令是:mysql -uroot -p我输入的是:mysql -root -p加上-u就可以了

2014-08-20 14:49:36 6709 1

原创 递归算法时间复杂度分析与改善

递归算法大家都不陌生,当需要重复计算相同问题时,一般可以选择递归和循环两种算法。又因为递归实现起来代码比较简洁,所以通常都会使用递归来解决上述问题。比如斐波那契数列,再比如树的前序、中序、后续遍历算法。递归算法虽然是有代码简洁这个优点,但是其缺点显著。因为递归函数是在执行过程中调用其自身,所以会占用大量的栈上空间,并且压栈和出栈都是有时间消耗的。所以从这一点上来看,递归的效率是不如循环。除

2014-07-24 12:01:07 3244

原创 insmod: error inserting 'hello.ko': -1 Invalid module format

在学习编写linux驱动程序的时候,一般都是从写一个helloworld的模块开始。但是在编译完成后,进行模块加载的时候,有时会出现如下错误:insmod: error inserting 'hello.ko': -1 Invalid module format其实,出现这个问题的原因很简单,就是:编译的内核版本与实机运行的内核版本不一致。所以解决起来也很简单,实机运行的系统的代码树位置一般在/usr/src/kernels。只要将Makefile中的代码树改成实际运行的内核代码即可。

2014-07-17 12:37:48 1317

原创 MAC上类apt-get工具brew的安装与使用

对于习惯了linux系统的人来说,使用yum或者apt-get来在线安装软件是一件很愉快的事情。这些工具可以解决依赖问题,使得安装过程变得简单快捷。在使用MAC的时候,也会想:MAC OS上有没有类似的软件呢?经常调查发现,果然有一款类似的软件brew,也叫homebrew。下面我们就来详细描述一下该软件的安装和使用方法。

2014-07-17 12:11:02 6864 1

原创 linux系统启动流程一览

linux系统启动流程一览加载BIOS的硬件信息并进行自检,然后根据设置取得第一个可启动的设备; 读取并执行第一个启动设备内MBR(master boot record,主引导分区)的boot loader; 依据bootloader的设置加载kernel,kernel开始检测硬件和加载驱动程序; 在硬件驱动成功后,kernel会调用init进程,init进程会取得run-leve

2014-07-07 23:57:11 803

原创 ramoops驱动注册失败原因详解

在使用linux的ramoops驱动模块时,在编译完加载时,会发现驱动加载不成功。明明直接使用的内核代码,为什么会出现这样的情况呢?首先看一下ramoops的初始化代码:180 static int __init ramoops_init(void)181 {182 return platform_driver_probe(&ramoops_driver, ramoops_pr

2014-07-03 12:32:00 3090

原创 linux设备驱动程序注册过程详解

Linux的驱动程序注册过程,大致分为两个步骤:模块初始化驱动程序注册下面以内核提供的示例代码pci-skeleton.c,详细说明一个pci设备驱动程序的注册过程。其他设备的驱动代码注册过程基本相同,大家可自行查看。使用的内核代码版本是2.6.38。1. 模块初始化1.1 驱动程序入口所有的设备驱动程序都会有如下两行代码:1922 module_init(netdrv

2014-06-26 15:02:21 4851 1

原创 USB设备驱动之设备初始化(设备枚举)

USB设备从接入HUB到正常工作之前,都属于设备枚举阶段。所谓设备枚举,就是让host控制器认识USB设备,并为其准备资源,建立好主机与设备间的数据传递机制。该阶段的工作,是USB通信协议规定的,所以属于ISO标准流程。设备枚举阶段也对应了USB设备的五种状态。设备枚举阶段分为如下8个步骤:获取设备描述符复位设置地址再次获取设备描述符获取配置描述符获取接口,端点描述符获取字符串

2014-06-24 10:06:23 1983

原创 Linux下进程终止过程

无论是在什么系统中,当进程终止之后,系统都需要释放进程占有的资源。否则,系统资源会被耗尽。下面将详细说明Linux系统中,进程终止的过程。进程终止方式linux的进程终止方式有8种,其中5种是正常终止,分别是:从main函数返回。调用exit函数。调用_exit或_Exit。最后一个线程从其启动例程返回。最后一个线程调用pthread_exit。异常终止有3种,分别是:

2014-06-11 11:55:11 2311

原创 Linux内核之vmlinux与vmlinuz

1.vmlinux vmlinux是一个包含linux kernel的静态链接的可执行文件,文件类型是linux接受的可执行文件格式之一(ELF、COFF或a.out)。 2.vmlinuz vmlinuz是可引导的,压缩的linux内核,“vm”代表的“virtual memory”。vmlinuz是vmlinux经过gzip和objcopy(*)制作出来的压缩文件。vmlinuz不仅是一个压缩文件,而且在文件的开头部分内嵌有gzip解压缩代码。所以你不能用gunzip 或 gzip –dc解

2014-05-18 23:03:25 2987

原创 Linux中进程的优先级

Linux采用两种不同的优先级范围,一种是nice值,另一种是实时优先级。

2014-05-07 23:36:20 1787

原创 GDB调试fork+exec创建的子进程的方法

本文讲述的是Linux中,使用gdb调试通过fork+exec创建的子进程的方法。网上介绍gdb调试fork+exec创建的子进程的方法有不少,实际使用之后觉得,本文的方法操作起来较为简洁明了,也具有一定的实用性。因此,将该方法拿出来与大家一起进行探讨。

2014-04-14 21:49:47 6426 1

原创 手把手教你搭建vim的IDE环境

提到IDE编程环境,大家首先想到的应该就是VS,eclipse之类。而对于vim,在大家的印象中就是一个黑框,操作复杂,难以掌握。其实不然,vim同样可以配置成IDE环境。并且,vim解放了右手,对于工作效率会有很好的提升。

2014-04-11 00:10:52 5786

翻译 Documentation/filesystems/sysfs.txt译文

sysfs是一个基于ram的文件系统,最早是基于ramfs的。sysfs提供了一种将内核数据结构、属性和他们之间的联系导出到用户空间的方法。

2014-03-16 23:06:14 1910

原创 xxx is not in the sudoers file. This incident will be reported的解决方法

我们在Linux系统上执行sudo命令时,有时候会报如下错误:xxx is not in the sudoers file. This incident will be reported。出现这个问题,是因为执行sudo命令的用户不在sudoers文件的列表中。可以通过编辑sudoers文件,来解决这个问题。编辑sudoers文件有两种办法,一种是以root帐号执行vi sudo,另一

2014-03-15 15:42:10 2502

原创 Linux进程间通信之命名管道(FIFO)

上一篇讲的是管道(pipe),也提到过管道最大的缺点是没有名字,因此只能用于具有亲子关系的进程之间。何为”没有名字“?使用过Linux系统的人,一定都听说过一句话:在Linux系统中一切皆文件。对于这里所说的”文件“,系统中都会有个名字与之对应。这样我们就可以通过名字对文件进行读写等操作。但是管道在系统中没有这样的”名字“,因此无法通过IO函数对其进行访问,所以其只能在父子进程间使用。

2014-03-15 13:43:29 1214

原创 vim常用命令汇总(持续更新)

但凡使用linux的人,肯定少不了使用vim。我本人windows上的文本编辑器使用的也是vim。个人感觉,vim熟练使用之后,工作效率确实提高了不少。现将工作中常用的命令进行汇总,以免忘掉。如果觉得这些命令比较基础,可以下载中文版vim使用大全,绝对的高大上。下载地址如下:http://download.csdn.net/detail/tuzhutuzhu/3561106今天无意

2014-03-11 22:18:35 1354

原创 linux虚拟机上使用git和github教程

1. GIT是什么?Git是一个分布式版本控制/软件配置管理软件,原是Linux内核开发者Linus Torvalds为更好地管理Linux内核开发而设计。相比CVS/SVN,Git 的优势:- 支持离线开发,离线Repository- 强大的分支功能,适合多个独立开发者协作- 速度块2.GITHUB是什么?GitHub 是一个共享虚拟主机服务,用于存放使用Gi

2014-02-27 00:32:44 14366 1

原创 Linux任务调度(三)—anacron

本文是《Linux任务调度》的第三部分,说明Linux中可唤醒停机期间的任务调度的实现方法。可唤醒停机期间的工作任务如果你的 Linux 主机是作为 24 小时全天、全年无休的服务器之用,那么你只要有 atd 与 crond 这两个服务来管理你的例行性工作排程即可。如果你的服务器并非 24 小时无间断的启动,那么你该如何进行例行性工作? 举例来说,如果你每天晚上都要关机,等到白天才启动你的

2014-02-23 17:59:31 1482

原创 Linux任务调度(二)—cron

本文是《Linux任务调度》的第二部分,主要说明Linux中周期性任务调度的实现方法。循环运行的周期性工作排程相对於 at 是仅运行一次的工作,循环运行的周期性工作排程则是由 cron (crond) 这个系统服务来控制的。刚刚谈过 Linux 系统上面原本就有非常多的周期性工作,因此这个系统服务是默认启动的。另外, 由於使用者自己也可以进行周期性工作排程,所以, Linux 也提

2014-02-23 17:47:43 1616

原创 Linux任务调度(一)—at

在 Linux 系统上,许多管理任务必须频繁地定期执行。这些任务包括轮转日志文件以避免装满文件系统、备份数据和连接时间服务器来执行系统时间同步。本文将介绍Linux中三种实现任务定期执行的方式,分别是:at,cron和anacron。其中,at是实现一次性任务控制,cron实现的是周期性控制,anacron实现可唤醒停机期间的工作任务控制。 仅运行一次的工作排程首先,我们先来谈

2014-02-21 17:00:22 2786

转载 手把手教你玩转GDB(四)—函数调用栈(call stack)探密

本文是GDB系列的第四篇,感兴趣的朋友可以阅读本系列的前三篇。本文的主要内容是讲如何用GDB来查看C/C++程序中函数调用栈(call stack)的相关信息,通过介绍一些相关的命令及其用法,让读者朋友能够循序渐进了解调用栈的各个方面,更好的驾驭程序。下面开始今天的内容。我们知道,通常一个程序的运行,不外乎是A函数调用B,B函数调用C等等,等所有的调用都完成后,整个程序的运行也就ok了。在

2014-02-19 17:26:34 1720

转载 手把手教你玩转GDB(三)—常用命令

本文是手把手教你玩转GDB的第三篇,主要内容是介绍一些在程序调试过程中最常用的GDB命令,废话不多话,开始今天的正题。1.attach process-id/detach(1)attach process-id: 在GDB状态下,开始调试一个正在运行的进程,其进程ID为process-id(2)detach: 停止调试当前正在调试有进程,与attach配对试用2.kill

2014-02-19 17:21:53 1206

转载 手把手教你玩转GDB(二)—Breakpoint, Watchpoint和Catchpoint

本文是《手把手教你玩转GDB》系列的第二篇,主要内容是用GDB调试程序中比较常用到的断点(breakpoint)、监视点(watchpoint)和捕捉点(catchpoint)。虽然说这三类point的功能是不一样的,但它们的用法却极为相似。因此,本文将以断breakpoint为例,进行详细的介绍,关于watchpoint和catchpoint的介绍就相对比较粗略,相信读者朋友如果能够理解brea

2014-02-19 17:10:08 3569

转载 手把手教你玩转GDB(一)—牛刀小试:启动GDB开始调试

写在最前面:GDB是unix相关操作系统中C/C++程序开发必不可少的工具,它的功能之强大,是其它调试器所不能匹敌的。但是,现实的工作中,有很多开发者因为GDB本身入门门槛比较高,而被拒之门,与如此强大的失之交臂。笔者在近两年的C/C++开发工作中,对GDB本身的有一点研究,在这里总结出一系列《手把手教你玩转GDB》的文章,一方面权当是对自己经验的一个总结,一方面也是真的想能够对刚接触GDB的开发

2014-02-19 17:06:35 3395

原创 Linux进程间通信之管道(pipe)

管道是UNIX系统IPC的最古老的形式,并且所有UNIX系统都提供此种通信机制。但是管道存在如下两种局限性:管道是半双工的。管道只能用在具有公共祖先的进程之间。管道的创建管道是通过调用pipe函数创建的:#include int pipe(int filedes[2]);参数filedes[2]是两个文件描述符,filedes[0]为读打开,filedes[1]为写打开

2014-02-16 22:41:05 1361

转载 C语言的数组名和对数组名取地址

相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址。现在又这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地址,就是指针的指针,既二级指针嘛!当然这样的结论是错误的,不然这篇笔记也就没有意义了。下面我们来逐步分析,下面是一段验证这个问题的代码Code:#includ

2014-02-16 01:49:19 828 3

原创 Linux守护进程编程规则

写这篇blog的原因在于,工作中经常需要写一些守护进程(daemon)。而我们创建守护进程的方法,往往是简单粗暴,不按照守护进程的编程来。创建守护进程的一般方法是:pid = fork();if (pid < 0) { // fork failed printf("fork error\n"); exit(1);} else if (pid > 0) { // p

2014-02-11 23:38:02 1410

原创 C语言中数组与指针的区别

在C语言的代码中,经常会将数组的数组名当做指针来使用。通过地址的偏移来对数组的元素进行操作。此时,认为数组名和指针是等同的。但是数组与指针到底是什么关系?将指针和数组划等号,会不会有什么问题呢?下文,将对数组与指针的区别进行说明。在进行说明之前,先说明一个背景知识:在C语言程序运行时,是通过符号(label)的地址进行访问的。也就是,经过编译和链

2014-02-09 21:02:34 791

原创 linux下计算进程cpu使用率和内存使用率的方法

在实际工作当中,有时候需要计算某个进程的cpu使用率或者是内存使用率。下面将介绍一种linux中计算某个指定进程的cpu使用率和内存使用率的方法。

2014-01-28 20:57:12 9263 1

中文版Git使用指南

中文版Git使用指南,快速学习git使用技巧

2014-02-27

最新版VIM用户手册

最全的中文版VIM用户手册,linux开发必备。熟练使用VIM绝对可以帮助你学好linux。

2011-08-30

深入浅出MFC,侯俊杰

侯俊杰先生翻译,经典之作,学习MFC必备! 《深入浅出MFC》分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Widnows程序的基本观念以及C++的高阶议题。“学前基础”是相当主观的认定,不过,甚于我个人的学习经验以及教学经验,我的挑选应该颇具说服力。第二篇介绍Visual C++整合环境开发工具。本篇只不过是提纲挈领而已,并不企图取代 Visual C++使用手册。然而对于软件使用的老手,此篇或已足以让您掌握Visual C++整合环境。工具的使用虽然谈不上学问,但在视觉化软件开发过程中扮演极重角色,切莫小觑它。 第三篇介绍application framework的观念,以及MFC骨干程序,所谓骨干程序,是指Visual C++的工具ppWizard所产生出来的程序码。当然,AppWizard会根据你的选项做出不同的程序码,我所据以解说的,是大众化选项下的产品。 第四篇以微软公司附于Visual C++光碟片上的一个范例程序Scribble为主轴,一步一步加上新的功能。并在其间深入介绍Runtime Type Information(RTTI)、Dynamic Creation、Persistence(Serialization)、Message Mapping、Command Routing等核心技术。这些技术正是其他书籍最缺乏的部分。此篇之最后数章则脱离Scribble程序,另成一格。

2010-01-06

空空如也

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

TA关注的人

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