摘要: 编程能力 在一次面试中与主管聊到了什么是编程能力,这是一个值得思索和回味的话题。什么才是一个程序员真正的编程能力?或者,非科班程序员与科班程序员相比差在哪里? 作者认为,编程能力分为两个方面:理论基础和系统设计能力。在当前的技术水平上,继续提高实力需要一“上"一"下":"上"是往宏观方向走提高系统设 阅读全文
posted @ 2017-05-01 14:55 程序之心 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 即时编译回顾 HotSpot 虚拟机执行 Java 程序时,先通过解释器对代码解释执行,发现某个方法或代码块执行比较频繁后,对热点代码进行编译,编译后生成与本地平台相关的机器码,再去执行机器码获得较高的运行效率。必要时,也会通过逆优化从即时编译回到解释执行,如编译器遇到罕见陷阱的情况。 在 Java 阅读全文
posted @ 2017-04-09 12:57 程序之心 阅读(2526) 评论(0) 推荐(0) 编辑
摘要: 知识回顾 进程与线程是常常被提到的两个概念。进程拥有独立的代码段、数据空间,线程共享代码段和数据空间,但有独立的栈空间。线程是操作系统调度的最小单位,通常一个进程会包含一个或多个线程。多线程和多进程都可以实现并发处理,如 nginx 使用多进程方式、tomcat 使用多线程方式、Apache 支持混 阅读全文
posted @ 2017-04-08 00:20 程序之心 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 《 Java 编程思想》 适合各个阶段 Java 程序员的必备读物。书中对 Java 进行了详尽的介绍,与其它语言做了对比,解释了 Java 很多特性出现的原因和解决的问题。初学者可以通过此书快速掌握 Java 面向对象的理念,学会正确使用 Java 的各种特性;平时开发中可以将此书作为工具书参考, 阅读全文
posted @ 2017-04-04 11:03 程序之心 阅读(3256) 评论(0) 推荐(0) 编辑
摘要: Java 实现一次编译到处运行的基础,来源于 Java 虚拟机屏蔽了操作系统的底层细节。使用 class 文件存储编译后的源程序,使得 Java 程序的编译与操作系统解耦。正是因为 Java class 文件的设计与 Java 语言解耦,分别发布了 Java语言规范和 Java 虚拟机规范,使得其他 阅读全文
posted @ 2017-03-28 23:04 程序之心 阅读(551) 评论(0) 推荐(0) 编辑
摘要: SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface,可以避免在 Java 代码中写死服务的提供者,而是通过 SPI 服务加载机制进行服务的注册和发现。通过这种方式,可以基于接口编程,实现多个模块的解耦。 SPI 机制实现解耦 如下的示例展示了通 阅读全文
posted @ 2017-03-26 22:15 程序之心 阅读(2299) 评论(0) 推荐(1) 编辑
摘要: 引用 Java 虚拟机接管了所有的内存分配与回收工作,极大地减少了程序员的工作量和错误率。GC 在回收内存时,通常采用被称为可达性分析的算法判断一个对象是否可以回收。而在可达性分析中,对象的引用有着决定性的作用。在下图中,GC 从 GC Roots 开始顺着引用链往下寻找对象,发现当前有引用的对象为 阅读全文
posted @ 2017-03-23 22:24 程序之心 阅读(775) 评论(0) 推荐(0) 编辑
摘要: Java程序运行于Java虚拟机之上,JVM屏蔽了底层细节,使得Java程序能够“一次编译,到处运行”。在Java语言中,一切皆是对象,代码一般由类、接口、enum等构成,是一种面向对象的编程语言。本文将为你揭示Java虚拟机如何加载类,一窥Java底层的秘密。 类在虚拟机中的生命周期,可以分为加载 阅读全文
posted @ 2017-03-22 10:04 程序之心 阅读(251) 评论(0) 推荐(1) 编辑
摘要: Java 8并发工具包简介 Java 8并发工具包由3个包组成,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks,提供了大量关于并发的接口、类、原子操作类、锁相关类。借助java.util.c 阅读全文
posted @ 2017-03-19 10:37 程序之心 阅读(2175) 评论(0) 推荐(0) 编辑
摘要: Apache Flume是一个分布式、可靠、可用的系统,用于从大量不同的源有效地收集、聚合、移动大量日志数据进行集中式数据存储。 Flume简介 Flume的核心是Agent,Agent中包含Source、Channel、Sink。Agent是最小的独立运行单位。在Agent中,数据流向为Sourc 阅读全文
posted @ 2017-03-16 18:23 程序之心 阅读(6593) 评论(0) 推荐(0) 编辑