小胖轩


编码生涯的点点滴滴

基于ElasticSearch的内容检索系统

前言 gitbook 是目前流行的电子书制作工具,很多文档基于此构建,团队内部文档也是一样的。由于模块比较的多且复杂,各个模块的文档分别对应一个gitbook,职责明确了,但查找起来却麻烦很多,同时gitbook 查看文档的方式相对简单,不能根据文档相关性进行排序。 需求 多个gitbook文档能够提供统一查询入口 全文检索,根据相关性排序 提供文章访问热度 支持文章...

Andorid开发调试之run-as

前言 Android开发中,经常会将一些文件放在内部目录中,即/data/data/pacakge_id中,db文件也在该目录中 ,在非root的手机中,我们无法直接访问 /data/data 下的文件,调试起来非常的不方便,解决的办法有几种: 找一台root的手机,想看什么看什么 断点调试,可以稍微麻烦的看到本应用的目录及文件 r...

Arrays.asList之UnsupportedOperationException

前言 Java中经常会数组转化为List的场景,Java中的Arrays 中提供了一个 asList 方法可以快捷的转化,我们来看下面一段代码: import java.util.Arrays; import java.util.List; public class Test { public static void main(String[] args) { ...

内容共享

背景 工作时有两台主力电脑,一台Mac,一台Ubuntu,之前经常基本上是Mac共享内容给Ubuntu,也有了剪切板同步这篇文章。随着Ubuntu上做的事情越来越多,也需要反向共享,结合日常工作中也需要和很多业务方同学来进行文本、图片的共享,于是决定做一个简单内容共享的Web应用。 目标 多设备间可以访问,共享文本和图片。 支持房间,可以针对特定的共享有单独的区域。 支持...

HashSet.add覆盖问题

背景 假定对象A、B的hash值相同,equals方法也想等,那么向 HashSet 中顺序添加A、B,最后集合中保留的是A或者B或者是A和B呢? 编码 看以下代码,分析下输出: package me.codeboy.test.hash; import java.util.Objects; /** * hash bean * Created by yuedong.li on ...

Andorid AppLink配置

前言 客户端开发中,经常会遇到appA跳转appB的场景,之前Android中使用比较多的是 DeepLink,ios中对应的是 Scheme, 两者基本类似,在用户触发某个操作后,系统提示是否打开对应app,用户选择同意后进入指定app。 DeepLink 一方面流程上稍微长一些,另一方面存在scheme 被别人占用等问题,在Android6.0,有了 AppLink, 可以完美解决上...

Javascript的undefined和null

Javascript中的 undefined 和 null 非常的常见,它们有什么不同呢?首先看几个简单的示例: var a = undefined; var b = null; console.log(a == b); console.log(a === b); console.log(typeof(a) == typeof(b)); console.log(a + 1); consol...

Java源码在线编译执行

在告警平台中,经常会用到规则配置,一些简单的规则配置可以使用基本表达式来完成,对于一些复杂的规则,很难进行表达或者完全覆盖,如果告警规则等由一些具备编程能力的开发同学来完成,是否可以考虑规则直接使用源码来描述,动态执行呢?这样可以在系统不重新部署的情况下加入新的规则配置。 下面我们根据 JDK6 中新增的 JavaCompiler ,来实现源码线上编译,完成简单类的线上运行,并获取对应的结...

Java字符串单字符分割

Java中分割字符串经常会使用到 String.split ,本文中针对单字符分割的场景进行简单讨论,首先看几个例子: "".split("=") //示例1 "=".split("=") //示例2 "==".split("=") //示例3 "=".split("=", 1) //示例4 "=".split("=", 2) //示例5 "=".split("...

同域代理

前沿 跨域请求 对于每一个前端开发应该都不会陌生,由于一些安全策略的限制,默认情况下浏览器不允许在一个域下请求另外一个域下的资源,例如 www.codeboy.me 下请求 test.codeboy.me 下的资源,相同的域要求协议、域名、端口都必须相同。 当前解决的方案有以下几种: 1. JSONP 2. 同域请求 3. CORS(跨域资源共享) JSONP 和 CORS 均需要服...

Java代理

代理是在开发中经常用到的一种模式,不暴露真实的对象,取而代之的提供代理对象,在代理对象中可以对实际操作的前后进行一些处理,也即流行的面向切面编程(AOP),Spring中的拦截器使用的就是代理模式。 我们对一个需要两步完成的任务,使用普通模式、静态代理、动态代理和cglib分别实现下: 准备工作 定义接口 ITask 和实现类 Task package me.codeboy.test...

浮点精度

整数、浮点数是开发中经常使用的类型,在Java中,整数常用的有 Integer 和 Long ,浮点数有 Float 和 Double 。如果使用 Float 来存储 Integer 的值可行么?粗略看上去,肯定是没问题的,下面我们看个例子: public class Test { public static void main(String[] args) { i...

剪切板同步

工作中有两台主机,系统上一台macOS,一台Ubuntu,macOS作为主力机,经常需要将复制文本同步,之前的方案是登陆两个不同的微信进行分享,不过每次都需要打开,比较麻烦。 有没有什么办法能够解决 macOS 到 Ubuntu 的单向文本复制呢?单向解决了,双向基本也没有问题,鉴于作者没有双向需求,故本文只介绍 macOS 到 Ubuntu 的单项文本同步方案。目前可行的方案有: ...

零点时间

在一些按天计算的场景中,需要获取当天凌晨零点的时间,有什么快捷高效的做法呢?下面针对Java中的几种计算方式进行比较: SimpleDateFormat 获取当前时间对应的年月日,反向计算即可。 private static long getTimeWay1() { try { SimpleDateFormat sdf = new SimpleDateForma...

Zip几点小知识

问题来源 zip怎么加速解压速度? 相同文件分别压缩为 a.zip 和 b.zip 后,计算出的md5一样么?原因是? zip文件的时间是怎么计算的? (二进制上是怎么计算的) zip怎么加速解压速度 为什么会有这个问题,源于近来项目中有一些cache包下发到手机中,需要解压,但是在一些中低端手机上,解压速度非常的慢,在一些算法求解中,常见的方式是使用空间换时间,zi...

Andorid AsyncTask解析

前言 AsyncTask 在Android开发中是一个经常用到的类,允许用户在工作线程上完成后台计算等任务,之后将结果同步UI线程,比起 Thread 和 Handler 模型使用起来方便一些。 AsyncTask 使用起来如此方便了,那么有什么需要注意的问题么?看一段AsyncTask官网的介绍文档: When first introduced, AsyncTasks were e...