自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

转载 hexo安装教程

由于习惯了StackEdit的markdown,而Jekyll的markdown不知道为什么开了GFM却不是全部插件都能用的感觉,然后又考虑到Jekyll渲染很花时间。正好又看到了Hexo,于是就把github pages转Hexo了(说到底就是任性=。= 安装Node.jsNode.js官网(https://nodejs.org/ )下载安装即可。安装Hexo

2016-04-09 16:36:47 1306

转载 动态规划——最长公共子序列总结

子序列 sub sequence问题,例:最长公共子序列,[LeetCode] Distinct Subsequences(求子序列个数)子序列和子字符串或者连续子集的不同之处在于,子序列不需要是原序列上连续的值。对于子序列的题目,大多数需要用到DP的思想,因此,状态转移是关键。这里摘录两个常见子序列问题及其解法。例题1, 最长公共子序列我们知道最长公共

2015-09-19 10:50:08 1910

转载 最长公共子序列

一个字符串S,去掉零个或者多个元素所剩下的子串称为S的子序列。最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的。例如序列X=ABCBDAB,Y=BDCABA。序列BCA是X和Y的一个公共子序列,但是不是X和Y的最长公共子序列,子序列BCBA是X和Y的一个LCS,序列BDAB也是。寻找LCS的一种方法是枚举X所有的子序列,然后注意检

2015-09-18 13:33:25 499

转载 索引分裂

问题背景今天,看到Twitter的DBA团队发布了其最新的MySQL分支:Changes in Twitter MySQL 5.5.28.t9,此分支最重要的一个改进,就是修复了MySQL 的Bug #67718:InnoDB drastically under-fills pages in certain conditions。关于此Bug的详细描述,以及如何重现此问题,可以

2015-09-14 18:19:55 3085 1

转载 图片防盗链

所谓盗链就是指其他网站把我们站点的文件链接帖到他们站上,这样白白占用我们的带宽。访问对于网站盗链行为,是非常不道德的。要实现防盗链,我们就得在IIS处理URL时拦截。效果图:未加防盗链之前:hm是我的机器名,用http://hm/myweb/default.aspx和http://localhost/myweb/default访问结果一样。这幅图片是任人宰割的。加了防盗

2015-09-14 18:18:55 555

转载 回溯法——八皇后问题

回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法指导思想——走

2015-09-13 18:37:06 656

转载 “米粉节”背后的故事——小米网抢购系统开发实践

摘要:今年4月的“米粉节”对小米网来说意义非凡,是其彻底重构后迎来的一次全面压力测试,涉及网站前端、后台系统、仓储物流、售后等各环节。高并发的负载能力、稳定性、准确性等已不是问题,灵活性与可运营性成为关键。2014年的米粉节2014年4月9日凌晨,我和同事们对小米网的抢购系统做了最后的检查与演练。几个小时后,小米网今年开年来最重要的一次大型活动“米粉节”就要开始了。这次米粉

2015-09-13 10:08:03 1389

转载 几种算法思想

1、递归法所谓递归,就是指如果需要求解当前状态就需要求解其依赖的迁移状态。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。采用递归描述的算法通常有这样的特征:1)为求解规模为N的问题,设法将它分解成规模较小的问题;2)然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样

2015-09-13 09:59:27 586

转载 并发操作导致数据库不一致性

主要是一致性问题.常见并发并发一致性问题包括:丢失的修改、不可重复读、读脏数据、幻影读(幻影读在一些资料中往往与不可重复读归为一类).答案补充   不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果.具体地讲,不可重复读包括三种情况:  事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值.例如,T1读取B=100进行运算,

2015-09-12 22:19:05 6816

转载 C#类,类成员访问修饰符

今天想不起C#中类的默认访问修饰符是internal了还以为是public呢,单元测试时候一直是黄色敬告。所以把csdn的东西翻出了(在百度上搜不到的)。当用internal修饰类(c#默认不加修饰符就是internal)可能会出现问题:当你在继承或者是实例化一个internal类的时候你的访问权限不能打破原来internal类的访问限制。例:internal class A{}     

2015-09-10 15:07:55 2122

转载 多态和虚表

多态多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码://例程1 #include iostream>      using namespace std;        class Vehicle {    public:         Vehicle(float speed,int to

2015-09-07 20:20:03 391

转载 [NoSQL] 海量数据解决思路之Hash算法

一、概述       本文将粗略讲述一下Hash算法的概念特性,里边会结合 分布式系统负载均衡  实例对Hash的一致性做深入探讨。另外,探讨一下Hash算法在海量数据处理方案中的通用性。最后,从源代码出发,具体分析一下Hash算法在MapReduce框架的中的应用。      二、Hash算法          Hash可以通过散列函数将任意长度的输入变成固定长度的输出,也可以将

2015-09-05 17:25:31 1155

转载 常见排序算法小结

排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。     我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题。     上面的这张图来自一个PPT。它概括了数据结构中的所有常见

2015-09-05 13:18:15 298

原创 mysql前缀索引

