自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cruise的博客

我是一只程序猿

  • 博客(193)
  • 资源 (2)
  • 收藏
  • 关注

原创 说⼀下resultMap和resultType? 代码举例

使用场景:当你的数据结构相对简单且列名与属性名匹配时,使用resultType。当你的数据结构复杂或者列名与属性名不匹配时,使用resultMap。灵活性resultMap提供了更多的灵活性,可以处理复杂的映射关系,如一对多、多对一关系等。而resultType则更适合于简单的映射需求。选择使用哪一个取决于你的具体需求和查询结果的复杂性。

2025-05-17 17:57:54 309

原创 mybatis #{}和${}的区别是什么? 相关代码举例

这种方式会进行预编译,并且会对参数进行转义处理,从而防止SQL注入。这是一种字符串替换标记,MyBatis会将{}直接替换为变量的值并拼接到SQL语句中。这种方式不会进行预编译,也不会对参数进行转义处理,因此存在SQL注入的风险。这种方式下,参数不会被直接拼接进SQL语句中,而是通过预处理语句来设置参数值,从而避免了SQL注入的风险‌。这种方式下,如果变量值包含恶意代码,可能会被直接执行,导致SQL注入‌。

2025-05-17 17:38:40 149

原创 什么是Mybatis? 代码举例

‌‌是一个优秀的持久层框架,主要用于简化Java应用程序与数据库之间的交互。它原本是Apache的一个开源项目iBATIS,后来改名为MyBatis。MyBatis通过XML或注解的方式配置和映射原生信息,将接口和Java的POJOs(Plain Ordinary Java Objects,普通的Java对象)映射成数据库中的记录‌12。

2025-05-17 17:26:16 244

原创 Mybatis的⼀级、⼆级缓存 代码举例

MyBatis 提供了强大的缓存机制,其中包括一级缓存和二级缓存。下面我将通过代码示例来详细解释这两个缓存的使用。

2025-05-17 17:13:49 340

原创 说说G1垃圾收集器的⼯作原理,代码举例

‌‌:G1将堆内存划分为多个大小相等的区域(Regions),每个Region可以属于新生代或老年代,但逻辑上区分。这种分区管理使得G1能够并行处理多个Region,提高垃圾收集的效率‌1。‌‌:G1使用并发标记过程来追踪对象之间的引用关系,减少应用程序的停顿时间。在标记阶段,G1从根集合开始遍历对象图,标记所有可达的对象。在清除阶段,G1回收未被标记的对象,释放内存空间‌2。‌‌:G1允许用户指定每次垃圾回收时的最大停顿时间和在一个时间段内的总停顿时间。

2025-05-16 15:46:56 126

原创 说说CMS垃圾收集器的⼯作原理 代码举例

在Java中,CMS(Concurrent Mark Sweep)垃圾收集器是一种低停顿的垃圾收集器,主要用于并发收集老年代的对象。它旨在减少应用程序停顿时间,尤其是在多核处理器上运行时。

2025-05-16 11:17:13 279

原创 JVM怎么判断⼀个对象是不是要回收?代码举例

jvm怎么判断一个对象是不是要回收?代码举例在Java虚拟机(JVM)中,判断一个对象是否应该被回收主要依赖于垃圾收集器(Garbage Collector, GC)的实现。JVM中最常见的垃圾收集算法有标记-清除(Mark-Sweep)、复制(Copying)、标记-整理(Mark-Compact)和分代收集(Generational Collection)等。下面我将通过几个步骤和代码示例来解释JVM是如何判断一个对象是否可以被回收的。

2025-05-16 10:41:47 390

原创 Java⾥有哪些引⽤类型?代码举例

当内存充足时,软引用的对象不会被回收;弱引用比软引用更弱,只要发生垃圾回收,弱引用的对象就会被回收。通常用于实现规范化映射,例如哈希表的键值对。只要存在强引用,对象就不会被垃圾回收器回收,除非显式地将引用设置为null或对象超出作用域。虚引用是最弱的引用类型,它不会阻止对象的回收,主要用于在对象被回收时进行一些清理工作。这些引用类型在垃圾回收中的作用和适用场景各不相同,合理使用可以优化内存管理和提高程序性能。每种引用类型都有其特定的用途和垃圾回收行为。强引用是默认的引用类型,例如。

