自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菠萝生炒骨炝炒土豆丝

能把知识复述出来, 讲明白, 这才是真正的懂, 欢迎交流指正

  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 常见开源产品epoll网络事件模型分析(附200万QPS实现长连接echo server方案)

redis、thrift-noblocking-server、memcached、nginx等开源产品 四种不同场景下不同网络模型 分析

2015-09-07 23:32:02 3541 3

原创 volatile、内存屏障、Acquire&Release语义 三者的差别和关系(二) —— 之内存屏障

这篇博客是系列文章的第二篇, 主要讲一下内存屏障, 不会讲的很深, 但求明确理解和记住, 什么是内存屏障!1. 背景知识: CPU乱序执行这个背景知识很重要, 先讲为快, 在wiki百科上面, 关于CPU乱序执行的解释是这样的:In computer engineering, out-of-order execution (OoOE or OOE) is a paradigm

2014-03-26 22:44:58 2898 3

原创 MongoDb部署机器修改域名可能导致move chunk失败

MongoDb部署机器修改域名可能导致move chunk失败

2014-03-15 11:31:00 1213

原创 开放地址法无锁哈希表实现

这个是作者原文:  http://preshing.com/20130605/the-worlds-simplest-lock-free-hash-table/实现这个无锁的哈希表,最主要的技术要点在于:1、用了开放地址法实现哈希表,实际内存开销会大于拉链法2、用了CAS(compare and swap)语义实现小于等于8byte变量的原子操作本文的工作主要在于测试 (g

2014-01-24 20:13:55 1380

原创 线程安全的单例模型的演变与Double-Check-Locking的安全性

拜读了论文《C++ and the Perils of Double-Checked Locking》-- Scott Meyers and Andrei Alexandrescu September 2004发现原来一个简单的单例模型,还有如此多的文章,上面提到的这篇文章值得反复读,从中可以衍生出很多并行编程的知识。另外,C++11的内存模型和std::memory以及原子类,是我接下来

2014-01-15 21:37:52 1271

原创 反向传播神经网络的简单实现

先把代码放这里,后面再写字# coding=utf-8# 反向传播神经网络import numpy as npimport mathimport sysnp.random.seed(0)def sigmoid(x): return 1.0 / (1.0 + np.exp(-x))def dsigmoid(x): return x * (1 - x)

2018-01-28 17:08:54 581

原创 Remove Duplicates from Sorted List II 解答(有个比较特殊的case leetcode OJ没有覆盖)

昨天被考了一道数据结构题,当时的实现比较一般。回来翻看leetcode,果然是上面的题,遂解之。accept之后翻看discuss别人的解法,发现很多可以accept的代码都过不了我设计的一个case,网上搜了一些别人的代码,也过不了。遂有这篇博客,与君交流leetcode链接:https://leetcode.com/problems/remove-duplicates-from-sorte

2015-07-29 21:19:56 833

原创 通过Leetcode::Bitwise AND of Numbers Range 深化对比特位计算的理解

无聊写了一道leetcode,后来翻看discussion发现了一个网友用了一个比较巧妙的方法解题,有助于理解比特位计算的一个特性。 先上代码,后面解析:// 我的解法int rangeBitwiseAnd(int m, int n) { if (m == n) return m; int d = n - m; int res = 0; for (int i =

2015-05-03 14:17:38 676

原创 volatile、内存屏障、Acquire&Release语义 三者的差别和关系(一) —— 之volatile

前言:对于这个题目, 本来想写成一篇博客, 但是写下来发现篇幅有点长, 于是拆分成三篇.volatile 内存屏障 Acquire&Release语义 这三个概念恐怕是做并行编程的时候, 或者说是做C++多线程编程的过程中很容易搞不明白的概念, 下面依据我的知识范围和认识深度, 做一个不算详细但很认真的解释吧, 最后面再再用LevelDb的原子指针类AtomicPointer举个例子. 如

2014-03-18 19:53:44 3680

原创 与权值成正比的随机算法设计

与权值成正比的随机算法设计

2014-03-12 23:50:21 1687

原创 MongoDb move chunk失败分析和处理(SERVER-5351)

MongoDb move chunk 故障分析和处理

2014-03-08 17:02:39 3295 1

原创 随机字符串算法:13位随机字符串,两两不相同,至少1个大写字母,至少包含这5个字符之3“$@%*#”

高效算法实现:生成13位随机字符串,字符两两不相同,至少1个大写字母,至少包含这5个字符之3“$@%*#”

2014-02-25 20:32:29 2349 1

原创 不要用std::thread写裸线程

我们先看一段代码:#include #include #include using namespace std;volatile bool flag = false;void f1() { for (int i = 0; i < 1000; ++i) { if (flag) cout << i << " catched" << endl; else cout <

2014-02-11 21:36:34 2534

原创 用C++11实现spinlock

#include #include struct SpinLock;struct SpinLock_t {private: std::atomic stat; static char UNLOCK_STAT; static char LOCK_STAT;public: SpinLock_t() : stat(UNLOCK_STAT) {}private: fri

2014-02-06 23:39:43 2073

原创 Mongodb当limit写负数去请求数据的时候会发生什么?

在我们的mongod日志里面查到有些慢请求返回的数据条数是超过1000,问题很奇怪。我们的应用已经限制了 if(limit>500) return ERR_LIMIT; 这是为什么呢?偶然尝试了在mongodb做query的时候,把limit填负数,居然请求到数据了。当limit填-100时,返回了100条记录,当limit填-1000的时候,返回了1000条记录。在mon

2014-01-24 19:36:56 3146

原创 记录一次安装配置mongodb并做数据预分片

我们组用mongodb已经一年度多了,这个实验是很久之前就记录在evernote了的,最近想建一个博客,所以就搬进来,可能有同学会搜到能有帮助吧。1、安装mongodb,记住要下源码安装,apt-get install 不一定是最新版2、一开始因为空间不足,无法启动,我的虚拟机当时只分配了8g,启动mongodb是剩余更少,后来就扩充vbox的磁盘空间,于是有了vbox里面那两篇笔

2014-01-15 21:51:43 2356

原创 从std::string、leveldb、openbsc源码,研究为什么他们要这么设计代码

文章开始前,先转一下大神的微博ok,开始吧。最近在看一些代码的时候,发现一个奇怪的设计,故写下了这篇文章。下面举了3个例子,然后总结一下网友在水木C++版块上面的讨论。【Case1】:一般来说,我们会觉得,string可以这么实现:string { size_t size; char* buf; };但是,在basic_string里,我却发现stri

2014-01-15 21:47:23 1072

原创 用两种方法,实现常用的ThreadBase代码

第一种方法#include #include using namespace std;class ThreadBase {public: void Start() { pthread_t tid; pthread_create(&tid, NULL, &ThreadBase::DoStart, (void*)this); }private: virt

2014-01-15 21:45:28 1161

原创 gcc静态链接库过程中,关于强类型和弱类型的知识

问题背景:先看下面这段代码://common.h#ifndef COMMON_H#define COMMON_H#includeusing namespace std;#ifndef LABEL#define LABEL "common"#endifclass Common{public: static void f() { cout << "Commo

2014-01-03 18:36:53 1619

空空如也

空空如也

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

TA关注的人

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