Gordon


  • 首页

  • 关于

  • 归档

  • 标签

  • 搜索

HanLP ES插件折腾小记

发表于 2018-06-30

本文对HanLP的es插件踩坑过程做个简单的记录。

阅读全文 »

自动问答系统开源轮子简介

发表于 2018-06-27

本文对自动问答系统相关的开源轮子做简单的对比,包括全套的问答系统实现和纯粹的NLP框架。
对比的指标很简单:能不能跑起来、能不能正常交互。虽然指标很简单,但是实际上很多开源项目并不能达标……

阅读全文 »

视频技术概念扫盲初步

发表于 2018-05-07

本文就视频技术做一个初步的扫盲(主要是针对我本人,不是针对在座的各位),基本就是资料的搜集和摘要,目的是知道一些常见的概念大概是怎么一回事,包括PPI、分辨率、比特率和视频音频压缩的一些常见术语。
(本来题目叫做《视频技术概念扫盲》的,但是一轮下来,发现水深得很,还是加上『初步』比较好,毕竟还有很多盲点没扫到。)

阅读全文 »

几种开源的媒体服务器对比

发表于 2018-05-06

本文对几种开源的流媒体服务器做对比。

阅读全文 »

JVM GC相关问题

发表于 2018-04-02

1. 概念

http://blog.csdn.net/u011080472/article/details/51324422

1.0 并发和并行

这两个名词都是并发编程中的概念,在谈论垃圾收集器的上下文语境中,它们可以解释如下。

  • 并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。

  • 并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个CPU上。

1.1 Minor GC 和 Full GC

  • 新生代GC(Minor GC / Young GC / YGC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。

  • 老年代GC(Major GC / Full GC / FGC):指发生在老年代的GC,出现了Major GC,经常会伴随至少一次的Minor GC(但非绝对的,在Parallel Scavenge收集器的收集策略里就有直接进行Major GC的策略选择过程)。Major GC的速度一般会比Minor GC慢10倍以上。

阅读全文 »

WebSocket简介

发表于 2018-03-15

1 概念

1.1 comet

天不生WS,万古如长夜。

在WebSocket出现之前,服务端主动推送消息给浏览器的需求就已经存在了,但是HTTP这个协议本来就不是设计用来进行双向通信的,所以机智的工程师们采取了各种hack的方式来实现这种功能,这些实现方式都统称为comet。

但是无可避免地,这些技术都存在缺陷,既然WebSocket都出现了,那么这些技术大概也能进博物馆了,除了实现Fallback方案时需要去了解之外,这些技术感觉价值不大了,所以不展开说,如果读者有兴趣,可以根据关键词找资料去了解。

阅读全文 »

JVM运行时数据区域

发表于 2018-03-12

根据 The Java® Virtual Machine Specification - Java SE 8 Edition,可以整理出其定义的JVM内存结构如下:


JVM Specification定义的运行时数据区域模型↑↑↑

其中,方法区所属的区域并没有强制要求。不同的JVM实现,其内存分布细节会不同。

阅读全文 »

JVM加载、启动和初始化

发表于 2018-03-10

0 概述

这实际上是《The Java® Virtual Machine Specification - Java SE 8 Edition》中第五章内容(Loading, Linking, and Initializing)的部分翻译。主要目的是整理阅读笔记,让我自己看得明白,在这个前提下,尽量让别人看得明白,如果读者觉得我写得很混乱,还请自行阅读原文,不便之处敬请见谅。如有错误,还请指正(拉到页面底部点击『联系我』就可以发邮件给我)。

阅读本文内容需要先对java的class文件结构有所了解。如果尚不了解,不妨参考我的另一篇博文 Java class文件格式


  • 加载是这样一个过程:寻找一个特定名称的class或者interface的二进制表达形式(binary representation),然后从这个二进制表达形式中创建出一个class或者interface。
  • 链接是这样一个过程:取得class或者interface,然后将其结合到JVM的运行时状态,使得它可以被执行。
  • 初始化一个class或者interface的过程就是执行这个class或者interface的初始化方法<clinit>的过程。
阅读全文 »

Java class文件格式

发表于 2018-03-10

0 概述

这实际上是《The Java® Virtual Machine Specification - Java SE 8 Edition》中第四章内容(The class File Format)的部分翻译。主要目的是整理阅读笔记,让我自己看得明白,在这个前提下,尽量让别人看得明白,如果读者觉得我写得很混乱,还请自行阅读原文,不便之处敬请见谅。如有错误,还请指正(拉到页面底部点击『联系我』就可以发邮件给我)。


每一个class文件都包含了一个单独的class或者interface的定义。尽管一个class或者interface并不是有一个以文件形式存在的外部表达,但是下面还是通俗地将class或interface的任何有效表达称为类文件格式(the class file format)。

一个类文件由一个8位字节流组成。 所有的16位,32位和64位量分别通过读取2、4、8个连续的8位字节来构造。 多字节数据项总是以big-endian顺序存储,其中高字节排在第一位。 在Java SE平台中,此格式由接口java.io.DataInput和java.io.DataOutput以及类如java.io.DataInputStream和java.io.DataOutputStream支持。

阅读全文 »

Druid连接池监控的一次改造

发表于 2017-08-31

1. 背景

druid本身提供了监控功能,具体在我另一篇博文《Druid连接池监控》里有介绍。当时提到有以下缺陷:

  1. 无法灵活监控多个目标
  2. 切换环境不方便
  3. JMX重连不会成功

因此针对这些问题,对其进行改造。改造后的源码已经放在个人的github上:
https://github.com/bungder/druid-aggregated-monitor

对应本文的版本,已经打了tag:
https://github.com/bungder/druid-aggregated-monitor/releases/tag/0.0.1

阅读全文 »
12
Gordon

Gordon

13 日志
15 标签
RSS
© 2019 Gordon
联系我
UV PV