自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

云烟阁

新博客:https://liangtian.me

  • 博客(242)
  • 收藏
  • 关注

原创 请大家访问我新博客:https://liangtian.me

请大家访问我新博客:https://liangtian.me

2021-04-02 19:11:08 216

转载 Unicode 和 UTF-8 有何区别?

unicode是字符集,utf8是unicode的一种编码方式很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在

2016-09-30 22:26:01 751

转载 Centos 6.4 python 2.6 升级到 2.7

一开始有这个需求,是因为用 YaH3C 替代 iNode 进行校园网认证时,一直编译错误,提示找不到 Python 的某个模块,百度了一下,此模块是在 Python2.7 以上才有的,但是系统的自带的Python是2.6版本,难怪一直连不上网。于是,继续百度google,进行安装,后来又出现问题...在此开篇记录一下,权当备忘。查看python的版本

2016-09-26 14:50:54 733

转载 为什么计算机最小的存储单位是字节?而最小到的传输单位是bit?

数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。还可以从以下几个方面来理解:1.字节(Byte)是电脑中表示信息含义的最小单位,因为在通常情况下一个ACSII码就是一个字节的空间来存放。而事实上电脑中还有比字节更小的单位

2016-05-15 23:09:44 36433 1

转载 C语言中关键字auto、static、register、const、volatile、extern的作用

这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用:(1)auto   这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。(2)register   这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通

2016-05-14 21:29:59 711

转载 常量字符串为什么位于静态存储区?

常量字符串为什么位于静态存储区?char *c="zhaobei";书上说: "zhaobei"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?请高手指点!所有的字符窜常量都被放在静态内存区因为字符串常量很少需要修改,放在静态内存区会提高效率例:cha

2016-05-12 22:55:07 2970

转载 MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚

