自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (2)
  • 收藏
  • 关注

原创 redis 实现价格相同时间优先 排行榜

需求:多人竞价, 实时获取竞标价格排行榜, 相同价格根据时间优先排序Redis 提供了按分数进行排序的有序集合。 比如在游戏里面,充值竞价排行,用默认的Redis 实现就可以达到需求。 但是,比如竞价排行,大家都是出价10元,谁先到谁第一。Redis 默认实现是,相同分数的成员按字典顺序排序(0 ~9 , A ~Z,a ~ z),所以相同价格排序就不能根据时间优先来排序。需要设计一个 【分数 =

2018-02-27 23:44:57 3198

原创 mac 上一些很棒的软件

使用mac 也有一年多了, 个人喜爱倒腾, 见到很棒的软件就跃跃欲试。 目前使用了几款不错的软件,分享出来。Alfred 这软件基本算是每天都会用的软件, 解决了macos 开软件困难的问题。 这款软件非常实用,适合各类实用mac 人群,极大的提高了mac 使用效率 关于Alfred 使用方法,下面这篇文章中有详细说明Alfred 效率

2018-01-28 17:08:20 1845 1

原创 安全HTTP--HTTPS

HTTPS 是最常见的HTTP安全版本, 以前常常使用,只明白HTTPS中的S是 SSL/TLS意思,而对其技术原理却不是很清晰。 在查阅一定的书籍和文章后,总结如下。互联网的通信安全,建立在SSL/TLS协议之上。 作用不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。窃听风险(eavesdropping

2018-01-28 16:43:34 1344

转载 蓄水池算法

1.给出一个数据流,这个数据流的长度很大或者未知。并且对该数据流中数据只能访问一次。请写出一个随机选择算法,使得数据流中所有数据被选中的概率相等。应用场景有一个网页抓取器每秒钟抓取一个网页,定义一个API,每次调用的时候要等概率的从目前已经抓取的网页中随机选取一个,应该怎么实现?后台开发中一个服务经常会打出很多log日志,从众多的而且还在不断产生的log 文件中,要等概率的从目前产生的log 中

2016-08-13 15:28:28 630

原创 SIGPIPE 信号

当服务器close 一个连接时,若Client 端接着发数据。根据TCP协议的规定,Client 端会受到一个RST响应, client 再往这个服务器发送数据时,系统会发出一个SIGPIPE 信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE 信号的默认执行动作是terminate(终止,退出),所以client 会退出。 若不想客户端退出可以把SIGPI

2016-08-04 23:28:32 542

原创 C++后端开发的一些工具

首先是构建工具,工欲善其事,必先利其器!一个好的构建工具可以省去好多麻烦,让人专注于开发。 构建工具我首推腾讯的typhoon blade 配置简单,上手相当快。非常适合编写大型项目。虽然腾讯将这个工具开源了,不过好像知道的人并不多。 Blade 是一个现代构建系统,期望的目标是强大而好用,把程序员从构建的繁琐中解放出来。 Blade主要定位于linux下的大型C++项目,密切配合研发流程,比

2016-08-04 23:23:47 4110 1

原创 LRU cache

class LRU{ public: private: int32_t capacity; list<int> l1; map<int, int> cache; map<int, list<int>::iterator> pos;}

2016-08-04 22:34:08 329

原创 静态链接库 VS 动态链接库

动态链接共享库与静态链接库 比较 静态链接库的优点(.a/.lib) 代码装载速度快,指定速度略比动态链接库快只需要保证在开发者计算机中有正确的.LIB 文件,在以二进制形式发布程序时,不需要考虑在用户计算机上.LIB文件是否存在及版本问题,可避免DLL hell 等问题 静态库对函数库的链接是放在编译时期完成的。 程序在运行时与函数库再无瓜葛,移植方便静态库的明显缺点: 1.需要定期的维护

2016-08-03 22:55:41 332

原创 线程安全的singleton

以前面试的时候经常被问到singleton, 以前不明觉厉, 觉得不太理解singleton 的重要性。工作中,却发现singleton这个设计模式,在工程中广泛应用。下面给出两种singleton 模式一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。 需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread

2016-08-01 23:28:57 446

原创 多线程编程--- 线程池 threadpool

很多公司里,雇员通常会在办公室度过他们的办公时光(偶尔也会外出访问客户或供应商),或是参加贸易展会。虽然外出可能很有必要,并且可能需要很多人一起去,不过对于一些特别的雇员来说,一趟可能就是几个月,甚至是几年。公司要给每个雇员都配一辆车,这基本上是不可能的,不过公司可以提供一些共用车辆;这样就会有一定数量车,来让所有雇员使用。当一个员工要去异地旅游时,那么他就可以从共用车辆中预定一辆,并在返回公司的时

2016-08-01 00:06:50 436

原创 多线程编程-- 线程安全的queue II

上一篇文章中使用std::mutex 和 条件变量 std::condition_variable 实现了一个线程安全的队列。这个队列是没有边界的, 也就是允许插入无限多的元素的,事实上这是不可能的, 当元素过多时候,插入元素会失效。这是很危险的一种行为。下面来实现一个有边界的线程安全的队列 BoundedBlockingQueuetemplate <typename T>class Bounde

2016-07-31 23:40:08 417

原创 多线程变量--- 线程安全的queue

线程安全的queue首先给出std:queue 接口template <class T, class Container = std::deque<T> >class queue {public: explicit queue(const Container&); explicit queue(Container&& = Container()); template <class A

2016-07-31 15:14:46 777

原创 多线程编程---同步并发操作

线程同步, 简单的说,就是在第一个线程完成前,需要等待另一个线程执行完成。通常情况下,线程会等待一个特定事件发生,或者等待某一条件达成(true).等待一个事件或者其他条件 假设你在旅游,而且正在一辆在夜间运行的火车上。在夜间,如何在正确的站点下车呢?一种方法是整晚都要醒着,然后注意到了哪一站。这样,你就不会错过你要到达的站点,但是这样会让你感到很疲倦。另外,你可以看一下时间表,估计一下火车到达目

2016-07-31 14:23:31 3356

原创 多线程编程-- 线程安全的栈 stack

首先看看 std::stack 容器的实现template<typename T,typename Container=std::deque<T> >class stack{public: explicit stack(const Container&); explicit stack(Container&& = Container()); template <class Al

2016-07-31 10:47:40 9558

原创 多线程编程 -- 线程安全的链表

互斥量Mutex互斥量本质上是一把锁,在访问共享资源钱对互斥量进行加锁,访问完成之后释放互斥量的锁。 pthread_mutex_t , 使用之前,必须首先对初始化对互斥量进行加锁,调用pthread_mutex_lock 如果互斥量已经上锁,则线程将阻塞知道互斥量被解锁如果不希望被阻塞,它可以使用pthread_mutex_trylock 尝试对互斥量进行加锁。如果互斥量处于未锁住状态, 那

2016-07-31 08:51:50 10276

原创 多线程编程 RW_LOCK 读写锁

RW锁 读写锁,也叫共享独占锁 互斥量 要么是锁住状态,要么是不加锁状态,而且一次只有一个线程可以对其加锁。读写锁可以有三种状态,读模式下加锁状态,写模式下加锁状态,不加锁状态。一次只有一个线程可以占有写模式的读写锁,但是多个线程可以同时占有读模式的读写锁。和互斥量一样,读写锁在使用之前必须初始化,在释放他们底层的内存前必须销毁。要在读模式下锁定读写锁,需要调用pthread_rwlock_

2016-07-28 23:51:30 2021

原创 多线程编程 -- MutexLock

互斥量Mutex互斥量本质上是一把锁,在访问共享资源钱对互斥量进行加锁,访问完成之后释放互斥量的锁。 pthread_mutex_t , 使用之前,必须首先对初始化对互斥量进行加锁,调用pthread_mutex_lock 如果互斥量已经上锁,则线程将阻塞知道互斥量被解锁如果不希望被阻塞,它可以使用pthread_mutex_trylock 尝试对互斥量进行加锁。如果互斥量处于未锁住状态, 那

2016-07-28 23:16:59 2715

原创 服务器性能测试

最近看了coolshell 上面一篇文章,《性能测试应该怎么做?》 原文链接如下:http://coolshell.cn/articles/17381.html?from=groupmessage&isappinstalled=0里面提到三个观点平均值不靠谱,而是应该使用百分比分布来统计响应时间(latency)要和吞吐量(Thoughput)挂钩响应时间要和成功率挂钩以及严谨测试服务器性

2016-07-10 23:04:58 6777

原创 RPC 工具 --Thrift(二) Thrift 异步模式

Thrift异步模式我们广泛使用thrift作为我们内部接口调用的RPC框架,而且基本上都是使用多线程请求等待应答的同步模式 。但是在一些情况下(例如大数据量同步),如果可以使用异步模式,可以优化程序结构和提高模块性能。thrift 有提供一套异步模式模式供我们使用,我们跟往常一样来编写一个thrift 协议文件。namespace cpp exampleservice Twitter {

2016-07-10 11:15:40 9860 2

原创 RPC 工具--Thrift 框架 (一)

RPC 工具 ThriftRPC(Remote Procedure Call——远程过程调用)最近的项目用到的Thrift 框架, 在网络上零零散散找到一些资料,在这里总结归纳下。Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生

2016-07-09 16:42:32 1001

转载 Matlab中保存图像时 图形窗口大小的控制

Matlab中保存图像时,图形窗口大小的控制首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie。screen下面是figure。figue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。figure下面是axes。axes是那个窗

2014-10-30 16:01:36 4105

转载 应用小波图像去噪的Matlab 实现

小波图像去噪的方法大概分为3类1:基于小波变换摸ji

2014-10-30 14:31:20 14908 5

转载 如何使用数组参数

如何使用数组参数如果一个函数以一维数组为参数,我们可以这样声明这个函数void func(int* a) ;void func(int a[]) ;void func(int a[3]) ;实际上,这三种形式是等价的,在使用数组做参数时,编译器会自动将数组名转换为指向数组第一个元素的指针,为什么呢?这要从参数的传递方式说起,参数有三种传递方式,按值传递,按指针传递,按引

2014-10-19 16:02:01 457

转载 三种方法 确保 函数的操作 不超过 数组实参的边界

三种方法 确保 函数的操作 不超过 数组实参的边界1.在数组本身放置一个标记来检测数组的结束。“C风格的字符串,它是一个字符数组,并且以空字符null 作为结束的标记。处理C风格字符串程序就是标记停止数组元素的处理。2.第二种方法是传递指向数组第一个和最后一个元素的下一个位置的指针。调用这个版本的函数需要传递两个指针,一个指向要输出的第一个元素,另一个则指向最后一个

2014-10-11 16:22:53 516

转载 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区  栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。  堆,就是那些由 new 分配的

2014-10-11 16:20:55 423

转载 VS 2010 设置堆栈大小

vs2010设置堆栈大小在解释原因前我们先看一下一个由C/C++编译的程序占用的内存分为几个部分:1、栈区(stack segment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的是1M,总之

2014-10-11 16:19:32 1830

转载 字符串操作

字符串操作     http://www.cplusplus.com/reference/stringModifiers:operator+=Append to string (public member function )appendAppend to string (public member function )push_backAppend

2014-10-11 16:19:18 454

veilog数字系统设计

对数字系统设计的学习很有帮助,基于verilog编写,对学习嵌入式的方面的可以仔细参考下。

2012-07-23

Nuhertz Filter Solutions 10.0

滤波器设计软件,对于设计模拟数字电路作用很大。方便使用。

2012-04-18

空空如也

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

TA关注的人

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