基于ElasticSearch的内容检索系统 前言 gitbook 是目前流行的电子书制作工具,很多文档基于此构建,团队内部文档也是一样的。由于模块比较的多且复杂,各个模块的文档分别对应一个gitbook,职责明确了,但查找起来却麻烦很多,同时gitbook 查看文档的方式相对简单,不能根据文档相关性进行排序。 需求 多个gitbook文档能够提供统一查询入口 全文检索,根据相关性排序 提供文章访问热度 支持文章... Posted by Codeboy on September 28, 2019 Andorid开发调试之run-as 前言 Android开发中,经常会将一些文件放在内部目录中,即/data/data/pacakge_id中,db文件也在该目录中 ,在非root的手机中,我们无法直接访问 /data/data 下的文件,调试起来非常的不方便,解决的办法有几种: 找一台root的手机,想看什么看什么 断点调试,可以稍微麻烦的看到本应用的目录及文件 r... Posted by Codeboy on September 10, 2019 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) { ... Posted by Codeboy on August 20, 2019 内容共享 背景 工作时有两台主力电脑,一台Mac,一台Ubuntu,之前经常基本上是Mac共享内容给Ubuntu,也有了剪切板同步这篇文章。随着Ubuntu上做的事情越来越多,也需要反向共享,结合日常工作中也需要和很多业务方同学来进行文本、图片的共享,于是决定做一个简单内容共享的Web应用。 目标 多设备间可以访问,共享文本和图片。 支持房间,可以针对特定的共享有单独的区域。 支持... Posted by Codeboy on July 29, 2019 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 ... Posted by Codeboy on July 4, 2019 Andorid AppLink配置 前言 客户端开发中,经常会遇到appA跳转appB的场景,之前Android中使用比较多的是 DeepLink,ios中对应的是 Scheme, 两者基本类似,在用户触发某个操作后,系统提示是否打开对应app,用户选择同意后进入指定app。 DeepLink 一方面流程上稍微长一些,另一方面存在scheme 被别人占用等问题,在Android6.0,有了 AppLink, 可以完美解决上... Posted by Codeboy on June 29, 2019 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... Posted by Codeboy on June 17, 2019 Java源码在线编译执行 在告警平台中,经常会用到规则配置,一些简单的规则配置可以使用基本表达式来完成,对于一些复杂的规则,很难进行表达或者完全覆盖,如果告警规则等由一些具备编程能力的开发同学来完成,是否可以考虑规则直接使用源码来描述,动态执行呢?这样可以在系统不重新部署的情况下加入新的规则配置。 下面我们根据 JDK6 中新增的 JavaCompiler ,来实现源码线上编译,完成简单类的线上运行,并获取对应的结... Posted by Codeboy on June 14, 2019 Java字符串单字符分割 Java中分割字符串经常会使用到 String.split ,本文中针对单字符分割的场景进行简单讨论,首先看几个例子: "".split("=") //示例1 "=".split("=") //示例2 "==".split("=") //示例3 "=".split("=", 1) //示例4 "=".split("=", 2) //示例5 "=".split("... Posted by Codeboy on June 5, 2019 同域代理 前沿 跨域请求 对于每一个前端开发应该都不会陌生,由于一些安全策略的限制,默认情况下浏览器不允许在一个域下请求另外一个域下的资源,例如 www.codeboy.me 下请求 test.codeboy.me 下的资源,相同的域要求协议、域名、端口都必须相同。 当前解决的方案有以下几种: 1. JSONP 2. 同域请求 3. CORS(跨域资源共享) JSONP 和 CORS 均需要服... Posted by Codeboy on June 1, 2019 Java代理 代理是在开发中经常用到的一种模式,不暴露真实的对象,取而代之的提供代理对象,在代理对象中可以对实际操作的前后进行一些处理,也即流行的面向切面编程(AOP),Spring中的拦截器使用的就是代理模式。 我们对一个需要两步完成的任务,使用普通模式、静态代理、动态代理和cglib分别实现下: 准备工作 定义接口 ITask 和实现类 Task package me.codeboy.test... Posted by Codeboy on May 27, 2019 浮点精度 整数、浮点数是开发中经常使用的类型,在Java中,整数常用的有 Integer 和 Long ,浮点数有 Float 和 Double 。如果使用 Float 来存储 Integer 的值可行么?粗略看上去,肯定是没问题的,下面我们看个例子: public class Test { public static void main(String[] args) { i... Posted by Codeboy on May 7, 2019 剪切板同步 工作中有两台主机,系统上一台macOS,一台Ubuntu,macOS作为主力机,经常需要将复制文本同步,之前的方案是登陆两个不同的微信进行分享,不过每次都需要打开,比较麻烦。 有没有什么办法能够解决 macOS 到 Ubuntu 的单向文本复制呢?单向解决了,双向基本也没有问题,鉴于作者没有双向需求,故本文只介绍 macOS 到 Ubuntu 的单项文本同步方案。目前可行的方案有: ... Posted by Codeboy on April 17, 2019 零点时间 在一些按天计算的场景中,需要获取当天凌晨零点的时间,有什么快捷高效的做法呢?下面针对Java中的几种计算方式进行比较: SimpleDateFormat 获取当前时间对应的年月日,反向计算即可。 private static long getTimeWay1() { try { SimpleDateFormat sdf = new SimpleDateForma... Posted by Codeboy on April 13, 2019 Zip几点小知识 问题来源 zip怎么加速解压速度? 相同文件分别压缩为 a.zip 和 b.zip 后,计算出的md5一样么?原因是? zip文件的时间是怎么计算的? (二进制上是怎么计算的) zip怎么加速解压速度 为什么会有这个问题,源于近来项目中有一些cache包下发到手机中,需要解压,但是在一些中低端手机上,解压速度非常的慢,在一些算法求解中,常见的方式是使用空间换时间,zi... Posted by Codeboy on March 20, 2019 Andorid AsyncTask解析 前言 AsyncTask 在Android开发中是一个经常用到的类,允许用户在工作线程上完成后台计算等任务,之后将结果同步UI线程,比起 Thread 和 Handler 模型使用起来方便一些。 AsyncTask 使用起来如此方便了,那么有什么需要注意的问题么?看一段AsyncTask官网的介绍文档: When first introduced, AsyncTasks were e... Posted by Codeboy on August 4, 2018 ← Newer Posts Older Posts →