随笔分类 - Java基础
摘要:1、并发编程挑战 1.1、上下文切换: 1.1.1、什么是上下文切换? 单核也支持多线程执行,原因是通过时间片轮换,时间片是CPU分配给各线程的时间,在切换过程中,会先保存上个任务信息,再加载当前任务信息,所以任务从保存到再加载的过程就是一次上下文切换。 1.1.2、并行vs串行 并发执行速度比串行
阅读全文
摘要:概括起来说,对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。 ThreadLocal 并不能替代同步机制,两者面向的问题领域
阅读全文
摘要:输出2147359167,123456 可以简单满足混淆,和恢复的需求
阅读全文
摘要:package jesse.test1; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; // 生产者 class Producer implements Runnable{ private BlockingQueue queue; ...
阅读全文
摘要:package jesse.test1; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java...
阅读全文
摘要:package jesse.test1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.ServerSocke...
阅读全文
摘要:Cglib动态代理采用的是创建目标类的子类的方式。优点:不用实现额外接口,只操作我们关心类,高性能。
阅读全文
摘要:JDK代理,非常简单地实现了动态代理(首先是实现对应的InvocationHandler;然后,以接口来为被调用目标构建代理对象,代理对象简介运行调用目标,并提供额外逻辑插入) 缺点:它是只能以接口为中心的。优点:依赖JDK,更稳定可靠,跟着JDK升级,代码简单。
阅读全文
摘要:首先NoClassDefFoundError是一个错误,而ClassNotFoundException是一个异常 NoClassDefFoundError产生的原因: 如果JVM或者Classloader实例尝试加载类(或者new创建对象)却找不到类的定义,要查找的类在编译时期是存在,运行期间却找不
阅读全文
摘要:ArrayList也叫作数组列表 ArrayList是基于数组实现的,是一个动态数组,其容量能够自动增长 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境需要使用Collections同步方法。Collections.synchronizedList(List l)返回一个线程安全
阅读全文
摘要:1)、java监控工具使用 jconsole是一种集成了上面所有命令功能的可视化工具,可以分析jvm的内存使用情况和线程等信息 visualvm 提供了和jconsole的功能类似,提供了一大堆的插件。 插件中,Visual GC(可视化GC)还是比较好用的,可视化GC可以看到内存的具体使用情况。
阅读全文
摘要:1).反射 通过反射的方式可以获取class对象中的属性、方法、构造函数等,一下是实例: 2).动态代理 使用场景: 在之前的代码调用阶段,我们用action调用service的方法实现业务即可。 由于之前在service中实现的业务可能不能够满足当先客户的要求,需要我们重新修改service中的方
阅读全文
摘要:1)什么是jms JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API。 它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发, 翻译为Java消息服务。 2
阅读全文
摘要:1). java并发包介绍 JDK5.0 以后的版本都引入了高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程发编程的, 主要包含原子量、并发集合、同步器、可重入锁,并对线程池的构造提供了强力的支持。 2).线程池的创建 线程池的5中创建方式: a、 Sin
阅读全文
摘要:1).synchronized 加同步格式: synchronized( 需要一个任意的对象(锁) ){ 代码块中放操作共享数据的代码。 } synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。 如果一个代码块被synchronized
阅读全文
摘要:如果String通过"+"来拼接,如果拼接的字符串是常量,则效率会非常高,因为会进行编译时优化,这个时候StringBuilder的append()是达不到的。 如果将String的"+"放在循环中,会创建很多的StringBuilder对象,并且执行之后会调用toString()生成新的Strin
阅读全文
摘要:Java基本程序结构 1、类名是以大写字母开头的名词代码能够执行的类,要有main函数,且声明必须是public 2、注释: “//”,"/**/" 行注释 "/***/"可以自动生成文档 3、数据类型8种 4种整型:int(存储4字节) ,short(存储2字节),long(存储8字节),byte
阅读全文

浙公网安备 33010602011771号