一、关于UTF-8UTF-8 Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码。它对英文使用8位(即一个字节) ,中文使用24位(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集额的浏览器上显示。如果是UTF8

2016-05-05 10:09:35 50186 4

转载 终极 Shell

在开始今天的 MacTalk 之前,先问两个问题吧:1、相对于其他系统,Mac 的主要优势是什么?2、你们平时用哪种 Shell?……第一个童靴可以坐下了,Mac 的最大优势是 GUI 和命令行的完美结合,不要把所有注意力放在 Mac 性感的腰身和明媚的显示屏上好吧,这不是妹纸!第二个童靴你可以出去面壁了,讲了这么多期 MacTalk 你告诉我还在用 Windows 的 c

2016-04-07 11:11:24 675

转载 mac-程序员必备工具(2)-iTerm2

Mac 对原生 Shell 的支持是无数程序员喜爱 Mac 的理由之一,程序员用 Mac 而不用 Shell,基本等于自断一臂,威力将大打折扣。Shell 并非凭空而来,它的入口是终端工具。OS X自带的终端工具虽然不错,但是和 iTerm 2一比,就逊色很多了。iTerm2 是 OS X 下一款开源免费的的终端工具,我基本用它替代了原生的 Terminal。下载地

2016-04-07 10:50:31 2158

转载 客户端 用不用 bind 的区别

无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。  Bind()函数在成功被调用时返回0;出现错误时返回"-1"并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024

2016-04-01 20:14:46 601

转载 #!/usr/bin/env python与#!/usr/bin/python的区别

脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找pytho

2016-02-22 12:02:34 503

转载 php-fpm 启动参数及重要配置详解

约定几个目录/usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini一,php-fpm的启动参数12345678910111213

2016-02-17 15:59:00 772

转载 mysql 中 unix_timestamp和from_unixtime 时间戳函数

1.unix_timestamp将时间转化为时间戳。(date 类型数据转换成 timestamp 形式整数)没传时间参数则取当前时间的时间戳mysql> select unix_timestamp();+------------------+| unix_timestamp() |+------------------+|       1361586358

2016-02-16 11:27:33 923

转载 线程同步 - 互斥量

一、什么是互斥量互斥量是另一种用于多线程中的同步访问方法,它允许程序锁住某个对象,使得每次只能有一个线程访问它。为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁。二、互斥量的函数的使用它们的定义与使用信号量的函数非常相似,它们的定义如下:#include   int pthread_mutex_init(pthr

2016-02-12 17:49:55 695

转载 pthread_cleanup_push与pthread_cleanup_pop的目的 作用

首先你必须知道pthread_cleanup_push与pthread_cleanup_pop的目的(作用)是什么。比如thread1:执行pthread_mutex_lock(&mutex);//一些会阻塞程序运行的调用,比如套接字的accept,等待客户连接sock = accept(......);            //这里是随便找的一个可以阻塞的接口

2016-02-12 17:47:36 530

转载 curl 作为 http 客户端使用示例

curl 是与 url 进行交互的工具,支持 HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP or FILE 协议,这里示例 curl 与 http, https 的 url 进行交互。GET HEAD POST PUT 请求只要输出结果,不加任何参数, GET 请求。 示例:获取出口 ip 信息curl

2016-01-21 17:34:50 4105

原创 linux下C 信号集处理函数

sigset_t  为信号集 可 sizeof(sigset_t) 查看  128Kint sigemptyset(sigset_t * set)清空设置int sigfillset(sigset_t * set)置满信号集int sigaddset(sigset_t *set, int signo

2016-01-19 22:53:10 1061

转载 volatile 和 sig_atomic_t

1).volatile   影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,每次使用时都需要去内存里重新读取它的值,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如:   volatile int i=10;

2016-01-19 22:49:44 563

转载 linux 信号处理机制简介

鉴于后面把进程的形象给彻底毁掉了,我提前声明一下,进程是有尊严的有节操的,当然大部分人可能也看不到毁形象那一段。为什么介绍linux要从信号开始呢,当然是为了保证能讲明白,因为翻了翻书我发现这一部分是最简单的了,所以呢,就讲这个吧,顺便把之前源码阅读的东西总结一下。信号是什么东西呢?两个直观的感受,你在终端运行一个程序然后摁一下Ctrl+c就是向正在运行的程序发送了一个终止信号,程序就被终

2015-12-27 21:53:45 594

转载 Linux Ctrl+Z的使用方法

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

2015-12-27 20:27:53 3561

转载 进程信号的未决状态(pending status)

这两天看了apue有关进程信号的部分,觉得未决状态这个词很是不一般,呵呵。一开始当我看到这个词,我不理解,什么意思呢,读了好几遍。不知道是书里面讲的晦涩难懂,还是脑子越来越不行了,就是没有搞明白。后来看到后面的例子,然后再回想一下,终于清楚了!下面记录一下吧。定义:信号产生和传递之间的时间间隔内,称此信号是未决的;简单的说就是:一个已经产生的信号,但是还没有传递给任何进程,此时该信

2015-12-24 22:56:15 7828

转载 mmap:是什么 为什么 怎么用

mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可

2015-12-23 23:06:07 1572

转载 总线错误和段错误问题的定位

对现在的很多初级的程序原来说如果遇到总线错误(bus error)或者段错误(segementation fault/ core dump)是一件非常折磨人的事,让人一时间找不到什么好的方法也不知从何处下手去解决这个问题;和许多人一样,我很快也遇到了这样的问题:        出现这个错误时,错误信息对引起这种事件的的错误的源代码并没有做简单或者详细的解释;知识简单的显示error:seg

2015-12-23 22:59:15 1064

转载 php性能分析工具工具xhprof的安装与使用

下载源码包的网址 http://pecl.php.net/package/xhprof上面说了,每个版本适用的php版本。一、这是一个php扩展的形式。我们安装gd2,curl都是php的扩展形式。只不过有的时候编译的时候就安装进去了。像操作mysql数据库,也是一个mysql.so这样的扩展,安装了扩展,就能调用mysql_query()这些函数。要操作o

2015-12-09 18:12:02 3129

转载 RabbitMQ的原理与操作示例

AMPQ协议为了能够满足各种消息队列需求,在概念上比较复杂。首先,rabbitMQ启动默认是没有任何配置的,需要客户端连接上去,设置交换机等才能工作。不把这些基础概念弄清楚,后面程序设计就容易产生问题。1.vhosts : 虚拟主机。一个RabbitMQ的实体上可以有多个vhosts,用户与权限设置就是依附于vhosts。对一般PHP应用,不需要用户权限设定,直接使用默认就存在的"

2015-12-09 18:03:37 6810 1

转载 RabbitMQ消息队列在PHP下的应用

消息队列的实现中,RabbitMQ以其健壮和可靠见长.公司的项目中选择了它作为消息队列的实现.关于MQ的机制和原理网上有很多文章可以看,这里就不再赘述,只讲几个比较容易混淆的问题1,binding key和routing key  binding key和routing key是都不过是自己设置的一组字符,只是用的地方不同,binding key是在绑定交换机和队列时候通过方法传递

2015-12-09 17:45:49 7849 2

原创 RabbitMQ 入门四(Publish/Subscribe)

这次我们将完成一个基于Publish/Subscribe的应用场景。     首先我们得知道Exchange的三种类型:direct, fanout,topic。direct是直接模式,会将消息传递给我们所定义的唯一queue中,fanout就是广播模式,会将所有的Message都放到它所知道的queue中,topic是主题模式,将路由键和某模式进行匹配,发给对应的queue中,我们这

2015-12-09 17:33:12 724

原创 RabbitMQ 入门三(Work Queues)

上次我们简单的实现了发送与接收消息,接下来我们将学习更高级的用法。假如现在有这样的一个应用场景,有大量的密集计算需要后台去完成,单一的进程速度稍慢,这时候我们就需要多进程去协作完成了。现在我们建一个名为producer2.php的文件,用来发送消息,内容如下。接下来我们再来建立一个名为concumer2.php的文件,用来接收消息,内容如下。

2015-11-30 19:21:27 896

原创 RabbitMQ 入门二(hello world)

经过上节的安装以及简单配置,RabbitMQ已经跑起来了,接下来就到我们的代码实验环节了。   话不多说,开始搞起。   打开RabbitMQ 的官网,http://www.rabbitmq.com/tutorials/tutorial-one-php.html ,根据提示我们先安装RabbitMQ的php客户端,这里的安装我们要用到php的包管理工具 composer.

2015-11-30 19:05:37 646

转载 linux c学习笔记----进程创建(fork,wait,waitpid)

1.pid_t fork();(1)当一个进程调用了fork 以后,系统会创建一个子进程.这个子进程和父进程不同的地方只有他的进程ID 和父进程ID,其他的都是一样.就象符进程克隆(clone)自己一样.(2)为了区分父进程和子进程,我们必须跟踪fork 的返回值. 当fork 掉用失败的时候(内存不足或者是用户的最大进程数已到)fork 返回-1,否则fork 的返回值有重要的作

2015-11-28 21:32:25 1386

原创 C++ 类操作符重载笔记

不能改变操作符优先级不能改变操作符的结合性不能改变操作符所需要的操作数不能创建新的操作符对于二元操作符重载,如果操作符左边是类 那么就在该类内部成员函数重载操作符即可如果操作符左边不是类,而是一个常量,那么就必须在类的外部定义一个操作符重载函数有一个最基本条件  一定有一个一元是一个自定义的C++类如果两个都是基本数据类型那么是非法的

2015-09-13 13:51:18 585 1

转载 如何编写makefile文件

最近一直在学习makefile是如何编写的。    当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷。linux有一个自带的make命令,它让你的工作省去了很大的力气,但是你要学习如何编写makefile文件。makefile是一种特殊的文件格式,他将会帮你自动管理你的项目,很强大。下面通过实例一步步讲解如何使用make

2015-09-02 21:34:38 630

转载 Redis系列-存储篇sorted set主要操作函数小结

redis支持有序集合,即sorted set。sorted set在set的基础上,增加了排序属性,是set的升级版。这里简要谈谈sorted set的常用函数:1)inserta)  zadd语法:zadd key score member [[score member] [score member] ...]解释:增加一个或多个member【根据score

