Java基础
文章平均质量分 76
斯外戈202
这个作者很懒,什么都没留下…
展开
-
并发安全容器
先来说一下他的实现原理,再jdk1.7以前时,他是使用分段数组+链表的形式,他是使用Segment数组和hashEntry数组来实现的。然后它也具有可重入锁的性质。前面不是说一个ConcurrentHashMap里面有一个Segment吗,这个Segment的个数一旦被初始化就无法改变了,默认的数量就为16个也就是说可以默认16个数组并发写。然后原理的话,就是他把那些数据分成一段段的(这个段就是Segment),然后给每一段数据配上一把锁,当一个线程占用锁去访问这段数据的时候,其他数据也能访问。原创 2024-03-05 12:38:34 · 335 阅读 · 0 评论 -
Java原子类和并发工具类
他的全称是compare and swap,比较并且交换,所以他是相当于通过一个原子操作,经过读取内存,比较数据,交换数据这个三个步骤,本质上是CPU指令的支撑CAS机制不是读取内存比较数据,交换数据吗,如果假如说这个数据是A,然后他变为了B,然后又变为了A,CAS他是检查不到的,但是他其实是变化了的,在某些场景可能问题不是很大,但是在有的场景中却容易出现问题。原创 2024-03-05 12:37:56 · 381 阅读 · 0 评论 -
Java并发编程——锁
可重入锁的意思就是自己可以获得自己的内部锁,比说就是一个线程去获取到另一个对象中的锁,如果该锁没有释放的话,我们可以等下一次来的时候再获取该对象的锁,如果没有可重入性,那么就会造成死锁。同一个线程每获取到锁,锁的计数器就会加1,等到计数器为0的时候,他就会释放。原创 2024-03-04 10:47:33 · 485 阅读 · 0 评论 -
Java并发编程基础
对于Java来说,咱运行一段Java程序就是一个段进程。在一段进程中,我们可以创建多个线程,每一个线程都有自己独立的属性和本地内存。对于操作系统来讲,进程是操作系统分配资源的基本单位,线程是操作系统调度资源的基本单位。ThreadLocal是一个线程变量,对于ThreadLocal填充的变量来说,它只属于当前线程,也就是说对于其他线程来说他是独立的,ThreadLocal给其他线程也创立了副本内存空间。原创 2024-03-03 15:27:23 · 702 阅读 · 0 评论 -
Java并发编程理论基础
Java的内存模型简称JMM,他可以让线程对共享变量的改变使另外的线程可见,它还可以表示线程与内存之间的抽象关系,线程之间的共享变量存储在主内存中,对其中一个线程更改共享变量时,对存储在本地内存中,但是本地内存时JMM的一个抽象概念,并不真实存在。原创 2024-03-03 11:03:56 · 477 阅读 · 0 评论 -
集合总体复习
LinkedHashMap是HashMap的子类,底层使用双向链表来维护元素的插入顺序,当他遍历的时候就为该顺序,此顺序可以为元素的插入顺序也能为最近最少使用顺序(LRU),put,get,remove都为使用顺序,这样的话就能实现淘汰机制与内存管理,释放那些不经常访问的元素。原创 2024-03-02 10:14:46 · 1488 阅读 · 0 评论 -
集合复习补充
LinkedHashMap是HashMap的子类,底层使用双向链表来维护元素的插入顺序,当他遍历的时候就为该顺序,此顺序可以为元素的插入顺序也能为最近最少使用顺序(LRU),put,get,remove都为使用顺序,这样的话就能实现淘汰机制与内存管理,释放那些不经常访问的元素。原创 2024-03-02 10:13:53 · 312 阅读 · 0 评论 -
Java集合复习
获取数据时,也就是get方法,用hash(k)获取到hash值,然后结合长度获得数组下标,然后利用数组下标,按顺序遍历,利用equals方法比较获取v值。原创 2024-03-01 20:00:21 · 407 阅读 · 1 评论 -
Java泛型
泛型字面意思就是广泛的类型第四条就是这样理解在我们之前 我们就已经讲过了,就是这里还有自定义泛型接口自定义泛型方法。原创 2023-11-07 16:02:40 · 26 阅读 · 0 评论 -
Java集合(重要一万六千字)
集合他和数组差不多,但是他比数组好用太多了,就比如说数组你只能制定长度,长度满了以后,你就不能再添加 了,或者说如果你再添加,你就只能再创建一个数组然后将数组复制过去(利用for循环)好处就是,可以动态变化,然后可以有特定的方法增删改查。比较方便1.list集合他的存入和取出的顺序其实是一致的,并且是可以重复的2.每个元素都有其对应的顺序索引,他是支持索引的3.list的实现子类其实有很多,我们之前只是展示了其中很少的一部分由此可见他是不包含5的也就是他是不包含toIndex完整代码在这。原创 2023-11-04 15:30:06 · 57 阅读 · 1 评论 -
Java常用类
然后就是第二中方式,new对象,我们之前讲过new创建对象的时候是在堆里面开辟一个空间,然后首先他会找value属性让他在常量池里面找有没有hsp的地址值,有的话拿过来,没有的话就创建,然后main就创建一个s2储存堆value的地址值。第二个我们刚刚讲过了,他是直接赋值,然后a在常量池里创建了地址值,然后b再赋值的时候,先再常量池里面找,常量池里面有他就不用再创建,所以就地址值相同。StringBuffer他和String一样,但是他的内容是可以增删的,他的长度是可变的,他是一个容器。原创 2023-11-04 15:27:22 · 27 阅读 · 1 评论 -
Java异常
System.out.println("我能编译出来");这样一段代码就可以将我们引入什么叫做异常,咱们看,代码出现异常ArithmeticException,然后后面的代码就没有编译出来,这就是异常在以后的实际开发中,开发一个软件可能会有成百上千的文件,但是因为这种微不足道的异常就让系统奔溃,是不是非常不现实,所以就出现了Java设计者的想法,异常捕获机制,try-catch我们来演示一下,还是那段代码,也就是选中代码块,然后按住快捷键Ctrl-alt-T 然后选中6try--catch。原创 2023-11-04 15:26:37 · 34 阅读 · 1 评论 -
String Class - StringBuffer 和 StringBuilder - Java
前言StringBuffer 、 StringBuilder、 String 是三种数据类型首先来回顾下String类的特点:任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和StringBuilder类。原创 2023-10-12 19:45:49 · 29 阅读 · 0 评论 -
String Class - 字符串类型 - 下半部分
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。原创 2023-10-12 07:00:00 · 106 阅读 · 0 评论 -
String Class - 字符串类型 - 上半部分讲解
在Java中,new String类型数据的时候,是不会存在内存重叠的情况,在Java中,字符串是一个对象,而我们new String 对象时,是产生一个新的对象,如果产生的对象是一样的,那还叫新对象?如果是引用类型变量之间的比较,且使用双等号来比较的话,比较的就是引用变量存储的地址。如果调用是引用类型的数据,就需要注意,调用者不能空引用/空指针。例题2: 将例题1中的 str,重新赋值会不会影响 str2的输出结果?数组的整体赋值 ,在Java中,只有一次机会,就是在定义数组的时候。原创 2023-10-11 09:25:51 · 65 阅读 · 0 评论 -
Java面向对象
构造器其实是一种特殊的方法,他有空参构造,和有参构造两种,下面写一段代码来看一下就可以啦这就是构造器也就做构造方法多态分为行为多态和对象多态,多态是继承,在实现下的一种情况比如说teacher和student都是people的子类也是说,当父类变量接受子类对象的时候,这就叫做对象多态,p1与p2都是people类型,但是p1与p2都是指的对象不同,这种现象叫做对象多态。都可以调用run方法,但是两个run方法的行为不一样,这种现象叫做,行为多态。原创 2023-10-30 13:46:51 · 50 阅读 · 1 评论 -
Java基础--万字细节
统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集编码方案等。统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。可以用idea编写一段程序来看一下;编写一段程序找出‘你’’我‘’他‘在Unicode中的位置char ni = '你';char wo = '我';char ta = '他';原创 2023-10-27 20:23:24 · 180 阅读 · 1 评论 -
初识 Java
之前已经学习了一段时间的Java,想到要创建一个笔记,来让我们回忆一下之前学习的内容提示:以下是本篇文章正文内容,下面案例可供参考我的意思并不是说 Java就是世界上最好的语言,只是说我更加偏爱Java,不然也不会学,对吧。每个语言都是它的特性,Python 处理数据,C 处理底层代码,Java 后台运行。public class/*类*/ HelloWorld/*类名*/{// 下面的就是 类的内容,别称 类体;类体又可分为 2 个内容: 字段 和 方法组成。注意!原创 2023-10-11 08:51:24 · 40 阅读 · 0 评论