- 博客(21)
- 收藏
- 关注
原创 从0到1:创建出自己的skill(skill如何编写)
本文介绍了Skill的创建与应用方法。Skill是将常用提示词模板化的技术方案,能避免重复输入相同要求。创建Skill需使用Markdown格式文件,包含名称、描述和具体要求(如色彩、动画等约束条件)。推荐使用Typora、JetBrains IDE或AI集成开发工具编写Skill,并通过AI辅助优化。文章建议为Skill添加明确约束条件,使用AI检测缺陷,并多次测试验证。最后推荐了find-skills等实用Skill资源库,帮助开发者快速获取标准化提示模板,提高与大模型交互效率。
2026-03-10 22:31:38
6552
原创 JAVA:策略模式的实战使用
本文介绍了策略模式的概念及两种实现方式。策略模式通过定义统一接口,将不同算法封装成独立类,使它们可以相互替换。文章以制作土豆泥为例,展示了简单策略模式的实现,通过切换实现类即可改变处理方式。针对简单实现存在的硬编码问题,提出结合Spring IOC的进阶方案:1)自定义注解标记实现类;2)定义抽象收集父类自动注册实现类到Map;3)通过子类获取注解值作为key。这种方案避免了if-else判断,使系统更易扩展。关键点包括:注解值必须唯一,收集父类可复用,子类负责具体注解属性处理。进阶实现更符合实际开发需求,
2026-05-31 19:09:03
274
原创 JAVA集合:List、Set和Map
本文介绍了Java集合框架中List、Set和Map三大接口的用法及实现类。List用于存储有序元素,常用ArrayList;Set保证元素唯一性,常用HashSet;Map存储键值对,常用HashMap。文章详细说明了各接口的实现类特点:ArrayList适合通用场景,LinkedList维护顺序,Vector线程安全;HashSet去重,LinkedHashSet有序,TreeSet可排序;HashMap通用,LinkedHashMap有序,TreeMap可排序。使用时需根据场景选择合适集合,注意Set
2026-05-17 19:54:47
244
原创 MyBatis-Plus用法详解
MyBatis-Plus简化了MyBatis的使用,通过Java代码代替XML编写SQL。文章介绍了其核心功能:1)实体类需与表名、字段名对应,使用Lombok简化代码;2)Mapper接口继承BaseMapper即可实现基础CRUD;3)提供了QueryWrapper/LambdaQueryWrapper等条件构造器进行链式条件构建;4)支持分页查询,需配置拦截器;5)推荐使用MyBatis-Plus插件自动生成实体类和Mapper文件。相比原生MyBatis,MyBatis-Plus在保留原有功能基础上
2026-04-20 18:57:15
544
原创 java:volatile关键字的作用
摘要:Java中volatile关键字用于解决多线程环境下的内存可见性问题,确保一个线程对共享变量的修改能立即被其他线程看到。它通过内存屏障机制防止指令重排序,保证有序性,但不保证原子性。实验代码对比普通变量、volatile变量和同步方法修饰的volatile变量,证实volatile确实能实现内存可见性,但无法解决复合操作的原子性问题。内存屏障分为四种类型(LoadLoad、StoreStore、LoadStore、StoreLoad),在读写volatile变量时会自动插入相应屏障指令。
2026-04-12 22:08:52
749
1
原创 MySQL:索引的使用
摘要:索引主要按数据结构分为B+树、哈希、全文和空间索引,InnoDB存储方式包括聚簇索引(主键索引)和非聚簇索引(二级索引)。索引创建时需考虑主键、唯一、普通、联合、全文和空间索引类型,遵循最左前缀匹配原则。索引失效场景包括where条件使用函数、like%左匹配、算术运算、or条件单边索引、隐式类型转换、范围查询中断最左匹配等。联合索引必须按创建顺序使用,否则无法命中索引。
2026-04-07 12:32:28
229
原创 MySQL:select查询语法大全
本文详细介绍了MySQL查询语法,包含基础查询、关键字使用、联表查询和子查询四大部分。基础语法部分讲解了SELECT语句的基本用法;关键字部分详细说明了AS、DISTINCT、WHERE条件判断、GROUP BY分组、HAVING筛选、ORDER BY排序和LIMIT分页的使用方法;联表查询部分介绍了INNER JOIN、LEFT JOIN和CROSS JOIN三种连接方式;子查询部分则分类讲解了标量、列、行和表子查询的应用场景。
2026-04-02 17:05:57
799
原创 java:SpringBoot启动流程
Spring Boot启动流程主要分为两部分:1.创建SpringApplication对象时,会推断应用类型(Web/Reactive/None),并通过SpringFactoriesLoader加载META-INF/spring.factories中配置的BootstrapRegistryInitializer、ApplicationContextInitializer和ApplicationListener实现类。2.run()方法执行流程包括:创建引导上下文→配置环境→打印Banner→创建应用上下
2026-03-30 00:01:40
682
原创 java:HashMap的底层原理
摘要:HashMap是Java中基于哈希表的Map实现,采用数组+链表/红黑树结构存储键值对。其核心操作包括put和resize:put时计算key哈希值确定数组位置,处理哈希冲突时可能转为红黑树;当元素数量超过阈值(容量*负载因子)时触发resize扩容。初始化时可指定初始容量和负载因子,默认16和0.75。扩容时数组大小翻倍,并重新分配节点。链表长度≥8且数组≥64时会树化,≤6时退化为链表。
2026-03-22 15:34:16
601
原创 java:三元运算符的语法和使用
本文介绍了条件表达式(三元运算符)的基本语法和使用方法。语法结构为"条件?表达式1:表达式2",根据条件真假返回对应表达式的值。通过代码示例演示了其实际应用,展示了当a=10时判断a是否大于5的案例。文章还强调了使用注意事项:三元表达式必须有接收变量,且建议仅在简单判断中使用,复杂逻辑可能造成代码可读性下降。
2026-03-19 19:42:35
371
原创 java面向对象编程三大特征:封装、继承和多态
封装:将类的变量用private标注,仅在该类中可以直接调用,对外通过get和set方法间接调用,这样在方法中,就可以对变量有效的控制。继承:在类名后+extends+父类,这时,就拥有了父类的变量和方法,可以在此基础上进行不同的开发,提高了代码的复用性。多态:同一个行为的不同表现形式,可以通过重写或重载来实现多态。
2026-03-17 00:08:03
529
原创 如何用好BigDecimal
在金融等需要精确计算的场景中,必须使用BigDecimal而非Float/Double。Float/Double转换字符串时会丢失精度(如0.1、0.10会被视为相同值),而BigDecimal通过字符串构造可保留完整精度。使用时需注意:1)必须用String构造(直接传float/double会继承不精确性);2)通过add/subtract等方法进行运算;3)可通过setScale设置精度模式(四舍五入/截断/进一等)。示例显示BigDecimal能准确处理0.1、0.10、0.100的差异,并支持高精
2026-03-14 20:07:33
561
原创 java:线程池的7大参数与使用
线程池参数设置指南:创建线程池需配置7个参数,包括核心线程数(建议小于CPU核心数)、最大线程数(计算密集型设为CPU数-1,IO密集型设为2倍CPU数)、空闲线程存活时间、时间单位、阻塞队列(根据业务需求选择大小)、默认线程工厂和拒绝策略(4种可选)。线程池执行流程:优先使用核心线程,满后入队列,队列满后创建非核心线程,全满则按策略处理新请求。常用API包括任务提交(execute)、关闭线程池(shutdown)和预创建线程(prestart)。合理配置这些参数能优化线程池性能。
2026-03-05 22:16:29
207
原创 java:abstract抽象类的定义与使用
摘要:抽象类用于处理具有相同业务框架但部分环节实现不同的场景。通过在抽象类中定义总方法流程和抽象方法,子类继承时必须重写抽象方法来实现差异化处理。文中以Animal抽象类为例,展示了Dog和Cat子类如何重写eat()和game()方法实现不同行为。相比普通类继承,抽象类强制要求子类实现特定方法,确保业务关键环节不被遗漏,提高了代码规范性。这种设计模式适用于需要统一框架但允许部分环节灵活变化的业务场景。
2026-02-28 22:17:14
387
原创 String,StringBuffer,StringBuilder在大量更改字符串时的使用场景
Java字符串处理类性能比较:String效率最低,适合常规使用;StringBuilder单线程下效率最高;StringBuffer线程安全但效率中等。测试显示,10万次操作中String耗时最长,StringBuilder最快。多线程环境下,StringBuffer能确保线程安全,而StringBuilder可能出现数据不一致。建议根据场景选择:常规用String,单线程大量操作用StringBuilder,多线程环境用StringBuffer。实际应用中需权衡性能与线程安全需求。
2026-02-18 22:17:28
783
原创 JAVA:String类详解(快速掌握String的使用)
本文介绍了Java中String类的基本使用方法。主要内容包括:1 String的多种创建方式,如直接赋值、构造方法、字符/字节数组转换等;2 String比较方法,重点解析了equals方法的实现逻辑;3 常用字符串操作方法,如equals、length、indexOf、split等。文章还指出String具有不可变性,所有字符串操作实际上会创建新对象。建议在比较字符串时让字面量调用equals方法以避免空指针异常。
2026-02-12 21:14:13
1572
原创 java:==与equals的区别
摘要:本文比较了Java中"=="和equals的区别。"=="用于基本类型的数值比较和对象的内存地址比较;equals是Object类的方法,默认行为与"=="相同,但可通过重写实现自定义比较逻辑。String类重写了equals方法实现内容比较。基本类型不能直接与对象比较,但可通过自动装箱/拆箱与包装类比较。示例代码展示了基本类型、对象和字符串的比较结果,验证了二者的差异。
2026-02-11 19:15:46
364
原创 java中continue、break、return之间的区别
本文介绍了Java中控制循环的三个关键字:continue、break和return的区别及用法。continue会跳过当前循环的剩余部分直接进入下一次循环;break会立即终止整个循环;return不仅终止循环,还会结束当前方法的执行。文章通过代码示例展示了三者的不同效果,并指出它们的使用限制:continue和break只能在循环中使用,而return可用于任何方法位置。最后强调在try-catch-finally结构中,finally代码块总会执行,不受这三个关键字影响。
2026-02-09 20:54:01
231
原创 java对象的浅拷贝与深拷贝
本文探讨了Java中浅拷贝与深拷贝的区别及实现方式。浅拷贝使两个对象指向同一内存地址,修改一个会影响另一个;深拷贝则创建独立对象,互不影响。文章通过Person类实例演示了浅拷贝和三种深拷贝实现方法:直接创建对象赋值、重写clone方法以及序列化实现。特别指出当对象包含类属性变量时,需对这些变量也进行深拷贝处理。示例代码展示了各种拷贝方式的实际效果,验证了深拷贝后对象修改的独立性。
2026-02-08 22:09:07
539
原创 JAVA:Exception与ERROR的区别(try-catch的使用)
Java异常处理摘要:异常分为Exception(可捕获处理)和Error(系统级不可控异常)。处理Exception有两种方式:( 1 )throws声明式,将异常抛给jvm,但会降低程序可控性;( 2 )try-catch主动捕获,可针对性处理不同异常,finally块确保必要代码执行。使用try-catch时需注意:多个catch应按异常范围从小到大排列,每个try只能捕获一个异常,catch/finally内部仍需处理可能的异常,避免过度嵌套。建议优先使用try-catch保持程序可控性。
2026-02-06 22:41:16
313
原创 java方法传参:是传值还是地址?
本文探讨Java中方法参数的传递方式。基本数据类型和String采用值传递,方法调用不会改变原变量值;而数组、集合和对象采用地址传递,方法调用可能修改原变量内容。开发时需注意参数传递方式对变量值的影响。
2026-02-04 22:34:24
365
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