自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fei的专栏

C/C++/Go Linux/Web 全栈之路

  • 博客(36)
  • 资源 (9)
  • 收藏
  • 关注

转载 C/C++ 程序内存结构

http://blog.csdn.net/ufolr/article/details/52833736楔子一个可执行程序文件需要在计算机硬件上运行起来,其实质就是静态的文件被加载到内存中的过程,可执行程序文件只是一个程序的载体。那么执行一个应用后,它在内存中是一个怎样的结构呢,请关注今天的走进科学——《C/C++ 程序内存结构》。动&静一个程序被加载到内

2017-12-12 09:46:07 802

转载 多线程编程之自旋锁

一、什么是自旋锁  一直以为自旋锁也是用于多线程互斥的一种锁,原来不是!  自旋锁是专为防止多处理器并发(实现保护共享资源)而引入的一种锁机制。自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请

2017-12-28 17:18:25 820

转载 自旋锁(spinlock)

自旋锁(spinlock)自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。  由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。  信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因

2017-12-28 17:16:25 532

转载 常用排序算法时间复杂度和空间复杂度

摘自维基百科: http://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#.E7.A8.B3.E5.AE.9A.E6.80.A7在计算机科学所使用的排序算法通常被分类为:计算的时间复杂度(最差、平均、和最好性能),依据列表(list)的大小(n)。一般而言,好的性能是O(n log n),

2017-12-27 14:50:57 767

转载 算法题:最小差

若给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 A 中取 A[ i ],数组 B 中取 B[ j ],A[ i ] 和 B[ j ] 两者的差越小越好( | A[ i ] - B[ j ] | ),写一个函数返回最小差。挑战 :时间复杂度 O(n log n)格式:输入行输入两个整数数组 A 和 B,最后输出返回

2017-12-27 10:39:58 2341

转载 Centos7.1防火墙开放端口快速方法

例如安装Nagios后,要开放5666端口与服务器连接,命令如下:?1234567[root@centos7-1 ~]# firewall-cmd --add-port=5666/tcp 即时打开,这里也可以是一个端口范围,如1000-2000/tcpsuccess[root@centos7-1 ~]# firewal

2017-12-26 10:56:32 7016

转载 Go语言中使用MySql数据库

Go语言中使用MySql数据库1、MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:https://github.com/Go-SQL-Driver/MySQL 支持database/sql,全部采用go写。https://github.com/ziutek/mymysql 支持d

2017-12-22 17:13:54 622

转载 Go语言中使用SQLite数据库

Go语言中使用SQLite数据库 1、驱动Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接口的https://github.com/mattn/go-sqlite3 支持database/sql接口,基于cgo(关于cgo的知识请参看官方文档或者本书后面的章节)写的https://github.com/feyeleanor/gosqlite3 不

2017-12-22 17:13:19 2625

转载 Go语言使用PostgreSQL数据库

Go语言使用PostgreSQL数据库PostgreSQL和MySQL比较,它更加庞大一点,因为它是用来替代Oracle而设计的。所以在企业应用中采用PostgreSQL是一个明智的选择。现在MySQL被Oracle收购之后,有传闻Oracle正在逐步的封闭MySQL,,鉴于此,将来我们也许会选择PostgreSQL而不是MySQL作为项目的后端数据库。1、驱动Go实现

2017-12-22 17:12:10 1536

转载 算法题:尾部的零

设计一个算法,计算出任意一个整数 n 的阶乘中尾部零的个数挑战 :O(logN)的时间复杂度格式:输入行第一行输入一个整数 n,最后输出阶乘尾部零的个数。样例输入11样例输出2

2017-12-22 16:32:24 318

转载 gdb调试多线程程序总结

阿里核心系统团队博客http://csrd.aliapp.com/?tag=pstack 多线程调试必杀技 - GDB的non-stop模式Linux下多线程查看工具(pstree、ps、pstack)http://www.cnblogs.com/aixingfou/archive/2011/07/28/2119875.htmlhtt

2017-12-22 10:04:04 769

转载 Nginx-Lua-Module Manual for ngx_lua v0.10.11

Namengx_http_lua_module - Embed the power of Lua into Nginx HTTP Servers.This module is not distributed with the Nginx source. See the installation instructions.Table of ContentsNa

2017-12-22 09:58:37 1957

转载 Golang中的信号处理

