代码之旅

I love Coding !

JVM 启动参数详解

java命令用于启动JVM虚拟机。Java启动参数分为3种:

  1. 标准参数: 所有的JVM实现都必须实现这些参数的功能,而且向后兼容。JVM的标准参数都是以”-“开头。
  2. 非标准参数: 默认JVM(HotSpot虚拟机)实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容.JVM的非标准参数都是以”-x“开头。
  3. 非stable参数:此类参数通常具有特定的系统要求,并且可能需要对系统配置参数的特权访问。各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用。JVM的非stable参数都是以”-xx“开头。
阅读全文 »

语法范式

上下文无关的组成部分:

  • 终结符号
  • 非终结符号
  • 一个开始符号
  • 一组产生式

例如,下面数学表达式:

exprexpr+termexpr \to expr+term

exprexprtermexpr \to expr-term

exprtermexpr \to term

termtermfactorterm \to term * factor

termterm/factorterm \to term/factor

termfactorterm \to factor

factor(expr)factor \to (expr)

factoridfactor \to id

  1. 终结符号(词法单元)是组成串的基本符号,例如上面的 +,-
  2. 非终结符号是表示串的集合的语法变量,例如上面的term和factor。非终结符号表示的串集合用于定义由文法生成的语言。
阅读全文 »

RFC1928-Sock5

SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。当防火墙后的客户端要访问外部的服务器时,就跟SOCKS代理服务器连接。这个代理服务器控制客户端访问外网的资格,允许的话,就将客户端的请求发往外部的服务器。根据OSI模型,SOCKS是会话层的协议,位于表示层与传输层之间。

阅读全文 »

一致性Hash算法-JumpHash

google 提出了 Jump consistent hash 算法,跳转一致性哈希不需要存储,速度更快,并且在均匀划分key方面做得更好。它的主要限制是桶必须按顺序编号,这使得它 比分布式 Web 缓存更适合数据存储应用程序

阅读全文 »

一致性Hash算法-RingHash

哈希环法是最常用的、最经典的一致性哈希算法, 也叫做割环法。 这个算法易于理解、应用广泛(例如亚马逊的Dynamo1), 实现了最小化的重新映射。

阅读全文 »

一致性Hash算法-问题

一致性哈希算法是一种特殊的哈希算法, 当目标槽位数量发生变化时,它会尽力降低的重新映射的数量。 传统的哈希表设计中,添加或者删除一个槽位,会造成全量的重新映射, 一致性哈希则追求的是增量式重新映射。

阅读全文 »

Hash算法简介

散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。査找时,根据这个确定的对应关系找到给定值key的映射f(key),若査找集合中存在这个记录,则必定在f(key)的位置上。

我们把这种对应关系f称为散列函数,又称为哈希(Hash)函数。按这个思想,采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表(Hashtable)。那么关键字对应的记录存储位置我们称为散列地址。

阅读全文 »

算法之Manacher

给定一个字符串 s,找到 s 中最长的回文子串?

阅读全文 »

Server端图片导出

最近的工作需要在服务端生成报表图片,Java库生成的图片实在是惨不忍睹,酷炫的还是要看JS😂。解决方案是: 服务数据 + html模板 + headless浏览器。

阅读全文 »