seaboat的专栏——a free boat on the sea.

思想自由,技术自由

排序:
默认
按更新时间
按访问量

Tomcat内核、集群、参数及性能

主题简介: 内核实现原理 分布式集群 生产部署关键参数 性能监控和分析 一、内核实现原理 HTTP Web服务器与浏览器之间以HTTP协议通信,浏览器要访问服务器即向服务器发送HTTP请求报文。 如图,此处用get方法访问了localhost的8080端口的Web、Index、...

2018-01-24 10:34:54

阅读数:1084

评论数:0

我的2017年文章汇总——自然语言处理篇

近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。 本篇推送nlp相关文章。 基于典型相关分析的词向量 来自麻省理工的信息抽取 如何用机器学习对文本分类...

2018-01-14 11:41:30

阅读数:1214

评论数:0

我的2017年文章汇总——JDK源码篇

2018已经开始,可能还有360天结束。 Eventually a single thing can only get so big. You need to do something else. 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”...

2018-01-07 14:08:09

阅读数:2018

评论数:0

我的2017年文章汇总——机器学习篇

2018,你跟自己做了约定了吗?为了遇见更好的自己。近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推送机器学习相关文章。强化学习机器学习之条件随机场(C...

2017-12-31 13:02:58

阅读数:2288

评论数:2

我的2017年文章汇总——Java及中间件篇

2018即将到来,大家看着2017给自己制定的计划有没有感慨?当你觉得过去一年没有什么进步时,那么请行动起来,能开始总是好的。近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“To...

2017-12-29 09:22:59

阅读数:2873

评论数:0

我的2017年文章汇总——深度学习篇

2017快过完了,大家过去一年收获如何?不管怎样,保持好心态,未来不迎,当下不杂,既过不恋。近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推送深度学习相...

2017-12-23 11:22:22

阅读数:1761

评论数:1

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

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

2017-09-28 08:59:15

阅读数:14326

评论数:14

谈谈谷歌word2vec的原理

word2vec在NLP领域中,为了能表示人类的语言符号,一般会把这些符号转成一种数学向量形式以方便处理,我们把语言单词嵌入到向量空间中就叫词嵌入(word embedding)。谷歌开源的word2vec则是这么一种词嵌入工具,它能生成词向量,通过词向量可以很好地度量词与词之间的相似性。word...

2017-08-10 20:14:41

阅读数:3949

评论数:0

开源一个文本分析项目

Githubhttps://github.com/sea-boat/TextAnalyzerTextAnalyzera text analizer that can analyze text. so far, it can extract hot words in a text segment b...

2017-06-12 18:18:42

阅读数:1714

评论数:0

新书预售《Tomcat内核设计剖析》

鄙人的新书《Tomcat内核设计剖析》已经在京东预售了,有需要的朋友可以通过文末的连接进行预定。感谢各位朋友。本书特色? 深入剖析Tomcat的每一个设计要点,使读者知其然,更知其所以然; 拒绝没营养的直接贴代码分析,而是升华到对Tomcat设计思想的剖析; 通篇采用大量插图来辅助文字解释,降低读...

2017-05-03 09:19:23

阅读数:5010

评论数:21

机器学习的监督学习在研究什么

什么是监督学习简单来说,监督学习是对给定的输入输出样本进行学习并建立一个模型,该模型能对任意输入做出好的输出预测。 监督学习核心思想 所有可能的模型函数的集合称为假设空间,$H=\left \{ f|Y=f(X) \right \}$。 对于所有的模型函数集合,可能不知道是该用用逻辑回归模型、或...

2017-03-17 20:05:08

阅读数:2543

评论数:0

分布式系统调用链监控

分布式系统调用链监控 应用架构由集中式向分布式演进后,整个调用关系变得复杂。 分布式架构由复杂且较大规模集群构成,各个应用之间相当独立,可能由不同团队、不同语言实现。 系统一个完整的调用过程可能横跨多个服务及数据中心。 复杂的调用导致系统出问题后难以定位问题。 无法准确知道整体系统性能及运行情况。...

2016-12-23 22:51:51

阅读数:20077

评论数:25

如何设计一个数据库中间件(支持百亿级别数据存储)

继《如何设计开发一个可用的web容器》之后又一如何系列文章,《如何设计一个数据库中间件》

2016-05-08 10:27:06

阅读数:11728

评论数:5

web安全认证机制知多少

如今web服务随处可见,成千上万的web程序被部署到公网上供用户访问,有些系统只针对指定用户开放,属于安全级别较高的web应用,他们需要有一种认证机制以保护系统资源的安全,本文将探讨五种常用的认证机制及优缺点。Basic模式HTTP协议规范中有两种认证方式,一种是Basic认证,另外一种是Dige...

2016-05-07 08:37:24

阅读数:15572

评论数:0

如何设计一个web容器

开发一个web容器涉及很多不同方面不同层面的技术,例如通信层的知识,程序语言层面的知识等等,且一个可用的web容器是一个比较庞大的系统,要说清楚需要很长的篇幅,本文旨在介绍如何设计一个web容器,只探讨实现的思路,并不涉及过多的具体实现。把它分解划分成若干模块和组件,每个组件模块负责不同的功能,下...

2016-02-14 10:20:45

阅读数:13439

评论数:12

集群RPC通信

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

2015-11-20 13:39:20

阅读数:5502

评论数:0

内存数据网格hazelcast的一些机制原理

hazelcast使用文档可以直接看官方文档,但机制原理相关的资料基本没有,本人硬撸源码写的一些东西,跟大家分享一下。

2015-08-03 16:53:51

阅读数:3774

评论数:1

一图简看基于搜索的问答机器人设计

前言 对于 chatbot,现在学界更流行的实现方式是基于深度学习和强化学习,比如seq2seq模型,具体可参考前面的文章《深度学习的seq2seq模型》。 而对于工业界,直接用 seq2seq 模型来实现端对端的还是几乎没有的,但在很多模块的处理也开始引入深度学习,除此之外也会尝试使用强化学...

2018-05-22 08:48:05

阅读数:212

评论数:0

Java9后String的空间优化

前言 据我所知 Java 开发人员几乎任何时候都会想到 String,字符串确实已经成为最常用的类了,而且是大量使用。我们都知道,String 其实是封装了字符,里面必须由字符或字节数组来存放,从 Java9 开始 Java 语言开发者对 String 做了一些空间的优化。 从char到b...

2018-05-19 09:33:21

阅读数:133

评论数:0

双向循环神经网络+条件随机场进行分词

前言 目前 NLP 领域的很多任务基本都会朝深度学习、注意力模型、半监督等方向发展,而且确实也取得了更好的效果,而有些也会把深度学习和传统机器学习结合起来,都能有不错的性能提升。这里讲一个用深度学习和机器学习结合来做分词。 关于分词 分词就是将一句话按照最合理的单词分开,英语一般就没有这...

2018-05-16 08:25:48

阅读数:104

评论数:0

Java对象在JVM中长啥样

前言 Java 是门面向对象的开发语言,那么我们自己编写的 Java 类生成的对象是什么样的?它肯定保存在虚拟机的内存中,但它以怎样的结构来保存的呢?带着疑问往下看看。 关于Klass Java 层的开发可能不太熟悉 Klass,但肯定熟悉 class,我们只要知道 Klass 是 cl...

2018-05-12 08:14:50

阅读数:266

评论数:0

神经网络原理的可视化

前言 神经网络具有很强的学习能力和自适应自组织能力,而且随着隐含层的数量增大学习能力也将变得更强,因此目前很多场景都使用神经网络,比如深度学习,我们更熟悉的就是阿法狗。 关于神经网络 神经网络已经有很多变种,比如卷积神经网络、循环神经网络等等。 感知器是一种最基础的神经网络,他只有输入...

2018-05-09 09:45:32

阅读数:374

评论数:1

读《Linux之父自传-只是为了好玩》

前言 很久前看了《Linux之父林纳斯自传-只是为了好玩》,趁有空写下些东西。Linux几乎作为最伟大的开源项目,我觉得跟机器打交道的人都应该了解下它是怎么诞生的。 关于林纳斯 就是那个很在意自己长了个大鼻子的人,1969年出生,从小受外公影响并从十一岁就开始捣鼓计算机,而且成功写出了自...

2018-05-06 09:18:50

阅读数:152

评论数:0

Java线程的调度

线程调度一般指的是系统为线程分配处理器使用权的过程,这个过程会产生上下文切换,即操作系统的CPU利用时间片轮转的方式给每个任务分配一定的执行时间,然后把当前任务状态保存下来,接着加载下一任务的状态并执行,它是一个状态保存与加载的过程。 一般线程调度模式分为两种——抢占式调度和协同式调度。 抢占...

2018-05-03 08:28:59

阅读数:257

评论数:0

Java线程的CPU时间片

Java中线程会按优先级分配CPU时间片运行,那么线程什么时候放弃CPU的使用权?可以归类成三种情况: 当前运行线程主动放弃CPU,JVM暂时放弃CPU操作(基于时间片轮转调度的JVM操作系统不会让线程永久放弃CPU,或者说放弃本次时间片的执行权),例如调用yield()方法。 当前运行线程因...

2018-04-29 10:04:17

阅读数:170

评论数:0

如何生成指定分布的随机数

前言 对于随机数平时我们还是比较常用的,一般都会直接通过各种语言原生自带的随机函数,比如 c++ 中有random()函数,java 中有 Random 类,python 有 random 模块等等。都能很方便生成随机变量,但它们有一个特点,那就是都服从均匀分布,而有些场景需要要生成不同分布的随...

2018-04-26 08:42:19

阅读数:328

评论数:0

乐观的并发策略——基于CAS的自旋

悲观者与乐观者的做事方式完全不一样,悲观者的人生观是一件事情我必须要百分之百完全控制才会去做,否则就认为这件事情一定会出问题;而乐观者的人生观则相反,凡事不管最终结果如何,他都会先尝试去做,大不了最后不成功。这就是悲观锁与乐观锁的区别,悲观锁会把整个对象加锁占为自有后才去做操作,乐观锁不获取锁直接...

2018-04-22 09:41:21

阅读数:629

评论数:0

智能算法之提升方法

提升方法 提升方法的核心思想是通过将多个效果很一般的分类器(弱分类器)组合起来综合考虑,以实现一个效果较好的分类器,这就像“三个臭皮匠赛过诸葛亮”。弱学习者学习出来的效果可能只比随机分类器效果好一点,于是有人提出用一个弱分类器集合生成一个强分类器。 因为是将弱分类器提升为强分类器,所以叫提升方...

2018-04-19 09:57:13

阅读数:103

评论数:0

悲观的并发策略——synchronized互斥锁

互斥锁是最常见的同步手段,在并发过程中,当多条线程对同一个共享数据竞争时,它保证共享数据同一时刻只能被一条线程使用,其他线程只有等到锁释放后才能重新进行竞争。 对于Java开发人员,最熟悉的肯定就是用synchronized关键词完成锁功能,在涉及到多线程并发时,对于一些变量,你应该会毫不犹豫地...

2018-04-16 08:47:59

阅读数:839

评论数:0

条件随机场实现命名实体识别

前言 NLP 被很多人称为人工智能皇冠上的明珠,可见其在 AI 领域的重要性,而命名实体识别(NER)又一直是 NLP 领域的研究热点,所以这块任务是 NLP 必谈的。 NER 早期的实现主要是基于词典和规则,然后是基于传统的机器学习,比如 HMM、MEMM 和 CRF。随后深度学习崛起则很多...

2018-04-12 08:39:16

阅读数:265

评论数:0

深入谈谈String.intern()在JVM的实现

前言 String 类的intern方法可能大家比较少用也比较陌生,虽然实际项目中并不太建议使用intern方法,可以在 Java 层来实现类似的池,但我们还是要知道它的原理机制不是。 关于intern方法 通过该方法可以返回一个字符串标准对象,JVM 有一个专门的字符串常量池来维护这...

2018-04-09 08:27:44

阅读数:323

评论数:0

双向循环神经网络及TensorFlow实现

前言 循环神经网络得益于其记忆功能使其擅长处理序列方面的问题,它能提取序列之间的特征,进而对序列输出进行预测。比如我说“我肚子饿了,准备去xx”,那么根据前面的序列输入来预测“xx”很可能就是“吃饭”。 单向循环神经网络 所谓的单向循环神经网络其实就是常见的循环神经网络,可以看到t时刻、...

2018-04-03 09:06:25

阅读数:1066

评论数:0

JVM的ServerSocket是怎么实现的(下)

概况 JDK 为我们提供了 ServerSocket 类作为服务端套接字的实现,通过它可以让主机监听某个端口而接收其他端的请求,处理完后还可以对请求端做出响应。它的内部真正实现是通过 SocketImpl 类来实现的,它提供了工厂模式,所以如果自己想要其他的实现也可以通过工厂模式来改变的。 ...

2018-03-30 08:44:35

阅读数:255

评论数:0

JVM的ServerSocket是怎么实现的(上)

概况 JDK 为我们提供了 ServerSocket 类作为服务端套接字的实现,通过它可以让主机监听某个端口而接收其他端的请求,处理完后还可以对请求端做出响应。它的内部真正实现是通过 SocketImpl 类来实现的,它提供了工厂模式,所以如果自己想要其他的实现也可以通过工厂模式来改变的。 ...

2018-03-28 08:21:17

阅读数:375

评论数:0

卷积神经网络文本分类

前言 卷积神经网络(CNN)在图像处理领域取得了很大的成绩,它的卷积和池化结构能很好提取图像的信息,而在 NLP 领域循环神经网络(RNN)则使用的更多,RNN 及其各种变种因拥有记忆功能使得它们更擅长处理上下文。但 NLP 领域很多方面使用 CNN 取得了出色的效果,比如语义分析、查询检索、文...

2018-03-24 10:14:23

阅读数:1416

评论数:0

mysql协议

文章列表 mysql 协议的服务端握手包及对其解析 mysql 协议的认证包及解析 mysql 协议的OK包及解析 mysql 协议的错误包及解析 mysql 协议的退出命令包及解析 mysql 协议的ping命令包及解析 m...

2018-03-20 09:27:28

阅读数:324

评论数:0

本地方法怎么映射Java层的数据类型

前言 Java 语言上定义了不同的数据类型,比如有基础类型int、double等等,还有所有类的父类Object等,这些都是 Java 层面的类型,而使用本地方法的处理过程需要有它们对应的类型。 大概的流程 Java 层编写的本地方法,被编译器编译为字节码,字节码将按照规范将不同类型的参...

2018-03-16 08:57:55

阅读数:326

评论数:0

文本分析——分配单词权重

前言 文本处理中很多时候会需要给每个单词分配权重,有了权重以便后续进一步处理。常用的算法主要是TF-IDF。 TF TF,即Term Frequency。我们可以将文档看成由若干词(term)组成,那么文档中某个term出现的频率就是TF。词频和词权重存在关系,可以用来作为词权重的衡量因...

2018-03-13 08:50:27

阅读数:330

评论数:0

System.arraycopy为什么快

前言 在 Java 编程中经常会遇到数组拷贝操作,一般会有如下四种方式对数组进行拷贝。 * for遍历,遍历源数组并将每个元素赋给目标数组。 * clone方法,原数组调用clone方法克隆新对象赋给目标数组,更深入的克隆可以看之前的文章《从JDK角度看对象克隆》。 * System.ar...

2018-03-10 08:25:14

阅读数:1031

评论数:0

近期的爬虫工作杂谈

前言 最近在做自然语言理解处理相关的东西,主要是信息抽取方面的需求,由于没有好的公开数据集用作训练及测试,于是只能先自己去权威平台上爬取收集数据,所以这就涉及到了爬虫。 关于语言 写爬虫用什么语言?由于我较熟且常用的大语言是 java、c++ 和 python。所以用这三种语言写爬虫其实...

2018-03-06 08:59:07

阅读数:418

评论数:0

从JDK源码看Java域名解析

前言 在互联网中通信需要借助 IP 地址来定位到主机,而 IP 地址由很多数字组成,对于人类来说记住某些组合数字很困难,于是,为了方便大家记住某地址而引入主机名和域名。 早期的网络中的机器数量很少,能很方便地通过 hosts 文件来完成主机名称和 IP 地址的映射,这种方式需要用户自己维护网络...

2018-03-03 08:44:37

阅读数:736

评论数:0

智能算法之隐马尔可夫模型(HMM)

前言 前面的《马尔科夫模型》主要是研究能直接观察到的序列的概率问题,通过马尔科夫假设能建立起马尔科夫链,从而解决一些序列问题。但有时候观察的对象并不是我们待处理的目标对象,它的规律隐含在观察对象中,观察的事件和隐含事件存在一定的相关关系,这时候就要用到隐马尔科夫模型(HMM)。 比如nlp中常...

2018-02-27 08:31:53

阅读数:266

评论数:0

从JDK角度看对象克隆

对象克隆 对象克隆其实是很常见的操作,它完成的功能是将现有对象内容(属性)拷贝到新的对象中,得到的是一个新的对象,而并不只是一个对象引用。 其实对于属性不多的对象我们可以直接通过编写代码逐一属性复制,比如我们可以直接 new 一个新对象,然后通过 set 方法将属性值一个个设置进去。但这种做法...

2018-02-23 08:34:09

阅读数:682

评论数:0

智能算法之马尔可夫模型

前言 可能大家更常见到隐马尔科夫模型(HMM),马尔科夫模型可以看成是一个更基础的模型,它是对能直接观察到的事件进行建模,所以与HMM相对应,有时也叫它为显马尔科夫(VMM)。马尔科夫模型要处理的是序列问题,核心思想就是统计所有样本的过程,得到系统中状态之间的转移概率。 马尔可夫过程 马...

2018-02-10 09:25:01

阅读数:354

评论数:0

HTTPS杂记

交互过程 主要缺点 网络耗时(比HTTP多了交互次数)。 加解密耗时。 比HTTP慢几百毫秒以上,页面加载时间增加了50%,增加10%到20%的耗电 耗时分析 可能浏览器需要由http跳转到https的耗时,用户使用http需要服务端返回302强制跳转https。 接着经过某...

2018-02-07 09:08:05

阅读数:535

评论数:0

一图简看智能聊天机器人的设计

(早前的一个智能聊天机器人设计,实际使用中已经改了很多了。) 简述 主要分三块: * SuperRobot 框架主体。 * 自然语言理解系统。 * 词向量Trainer。 SuperRobot AliceBot负责闲聊,采用AIML Engine,属于rulebased...

2018-02-03 10:19:59

阅读数:1016

评论数:0

细看Java序列化机制

概况 在程序中为了能直接以 Java 对象的形式进行保存,然后再重新得到该 Java 对象,这就需要序列化能力。序列化其实可以看成是一种机制,按照一定的格式将 Java 对象的某状态转成介质可接受的形式,以方便存储或传输。其实想想就大致清楚基本流程,序列化时将 Java 对象相关的类信息、属性及...

2018-01-31 08:35:06

阅读数:531

评论数:0

机器学习之决策树

前言 决策树是很常见的机器学习分类算法,竟然叫决策树,那么它的模型其实就像树一样。通过对样本集的学习,挖掘出有用的规则。对于程序员来说或许以条件语句来看就更好理解了,决策树可以看成是多个if then条件语句的集合。这种模型等同于我们写的条件语句,所以它的预测分类速度是很快的。 例子 来...

2018-01-28 10:03:06

阅读数:713

评论数:1

机器学习之支持向量机(SVM)

SVM SVM 即支持向量机,常用于二分类模型。它主要的思想是: 1. 它是特征空间上间隔最大的线性分类器。 2. 对于线性不可分的情况,通过非线性映射算法将低维空间的线性不可分的样本映射到高维特征空间,高维特征空间能够进行线性分析。 结构风险 对于指定的损失函数,根据一定的样本集就...

2018-01-20 10:06:01

阅读数:341

评论数:0

我的2017年文章汇总——Java并发篇

近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。 本篇推送java并发相关文章。 从JDK源码角度看并发的原子性如何保证 从JDK源码角度看java并发...

2018-01-16 19:51:05

阅读数:1964

评论数:0

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