自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北岛知寒

Thoughts, Stories and Ideas.

  • 博客(359)
  • 收藏
  • 关注

原创 [置顶]【整理】图解隐马尔可夫模型(HMM)

写在前面最近在写论文过程中,研究了一些关于概率统计的算法,也从网上收集了不少资料,在此整理一下与各位朋友分享。隐马尔可夫模型,简称HMM(Hidden Markov Model), 是一种基于概率的统计分析模型,用来描述一个系统隐性状态的转移和隐性状态的表现概率。本文适用于对HMM感兴趣的入门读者,为了让文章更加通俗易懂,我会多阐述数学思想,尽可能的撇开公式,撇开推导。结合实际例子,争

2017-03-05 17:35:49 1141 2

原创 [置顶]mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境。主要思路简单说,实现mysql主备复制-->利用mycat实现负载均衡。比较了常用的读写分离方式,推荐mycat,社区活跃,性能稳定。测试环境MYSQL版本:Server version: 5.5.53,到官网可以下载WINDWOS安装包。注意:确保mysql版本为

2017-03-05 17:35:47 505

原创 [置顶]定向爬虫 - Python模拟新浪微博登录

当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。模拟登录是定向爬虫制作中一个必须克服的问题,只有这样才能爬取到更多的内容。实现微博登录的方法有很多,一般我们在模拟登录时首选WAP版。因为PC版网页源码中包括很多的js代码,提交的内容也更多,不适合机器模拟登录。我们实现微博登录的大体思路是这样的:用抓包工具把正常登录时要提交的字段都记录下来

2017-03-05 17:35:44 1274

原创 [置顶]Nginx反向代理部署指南

一.反向代理  我们都知道,80端口是web服务的默认端口,其他主机访问web服务器也是默认和80端口进行web交互,而一台服务器也只有一个80端口,这是约定俗成的标准.我们来看下面两个场景: 1.服务器的80端口被占用了,我们想实现服务器的其他端口(比如port:2368)web服务. 2.我们想在一台服务器上实现多个站点的web服务.要解决这个问题,需要用到反向代理,下面的

2017-03-05 17:35:42 395

原创 [置顶]从《浪潮之巅》看互联网

写在前面    自入手KWP3以来,倒是抽出不少时间阅读。在写这篇笔记的时候,我已经是第二次拜读此书。与这本书的邂逅是暑假在微博上看到李开复老师推荐此书,正好金山网络的曹钦学长要我帮了一个小忙,硬说要谢谢我,推辞不成就和他说送我这套书吧,他爽快的答应了。    拿到书后看到学长写在前页的叙言,很受鼓励,自此一发不可收拾,恨不得一口气读完。整本书给我的感觉就是:眼前一亮!看这本书的整个过程,

2017-03-05 17:35:39 469

原创 [置顶]C++泛型编程:template模板

泛型编程就是以独立于任何特定类型的方式编写代码,而模板是C++泛型编程的基础.所谓template,是针对“一个或多个尚未明确的类型”所编写的函数或类.使用template时,可以显示的或隐示的将类型当作参数来传递.下面是一个典型的例子,传回两数中的较大者:templateclass T>inline const T& MAX(const T& a,const T& b)

2017-03-05 17:35:37 299

原创 [置顶]C++异常处理:try,catch,throw,finally的用法

写在前面所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题.异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制.也许我们已经使用过异常,但是你习惯使用异常了吗?现在很多软件都是n*365*24小时运行,软件的健壮性至关重要.  内容导读本文包括2个大的异常实现概念:C++的标准异常和SEH异常.

2017-03-05 17:35:34 362

原创 [置顶]LCM性质 + 组合数 - HDU 5407 CRB and Candies

CRB and Candies Problem's Link  Mean: 给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...C(n,n))的值,(n analyse:很有趣的一道数论题!看了下网上别人的做法,什么Kummer定理我还真没听说过,仔细研究一下那个鬼定理真是涨姿势了!然而这题我并不是用Kummer那货搞的

2017-03-05 17:35:32 333

原创 [置顶]论如何优雅的处理回文串 - 回文自动机详解