2025-05-16 10:36:04 189

原创 ‌PrintStream、BufferedWriter和PrintWriter的比较‌

【代码】‌PrintStream、BufferedWriter和PrintWriter的比较‌。

2025-05-15 23:04:51 214

原创 内部类的分类有哪些? 各用代码举例

‌:定义在外部类的方法中的内部类。局部内部类只能在其定义的方法内部被访问。局部内部类可以访问其所在方法的所有局部变量。‌:没有名称的局部内部类,通常用于实现接口或扩展类。匿名内部类可以访问其外部类的所有成员变量和方法。修饰,定义在外部类的内部。实例内部类可以访问外部类的所有成员变量和方法,包括私有成员。静态内部类不依赖于外部类的实例,只能访问外部类的静态成员变量和方法。‌:这是最常见的内部类类型,没有使用。

2025-05-15 20:13:22 134

原创 Java中异常分为哪些种类? 举例

Java中主要有两种异常处理机制:try-catch-finally和throws子句。‌:这是程序无法处理的严重问题,通常与Java虚拟机(JVM)或其环境相关。这些错误在应用程序的控制和处理能力之外,通常不应该尝试处理它们‌。‌:这是程序本身可以处理的异常,分为编译时异常和运行时异常。

2025-05-15 19:44:19 237

原创 为什么要有 hashCode 举例

在Java中,hashCode()方法的存在主要是为了提高对象在哈希表(如HashMapHashSet等)中的存储和查找效率。

2025-05-15 18:49:27 160

原创 Java 17的接⼝新增了哪些特性 举例

Java 17 引入了一些新特性,其中包括对接口的一些增强和改进。这些改进主要集中在记录(Records)、密封类(Sealed Classes)以及模式匹配(Pattern Matching for instanceof)等方面。值得注意的是,Java 17 主要聚焦于这些特性,而没有直接针对接口本身引入新的特性。但是,我们可以探讨如何在Java 17中使用这些新特性来增强接口的实现和用法。

2025-05-15 15:53:37 243

原创 重写和重载的区别 举例

‌重载‌:在同一个类中,可以定义多个名称相同但参数列表不同的方法。参数列表的不同可以体现在参数的个数、类型或顺序上。重载方法的返回类型可以相同也可以不同,但不能仅靠返回类型不同来实现重载‌12。重载是在编译时进行方法调用的选择,即静态绑定‌1。‌重写‌:子类可以重新定义父类中的方法,方法名、参数列表和返回类型必须与父类中的方法完全相同。重写的方法在运行时根据对象的实际类型决定调用哪个方法,即动态绑定‌13。

2025-05-15 15:40:53 147

原创 ArrayList和LinkedList有什么区别 举例

‌‌。

2025-05-15 15:30:24 285

原创 静态代理和动态代理的区别 举例

【代码】静态代理和动态代理的区别 举例。

2025-05-15 15:27:07 178

原创 JDK动态代理和CGLIB动态代理的区别 举例

静态代理和动态代理的主要区别在于代理类的生成方式和适用场景。静态代理在编译时确定代理类,通常通过手动编写或工具生成,代理类持有被代理类的引用,并在方法调用前后添加额外逻辑。它适用于代理关系在编译时已确定的情况,如需要长期保持同一IP地址的场景。动态代理则在运行时通过反射机制动态生成,无需手动编写代理类,适用于需要在运行时动态创建代理对象的情况,如频繁更换IP地址以避免封禁。静态代理代码示例展示了代理类如何调用真实对象的方法,而动态代理示例则通过Java的Proxy类和InvocationHandler接口实

2025-05-15 15:21:14 130

原创 java8 对 List<Map<String, Object>> mapList 分组