2015-08-20 13:14:50 687

转载 MySQL建议列属性尽量为NOT NULL

除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL。这看起来好像有点争议,请往下看。首先,我们要搞清楚“空值” 和 “NULL” 的概念:1、空值是不占用空间的2、MySQL中的NULL其实是占用空间的所谓的NULL就是什么都没有,连\0都没有,\0在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一

2015-08-11 21:12:56 709

原创 为PHP设置服务器(Apache/Nginx)环境变量

为PHP设置服务器(Apache/Nginx)环境变量设置环境变量常见的地方为区分开发环境/生产环境,或者定义一些数据库的帐号密码设置Apache环境变量指令设置当前环境变量为DEVSetEnv RUNTIME_ENVIROMENT DEV数据库帐号密码SetEnv MYSQL_USERNAME rootSetEnv MYSQL_PASSWORD root

2015-08-11 12:57:26 4108

原创 RabbitMQ 入门一(下载安装)

很久以前,就已经在项目中使用RabbitMQ了,但是就是这么糊里糊涂的用着,按照别人的写好的模板,修改几个参数就好了,实际上对RabbitMQ并不了解多少,所以打算从下载安装开始,慢慢了解RabbitMQ。    一 RabbitMQ是什么?    RabbitMQ 是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现,RabbitMQ的官

2015-08-07 15:35:53 5204

转载 如何在Linux下安装Erlang

这里的是CentOs操作系统下的安装,其他操作可以借鉴这篇文章查看如何安装,具体步骤如下:1.访问官网下载页找到适合自己机器运行的版本;2.将Erlang下载到本地wget http://www.erlang.org/download/otp_src_R16B02.tar.gz3.解压并安装tar -zxvf otp_src_R16B02.tar.gzcd otp_src_

2015-08-07 15:17:22 1018

原创 vim 配置

set ts=4"autocmd BufNewFile *.py 0r ~/.vim/template/simple.py"autocmd BufNewFile *.sh 0r ~/.vim/template/simple.sh"autocmd BufNewFile *.html 0r ~/.vim/template/simple.html"filetype plugin indent o

2015-08-03 17:10:49 571

转载 TortoiseGit(乌龟git)保存用户名密码的方法

windows下比较比较好用的git客户端有2种:1. msysgit + TortoiseGit(乌龟git)2. GitHub for Windowsgithub的windows版也用过一段时间,但还是不太习惯。所以目前仍然青睐与msysgit+乌龟git的组合。TortoiseGit在提交时总数会提示你输入用户名密码,非常麻烦。解决方案如下:方法一:设

2015-07-30 22:15:10 3639

转载 (转)git命令与github使用

此文是转载GitHub 是一个类似 SourceForge 的免费项目管理及分享的服务平台,要想使用 github,用户可以免费注册成为 github 注册用户,之后使用git命令进行操作使用。github 的网址是:github.com。一、建立 github 仓库.在 Github 创建账号后,点击 New Repository,填写一些本仓库相关的信息,如仓库名称

2015-07-16 17:45:39 842

空空如也

空空如也

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

TA关注的人

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