Kailun Blog

code & life

Java反射机制学习(三)-附上demo

经过前面几次反射机制的学习,这次用反射的知识写一个类似于Struts框架处理机制的小demo。 Servlet 和 Sturts 在引入反射知识前,先简单介绍下Sturts框架和Servlet。 在没有一些Web框架之前,当我们要写Java Web应用使用的就是Servlet。一个简单的Servletdemo就是如下所示。 public class HelloWorld extends H...

Java反射机制学习(二)

上一篇文章介绍了反射的基本概念以及获取类相关信息的反射API,这一章节主要记录如何对类的成员进行操作的相关反射API。 操作类成员的类 反射API中提供了如下接口,用于对类的成员进行操作。 java.lang.reflect.Member 该接口主要有以下三个实现类,用于对类成员中的字段,方法和构造器进行操作。 Tips: 在Java SE 7的手册中指出,构造器不是类的成员,这...

Java反射机制学习(一)

Java反射机制(一) 结合Oracle官方通过JDK8编写的反射教程,复习一下反射的知识。结尾篇补一个小例子。 主要内容 这次博客的主要内容就是简单介绍反射的概念以及相关获取类信息的反射API。 反射的概念 反射是一种在运行时获取以及修改应用行为的一种工具。我个人的理解就是,new是一种正向的操作,知道现有系统中会出现什么。反射就是反着来,不知道系统中可能会需要什么样的类,通过全限定类名的...

Java泛型机制学习

Java泛型 Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。泛型的引入可以解决JDK5之前的集合类框架在使用过程中较为容出现的运行时类型转换异常,因为编译器可以在编译时通过类型检查,规避掉一些潜在的风险。 在JD...

聊聊常见的开源协议

前言 前一阵子由于Facebook BSD+PATENTS License的原因,Apache项目禁止使用带该license的代码,引人注目的就是Facebook的React前端框架。 后来在知乎上看到百度内部也要求在半年内完成内部产品的转型,如下图所示。 最近又看到Facebook 的React框架又重新将Facebook BSD+PATENTS License更新为了MIT协议。 以...

Java并发笔记之 Race Condition and Critical Section

前言 这几天学习并发编程,race-conditions-and-critical-sections,翻译一下,写点自己的笔记并加上点个人的理解。 网页中里中提到两个名词Race Condition 和 Critical Section,接下来对他们进行解释和例子演示。 Race Condition 在多线程场景下,当多个线程访问同一块资源,且执行结果与线程访问的先后顺序相关,即表明这...

读书笔记-java并发编程的艺术第二章-synchronized

在之前的文章中学习了volatile关键字,volatile可以保证变量在线程间的可见性,但他不能真正的保证线程安全。 /** * @author cenkailun * @Date 9/5/17 * @Time 20:23 */ public class ConcurrentAddWithVolatile implements Runnable { private st...

读书笔记-java并发编程的艺术第二章-volatile

这一章节的话,主要是讲一下在并发操作中常见的volatile、synchronized以及原子操作的相关知识。 目前看的部分主要是volatile这个关键字。 volatile 根据Java语言规范第3版中对volatile的定义: Java编程语言允许线程访问共享变量,为了确保共享变量能被准备和一致地更新,线程应该确保通过排他锁单独获得这个变量。 Java语言提供了volat...

读书笔记-java并发编程的艺术第一章

前言 并发编程的目的是让程序跑的更快,但并不是启动更多的线程,这个程序就跑的更快。有以下几种挑战。 挑战及方案 上下文切换 单核CPU上执行多线程任务,通过给每个线程分配CPU时间片的方式来实现这个机制。时间片是CPU分配给每个线程运行的时间,时间片非常短,CPU通过不断的切换线程执行,给我们人类留下的印象就是多个线程在同时执行。 由于线程有创建和上下文切换的开销,当整个程序内部操作数不...

Mybatis缓存使用及源码分析

本文已授权Gitchat独家发布,未经Gitchat许可,不得转载。 我,后端Java工程师,现在美团点评工作。 爱健身,爱技术,也喜欢写点文字。 个人网站: http://kailuncen.me 公众号: KailunTalk (凯伦说) 前言 基于个人的兴趣,开了这场chat,主题是Mybatis一级和二级缓存的应用及源码分析。希望在本场chat结束后,能够帮助读者...

Archives