
Java基础
Kevin_Lyz
这个作者很懒,什么都没留下…
展开
-
Java8 mac、linux使用jinfo,jstat命令报错问题 Can't attach symbolicator to the process
一、背景之前在最开始学习jvm的时候使用过一些java的监控命令,但是没有特别深入的去理解。工作之后最近重新学习,却产生了 ***Can’t attach symbolicator to the process***这样的报错,可以说出师不利。详细报错信息如下图:二、问题解决有的地方说是系统的安全权限有问题,有的地方说是 JDK 的 bug。经过一番整理,发现这个问题和平台有关系。...原创 2020-04-16 23:18:02 · 4520 阅读 · 5 评论 -
Lambda表达式和Stream操作
Lambda表达式Lambda是java8推出的新特性,在优化代码结构上有很大的便利。Lambda表达式是对匿名内部类的一种优化的语法。对比下面的例子就可以看出来lambda的写法更加简洁。//传统写法new Thread(new Runnable(){// 接口名 @Override public void run(){// 方法名 System.out.println("Thr...原创 2020-03-02 11:36:35 · 398 阅读 · 0 评论 -
并发编程之内存可见性
并发编程之内存可见性一、如何保证共享变量的可见性二、从number++看原子操作三、volatile适用场合四、重排序五、as-if-serial原则六、volatiele 和synchronized比较七、64位变量(long,double)一、如何保证共享变量的可见性volatile内存屏障 StoreStore。volatile执行写操作时,会在写操作后加入一条store屏障...原创 2020-01-03 15:44:07 · 314 阅读 · 0 评论 -
Java位运算不一定比乘法快 (关于java数据运算的一些思考)
//乘法运算 long begin = System.currentTimeMillis(); int a = 256; System.out.println(a); for (int i =0;i<2000000000;i++) a = a * 356; long time =Sy...原创 2019-06-03 00:26:56 · 4612 阅读 · 4 评论 -
JVM的client模式和Server模式(不要随便搞)
昨天朋友问了我一个问题,JVM client模式和Server模式之间的区别,对于这个问题之前并不知道,后来经过了一番查阅大致了解了一下,在这里简单做一下记录。一、如何查看JVM当前的模式想要查看JVM当前所处的模式很简单,只需要我们安装jdk时候的java -version命令就可以看到当然我们说的是Hot Spot虚拟机。二、启动上的差别Server模式启动时,速度较慢,但是一旦...原创 2019-06-27 19:54:46 · 2204 阅读 · 0 评论 -
Java内存模型 看这篇就够了
Java内存模型写在前面一、什么是Java内存模型二、为什么要有内存模型2.1 CPU和缓存一致性2.2 处理器和编译器的指令重排2.3 小结三、Java内存模型的实现3.1 原子性3.2可见性3.3有序性四、总结写在前面在这之前首先我们要搞清楚Java内存模型存在的意义是为了解决并发编程存在的问题,不要与JVM内存结构相混淆。与Java内存模型不同,JVM内存结构描述的是Java虚拟机对不同...原创 2019-06-27 22:37:45 · 351 阅读 · 0 评论 -
大数据量数据库优化方案(Innodb避免进行全表查询)
首先考虑在涉及到where或order by的字句上建立索引where 中存在 is null使用like进行查询避免在where字句中使用!= 或<>操作符避免在where字句中使用or进行连接能使用between尽量减少in字句的使用,以及not in.不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。se...原创 2019-07-17 11:26:53 · 1914 阅读 · 0 评论 -
String的不可变性及StringBuilder原理
String的不可变性及StringBuilder原理一、String的不可变性为什么将String设计成不可变类?String类设置为不可变类的好处:二、StringBuilder的实现原理原理**append的实现****toString实现**一、String的不可变性关于String类型的具体分析,可以参考我另一篇博客第三小节的补充内容,有很详细的叙述。String 对象的两种创建...原创 2019-06-03 00:04:01 · 2020 阅读 · 0 评论 -
Java匿名对象的性能优势分析
Java匿名对象的性能优势分析1. 匿名对象2. Java创建对象的过程3. 性能差异存储上的性能差异垃圾回收上的差异4. 继续今天思考了一下java在使用匿名方式创建对象和普通的句柄方式对java传递对象的性能进行了一点简单的思考,可能不是很全面,在某些方面的理解也能有些偏差,欢迎各位大佬探讨指正!首先阐明结论:对于能够使用匿名对象进行对象创建和传递的时候,是具有一定性能优势的,尤...原创 2019-06-02 23:40:10 · 3564 阅读 · 0 评论 -
Spring IoC概念理解、Spring对Bean的管理方式和几种注入方法的分析
Spring IoC概念理解、Spring对Bean的管理方式和几种注入方法的分析一、核心概念IOC: 控制反转( Inversion of Control)/依赖注入(Dependency Injection) :由Spring容器负责对象的生命周期和对象之间的依赖关系如何理解控制反转?谁控制谁? IOC容器控制对象。传统的开发模式,我们都是采用直接new对象的方式来创建对象,每个...原创 2019-03-23 17:18:33 · 2448 阅读 · 0 评论 -
有关Java浮点数的一个有趣的例子以及一个尚未解决的疑惑(java在存储float值时采用的什么策略,是否存在舍入优化?)
有关Java浮点数精度丢失的一个有趣的例子以及尚未解决的疑惑本文章重点在于表述最后的例子和尚未解决的疑问,故对于浮点数相关概念只是简单进行叙述一、浮点数的存储模式Java 语言支持两种基本的浮点类型: float 和 double 。java 的浮点类型都依据 IEEE 754 标准。IEEE 754 定义了32 位和 64 位双精度两种浮点二进制小数标准。IEEE 754 用科学记数法以...原创 2019-03-23 19:47:28 · 1822 阅读 · 2 评论 -
1.8版本 最清晰理解Java内存区域划分
从Java的各种数据类型的存储看Java内存区域划分一、各种基本数据类型的存储我们先来看一段小代码:public class{ int a = 20; public static void main(String[] args){ int b = 10; String str1 = ”abc“; String str2 = new String("abc"); }}我...原创 2019-03-27 16:31:48 · 4358 阅读 · 3 评论 -
对Java类初始化顺序的一些理解
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行。执行顺序优先级:(静态块| 静态变量) , main(), (构造块|成员变量) , 构造方法。括号内的内容根据声明的先后顺序进行执行。构造函数public HelloA(){//构造函数 }关于构造函数,要注意:执行HelloA helloA =...原创 2019-04-10 23:21:21 · 1704 阅读 · 0 评论 -
[Java基础]Java Collection集合框架底层数据结构精简总结
Collection集合ListArrayList:object数组LinkedList:双向链表线程安全? 否异同? ArrayList适合随机存取LinkedList适合插入删除操作,不适合搜索MapHashMap:数组加链表,拉链法解决冲突 1.8之后超过阈值转为红黑树以减少搜索时间 非线程安全 初始大小为16,每次扩容为原来的二倍HashTable:数组...原创 2019-04-07 15:21:00 · 2308 阅读 · 3 评论 -
final和static关键字辨析
final和static关键字辨析final关键字static关键字修饰成员变量和成员方法静态代码块static{}静态代码块与{}非静态代码块(构造代码块)final关键字final关键字被用于修饰 变量,方法和类final修饰的变量若为基本数据类型,值不可改变,如为引用数据类型,则引用指向不可改变。当final修饰一个类时,final类中所有的成员方法都会被隐式的指定为final类型...原创 2019-04-20 17:38:12 · 1852 阅读 · 0 评论 -
[JavaScript]理解JavaScript函数,类继承
JavaScript函数,类继承一、JavaScript函数二、函数的类属性和实例属性三、区分一个很重要的问题:四、继承机制的实现一、JavaScript函数js函数函数的声明:一般的函数声明function f(){}匿名函数声明var f = function(){}函数的调用直接使用函数名调用(这种调用方法是最直接也是最直观的调用方法,适合用作普通的...原创 2019-04-17 18:11:37 · 1919 阅读 · 0 评论 -
理解java的回调机制
Java回调机制一、方法的调用模式理解接口和抽象类的设计理念二、回调场景三、小结最近学习了一下Java 的回调机制,查看了网络上的一些内容,并借鉴了一些在这里整理一下自己的思路。一、方法的调用模式(1)同步调用同步调用是最基本并且最简单的一种调用方式,类A的方法a()调用类B的方法b(),一直等待b()方法执行完毕,a()方法继续往下走。这种调用方式适用于方法b()执行时间不长的情况,因...原创 2019-05-10 16:09:30 · 4150 阅读 · 2 评论 -
Java包装类及自动装箱、拆箱
Java包装类基本类型大小包装器类型boolean/Booleanchar16bitBooleanbyte8bitByteshort/16bitShortint32bitIntegerlong64bitLongfloat32bitFloatdouble64bitDoublevoid/Void...原创 2019-03-19 15:00:31 · 4828 阅读 · 3 评论