小胖轩


编码生涯的点点滴滴

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中的几种计算方式进行比较: 1. SimpleDateFormat 获取当前时间对应的年月日,反向计算即可。 private static long getTimeWay1() { try { SimpleDateFormat sdf = new SimpleDateFo...

Zip几点小知识

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

Andorid AsyncTask解析

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

Linux命令之ln

背景 这几天一直想更换下osx下用户家目录的名字,为什么要更换呢? 因为之前托同学帮忙买来mac的时候已经创建了用户,当时也懒,也没用过osx,所以就一直到现在了。公司里的电脑是另外一台Macbook Pro,每次有一些牵扯到绝对路径的脚本等内容使用时,都需要改动配置等,于是乎决定对自己这台mac进行家目录重命名,大概的操作如下: 系统设置 --> 用户和组 --> 解锁左...

Shell下解析Json之jq

Json是一种轻量级的数据交换格式,简洁和清晰的层次结构使得Json成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 软件开发中经常会将对象序列化为Json,或者将对应的Json串反序列化为对象,在Android开发、服务端开发中都有很多库,如fastjson、gson等, 今天来看一下shell的json解析工具jq。 一、安装 jq的官网...

正则表达式之非获取匹配

正则表达式是平时开发中经常用到的技巧,大部分时候我们需要的是判断字符串有没有含有固定的模式串,但是某些场景下需要使用非获取匹配,下面根据一种常见的情景: 匹配所有含有 app://page.cb/myPage?id=xxxx的地址,但是排除参数中携带downgrade=true的地址。 具体用几个例子说明一下: 原始地址: app://page.cb/myPage 匹配结果: no, ...

Chrome内容保存插件 - Just One File

随着互联网的发展,当前我们可以方便的在网站中找到各种各样的资源,尽管现在网络已经无处不在,但是有些时候我们仍然需要保存一些信息到本地,于是开发一个Chrome插件的想法产生了。 初衷 所见即所存 目前很多网站都是动态产生的,而浏览器保存的是网页源码, 看到的和保存的内容是可能不一样的,特别是在没有网络的情况下打开。 去除无用信息 很多网站页面中充满了...

深入浅出单实例Singleton模式

[转载] 单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类等等。 本文会带着你深入整个Singleton的世界,下面从几个版本来进行分析。 1. Singleton教学版本 这里直...

Hexo search组件

当前主流的静态博客有Jekyll和Hexo,之前的文章已经介绍了Jekyll中的搜索组件<Jekyll search组件>,本文来介绍下hexo博客中怎么添加搜索组件,组件项目地址https://github.com/androiddevelop/hexo-search. 截图 双击ctrl或者点击右下角搜索图标查看效果 操作 点击右下角图标进行搜索 双击c...

Android导航栏隐藏与浮现(二)

在Android导航栏隐藏与浮现(一)中已经以 Nexus5 为例,Android M 为基础介绍了怎么实现底部导航栏的隐藏与浮现,本文将介绍怎么在设置(辅助功能)中加入控制该功能的开关。 上图可以看到,应用中加入了一个 Enhance Navigation bar 的选项,该功能开启后可以长点击任务键(Recent)时,导航栏隐藏;从下不向上滑时,导航栏展示。 关闭后即取消了该功能。...