写在前面最近无意中看到了这个数据结构,顺便也就学习了一下。而且发现网上关于这个算法的描述有很多地方是错的,在这里做了一些更正。处理字符串的算法很多:    KMP,E-KMP,AC自动机,后缀三兄弟:后缀树、后缀数组、后缀自动机,Trie树、Trie图,符串hash...但以上数据结构在处理回文串上还是稍有欠缺,用这些来处理回文显得太小题大做。于是有了Manacher算法,

2017-03-05 17:35:29 516

原创 [置顶]AC自动机-算法详解

What's Aho-Corasick automaton?  一种多模式串匹配算法,该算法在1975年产生于贝尔实验室,是著名的多模式匹配算法之一。  简单的说,KMP用来在一篇文章中匹配一个模式串;但如果有多个模式串,需要在一篇文章中把出现过的模式串都匹配出来,就需要Aho-Corasick automaton算法了。My Understanding About Aho-Coras

2017-03-05 17:35:27 11594 3

原创 [置顶]后缀数组(suffix array)详解

写在前面在字符串处理当中,后缀树和后缀数组都是非常有力的工具。其中后缀树大家了解得比较多,关于后缀数组则很少见于国内的资料。其实后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也不太逊色,并且,它比后缀树所占用的空间小很多。可以说,在信息学竞赛中后缀数组比后缀树要更为实用!因此在本文中笔者想介绍一下后缀数组的基本概念、构造

2017-03-05 17:35:24 6292

原创 struts2的核心和工作原理

struts2的框架结构图工作流程1、客户端请求一个HttpServletRequest的请求,如在浏览器中输入http://localhost: 8080/bookcode/Reg.action就是提交一个(HttpServletRequest)请求。2、这个请求经过一系列的过滤器(Filter)如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 Fil

2017-03-05 17:35:17 369

原创 JAVA NIO学习笔记1 - 架构简介

最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结。简介NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO方式NIO采用了全新的底层I/O模型。传统IO的设计概念是面向流,而NIO则是面向块。简单点说,传统I/O是基于字节的,所有I/O都被视为单个字节的移动,使用时需先把对象转换为字节码;而NIO是面

2017-03-05 17:35:12 224

原创 [深入JUnit] 测试运行的入口

阅读前提了解JUnit对JUnit的内部实现有兴趣不妨看看[深入JUnit] @Before, @After, @Test的秘密]代码版本: junit 4.12代码搜索工具: http://grepcode.com/常用符号_: 用来略去代码段中无关紧要的parameter...: 用来略去无关紧要的代码

2017-03-05 17:35:06 704

原创 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON

项目名称:HandyJSON项目地址:https://github.com/alibaba/handyjson背景JSON是移动端开发常用的应用层数据交换协议。最常见的场景便是,客户端向服务端发起网络请求,服务端返回JSON文本,然后客户端解析这个JSON文本,再把对应数据展现到页面上。但在编程的时候,处理JSON是一件麻烦事。在不引入任何轮子的情况下,我们通常需要先把JSON转为

2017-03-05 17:35:01 888

原创 数据库进阶之路(五) - MySQL行锁深入研究

由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统:假设id=1的这本书库存为1,但是有2个人同时来借这本书,此处的逻辑为:SELECT restnum FROM book WHERE id =1 ; --如果restnum大于0,执行updateUPDATE book SET restnum=restnum-1 WHERE id=1;

2017-03-05 17:34:56 416

原创 走进缓存的世界(三) - Memcache

系列文章走进缓存的世界(一) - 开篇走进缓存的世界(二) - 缓存设计走进缓存的世界(三) - Memcache 简介Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它基于一个存储key/value对的hashmap,通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。它的工作机制是在

2017-03-05 17:34:52 233

原创 Unicode转义(\uXXXX)的编码和解码

在涉及Web前端开发时, 有时会遇到\uXXXX格式表示的字符, 其中XXXX是16进制数字的字符串表示形式, 在js中这个叫Unicode转义字符, 和\n \r同属于转义字符. 在其他语言中也有类似的, 可能还有其它变形的格式.多数时候遇到需要解码的情况多点, 所以会先介绍解码decode, 后介绍编码encode.下文会提供Javascript C# Java三种语言下不同方法的实现