mysql前缀索引 建立前缀索引的例子:# 语法ALTER TABLE table_name ADD KEY(column_name(prefix_length)); # 示例ALTER TABLE city ADD KEY(cityname(7));应用场景:数据库里有个地址(address)字段,类型为varchar(100),业务决定了要经常根据

2015-09-03 13:36:34 440

转载 理解MySQL——索引与优化

写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),

2015-09-02 15:37:07 806

转载 内存映射文件实现共享内存

内存映射文件进程间共享内存内存映射文件的另一个功能是在进程间共享数据,它提供了不同进程共享内存的一个有效且简单的方法。后面的许多例子都要用到共享内存。共享内存主要是通过映射机制实现的。Windows 下进程的地址空间在逻辑上是相互隔离的,但在物理上却是重叠的。所谓的重叠是指同一块内存区域可能被多个进程同时使用。当调用CreateFileMapping 创建命名的内存映射文件对象时,

2015-09-02 14:32:35 1003

转载 C/C++中extern关键字详解

#include#includeusing namespace std;int main(){ string str1,str2,temp; int m,MaxNum=0,Len; cin>>str1>>str2; string::size_type index1; string::size_type index2; for(index1=0;index1!=str1.size

2015-08-29 21:31:33 334

转载 内存映射文件机制处理大文件

先说结论:使用内存映射文件来处理大文件可以提高效率。 为什么呢?我们先来看看如果不使用内存映射文件的处理流程是怎样的,首先我们得先读出磁盘文件的内容到内存中,然后修改,最后回写到磁盘上。第一步读磁盘文件是要经过一次系统调用的,它首先将文件内容从磁盘拷贝到内核空间的一个缓冲区,然后再将这些数据拷贝到用户空间,实际上是两次数据拷贝。第三步回写也一样也要经过两次数据拷贝。所以我们

2015-08-28 22:32:32 458

转载 C++实现线程池

本文介绍的线程池采用C++语言,在windows平台下实现。此版本为Version 1.0,以后还会推出功能更完备的后续版本。本着技术分享的精神写作本文同时公布源代码。欢迎大家指出该线程池存在的问题并对当前性能进行讨论。    适用场景:    1.需要大量的线程来完成任务,且完成任务的时间比较短。   2.对性能要求苛刻的应用,比如要求服务

2015-08-12 10:52:41 372

转载 C#线程池ThreadPool

相关概念:    线程池可以看做容纳线程的容器;    一个应用程序最多只能有一个线程池;    ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池;    每排入一个工作函数,就相当于请求创建一个线程; 线程池的作用:线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了

2015-08-12 10:44:12 16950

转载 内存池链表与大顶堆实现

1. 内存池设计1.1 目的在给定的内存buffer上建立内存管理机制,根据用户需求从该buffer上分配内存或者将已经分配的内存释放回buffer中。1.2 要求尽量减少内存碎片,平均效率高于C语言的malloc和free。1.3 设计思路将buffer分为四部分,第1部分是mem_pool结构体;第2部分是内存映射表;第3部分是内存chunk结构

2015-08-11 17:34:52 1758

转载 PHP 真正多线程的使用

PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程。多线程在处理重复性的循环任务,能够大大缩短程序执行时间。   我之前的文章中说过,大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主机,增加VPS或CPU核数就更方便了,直接以备份镜像增加VPS,连操作系统、环境都不用安装配置),而是在于My

2015-07-22 16:59:47 1466

转载 PHP多进程处理并行处理任务实例

本文目的本文通过例子讲解linux环境下,使用php进行并发任务处理,以及如何通过pipe用于进程间的数据同步。写得比较简单,作为备忘录。PHP多进程通过pcntl_XXX系列函数使用多进程功能。注意:pcntl_XXX只能运行在php CLI(命令行)环境下,在web服务器环境下,会出现无法预期的结果,请慎用!管道PIPE管道用于承载简称之间的通讯数据。为

2015-07-22 15:15:40 11538 5

原创 创建两个线程模拟火车站两个窗口售票程序

#include #include using namespace std;DWORD WINAPI Fun1(LPVOID lpParameter);DWORD WINAPI Fun2(LPVOID lpParameter);int index = 0;int tickets = 100; HANDLE hMutex;int main(){ HANDLE hThre

2015-07-22 14:55:16 855

转载 深入分析Sleep(0)与Sleep(1)的区别

