java
BigOrangeSama
这个作者很懒,什么都没留下…
展开
-
java八股 多线程
一个key要往分段加数据会加可重入锁,如果高并发情况锁获取重了,会有一个CAS自旋二次保证。然后获取锁的进去添加。volatie关键字定义线程共享变量,然后用这个变量作为线程运行条件。屏障放在写的上面,读的下面。所以不能随便加,要根据读写操作的位置加,连续一个线程获取锁-->偏向锁(一次CAS,后续对比线程id)Owner和锁对象如何关联?不竞争的轮流获取锁-->轻量级锁(每次CAS)用数据当成版本号,比对,如果不对就不能写入。缺点,锁住性能低,分段不能扩容。没人用线程时-->无锁。CAS比较并交换id。原创 2023-12-28 04:26:44 · 1067 阅读 · 0 评论 -
java八股 集合
jdk1.8 链表的长度大于8且数组长度大于64,链表转换为红黑树。resize到临界值6会退化。红黑树会自平衡,所以是二叉排序树BST的plus自平衡版。1.7之前头插法,扩容运行完之后倒置了。原创 2023-12-27 03:35:32 · 390 阅读 · 0 评论 -
java八股 spring + mybatis
如果一个spring事务里两组数据库操作中间有一个异常操作,没有被try catch的话。如果把异常try catch处理了,容易导致事务失效,前一段数据库操作做了,异常后面一段没做,直接跳到catch里了。我项目中类内方法调用事务方法导致事务失效,因为this不被spring管理,要获取上下文代理对象去调用,就能执行事务。项目里可以说记录用户登录日志,利用request去获取姓名、ip、、请求方式、url,时间。把二级缓存半成品A当成对象注入半成品B中,可以先完成一个单例B,这时候A也能完成了。原创 2023-12-25 03:58:37 · 635 阅读 · 1 评论 -
java八股 mysql优化
这个trx_id是上面的db_trx_id,代表上一次插入或者修改记录的事务号。undo log是逻辑日志,记录和操作相反的语句,用来撤销。如果这个号不在活跃集合里,代表该事务修改完成提交已经结束。节点可以自动平衡保证log2 n的查找复杂度.redo log是物理日志,记录的是正向的操作。但因为是二叉树,数据多了层数还会多。问题还有一个丢失更新。原创 2023-12-24 21:24:07 · 998 阅读 · 0 评论 -
java八股 redis
多路复用IO会用一个select去轮询监听一个socket集合,一个socket能代表一个需要拷贝的数据,在第一阶段谁先就绪就谁来,可以看成并行,先来先服务,第二阶段循环调用recvfrom去处理各个socket。但哨兵选出了新的主节点,老主节点降成从节点并被主从复制,那么这段时间的操作会丢失。redis速度主要受网络IO影响,所以易受影响的部分加了多线程升级,但是最终命令执行还是串行的。主节点加锁宕机,从节点变主节点但是锁没来得及更新过来,那么其他线程可以获取锁。aof只记录写命令,不记录读命令。原创 2023-12-24 01:47:40 · 703 阅读 · 0 评论 -
java八股 设计模式
相对于简单模式的一个工厂生产所有咖啡,这里只定义了一个抽象咖啡工厂,然后针对每一种咖啡实现自己的工厂,那么以后添加新咖啡的时候就不会修改以前的咖啡工厂类了,只需要自己新建一个工厂。新加咖啡类的时候需要在唯一的那个工厂类里加代码,这样就耦合了。工厂模式只能应付同一类产品,如果要工厂多类产品,就要抽象工厂。做到对拓展开放,对修改关闭。原创 2023-12-22 23:50:53 · 495 阅读 · 0 评论 -
java八股jvm
从下往上找,有同名类优先使用上级加载器的,不用自己的,父加载器没有就加载自己的。年轻代会使用复制算法,清理效率高。原创 2023-12-22 22:44:50 · 772 阅读 · 0 评论 -
一些java问题集合
用target去调方法,有传入对象就把传入对象变成target,否则自己就是target。一个框架自己的一个别人的标准,一个byTye一个byName。原创 2023-12-15 15:57:33 · 381 阅读 · 0 评论 -
java学习part42反射
187-反射机制-反射的理解与使用举例_哔哩哔哩_bilibili原创 2023-12-11 16:07:53 · 385 阅读 · 0 评论 -
lambda表达式学习
lambda表达式就是对匿名方法的进一步简化。原创 2023-12-10 01:09:43 · 379 阅读 · 0 评论 -
java学习part41泛型
泛型类不能是基本类型。原创 2023-12-09 23:59:06 · 354 阅读 · 0 评论 -
java学习part39map
个人理解是c++的pair,代表一个键值对。Map就是entry的叠加。原创 2023-12-07 02:15:29 · 770 阅读 · 0 评论 -
java学习part38一些常用类和api
151-常用类与基础API-其它常用类的使用:BigInteger、BigDecimal、Random等_哔哩哔哩_bilibili原创 2023-12-07 00:20:09 · 373 阅读 · 0 评论 -
java学习part37定制排序和自然排序
对于一些排序方法,允许传入的话按定制的排序规则来,不传入默认按自然排序来。原创 2023-12-05 17:17:47 · 376 阅读 · 0 评论 -
java学习part36set
必须重写hash方法,否则调用object的方法随机算了一个hash值,即便内容相同算出来的值也不一样,因为和你的内容无关,是随机算的。而重写的方法要根据你所有的内容算一个独特hash值。如果hash一样且equals也是true就是重复 ,调equals是为了保险,保证排除hash碰撞的可能。加入集合的时候会先调用重写的hash方法计算hash值,不一样就加入。原创 2023-12-05 15:08:55 · 358 阅读 · 0 评论 -
java学习part35List
155-集合框架-List接口常用方法的测试_哔哩哔哩_bilibili原创 2023-12-05 14:03:39 · 362 阅读 · 0 评论 -
java学习part34collect
add只能加object,如果有基本类型会装箱。类似c++的for( auto x:v)原创 2023-12-05 00:25:48 · 379 阅读 · 0 评论 -
java学习part33Date
两个构造器两个方法。原创 2023-12-03 21:45:44 · 411 阅读 · 0 评论 -
java学习part32StringBuffer和StringBuilder
不够用:长度为 原长度*2+2;如果还不够,那么就扩容到目标需要的长度。原创 2023-12-03 20:28:21 · 397 阅读 · 0 评论 -
java学习part31String
编码和解码要一致,默认utf-8。原创 2023-12-03 17:46:29 · 348 阅读 · 0 评论 -
java学习part30callabel和线程池方式
140-多线程-线程的创建方式3、4:实现Callable与线程池_哔哩哔哩_bilibili实现类使用方式 返回值原创 2023-12-02 20:49:01 · 412 阅读 · 0 评论 -
java学习part29线程通信
类似于golang的channel,类似于go的wait(),原创 2023-12-02 20:14:15 · 452 阅读 · 0 评论 -
java学习part28线程安全Lock锁方式
和以前的加锁一样,同步代码前加锁,代码后解锁,就表示锁住了这一块代码。lock是上面声明的静态常量。原创 2023-12-02 18:55:22 · 391 阅读 · 0 评论 -
java学习part27线程死锁
138-多线程-线程安全的懒汉式_死锁_ReentrantLock的使用_哔哩哔哩_bilibili原创 2023-12-02 17:32:19 · 393 阅读 · 0 评论 -
java学习part26线程安全
136-多线程-同步代码块解决两种线程创建方式的线程安全问题_哔哩哔哩_bilibili原创 2023-12-02 16:37:13 · 369 阅读 · 0 评论 -
java学习part08权限
外部类都是公有和缺省,因为其他两种对于外部类没有意义一些内部成分都各种权限都可以。原创 2023-11-23 17:06:14 · 362 阅读 · 0 评论 -
java学习part25多线程
tips:不能直接调用run(),必须start(),直接调run()是单线程,start()里实现了多线程。相当于golang里先写一个线程函数run(),子类对象调用start()相当于go关键字。只有线程间能通信,进程之间不共享内容。相当于go run()对于指定线程名的线程。原创 2023-11-30 15:02:35 · 435 阅读 · 0 评论 -
java学习part24异常throws
127-异常处理-异常处理方式二:throws_哔哩哔哩_bilibili抛出一些java语法上没错但是不符合实际情况的异常。用throw手动抛,方法上必须加throws。除非是运行时异常。原创 2023-11-29 18:15:54 · 399 阅读 · 0 评论 -
java学习part23异常try catch
类似golang的defer。原创 2023-11-29 13:06:03 · 567 阅读 · 0 评论 -
java学习part22包装类
通过初始值的不一样,可以分辨某些对象是否初始化过还是归零了。Boolean默认null(对象)比如boolean默认false。原创 2023-11-29 10:40:20 · 297 阅读 · 0 评论 -
java学习part21枚举
枚举早期是用class内放n个public static final类变量供调用。后来有了enum关键字,enum里的。原创 2023-11-28 20:15:52 · 422 阅读 · 0 评论 -
java学习part20内部类
116-面向对象(高级)-类的成员之五:内部类_哔哩哔哩_bilibili原创 2023-11-28 19:29:43 · 368 阅读 · 0 评论 -
java学习part19接口
打印机类实现usb接口,然后把打印机类赋给usb接口引用,调用方法有多态。原创 2023-11-28 14:31:56 · 383 阅读 · 0 评论 -
java学习part18抽象类
抽象方法所处的类必须是抽象类,抽象类可以没有抽象方法。原创 2023-11-28 12:55:51 · 406 阅读 · 0 评论 -
java学习part17final
tips:java里有const关键字,但是用于保留字,不会使用,目前没有意义。,只能在以下三个地方赋值,且只能赋值一次。原创 2023-11-27 17:23:22 · 381 阅读 · 0 评论 -
java学习part16代码块
一般静态代码块用来初始化类的静态信息,因为构造器一般不适合操作静态属性。代码块只能static修饰,不存在权限修饰。原创 2023-11-27 16:21:37 · 420 阅读 · 0 评论 -
java学习part15单例模式
(理解:比如说是数据库对象,使用时创建一个可以处理所有的数据库操作,用完销毁。就是说在某些开发场景中,某个类只要有一个对象就足够使用了,不需要重复创建。原创 2023-11-27 15:38:52 · 920 阅读 · 0 评论 -
java学习part14static
105-面向对象(高级)-关键字static修饰属性、方法_哔哩哔哩_bilibili原创 2023-11-27 10:36:19 · 344 阅读 · 0 评论 -
java学习part13Object类和常用方法
clone()就是深拷贝,创建一个同内容新对象。需要实现接口。原创 2023-11-26 19:12:31 · 379 阅读 · 0 评论 -
java学习part12多态
如果实际类型不一致(woman不能转man),编译没问题,但是运行出错。满足就近原则,父类引用调用一个父类子类的同名属性,默认。父类引用不能直接使用子类特有的内容,所以需要向下转型‘不能直接调用子类里的方法和属性,编译通不过。调用重写的方法,就会执行子类重写的方法。编译看引用表面类型,执行看实际变量类型。因为引用是父类的,调用的就是父类的属性。父类引用指向子类对象。原创 2023-11-26 15:54:09 · 705 阅读 · 1 评论