信号类型个平台的信号定义或许有些不同。下面列出了POSIX中定义的信号。Linux 使用34-64信号用作实时系统中。命令 man 7 signal 提供了官方的信号介绍。在POSIX.1-1990标准中定义的信号列表信号值动作说明SIGHUP1Term终端控制进程结

2017-12-20 11:55:11 935

转载 基础知识 - Golang 中的正则表达式

基础知识 - Golang 中的正则表达式------------------------------------------------------------Golang中的正则表达式------------------------------------------------------------用法:-----------------------------

2017-12-19 12:03:11 1511

原创 何海涛博客【算法题】

何海涛博客

2017-12-19 09:30:21 716

转载 linux内核调优参考

linux内核调优参考对于新部署的机器,需要做一些基本的调优操作,以更改一些默认配置带来的性能问题1 修改打开文件数  root@mysql:/data/tools/db# vim /etc/security/limits.conf * soft nofile 65535* soft n

2017-12-19 09:23:42 407

转载 利用GDB调试多线程core文件

在linux下程序崩溃时,一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的,接下来我们通过一个案例观察怎么利用GDB调试core文件。在命令行中键入 gdb : 进入gdb命令行中: 键入 bt 可以查看程序终止线程的堆栈: 但是有时错误不是发生在这个堆栈上。键入 info threads

2017-12-18 20:52:40 706

转载 孤儿进程与僵尸进程[总结]

1、前言  之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念  我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的

2017-12-14 17:45:00 315

转载 linux僵尸进程产生的原因以及如何避免产生僵尸进程

给进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取。这些信息包括子进程的进程ID、终止状态以及资源利用信息(CPU时间,内存使用量等等)。如果一个进程终止,而该进程有子进程处于僵尸状态,那么它的所有僵尸子进程的父进程ID将被重置为1(init进程)。继承这些子进程的init进程将清理它们(init进程将wait它们,从而去除僵尸状态)。        但通常情况下,我们是

2017-12-14 17:42:56 16465

转载 页缓存预读

Linux的预读架构如图所示,Linux内核会将它最近访问过的文件页面缓存在内存中一段时间,这个文件缓存被称为pagecache。如图1所示。一般的read()操作发生在应用程序提供的缓冲区与pagecache之间。而预读算法则负责填充这个pagecache。应用程序的读缓存一般都比较小,比如文件拷贝命令cp的读写粒度就是4KB;内核的预读算法则会以它认为更合适的大小进行预读 I/O,比如16-1

2017-12-14 09:49:39 1233

转载 编译部署ceph-10.2.3

准备:1.centos 7系统2.ceph-10.2.3源码3.ceph-deploy源码https://github.com/ceph/ceph-deploy/tree/v1.5.364.依赖包可以通过以下路径下载依赖包:https://pkgs.org/1.安装依赖包首先安装编译ceph所依赖的软件包,如下:(共20个

2017-12-14 09:41:12 601

转载 linux本地进程间socket通信是否经过网卡?

转自:https://www.zhihu.com/question/43590414结论:不走网卡,不走物理设备,但是走虚拟设备,loopback device环回.最简单的办法,拔掉网线,自己测试一个本地socket通信传输数据,就OK了。本机的报文的路径是这样的:应用层-> socket接口 -> 传输层(tcp/udp报文) -> 网络层 -> back to

2017-12-13 21:01:12 3725 3

转载 Linux CentOS 7 安装PostgreSQL 9.5(源码编译)

