[case13]NLP系统体系结构及主要流程

2018-04-01
阅读 2 分钟
7k
序 本文主要梳理下NLP系统的体系结构及流程。 NLP架构 此图来自【立委科普:自然语言系统架构简说】 主要流程步骤 分/切词(Tokenization) 词性标注(POS Tagging) 语义组块(Chunking) 命名实体标注(Named Entity Tagging) 前面几个主要属于nlp的浅层分析任务,即序列标注任务。 句法分析 文本/语义分析 中文分词 中文不像...

java10下编译lombok注解的代码

2018-03-31
阅读 7 分钟
9.3k
当前release版本(1.16.20)的lombok在java10下面编译有点小问题,不过可以使用最新的snapshot版本1.16.21来解决。

使用opennlp自定义命名实体

2018-03-30
阅读 3 分钟
4.3k
opennlp使用<START> 及 <END>来进行自定义标注实体,命名实体的话则在START之后用冒号标明,比如<START:person>

Java10的新特性

2018-03-29
阅读 6 分钟
15.6k
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java18的新特性Java19的新特性Java20的新特性Java21的新特性Java22的新特性Java23的新特性Java24的新特性序本文...

使用kotlin改善java代码

2018-03-28
阅读 2 分钟
2.6k
序 本文主要举几个kotlin如何改善java代码的例子 字符串字面值及模板 字符串字面值 {代码...} 有了字符串字面值,写sql啥的就不用那么费劲拼接字符串了 字符串模板 {代码...} 这个字符串模板更是强大,相当于内置一个freemarker,而且都不用手工传递变量值 for循环中获取当前index {代码...} 在java里头for each循环要得...

java10系列(二)Local-Variable Type Inference

2018-03-27
阅读 4 分钟
3.7k
引入var是一把双刃剑,一方面简化了代码,但是同时可能影响了可读性,特别是那些你不熟悉的类型。为此Stuart W. Marks给出了一份使用指南Style Guidelines for Local Variable Type Inference in Java。其主要观点如下:

openresty下lua的function定义及调用

2018-03-26
阅读 2 分钟
6.9k
从源码可以看出,基本是定义一个_M变量,里头有个_VERSION属性,然后定义_M的function,最后返回_M。另外注意自己定义的类库需要放在openresty查找的路径下面,否则会报错。

[case12]演进式架构

2018-03-25
阅读 3 分钟
3.8k
An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

easy-rules小试牛刀

2018-03-24
阅读 5 分钟
14k
序 本文主要研究下easy-rules。 easy-rules是一款轻量级的规则引擎。 maven {代码...} Rule创建方式 基于mvel表达式 easy-rules首先集成了mvel表达式,后续可能集成SpEL 配置文件 {代码...} 加载运行 {代码...} 注解方式 {代码...} @Rule可以标注name和description属性,每个rule的name要唯一,如果没有指定,则RuleProx...

springboot2自定义statsd指标前缀

2018-03-23
阅读 6 分钟
3.3k
springboot2引入了micrometer,1.x版本的spring.metrics.export.statsd.prefix在2版本中已经被标记为废弃,但是2版本没有给出对应的配置项。

命令行一键切换java版本的几种方式

2018-03-22
阅读 3 分钟
7.5k
java现在版本发布相对以前比较频繁了,java9还没来得及用,java10就出来了,2018年9月份java11也要来了,于是就有需求在笔记本电脑上装多个版本的java,一键切换就变得极为迫切。

java10系列(一)Time-Based Release Versioning

2018-03-21
阅读 2 分钟
3.3k
可以看到10版本的版本号命名编号了,新增了GA的日期,方便开发者知道这个版本已经发布了多久,好评估是否有安全问题、bug之类的,看是否需要升级到最新版

springboot2上报metrics到statsd

2018-03-20
阅读 13 分钟
3.7k
micrometer-registry-statsd-1.0.1-sources.jar!/io/micrometer/statsd/StatsdFlavor.java

micrometer自定义metrics

2018-03-19
阅读 8 分钟
9.1k
序 本文主要研究下如何使用自定义micrometer的metrics 实例 DemoMetrics {代码...} 这里实现了MeterBinder接口的bindTo方法,将要采集的指标注册到MeterRegistry 注册 原始方式 {代码...} springboot autoconfigure {代码...} 在springboot只要标注下bean,注入到spring容器后,springboot会自动注册到registry。springb...

[case11]spring security reactive获取security context

2018-03-18
阅读 7 分钟
6.4k
springboot2支持了webflux的异步模式,那么传统的基于threadlocal的SecurityContextHolder就不管用了。spring security5.x也支持了reactive方式,这里就需要使用reactive版本的SecurityContextHolder

聊聊springboot2的micrometer

2018-03-17
阅读 11 分钟
16k
springboot2在spring-boot-actuator中引入了micrometer,对1.x的metrics进行了重构,另外支持对接的监控系统也更加丰富(Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront)。1.x的metrics都有点对齐dropwizard-metrics的味道,而micrometer除了一些基本metrics与drop...

