- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 C可终止定时器
由于已经实现过C++的版本,这篇文章就不展开论述实现的原理该定时器利用pthread_cond_timedwait方法实现了定时器的中断,具体原理可转至C++可终止定时器.代码实现timer.h#ifndef __TIMER_H__#define __TIMER_H__#include <pthread.h>typedef void (*callback) (void);typedef struct timer_t { pthread_t tid;
2020-09-22 16:20:42
573
原创 C++可终止的定时器实现
定时器是我们日常开发需要经常使用的功能,今天在有空闲的时候,手动实现了一个简单版本的C++异步定时器。`简单功能1、启动任务2、终止任务3、支持lambda表达式的回调函数#include <iostream>#include <atomic>#include <condition_variable>#include <thread>#include <chrono>using namespace std::chrono_
2020-09-22 11:45:26
2342
4
转载 10个好用的Erlang工具
10 Essential Erlang Tools for Erlang DevelopersIntroductionIn this tutorial, I'll cover the tools that I use the most in my day-to-day life as an Erlang developer. All or most of the topics that make ...
2018-04-19 13:59:44
2663
原创 使用Git管理svn项目代码
如果你们公司的项目代码是用svn来进行统一管理的,但是你又想使用git的开分支功能进行本地管理的,那么以下的介绍将会给你些许提示(如果有更好的解决办法,欢迎大家提出)情景描述:我们开发人员的一个理想开发的流程,就是【序列化】开发一个个需求,然后与前端联调,差不多就提交到svn代码。但是,实际上我们可能遇到的不一定都是序列化的。以下内容是为了说了本地使用git分支的好处,若知道可以直接...
2018-04-15 22:41:15
3142
原创 麻将胡牌算法n*AAA+m*ABC+DD实现时间复杂度O(n*2)
麻将胡牌算法实现——时间复杂度O(n*2)本文有博主在一家棋牌公司写的胡牌算法总结,如果有错误的地方,欢迎矫正:胡牌规则(不包括十三幺)
2016-10-26 17:40:53
8314
原创 event_base简介
event_base 本章主要来源《libevent参考手册(中文版)》。 使用 libevent 函数之前需要分配一个或者多个 event_base 结构体。每个 event_base 结构 体持有一个事件集合,可以检测以确定哪个事件是激活的。如果设置 event_base 使用锁,则可以安全地在多个线程中访问它 。然而,其事件循环只能运行在一个线程中。如果需要用多
2016-09-18 21:39:26
737
原创 高性能网络编程-反应堆模型(reactor)
reactor反应堆模式对反应堆构架模式的分析,我们使用参考文献的分析风格,着重分析意图、上下 文、问题、解决方案、结构和实现 6个方面的内容。意图在事件驱动的应用中,将一个或多个客户的服务请求分离(demultiplex)和事件分发器 (dispatch)给应用程序。上下文在事件驱动的应用中,同步地、有序地处理同时接收的多个服务请求。问题 在分布式系统尤其是服务器这一类事件驱动应用中,虽然这
2016-09-13 15:52:12
6305
1
原创 Epoll水平触发(Level Triggered)工作模式和边缘触发(Edge Triggered)工作模式区别
注意:此文章适合对Epoll有初步了解的同行观看,如果还没了解epoll工作模式的同行,建议看一下链接:Epoll多路I/O复用技术LT模式(默认方式)LT模式即Level Triggered工作模式。 与ET模式不同的是,以LT方式调用epoll接口的时候,它就相当于一个速度比较快的poll,无论后面的数据是否被使用。 LT(level triggered):LT是缺省的工作方式,
2016-09-12 16:08:50
4249
原创 输出1-100,不使用循环 goto 递归
今天去面试CVTE二面,面了这样一道题目,当时没有想出来,后来一回来就想到了,分享给大家#include<iostream>using namespace std;class A{public: A() { cout << i++ << endl; } static int i;};int A::i = 1;class MyClass
2016-09-09 16:34:27
985
转载 有101枚硬币,100真,1假,若称两次,怎么求出假币
把101个硬币平均分成三份,分别是:33,33,35,把两堆33个放在天平上称,1、如果平衡,说明这66个都是真的。然后从这两堆共66个中取出35个,与第三堆的35个分别放在天平的左右盘中称,这样,第三堆所在的天平的那一端的轻重就是假币的轻重情况。 2、如果两 个33放在天平上不平衡,说明第三堆的35个是真的。取下轻的一端的33个,从第三堆中取33个放在上面,如果平衡,说明取下的一堆中
2016-08-27 14:25:20
2231
翻译 junit
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
2016-08-23 14:33:43
545
转载 Apache通用日志工具commons-logging和Log4j使用总结
前言 在程序开发中,有时候为了跟踪代码的运行情况,需要在程序代码中加入一些打印代码运行情况的日志代码,在早期的C语言中,一般都是用printf()函数来实现这些信息的输出,在Java语言中用System..out.println()来实现控制台信息输出。这种输出的信息功能非常有限,如果要输出到文件,就很麻烦。并且,如果以后想去掉(不再输出)这些信息,还需要手动的一行一行去改。当然,
2016-08-23 14:26:53
1095
转载 tcp粘包分析
一 .两个简单概念长连接与短连接:1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2.短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点 通讯,比如多个Client连接一个Server. 二 .什么时候需要考虑粘包
2016-08-23 11:17:37
486
1
原创 ASN.1抽象语法标记和ber编码规则
ASN.1抽象语法标记(Abstract Syntax NotationOne) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。 ASN.1是描述在网络上传输信息格式的标准方法。它有两部分:一部分描述信息内数据
2016-08-22 10:30:50
3123
转载 Linux网络编程:原始套接字编程及实例分析
Linux网络编程:原始套接字编程及实例分析一、原始套接字能干什么?二、原始套接字编程三、原始套接字实例:MAC头部报文分析
2016-07-29 11:25:11
4242
转载 Ubuntu 14.04 安装mysql 5.6
安装msyql1. 升级apt-getsudo apt-get update2. 安装 mysql-client-core-5.6sudo apt-get install mysql-client-core-5.63.安装mysql-client-5.6sudo apt-get install mysql-client-5.6
2016-06-20 23:42:26
1042
原创 手动打造自己的系统启动U盘并且重装系统
核心提示:1. 首先我们需要找到一个4GB大小的U盘然后将它插在电脑上。 2. 打开屏幕左下角的开始菜单,然后运行cmd命令,紧接着你会看见一个控制窗口弹出。 3. 然后在窗口中输入以下内容: * 首* 首先键入‘diskpart’命令;* ‘list disk’:敲入该命令系统将自动列出所有电脑上发现的磁盘,包括我们刚刚插上去的U盘。* 此时可以看到U盘所对应
2016-06-08 14:29:01
935
原创 《编程之美》中国将帅问题
题目: 中国象棋里面双方的“将”和“帅”各自呆在自己的九宫格里,一步只能横移或纵移一格,而且双方不能见面(既不能处在同一条纵线上)。在残局时有的人会用这一规则走出绝妙杀招。假设一方的“将”为A,另一方的“帅”为B,现在求双方所能出现的所有合法位置,所需变量只能用一个字节来保存。分析:两个象棋,每个棋子有9个位置,一个字节有八个二进制位,假设平均四个位,2的4次方是1
2016-06-06 23:17:10
391
原创 《编程之美》买书问题——动态规划
问题描述: 在节假日的时候,书店一般都会做促销活动。由于《哈利波特》系列相当畅销,店长决定通过促销活动来回馈读者。上柜的《哈利波特》平装本系列中,一共有五卷。假设每一卷单独销售均需8欧元。如果读者一次购买不同的两卷,就可以扣除5%的费用,三卷则更多。假设具体折扣的情况如下: 本数折扣25%
2016-06-05 23:37:07
4082
1
原创 C++实现适配器模式(手动实现绑定功能)
首先要先理解什么是适配器模式适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适用场景:1、已经存在的类的接口不符合我们的需求;2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;3、在不
2016-06-04 23:26:13
1076
原创 《编程之美——微软技术面试心得》一摞烙饼的排序初体验
《编程之美》读书笔记:1.3 一摞烙饼的排序问题: 星期五的晚上,一帮同事在希格玛大厦附近的“硬盘酒吧”多喝了几杯。程序员多喝了几杯之后谈什么呢?自然是算法问题。有个同事说:“我以前在餐馆打工,顾客经常点非常多的烙饼。店里的饼大小不一,我习惯在到达顾客饭桌前,把一摞饼按照大小次序摆好——小的在上面,大的在下面。由于我一只手托着盘子,只好用另一只手,一次抓住最上面的几块饼,把它
2016-06-02 21:07:46
848
原创 vector容器介绍及基本API
今天给大家带来的是一种STL容器,类似数组的一种C++容器——vector。进入主题:什么是vector? vector是一种单口的容器,vector所指的内容是一片连续的空间,支持随机访问(Random Access),此外,vector容器的空间是动态增长的。vector功能基本如图1-1所示图1-1注意: 所谓动态增加大小,并不是在原
2016-06-02 20:53:35
4051
1
原创 广度优先搜索(BFS+STL queue)实现
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。整体思路:从起点向四周同时前进,得到
2016-05-21 15:05:47
4472
原创 棋盘覆盖问题
棋盘覆盖问题:问题描述:现在有一个大小的棋盘,在棋盘内部有一只特别的棋子,输入的坐标为X和Y。要求尝试用4种不同类型的骨牌将棋盘覆盖,要求,骨牌之间不得重叠,并且骨牌不得覆盖特殊棋子,每个骨牌占用3个单位大小,形状如下。棋盘假设如下:思路分析:对于这种题目,我们先从k=0开始分析:当k=0的时候,棋盘大小为1,整个棋盘被特殊棋子覆盖。当k=1
2016-05-15 09:19:54
2275
原创 C程序内存泄露检测工具
今天给大家带来一款检测C程序内存泄露的一款实用工具——memwatchmemwatch简介 MEMWATCH 由 Johan Lindh 编写,是一个开放源代码 C 语言内存错误检测工具。只要在代码中添加一个头文件并在 gcc 语句中定义了 MEMWATCH 之后,您就可以跟踪程序中的内存泄漏和错误了。MEMWATCH 支持 ANSI C,它提供结果日志记录,能检测双重释放(
2016-05-09 10:09:47
2609
原创 浅谈链表以及链表基本操作
一、 什么是链表1、 概念 链表是一种极其常用的数据结构,它通过指针将一片片独立分散的堆内存节点,连接成一个数据链。从而更加合理的运用内存中分散的内存,同时链表也是很多数据结构的基础,比如说链栈的实现,树的实现(红黑树,二叉搜索树,B_树,…)都用到了链表这一基本数据结构。2、 链表与数组的区别和联系 如图例子所示,
2016-05-06 20:58:19
628
原创 动态规划——最少硬币问题
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 之前我在动态规划(dynamic programming)原理抛出了一个最少硬币问题。接下来,在这篇文章,我们将会对硬币问题进行一个全面的解析,并尽可能的解释动态规划的原理,希望读者们...
2016-05-02 20:06:35
29658
5
转载 动态规划常见问题所涉及的公式(转载)
-----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2. 资源问题2 ------01背包问题 F[I,j]:=max(f[i-1,j-v[i]]+w[i],f[i-1,j]); 3. 线性动态规划1 -----朴素最长非降子序列 F[i]:=max{f[j]+1} 4. 剖分问题1 -----石子合并
2016-04-30 20:05:59
3226
原创 动态规划(dynamic programming)原理
首先声明!鉴于之前有一段时间经常有朋友问我一些DP的问题,趁着现在有点时间,我在网上找了很多关于DP的资料,也希望大家可以通过这篇文章有一些收获! 引入问题:现在我有1块,3块,5块的硬币,假设我要凑成n块,那么我要怎么凑硬币,才能够保证凑成n块钱,并且硬币数目是最少的? 对于没有DP概念的读者们来说,第一想到的办法要么是贪心法(暴力破解),要么就是回溯法。但是使用贪心法每
2016-04-30 17:21:02
4099
原创 八皇后求解方法(递归求解)
问题描述 国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 思路分析: 递归求解,思路跟深度搜索一致,一个点往八个方向走,当不能走的时候就回溯。为每一个位置都设置了一个bool值即bool数组来判断他成功否,然后还通过调用Judge
2016-04-10 01:11:07
910
原创 HEAP CORRUPTION DETECTED:after Normal block错误方法解决
HEAP CORRUPTION DETECTED:after Normal block内存释放错误解决方案以及分析
2016-04-10 01:04:09
14039
3
原创 HDU 2058 The sum problem
Problem DescriptionGiven a sequence 1,2,3,......N, your job is to calculate all the possible sub-sequences that the sum of the sub-sequence is M.InputInput contains multiple test cases. each cas
2014-12-05 16:09:42
538
原创 HDU 2047 阿牛的EOF牛肉串(第一次写博客)
题目描述Problem Description今年的ACM暑期集训队一共有18人,分为6支队伍。其中有一个叫做EOF的队伍,由04级的阿牛、XC以及05级的COY组成。在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点什么来纪念这段激情燃烧的岁月,想了一想,阿牛从家里拿来了一块上等的牛肉干,准备在上面刻下一个长度为n的只由"E" "O" "F"三种字符组成的字符串(可以只有其中一种或两种字
2014-11-25 17:39:06
771
memwatch内存泄露检测工具(内附在VS使用memwatch使用教程)
2016-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人