- 博客(19)
- 收藏
- 关注
原创 Java LinkedHashMap获取最后一位
在上面的代码中,我们首先创建了一个LinkedHashMap对象,并向其中添加了三个元素。然后,使用for循环遍历LinkedHashMap中的每个元素,并在循环结束后获取最后一个元素的key和value,最后输出这个元素的信息。需要注意的是,在使用LinkedHashMap获取最后一个元素时,需要遍历整个Map集合,因此效率可能会比较低。在Java中,LinkedHashMap是一种可以保持插入顺序的Map集合,它维护了一个双向链表,记录了元素的插入顺序。
2023-03-23 14:47:52
4470
1
原创 Java使用策略模式生成不同时期报告
通过使用策略模式,我们可以轻松地生成不同类型的报告。我们只需要定义不同的报告类,然后使用报告生成器类来生成相应的报告即可。这使得我们的代码更加灵活和可扩展。在Java中,使用策略模式可以方便地生成不同时间周期的报告,包括周报告、月报告、季报告和年报告。本文将介绍如何使用策略模式来实现这些报告的生成。
2023-03-23 09:03:44
253
原创 JAVA transient关键字
作用我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应
2020-07-16 09:39:40
229
原创 springBoot中获取配置文件属性的三种方式
方式一使用@Value方式(常用)@Value("${test.msg}") private String msg; 在yml配置文件中test : msg : hello world测试如下 System.out.println(msg);hello world方式二使用Environment方式@RestController public class WebController { @Autowired private Environmen
2020-06-23 17:02:21
526
原创 在非spring环境中获取bean对象
我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用spring提供的其他对象或者说有一些不需要交给spring管理,但是需要用到spring里的一些对象。这里我总结了两种方式。方式一实现BeanFactoryPostProcessor接口代码如下@Componentpublic final class SpringUtils implements B
2020-06-19 09:24:42
2023
1
转载 装饰器模式和代理模式的区别
代理模式和装饰器模式很像,这里用【到咖啡馆喝咖啡】作例子来讲解。基础实现定义一个咖啡的接口。public interface Coffee { /** * 打印当前咖啡里有什么 */ void printMaterial();}定义一个苦咖啡的实现。public class BitterCoffee implements Coffee { @Override public void printMaterial() { Syst
2020-06-11 10:57:51
311
原创 JAVA中DCL单例模式
DCL就是双重检索锁,废话不多说,直接贴代码public class single{ //创建可见性实例instace private static volatile DoubleCheckedLocking instatace; //私有化构造方法 private static DoubleCheckedLocking (){ } //公共获取实例方法 public static DoubleCheckedLocking getInstace(){ //双重验证 if(instac
2020-06-02 20:58:45
493
原创 JAVA静态代理设计模式实现
静态模式要求代理类和被代理类实现公共接口,public interface Marry{ void happyMarry();}新建一个被代理类,public class You implements Marry{ @Override public void happyMarry() { System.out.println("you and his"); }}**新建一个代理类,**代理类需要写一个被代理对象作为形参的构造方法class
2020-05-28 19:09:29
230
原创 JAVA多线程的两种启动方式
在java中,有两种方式实现多线程,一个是继承Thread类,另一个是实现runnable接口,建议用runnable接口的方式,因为java是但继承多实现。方式一:继承Thread类代码如下:public class StartThread extends Thread { @Override public void run() { for (int i=0;i<9;i++){ System.out.println("学习 "+i);
2020-05-27 17:22:27
268
原创 JDK8中LocalDate的方法
方式一在yml文件中配置如下weather: city_name: weather_Key: 然后通过实体类属性中的注解@Value获取yml文件中的属性 @Value("${weather.city_name}") private String cityName; @Value("${weather.weather_Key}") private String key;方式二自定义配置类@Data@Configuration@Confi
2020-05-22 17:24:19
675
原创 mybatisplus乐观锁插件
主要适用场景当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果version不对,就更新失败插件配置@Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new Optimi
2020-05-22 16:33:02
255
原创 mybatisplus之逻辑删除
开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓逻辑删除就是将数据标记为删除,而并非真正 的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免 数据被真正的删除。MP就提供了这样的功能,方便我们使用,接下来我们一起学习下。修改表结构为tb_user表增加deleted字段,用于表示数据是否被删除,1代表删除,0代表未删除。ALTER TABLE `tb_user` ADD COLUMN `deleted` int(1) NULL
2020-05-22 09:53:51
396
原创 如何实现myBatis plus的自定义sql方法
mybatisplus是个很好用的插件,相信小伙伴们都知道,在这里,我给大家讲一下它如何自定义自己的sql方法。编写myBaseMapper继承baseMapperpublic interface MyBaseMapper<T> extends BaseMapper<T> { //自定义sql方法 List<T> findAll();}AbstractMethod是mybatisplus中注入方法的一个抽象方法,这里,我们需要定义一个方法来继承
2020-05-20 19:24:39
4903
1
原创 myBatisPlus主键生成策略分析
关于myBatisPlus,相信大部分小伙伴们并不陌生。myBatisPlus主键生成策略,其实并不复杂。我们可以在实体类的id上面加一下注解: @TableId(type = IdType.AUTO) private Long id;@TableId注解属于myBatisPlus中的,当点开type后会发现@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD})public @interface
2020-05-17 20:41:43
732
原创 SpringBoot访问静态资源详解
在springBoot项目中,通常需要存放静态图片。如需使用静态图片等,则需要代码如下:resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("static/weatherImg/" + imgName + ".png");用来访问静态图片并作为输入流。文件结构:至此,就可以成功的获取指定的文件输入流。...
2020-05-15 15:50:43
222
原创 springBoot后端全局Cors跨域问题
在前后分离项目中,很容易碰到跨域问题,前端和后端不处于同一端口号。要想解决这个问题,后端就需要配置全局CORS跨域请求。代码如下:package com.****.*****.configuration;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.spring
2020-05-14 19:39:03
747
1
原创 JAVA线程优先级问题详解
Java中线程优先级可以指定,范围是1~10。但是并不是所有的操作系统都⽀持10 级优先级的划分(⽐如有些操作系统只⽀持3级划分:低,中,⾼),Java只是给 操作系统⼀个优先级的参考值,线程最终在操作系统的优先级是多少还是由操作系 统决定。Java默认的线程优先级为5,线程的执⾏顺序由调度程序来决定,线程的优先级会 在线程被调⽤之前设定。通常情况下,⾼优先级的线程将会⽐低优先级的线程有更⾼的⼏率得到执⾏。我们 使⽤⽅法 Thread 类的 setPriority() 实例⽅法来设定线程的优先级。p
2020-05-13 14:48:01
526
1
原创 JAVA异常之try、catch、finally用途
当try代码块里面发生异常,会被catch所捕获,不会抛出,在catch代码块里面定义异常之后的操作。无论是否异常,finally块的代码始终会执行。有一种情况,当try或者catch含有return时,finally依旧会执行。...
2020-05-09 14:22:31
314
原创 spring事务回滚
被拦截的方法需显式抛出异常,并不能经任何处理,这样Aop代理才能捕获到方法的异常,才能进行回滚,默认情况下Aop只捕获RuntimeExcetpion的异常,但可以通过 配置来捕获特定的异常并回滚换句话说在service的方法中不使用try catch 或者在catch中最后加上throw new RuntimeExcetpion(),这样程序异常时才能被Aop捕获进而回滚解决方案:方案1.例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw
2020-05-09 11:14:05
197
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