java知识点:读万卷书,行万里路(三)

  • 回调函数
  1. 就是一个通过指针调用的函数
  2. 可以被循环调用
  3. 可用于通知机制
  4. 回调函数可以是全局,静态函数
  • ThreadLocal
  1. 存放的值是线程内共享的,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
  2. 线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收
  3. 在ThreadLocal类中有一个HashMap,用于存储每一个线程的变量的副本。
  4. 对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式
  5. 继承了Thread 且实现了 Runnable
  • JVM内存溢出

CGLIB代理

CGLIB同样会缓存代理类的Class对象,但是我们可以通过配置让它不缓存Class对象,

这样就可以通过反复创建代理类达到使方法区溢出的目的。

  1. package com.cdai.jvm.overflow;
  2. import java.lang.reflect.Method;
  3. import net.sf.cglib.proxy.Enhancer;
  4. import net.sf.cglib.proxy.MethodInterceptor;
  5. import net.sf.cglib.proxy.MethodProxy;
  6. public class MethodAreaOverflow2 {
  7. static class OOMObject {
  8. }
  9. public static void main(String[] args) {
  10. while (true) {
  11. Enhancer enhancer = new Enhancer();
  12. enhancer.setSuperclass(OOMObject.class);
  13. enhancer.setUseCache(false);
  14. enhancer.setCallback(new MethodInterceptor() {
  15. @Override
  16. public Object intercept(Object obj, Method method,
  17. Object[] args, MethodProxy proxy) throws Throwable {
  18. return method.invoke(obj, args);
  19. }
  20. });
  21. OOMObject proxy = (OOMObject) enhancer.create();
  22. System.out.println(proxy.getClass());
  23. }
  24. }
  25. }
  • JAVA包装类:仅限基本类型的类

基本数据类型


包装类


byte


Byte


boolean


Boolean


short


Short


char


Character


int


Integer


long


Long


float


Float


double


Double

  • final, finally, finalize 区别
  1. final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
  2. finally是异常处理语句结构的一部分,表示总是执行。
  3. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。
  4. 引用变量被final修饰之后,不能再指向其他对象,但是 它指向的对象的内容是可变的! 代码如下

package Q5FinalVariable;

