JavaSE
文章平均质量分 65
java
igxia
专注Java领域深耕,发誓要做架构师!!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ArrayList与LinkedList的核心差异
摘要: 本文对比了Java中ArrayList与LinkedList的核心差异。ArrayList基于动态数组,支持O(1)随机访问,但扩容(1.5倍增长)和中间插入需数据拷贝(O(n));LinkedList基于双向链表,插入删除仅需修改指针(O(1)),但随机访问需遍历(O(n))。内存方面,ArrayList空间利用率高但可能预留冗余,LinkedList每个节点额外存储指针。适用场景:ArrayList适合读多写少的场景(如随机访问),LinkedList适合频繁增删(如队列)。需注意LinkedL原创 2025-06-12 15:40:54 · 1036 阅读 · 0 评论 -
Java反射机制详解:原理、应用与实战场景
Java反射机制允许程序在运行时动态获取类信息并操作对象,是实现解耦和动态化的核心技术。通过Class、Method、Field等API,反射能动态加载类、创建对象、调用方法及访问私有成员。主要应用场景包括框架开发(如Spring IOC)、动态代理、插件系统、序列化/反序列化(如Jackson)等。尽管反射带来灵活性和扩展性,也存在性能损耗、安全隐患和维护困难等缺点。最佳实践建议缓存Class对象、避免高频调用并配合安全机制。反射是实现框架、工具和可扩展系统的关键技术支撑,但需权衡使用场景。原创 2025-06-12 10:01:11 · 930 阅读 · 0 评论 -
Java Lambda表达式详解
Lambda表达式是 JDK8引入的匿名函数,用于替代冗余的匿名内部类。它通过(参数) -> {逻辑}的简洁语法实现 行为传递,使代码更紧凑、可读性更强。只有一个抽象方法的接口(可使用注解强制校验)。Lambda本质是这些接口的实例化简写。✅ 推荐场景集合操作(遍历、过滤、映射)函数式接口实现(如线程、事件监听)简单行为参数化需求(如Comparator排序)❌ 慎用场景复杂多步骤业务逻辑(应拆分为独立方法)原创 2025-06-11 11:03:07 · 714 阅读 · 0 评论 -
Java Math类常用方法介绍
本文系统介绍了Java Math类的核心计算方法,包括:1) 基础运算(绝对值、极值、幂运算);2) 5种取整方法的差异,重点指出rint()的四舍五入采用"就近取偶"原则;3) 三角函数与角度弧度转换;4) 指数对数运算;5) 随机数生成的3个应用场景,包括区间整数、布尔值及8位随机字符串的实现技巧。所有方法均配有代码示例,突出关键细节,如rint(4.5)返回4.0的特殊性。原创 2025-06-06 17:07:41 · 235 阅读 · 0 评论 -
Java设计模式之单例模式详解
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类仅有一个实例存在,并提供一个全局访问点供外部获取该实例。数学逻辑中的singleton定义为“有且仅有一个元素的集合”,在软件设计中则体现为对唯一实例的严格控制。原创 2025-06-06 14:48:34 · 1148 阅读 · 0 评论 -
Java Map排序全解析:HashMap、TreeMap与LinkedHashMap的排序
摘要:本文探讨Java三种常用Map(HashMap、TreeMap、LinkedHashMap)的排序特性与实现方式。HashMap可通过转换为TreeMap或使用Stream实现按键/值排序;TreeMap自然支持按键排序,也可自定义比较器;LinkedHashMap默认保留插入顺序,可通过访问顺序实现LRU缓存。文章还提供了高性能排序技巧,包括并行处理、复合排序和自定义对象排序方案,帮助开发者根据业务需求选择最优排序策略。原创 2025-06-05 16:38:31 · 1044 阅读 · 0 评论 -
Java实现定时任务
本文介绍了Java中四种定时任务实现方式:1)Timer和TimerTask,简单但单线程执行易阻塞;2)ScheduledExecutorService,基于线程池支持多任务并发;3)Spring的@Scheduled注解,配置简便但需Spring框架支持;4)Quartz框架,功能强大适合复杂调度场景但需额外依赖。每种方式各有特点,可根据项目需求选择合适的定时任务方案。原创 2025-05-27 15:25:03 · 293 阅读 · 0 评论 -
“舔狗机器人”
该网址返回的为JSON字符串格式,后端操控JSON数据需要先引入相关JSON包,我这里使用的为阿里的fastjson。”舔狗语录的“数据量为983条,”深情文案“的为104条,如有需要麻烦点个关注私信我呀。我这里采用的为springboot + mybatisplus编写的,项目结构如下。因为机器人运行是不占用端口的,这里后端就可以不用担心端口被占用了。如需要代码资料,麻烦点个小小的赞和关注然后私信我呀❤。我这里采用自己编写后端代码和直接调用开放地址实现。(3)机器人调用后端接口。原创 2022-10-24 12:49:31 · 965 阅读 · 1 评论 -
java笔记
指定组件填充网格的方式,可以是如下值:GridBagConstraints.NONE(默认值)、GridBagConstraints.HORIZONTAL(组件横向充满显示区域,但是不改变组件高度)、GridBagConstraints.VERTICAL(组件纵向充满显示区域,但是不改变组件宽度)以及 GridBagConstraints.BOTH(组件横向、纵向充满其显示区域)。除了组件的约束对象,GridBagLayout 还要考虑每个组件的最小和首选尺寸,以确定组件的大小。原创 2022-10-24 11:49:36 · 571 阅读 · 0 评论 -
如何搭建自己的qq机器人(mirai)- 事件监听
注:friend收到消息时getSender()方法,如果group收到消息代码中也写成g.getSender(),则会变成在群里收到”你好“指令,然后机器人会通过私聊发送”你好“。我这里Event类因为懒加上是演示,就写在和Plugin同一个包了,而且都实现的静态方法(懒得创建对象,嘿嘿)。在之前监听两类消息的下面加上刚才编写的方法就行了,我这里时同一个包中的静态方法就直接写了,其他情况还是创建对象,对象调用方法。到这里,一个基础的机器人就搭建完毕了,想添加其他功能,就可以按照正常编写步骤来了。原创 2022-10-24 11:47:24 · 2808 阅读 · 0 评论 -
数据库连接池
释放空闲时间超过最大空闲时间的数据库来避免因为没有释放数据库连接而引用起的数据库连接遗漏。数据库连接词是个容器,负责分配、管理数据库连接(Connection)官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口。它允许应用程序使用一个现有的数据库连接,而不是再重新建立一个。功能强大,性能优秀,是Java语言最好的数据库连接池之一。Druid连接池时阿里巴巴开源的数据库连接池项目。标准接口:DataSource。4、获取数据库连接池对象。Druid(德鲁伊)原创 2022-10-10 16:20:13 · 148 阅读 · 0 评论 -
JDBC API详情
1、在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet对象。PreparedStatement对象:setXxx(参数1, 参数2);ResultSet executeQuery(sql):执行DQL语句。int executeUpdate(sql):执行DML,DDL语句。游标向下移动一行,并判断改行是否有数据:next()原创 2022-10-10 16:19:26 · 199 阅读 · 0 评论 -
连接数据库
数据库连接原创 2022-10-10 16:18:45 · 99 阅读 · 0 评论 -
JDBC使用注意事项
mysql8.0版本以上和之前的使用有所不同原创 2022-10-10 16:17:27 · 218 阅读 · 0 评论 -
JDBC编程六部
/返回sql操作影响的行数。六、释放资源(使用完资源之后一定要关闭资源,Java和数据库属于进程之间的通信,开启之后一定要关闭)五、处理查询结果集(只有当第四步执行的是select语句的时候,才有这一步处理查询结果集)一、注册驱动(作用:告诉Java程序,即将要连接的是那个品牌的数据库)二、获取连接(表示JVM的进程和数据库进程之间的通道打开了)//3、获取数据库操作对象。三、获取数据库操作对象(专门执行sql语句的对象)//4、执行SQL语句。四、执行SQL语句(DQL、DML...)原创 2022-10-10 16:15:20 · 221 阅读 · 0 评论 -
反射基础应用
缓存机制:保证所有加载过的Class都会被缓存,当程序需要使用某个Class对象时,类加载器先从缓冲区搜索该Class,只有当缓存区中不存在该Class对象时,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存储到缓冲区。当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的链接,类的初始化这三个步骤进行初始化,如果不出意外情况,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或者类初始化。使用类的class属性来获取该类对应的Class对象。原创 2022-10-10 16:14:16 · 98 阅读 · 0 评论 -
stream流
Stream sorted(Comparator comparator):返回由该流的元素组成的流,根据提供的Comparator进行排序。Stream distinct():返回流的不同元素(根据Object.equals(Object))组成的流。 Stream map(Function mapper):返回由给定函数应用于此流的元素的结果组成的流。Stream skip(long n):跳过指定参数个数的数据,返回由该流的剩余元素组成的流。values)生成流。原创 2022-10-10 16:13:24 · 107 阅读 · 0 评论 -
Lambda
(2)根据调用方法的参数得知lambda对应的接口:new Thread(() -> System.out.println("lambda表达式")).start();startThread( () -> System.out.println(Thread.currentThread().getName() + "线程启动了"));(1)根据局部变量的赋值得知lambda对应的接口:Runnable r = () -> System.out.println("lambda表达式");原创 2022-10-10 16:12:42 · 614 阅读 · 0 评论 -
多线程实现方法
创建Thread类的对象,把MyRunnable对象作为构造方法的参数。定义一个类M有Runnable实现Runnable接口。定义一个类MyThread继承Thread类。在MyRunnable类中重写run()方法。在MyThread类中重写run方法。方法二:实现Runnable接口。创建MyRunnable类的对象。创建MyThread类的对象。方法一:继承Thread类。原创 2022-10-10 16:11:52 · 103 阅读 · 0 评论 -
IOStream
IOStream原创 2022-10-10 16:10:15 · 153 阅读 · 1 评论
分享