自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 const 用法详解

const用法详解 面向对象是C++的重要特性.  但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读    const int i=5;    i...

2016-03-31 15:29:49 589 0

原创 软件设计和优化的基本原则

参考系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3. 改善代码设计 —— 组织好你的数...

2016-03-31 15:28:59 822 0

原创 Darwin streaming server源码安装方式总结

darwin streaming server 源码编译 从苹果的网站http://developer.apple.com/opensource/server/streaming/index.html 下载 DarwinStreamingSrvr5.5.5-Source.tar.gz ...

2016-03-31 15:27:18 569 0

原创 Shell for循环用法总结

关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿... 1、 for((i=1;i 2、在shell中常用的是 for i in $(seq 10) 3、for i in `ls` 4、for ...

2016-03-31 15:26:14 627 0

原创 epoll使用详解(精髓)总结

epoll - I/O event notification facility 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降...

2016-03-31 15:25:23 357 0

原创 C、C++等语言常见符号作用总结

+、-、*、/∶ C语言的运算符——加、减、乘、除。  +=、-=、*=、/=、%=∶ C语言的运算符——修改和替代。  .∶ C语言的运算符——结构或联合的成员选择。  ,∶C语言中①逗号运算符。②分隔符,用于分隔函数参数表中的各参数。  ~∶ C语言的运算符——二进码反...

2016-03-16 13:35:33 3120 0

原创 内存泄漏测试命令及程序

/* 文件名称为test_list.cpp 测试std::list内存是否泄漏的问题 g++ -o test_list test_list.cpp -lpthread 查看进程占用的方法为: pidof  test_list linux系统假设输出进程号:9875 cat /pr...

2016-03-16 13:30:08 2400 0

原创 日志搜集、过滤及推送处理框架logstash及fluentd总结

简介 Logstash是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。怎么样听起来挺厉害的吧? 在一个典型的使用场景下(ELK):用Elasticsearch作为后台数据的存储,kibana用来前端的报表展示。Log...

2016-03-16 11:06:11 11928 0

原创 webrtc开源项目总结

什么是WebRTC? 众所周知,浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转。比如现在有两个客户端,甲和乙,他们俩想要通信,首先需要甲和服务器、乙和服务器之间建立信道。甲给乙发送消息时,甲先将消息发送到服务器上,服务器对甲的消息进行中转,发送到乙处,反过来也是一样。这...

2016-03-15 11:46:34 2787 0

原创 Linux 下编译及调试 C 代码的简易指南

对于Linux下的C程序员来说,几乎天天都会和Linux打交道。但在很多人的眼中,Linux是一个易用性极差、靠命令驱动的操作系统,根本无法与有着友好用户界面的Windows相比。确实是这样的,即使大家的程序是运行在Linux下,基于以下种种原因,我们的大部分工作还是在Windows下完成的: ...

2016-03-07 23:56:11 450 0

原创 Linux 动态库相关知识整理

动态库和静态库在C/C++开发中很常见,相比静态库直接被编译到可执行程序,动态库运行时加载使得可执行程序的体积更小,更新动态库可以不用重新编译可执行程序等诸多好处。作者是一个Linux后台开发,这些知识经常用到,所以整理了一下这方面的知识。静态库相对简单,本文只关心Linux平台下的动态库。 ...

2016-03-07 23:54:52 555 0

原创 C 语言调试器是如何工作的?

当你用 GDB 的时候,可以看到它完全控制了应用程序进程。当你在程序运行的时候用 Ctrl + C,程序的运行就能够终止,而GDB能展示它的当前地址、堆栈跟踪信息之类的内容。 但是它是怎么办到的呢? 但是它们怎么不工作呢? 开始,让我们先研究它怎样才会不工作。它不能通过阅读和分析...

2016-03-07 23:53:49 436 0

原创 为什么我要垂直对齐代码(你也要如此!)

上周在 HackerNews,关于 Linux Kernel 代码风格展开了有趣的讨论。 在讨论中,我就应不应该垂直对齐代码发起了一场小小的圣战。我完全支持!让我细说端详。 什么是垂直对齐? 举个小例子: 1 2 3 4 ...

2016-03-07 23:52:45 398 0

原创 C/C++内存泄漏及检测

“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这类没有垃圾回收机制的语言时,你很多时...

2016-03-07 23:51:43 307 0

原创 如何写出优美的 C 代码

面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可维护性,传统的 C 代码同样可以设计出比较易读,易维护,复杂度较低的优美代码,本文将通过一个实际的例子来说明这一点。 基础知识 结构体 除了提供基本数据类型外,C 语言还提供给用户自己...

2016-03-07 23:50:19 380 0

原创 分布式高可用 id 服务器设计实现

服务端/后台开发中如何生成id是每个开发者都会遇到的问题,在电商、游戏领域尤其突出。如何保证生成id的唯一性、可靠性、高可用性,如何组织id的格式,在不同的应用场景和限制下实现方式也不尽相同。 我们的应用场景类似电商,在一个订单的生命周期内,有多个逻辑需要生成各自的id,还要考虑到可读性和灵...

2016-03-07 23:49:15 500 0

原创 手把手教你做一个 C 语言编译器(9):总结

恭喜你完成了自己的 C 语言编译器,本章中我们发一发牢骚,说一说编写编译器值得注意的一些问题;编写编译器时遇到的一些难题。 本系列: 手把手教你做一个 C 语言编译器(0):前言手把手教你做一个 C 语言编译器(1):设计手把手教你做一个 C 语言编译器(2):虚拟机手把手教你做一个 ...

2016-03-07 23:48:38 6689 0

原创 第一个 C 语言编译器是怎样编写的?

首先向C语言之父Dennis Ritchie致敬! 当今几乎所有的实用的编译器/解释器(以下统称编译器)都是用C语言编写的,有一些语言比如Clojure,Jython等是基于JVM或者说是用Java实现的,IronPython等是基于.NET实现的,但是Java和C#等本身也要依靠C/C++...

2016-03-07 23:47:51 1190 3

原创 如何成为一名优秀的 C 语言程序员

问题的提出 每过一段时间我总会收到一些程序员发来的电子邮件,他们会问我是用什么编程语言来编写自己的游戏的,以及我是如何学习这种编程语言的。因此,我认为在这篇博文里列出一些有关C语言的最佳读物应该能帮到不少人。如果你知道其它的优秀读物,请给我发邮件或者直接在评论栏中告诉我吧。 问题的解答...

2016-03-07 23:45:40 701 0

原创 用 C 语言编写一个简单的垃圾回收器

人们似乎认为编写垃圾回收机制是很难的,是一种只有少数智者和Hans Boehm(et al)才能理解的高深魔法。我认为编写垃圾回收最难的地方就是内存分配,这和阅读K&R所写的malloc样例难度是相当的。 在开始之前有一些重要的事情需要说明一下:第一,我们所写的代码是基于Linux ...

2016-03-07 23:40:31 991 0

原创 C语言有哪些鲜为人知的特性?及C语言未定义行为一览

译注:本文摘编自 Quora 的一个热门问答贴。 请在linux系统下测试本文中出现的代码 Andrew Weimholt 的回复: switch语句中的case 关键词可以放在if-else或者是循环当中 1 2 3 4 5 6 7 8 9 10 11 1...

2016-03-06 22:06:20 672 0

原创 让 C 程序更高效的 10 个建议及很酷的 C 语言技巧及编写高效的C程序与C代码优化

代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性、有效性、紧凑性和效率(内存)。代码设计比实际执行更难 。因此,每一个程序员当用C语言编程时,都应该记着这些东西。本文向你介绍规范你的C代码的10种方法。 0. 避免不必要的函数调用 考虑下面的2个函数: 1 2...

2016-03-06 22:01:11 1791 0

原创 世界上最简单的无锁哈希表

无锁哈希表(Lock-Free Hash Table )可以提高多线程下的性能表现,但是因为实现一个无锁哈希表本身的复杂度不小。(ps:真正的复杂在于出错之后的调试,因为多线程下的调试本身就很复杂,引入无锁数据结构之后,传统的看堆栈信息和打印log都基本上没有意义了。堆栈中的数据可能被并发访问破坏...

2016-03-06 21:59:26 1104 0

原创 C语言内存地址基础

从计算机内存的角度思考C语言中的一切东东,是挺有帮助的。我们可以把计算机内存想象成一个字节数组,内存中每一个地址表示 1 字节。比方说我们的电脑有 4K 内存,那这个内存数组将会有 4096 个元素。当我们谈论一个存储地址的指针时,就当相于我们在谈论一个存储着该内存数组某个元素索引的指针。逆向引用...

2016-03-06 21:58:08 392 0

原创 12个有趣的C语言问答

12个有趣的C语言问答 0. gets() 方法 Q:以下代码有个被隐藏住的问题,你能找到它吗? A:这个不显眼的问题就是使用了 gets() 方法。此方法接受一个string类型参数,但是却没有检测此数值是否 有足够的空间来拷贝数据。所以这里我们一般用 fgets() 方法将来的更好。...

2016-03-06 21:56:38 450 0

原创 静态库与动态库及交叉编译总结及学习较底层编程:动手写一个C语言编译器

C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。   什么是库 库是写好的现有的,成熟的,可...

2016-03-06 20:25:57 5673 0

原创 简易C/C++日志代码实现

C/C++没有标准的日志库,很多人使用printf直接代替。但它有个缺点,就是不能对输出信息进行分级控制。使用log4cpp等似乎太重量级了。这里我给一个我自己经常使用的几个简单的日志函数 [cpp] view plain copy #inclu...

2016-03-06 19:10:58 766 0

原创 跨平台C语言开源库总结

提供跨平台的C语言库,各类C、C++程序都可以用到其中的东西,已支持AIX、HP-UX、Solaris、FreeBSD、Linux、Mac OS X和Windows操作系统  本人辛苦了四年,颠覆多次,终成这个发布版,现在作为unix-center的开源项目,任何非册用户进入此链接都可以下载  有...

2016-03-06 18:41:36 5821 0

原创 跨平台C、C++代码注意的事项及如何编写跨平台的C/C++代码

在我们的开发中,跨平台的需求越来越强烈,如何保持C/C++代码能在多个平台上编译,是一个比较值得研究的问题。关于跨平台的文章网上很多,跨平台的库网上也很多。那么我从自己的跨平台开发经验谈一谈自己的心得,希望对大家能够起到一定的作用。主要涉及到Windows和linux两个操作系统。 1、  关于...

2016-03-06 18:32:12 10931 1

原创 tcp协议数据传输“粘包”分析

这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一 .两个简单概念长连接与短连接: 1.长连接     Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。 2.短连...

2016-03-06 18:31:32 482 0

原创 协议栈的基本技术

现代数字通信技术让我们的生活发生了彻底地改变,而通信协议无疑是这一改变的始作俑者。硬件有自己的通信协议,比如pci总线、usb总线、i2c总线等等。软件也有自己的协议栈,无线的3gpp、gprs,有线的tcp/ip协议栈、atm协议等等。基于物理层的协议,很大程度是由芯片完成的,但是涉及到交换路由...

2016-03-06 18:24:48 410 0

原创 成功部署OpenStack的十个小技巧

成功部署OpenStack的十个小技巧 作者 谢丽 发布于 2015年1月30日 | 分享到: 微博 微信 Facebook Twitter 有道云笔记 邮件分享 稍后阅读 我的阅读清单 OpenStack为用户带来了诸多好处。使...

2016-03-06 18:09:24 424 0

原创 java千万级别数据生成文件思路和优化

一年前写过一个百万级别数据库数据生成配置xml文件的程序,程序目的是用来把数据库里面的数据生成xml文件.程序可以配置多少文件生成到一个文件中去.               程序刚开始设计的时候说的是最多百万级别数据,最多50W数据生成到一个xml文件里面去,所以在做测试的时候自己也只是造...

2016-03-06 18:07:57 3866 0

原创 OpenStack云计算快速入门之三:OpenStack镜像管理

第三部分 OpenStack镜像管理 一、简介 很多源都有为OpenStack已经编译好的各种镜像了,您可以直接下载并通过使用这些镜像来熟悉OpenStack。 不过如果是为生产环境进行部署的话,您一定需要构建含有定制软件或配置的镜像文件。不要着急,本章将引领您完成几种较为流...

2016-03-06 18:05:32 606 0

原创 多路复用的server模型

多路复用I/O之server模型   主要是关于select()这个函数:  其原型是:int select(int n,fd_set *read_fds,fd_set *write_fds,fd_set   *except,struct timeval *timeout);  ...

2016-03-06 18:04:47 254 0

原创 OpenStack云计算快速入门之二:OpenStack安装与配置

第二部分 OpenStack安装与配置 一、引言 本章内容讲解如何在3台物理机上搭建最小化云平台,这3台机器分为称为Server1、Server2和Client1,之后的各章也是如此。Server1承载着Nova、Glance、Swift、Keystone及Horizon(...

2016-03-06 18:03:55 511 0

原创 OpenStack云计算快速入门之一:OpenStack及其构成简介

第一部分 OpenStack及其构成简介 一、云计算     云计算是一种计算模型,它将诸如运算能力、存储、网络和软件等资源抽象成为服务,以便让用户通过互联网远程享用,付费的形式也如同传统公共服务设施一样。因需而定、提供方便、动态改变和无限的虚拟化扩展能力是云计算的几个重要...

2016-03-06 18:02:57 309 0

原创 一步一步教你安装openstack

openstack,安装的门槛比较高,而且相当麻烦,很多的安装文档作者省了不少安装步骤。这对初学的人带来了很大的麻烦,也许作者轻易节省一步,就会创成后面的安装失败。而且初学者由于对openstack不是很了解,错误无法排查,因此很多人都在中途放弃对openstack的学习。其实有一个安装工具可以快...

2016-03-06 18:02:05 839 0

原创 OpenStack 部署运维实战

OpenStack 部署运维实战 本文为您介绍了网易公司基于 OpenStack 开发的一套云计算管理平台,以及在开发、运营、维护过程中遇到的问题和经验分享。网易作为大型互联网公司,IT 基础架构需要支撑包括生产、开发、测试、管理等多方面的需要,而且需求和请求的变化几乎每天都存在...

2016-03-06 18:01:02 3661 0

原创 基于OpenStack的私有云开发部署实践

摘要:OpenStack作为目前十分主流的私有云平台,已经被很多组织应用于其内部。本文邀请了来自五八同城公司的高级云计算工程师赵龙,分享了他在企业内部设计、构建以及运维整个OpenStack系统的经验。 【编者按】OpenStack作为目前十分主流的私有云平台,已经被很多组织应用于其内部...

2016-03-06 17:59:57 954 0

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