自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++泛型 && Java泛型实现机制

C++泛型   C++泛型跟虚函数的运行时多态机制不同,泛型支持的静态多态,当类型信息可得的时候,利用编译期多态能够获得最大的效率和灵活性。当具体的类型信息不可得,就必须诉诸运行期多态了,即虚函数支持的动态多态。  对于C++泛型,每个实际类型都已被指明的泛型都会有独立的编码产生,也就是说list<int>和list<string>生成的是不同的代码,编译程序会在此时确保类型安全性。由于知道对象确

2015-08-28 22:24:16 3099

原创 乐观锁与悲观锁

为了得到最大的性能,一般数据库都有并发机制,既然是并发,不可避免的将带来数据访问的冲突。为了解决这个问题,大多数数据库采取了并发控制。乐观锁和悲观锁是并发控制常用的技术手段。下面来看看吧。  乐观锁,顾名思义,就是保持一种乐观精神,它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事

2015-08-26 15:45:52 1670 1

原创 线性回归与梯度下降

回归分析是一种统计学上分析数据的方法,目的在于了解两个或多个变数间是否相关、相关方向与强度,并建立数学模型以便观察特定变数来预测研究者感兴趣的变数。更具体的来说,回归分析可以帮助人们了解在只有一个自变量变化时因变量的变化量。 回归分析是建立因变数Y与自变数X之间关系的模型,可以有一个自变量X,也可以超过一个自变量(X1, X2 … Xi)。  回归分析目的在于找出一条最能够代表所有观测资料的函数(

2015-08-17 21:16:18 1981

原创 计算机程序的构造和解释笔录(1):构造过程抽象

Q: SICP是讲软件工程么?   A:部分,但并非全部。主要是模块化和黑盒抽象,计算机中两大主要基本思想。SICP关心的是:“当系统复杂度爆炸时(或者在此之前),我们如何通过有效的方法和手段去控制系统的复杂度?”    Q: SICP是讲编译原理么?   A: 部分,另外,如同书名说描述的那样,SICP中的“编译”都是“解释”,这种解释的行为,无外乎就是用一种机器的计算行为去模拟另一种机器

2015-08-13 20:50:10 1054

原创 相似图片搜索

前几天在伯乐网上看到有转载相似图片搜索的文章,其实它的方法很简单,就是一篇图片,先做灰度化,resize,01化处理,在判断。出于专业敏感,我想是不是可以利用视频或者图像编码中的DCT变换,利用少量的空间存储大部分的有效信息,然后再比较,网上搜了搜,果然有这样的算法:phash  phash算法有很多种,这里介绍一种基于DCT的phash算法。  图片指纹生成方法:   图片灰度化   图片缩放

2015-08-09 16:44:09 919

原创 Quorum/NRW机制

Quorom 机制,是一种分布式系统中常用的,用来保证数据冗余和最终一致性的投票算法,其主要数学思想来源于鸽巢原理。  什么是鸽巢原理?   其中一种简单的表述法为:   若有n个笼子和n+1只鸽子,所有的鸽子都被关在鸽笼里,那么至少有一个笼子有至少2只鸽子。   另一种为:   若有n个笼子和kn+1只鸽子,所有的鸽子都被关在鸽笼里,那么至少有一个笼子有至少k+1只鸽子。   恩,很熟悉

2015-08-08 21:52:17 2091

原创 两阶段提交协议

集中式与分布式事务的另一个重要的不同点在于它们各自所需关注的错误的属性上。在集中式系统中,错误都是要么不错要么全错(all-or-nothing),也就是说要么系统正常工作事务正常处理,要么系统出错不会有任何事务完成。但是在分布式系统中,可能出现部分失败(partial failures)的情况,某些节点正常工作但是其他一些节点出错了。  这种局部失败的情况正是造成分布式系统中很多难解的问题的根源。

2015-08-07 22:20:52 815

原创 Nginx(2):工作机制

我们知道进程和线程会消耗内存和其它系统资源,同时他们需要进行上下文切换。大多数现代服务器可以同时处理成千上百的进程或线程,但是当内存耗尽时,性能将下降,同时,在高IO负载时,将会出现频繁的上下文切换。   处理网络的常规方法是为每个连接创建一个进程或者线程,这种方式容易实现,但是扩展困难。  那么Nginx是怎么做的呢?How Does NGINX Work?  nginx 在启动后,会有一个 m

2015-08-05 14:30:57 885

原创 再论贝叶斯公式

在之前的文章( 贝叶斯方法及其应用(1))中我们谈到了贝叶斯公式,也提到了后验概率 = 先验概率*标准相似度。  那么对于贝叶斯公式P(A│B)=P(A∩B)/P(B) =P(A)(P(B|A))/P(B) ,之前提到如果”可能性函数”P(B|A)/P(B)>1,意味着”先验概率”被增强,事件A的发生的可能性变大;如果”可能性函数”=1,意味着B事件无助于判断事件A的可能性;如果”可能性函数”<1,

2015-08-05 13:36:02 1045

原创 Bloom Filter(布隆过滤器)

布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制矢量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。   如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash tab

2015-08-03 21:17:57 1206

原创 Linux进程调度机制(1)

进程调度负责决定哪个进程投入运行,何时运行以及运行多长时间。  进程调度:非抢占式和抢占式   Linux这么酷的系统当然是抢占式的喽。  进程在被抢占之前可以运行的时间是预先设定好的,叫做时间片。有效管理时间片能使调度程序从系统全局角度作出调度决定,避免个别进程独占系统资源。I/O消耗型/处理器消耗型   I/O消耗型:进程的大部分时间用来提交I/O请求或是等待I/O请求,这样的进程经常处于可

2015-08-03 17:08:38 3424

原创 阻塞睡眠实现机制

在看阻塞睡眠实现机制前,我们来看一下内核中广泛用到的等待队列。 Linux内核的等待队列为双循环链表结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列项中都包含一个list_head(双链表)。通过这样一个双链表把等待进程链接起来。 下面来看两者数据结构

2015-08-02 21:56:41 1432

web资源下载器

一个简单德python脚本,可支持pdf/txt/ppt等网页资源的下载

2015-07-28

空空如也

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

TA关注的人

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