public void aaa(){ List<Map<String,Object>> list = new ArrayList<>(); Map<String,Object> map = new HashMap<>(); map.put("dicId","aaa"); map.put("dicName","钢材"); map.put("dicDes","钢材1号").

2020-07-21 11:13:37 10303 3

原创 如何写代码才能避免内存泄漏?

内存泄漏,内存泄露就是在内存的某一个区域内,所使用的内存无法释放,最终导致整个内存空间变小。内存泄露的原因,一定是代码写的有问题,主要有以下几个原因,第一种情况是在写代码的时候,如果使用的IO链接没有关闭,或者使用的数据库链接没有关闭都会导致内存泄露,因为它会一直占用着资源,无法被回收。下面通过几个例子来说明内存泄漏,首先第一个。在Stack这个类中定义的成员变量Obgect数组,用来存储对象的数组,然后定义了一个size的int类型的整数,初始值为0。然后又定义了一个静态的final修饰整数的

2020-06-23 14:59:19 835

原创 jvm性能调优的策略-干货

JVM 调优的本质:并不是显著的提高系统性能,不是说你调了,性能就能提升几倍或者上十倍,JVM 调优,主要调的是稳定。如果你的系统出现了频繁的垃圾回收,这个 时候系统是不稳定的,所以需要我们来进行 JVM 调优,调整垃圾回收的频次。GC 调优原则 调优的原则1、 大多数的 java 应用不需要 GC 调优2、 大部分需要 GC 调优的的,不是参数问题,是代码问题3、 在实际使用中,分析 GC 情况优化代码比优化 GC 参数要多得多; 4、 GC 调优是最后的手段目的G..

2020-06-23 14:56:06 650

原创 如何写出一个优雅的代码第二集~技巧篇

技巧一:在写工具类的时候,要加入一个私有的构造方法,这样做的目的是防止其他人通过new的方式来创建对象,保证了整个全局中对象的唯一性,也就是单例。技巧二:在一个方法内部,有时候需要创建局部变量,这时候我们尽量用基本数据类型,下面的例子就是,对一个数进行累加。如果是用包装类型Long定义变量,它的使用效率是使用基本数据类型long的10倍。 public class Sum { public static void main(String[] args) { long s..

2020-06-23 14:51:28 244

原创 如何写出一个优雅的代码第三集~技巧篇

技巧一:慎用可变参数在需要写可变参数的时候,一定要注意的是,可变参数有可能参数个数为0,这个时候可能会导致异常,那么为了确保在传输参数的时候一定至少有一个数或者说,确保这个方法传入的参数至少有一个,这个时候可以使用下面的方式。这样当一个参数都不传的时候,编译是不通过的,所以避免了发生错误。 /* *可变参数要谨慎使用 */public class VarArags { //累加方法:可变参数 0~很多 static int sum(int... args) { int .

2020-06-23 14:51:18 185

原创 如何写出一个优雅的代码第一集~构造器。

先看下面的代码,在平时写Javabean的时候。有可能会有很多个属性,那么在构造这个实例的时候,很可能会因为某些代码比较多,某些属性比较多,容易漏掉一些或者写错,而有些属性是非必须设置的。那么在new对象的时候,可能由于位置没有对应好就容易产生错误。这里推荐使用构造器的方式来对实例进行设置属性。在这个Java bean中有7个属性,正常来说这7个属性是我们业务中常用的比较多的属性。在这个类中,创建一个public权限的Builder的静态内部类,在这个内部类中,把外部类的属性全部复制出来一份,然后在这个

2020-06-23 09:33:16 239

原创 B,KB,MB,GB大小的逐级单位转化

/** * 字节 转换为B MB GB * @param size 字节大小 * @return */public static String getPrintSize(long size){ long rest = 0; if(size < 1024){ return String.valueOf(size) + "B"; }else{ size /= 1024; } if(size < 1024){ .

2020-06-23 09:32:13 552

原创 单个文件上传,多文件上传,删除文件/文件夹,

package com.lic.fussel.foundation.filecabinets.util;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOException;/** * 类名.

2020-06-23 09:31:11 625

原创 多文件/文件夹打包zip,response加入请求头即可下

package com.lic.fussel.foundation.filecabinets.util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.*;import java.util.ArrayList;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/**.

2020-06-23 09:29:25 1460 1

原创 mysql支持json数据格式

mysql从5.7之后开始,支持json数据格式创建表 create table json_user ( uid int auto_increment, data json, primary key(uid) );插入数据1 insert into json_user values( null, ' { "name":"lison", "age":"18", "address":"enjoy" } ...

2020-06-23 09:27:25 1652

原创 通过java的io流的方式下载工具类

package com.lic.fussel.foundation.filecabinets.util;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;/** * 类名:DownLoadUtils * 描述:TODO * 作者:Cruise * 日期:2020/3/.

2020-06-23 08:58:29 298

原创 java实现文件的复制转移

package com.lic.fussel.foundation.filecabinets.util;import java.io.*;/** * 类名:FileToFile * 描述:TODO * 作者:Cruise * 日期:2020/3/29 下午4:32 * 版本:1.0 **/public class FileToFile { private String urlFrom; private String urlTo; private Fil.

2020-06-21 20:32:48 397

原创 mysql 的innodb 和mysam 的存储引擎的区别

2020-06-21 20:25:53 362

原创 MySQL触发器简单案例

​-- 写一下MySQL触发器DELIMITER $$CREATE TRIGGER tr_user_insert AFTER INSERT ON sFOR EACH ROWBEGIN INSERT INTO c(cno,cname,CTEACHER) VALUES(6,6,'王二小');END;$$DELIMITER ;-- 测试一下,c 表会自动添加一条记录 INSERT INTO s(sno,sname) VALUES(8,'王二小的老师');​...

2020-06-21 20:09:34 253

原创 rmi通信rpc框架实现远程调用

今天说一下通过静态代理和rm方式实现远程调用,这里面主要想说一下这个静态代理的方式,它是通过一个匿名类的方式来实现的。通过这个案例来实现一个简易的RPC远程调用的装置。先来说一下provider服务提供者的这一方。在Provider这个类中,定了一个静态的内部类?通过spring管理的方式,创建了一个orderService的一个服务。然后初始化iniprtocol2() 方法来初始化服务端,然后通过system.in.read()方法,对服务端进行挂起。在这个iniprtocol2的方法中,首先new一个

2020-06-21 20:08:02 271

原创 java对文件加密解密,亲测可用,有较强的程序健壮性

package jasypt;import java.io.*;import java.util.UUID;public class FileEncryptAndDecrypt { private static final String key = "8fbe6a10aa0455d1a00826066abb5636"; /** * 文件file进行加密...

2020-04-03 00:01:06 914 3

原创 线程池工具类-代理-callable-execute

工具类:package common;import java.util.concurrent.Callable;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.LinkedBlockingQueue;import java.uti...

2019-05-10 11:47:34 521

原创 spring boot 读取配置文件(application.yml)中的属性值+补充

原文链接:https://www.cnblogs.com/EzioSyh/p/7541610.html注意事项:1,在第三步中: private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值 private List<Str...

2019-04-22 15:26:59 752

原创 SpringBoot 打包配置pom文件

springboot pom 文件添加:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring...

2019-04-02 09:56:47 4759 1

原创 java 生成二维码 + base64 转码

1,生成 二维码:ByteArrayOutputStream createQrCodeImg = qrCodeService.createQrCodeImg(activityAction.getId()); BASE64Encoder encoder = new BASE64Encoder(); String base64Img = encoder.encode(create...

2019-03-30 13:46:45 1060

原创 zTree 实现模糊搜索+高亮显示

1,准备四个js文件2,html页面<div class="input_group" style="width: 400px;"> <i class="iconfont icon-sousuo l"></i> <input type="text" value="" onkeyup="AutoM...

2019-03-27 14:47:53 1366

原创 Centos7下安装mysql8.0.15完整详细教程+ 补充

参考链接:https://blog.csdn.net/weixin_43629719/article/details/87878367补充:1.在进行 :(9)为mysql配置环境变量。要执行命令:source /etc/profile 使修改生效如果启动失败,首先查看日志,日志位置的查看,命令:vi /etc/my.cnf2.在进行:(8)my.cnf 的信息如...

2019-03-24 23:08:25 1582

原创 a 标签href 写法区别

<a href="javascript:void(0);" onclick="delete_attachment(file_id0)" class="deletebtn">删除</a>这样的a标签会点击完, 保持页面位置不动,<a href="#" onclick="delete_attachment(file_id0)" class="deletebtn"&...

2019-03-22 15:21:56 670

spring 用到的三个切面的jar包

学习spring4 ,关于aop 切面的讲解,用到的三个jar包。aopalliance.jar aspectjweaver-1.6.6.jar spring-aspects-4.0.6.RELEASE.jar

2018-11-03

FileZilla_3.38.1 mac 版本

Mac 版本的Linux服务器数据传输工具,很好用,配置简单

2018-11-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除