Summer - 基于Java9的模块化框架
为什么叫Summer因为夏天到了 :D 项目地址 特点 使用了JPMS作为模块化的基础 可以通过配置文件动态的选择启动哪些模块 使用SPI的方式进行创建对象,并能自动注入所需要的服务(也可以选择手动) 自动注入模块配置文件 项目结构项目主要分为三个模块 核心模块: 对模块和提供者进行定义,发现加 ...
Read more
关于Content-Length
前言公司需要使用Java Agent,对返回HTML请求的响应体进行修改.达到无侵入的插入前端JS探针.但是再修改完请求体之后,页面出现了卡死/白屏/文件下载错误的情况. 分析之后是由于修改响应体之后没有正确的设置Content-Length导致. Content-Length是什么在一次HTTP请 ...
Read more
读《Java并发编程艺术》
看了一遍 顺便手打了一遍 并发编程中可能会遇到的问题上下文切换CPU是通过给线程分配时间片来进行执行线程内的任务。当前线程时间片消耗则会进行切换。切换的过程中需要对当前线程的状态进行保存,以便下次执行时恢复。 所以任务从保存再到加载的过程就是一次上下文切换 观察上下文切换的工具 使用Lmbe ...
Read more
关于JS中的Promise和Async
前言当我们需要定义一个在特定情况下才会被触发的函数时,一个在特定情况下被调用的函数,我们一般称为回调函数. 比如我们需要在100秒后执行一个输出,那么我们可能会这样写123setTimeout(() => { console.log('已经过了100ms了'); ...
Read more
重写IE8的setTimeout
起因最近公司需要增加前端JS探针对setTimeOut方法的监控(不能更改现有代码),其中需要将部分定义时的变量值保持到方法执行时也存在,让在回调方法中的重写的Ajax方法能获取这些变量。 开搞不就是重写嘛,搞搞搞。12345678910111213var cache_setTimeout = se ...
Read more
Java Agent
什么是 Java Agent是通过实现 Java 的 Instrumentation 接口, 实现对 Java 程序启动前或者启动后的一系列操作. 启动时拦截main的Agent使用方式是在启动相应 jar 时加入启动参数 -javaagent: 使用的拦截jar 拦截jar所需满足的条件 在 ME ...
Read more
欧几里得算法(The-Euclidean-Algorithm)
欧几里得算法 在看算法图解时,看到书中的欧几里得的证明有相关连接 当有如下A = B + R ,且B不等于0. 那么就有 GCD(A, B) = GCD(B, A - B)$ 我们假设C = A - B,那么转为证明GCD(A, B) = GCD(B, C) $$ \because $ GCD(A ...
Read more
Java Lambda表达式简析
什么是Lambda表达式Lambda表达式,是一种紧凑的、传递行为的方式.能够使代码产生更多的灵活性.所以Oracle 在Java8添加了Lambda的支持 函数式的简单使用我们先来看一个简单的例子当我们需要创建一个临时的、可被Runner我们可能会这样编写123456new Runnable() ...
Read more
ElasticSearch FAQ & Tips
FAQ单次查询最多返回记录数为10000这个是因为ES查询的默认限制,可以使用以下两种方式进行解决 修改配置index.max_result_window的值 使用search_after获取10000条后的记录 内存分配为什么不推荐超出32G当JVM内存小于32G时,会开启指针压缩技术,将64 ...
Read more
ES DSL 查询
语句的种类末端查询语句末端查询语句是在特定的值中查找特定值,例如match,term,range 复合查询语句复合查询语句可以组合其他 复合语句 或者 末端语句 组成一个语句(例如: bool dis_max),或者声明行为(constant_score) 允许表达式的语句这些类型的语句通常来说因为 ...
Read more