版权声明:本文为博主原创文章,转载请标明出处(http://blog.csdn.net/wlwlwlwl015)Thanks.目录(?)[+]前言之前的博客记录了通过rpm包的形式安装PostgreSQL 9.3(Linux CentOS 7 安装PostgreSQL 9.3(发行版本)),本篇blog将记录一下通过源码编译的形式安装Postgr

2017-12-12 09:58:29 284

转载 TCP协议中的三次握手和四次挥手(图解)

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。【更新于2017.01.04 】该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好。这么久才来更新,抱歉!!错误配图如下:首先Client端发送连接请求报文,Server

2017-12-12 09:54:50 365

转载 通俗易懂地讲解TCP建立连接的三次握手和释放连接的四次挥手

https://www.cnblogs.com/xiaoming0601/p/6001021.htmlTCP建立连接时,为什么要进行三次挥手?  每一次TCP连接都需要三个阶段:连接建立、数据传送和连接释放。三次握手就发生在连接建立阶段。 在谢希仁著《计算机网络》第四版中讲三次握手的目的是为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。在另一部经典的《计算机网

2017-12-12 09:51:34 600

转载 TCP(HTTP)长连接和短连接区别和怎样维护长连接

http://blog.csdn.net/ls5718/article/details/51757467一、HTTP协议和TCP协议HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的

2017-12-12 09:49:19 1387

转载 堆和栈的区别

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2017-12-12 09:48:01 324

转载 MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

数据库引擎介绍MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL+API自己做一个引擎。下面介绍几种数据库引擎:    ISAM:ISAM是一个定义明确且历经

2017-12-12 09:41:54 428

转载 MySQL数据库引擎详解

作为Java程序员,MySQL数据库大家平时应该都没少使用吧,对MySQL数据库的引擎应该也有所了解,这篇文章就让我详细的说说MySQL数据库的Innodb和MyIASM两种引擎以及其索引结构。也来巩固一下自己对这块知识的掌握。Innodb引擎Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔离级别这篇文章。该...

2017-12-12 09:40:51 421

转载 CentOS Linux 安装 iftop 监控网络流量

http://down.chinaz.com/server/201112/1478_1.htm在Linux/类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop。iftop是什么?  Iftop 主要用来显示本机网络流量情况及各相

2017-12-08 15:55:52 1002

转载 Windows下安装LiteIDE

一、安装Go语言包       参考:《Windows下Go开发环境安装》二、安装LiteIDE(1)下载LiteIDE       下载地址:https://code.google.com/p/golangide/downloads/list(2)安装       解压缩即可。避免出现中文目录。三、配置LiteIDE(1)设置编译环境        【查看】-

2017-12-06 10:26:41 1334

转载 Vi/Vim查找替换使用方法

vi/vim 中可以使用 :s 命令来替换字符串。该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询。     :s/vivian/sky/ 替换当前行第一个 vivian 为 sky     :s/vivian/sky/g 替换当前行所有 vivian 为 sky     :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行

2017-12-04 15:50:43 1632

转载 LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全

LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全liuning8023 · 2015-05-19 03:00:11 · 5730 次点击 · 预计阅读时间 1 分钟 · 23分钟前 开始浏览    这是一个创建于 2015-05-19 03:00:11 的文章,其中的信息可能已经有所发展或是发生改变。本文以 Windows 7 64 位为环境,g

2017-12-04 10:47:47 1385

转载 HTTP 请求头中的 X-Forwarded-For

HTTP 请求头中的 X-Forwarded-For我一直认为,对于从事 Web 前端开发的同学来说,HTTP 协议以及其他常见的网络知识属于必备项。一方面,前端很多工作如 Web 性能优化,大部分规则都跟 HTTP、HTTPS、SPDY 和 TCP 等协议的特点直接对应,如果不从协议本身出发而是一味地照办教条,很可能适得其反。另一方面,随着 Node.js 的发展壮大,越来越多的前端

2017-12-01 15:58:56 1715

转载 X-Forwarded-For 和 X-Real-IP 的区别?

做动静分离的时候这里有疑问所以请教度娘网上摘得,觉得比较有用就记下了一般来说,X-Forwarded-For是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中来自4.4.4.4的一个请求,header包含这样一行X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3

2017-12-01 15:52:54 27044

转载 nginx缓存命中率统计(proxy_cache)

一.对nginx缓存命中率的统计的配置:nginx 提供了变量$upstream-cache-status 来显示缓存的命中状态,我们可以再nginx.conf配置中添加一个http响应头来显示这一状态,可以达到类似squid的效果,如下:location  ~*   ^.*\.(js|ico|gif|jpg|jpeg|png)$    {proxy_redirect off;

2017-12-01 09:52:47 3052

Go Programming Blueprints - Mat Ryer - 2015 (1).pdf

Go Programming Blueprints - Mat Ryer - 2015 (1).pdf

2015-11-26

The-Golang-Standard-Library-by-Example-master.zip

The-Golang-Standard-Library-by-Example-master.zip

2015-11-26

Effective Go (中文版).pdf

Effective Go (中文版).pdf

2015-11-26

利用剪贴板实现进程之间的通信

该程序包括一个发送端和一个接收端窗口,发送端窗口将数据放到剪贴板中,然后接收端窗口就可以从剪贴板将数据读出,进而实现了两个进程之间的通信

2010-10-15

使用多线程模拟火车站售票系统

程序模拟了火车站售票系统,程序中使用了多线程的实现方法,并用多种方法实现了线程的同步,麻雀虽小,五脏俱全。

2010-10-09

空空如也

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

TA关注的人

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