目的:有时候我们想让线程不被调度一定的时间,也就是说让线程睡眠一段时间。API 接口:在 Win32中可以调用 Sleep,SleepEx 和 SwitchToThread 三个API。VOID WINAPI Sleep(DWORD dwMilliseconds);DWORD WINAPI SleepEx(DWORD dwMilliseconds, BOOl

2015-07-22 13:16:40 368

转载 Node.js的线程和进程

前言  很多Node.js初学者都会有这样的疑惑,Node.js到底是单线程的还是多线程的?通过本章的学习,能够让读者较为清晰的理解Node.js对于单/多线程的关系和支持情况。同时本章还将列举一些让Node.js的web服务器线程阻塞的例子,最后会提供Node.js碰到这类cpu密集型问题的解决方案。  在学习本章之前,读者需要对Node.js有一个初步的认识,熟悉Nod

2015-07-21 20:39:51 4198

转载 理解Node.js的事件循环(代码是异步单线程,内部实现用的还是进程和线程,基于池化的线程实现异步)

在了解node.js之前你首先需要了解的一个基本的论点是:I/O是“昂贵”的。因此对于当前的编程技术而言,最大的浪费来自于等待I/O的完成。下面列出了改善该问题的几种方式,其中的某个可以帮助你提高性能:同步:在某一时刻,一次只处理一个请求。但这种情况下,任何一个请求都会“耽误”(阻塞)所有其他的请求。fork一个新进程:对于每个请求,你启动一个新的进程来

2015-07-21 18:46:16 1362

转载 浅谈MD5加密算法中的加盐值(SALT)

我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。  加Salt可以一定程度上解决这一问题。所谓加Salt方法,就是加点“佐料”。其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,

2015-07-21 16:51:13 3064

转载 线程池的研究及实现

什么是线程池?诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创

2015-07-21 15:38:29 313

转载 SOA架构 今天你实现了吗?

我们这里将讲一讲SOA架构,包括SOA架构的前世今生,希望本文对大家了解SOA有所帮助。AD:SOA架构在很多人眼里还是比较新的一个概念,有人追捧,有人抹杀。这里作者将从自己的经历来讲述SOA架构的前世今生。我也在不断反省自己,不管我说得对错,总会有一大批人来打击我,原因很简单“我自傲、我自大,没办法从小就很优秀,哈哈,爹妈生得好啊,不能怪我”。大家都谦虚了

2015-07-21 15:36:00 513

转载 REST 架构该怎么生动地理解?

@Ivony 老师的一句话概括很精辟:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。--- 简洁版 ---0. REST不是"rest"这个单词,而是几个单词缩写。但即使那几个单词说出来,也无法理解在说什么 -_-!! (不是要贬低人,是我自己也理解困难);1. REST描述的是在网络中client和server的一种交互形式;REST

2015-07-21 15:10:56 621

转载 彻底理解webservice SOAP WSDL

原文: http://wenku.baidu.com/view/f87b55f19e31433239689314.htmlWebServices简介先给出一个概念 SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构,既然说是一种架构的话,所以一般认为 SOA 是包含了运行环境,编程模型,架构风格和相

2015-07-21 15:05:22 8064

转载 白话REST-识别真假REST

大家对REST的认识?         谈到REST大家的第一印象就是通过http协议的GET,POST,DELETE,PUT方法实现对url资源的CRUD(创建、读取、更新和删除)操作。比如http://www.aizher.com/c2/(读取)仍然保持为 [GET] http://www.aizher.com/c2/http://www.aizher.com/c2/cre

2015-07-20 13:32:32 767

转载 REST无状态的理解

Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。降低开发的复杂性,提高系统的可伸缩性资源表现层状态转化 资源REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段

2015-07-20 12:42:07 914

转载 常见的三种Web服务架构

相互竞争的服务架构The Competing Architectures摘自《RESTful Web Services中文版》我们已经给出了“不同Web服务会有不同做法”的两个主要问题,现在要据此对不同风格的Web服务进行分类了。根据我的研究,常见的Web服务架构主要有三种:REST式架构、RPC式架构和REST-RPC混合架构。下面依次对它们进行介绍。RE

2015-07-20 12:32:25 1202

转载 REST 架构风格

目前基于网络应用的架构风格主要有三种: RPC架构风格   将服务器看作是由一些过程组成,客户端调用这些过程来执行特定的任务。SOAP就是RPC风格的一种架构。过程是动词性的(做某件事),因此RPC建模是以动词为中心的。 分布式对象架构风格    认为服务器是由一些对象和对象上的方法组成,客户端通过调用这些对象上的方法来执行特定的任务。并且客户端调用这些对象上的方法

2015-07-20 12:14:38 457

转载 教你透彻了解红黑树

教你透彻了解红黑树二叉查找树由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意结点的左子树不空,则左子树上所有结点的值均小于它的根

2015-07-18 13:22:23 328

转载 描述 Windows 操作系统内存管理的方法

(1)有三种方法:虚拟内存,内存映射文件,内存堆栈。虚拟内存是将页文件加载到内存,适用于比较大的对象或结构;内存映射文件是将磁盘上文件加载到内存,适用于大文件和单机的进程间内存共享;堆栈就是动态的分配内存,适用于小对象的创建。这些在windows核心编程中都描述得很详细的。(2)当进程要读自己的虚拟地址空间中的数据时:if(数据在物理内存中)   {

2015-07-18 12:43:55 483

转载 C++内存管理

C++内存管理[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自

2015-07-18 12:32:09 374

转载 堆栈的深度理解

接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据。那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变量的呢?下面就会对此进行深入的讨论。下文中的C语言代码如没有特别声明,默认都使用VC编译的release版。 首先,来了解一下 C 语言的变量是如何在内存分部的。C 语言有全局变量(Global)、本地变量(Local),静态变量(Static)、寄存器变量(Reg

2015-07-18 12:12:48 1921

空空如也

空空如也

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

TA关注的人

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