
java基础
菜汪在路上
这个作者很懒,什么都没留下…
展开
-
加强fou循环的坑
这里就会出现一个问题,迭代器在取出值时,就回去检测这个乐观锁,就是操作次数,也可以叫它版本号,这里眼尖的同学就发现了,一旦执行了删除list某个元素方法,就会版本号+1.今天遇到了一个有趣的事情,使用加强fou循环操作list时,会报错并发操作异常。但是迭代器记录的版本号任然是初始的,所以就报错啦。原创 2024-04-16 21:00:00 · 178 阅读 · 0 评论 -
spring加载类初始化顺序
今天看spring官网的时候,提到了Ordered执行顺序。我当时记得@PostConstruct注解会在bean加载后执行,现在又来了一个执行顺序,直接给我整蒙了。说完加载问题,我们来看看 Ordered执行顺序问题,这三哥类中都实现了CommandLineRunner接口的run方法,也就是说加载完毕后,回去执行run方法。后来我改了t1ServerImpl为t4ServerImp,结果它是最后加载。加载很有意思,应该是我这个没有依赖别的bean,所以就按照顺序加载了。我在t2中依赖t4。原创 2024-04-08 14:03:51 · 468 阅读 · 0 评论 -
ThreadPoolExecutor异常捕获
也就是说, FutureTask并没有抛出异常,而是将异常信息保存起来了,需要用get方法取出转态。submit方法将任务构建为一个FutureTask去执行,这个类执行完毕任务后,会有一个返回值。ThreadPoolExecutor.submit方法。不会抛出异常,我就很疑惑。今天在复习线程池时,发现使用。重写线程工厂的异常处理方法。原创 2024-03-30 15:55:37 · 428 阅读 · 0 评论 -
Optional对象盒子的使用
优雅的判断对象是否为空,直接使用xx==null虽然很明显,感觉还是太冗杂了。原创 2023-11-26 09:31:23 · 427 阅读 · 0 评论 -
Java的泛型高级篇
也许你会觉得多此一举,因为这样就是在约束使用者,例如A接口有get方法,我在框架中只需要调用即可,只要是使用我的方法,一定会实现A接口,就必定有get方法。因为supert1是父类的父类,所以super标识是可以怎么做的。以前在看源码的时候,老是能够看见大写的字母:T D......他就是用来标志泛型的。就拿ArrarList。定义一个顶级父类:TimeTest。E就是 :element的简写。再加一个supert1。原创 2023-10-24 10:02:59 · 171 阅读 · 0 评论 -
Map复习(JDK1.8)
HashMap是键值对结构,通过key查找value,key的值会进行hashCode得到一个hash值,,再根据hashMap的数组大小取余。所以麻烦就来了,在有限的范围里放75%的东西,极有可能放在同一个位置,产生了哈希冲突。hashMap数组的默认大小是16格,当数据数量达到75%时(arr.leng()*0.75)就会触发扩容,将数组翻倍,变成32个,任然75%时继续扩容。Hashtable是安全的,但是速度比较慢,只要是安全的就是一性能为代价换来的,加锁开锁需要时间,加锁是只能一个线程访问.原创 2023-06-04 16:24:02 · 602 阅读 · 0 评论 -
ArrayList和LinkedList的复习
时占优势,所以用ArrayList还是要多很多哦~因为大多数删除都是尾部,大多数增加都是尾部。二LinkedList仅仅只有在。综合下来ArrayList在。原创 2023-06-02 19:04:54 · 580 阅读 · 0 评论 -
io流笔记
NIO :异步非阻塞、一个有效请求一个线程,用于连接多,时间长的请求,例如图片服务器。AIO:同步阻塞、非阻塞,一个请求一个线程、主要用于连接多,时间短的使用与聊天项目。BIO:同步阻塞,一个连接一个线程、普通模式。按照传输方式分为字节流、字符流。原创 2023-06-02 15:29:39 · 95 阅读 · 0 评论 -
字符串专栏复习
如果我们都使用new String来创建字符串,每次都会在堆里面创建对象,造成很大的资源浪费,所以我们直接用="",只要常量池里面有,所有的引用都是一样的。new String("1")是通过new对象引用,先去常量池寻找有“1”,有就在堆中创建字符串对象,引用的常量池的“1”,然后栈引用堆的对象。这里我们就直接说结果,a="1"是直接去常量池里面找,有就栈引用,没有创建再引用。String有一个本地方法,可以直接调用线程池里的字符串,这里有一个知识点,直接引用常量池和创建堆引用常量池。原创 2023-06-02 15:23:07 · 75 阅读 · 0 评论 -
二叉树的广度遍历(层次遍历)
技术点就是本层遍历完毕后,队列中就已经有了下一次要遍历的数据。操作节点是加入节点的左右节点,方便下一次的遍历。所以再次遍历时,我们需要记住本层要遍历的个数。原创 2022-10-07 17:22:23 · 219 阅读 · 0 评论 -
分别将Map以Key或Vale进行排序
这玩意很神奇,在加入的时候就按照比较器进行维护key的有序,它的底层呢,是一个二叉树,反正很牛逼,我看了半天,只看了个大概。于是我就开始了为期五个小时的辛苦钻研、上网查找资料,看见了这哥们写的博客,恍然大悟!在Java中,有一个Map的子类可以做到对key进行排序,那就是。这里我就不发结果了,就是按照降序排列的,这里我自定义排序规则。之所以能够排序,是因为Map.entry的方法定义了存入规则,心想:卧槽,居然有排序value的方法?但是要想排序Value该怎么办呢?原创 2022-09-28 15:06:04 · 935 阅读 · 1 评论 -
关于关于栈、堆、方法区的所吾
二:当String str2 =new String("123")时,也会去常量池查找是否有"123",唯一不同的是它会再堆中创建一个对象,存放常量池"123"的引用,然后栈再引用堆中的String对象!今日在逛csdn时,发现一个问题,String str1="123"和String str2=呢哇String("123")的区别;一:当String str1="123"时,回去常量池中查找,是否有"123",有则栈调用,无则创建栈再调用。方法区:存放类加载的数据,静态修饰的都在这里。原创 2022-09-23 21:38:15 · 124 阅读 · 0 评论 -
重写与重载and抽象类与接口!!!!
1.接口中可以使用静态方法,与抽象类不同的时,本方法无法直接调用,需要使用接口进行调用。以上便是我对他俩的理解,也许不够深,但是一步一步加强,下面是我对。不能使用,抽象类都没被继承实现,如何加载到内存中使用?今天我的老师突然为了我一句重写与重载的区别与定义?不可使用,它是私有的,违背的抽象类的定义。我认为,接口的出现就是为了实现java的。小明父亲有一个使用亿万资产的方法。4.接口不能实例化,只能实现。就是一个完完全全的抽象类。抽象类与接口的却别与定义?不能使用,它是不可改变。小明的父亲是亿万富翁。原创 2022-09-05 20:30:13 · 381 阅读 · 0 评论 -
接口的知识补充
实现接口的方法,相当于重写方法,方法的重写需要满足:三同一大一小(方法名、返回值类型、参数列表相同;3.接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。1.接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为。2.接口中可以含有变量,但是接口中的变量会被隐式的指定为。接口的方法及变量的默认修饰符。接口中的方法都是公有的。原创 2022-08-23 16:12:23 · 202 阅读 · 0 评论 -
迭代器的使用
写这篇文章也是巧合,在暑假的时候和群友聊天的时候无意间聊到了迭代器、。我都学java一年了,居然对它还是如此的陌生。于是我又巩固了一遍。迭代器的产生就是为了遍历集合的。原创 2022-08-23 08:01:13 · 165 阅读 · 0 评论