- 博客(17)
- 收藏
- 关注
原创 JavaEE_多线程(二)
锁对象是谁并不重要,重要的是通过这个对象来区分两个线程是否竞争同一个锁,如果两个线程针对同一个对象进行加锁,就会产生锁竞争,一旦产生竞争,一个线程能拿到锁继续执行代码,一个线程拿不到锁,就只能阻塞等待,等前一个线程释放锁之后,他才有机会拿到锁。共享变量存在于主内存中, 每一个线程都有自己的工作内存,当线程要读取一个共享变量的时候,会先把变量从主内存拷贝到工作内存,再从工作内存读取数据,当线程要修改一个共享变量的时候,也会先修改工作内存的副本,再同步回主内存。
2025-03-11 22:28:36
973
1
原创 JavaEE_多线程(一)
start和run都是Thread的成员,run只描述了线程的入口(线程要做什么任务),start 则是真正调用系统API,在系统中创建出线程,让线程在调用API。Thread类是JVM用来管理线程的一个类,每一个线程都有唯一的Thread对象与之关联,Thread类对象就是用来描述一个线程执行流的。线程: 一个线程就是一个执行流,每个线程之间都可以按照自己的顺序执行自己的代码,多个线程可以分别执行多份代码。在Java中,要让一个线程停止运行(销毁),做法是比较唯一的,就是想办法让run方法尽快执行结束。
2025-03-04 23:14:34
901
1
原创 MySQL_数据库基础
用的最多的就是varchar类型,size表示该类型里最多存储几个字符(不是字节),当你size为10,不是说立即分配10个字符的空间,会先分配一个比较小的空间,如果不够会自动扩展,最大空间不超过10.我们实际工作中,是吧一系列sql写到一个文件中,批量执行的,批量执行的时候,如果一条sql报错,那么后面的sql就无法执行了。用decimal举例,他是一个精度更高的浮点数,虽然精度更高,但是运行速度回变慢,占用空间也更多。删除表的同时,也会把表里的数据一起删掉,也是一个非常危险的行为。
2024-12-22 21:18:43
639
1
原创 算法_双指针_盛最多水的容器
定义两个指针left和right,left初始位于最左侧,向右移,right位于最右侧,向左移,最开始得到一个V1,之后left和right谁指的数较小,谁移动,移动后得到V2,每得到一个体积就更新一下最大值,两指针相遇后剩下的值就是最大V。此时盛水高度为4(这个高度由两壁中较短的来决定),盛水长度为3,能盛水量为3×4=12。利用单调性,让双指针分别从左右两侧向内遍历一遍数组,在得到的几个V中选择最大的那个V即可。接下来向内进行枚举,假设左壁6(较高一侧的壁)不变,右壁向内枚举的过程中。
2024-12-19 14:44:03
233
原创 JavaSE基础语法_继承和多态
在构造对象的时候,会先调用父类的构造方法,将从父类继承下来的那部分成员变量初始化,然后再调用子类自己的构造方法,将子类自己新增加的成员变量初始化。子类和父类中可能会存在相同名称的成员,如果要在子类方法中访问父类同名成员时,直接访问会变成访问子类的成员。通过派生类创建的对象访问父类与子类同名的方法时,如果子类和父类的同名方法参数列表不同(意思是两个同名方法构成了重载),则会根据调用方式时传递的参数选择合适的方法。同上,通过子类对象访问父类和子类不同方法名时,优先在子类中查找,找到就访问子类自己的。
2024-12-18 17:43:15
1740
原创 算法_双指针_快乐数
2的31次方是21亿多,21亿是个十位数,我们知道9的次方是最大的,选一个最大的十位数9999999999将每一位平方后相加结果为810.也就是说n在循环中产生的数字范围为【1,810】一共810个数字。不要被指针所限制,双指针只是一种思想,并不是传统意义上的指针,这里slow指针走一步,我们就将数字处理一次,fast指针走两步,就将数字处理两次,相当于就是修改了指针,让它指向了变化后的数字。题目中已经说了这个数要么变为1.要么无限循环(为什么会循环会在拓展中讲到,这里的无限循环是不包括1的)
2024-12-17 23:11:36
317
原创 算法_双指针_复写零
我们发现问题,当cur遇到0时,dest需要将0,2都改写成零,会把原来的2覆盖,往后所有元素都会变成零。我们试试从右向左,dest需要写完整个数组,容易想到初始位置在最后边,同时我们将cur初始位置设置在最后一个需要复写的数字上,本题中为4。这里dest定义为-1位置,因为dest作为结果中最后一个需要复写的数的位置,刚开始不知道那个数在哪,所以dest初始位置-1.所以需要考虑一下边界情况,我们发生越界一定是最后一个要复写的数为0,有可能复写到数组外面,越界一定是cur为0导致的。
2024-12-14 23:54:32
629
原创 JavaSE基础语法_类和对象
Java是一种OOP语言(面相对象的编程语言)类是用来描述对象的,是一个模板。类当中包含成员变量和成员方法。当我们创建了一个类,就相当于自定义了一个类型,有了类型就可以创建对象(类似于int a,int是类型,a是对象名)。
2024-12-14 12:20:21
844
原创 算法_双指针_移动零
这里的dest指针的作用就是一个分割线,相当于左边处理过的区间又被dest分为两个小区间,这两个指针加起来将数组划分为三个区间[0,dest],[dest+1,cur-1],[cur,n-1]。我们定义两个指针,一个为dest,另一个为cur。我们将其归为数组划分这类题中:给了我们一个数组,给了我们一个规则,让我们将数组划分为几个区间。dest:已处理区间内,非零元素的最后一个位置,意思是处理过后dest左边区间的全部为非零元素。本题就是将数组划分为两个区间,一个区间为零,另一个区间为非零元素。
2024-12-13 23:54:31
420
原创 JavaSE基础语法_数组
数组是相同类型的一个集合,是内存中一段连续的空间,每个数组元素的空间是紧密相连的且都有自己的编号,第一个数组元素的编号(下标)为0。
2024-12-06 21:50:29
1730
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人