自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

he_0123的专栏

Talk is cheap. Show me the code.

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

原创 线程安全单例模式(C++)

线程安全单例模式(C++)饿汉模式 饿汉模式:即无论是否调用该类的实例,在程序开始时就会产生一个该类的实例,并在以后仅返回此实例。 由静态初始化实例保证其线程安全性,why?因为静态实例初始化在程序开始时进入主函数之前就由主线程以单线程方式完成了初始化,不必担心多线程问题。 故在性能需求较高时,应使用这种模式,避免频繁的锁争夺。#include<iostream>usin

2016-01-07 07:26:51 1104

原创 my vimrc

my vimrc""""""""" 文件编码配置 """""""""""""""""""""""""""""""""""""""""""""""""""""""set encoding=utf-8 " vim内部编码方式set fenc=utf-8 " 创建新文件时默认编码为utf-8, fileencoding指vim解析出来的当前文件编码set fileencodings=uc

2016-01-04 20:19:44 459

原创 IPC-信号灯

IPC-信号灯之生产者消费者有亲缘关系生产者消费者 子进程生成,父进程消费#include<stdio.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/sem.h>#include<stdlib.h>union semun{ int val; struct semid_ds *buf; unsign

2016-01-04 20:00:21 577

原创 IPC-管道

IPC-管道 问题描述:a进程把字符串发给b进程,b进程把字符串转换成大写后回发给a进程server.c#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>#include<fcntl.h>#include<string.h>#define SER

2016-01-04 19:57:48 427

原创 IPC-共享内存

IPC-共享内存父子进程之间#include<stdio.h>#include<stdlib.h>#include<sys/ipc.h>#include<sys/shm.h>#include<string.h>#define SHM_SIZE 1024int main(void){ int shmid = shmget(IPC_PRIVATE, SHM_SIZE, 0666|IPC

2016-01-04 19:43:50 368

原创 IPC-消息队列

IPC-消息队列IPC-消息队列父子进程之间非亲缘关系进程之间processcprocess2c管道消息队列的比较父子进程之间#include<stdio.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#include<stdlib.h>#include<string.h>struct msgbuf{

2016-01-04 19:41:33 394

原创 linux网络编程

linux网络编程linux网络编程网络编程相关协议1 TCPIP协议概述2 OSI参考模型及TCPIP参考模型3 TCP协议4 UDP协议5 协议的选择网络相关概念1 socket概念2 socket类型3 socket信息数据结构4 数据存储优先顺序的转换5 地址格式转化6 名字地址转化socket编程1 使用TCP协议的流程图11服务器端12客户端13一个阻

2016-01-04 18:03:34 3255

原创 一致性hash C++实现

一致性hash C++实现 知识标签: Consistent hashing, C++这两篇关于Consistent hashing的文章不错: 理想化的 Redis 集群 一致性hash和solr千万级数据分布式搜索引擎中的应用该代码是我偶然在别人github上找到的源码,真心不错,本人读后给它加了一些注释,以备参考学习 一致性哈希的功能被封装在模板类consistent_hash_

2015-04-26 15:30:39 1918

原创 KMP算法

KMP算法 问题描述:给定字符串A和其子串B, 在A中查找B,返回其下标 已给出BF解法和KMP解法#include<stdio.h>#include<string.h>#include<assert.h>/* 简单BF算法 */int BF(const char *str, const char *substr){ assert(str && substr);

2016-01-04 21:04:18 442

原创 字符串转码

转码:utf-8和gbk 问题描述:字符串编码的互转main.c#include<stdio.h>#include<locale.h>#include<stdlib.h>#include<string.h>/** @brief 转码:utf-8到gbk* @param gbkStr 转码结果存放地址* @param srcUtf8Str 源字符串* @pa

2016-01-04 20:58:04 582

原创 火车售票-线程3种实现

火车售票 分别用互斥锁、条件变量、信号灯;用到线程火车售票-互斥锁#include<stdio.h>#include<pthread.h>pthread_mutex_t mutex;int ticketCount = 20;void *saleWindow1(void *args){ while(1) { pthread_mutex_lock(&mutex

2016-01-04 20:47:12 919

原创 生产者消费者-线程-链表-队列实现

生产者消费者-线程-链表-队列实现链表实现#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<unistd.h>pthread_mutex_t lock;pthread_cond_t cond;struct node{ int iValue; struct node *next;}*head =

2016-01-04 20:06:20 603

原创 使用setitimer动态刷新终端显示时间

功能实现:使用真实计时器自动刷新终端,显示当前时间main.c#include<stdio.h>#include<stdlib.h>#include<sys/time.h>#include<time.h>#include<signal.h>void sighandler(int signo){ time_t tt; time(&tt); struct tm *cu

2015-06-22 11:45:37 678

原创 利用sigpending,sigismember检测信号是否被挂起

利用sigpending,sigismember检测信号是否被挂起

2015-06-21 22:40:29 1876

原创 sigaction实现信号处理并能成功read

sigaction实现信号处理

2015-06-21 16:38:52 671

原创 ls的简单实现

linux下ls命令的简单实现

2015-06-19 22:14:17 575

原创 iconv Linux下编码转换

iconv Linux下编码转换 知识标签:linux, iconv, 编码 有时程序运行时会用到编码转换,这时就用到iconv的3个函数 特写了一个测试小代码以作备忘iconv3个函数原型 iconv_t iconv_open(const char *tocode, const char *fromcode); size_t iconv(iconv_t cd,

2015-05-08 01:44:21 650

原创 未初始化指针作为实参的两种错误总结

未初始化指针作为实参的两种错误总结 知识标签:指针, 错误, 传参, 测试 这个程序本是我做搜索引擎项目时出现的类似错误 现在我写了一个测试小程序,以作测试code#include<iostream>//发生段错误,p2指向空,p2[0]访问了不存在的内存//这种错误编译能通过,运行时出现。很容易找到void func2(char* p2){ char ch = 'a';

2015-05-08 01:31:03 3639

原创 C++ priority_queue用法

C++ priority_queue用法 知识标签:STL, adapter, C++code#include<iostream>#include<queue>#include<string.h>struct node{ //默认比较方式 friend bool operator<(node n1, node n2) { return n1.pri

2015-05-08 01:22:01 472

原创 我的排序

我的排序第一个: 堆排 知识标签: heap, sort, algorithm 该代码实现了用大顶堆排序、向大顶堆插入元素、删除大顶堆堆顶元素大顶堆code#include<iostream>void adjustup(int A[], int k){// 多次向上调整以第k个元素开始的子树,直到符合大顶堆的要求 A[0] = A[k]; int i = k/2;

2015-05-02 17:09:13 305

原创 矩阵连乘

矩阵连乘 知识标签:DP,algorithm推导公式d[i][j]={0mini≤k&lt;j{d[i,k]+d[k+1,j]+pi−1pkpj},如果i=j,如果i&lt;jd[i][j]={0,如果i=jmini≤k&lt;j{d[i,k]+d[k+1,j]+pi−1pkpj},如果i&lt;jd[i][j]=\begin{cases}0& \text{,如果i...

2015-04-27 22:17:52 620

原创 小代码、小算法

我喜欢的小代码、算法集锦第一个question Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at th

2015-04-27 17:54:56 696 1

原创 最小编辑距离

最小编辑距离 知识标签:DP, algorithm, 字符串问题: 有字符串a和字符串b,对串a每次进行增删改一个字符,使之转变成串b,求最小操作数,即最小编辑距离分析: DP问题 设i为a下标,j为b下标,edit为编辑距离,DP公式如下: 当i == 0 && j == 0时,edit(i, j) == 0 当i == 0 && j > 0时,edit(

2015-04-26 20:56:19 465

原创 crc_optimal----boost学习笔记

crc_optimal—-boost学习笔记 知识标签 : boost, crc, C++boost/crc.hpp中可查到//Bits常选32或64,表示生成CRC32或CRC64校验码 template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, BOOST_CRC_PARM_TYPE InitRem, BO

2015-04-25 17:05:32 1171

原创 hashtable模板的简单实现(二)

hashtable模板的简单实现转载注明出处 知识标签:hashtable tamplate C++ 函数指针本程序使用线性探测法 数学递推公式为: Hi = ( H(key) + di ) % m Hi表示发生冲突时第i次探测的散列地址 H(key)表示根据key值第一次获得的散列地址 di为增量序列,本程序取di = 1, 3, 5, 7… m为散

2015-04-24 20:11:58 399

原创 hashtable模板的简单实现

hashtable模板的简单实现 知识标签: hashtable, 模板, 函数指针代码中有注释,直接上代码:hashtable.h如下:#ifndef __HASHTABLE_H__#define __HASHTABLE_H__#include<vector>#include<list>template<typename T>class hashtable{ public:

2015-04-24 00:25:23 426

空空如也

空空如也

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

TA关注的人

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