自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 服务器模型——从单线程阻塞到多线程非阻塞(上)

前言的前言    服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分:单线程/多线程阻塞I/O模型单线程非阻塞I/O模型多线程非阻塞I/O模型,Reactor及其改进前言    这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。    对于I/O,可以

2017-12-21 00:00:00 1780 1

原创 从JDK源码看字节流和字符流

在各种 IO 中都会涉及到流的概念,比如网络 IO、磁盘IO、内存IO或其他设备IO,于是抽象出流概念,可以分为两大类:输出流和输入流。有了这些抽象就能很方便表达网络从某端传输到另外一端,或对磁盘进行读写操作。而 Java 还分出字节流和字符流,对字节和字符提供了方便的操作。从JDK源码看InputStream从JDK源码看OutputStream从JDK源码看Writer从JDK源码看Reade

2017-12-18 00:00:00 310

原创 自然语言处理的中文文本相似度

前言    人与计算机的交互过程中,如果能提供人类的自然语言形式来进行交流,那么人与计算机就能更加亲密友好。而要实现这一机制就需要自然语言处理来处理,一般来说自然语言处理会涉及几个学科:计算机科学、语言学、统计学和数学等。    不同语言的自然语言处理也存在差别,对于中文来说,很多时候都无法直接套用英语自然语言处理中相对成熟的理论。有很多基础工作也是需要我们自己去做,而这包括了中文相似度。相似度

2017-12-14 00:00:00 4404

原创 JDK不同操作系统的FileSystem(Windows&Unix-like)

前言    我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类    JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileS

2017-12-11 00:00:00 499

原创 典型相关分析如何分析两组变量的关系

前言    我们在分析两组变量之间的相关性时,比如和,最原始的方法就是直接计算X和Y的协方差矩阵,矩阵有m*n个值。有了协方差矩阵就得到了两两变量之间的相关性,比如c_ij就是变量X_i和Y_j的相关性。    这种分析方法只考虑了c_ij变量X_i和Y_j变量单个维度之间的相关性,没有考虑X和Y内部之间的相关性。另外协方差矩阵的形式也比较繁琐。典型相关分析    采用类似主成分分析的思想,分别找

2017-12-07 00:00:00 21936

原创 集群RPC通信该怎么做

RPC    RPC即远程过程调用,它的提出旨在消除通信细节、屏蔽繁杂且易错的底层网络通信操作,像调用本地服务一般地调用远程服务,让业务开发者更多关注业务开发而不必考虑网络、硬件、系统的异构复杂环境。RPC过程    先看看集群中RPC的整个通信过程,假设从节点node1开始一个RPC调用,先将待传递的数据放到NIO集群通信框架中;由于使用的是NIO模式,线程无需阻塞直接返回;由于与集群其他节点通

2017-12-05 00:00:00 546

原创 Tomcat如何实现Comet

Comet模式是一种服务器端推技术,它的核心思想提供一种能让当服务器端往客户端发送数据的方式。Comet模式为什么会出现?刚开始人们在客户端通过不断自动刷新整个页面来更新数据,后来觉得体验不好又使用了AJAX不断从客户端轮询服务器更新数据,然后是使用Comet模式由服务器端通过长连接推数据。Comet模式能大大减少发送到服务器端的请求从而避免了很多开销,而且它还具备更好的实时性。    如图所示,

2017-12-02 00:00:00 476

转载 JDK不同操作系统的FileSystem(Windows)下篇

前言    我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类    JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileS

2017-11-30 00:00:00 730

转载 n元语法

语言模型    在统计自然语言处理中语言模型是很重要的一块,常用的语言模型是n元语法模型,当然现在比较流行的还有神经网络语言模型。n元语法模型需要额外的平滑处理,而神经网络语言模型则不必,它自带平滑效果。n元语法    n元语法(n-gram)是NLP中很重要的统计语言模型,简单来说就是计算某个句子出现的概率,比如“我今天上班迟到了”这句话在整个语言下的概率,一般我们会通过一个大的语料库来进行统计

2017-11-28 00:00:00 1666

转载 ​Tomcat的类加载器