2017-03-05 17:34:47 6452

原创 走进缓存的世界(二) - 缓存设计

系列文章走进缓存的世界(一) - 开篇走进缓存的世界(二) - 缓存设计走进缓存的世界(三) - Memcache 如何设计缓存主要考虑三个问题:缓存哪些数据如何缓存如何保证数据一致性缓存哪些数据 系统优化时有一句话必须切记:“优化无止境”,所以如果缓存不是必须的,请果断去掉,要知道越是业务上复杂的系统,对Cache的使用反而越简单,因为

2017-03-05 17:34:42 252

原创 走进缓存的世界(一) - 开篇

系列文章走进缓存的世界(一) - 开篇走进缓存的世界(二) - 缓存设计走进缓存的世界(三) - Memcache 概述对于程序员来说多多少少都懂一点算法,算法是什么?算法是“时间”与“空间”的互换策略。我们常常研究一个算法的时间复杂度和空间复杂度,如果我们有绝对足够的时间和空间,那么算法就不需要了,可惜这种条件是不存在的,只是在某些情况下我们会协调两者从而达到

2017-03-05 17:34:38 285

原创 一周乱谈 - 中文分词

中文分词NLP(Natural language processing)自然语言处理一直都是比较热门的领域,现在不管是搜索,推荐神马的基本都需要和nlp打交道,而中文的nlp处理的第一步就是分词了,所以中文分词一直扮演者举足轻重的角色。当然了,分词的算法也是层出不穷,从最初的字典匹配到后来的统计模型,从HMM到CRF,分词精度都在不断提高,下面我就简单介绍下基本的分词算法。字典匹配

2017-03-05 17:34:33 392

原创 详解web容器 - Jetty与Tomcat孰强孰弱

Jetty基本架构Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器。它有一个基本数据模型,这个数据模型就是 Handler(处理器),所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。Jetty 中另外一个比不可少的组件是 Connector,它负责接

2017-03-05 17:34:29 402

原创 利用rebase来压缩多次提交

我们可以用Git merge –squash来将分支中多次提交合并到master后,只保留一次提交历史。但是有些提交到github远程仓库中的commit信息如何合并呢?历史记录首先我们查看一下master分支的提交历史:$ git logcommit 415a0be986a48113829b3c60ee2387c6dbdc81d8Author: xuxu 126.com>

2017-03-05 17:34:24 455

原创 Java DNS查询内部实现

源码分析在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的。比如查询域名对应的IP地址:String dottedQuadIpAddress = InetAddress.getByName( "blog.arganzheng.me" ).getHostAddress();或者反过来IP对应域名: InetAddress[]

2017-03-05 17:34:19 703

原创 DNS报文格式(RFC1035)

一、域名和资源记录的定义 1、Name space definitions2、资源记录定义(RR definitions)     2.1 格式         后面分析报文的时候详细解释。    2.2 类型值(TYPE values)         类型主要用在资源记录中,注意下面的值是QTYPE的一个子集。 类型 值和含义

2017-03-05 17:34:17 585

原创 DNS知识指南

1. 什么是记录?记录的实质是存在DNS服务器叶结点上的一条映射(只讨论权威DNS,不讨论Local DNS)。A记录:(域名:IP地址) 例:cnblogs.com   A  42.121.252.58    通俗来说A记录就是服务器的IP,域名绑定A记录就是告诉DNS,当你输入域名的时候给你引导向设置在DNS的A记录所对应的服务器。 简单的说,A记录是指定域名对应的IP地址。CNA

2017-03-05 17:34:14 541 1

原创 用JAVA日志来写诗

工欲善其事,必先利其器很多程序员可能都忘了记录应用程序的行为是一件多么重要的事,当遇到多线程环境下高压力导致的并发bug时,你就能体会到记录log的重要性。有的人很高兴的就在代码里加上了这么句:log.info("Happy and carefree logging");他可能都没有意识到应用程序的日志在维护,调优和故障识别中的重要性。我认为slf4j是最好的日志API,最

