- 博客(144)
- 资源 (14)
- 收藏
- 关注

原创 掌握热部署 Jrebel&Xrebel + MybatisPlus extension 从此告别加班
JRebel 和 XRebel 是两个功能强大的 Java 开发工具,分别专注于代码更新和性能监控。而 JRebel MybatisPlus extension 作为 JRebel 的一个扩展,进一步增强了 Mybatis Plus 的开发体验。
2025-02-07 08:00:00
962
原创 桥接模式实战:解耦抽象与实现的优雅之道
桥接模式是一种结构型设计模式,用于将抽象部分与实现部分分离,使两者可以独立变化。它通过组合代替继承,解决了多维变化场景下的类爆炸问题。在电商支付系统案例中,桥接模式将支付方式(微信、支付宝等)与通知渠道(短信、邮件等)解耦,使得N种支付方式和M种通知渠道只需N+M个类而非N*M个类。Spring框架中的JdbcTemplate也应用了桥接模式,分离了JDBC操作与数据源实现。该模式符合开闭原则,提高了系统的可扩展性和维护性。
2025-08-12 08:00:00
823
原创 适配器模式实战—让不兼容的接口协同工作
适配器模式:解决接口不兼容的桥梁 适配器模式通过包装转换使不兼容接口协同工作,核心角色包括目标接口、被适配者和适配器。提供类适配器(继承)和对象适配器(组合)两种实现方式,后者更灵活。以支付系统为例,通过适配器统一支付宝和微信支付接口,使客户端无需关心具体实现。Spring MVC的HandlerAdapter也是典型案例,支持多种处理器统一调用。该模式优点包括解耦、复用性和扩展性,但可能增加系统复杂度。最佳实践建议优先使用组合、保持适配器单一职责,并提前规划接口规范。
2025-08-11 07:45:00
1238
原创 原型模式实战:从 0 到 1 构建高性能对象克隆系统
本文介绍了原型模式在Java中的实现与应用,重点解析了浅克隆和深克隆的区别及实现方式。通过电商订单复制系统的案例,展示了原型模式如何解决对象创建过程中的性能损耗和代码冗余问题。文章包含以下核心内容: 原型模式原理:通过克隆已有对象创建新对象,避免重复初始化过程 Java实现方式:使用Cloneable接口和Object.clone()方法 浅克隆与深克隆: 浅克隆仅复制基本类型字段,引用类型字段共享 深克隆通过嵌套克隆或序列化实现完全独立的对象复制 实战应用:在电商系统中,通过原型模式高效复制订单对象。
2025-08-01 07:45:00
1693
原创 抽象工厂模式实战—构建灵活可扩展的支付系统
摘要:支付系统中的抽象工厂模式应用 在电商支付系统中,抽象工厂模式可以有效解决多支付渠道的集成问题。该模式通过定义支付功能接口(订单、退款、查询)和渠道工厂(支付宝、微信),确保同一渠道的功能配套使用。相比传统if-else实现,抽象工厂模式降低了渠道耦合度,新增支付渠道时无需修改客户端代码,同时避免了跨渠道功能混用的业务风险。具体实现包含:1) 定义支付功能抽象接口;2) 实现各渠道具体产品;3) 创建渠道工厂类。这种设计提升了系统扩展性和维护性,符合开闭原则。
2025-08-01 07:30:00
788
原创 观察者模式实战及Spring事件机制实现(附全部代码)
观察者模式是一种解耦对象间依赖关系的行为型设计模式,适用于事件驱动、数据更新通知等场景。通过主题与观察者的抽象交互,实现一对多的动态通信,支持灵活扩展。文章分析了观察者模式的优缺点:优点是高解耦、易扩展、支持广播通信;缺点是可能引发性能问题和循环依赖。通过网站公告通知管理员和用户的案例,对比了传统观察者模式实现与Spring事件机制两种方案。案例代码展示了主题注册、通知流程及Spring的事件监听实现方式,验证了模式的实用性。
2025-06-19 08:00:00
1037
1
原创 工厂模式+策略模式消除 if else 实战
工厂模式与策略模式的结合能够有效解决客户端与具体策略类之间的强耦合问题,并封装复杂的创建逻辑。单独使用策略模式时,客户端需要直接实例化具体策略类,导致代码重复和违反“迪米特法则”。通过引入工厂模式,客户端只需通过工厂获取策略实例,无需关心具体策略的创建细节,符合“依赖倒置原则”和“单一职责原则”。此外,这种结合支持动态切换策略,新增策略时只需扩展工厂和策略类,无需修改客户端代码,符合“开闭原则”。
2025-06-19 07:45:00
705
1
原创 提高5倍工作效率的IDEA插件,强烈推荐!!!
在软件开发的征程中,提升开发效率是开发者们永恒的追求。而 IDEA 插件,无疑是达成这一目标的得力助手。本文将深入探索多款实用的 IDEA 插件,Jrebel&Xrebel + MybatisPlus extension、AI 编程助手插件、Alibaba Java Coding GuidelinesSonarQube、MyBatisX、MyBatis Log Free、Restful Tool和Maven Helper 等,通过对这些插件的介绍,为开发者解锁高效开发的新姿势。
2025-04-24 07:30:00
1757
1
原创 二、IDE集成AI助手豆包MarsCode保姆级教学(使用篇)
豆包MarsCode是由字节跳动推出的AI编程助手,集成于主流IDE(如VS Code、JetBrains),提供代码补全、错误修复、注释生成等功能,显著提升开发效率。智能补全技术:支持代码补全Pro,可预测用户后续编辑行为(如参数修改),并基于Git提交记录和上下文检索优化推荐准确性。多语言支持:覆盖几十种编程语言,适配传统开发者及跨语言AI编程用户需求。深度集成模型:接入高性能推理模型DeepSeek R1,优化复杂任务处理能力,同时提供代码解释与学习辅助,降低非技术用户门槛。
2025-03-06 08:00:00
4190
1
原创 一、IDE集成AI助手豆包MarsCode保姆级教学(安装篇)
IDE集成AI助手豆包MarsCode保姆级教学(安装篇),一看就会,一学就懂。
2025-03-06 07:45:00
3281
原创 2023年统计局发布全国各省五级行政区划(包含mysql表设计,5级联动)
2023年统计局发布全国各省五级行政区划(包含mysql表设计及全量数据,5级联动)
2025-02-26 07:45:00
626
原创 二、IDE集成DeepSeek保姆级教学(使用篇)
总体而言,Deepseek堪称国内AI大模型中的佼佼者,以其卓越的兼容性和对众多IDE的广泛支持,为程序员们带来了前所未有的便捷。其核心功能更是丰富多彩,令人眼前一亮:代码解释功能让繁琐复杂的代码逻辑瞬间变得清晰明了;高效代码优化技术,精准剔除冗余,助力性能飞跃;一键生成单元测试,为代码质量筑起坚固防线;更有智能答疑解惑与模拟AI程序员辅助开发等实用功能,让编程之路更加畅通无阻。作为编程领域的得力助手,Deepseek无疑将大幅提升程序员的开发效率,成为每一位编程爱好者不可或缺编程利器。
2025-02-25 08:00:00
2447
原创 一、IDE集成DeepSeek保姆级教学(安装篇)
IDE集成DeepSeek保姆级教学(安装篇),本篇介绍收费版安装及免费版本安装,一学就回,一用就懂。
2025-02-25 07:30:00
1737
原创 The difference between the request time and the current time is too large.
报错信息:[Error Code]:RequestTimeTooSkewed, [Message]:The difference between the request time and the current time is too large.at com.aliyun.openservices.oss.internal.OSSExceptionFactory.create(OSSEx
2017-01-09 11:07:50
8882
转载 不得不看的Java代码性能优化总结
前言代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候
2016-01-12 14:17:05
615
原创 在线支付心得
1、把支付宝的sdk下载下来测试一次,叫相关的技术人员把那些key ,公钥和私钥提前准备好,因为申请移动支付的业务需要一些时间,别等开发的时候再去申请,这样会很浪费时间,注意:支付宝单笔交易主动查询的key 和 支付宝回调的key是不一样的。2、区分好支付模块是集成在原来的项目还是另开一个项目,这涉及到维护和扩展的问题,个人建议另开一个项目这样方便维护和扩展。
2015-11-09 20:46:41
1021
转载 tomcat下配置https环境
干货,直接进入主题(1)进入到jdk下的bin目录(2)输入如下指令“keytool -v -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat.keystore”d:/tomcat.keystore是将生成的tomcat.keystore放到d盘根目录下。注意若要放到c盘,在win7系统下,需要以管理员
2015-06-30 16:24:28
623
转载 创业公司如何实施敏捷开发
说起敏捷开发,并不是因为敏捷而敏捷。这几年的敏捷开发已经被很多敏捷咨询服务商神话了,这个东西并不是神器,实施了就可以解决所有软件公司的问题,而是要结合自己公司的特点和问题摸索出适合自己的一套模式。大家都知道,创业公司刚开始需要研发出一款产品并且能够使公司赚钱的产品,不过大部分创业公司没有那么容易一下就能做出来,很多公司还没有成功的产品资金链就断掉了,公司也死掉了。我们公司是这样一个状况,有
2015-06-20 16:41:26
740
转载 正则表达式
1.正则表达式基本语法两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。例子如下:"^The":表示所有以"The"开始的字符串("There","The cat"等);"of despair$":表示所以以"of despair"结尾的字符串;"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;"notice
2015-05-21 15:20:07
446
转载 Java 3DES 加密 解密 案例
package com.jiuwei.test;import java.io.IOException;import java.security.Key;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import javax.crypto.Cipher;import jav
2015-04-11 18:08:25
954
原创 MySQL字符串函数substring:字符串截取
MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。1. 字符串截取:left(str, length)mysql> select left('exam
2015-03-30 16:00:53
674
转载 Java反射机制详解
本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。下面开始正文。【案例1】通过一个对象获得完整的包名和类名123456789101112131415package Reflect;
2015-03-20 15:05:45
516
转载 JDK各个版本的新特性jdk1.5-jdk8
JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言。今天先为大家介绍一下JDK1.5版本到JDK1.7版本的特性。希望能给予帮助。JDK1.5新特性: 1.自动装箱与拆箱:自动装箱的过程:每当需要一种类型的对象时,这
2014-09-29 19:25:02
914
原创 There is an error in invoking javac. A full JDK (not just JRE) is required
提示信息:There is an error in invoking javac. A full JDK (not just JRE) is required原 因:是因为Eclipse找不到JDK 发生的原因:我描述一下我自己发生的原因,是因为我安装新版的JDK所引起的。解决方法:直接贴图,直观一点。大家记住了 这里的JRE是你JDK的路径,而不
2014-09-29 13:30:42
6336
原创 msyql 时间戳转日常时间
1、从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2、从右开始截取字符串 right(str, length) 说明:right(被截取字段,截取长度) 例:select right(content,200)
2014-09-15 20:33:04
562
原创 Java遍历Set集合
Set set = new HashSet();set.add("aa");set.add("bb");set.add("cc");迭代遍历:Iterator it = set.iterator();while (it.hasNext()) { String str = it.next(); System.out.println(str);}for循环遍历:
2014-08-23 14:40:43
626
原创 位与字节
字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。 在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。 符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小 一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,如一个ASCII码就是一个字节,
2014-08-20 12:01:18
631
原创 java定时器
以下内容根据 JavaTM Tutorial 和相关API doc和网上的资料翻译整理,以供日后查看和参考:1.描述Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。简单的一个例程:import java.util.Timer;i
2014-08-15 21:06:28
792
原创 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我遇到的情况是,在以前安装的目录底下安装就会出现这个错误,ERROR 1045 (28000): Access denied for user 'root'@'localhost'(using password: NO) 如果出现这个错误就打以前连接数据库的密码就没问题了,因为data文件夹已经包含了数据库连接的 用户名和密码,包括以前的表。 打以前的用户名和密码就
2014-07-31 01:57:08
780
原创 Eclipse个最有用的快捷键
一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组
2014-07-30 13:23:10
1020
转载 mysql创建定时任务
一、前言 自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得 一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精 确到每分钟执
2014-07-26 10:30:30
543
原创 openfire数据库中文乱码问题
1、首先数据库的编码设置为UTF-82、项目的编码也要设置为UTF-8如果数据保存到数据库的时候还有乱码 就要修改openfire配置文件在openfire主目录\conf\openfire.xml 修改相关配置把 jdbc:mysql://localhost:3306/openfire 改成 jdbc:mysql://localhost:
2014-07-23 11:57:57
1586
转载 tomcat启动startup.bat一闪而过
遇到很多次运行startup.bat后,一个窗口一闪而过的问题,但是从来没去纠正怎样修改配置才是正确的,现在从网上查阅的资料整理如下:tomcat在启动时,会读取环境变量的信息,需要一个CATALINA_HOME 与JAVA_HOME的信息,CATALINA_HOME即tomcat的主目录,JAVA_HOME即java安装的主目录,jdk的主目录。首先,要在环境变量处,配置JAVA_HOM
2014-07-19 10:20:09
606
转载 freemaker入门例子
1.把包lib/freemarker.jar拷贝到项目中2.新建模板文件WEB-INF/templates/test.ftl,内容如下:Hello,${name}!3.新建一个操作类Class1.java,(把模板装载到jsp页面中). 内容如下package com.abc.web;import java.io.Writer;import j
2014-07-16 18:21:14
751
原创 jdk1.5的新特性有哪些
泛型(Generics)--为集合(collections)提供编译时类型安全,无需每刻从Collections取得一个对象就进行强制转换(cast) 增强的“for”循环(Enhanced For loop)--减少迭代器(iterator)的潜在错误(error-proneness) 自动置入/自动取出(Autoboxing/unboxing)--无需在基本类型(primiti
2014-06-30 19:42:56
569
转载 事务是什么,以及事务四个特性
一.什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 二.事务的 ACID 事务具有四个特征:原子性( At
2014-06-25 19:43:42
713
转载 mysql 获取当前日期及格式化
MYSQL 获取当前日期及日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式返回系统日期,输出 2009-12-25 14:38:59select now();输出 09-12-25select date_format(now(),'%y-%m-%d');根据f
2014-06-24 23:39:29
531
原创 MySql索引的使用方法及详细介绍
索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了
2014-06-24 22:28:26
877
2023年统计局发布全国各省五级行政区划(包含mysql表设计及全量数据,5级联动)
2025-02-21
SpringMVC、Spring、Hibernate经典demo
2014-12-15
SSH框架整合
2013-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人