Tomcat拥有不同的自定义类加载器,以实现对各种资源库的控制。一般来说,Tomcat主要用类加载器解决以下4个问题。同一个Web服务器里,各个Web项目之间各自使用的Java类库要互相隔离。同一个Web服务器里,各个Web项目之间可以提供共享的Java类库。为了使服务器不受Web项目的影响,应该使服务器的类库与应用程序的类库互相   独立。对于支持JSP的Web服务器,应该支持热插拔(HotSw

2017-11-25 00:00:00 259

转载 主成分分析(PCA)

前言    主成分分析是一种统计学方法,它主要通过降维来简化数据结构,将多个变量转化成少数的几个综合变量,而综合变量能很好地表达原来多个变量的大部分信息,变量之间需要要具备相关性,而经过分析后的变量之间没有相关性。基本原理    简单从感性角度来了解它的原理就是,比如有两个变量,如下图,看起来它俩的信息量差不多,这时不能忽略某个变量进行降维。    创建一个新的坐标体系

2017-11-23 00:00:00 740

转载 JDK不同操作系统的FileSystem(Windows)中篇

前言    我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类    JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则

2017-11-20 00:00:00 805 1

转载 机器学习之牛顿法

泰勒公式    首先看泰勒公式,对于函数,如果函数平滑且某点存在各阶导数,则可以用一个多项式来描述该点邻域的近似值。公式如下:牛顿法    牛顿法一般用来求解方程的根和求解极值。    数值优化算法除了梯度下降法外还有比较常用的一种方法是牛顿法。对于非线性方程,可以用牛顿迭代法进行求解,它收敛速度快。    基本思想是:对于非线性函数f(x),根据泰勒公式得到x附近

2017-11-16 00:00:00 207

原创 JDK不同操作系统的FileSystem(Windows)上篇

前言    我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类    JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则

2017-11-13 00:00:00 613 1

原创 机器学习之条件随机场(CRF)

什么是CRF    CRF即条件随机场(Conditional Random Fields),是在给定一组输入随机变量条件下另外一组输出随机变量的条件概率分布模型,它是一种判别式的概率无向图模型,既然是判别式,那就是对条件概率分布建模。    CRF较多用在自然语言处理和图像处理领域,在NLP中,它是用于标注和划分序列数据的概率化模型,根据CRF的定义,相对序列就是给定观测序列X和输出序列

2017-11-09 00:00:00 558

原创 从JDK源码看InputStream

概况    JDK 给我们提供了很多实用的输入流 xxxInputStream,而 InputStream 是所有字节输入流的抽象。包括 ByteArrayInputStream 、FilterInputStream 、BufferedInputStream 、DataInputStream 和 PushbackInputStream 等等。继承结构--java.lang.Obje

2017-11-07 00:00:00 189

原创 Tomcat的BIO和NIO一些问题

前言最近一些朋友通过书籍找到我,问了一些关于tomcat中BIO和NIO的问题,这里列一下方便需要的朋友。后续也将前面有朋友问的问题整理下。。问只把 Tomcat 的 bio 模式改为 nio 模式,是否能提高服务器的吞吐量?发现在配置一样的情况下,两种模式压出来的吞吐量差不多。答要看你系统是不是整个都异步化了,因为tomcat的nio只是将网络io异步化了

2017-11-05 00:00:00 944

原创 来自麻省理工的信息抽取

MITIEMITIE 即 MIT 的 NLP 团队发布的一个信息抽取库和工具。它是一款免费且先进的信息抽取工具,目前包含了命名实体抽取、二元关系检测功能,另外也提供了训练自定义抽取器和关系检测器的工具。MITIE 是核心代码是使用 C++ 写的,建立在高性能的机器学习库 dlib 上。MIT 团队给我们提供了一些已训练好了的模型,这其中包含了英语、西班牙语和德语,这些模型都使用了大

2017-11-02 00:00:00 561

原创 从JDK源码看Writer

概况Writer 是一个用于写字符流的抽象类,它将一些相通的写相关操作抽象到此类,方便各种写操作类的实现。一般来说子类只需要实现它的 write、flush 、close 等三个方法,但如果有需要还可以重写 Writer 提供的公共方法。JDK 在 Writer 的基础上实现了很多有用的 xxxWriter ,包括 BufferedWriter、CharArrayWriter、Fi

2017-10-30 00:00:00 307

原创 如何使用中文维基百科语料

前言在做自然语言处理时很多时候都会需要中文语料库,高质量的中文语料库较难找,维基百科和百度百科算是比较不错的语料库。其中维基百科会定时将语料库打包发布 https://dumps.wikimedia.org/zhwiki/ ,可以下载最新版本的语料库。而百度百科则需要自己去爬,不过也有人把爬好的语料贡献出来了,https://pan.baidu.com/share/init?surl=i3

2017-10-26 00:00:00 1116

原创 从JDK源码看关闭钩子

关闭钩子   Java提供了Shutdown Hook机制,它让我们在程序正常退出或者发生异常时能有机会做一些清场工作。使用的方法也很简单,Java.Runtime.addShutdownHook(Thread hook)即可。关闭钩子其实可以看成是一个已经初始化了的但还没启动的线程,当JVM关闭时会并发地执行注册的所有关闭钩子。钩子执行时机    向JVM注册关闭钩子后的

2017-10-23 00:00:00 234

原创 强化学习

前言    机器学习可以大致分为四类:监督学习无监督学习半监督学习强化学习    监督学习是利用标记了的样本进行学习,无监督学习则是使用未标记的样本进行学习,这两个是我们最常见的。半监督学习则是样本中只有少量带标记的样本,多数样本都未标记,利用这些样本进行学习。强化学习则是很不同的一种学习方式,它没有规则的训练样本和标签,主要通过奖励和惩罚达到学习的

2017-10-19 00:00:00 584

原创 从JDK源码看System.exit

前言    在编写的Java程序中有时会遇到用 System.exit 来关闭JVM,其中调用 exit 方法时会包含一个状态参数n,即System.exit(n)。这其实是一个约定值,如果为0则表示正常关闭,而非0则表示非正常关闭。这里我们从JDK源码看下不同状态都是怎么处理的。System与Runtime    先看System类的exit方法如下,可以看到它是间接调用了Runti

2017-10-16 00:00:00 489

原创 深度学习的Attention模型

前言    前面看到谷歌发表的运用在机器翻译上的论文《Attention is all you need》,很是让人惊讶,这是一种全新的模型,与之前的经典的seq2seq模型改动较大,它完全摒弃了RNN或CNN神经网络,大大简化了模型的复杂度,而且效果还相当好。当然Attention模型可以单独使用,但这篇文章我们来看看Attention的机制及怎么与经典的seq2seq结合。seq2se

2017-10-12 00:00:00 736

原创 从JDK源码角度看Float

关于IEEE 754在看Float前需要先了解IEEE 754标准,该标准定义了浮点数的格式还有一些特殊值,它规定了计算机中二进制与十进制浮点数转换的格式及方法。规定了四种表示浮点数值的方法,单精确度(32位)、双精确度(64位)、延伸单精确度(43位以上)与延伸双精确度(79位以上)。多数编程语言支持单精确度和双精确度,这里讨论的Float就是Java的单精确度的实现。浮点数的表

2017-10-09 00:00:00 569

原创 如何用TensorFlow训练聊天机器人(附github)

前言        实际工程中很少有直接用深度学习实现端对端的聊天机器人,但这里我们来看看怎么用深度学习的seq2seq模型来实现一个简易的聊天机器人。这篇文章将尝试使用TensorFlow来训练一个基于seq2seq的聊天机器人,实现根据语料库的训练让机器人回答问题。seq2seq        关于seq2seq的机制原理可看之前的文章《深度学习的seq2seq模型》。

2017-09-28 00:00:00 1626

原创 Java安全管理器

总的来说,Java安全应该包括两方面的内容,一是Java平台(即是Java运行环境)的安全性;二是Java语言开发的应用程序的安全性。由于我们不是Java本身语言的制定开发者,所以第一个安全性不需要我们考虑。其中第二个安全性是我们重点考虑的问题。        一般我们可以通过安全管理器机制来完善安全性,安全管理器SecurityManager是安全的实施者,可对此类进行扩展,它提供了加在

2017-09-25 00:00:00 325

原创 隐马尔可夫模型的Viterbi解码算法

前言        前面在做自然语言处理时涉及到一些词性标注的工作,一般会使用隐马尔科夫模型(HMM)来实现词性标注,而HMM模型的解码实现算法一般就会使用Viterbi算法。关于穷举法        HMM模型有多种应用,这里说的是其中一个常见应用,即根据观察序列找到最可能的隐含状态序列。最朴素的想法就是直接穷举所有可能的隐含状态序列,并计算出每个组合成的状态序列的概率,概率最大的那

2017-09-21 00:00:00 762

原创 从JDK源码角度看Long

(公众号不支持代码格式,可到原文阅读)概况Java的Long类主要的作用就是对基本类型long进行封装,提供了一些处理long类型的方法,比如long到String类型的转换方法或String类型到long类型的转换方法,当然也包含与其他类型之间的转换方法。除此之外还有一些位相关的操作。继承结构--java.lang.Object  --java.lang.Numb

2017-09-19 00:00:00 419

原创 TensorFlow实现seq2seq

前言前面在《深度学习的seq2seq模型》文章中已经介绍了seq2seq结构及其原理,接下去这篇文章将尝试使用TensorFlow来实现一个seq2seq网络结构,该例子能通过训练给定的训练集实现输入某个序列输出某个序列,其中输入序列和输出序列相同,这里选择使用LSTM模型。训练样本集为方便起见这里使用随机生成的序列作为样本,序列的长度也是随机的且在指定的范围内。L

2017-09-14 00:00:00 457

原创 volatile足以保证数据同步吗

在讨论之前必须先搞清四种存储介质:寄存器、高级缓存、RAM和ROM。        RAM与ROM大家都比较熟悉了,可以看成是我们经常说的内存与硬盘,寄存器属于处理器里面的一部分,而高级缓存cache是CPU设计者为提高性能引入的一个缓存,也可以说是属于处理器的一部分。在利用CPU进行运算时必定涉及操作数的读取,假如CPU直接读取ROM,那么这个读取速度简直是无法忍受的,于是引入了内存RAM,

2017-09-11 00:00:00 666

原创 深度学习的seq2seq模型

从rnn结构说起        根据输出和输入序列不同数量rnn可以有多种不同的结构,不同结构自然就有不同的引用场合。如下图,one to one 结构,仅仅只是简单的给一个输入得到一个输出,此处并未体现序列的特征,例如图像分类场景。one to many 结构,给一个输入得到一系列输出,这种结构可用于生产图片描述的场景。many to one 结构,给一系列输入得

2017-09-07 00:00:00 954

原创 从ASCII聊起

在互联网的世界,端与端之间传递的报文都是未经过编码的字节流,每8位组成1个字节,计算机以二进制为基础,这是由于使用晶体管的开合状态表示1和0,这样8个电晶体管就可以组成一个字节,这正是应用层使用的最小单位——字节。        在通过Socket进行网络通信的程序中,假如我们在接收到报文时不知道通过什么编码才能正确解码,最好的办法就是用Socket读取字节流,在确认编码后再对这些字节流进

2017-09-04 00:00:00 198

原创 TensorFlow构建循环神经网络

前言        前面在《循环神经网络》文章中已经介绍了深度学习的循环神经网络模型及其原理,接下去这篇文章将尝试使用TensorFlow来实现一个循环神经网络,该例子能通过训练给定的语料生成模型并实现对字符的预测。这里选择使用最原始的循环神经网络RNN模型。语料库的准备        这里就简单用纪伯伦的《On Friendship》作为语料吧。RNN简要说明        用下面两张图简要说明

2017-08-29 00:00:00 438

原创 如何用TensorFlow训练词向量

前言        前面在《谈谈谷歌word2vec的原理》文章中已经把word2vec的来龙去脉说得很清楚了,接下去这篇文章将尝试根据word2vec的原理并使用TensorFlow来训练词向量,这里选择使用skip-gram模型。语料库的准备        这里仅仅收集了网上关于房产新闻的文章,并且将全部文章拼凑到一起形成一个语料库。skip-gram简要说明        skip-gram

2017-08-24 00:00:00 1044

空空如也

空空如也

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

TA关注的人

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