Java知识
文章平均质量分 93
有关java的一切
程序员-杨胡广
作业难题、毕设辅导、就业简历优化加微:BitPlanet。喜欢读三十六计、孙子兵法、鬼谷子等谋略书籍,爱折腾。目前任职上海某厂高级Java开发,多年java开发经验,前后端全栈开发,精通各类业务的服务架构。目前正在研究Python AI模型,神经网络,感兴趣一起交流。
展开
-
四大集合之Queue-用不一样的姿势学习
JDK源码对Queue集合是这么解释的,大家看看。专为在处理之前保存元素而设计的集合。胡广是这么理解的,List集合用于存储常用元素、Map集合用于存储具有映射关系的元素、Set集合用于存储唯一性的元素。Queue集合呢?所有的数据结构都是为了解决业务问题而生,而Queue集合这种数据结构能够存储具有先后时间关系的元素,很适用于在业务高峰期,需要缓存当前任务的业务场景。像Kafka、RabbitMQ、RocketMQ都是队列任务这种思想。Queue集合底层接口提供的方法很简单,一共有 6 个。原创 2024-09-14 17:22:59 · 1119 阅读 · 95 评论 -
MyBatis面试题必问: Mybatis一、二级缓存及其优缺点
MyBatis 是一个持久层框架,它通过 XML 或注解的方式将 SQL 语句与 Java 对象进行映射。与 Hibernate 不同,MyBatis 不完全采用 ORM(对象关系映射)思想,而是更加灵活地直接编写 SQL。MyBatis 适合处理复杂 SQL 场景,而 Hibernate 更适合简单的 CRUD 操作和全自动的对象映射。原创 2024-09-04 00:15:52 · 735 阅读 · 8 评论 -
使用AI写WebSocket知识是一种怎么样的体验?
包懵逼的,这些对于没学过的人毫无意义,不用记啦,当做笑话随便看看,老老实实去学websocket基础知识吧,学完再去动手做比啥都强。原创 2024-09-04 00:14:57 · 2579 阅读 · 9 评论 -
面试必备:熟悉Spring MVC工作流程,掌握Spring MVC常见注解
这篇文章深入探讨了 Spring MVC 的工作流程及其常见注解的使用。首先,它介绍了 Spring MVC 的核心组件和请求处理流程,包括 DispatcherServlet、Controller、ModelAndView 等关键概念。接着,文章详细解析了常用注解,如 @RequestMapping、@RestController、@RequestBody、@ModelAttribute 等,解释了它们的用途和实际应用场景。此外,文章还涵盖了异常处理、文件上传、国际化支持、跨域请求处理等高级主题,帮助开发原创 2024-09-03 08:27:20 · 930 阅读 · 7 评论 -
Spring面试必备:Spring IOC和AOP的理解、如何解决Spring循环依赖
IOC(Inversion of Control)是 Spring 框架的核心概念,指的是将对象的创建和管理交给 Spring 容器,而不是在应用程序中显式地进行控制。通过 IOC,依赖对象可以通过依赖注入(Dependency Injection, DI)进行传递,简化了对象的创建过程,降低了耦合度。原创 2024-09-03 08:26:07 · 1129 阅读 · 5 评论 -
Java并发编程面试必备:如何创建线程池、线程池拒绝策略
本文介绍了Java中的线程池及其在高并发编程中的应用,重点解析了ThreadPoolExecutor的核心参数配置、线程池类型选择及适用场景。文章探讨了常见的线程池拒绝策略,包括AbortPolicy和CallerRunsPolicy,并分析了它们在应对系统过载时的效果。此外,文章提供了20个常见面试问题及其详尽解答,涵盖了线程池的工作机制、任务队列、线程复用、异常处理与监控等关键知识点,为面试者提供了全面的复习指导,以帮助其在并发编程面试中表现出色。原创 2024-09-01 13:20:17 · 1663 阅读 · 5 评论 -
数据类型和程序运算
这种情况是一个特殊情况,Java编译器会为其进行特殊处理,我们称它为编译时常量表达式的求值。b1、b2、b3都是常量值,b3在编译阶段就会被编译器进行赋值,不会涉及到上面我们提到的数学计算提升为int类型,也就不会编译错误。(2)但假如byte变量是这样的写法,我们给b1和b2都加个final,很神奇,编译不会报错。,当我们对127的值增加1时,每位加1后都会产生进位,导致的结果就是所有的位都会翻转(从。,所以它在内存里创建了一个新的String对象,并不存在于常量池,而是存在于堆内存里。原创 2024-09-01 13:19:51 · 779 阅读 · 8 评论 -
接口和多态详解,还不快点学?
Java 接口是一种特殊的引用数据类型,用于定义类必须实现的一组方法。接口只能包含方法的声明,而不能包含方法的实现。接口的主要用途是提供一种机制,使得不同的类可以以一致的方式进行交互。接口支持多继承,可以让类实现多个接口,提供了灵活的设计方式。原创 2024-08-31 17:07:07 · 1147 阅读 · 4 评论 -
四大集合之Set
TreeSet的自定义排序我们要利用Comparator接口,通过向TreeSet传入自定义排序规则的Comparator来实现。官方源码是这么解释的,南友们看一看。// 构造一个新的空树集,根据指定的比较器进行排序。// 插入到集合中的所有元素都必须能够通过指定的比较器相互比较: comparator. compare(e1, e2)不得对集合中的任何元素e1和e2抛出ClassCastException。原创 2024-08-31 16:18:03 · 1246 阅读 · 3 评论 -
面试官没想到一个ArrayList,我都能跟他扯半小时?
作为四大集合之一的List,在业务开发中我们比较常见的是以下 3 种:ArrayList、Vector、LinkedList,业务开发我们接触最多就是容器类库了,容器类库可以说是面向对象语言最重要的类库。大家看看在工作里你比较熟悉的是哪个?这篇文章胡广打算专注于List集合,后面四大集合之Map、Queue、Set后续再来填坑,比心心♥。原创 2024-08-30 00:06:52 · 1330 阅读 · 8 评论 -
四大集合之HashMap详解
此时如果有两个线程同时进入if语句,线程A把数据插入到表头,接着线程B把他的数据覆盖到表头,这样就产生了数据覆盖的问题,线程A的数据相当于消失了。更小,且JDK8版本的链表还可以升级为查询效率高的红黑树,所以JDK7版本的ConcurrentHashMap目前被JDK8版本的代替了。Node节点的内部属性key、value分别代表键和值,hash代表key的hash值,而next则是指向下一个链表节点的指针。但实际上期望的size应该是2,此时就出现了数据不一致的问题,Entry数组的容量会出现错误。原创 2024-08-30 00:06:30 · 838 阅读 · 2 评论 -
volatile与指令重排是什么?
对于A、B,它们之间并没有依赖关系,谁先执行对程序的结果没有任何影响。但C却依赖于A、B,不能出现类似C -> A -> B或C -> B -> A或A -> C -> B或B -> C -> A之类的指令重排,否则程序执行结果将改变。内存一共分为两种,线程的本地内存和线程外的主内存。其中的A、B之间没有数据依赖关系,可能出现B -> A的指令重排序,大家注意这个指令重排序会影响到线程2执行的结果。从而执行对i的赋值。另外volatile具有可见性,falg的修改对线程2来说是可见的,线程会立刻感知到。原创 2024-08-30 00:05:53 · 796 阅读 · 3 评论 -
synchronized 实现原理
线程A获取了某个对象锁,但在线程代码的流程中仍需再次获取该对象锁,此时线程A可以继续执行不需要重新再获取该对象锁。既然获取锁的粒度是线程,意味着线程自己是可以获取自己的内部锁的,而如果获取锁的粒度是调用则每次经过同步代码块都需要重新获取锁。此时synchronized重量级锁就回归到了悲观锁的状态,其他获取不到锁的都会进入阻塞状态。来获得锁,CAS操作不需要获得锁、释放锁,减少了像synchronized重量级锁带来的。轻量级锁通过CAS自旋来获得锁,如果自旋10次失败,为了减少CPU的消耗则锁会膨胀为。原创 2024-08-29 00:14:50 · 366 阅读 · 7 评论