2017-03-05 17:34:09 1022

原创 SSL介绍与Java实例

有关SSL的原理和介绍在网上已经有不少,对于Java下使用keytool生成证书,配置SSL通信的教程也非常多。但如果我们不能够亲自动手做一个SSL Sever和SSL Client,可能就永远也不能深入地理解Java环境下,SSL的通信是如何实现的。对SSL中的各种概念的认识也可能会仅限于可以使用的程度。本文通过构造一个简单的SSL Server和SSL Client来讲解Java环境下SSL的

2017-03-05 17:34:04 345

原创 JAVA错误汇总

1.Slf4J-API版本兼容问题描述Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple

2017-03-05 17:34:02 680

原创 C++异常处理: try,catch,throw,finally的用法

写在前面所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题.异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制.也许我们已经使用过异常,但是你习惯使用异常了吗?现在很多软件都是n*365*24小时运行,软件的健壮性至关重要.  内容导读本文包括2个大的异常实现概念:C++的标准异常和SEH异常.

2017-03-05 17:33:57 1173

原创 数字签名和数字证书

数字签名是什么?1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。4.鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。5.

2017-03-05 17:33:52 181

原创 git切换到远程分支

远程仓库 git clone 下来,当你执行 git branch,你只会看到* master并不会看到其他分支,即便远程仓库上有其他分支,使用git branch -va可以查看本地+远程分支列表* master 0840594 merge master and 1.0.0remotes/origin/1.0.0 743

2017-03-05 17:33:50 1244

原创 在 Git 中 Checkout 历史版本

昨天写代码的时候,误删了一个文件。今天发现的时候,commit 已经 push 到版本库了。本想用 git reset 回退版本,找回文件后重新提交。但是想起 Git 是一个版本控制系统哎,直接从版本库里 checkout 出某个文件的历史版本不就好了?想法挺好,但是很久没用这个功能,自己已经不记得具体的命令了。于是查了下手册,把和 checkout 历史版本有关的几个命令都记录一下。从某

2017-03-05 17:33:47 8321

原创 Gitlab使用总结

Gitlab日常开发流程1. 从某一功能分支新建一个自己的开发分支二. 将master分支clone到本地mkdir git-testcd git-test\git clone http://gitlab.alibaba-inc.com/shanbiao.jsb/temp-code.gitcd temp-code\ls -lh三. 切换到自己的开发分支

2017-03-05 17:33:44 527

原创 JAVA keytool 使用详解

Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 可信任的证书实体(trusted certificate entries)——只包含公钥ailas(

2017-03-05 17:33:40 408

原创 JAVA调用 keytool 生成keystore 和 cer 证书

keytool是一个Java数据证书的管理工具,keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)可信任的证书实体(trusted certificate entries)——只包含公钥

2017-03-05 17:33:37 804

原创 写出好的 commit message

为何要关注提交信息加快Reviewing Code的过程帮助我们写好release note5年后帮你快速想起来某个分支,tag或者 commit增加了什么功能,改变了哪些代码让其他的开发者在运行 git blame 的时候想跪谢总之一个好的提交信息,会帮助你提高项目的整体质量基本要求第一行应该少于50个字。 随后是一个空行 第一行题目也可以写成:Fix i

2017-03-05 17:33:35 467

原创 gitlab工作流程简介

gitlab工作流程简介新建项目流程创建/导入项目可以选择导入github、bitbucket项目,也可以新建空白项目,还可以从SVN导入项目建议选择private等级初始化项目1.本地克隆项目2.增加develop本地分支3.推送develop分支至服务器4.在gitlab中保护devel

2017-03-05 17:33:32 1286

原创 JAVA - HashMap,TreeMap迭代

1.使用for_each循环迭代public class TestUnit { public static void main(String[] args) { HashMap hashMap=new HashMap(); hashMap.put(1,"aaa"); hashMap.put(2,"bbb");

2017-03-05 17:33:27 282

原创 初探Spring - IOC原理

一、IOC是什么控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来降低代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它

2017-03-05 17:33:23 237

空空如也

空空如也

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

TA关注的人

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