- 博客(20)
- 收藏
- 关注
原创 线程-并发-锁
线程-并发-锁1.线程是否对同步资源加锁1.1 不加锁:乐观锁1.1.1 CAS1.1.2 为什么无锁效率高1.1.3 CAS存在的三个问题1.2 加锁2.锁住同步资源失败,线程是否阻塞2.1 阻塞2.2 不阻塞3.多个线程竞争同步资源的流程3.1 Synchronized如何实现线程同步?3.2 无锁3.3 偏向锁3.4 轻量级锁3.5 重量级锁3.6 synchronized整体流程图如下:4.多个线程竞争锁是否公平4.1 公平锁4.2 非公平锁4.3 ReentranLock4.3.1 非公平锁实现原
2022-02-22 14:34:51 766
原创 Throwable
ThrowableError(错误)Exception(异常)throw 与 throwsfinally 块Throwable包含错误(Error)和异常(Exception)两类。Error(错误)Error是程序无法处理了,这些异常发生时, java虚拟机一般会终止线程。如java.lang.OutOfMemoryError:java内存溢出,内存中加载的数据量过于庞大,如a.一次从数据库取出过多数据;b.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;c.代码中存在死循
2021-05-24 20:54:04 1742
原创 一 MySQL架构与历史
保存这两个额外系统版本号,使大多数读操作都可以不用加锁。这样设计使读数据操作很简单,性能很好,并且也能保证只会读取到符合标准的行。不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作,以及一些额外的维护工作。
2021-05-06 20:39:37 633 2
原创 JVM(6)
第6章 类文件结构代码编译的结果:本地机器码 ----> 字节码1. 无关性的基石字节码:(1)平台无关性(2)语言无关性实现语言无关性的基础:(1)虚拟机(2)字节码存储格式2. Class类文件的结构Class文件-----唯一的一个类或接口的定义信息;Class文件是一组以8个字节为基础单位的二进制流;Class文件格式采用伪结构存储数据,这种伪结构中只有两种数据类型:“无符号数”和“表”(1)无符号数属于基本的数据类型,以u1、u2、u4、u8分别代表1个字节、2个字节、4
2021-03-29 14:42:30 119
原创 JVM
JVM 第一部分第1章 走近Java1. Java的优点:2. JCP官方定义的Java技术体系:3. java技术的未来第1章 走近Java1. Java的优点:(1)拥有一门结构严谨、面向对象的编程语言(2)摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想;(3)提供了一种相对安全的内存管理和访问机制,避免了绝大部分内存泄漏和指针越界问题;(4)实现了热点代码检测和运行时编译及优化,使得 Java 应用能随着运行时间的增长而获得更高的性能;(5)有一套完善的应用程序接口,还有无
2021-03-29 13:42:47 123 1
原创 java数组
3.1 数组的概述 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。 数组的长度一旦确定,就不能修改。 3.2 一维数组的使用(1)声明方式:type var[] 或 type[] var;如int ...
2021-01-26 15:32:35 92
转载 java变量与运算符
2.1 关键字与保留字1.关键字(keyword)的定义和特点 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中所有字母都为小写 官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html 2.Java保留字(reserved word): 现有Java版本尚未使用,但以后版本可能会作为关键字使用。 自己命名标识符时要...
2021-01-26 15:30:25 224
原创 了解Java
一个0或者一个1存储为一个比特(bit),是计算机中最小的存储单位。计算机中最基本的存储单元是字节(byte),每个字节由8个bit构成。 人机交互方式:图形化界面(GUI),命令行方式(CLI)。常用的DOS命令: dir :列出当前目录下的文件以及文件夹 md :创建目录 rd :删除目录 cd :进入指定目录 cd.. : 退回到上一级目录 cd\:退回到根目录 del :删除文件 ...
2021-01-26 15:26:42 114
原创 数据结构与算法分析第三章
数据结构与算法分析第三章三、表、栈和队列3.1 抽象数据类型(ADT)3.2 表ADT3.2.1表的简单数组实现文章目录三、表、栈和队列3.1 抽象数据类型(ADT)3.2 表ADT3.2.1表的简单数组实现三、表、栈和队列3.1 抽象数据类型(ADT)是带有一组操作的一些对象的集合。诸如表、集合、图以及他们各自的操作一起形成的这些对象都可以看成抽象数据类型,就像整数、实数等都是数据类型一样。3.2 表ADT3.2.1表的简单数组实现可以通过创建新数组的方式扩充原数组,优点是节省查找时
2021-01-23 14:08:36 550
原创 两个栈内元素不能直接进行比较
这是LeetCode上面最小栈问题,这两段代码只有pop()方法比较时存在差异,但上面代码是正确的,下面的代码是错误的。输出一下结果,发现原因是如果先将stack.pop()赋值给int类型的num,再比较,则是两个整数进行比较。而下面直接进行比较,则是两个Integer类型在进行地址比较class MinStack { Stack<Integer> stack; Stack<Integer> minStack; /** initialize y
2021-01-21 11:42:26 491
转载 Java-Arrays类:fill()方法
public static void fill(int[] a, form, to, int var)参数:a:数组 form:替换开始位置(包括) to:替换结束位置(不包括) var:要替换的值public class Test { public static void main(String[] args) { int[] a = new int[]{1,2,3,4,5,6};...
2021-01-19 10:27:00 558
转载 获取数据类型的方法
private static String getType(Object o){ return o.getClass().toString(); //使用Object类型的getClass()方法} public static void main(String[] args) { int a = 10; String str1 = Integer.toString(a); String str2 = "" + a; System.out.println.
2021-01-19 10:22:21 625 2
原创 两种区分数字和运算符的方法
比较ASCII码值for(int i = 0;i < s.length();i++){ char c = s.charAt(i); if(c >= '0'){ //符号的ASCII表对应数字均小于0 System.out.println("c是数字"); } if(c < '0'){ System.out.println("c是运算符号"); }}Character.isDigit() 方法用于判...
2021-01-19 10:16:20 741
原创 一种简洁的奇偶判断方式:&是一个按位操作
if((level & 1) == 1){ System.out.println("level是奇数");}else{ System.out.println("level是偶数");}// 如level = 5,转换二进制即为101,101 & 001 = 001(二进制) = 1(十进制)// 如level = 12,转换二进制即为1100,1100 & 0001 = 0000(二进制) = 0(十进制)...
2021-01-19 10:14:15 133
转载 数组、栈转字符串
数组、栈转字符串static void Main(string[] args){ int[] nums = new int[] { 1, 2, 3, 4, 5, 6 }; string a = string.Concat(nums); //数组转成字符串 123456 string a2 = string.Join(" ", nums); //数组每个元素间多了空格1 2 3 4 5 6 string a3 = string.Join("###", nums); //数组每
2021-01-17 16:03:49 2504 2
转载 empty()与isEmpty(),空判断
Stack 继承了 类 java.util.Vector 中的方法下面是isEmpty()和empty() 的源代码:Vector中的方法isEmpty():Stack的方法empty():Stack中的empty()函数会调用vector中的size()函数,再判断是否为空。空值,空对象,空格://空对象: String s = null; 空对象是指定义一个对象s,但是没有给该对象分配空间,即没有实例化该对象,因此,空对象在调用所有对象方法时候都会抛出异常,如s.l.
2021-01-17 13:08:13 3211
转载 Deque
概念从上图看出,Queue以及Deque都是继承于Collection,Deque是Queue的子接口。在概念上来说,Queue是FIFO的单端队列,Deque是双端队列。而在使用上,从上图我们可以得知,Queue有一个直接子类PriorityQueue,而Deque中直接子类有两个:LinkedList以及ArrayDeque。PriorityQueue我觉得重点就在圈定的两个单词:无边界的,优先级的堆。然后再看看源码在第一张图片的源码中,明显看到Pri...
2021-01-17 12:08:55 370
原创 Java中length、length()、size()的区别
Java中length、length()、size()的区别1.length不是方法,是数组的属性,用于获取数组长度public static void main(String[] args) { int[] arr = {1,2,3}; System.out.println("数组长度:" + arr.length);}2.length()是字符串String的一个方法,用于获取字符串长度public static void main(String[] args) { Stri
2021-01-13 13:48:55 314 1
转载 JAVA中final关键字的作用
9.JAVA中final关键字的作用:final关键字可以用来修饰引用、方法和类。用来修饰一个引用: 如果引用为基本数据类型,则该引用为常量,该值无法修改; 如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。 如果引用为类的成员变量,则必须赋值,否则编译会报错。 final class Person { String name ="zs"; //3. 此处不赋值会报错 //final...
2021-01-13 12:53:36 157
原创 Java中List集合的常用方法
10.Java中List集合的常用方法List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来。1、void add(int index, E element)在指定位置插入元素,后面的元素都往后移一个元素。 public static void main(String[] args) { List list1 = new ArrayList<>(); list1.add("aaa"); list1...
2021-01-13 12:49:48 1729 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人