public class Test
{

public static void main(String[] args)
{

final StringBuilder sb = new StringBuilder("spirit
break");

System. out.println(sb );//spirit
break

sb.append( "
SB");

System. out.println(sb );//spirit
break SB

}

}

  • 抽象类 VS 接口
  1. 抽象类:abstract class, is-a,可以有私有方法和私有变量
  2. 接口   :interface, has-a, interface中不能有private
  3. 优先选用接口,尽量少用抽象类
  4. 抽象类和接口都不能被实例化.但是接口可以被引用
时间: 2024-10-28 18:55:30

java知识点:读万卷书,行万里路(三)的相关文章

java知识点:读万卷书,行万里路(二)

local variable:在方法体中声明的变量 编译源代码时可指定环境变量 标识符 = 变量名 数组不是原生类 只有abstract 和 public 可以修饰 interface 扩展:abstract 和 final 冲突,不能修饰一个类 实例方法:通过类的实例才能访问的方法 类方法 = 静态方法 = static method Propagation:事务传播行为 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.这是

程序员也文艺:读万卷书,行万里路

人人都渴望成功的甜蜜,却并非人人都愿意流出咸咸的汗滴. 苦读一流的好书,悄做真诚的好人,细行实在的好事,欢度平凡的日子. 先读万卷书,后行万里路. 缤纷的世界上,真的就是这样-- 不是所有的花,都开在美丽的春天: 不是所有的果,都结在金色的秋季: 不是所有的歌,都唱在温馨的时刻. 说出来就是话,走出来就是路,唱出来就是歌. 我们因当说自己心里的真话,走自己心选的正路,唱自己心爱的好歌,走出梦中的小屋,走向理想的远方! 风风雨雨,明智的我们都不在乎:坎坎坷坷,真心的我们携手走过. 就这样总是朝着远

#读万卷书,不如行万里路#

#读万卷书,不如行万里路#路上总会有注定的不期而遇.了结心中一件大事之后(考科二三次终于过了...),就去了昨晚心中不知怎么发酵出来的想法---文殊院不是为了祈福之类的,就想去走一走,散散心,想想一些事情的答案.正如网上所言,"出入红尘,只有一墙之隔" ,正迈进一个不知道什么殿的时候,耳朵听到的是摩托车的鸣笛声,因为外面仍是可以车辆通行的路.出入红尘,其实也是由心所选择的吧.虽然我心并不信仰佛,但是那种氛围很能打动人吧.香火萦绕,虔诚叩拜,这样的心是祈求身体安康.万事遂心,干净纯粹.庙

做一个行万里路的旅者

         可以少读几页书,但绝不能少行一程路.人生不能仅仅是读书和写程序,你的视野应当更广阔一些.    一. 编程为何? 我已经有好一段时间,甚至可以说,大部分时间,是为了找工作而编程学技术了.为了找一份“高薪稳定”的工作,去苦读和钻研一大堆的技术,人事不经,甚至有点麻木迟钝.这并不是说钻研技术不对,问题是,为了什么而去做这件事情.为了编程而钻研技术,却渐渐忘了,为了什么而编程. 让我仔细回想一下,当初是怎么跑到这里来的呢? 显然不是被那一大堆的技术吸引过来的,也不是为了所谓的“高薪”

谋哥:行万里路不如名师指路

[谋哥每日一干货,第三十六篇] 这个标题小白肯定觉得:"又在扯淡了吧?!标题党吧?!" 昨天在一个上海IT创业群,给一个群里的同学稍微分析下他的网站.他的网站是youkoo.cn,中文名是优库 ,搞IC搜索的. 其实对话挺长,谋哥等下要去买菜做饭,所以简单写. 首先谋哥觉得这个"优库"这个名字不好,因为大家都知道"优酷",发音都一样,不便于产品品牌的宣传,推广.当然他们自己可能觉得这样会更容易让网友记住.先看看以下场景: A:"ic怎么

java小知识点(一)---Java中获取键盘输入值的三种方法

Java中获取键盘输入值的三种方法   程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:   以下将列出几种方法:   方法一:从控制台接收一个字符,然后将其打印出来   publicstatic void main(String [] args) throws IOException{   Sys

转:Java工程师成神之路~(2018修订版)

转: http://www.hollischuang.com/archives/489 阿里大牛珍藏架构资料,点击链接免费获取 针对本文,博主最近在写<成神之路系列文章> ,分章分节介绍所有知识点.欢迎关注. 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新技术知识.完善知识体系 一.基础篇 JVM JVM内存结构 堆.栈.方法区.直接内存.堆和栈区别 Java内存模型 内存可见性.重排序.顺序一致性.volatile.锁.final

实习模块vue+java小型全栈开发(三)

实习模块vue+java小型全栈开发(三) --dx 背景 首先,先给自己一个答案:这篇博客我定义为(三),因为之前的两个模块页面,内容都是一样的,但是被改了几次需求,就一直拖着没有上传. 今天是真正意义上的全栈开发,用的都是当前市面上的最新的框架前端是vuejs,后端springBoot全家桶,知识点很全,而我正好勉强的把前端知识赶完,然后进行的这次模块开发,并且这次模块开发给了我很大的惊喜. 全栈果然很神奇. 模块简介:点击考勤之后,调到一个页面,完成这个页面的所用功能. 完成之后的页面:我

033.[转] Java 工程师成神之路 | 2019正式版

Java 工程师成神之路 | 2019正式版 原创: Hollis Hollis 2月18日 https://mp.weixin.qq.com/s/hlAn6NPR1w-MAwqghX1FPg http://www.hollischuang.com/ 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新技术知识.完善知识体系 v2.0 2019-02-19 结构调整,更适合从入门到精通:进一步完善知识体系: 新技术补充: 1 基础篇 01 面