随笔分类 - Java
摘要:如下阻塞队列+线程的代码,很常见,当服务停止时,如何停止被BlockingQueue阻塞的线程? public class BlackingQueueTest { public static void main(String[] args) { BlockingQueue<Integer> bloc
阅读全文
摘要:Linux环境部署 1、执行jar包的命令和在windows操作系统上是一样 java -jar tag-web-0.0.1-SNAPSHOT.jar注: 关闭服务器连接时会关闭此程序进程,(推荐测试可用) 2、将jar程序设置成后台运行,并且将标准输出的日志重定向至文件tag-web.log no
阅读全文
摘要:HashMap基本原理和优缺点 一句话讲, HashMap底层数据结构,JDK1.7数组+单向链表、JDK1.8数组+单向链表+红黑树。 HashMap的3个底层原理 首先你应该知道HashMap的核心方法之一就是put。我们带着如下几个问题来看下图: hash值计算的算法是什么?就是key.has
阅读全文
摘要:本文目录: 1、Java内存结构 2、堆内存构成 3、垃圾回收算法、垃圾收集器选择 4、Java对象分配 5、Java虚拟机常用参数设置以及调优 1、Java内存结构 1.1、方法区(永久代perm space) 1.2、虚拟机栈(线程栈、方法栈帧、局部变量,线程之间数据隔离,所谓的“线程本地栈”)
阅读全文
摘要:JAVA 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由 JIT 编译器进行一些优化),因此这几个区域的内存分配和回收都具备确定性,不需要过多
阅读全文
摘要:回调的含义和用途 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同步调用、异步调用和回调。同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中对应函数B的代码得以执行。异步调用是一种类似消息或事件的机制解决了同步阻塞的问题,例如
阅读全文
摘要:Lambda表达式 函数式 Functional 接口 只包含一个抽象方法的接口,称为函数式接口。 你可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽象方法上进行声明)。 我们可以在一个接口上使用 @Fun
阅读全文
摘要:当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化 加载 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口(即引用地址)。所有需要
阅读全文
摘要:代理设计模式的原理: 使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象。 动态代理使用场合: 1.调试2.
阅读全文
摘要:Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API 取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结
阅读全文
摘要:Java 是 Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。 Java 提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的
阅读全文
摘要:Java NIO 概述 Java NIO (New IO,Non-Blocking IO) 是从 Java 1.4 版木开始引入的一套新的IO API,可以替代标准的 Java IO APi。NIO 与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基
阅读全文
摘要:IO 对象流 ObjectInputStream 和 OjbectOutputSteam 用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。 序列化: 用 ObjectOutputStream 类保存基本类型数据或对象的
阅读全文
摘要:标准的输入,输出流 * System.in 和 System.out 分别代表了系统标准的输入和输出设备 * 默认输入设备是: 键盘,输出设备是: 显示器 * System.in 的类型是 InputStream * System.out 的类型是 PrintStream,其是 OutputStre
阅读全文
摘要:转换流提供了在字节流和字符流之间的转换 Java API提供了两个转换流:InputStreamReader : 将 InputStream 转换为 ReaderOutputStreamWriter : 将 Writer 转换为 OutputStream 字节流中的数据都是字符时,转成字符流操作更高
阅读全文
摘要:java.io.File类: 文件和文件目6径的抽象表示形式,与平台无关 File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 想要在 Java 程序中表示一个真实存在的文件或目录,那么必须有一个 File 对象,但是 Ja
阅读全文
摘要:User.java package com.klvchen.exer1; public class User { private int id; private int age; private String name; public User() { } public User(int id, i
阅读全文
摘要:<?> 允许所有泛型的引用调用 通配符指定上限 上限 extends: 使用时指定的类型必须是继承某个类,或者实现某个接口,即<= 通配符指定下限 下限 super: 使用时指定的类型不能小于操作的类,即 >= Person.java package com.klvchen.java2; publi
阅读全文
摘要:什么是泛型 集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在 JDK1.5 之前只能把元素类型设计为 Object,JDK1.5 之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的
阅读全文
摘要:一: Map: 双列数据,存储 key-value 对的数据 类似于高中的函数: y = f(×) HashMap: 作为 Map 的主要实现类; 线程不安全的,效率高; 存储null的key和value1.1 LinkedHashMap: 保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:
阅读全文