用神经网络训练一个文本分类器
理解聊天机器人的工作原理是非常重要的。聊天机器人内部一个非常重要的组件就是文本分类器。我们看一下文本分类器的神经网络(ANN)的内部工作原理。多层神经网络我们将会使用2层网络(1个隐层)和一个“词包”的方法来组织我们的训练数据。文本分类有3个特点:模式匹配、算法、神经网络。虽然使用多项朴素贝叶斯算法的方法非常有效,但是它有3个致命的缺陷:这个算法输出一个分数而不是一个概率。我们可以使用概率来忽略特定...
View Article如何正确实现 Java 中的 HashCode
相等 和 Hash Code从一般角度来看,Equality 是不错的,但是 hash code 更则具技巧性。如果我们在 hash code上多下点功夫,我们就能了解到 hash code 就是用在细微处去提升性能的。大部分的数据结构使用equals去检查是否他们包含一个元素。例如:List<String> list = Arrays.asList("a", "b", "c");...
View Article区块链原理最清晰最直观的解释
(A minimal blockchain command-line interface.)维基百科上对区块链的描述:维护不断增长的记录(称作区块)的分布式数据库。听上去很简单,但到底是怎么回事呢?我们用一款开源命令行界面 Blockchain CLI来详细说明区块链。我也做了一个 浏览器可以访问的在线版。安装命令行界面首先请确保安装 Node.js然后在终端里运行下面命令:npm install...
View Article详解 Tomcat 的连接数与线程池
前言在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml...
View Article如何开始数据分析
有了数据。我需要一些思路。应该从哪开始?这是个常见的问题。菜鸟数据科学家、分析师,以及刚刚接触数据科学的管理人员,通常有这样的疑问。他们的老板都在承受着压力,得证明花在系统上去收集、存储及组织资料的钱(更不用说还有那些花在数据科学家身上的钱)是有回报的。他们偶尔很幸运——待解决的问题可能非常明确,而且被深入研究过(例如,预测哪个客户可能会取消手机合约)。在这种情况下,有很多种方法来进行数据分析,这是...
View Article聊聊 TCP 中的 KeepAlive 机制
服务端的系统设置中经常会和底层协议打交道,我们有必要重温一下曾经那些“听过”却不熟悉的名词。 今天聊的话题是 KeepAlive,在实际应用中又是怎么使用的?为什么有Keepalive?大家都做过电梯吧,假设电梯来了你先进去,你朋友还没进来,过一段时间电梯门就会自动关闭,...
View Article缓存穿透、缓存并发、热点缓存之最佳招式
一、前言我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题:缓存穿透缓存并发缓存失效缓存穿透注:上面三个图会有什么问题呢?我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意义,在流量大时,...
View ArticleString 常量池和 String#intern()
String是Java基础的重要考点。可问的点多,而且很多点可以横向切到其他考点,或纵向深入JVM。本文略过了String的基本内容,重点在于String#intern()。String常量池String常量可能会在两种时机进入常量池:编译期:通过双引号声明的常量(包括 显示声明、...
View Article移动 APP 网络优化概述
一般开发一个 APP,会直接调用系统提供的网络请求接口去服务端请求数据,再针对返回的数据进行一些处理,或者使用AFNetworking/OKHttp这样的网络库,管理好请求线程和队列,再自动做一些数据解析,就结束了。但对于一些大型...
View Article做 ML 有关的工作,需要哪些技能?
【导读】:有位网友在 Quora 上提问:做与机器学习有关的工作,需要些什么技能呢?我是一个自学者,现在家中自学线性代数。希望有天能在机器学习领域工作,但是我不太确定:a) 这种工作/面试需要什么技术上的技能?b) 有没有什么(做这种工作)必须的相关工作经历比起空想,我至少开始行动了。任何的建议/指导对我来说都很有用。十分感谢!本文摘编了 2 位 Quora 网友的回答。Jonathan A....
View Article网站开发中的字体设置
字体的选择,是网页开发的关键因素之一。合适的字体,对网页的美观度(或可读性)有着举足轻重的影响。由于字体设置在代码实现上非常的简单,导致了大多数开发人员都没有重视。在前端、设计分工协助的状态下很容易导致字体设置成为三不管的状态。衬线体和无衬线体在西文(英文)字体中,最简单的字体分类方式是将字体分为衬线体(serif)与无衬线体(sans-serif)。其中sans在法语中的意思是“没有”。衬线体与无...
View Article优化 MySQL: 3 个简单的小调整
我并不期望成为一个专家级的 DBA,但是,在我优化 MySQL 时,我推崇 80/20 原则,明确说就是通过简单的调整一些配置,你可以压榨出高达 80% 的性能提升。尤其是在服务器资源越来越便宜的当下。警告没有两个数据库或者应用程序是完全相同的。这里假设我们要调整的数据库是为一个“典型”的 Web...
View ArticleJava 虚拟机 7:内存分配原则
前言对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数。垃圾收集器组合一般就是Serial+Serial Old和Parallel+Serial...
View Article消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局
有很多网友留言:公司要做消息中间件选型,该如何选?你觉得哪个比较好?消息选型的确是一个大论题,实则说来话长的事情又如何长话短说。对此笔者专门撰稿一篇内功心法:...
View Article如何定位那些SQL产生了大量的redo日志
在ORACLE数据库的管理、维护过程中,偶尔会遇到归档日志暴增的情况,也就是说一些SQL语句产生了大量的redo log,那么如何跟踪、定位哪些SQL语句生成了大量的redo log日志呢? 下面这篇文章结合实际案例和官方文档“How to identify the causes of High Redo Generation (文档 ID...
View Article五分钟了解Java10针对垃圾收集的改进
Java10 已经发布了大概有一个多月了。我们在之前的文中介绍过10为我们带来的一些新特性: JDK10要来了:下一代 Java 有哪些新特性?。其中就提到了10 关于G1垃圾收集器的一些改进。G1在Java 9的时候已经是被作为默认的垃圾收集器了。如果你了解G1的话,应该知道它是一个更注重低停顿的收集器。有关G1的内容你可以移步...
View Article从Spring-Session源码看Session机制的实现细节
去年我曾经写过几篇和 Spring Session 相关的文章,从一个未接触过 Spring Session 的初学者视角介绍了 Spring Session 如何上手,如果你未接触过 Spring Session,推荐先阅读下「从零开始学习Spring Session」系列:从零开始的Spring Security Session(一)从零开始的Spring Security...
View Articlespring-cloud中zuul的两种隔离机制实验
ZuulException REJECTED_SEMAPHORE_EXECUTION 是一个最近在性能测试中经常遇到的异常。查询资料发现是因为zuul默认每个路由直接用信号量做隔离,并且默认值是100,也就是当一个路由请求的信号量高于100那么就拒绝服务了,返回500。信号量隔离既然默认值太小,那么就在gateway的配置提高各个路由的信号量再实验。routes: linkflow: path:...
View Article