Java ClassLoader

众所周知Java中的类是由ClassLoader负责加载的,最近定位了一个关于类加载的问题,顺便回顾了下Java中类的加载机制,对Java中提供的ClassLoader进行一一说明。 Java中提供的ClassLoader 开始说明该问题前不妨先看看如下代码: public static void main(String[] args) { // 用户自定义类 // sun.misc.Launcher$AppClassLoader@14dad5dc System.out.println(Application.class.getClassLoader()); // 系统基本类 // null System.out.println(...
点我阅读更多...

人生三重境界

最近在搞一个务虚的事情,从痛点分析到目标制定再到措施落地,目标要可量化,措施要可执行,结果要可衡量。 如何衡量一个人的能力,通常会转换成另一个一般化指标,例如,考试分数可以比较客观的反应学生能力,但不能完全代表学生的能力。 所以我们可以将我们的衡量标准价值导向绑定,假设我们绩效导向为代码量,那这个我们定义的能力强就需要包含开发代码量多。 立 昨夜西风凋碧树,独上高楼,望尽天涯路 该阶段需要“立”志,确定目标,也就是价值导向。 守 衣带渐宽终不悔,为伊消得人憔悴 主要为了目标不断的求索,努力。 得 众里寻他千百度,蓦然回首,那人却在灯火阑珊处 付出努力,一步一个脚印,结果(真理)会来找我们,这是一个自然而然的过程。 实操 例如公司需要员工加班...
点我阅读更多...

Mac用户构建Linux开发环境

最近可能会从Mac暂时迁移至Linux环境进行常规软件开发,所以本周末利用空隙时间从Linux发行版本到常用软件再到开发环境的准备做了一个大致的梳理。由于我是重度Mac使用者,所以我会分大概3篇文章来说明怎么准备一个Linux系统便于Mac重度开发者迁移。 发行版的选择 在发行版的选择上,本人也有过纠结,毕竟Linux发行版众多,选出一种合适的发行版确实是一个头疼的事儿。经过慎重考虑,我从Centos、Fedora、ArchLinux、Ubuntu、LinuxMint中选择了LinuxMint。具体原因如下: LinuxMint是基于Ubuntu的发行版,在Ubuntu的基础了做了一些改变。Ubuntu的优点就是软件支持性好,生态好,这样其实LinuxMint也就可以轻松的借...
点我阅读更多...

Java泛型函数

背景 PHP的Array以方便灵活著称,再加上丰富的库函数,可以让开发者灵活的应对大部分需求。经常和数据库打交道的同学,肯定熟悉这个方法array_column array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。 做Java后,我们也常碰到需要如此操作的场景,但并没有合适的库函数,于是本着解放劳动力的出发点,打算自己开发一个。但是由于Java是一个强类型语言,我们经常会碰到如此的类型List<T>,如下: public class UserInfo { private String userName = "codecook...
点我阅读更多...

Linux安装PHP7.x

众所周知,PHP7的性能和执行速度都有了很大的改进。恰逢最近公司的一些项目也在尝试着迁移到PHP7的环境,由于本人平时开发使用MAC和Linux,而且不愿意使用现成的批量部署工具(不是愿意重复造轮子,而是想知道到底安装了哪些东西)。所以就选择自己编译安装环境。 获取源代码 PHP源代码是开源的,我们可以在PHP的官方下载我们需要的源码包,这里我们以PHP7.1.1为例 # 下载源码 wget http://cn2.php.net/get/php-7.1.2.tar.gz/from/this/mirror # 解压 tar xvf mirror 安装依赖库 下面就列举下常用的Centos7.x和Ubuntu系的依赖安装 Centos # 包含扩展依赖的开发库 sudo yum ...
点我阅读更多...

ThinkPHP定时任务(二)

前面说了TP框架中定时任务实现,也对存在的问题和优势做了一个简单的分析。如果有兴趣看的朋友可以参看ThinkPHP定时任务(一)。这篇主要对基于传统定时任务crontab[守护进程],外加TP框架支持实现的基于TP的定时任务 动机 用过TP的朋友都知道,TP框架是一个由国人开发的很优秀且轻量的PHP Web框架。由于其丰富的文档和强大的用户群体,在国内有不错的保有量。记得之前项目之初选择框架的时候,朋友建议选择TP,给的建议就是用户群体大,便于招人。 TP在Web模式下获得除了不俗的成绩,但是在非CGI模式下,通常(CLI),缺罕有人用。究其原因,个人觉得,无外乎以下几点: 文档解释的比较少 对CLI模式本身支持的比较简单 有这样前后台执行需求的用户大多选择了lara...
点我阅读更多...

ThinkPHP定时任务(一)

后台开发的过程中,免不了和定时任务打交道。每天定时的发短信给用户,定时的计算收益、利息,固定间隔的去执行某项大型任务(不适宜同步执行)等等,等等 常用的定时任务都是基于linux中的crontab进行,不过今天我们主要做TP框架内的定时任务实现解析,分析其实现原理和缺陷。在下一部分,会介绍一个新的方案 行为扩展 细心的朋友应该知道TP框架中有一个名叫行为扩展的东西。其实简单的概括起来就是HOOK,可以实现在某个时机进行HOOK,然后注册监听(Listen),实现代码和功能的无侵入式嵌入。行为扩展在我们的项目中使用的比较多,静态资源替换、错误模板替换(这个只有经历过才知道为什么)、自动初始化,太多的地方。总体来说,由于TP暴露了很多关键点的HOOK,我们在使用的时候,只需要去监听即可,...
点我阅读更多...