Java
XIPIKER
这个作者很懒,什么都没留下…
展开
-
Java虚拟机学习,持续更新中~
说明本教程测试源码可在github获得>_>!还没有上传,可以忽略~项目中包名’pers.xipiker.jvm1’和标题中或者内容部分有(#jvm1)对应,依次类推。本教程是比较基础的,深入还在学习中,此内容持续更新中~建议买本书看,先在哔哩哔哩看基础视频,或者总结一下其他优秀的博客进行学习,然后在买一本对应的书在继续学习~jdk、jre和jvm之间的关系JDK(Ja...原创 2019-02-15 00:07:59 · 917 阅读 · 0 评论 -
Java多线程高并发,代码示例(三)
ThreadLocal线程的局部变量(一)/** * ThreadLocal线程的局部变量 */public class ThreadLocal1 { volatile static Person p = new Person(); public static void main(String[] args) { new Thread(()->{ ...原创 2019-03-02 22:21:57 · 259 阅读 · 0 评论 -
Java多线程高并发,代码示例(一)
对某个对象加锁/** * synchronized关键字 * 对某个对象加锁 */public class T { private int count = 10; private Object o = new Object(); public void m(){ //任何线程要执行下面代码,必须先拿到o锁 synchronized ...原创 2019-02-26 17:38:42 · 5804 阅读 · 2 评论 -
Java多线程高并发,代码示例(四)
卖火车票问题(一)/** * 有N张火车票,每张票都有一个编号,同时有10个窗口对外售票。 * 分析下面的程序可能会产生哪些问题? * 重复销售?超量销售? * 问题:有可能卖重复,remove也不是原子性的。 */public class TicketSeller1 { static List<String> tickets = new ArrayList&lt...原创 2019-03-05 17:17:34 · 2361 阅读 · 0 评论 -
《深入理解Java虚拟机》-内存溢出
Java堆异常测试/** * Java堆异常测试 * Vm Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError */public class jvm2_3 { static class OOMObject{} public static void main(String[] args) { List...原创 2019-02-26 10:10:50 · 109 阅读 · 0 评论 -
悲观锁与乐观锁
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其...转载 2019-02-25 16:50:27 · 82 阅读 · 0 评论 -
Java泛型
什么是泛型?为什么需要泛型?问题观察如下案例public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("xipiker"); list.add("1G5e7e9k3"); ...原创 2019-02-14 11:49:17 · 106 阅读 · 0 评论 -
Java基础与应用场景介绍(二)
数据库数据库的分类及常用的数据库数据库分为:关系型数据库和非关系型数据库。关系型:MySql、Oracle、SqlServer等。非关系型:redis、memchache、mongodb、hadoop等。数据库的三范式范式就是规范,就是关系型数据库在设计表时,要遵循的三个规范。想要满足二范式,必须先满足一范式,想要满足三范式,必须满足一范式。第一范式(1NF)是指数据库表的每...原创 2019-02-24 17:10:45 · 712 阅读 · 0 评论 -
Java多线程高并发,代码示例(二)
synchronized优化,同步代码块中的语句越少越好/** * synchronized优化 * 同步代码块中的语句越少越好,比较m1和m2 */public class T { int count = 0; synchronized void m1(){ //do sth need not sync try { ...原创 2019-02-28 16:04:04 · 695 阅读 · 1 评论 -
Java Runtime总结
概述Runtime类封装了运行时的环境。每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。不能实例化Runtime对象,应用程序也不能创建自己的Runtime类实例,但可以通过getRuntime方法获取当前Runtime运行时对象的引用。一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。当...原创 2019-02-13 14:29:10 · 561 阅读 · 0 评论 -
Java开发常用笔记,持续更新中~
BigDecimal循环累加问题 BigDecimal total = new BigDecimal(0);//初始值需要为0 for(AccountType listResult:list){ Map<String, Object> map = new HashMap<String, Object>(); map.put("userId", u...原创 2019-02-13 11:29:06 · 266 阅读 · 0 评论 -
Java基础,持续更新中~
Java Basicsjava package 命名规范个人的项目命名indi:个体项目(individual),指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。包名为"indi.发起者名.项目名.模块名.XXX"onem:单人项目(one-man),推荐用indi,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主...原创 2019-02-13 11:26:15 · 141 阅读 · 0 评论 -
Java编译原理(持续更新中~)
Clazz文件结构概述Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件之中,中间没有添加任何分隔符,整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙。当遇到8位字节以上的空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。Class文件中有两个数据类型,分别是无符号数和表。Class文件结构(魔数...原创 2019-02-18 00:10:47 · 153 阅读 · 0 评论 -
Java反射
前言项目主体源码可以从reflectionDemo获得,喜欢的朋友可以点个star~。参考文献在参考资料部分有介绍。概述在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制。通俗点讲,通过反射,该类对我们来说是完全透明的,...原创 2019-02-27 16:23:19 · 118 阅读 · 0 评论 -
Java基础与应用场景介绍(一)
Java的跨平台原理由于各个操作系统(windows、linux等)支持的指令集,不是完全一致的,就会让我们的程序在不同的操作系统上要执行不同程序代码,java开发了适用于不同操作系统及位数的java虚拟机来屏蔽系统之间的差异,提供了统一的接口。对于我们java开开发者而言,你只需要在不同的操作系统上安装对应的不同虚拟机、这时你的java程序只要遵循java规范,就可以在所有的操作系统上运行j...原创 2019-02-22 00:38:57 · 3133 阅读 · 0 评论 -
Java基础深入
java基础ArrayList 和 linkedList 区别及底层代码及时间复杂度List常用的ArrayList和LinkedList使用场景?ArrayList底层使用的是数组,LinkedList使用的是链表。数组查询具有所有查询特定元素比较快,而插入和删除和修改比较慢(数组在内存中是一块连续的内存,如果插入或删除是需要移动内存)。链表不要求内存是连续的,在当前元素中存放一个或...原创 2019-03-06 16:50:42 · 481 阅读 · 0 评论