自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

转载 转载:为什么中国的程序员总被称为码农?

转载:为什么中国的程序员总被称为码农?实际上IT行业在中国并不是特别差的行业,而程序员的工资也并不低,但为什么中国的程序员总被称作码农或者说是苦逼的程序员?中国的程序员生活和欧美的有什么不一样?之前,研发频道曾发过《东方程序员怎么看西方程序员》和《西方同行眼中的东方程序员》这两篇文章。来自世界各地的程序员们各抒己见。或许,从上面两篇文章中也多少能得出“为什么中国的程序员总被称为码农?”下面是来自知乎

2017-06-19 21:13:12 529

转载 转载:深入理解STL源码(1) 空间配置器(allocator)

转载:深入理解STL源码(1) 空间配置器(allocator)在STL中,Memory Allocator 处于最底层的位置,为一切的 Container 提供存储服务,是一切其他组件的基石。对于一般使用 STL 的用户而言,Allocator 是不可见的,如果需要对 STL 进行扩展,如编写自定义的容器,就需要调用 Allocator 的内存分配函数进行空间配置。在C++中,一个对象的内存配置和

2017-06-05 08:03:51 512

原创 浮点数精度计算

浮点数精度计算单精度浮点数精度为7,双精度浮点数的精度为16. 这是计算机编程的常识。这里介绍一下7和16这两个数字是如何来的。 首先要说说浮点数的表示方法,根据 IEEE 754,任何一个浮点数的二进制形式可以写作V=(−1)S∗M∗2EV = (-1)^S * M * 2^E其中: S - 符号位(sign bit),0表示正数,1表示负数 M - 基数(Mantissa), 大于等于1,

2017-06-02 23:11:00 1192 1

转载 转载:你应该知道的浮点数基础知识

转载:你应该知道的浮点数基础知识一个有趣的实验本文从一个有趣而诡异的实验开始。最早这个例子博主是从 Stackoverflow上的一个问题中看到的。为了提高可读性,博主这里做了改写,简化成了以下两段代码:#include <iostream>#include <string>using namespace std;int main() { const float x=1.1; c

2017-06-02 22:34:44 381

原创 QT实现Digital Clock

QT实现Digital ClockDemo 实现DigitalClock类,该类继承自QLCDNumber,实现电子表的界面和逻辑,核心逻辑为借助QTimer,定时更新空间界面。以下为程序实现digitalclock.h#ifndef DIGITALCLOCK_H#define DIGITALCLOCK_H#include <QLCDNumber>class QTimer;class Digita

2017-05-23 19:44:11 533

原创 Json-c编写一个简单的 Json parser

Json-c编写一个简单的 Json parser分享一个使用 Json-c 编写的简单的 Json Parser:#include <json-c/json.h>#include <stdio.h>void print_json_value(const char* key, json_object *jobj) { enum json_type type = json_object_ge

2017-05-22 22:11:41 1778

原创 Json-c构建对象

