随笔分类 - Java
摘要:我们先来看看我们常说的缓存有哪些 CPU 的 L1, L2, L3 缓存 操作系统内存(相对于CPU来说也是缓存) 操作系统 page cache 高速页缓存(缓存磁盘中的数据) Redis 用作 MySQL的缓存 MySQL buffer pool 的数据页缓存 Java HashMap 实现的堆
阅读全文
摘要:翻译自 Guava wiki CacheExplained,中文翻译原文 Guava 源码中文注释地址点这里 Caches 示例 LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(1000) .expir
阅读全文
摘要:引言 今天刷题时遇到了一个很奇怪的问题,我们知道java HashMap的扩容是有成本的,为了减少扩容的次数和成本,可以给HashMap设置初始容量大小,如下所示: HashMap<string, integer=""> map0 = new HashMap<string, integer="">(
阅读全文
摘要:先看官方文档 Primitive Data Types The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of impr
阅读全文
摘要:使用自旋 + LockSupport + CAS 具体实现: package thread.lock; import sun.misc.Unsafe; import java.lang.reflect.Field; import java.util.concurrent.ConcurrentLink
阅读全文
摘要:字符串类型 String String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。 StringBuffer 线程安全的可变字符
阅读全文
摘要:源码 public class Dichotomy { public static void main(String[] args){ int[] array = new int[12]; for(int i=0;i key){ right = t 1; } } return 1; } }
阅读全文
摘要:文件创建与删除 创建目录或文件 createNewFile() 需要文件目录已存在 public class IO { public static void main(String args[]) { String dirname = "D:\\java\\temp.txt"; File d = n
阅读全文
摘要:读取控制台输入 从控制台读取一行数据,返回值字符串 public class IO { public static void main(String args[]) throws IOException { // 使用 System.in 创建 BufferedReader BufferedRead
阅读全文
摘要:[Toc] java集合框架[^目录] [^目录]:回到目录 目录图 框架图 List 相关接口 接口中出现的方法其实现类中必然都有且含义相同,所以先介绍接口,再看具体实现类实现的接口与相关方法 List extends Collection接口 方法较多,请自行参考API ListIterator
阅读全文
摘要:判断对象存活 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1,引用失效时,计数器就减1;任何时刻计数器都为0的对象就是不可能再被使用的。 问题:无法解决对象之间的相互循环引用 根搜索算法(java,c ,List) 通过一系列的名为"GC Roots"的对象作为起始点
阅读全文
摘要:类的生命周期 加载,验证,准备,初始化,卸载这五个过程顺序是固定的 类加载时机 new、getstatic、putstatic、invokestatic这4个字节码指令时对类进行初始化(即:实例化对象、读写静态对象、调用静态方法时,进行类的初始化) 使用反射机制对类进行调用时,进行类的初始化 初始化
阅读全文
摘要:简单使用示例 Java 提供了三种创建线程的方法: 通过实现 Runnable 接口; 通过继承 Thread 类本身; 通过 Callable 和 Future 创建线程。 还有 定时器 线程池 下面第一个类给出了四种创建方式,第二个类是定时器示例。 ① public class ThreadSt
阅读全文
摘要:在SpringBoot项目中使用slf4+logback ①在pom.xml中添加依赖 ch.qos.logback logback classic org.slf4j jcl over slf4j ②在resources目录下新建配置文件logback.xml study <! 定义日志文件的存储
阅读全文
摘要:java内存结构 1.程序计数器 ①作用:当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 ②如果正在执行的是Natvie方法,这个计数器值则为空(Undefi
阅读全文
摘要:环境 idea 15 下载maven安装包 http://maven.apache.org/download.cgi Maven安装配置 ①先建立一个文件夹Maven,解压缩到该目录 ②配置本地仓库路径 如果不配置,则存储在默认路径 在maven目录下再新建一个文件夹localrepo,用来存放下载
阅读全文
摘要:部署方式:打包成jar部署 部署方式有两种,一种是传统的war包,另一种是打包成jar,推荐第二种方式部署 部署准备 1. jar包内置tomcat,无需服务器安装tomcat环境 2.需要JDK,且版本与pom.xml中的 一致 3.请注意数据库连接用户,密码等配置,确保能连接服务器上的数据库 若
阅读全文
摘要:环境准备 idea 15 jDK tomcat maven 搭建方式 官网下载源码包解压缩 使用idea中的Spring initializr创建 这两种方法创建的项目完全相同,只是操作方式不一样 这里介绍第二种方法,用idea创建 ①在idea中,选择 出现如下界面 ②填写GVN(GroupId,
阅读全文
摘要:1.安装OpenJDK 这里安装的OpenJDK,是开源版本的JDK,我们平时自己电脑上安装的是 Sun JDK(也叫Oracle JDK),OpenJDK可以看作Sun JDK的精简版。 如果想安装SunJDK,请参照下方的tomcat安装方法,步骤是一样的,注意liunx有些自带OpenJDK,
阅读全文