聊聊reactor异步线程的变量传递

2018-03-16
阅读 5 分钟
9.7k
在传统的请求/应答同步模式中,使用threadlocal来传递上下文变量是非常方便的,可以省得在每个方法参数添加公用的变量,比如当前登录用户。但是业务方法可能使用了async或者在其他线程池中异步执行,这个时候threadlocal的作用就失效了。

使用proguard混淆java9代码

2018-03-15
阅读 5 分钟
9.9k
序 本文主要研究一下如何使用proguard混淆java9代码 maven {代码...} 这里使用6.0.1版本的proguard-base proguard.cfg {代码...} 这里target要指定为9版本 问题 duplicate class definitions {代码...} 如果没有使用到log4j的话,可以在progurard.cfg文件中配置dontwarn忽略 can't find referenced class {代码...} 这种...

使用proguard混淆springboot代码

2018-03-14
阅读 7 分钟
10.3k
这里引用了com.github.wvengen的proguard-maven-plugin插件,使用的proguard-base版本是5.3.3这里使用java8,因此libs那里照常配置rt.jar,jce.jar,如果是java9的话,则需要换成相应的模块。另外指定proguard的阶段为package,springboot打包在repackage阶段

聊聊jpa的动态查询

2018-03-13
阅读 5 分钟
4.3k
这里定义了几种运算符EQ, LIKE, GT, LT, GTE, LTE可以自己从mvc的controller中接收查询条件转换为SearchFilter

聊聊webflux参数校验

2018-03-12
阅读 4 分钟
9.8k
序 本文主要研究下webflux如何进行参数校验 使用javax.validation domain {代码...} 通过onErrorResume处理异常 form表单提交 {代码...} post json {代码...} 注意这里catch住WebExchangeBindException 通过ExceptionHandler处理WebExchangeBindException ExceptionHandler {代码...} from表单提交 {代码...} 注意这里要...

[case10]使用RSQL实现端到端的动态查询

2018-03-11
阅读 3 分钟
5.8k
RSQL(RESTful Service Query Language)是Feed Item Query Language (FIQL) 的超集,是一种RESTful服务的查询语言。这里我们使用rsql-jpa来实践,它依赖rsql-parser来解析RSQL语法,然后将解析后的RSQL转义到JPA的Specification。

java9+springboot2+undertow2启用http2及server push

2018-03-10
阅读 8 分钟
9.8k
序 本文主要研究下java9+springboot2+undertow2启用http2及server push maven {代码...} 注意这里使用undertow,移除掉了starter-web中的tomcat依赖 配置 application.yml {代码...} keystore生成实例 {代码...} ENABLE_HTTP2及ENABLE_PUSH {代码...} 这里开启了HTTP2以及server push功能 HTTP2实例 controller {代码......

Java9的新特性

2018-03-09
阅读 3 分钟
18.2k
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java18的新特性Java19的新特性Java20的新特性Java21的新特性Java22的新特性Java23的新特性Java24的新特性序本文...

java9系列(九)Make G1 the Default Garbage Collector

2018-03-08
阅读 8 分钟
6.4k
可以用-XX:G1HeapRegionSize=16m来指定Region Size,注意它必须是2的乘方,范围在1MB到32MB之间。目标是根据最小的Java堆大小划分出约2048 个区域.

java9系列(八)Multi-Release JAR Files

2018-03-07
阅读 9 分钟
6.6k
java9新支持了multi-release jar的功能,包括jar、javac、javap、jdeps等命令都能支持这个特性。所谓multi-release jar可以包含多个jdk版本的实现,在运行时JVM根据当前环境加载符合版本的class,这样可以使得jar包在兼容旧版本的同时尽可能早地尝试新版JDK的特性。

java9系列(七)Variable Handles

2018-03-06
阅读 4 分钟
5.6k
Variable Handles的API主要是用来取代java.util.concurrent.atomic包以及sun.misc.Unsafe类的功能。一个variable handle是一个variable的类型引用,用来在一系列访问模式下来读写variable。支持的variable包括实例变量,静态成员,数据元素等。Variable Handles需要依赖jvm的增强及编译器的协助,即需要依赖java语言规范...

java9系列(六)HTTP/2 Client (Incubator)

2018-03-05
阅读 8 分钟
8.3k
由于jdk9模块化了,junit这里没有模块化,需要在javac编译时添加--add-modules jdk.incubator.httpclient,否则报错如下:

[case9]频繁GC (Allocation Failure)及young gc时间过长分析

2018-03-04
阅读 8 分钟
35.4k
在8.5天的时间内,发生了9000多次gc,其中full gc为4次,平均将近8秒,大部分是young gc(allocation failure为主),平均270多毫秒,最大值将近7秒

java9系列(五)Stack-Walking API

2018-03-03
阅读 10 分钟
4k
java9新增这个类的目的是提供一个标准API用于访问当前线程栈,之前只有Throwable::getStackTrace、Thread::getStackTrace以及SecurityManager::getClassContext提供了方法可以获取线程栈。