- 博客(302)
- 资源 (11)
- 收藏
- 关注
原创 java: You aren‘t using a compiler supported by lombok, so lombok will not work and has been disabled
在Compiler中增加如下参数配置即可。如此,问题就得以解决了。
2024-05-13 15:40:23
126
原创 LinkedList底层代码解析
因为在双向链表中,每个节点都包含了对前一个节点和后一个节点的引用,通过修改节点间的引用关系,可以方便地插入和删除节点,而不需要进行数组元素的移动和容量的调整。需要注意的是,由于LinkedList是基于链表结构的,查找操作的时间复杂度通常是O(n),其中n是链表的长度。LinkedList通过这样的节点结构,实现了双向链表的功能,支持在头部、尾部和任意位置插入和删除节点,为LinkedList提供了灵活的元素操作能力。遍历链表,根据所选择的查找方向,依次访问节点的后继节点或前驱节点,直到找到目标节点。
2023-07-27 11:21:22
356
原创 ArrayList是如何动态扩容的
需要注意的是,由于数组的扩容涉及到数据的复制,因此在频繁进行元素添加或删除操作时,可能会带来一定的性能开销。扩容机制:ArrayList的扩容机制是通过创建一个新的数组,并将原数组中的所有元素复制到新数组中实现的。数组复制:在进行扩容时,ArrayList内部会调用System.arraycopy()方法来将原数组中的元素复制到新数组中。具体来说,在Java的ArrayList中,默认的加载因子是0.75。更新引用:扩容后,ArrayList会将新数组的引用指向内部的数组对象,旧的数组会被垃圾回收。
2023-07-27 11:00:34
932
原创 ArrayList的扩容机制grow()方法讲解
计算新容量:通过将旧容量右移一位(相当于除以2),然后与旧容量相加,得到新的容量大小。更新引用:将ArrayList的内部数组引用指向新数组,旧的数组会被垃圾回收。需要注意的是,扩容机制中的容量增长策略可以根据具体实现和数组的大小而有所不同。方法,根据新容量创建一个新的数组,并将原数组中的所有元素复制到新数组中。方法的作用是根据需要扩展ArrayList的容量。检查新容量:如果新容量仍然不够需求,则使用需求的大小作为新容量。此外,如果在不断增加元素的过程中,已知要存储的元素数量,可以使用。
2023-07-27 10:48:58
444
原创 System.arraycopy()方法使用案例
System.arraycopy()方法来将原数组中的元素复制到新数组中,这是一个底层的高性能数组复制方法。
2023-07-27 10:39:43
218
原创 一些关于设计原理和设计模式的问题
2.能否举一个您在项目中应用开放封闭原则(OCP)的例子,并解释一下为什么该原则对于软件扩展很重要?5.观察者模式是一种常见的设计模式,请解释一下观察者模式的概念以及在实际开发中的应用场景。4.设计模式中的单例模式是什么?你可以解释一下它的作用和在Java中如何实现吗?3.依赖倒置原则(DIP)是什么?你可以给一个您在项目中实践该原则的例子吗?1.请解释一下单一职责原则(SRP)是什么,为什么它在软件设计中很重要?
2023-07-26 15:34:17
397
原创 面试比较优质的答案
回答2:在实际项目中,我常使用Spring Boot来快速构建独立的、可自包含的Spring应用程序。控制反转通过依赖注入的方式将JavaBean注入到Spring容器中,使得对象的创建和管理交由容器负责,降低了组件间的耦合度。回答4:Spring AOP(面向切面编程)是Spring框架的一个重要特性,它通过动态代理机制实现在方法执行前、中、后注入额外的行为,而不需要修改原有的业务逻辑。能分享一些实际经验吗?监控系统的性能指标,时刻保持对系统的监控,并对疑似瓶颈进行及时的调优和优化。
2023-07-11 15:02:52
100
原创 面试专题:spring
Ioc即控制反转,把原来的代码里需要实现的对象创建,依赖反转给容器来帮忙实现,需要创建一个容器并且需要一种描述让容器知道要创建的对象间的关系,在Spring中管理对象及其依赖关系是通过Spring IOC容器实现的。TransactionDefinition.PROPAGATION_NESTED: 如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;TransactionDefinition.PROPAGATION_REQUIRES_NEW: 创建一个新的事务,如果当前存在事务,则把当前事务挂起。
2023-06-19 16:45:35
873
原创 面试专题:Redis
解决办法: 有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。
2023-06-16 19:32:47
1010
原创 面试专题:Mysql
例2(同样的条件, 第1次和第2次读出来的记录数不一样 ):假某工资单表中工资大于3000的有4人,事务1读取了所有工资大于3000的人,共查到4条记录,这时事务2 又插入了一条工资大于3000的记录,事务1再次读取时查到的记录就变为了5条,这样就导致了幻读。例1(同样的条件, 你读取过的数据, 再次读取出来发现值不一样了 ):事务1中的A先生读取自己的工资为 1000的操作还没完成,事务2中的B先生就修改了A的工资为2000,导 致A再读自己的工资时工资变为 2000;
2023-06-12 17:59:56
1157
原创 面试专题:计算机网络常见面试点总结
由于 TCP 要提供可靠的,面向连接的运输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资。举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。在传输层中有TCP协议与UDP协议。
2023-06-09 14:55:51
989
原创 面试专题:设计模式
里氏代换原则是对开闭原则的补充。工厂类负责判断、控制哪个子类被执行,而工厂类调用子类完成后,返回的结果是该子类的父类,该父类中的变量已经被操作过了,访问该父类,得到我们想要的结果。面试时常见的就是的就是让你手写一个单例模式(注意单例模式的几种不同的实现方法)或者让你说一下某个常见的设计模式在你的项目中是如何使用的,另外面试官还有可能问你抽象工厂和工厂方法模式的区别、工厂模式的思想这样的问题。工厂方法模式可以在不修改工厂角色的情况下引进新产品,该模式中,工厂类与产品类是一一对应,并且是平行等级的结构。
2023-06-07 17:59:33
690
原创 面试专题:java虚拟机(3)---JVM 调优
但是遇见大一点的程序就容易死机,因为本身就是用 java写的,所以有占据本机的JVM内存,所以一般是远程检测,故对于大程序一般不推荐直接使用,而推荐使用jmap+mat。在设计(或使用)GC 算法时,我们必须确定我们的目标:一个 GC 算法只可能针对两个目标之一(即只专注于最大吞吐量或最小暂停时间),或尝试找到一个二者的折衷。JVM 的 GC指标一般是从 GC 日志里面查看,默认的 GC 日志可能比较少,我们可以添加以下参数,来丰富我们的GC日志输出,方便我们定位问题。典型的有:死循环、使用无界队列。
2023-06-06 16:53:02
897
原创 面试专题:java虚拟机(2)
在HotSpot VM里实现的string pool功能的是一个StringTable类,它是一个哈希表,里面存的是驻留字符串(也就是我们常说的用双引号括起来的)的引用(而不是驻留字符串实例本身),也就是说在堆中的某些字符串实例被这个StringTable引用之后就等同被赋予了”驻留字符串”的身份。常量池的每一项常量都是一个表,一共有如下表所示的11种各不相同的表结构数据,这每个表开始的第一位都是一个字节的标志位(取值1-12),代表当前这个常量属于哪种常量类型。G1收集器收集范围是老年代和新生代。
2023-06-05 15:48:05
446
原创 面试专题:JAVA虚拟机(1)
这一阶段的目的是确保class文件的字节流中包含的信息符合当前虚拟机的要求,并不会危害虚拟机自身的安全(虽然编译器会严格的检查java代码并生成class文件,但是class文件不一定都是通过编译器编译,然后加载进来的,因为虚拟机获取class文件字节流的方式有可能是从网络上来的,者难免不会存在有人恶意修改而造成系统崩溃的问题,class文件其实也可以手写16进制,因此这是必要的)生命周期和线程的生命周期是一致的。方法正常退出时,调用者的pc计数器的值作为返回地址,即调用该方法的指令的下一条指令的地址。
2023-06-02 18:09:28
735
原创 面试专题:java多线程(3)---关于 Atomic 原子类
UnSafe 类的 objectFieldOffset() 方法是一个本地方法,这个方法是用来拿到“原来的值”的内存地址,返回值是 valueOffset。AtomicReference: 引 用 类 型 原 子 类 AtomicStampedRerence:原子更新引用类型里的字段原子类AtomicMarkableReference :原子更新带有标记位的引用类型。该类将整数值与引用关联起来,可用于解决原子的更新数据和数据的版本号,可以解决使用 CAS 进行原子更新时可能出现的 ABA 问题。
2023-06-01 10:05:27
557
原创 面试专题:java多线程(2)-- 线程池
线程池会返回一个future类型的对象,通过这个future对象可以判断任务是否执行成功,并且可以通过future的get()方法来获取返回值,get()方法会阻塞当前线程直到任务完成,而使用get(long timeout,TimeUnit unit) 方法则会阻塞当前线程一段时间后立即返回,这时候有可能任务没有执行完。当有一个新的任务提交时,线程池中若有空闲线程,则立即执行。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性, 使用线程池可以进行统一的分配,调优和监控。
2023-05-31 17:17:01
645
原创 面试专题:java 多线程(1)----synchronized关键字相关问答
所以如果一个线程A调用一个实 例对象的非静态 synchronized 方法,而线程B需要调用这个实例对象所属类的静态 synchronized 方法,是允许的,不会发生互斥现象,因为访问静态 synchronized 方法占用的锁是当前类的锁,而访问非静态synchronized 方法占用的锁是当前实例对象锁。比如一个线程获得了某个对象的锁,此时 这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死 锁。5.线程池解决什么问题的;
2023-05-30 17:32:12
812
原创 使用idea 创建一个java web 项目
2.项目结构直接file-->project-structure--->将外部的三个类common-codes-1._3.jar,servlet.jar,oracle14 引入 在project-setting--->libraries --》点击+ 选择jar包逐个加进去。查看当前项目的字符集:file-setting--->editor-->file encodings 可以查看到。3.找到facets新建一个web---最终会得到一个web服务工程。点击tomcat 启动就可以。
2023-03-31 15:32:31
133
原创 报错 unable to find valid certification path to requested target executing
这个问题的根本原因是你安装JDK时,Java\jar 1.8.0_141\lib\ext\里面缺少了一个安全凭证jssecacerts证书文件,通过运行下面类可以生成证书,将生成的证书放在Java\jar 1.8.0_141\lib\ext\这个目录下,重启编译器就可以解决。\src\main\java\com\ideal\sk>java InstallCert 需要访问的地址:端口。第一种:解决方式是在发送http请求的时候,可以过滤掉所有的https证书验证。执行完后会出现这样的界面。
2023-03-17 17:22:20
4840
原创 redis如何持久化数据的
在Spring Redis框架中,只要正确配置RedisTemplate对象,就可以使用其提供的set方法来向Redis服务器写入数据,Spring Redis框架并不参与Redis的持久化操作。AOF持久化方式:在Redis的配置文件redis.conf中,配置appendonly参数来开启AOF持久化方式,并指定aof文件的存储路径。RDB持久化方式:在Redis的配置文件redis.conf中,配置save参数来指定Redis数据写入磁盘的条件和频率。
2023-03-16 15:01:28
820
原创 一段比较浅显易懂的java识别pdf 文字及图片
图片有些问题 如果图片在保存的时候修改了他的原本后缀则识别会提示与原先图片类型不符(比如原先的图片是png后缀改成jpg就识别不了);另识别出来的文字会有乱码和多余的一些符号。使用pdfbox及orc进行pdf文件的文字及图片的识别。运行可以得到pdf 的相关文字图片信息。
2023-02-14 14:21:18
2979
原创 world 如何输入英文时取消首字母大写
1.打开Word文档,找到文档左上方的“文件”选项,点击“文件”选项;3.“找到自动更正”,并取消“首字符大写”的选项就可以了。2.点击“选项”,找到校对/编辑;
2023-01-06 10:46:24
868
原创 win10 录屏快捷键
在广播中显示摄像头 win+alt+w。麦克风打开/关闭 win+alt+m。开始/暂停广播 win+alt+b。开始停止录屏 win+alt+r。录制win+alt+g。
2022-12-15 10:44:57
745
原创 IDEA 快捷生成 Serializable 序列化 UID的方法
打开IDEA的Settings---》editor-->inspections--->搜索。接口,鼠标放到类名上可以看到以下信息,点击即可。类实现Serializable。---》选中打对钩后点击ok。
2022-11-22 10:45:58
547
原创 非空校验的几种方式
Assert.hasText(String text, "text must not be empty") - text 不为null且必须至少包含一个非空格的字符。Assert.notEmpty(Collection collection, "collection must not be empty") - 集合非空。Assert.notNull(Object object, "object is required") - 对象非空。3.Object非空校验。
2022-11-15 09:06:06
1749
原创 jemter 简单接口测试使用案例
3.右键http request-->add-->config element --->http header marger。电脑桌面----》“计算机”图标----》鼠标右键选择“属性”----》点击高级系统设置----》高级---》环境变量页面。4.右键http request--->add-->listeren--->view result tree。1. 右键test plan-->add--->Threads--->Thread Group。进入官网:http://选择download下载。
2022-11-03 10:46:05
323
原创 Idea中Java代码修改以后运行,代码不生效,class文件未被更新
1.一种治标不治本的方法是在File-->Settings-->Build,Execution,Deployment-->Build Tools-->Maven-->Runner中勾选了Delegate IDE build/run actions to Maven。2.进入parent项目目录下,执行mvn idea:module ,之后会看到项目下面新生成了一个.iml文件,原因是原先的iml文件混乱导致的,重新生成一下就OK了;
2022-10-28 16:11:52
5357
原创 查看redis占用内存的方法详解
进入serve info (redis服务器右边--点击serve info 按钮 ctrl+I) 可以查看服务器信息。RedisDesktopManager客户端。控制台输入info memory查看。客户端连接redis。
2022-10-26 15:48:34
11223
原创 idea2018 编译打包报错java.lang.StackOverflowError
dea2018 编译打包报错java.lang.StackOverflowError
2022-06-24 16:00:12
2498
ActivitiDemo.rar
2020-03-04
Framemarker框架导出数据库设计world文档代码
2019-03-02
xFire发布Web Service,并调用远程服务
2019-02-16
springboot spring aop 拦截器注解方式实现脱敏
2019-02-13
springboot开发小demo
2019-01-08
mybatis-generator-plugin
2019-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人