Json-c构建对象这篇文章着重介绍 Json-c 中对象创建的 API 及其示例。Json 的数据类型包括 null, boolean, int, double, string, object, array。在 json-c 中定义为枚举体类型:enum json_type { json_type_boolean, json_type_double, json_type_i

2017-05-22 21:57:08 645 1

原创 Mac安装 Json-c

Mac安装 Json-c什么是 JSON ?JSON 的全称是 JavaScript Object Notation,是一种轻量级的数据交换格式。JSO N 与 XML 具有相同的特性,例如易于人编写和阅读,易于机器生成和解析。但是JSON 比 XML 数据传输的有效性要高出很多。JSON 完全独立与编程语言,使用文本格式保存。JSON 数据有两种结构: • Name-Value 对构成的集合,类

2017-05-18 22:49:08 2828 1

转载 转载:浅谈python类属性的访问、设置和删除方法

转载:浅谈python类属性的访问、设置和删除方法下面小编就为大家带来一篇浅谈python类属性的访问、设置和删除方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧类属性和对象属性我们把定义在类中的属性称为类属性,该类的所有对象共享类属性,类属性具有继承性,可以为类动态地添加类属性。 对象在创建完成后还可以为它添加额外的属性,我们把这部分属性称为对象属性,对象属性仅

2017-05-18 17:20:01 1093

原创 QT模拟实现网页登录界面

QT模拟实现网页登录界面常见的网络登录界面一般包括用户名 Lable 和编辑框,密码 Label 和编辑框,是否保存密码的 Check 按钮,以及确定登录和退出按钮组成,界面设计如下: 一般的登录流程如下:用户输入用户名和密码,有的可能会勾选保存密码选项;然后点击确定按钮向服务器发出登录请求;服务器收到请求后与数据库中存储的记录比较,存在则允许用户登入系统;客户端在收到确认后先将本次登录计入存

2017-05-17 20:08:28 7787

原创 Lua - Mac OS X开发环境搭建

Lua - Mac OS X开发环境搭建Lua是一种脚本语言,是由一家巴西的团队开发并维护,经常用于游戏开发的场合。点击这里了解更多关于 Lua的前世今生。这里介绍一下 Mac OS X下开发环境的搭建: 首先,下载安装包命令。命令 curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz解压 tar zxf lua-5.3.4.tar.gz

2017-05-09 21:22:50 518

原创 Pthread - 线程池(thread pool)实现

Pthread - 线程池(thread pool)实现线程池简介线程池在多线程编程中经常要用到,其基本模型仍是生产者/消费者模型,线程池一般由线程池管理器(ThreadPool),工作线程(PoolWorker),任务( Task),任务队列(TaskQueue)四部分组成,其中 线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务; 工作线程

2017-05-04 11:42:10 7831 1

原创 Pthread - 线程特定数据(thread-specified data)

Pthread - 线程特定数据(thread-specified data)在 Pthread 中,线程特定数据(thread-specified data,以下简称 TSD)是绑定由pthread_key_create()函数创建的 key 的属于调用线程自身的数据。简单地说就是一个全局变量可以被多个线程访问,但是在每个线程中该全局变量指向由本线程设定的值,而且每个线程都可以通过该全局变量访问到

2017-05-03 22:34:42 554

原创 Pthread - 互斥量(Mutex) 和 条件变量(Condition variable)

Pthread - 互斥量(Mutex) 和 条件变量(Condition variable)MutexMutex 全称 “mutual exclusion”,是一种实现线程同步的方法。 在访问共享资源时,Mutex 的作用如同一把“锁”。给定时间只有一个线程可以对 Mutex 加锁,其他线程必须等待当前线程解锁才能重新获取 Mutex。如此线程便可以依次访问共享资源。 通常Mutex 使用场景

2017-05-03 15:28:41 2199

原创 pthread-消费者/生产者模型实现

pthread-消费者/生产者模型实现消费者/生产者模型是多线程编程开发的常用模型,该模型通过平衡生产者线程和消费者线程的工作能力来提高程序整体的数据处理能力。 设计该模型要注意以下几项: - 资源池一般是有限的,访问资源是要加锁,访问完毕时记得解锁 - 生产者需要在资源池未满的情况下才能生产产品 - 消费者需要在资源池不空的情况下才能消费产品 - 设计时应考虑如何避免死锁问题 下面的例

2017-05-02 23:57:48 1416

原创 Pthread编程-设置/获取线程属性

Pthread编程-设置/获取线程属性文章介绍如何设置/获取线程属性。与线程属性相关的函数大都以 pthread_attr_*开头,pthread_attr_get*用于获取线程属性,pthread_attr_get*用于设置线程属性。 这里仅罗列一些比较常用函数: pthread_attr_init //初始化线程属性变量 pthread_attr_getstackaddr, pthr

2017-05-01 17:15:17 4698

转载 转载:算法的时间复杂度和空间复杂度-总结

原文链接:算法的时间复杂度和空间复杂度-总结        通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的

2017-05-01 12:55:33 292

转载 转载:浅析海量用户的分布式系统设计

原文链接:浅析海量用户的分布式系统设计我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ、微信、淘宝。那么,一个互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂?本文就是想从最基本的地方开始,探寻服务器端系统技术的基础概念。承载量是分布式系统存在的原因当一个互联网业务获得大众欢迎的时候,碰到的最明显的技术问题,就是服务器非常繁忙。当每天有

2017-05-01 11:51:06 534

原创 Pthread 开发-入门

Pthread 开发-入门在内存共享式的多处理器架构中,线程可用用于实现并行机制(parallelism)。然而由于历史原因,硬件供应商们的对线程的实现并不相同,使得开发者不得不考虑代码移植问题。对于UNIX系统,存在一套基于 IEEE POSIX 1003.1c 标准的标准 C 语言线程编程接口,这就是 Pthread。 Pthread 线程库主要分为三个主要部分:线程管理,互斥量,条件变量。共

2017-04-30 23:23:09 291

转载 转载:C语言中的空指针、空指针常量、NULL & 0

原文链接:http://www.linuxidc.com/Linux/2012-12/76249.htm什么是空指针常量(null pointer constant)? [6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is call

2017-04-27 00:44:03 407

转载 转载:基于C语言中野指针的深入解析

*原文链接:http://www.jb51.net/article/39692.htm“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用“野指针”的成因主要有两种: (1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创

2017-04-27 00:22:39 294

原创 Libevent 编程- 定时器事件(timer event)

Libevent 编程- 定时器事件(timer event)本文介绍Libevent 三种事件之一的定时器事件。 该事件可以用来注册定时事件和周期性事件。Libevent 根据所有定时器事件的最小超时时间来设置系统 I/O 的 timeout 值,当系统I/O 返回时,再激活就绪的定时器事件,如此 Timer 事件便可融合在系统 I/O 机制中。定时器事件的实现基于一种经典的数据结构-小根堆,相

2017-04-26 22:33:56 12041

原创 Libevent编程-捕获 signal

Libevent 是一个轻量级的开源高性能网络库,事件驱动(event-driven), 实现基于 Reactor 模式,网上学习资料众多,这里分享一下关于 signal 的处理。 首先给出 libevent 对 signal 的处理宏定义: evsignal_* macros Aliases for working with signal events #define evsigna

2017-04-24 21:34:41 1860

原创 Linux查看程序占用的端口-lsof

在作网络编程时,我们经常要知道程序打开的端口号。这里介绍一种简单的端口号查询命令-lsof和具体方法:首先,介绍一下 losf 命令。使用 man lsof查看lsof的帮助文档。这里截取一部分: NAME lsof - list open files DESCRIPTION Lsof revision

2017-04-24 07:52:49 2462

原创 MySQL 数据库编程-连接数据库

在做程序开发时,总免不了要和数据库打交道,在这里分享一个连接 ,查询MySQL 数据库的小程序:#include <stdio.h>#include <stdlib.h>#include <mysql/mysql.h>int main(){ char server[] = "localhost"; char user[] = "root"; ch

2017-04-22 23:14:22 472

原创 STL类指针容器container<class*> 元素clear 注意事项

在使用 STL 容器时, 涉及到 C++多态(polymorphism)和虚函数时,经常会遇到使用容器存储类指针,当你要删除某个元素或者(erase)或者清空容器(clear)时,直接调用 erase或 clear 函数,指针指向的内存并不会释放,也就是说,对象不会被析构,这时就会导致内存泄漏(memory leak)。 示例代码:#include <iostream>#include <li

2017-04-22 22:47:04 651

转载 转载:Segmentation fault到底是何方妖孽

转载一篇很不错的分析Linux “Segmentation fault”报错的文章   Linux上开发时最恼火的就是遇到“Segmetation Fault”错误。为什么这么说,很多人看到这个错误后心里第一反应是程序访问的非法的内存,导致其被操作系统强行终止。这固然没错,可这里有个比较模糊的概念了:什么叫“非法”的内存?   程序运行时,每个进程都有自己的虚拟地址,理论上说进程应该可以随便使用才对

2017-04-21 23:32:19 411

翻译 C++类的 explicit 关键字和隐式转换

C++类的 explicit 关键字和隐式转换explicit 关键字用于 C++的类定义中,其作用是禁止隐式转换和复制初始化操作: The explicit specifier specifies that a constructor or conversion function (since C++11) doesn’t allow implicit conversions or

2017-04-20 22:54:51 649

原创 C++ STL常用容器删除操作注意事項

C/C++程序员对STL 容器肯定不会陌生, 以下是对常用容器进行 erase 操作注意事项的总结:vectorvector 容器是用数组实现的, 它在内存是连续分布的.对它进行 insert 或 erase 操作涉及到对插入点或删除点后的元素进行移位, 所以插入点或删除点后的iterator 会失效. iterator erase( iterator pos );iterator erase(

2017-04-19 20:24:37 2716

原创 常用排序算法C++版小结

常用排序算法及其时间复杂度和空间复杂度代码来自网络和日常整理:#include <iostream>using std::cout;inline void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; }//AVG: O(n*n) WOREST: O(n*n), Space: O(1), Ascendvoid bubbleSort(int

2017-04-18 07:59:30 241

原创 C++枚举体知识点小结

C++枚举体类型小结总结一下最近碰到到枚举体相关的知识点: 首先说明一下定义,枚举体是一种数据类型,用于存储用户定义的数据集合,一个枚举体类型定义后, 它和整型数据类型如 int, long 等的用法类似. 定义枚举体时要注意每个枚举体成员的值必须是整型.否则有如下错误: enum en {a=3.7}; //expression is not a

2017-04-16 12:31:30 740

原创 Linux/ Unix 键盘检测程序

键盘检测程序最近在看Neil Matthew和Rick Stones的Beginning Linux Programming, 在 terminals 学到了如何检测按键的方法.话不多说先上代码:#include <unistd.h>#include <stdlib.h>#include <curses.h>#define LOCAL_ESC_KEY 27int main(){ i

2017-04-10 15:31:10 2169

原创 Windows隐藏工具栏并使程序窗口全屏显示

前几天用VS看代码时发现桌面空间不够,于是就打起了任务栏的主意,然而windows本身带的自动隐藏功能并不能很好的解决我的问题,因为当鼠标划过时,任务栏还会弹出.在网上也没有找到合适的解决办法,于是费了一天查资料,做出来了win32控制台应用,并且把程序添加到了右键菜单.

2016-04-02 23:41:18 2104 1

空空如也

空空如也

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

TA关注的人

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