- 博客(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
原创 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<j{d[i,k]+d[k+1,j]+pi−1pkpj},如果i=j,如果i<jd[i][j]={0,如果i=jmini≤k<j{d[i,k]+d[k+1,j]+pi−1pkpj},如果i<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关注的人