智能算法之马尔可夫模型
可能大家更常见到隐马尔科夫模型(HMM),马尔科夫模型可以看成是一个更基础的模型,它是对能直接观察到的事件进行建模,所以与HMM相对应,有时也叫它为显马尔科夫(VMM)。马尔科夫模型要处理的是序列问题,核心思想就是统计所有样本的过程,得到系统中状态之间的转移概率。 马尔可夫过程…
HTTPS杂记
网络耗时(比HTTP多了交互次数)。 加解密耗时。 可能浏览器需要由http跳转到https的耗时,用户使用http需要服务端返回302强制跳转https。 接着经过某种机制多次交互协商得到通信密钥,并且还会对证书的身份认证。 可能浏览器需要到证书机构查询证书状态。 可能还需要…
一图简看智能聊天机器人的设计
(早前的一个智能聊天机器人设计,实际使用中已经改了很多了。) SuperRobot 框架主体。 自然语言理解系统。 词向量Trainer。 AliceBot负责闲聊,采用AIML Engine,属于rulebased。 闲聊语句通过后台输入到DB。 ServiceBot负责业务…
细看Java序列化机制
在程序中为了能直接以 Java 对象的形式进行保存,然后再重新得到该 Java 对象,这就需要序列化能力。序列化其实可以看成是一种机制,按照一定的格式将 Java 对象的某状态转成介质可接受的形式,以方便存储或传输。其实想想就大致清楚基本流程,序列化时将 Java 对象相关的类…
机器学习之决策树
决策树是很常见的机器学习分类算法,竟然叫决策树,那么它的模型其实就像树一样。通过对样本集的学习,挖掘出有用的规则。对于程序员来说或许以条件语句来看就更好理解了,决策树可以看成是多个if then条件语句的集合。这种模型等同于我们写的条件语句,所以它的预测分类速度是很快的。 来个…
Tomcat内核、集群、参数及性能
Web服务器与浏览器之间以HTTP协议通信,浏览器要访问服务器即向服务器发送HTTP请求报文。 如图,此处用get方法访问了localhost的8080端口的Web、Index、JSP,服务器返回200状态码并将一些HTTP报文返回到客户端。 从图中可以看到,HTTP报文中的请…
机器学习之支持向量机(SVM)
SVM 即支持向量机,常用于二分类模型。它主要的思想是: 它是特征空间上间隔最大的线性分类器。 对于线性不可分的情况,通过非线性映射算法将低维空间的线性不可分的样本映射到高维特征空间,高维特征空间能够进行线性分析。 对于指定的损失函数,根据一定的样本集就能根据这些样本来计算经验…
我的2017年文章汇总——Java并发篇
近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。 本篇推送java并发相关文章。 公众号的菜单已分为“分布式”、“机器学习”、“深度学习”…
我的2017年文章汇总——自然语言处理篇
近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。 本篇推送nlp相关文章。 公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“N…
从JDK角度认识枚举enum
对于比较稳定的值集合,Java 提供了枚举来定义,通过它可以很方便管理集合。那么 Java 的枚举是通过怎样的机制实现的?本文将从 JDK 角度来看看枚举的原理。 同时也可以使用带构造函数的枚举,如下,可以通过 getName 获取值。 Java中的枚举的实现机制是怎样的?枚举…
基于典型相关分析的词向量
在NLP领域中,为了能表示人类的语言符号,一般会把这些符号转成一种数学向量形式以方便处理,我们把语言单词嵌入到向量空间中就叫词嵌入(word embedding)。 比如有比较流行的谷歌开源的 word2vec ,它能生成词向量,通过该词向量在一定程度上还可以用来度量词与词之间…
我的2017年文章汇总——JDK源码篇
2018已经开始,可能还有360天结束。 Eventually a single thing can only get so big. You need to do something else. 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习…
服务器模型——从单线程阻塞到多线程非阻塞(下)
服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: 这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。 对于I/O,可以分成阻塞…
我的2017年文章汇总——机器学习篇
2018,你跟自己做了约定了吗?为了遇见更好的自己。 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。 本篇推送机器学习相关文章。 鄙人的…
我的2017年文章汇总——Java及中间件篇
2018即将到来,大家看着2017给自己制定的计划有没有感慨?当你觉得过去一年没有什么进步时,那么请行动起来,能开始总是好的。 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、…
服务器模型——从单线程阻塞到多线程非阻塞(中)
服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: 这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。 对于I/O,可以分成阻塞…
我的2017年文章汇总——深度学习篇
2017快过完了,大家过去一年收获如何?不管怎样,保持好心态,未来不迎,当下不杂,既过不恋。 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核…
服务器模型——从单线程阻塞到多线程非阻塞(上)
服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: 这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。 对于I/O,可以分成阻塞…
从JDK源码看字节流和字符流
在各种 IO 中都会涉及到流的概念,比如网络 IO、磁盘IO、内存IO或其他设备IO,于是抽象出流概念,可以分为两大类:输出流和输入流。有了这些抽象就能很方便表达网络从某端传输到另外一端,或对磁盘进行读写操作。而 Java 还分出字节流和字符流,对字节和字符提供了方便的操作。 …
从JDK源码看Reader
Reader 是一个用于读字符流的抽象类,它将一些相通的读相关操作抽象到此类,方便各种读操作类的实现。一般来说子类只需要实现它的 read 和 close 两个方法,但如果有需要还可以重写 Reader 提供的公共方法。 JDK 在 Reader 的基础上实现了很多有用的 xx…