
Java
文章平均质量分 59
渊蓝
这个作者很懒,什么都没留下…
展开
-
解决Jpa中实体数据自动变更问题
最近发现个问题,使用jpa对实体进行操作时,即使未调用保存或更新方法,对于实体的相关设值也会自动更新到数据库中。原创 2023-02-20 21:51:44 · 3490 阅读 · 0 评论 -
解决Fastjson的下划线与大小写映射问题
主要解决infoId、infoid、info_id的取值映射问题原创 2022-12-03 12:05:21 · 2171 阅读 · 0 评论 -
设计模式:模板方法模式
—《Head First设计模式(中文版)》模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。(个人理解:其实就是将已经确定要执行的相关步骤提前写好在方法中,可不具体实现,但是提前准备好位置,方便后续扩展完善)举例: 购物可以简单分为三个步骤:1.挑选好自己需要的商品;2.放入购物车;3.结账离开,但是去不同的市场挑选的商品种类是不同的,此时就可以先定义好去市场购物的相关操作,选择商品这个操作等到具体到哪.原创 2021-11-01 22:41:35 · 115 阅读 · 0 评论 -
设计模式:外观模式
—《Head First设计模式(中文版)》外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。(个人看法:其实就是将一堆细小的操作通过一个大的方法包装起来,方便其他人进行调用)举例:吃饭可以简单分为洗手、拿碗、盛饭、夹菜、吃、洗碗六个步骤,每个步骤可以单独封装成一个方法,但为了方便调用,我们还可以将吃饭封装成一个方法,里面包含这六个步骤小方法即完成了吃饭的操作。package cn.shentianlan.studytest.designmode.原创 2021-11-01 22:40:40 · 79 阅读 · 0 评论 -
设计模式:适配器模式
—《Head First设计模式(中文版)》适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。对象适配器:Client(客户)只能看到目标接口,由Adapter(适配器)实现目标接口,Adapter(适配器)与Adaptee(被适配者)组合,所有的请求都委托给被适配者。类适配器:类适配器不是使用组合来适配被适配者,而是继承被适配者和目标类(Java中普通类无法实现多继承的)类适配器和对象适配器唯一的差别就是类适配器同时继承了Target和Ad.原创 2021-11-01 22:39:34 · 95 阅读 · 0 评论 -
设计模式:命令模式
—《Head First设计模式(中文版)》命令模式将"请求"封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 结构如下所示Client (客户)负责创建ConcreteCommand(具体命令)Invoker(调用者)持有一个命令对象,并在某个时间点调用命令对象的execute()方法,将请求具体实现Command为所有命令声明一个接口,调用命令对象的的execute()方法,就可以让Receiver(接收者)进行相关的动作。这个接口也具备一个u.原创 2021-10-31 00:29:00 · 93 阅读 · 0 评论 -
设计模式:单例模式
–《菜鸟教程:单例模式》单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建普通单例模式package cn.shentianlan.studytest.designmode.singleton;/** * @author 渊蓝 * @version 1.0 * @description 普通单例模式,.原创 2021-10-24 22:45:32 · 141 阅读 · 0 评论 -
设计模式:工厂模式
–《维基百科》工厂方法模式(英語:Factory method pattern)是一种实现了"工厂"概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是"定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。"[1]创建一个对象常常需要复杂的过程,所以不适合包含在一个复合对象中。创建对象可能会导致大量的重复代码,可能会需要复合对象访问不到的信息,也可能提供不了足够级别的抽象,还可能并不.原创 2021-10-24 13:35:09 · 117 阅读 · 0 评论 -
设计模式:装饰者模式
1 简介–《百度百科 装饰模式》3种设计模式之一,英文叫Decorator Pattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2 具体操作及实现举例:蛋糕的制作抽象构件角色:Dessert 甜点package cn.shentianlan.studytest.designmode.decorator.example;/** * @author 渊蓝 * @version原创 2021-10-18 22:39:15 · 143 阅读 · 0 评论 -
设计模式:观察者模式
1.简介–《百度百科 观察者模式》观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。观察者模式不仅被广泛应用于软件界面元素之间的交互,在业务对象之间的交互、权限管理等方面也有广泛的应用。 [1]观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业原创 2021-10-12 23:45:20 · 162 阅读 · 0 评论 -
设计模式:策略模式
简介策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 --《Head First设计模式(中文版)》策略模式是指有一定行动内容的相对稳定的策略名称。策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。策略模式:定义了一组算法(业务规则);原创 2021-10-11 21:03:19 · 96 阅读 · 0 评论 -
对于阿里巴巴《Java开发手册》中switch 括号内的变量类型为 String 并且此变量为外部参数时,必须先进行 null判断的理解
【强制】当 switch 括号内的变量类型为 String 并且此变量为外部参数时,必须先进行 null 判断。反例:如下的代码输出是什么?package cn.shentianlan.studytest.common;public class SwitchString { public static void main(String[] args) { method(null); } public static void method(String param) .原创 2021-08-14 02:59:29 · 671 阅读 · 0 评论 -
对于Arrays.asList()的理解
【强制】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。String[] str = new String[] { “yang”, “hao” };List list...原创 2021-08-10 22:32:46 · 321 阅读 · 0 评论 -
对于Collectors.toMap(Pair::getKey, Pair::getValue, (v1, v2) -> v2)的理解
package cn.shentianlan.studytest.common;import javafx.util.Pair;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.function.BinaryOperator;import java.util.function.Function;import java原创 2021-08-10 21:49:10 · 1271 阅读 · 0 评论 -
注解和反射
一、注解的基本介绍二、内置注解三、元注解四、自定义注解五、反射5.1 静态语言和动态语言5.2 Java Reflection5.3 Class类5.4 Java 内存分析5.5 类的加载过程5.6 类的加载与ClassLoader的理解5.7 什么时候会发生类的初始化5.8 类加载器的作用5.9 获取类的完整结构5.10 动态创建对象执行方法5.11 通过反射操作泛型5.12 通过反射获取注解信息一、注解的基本介绍Annotation 是从JDK 5.0开始引入的新技术Annotation的作用.原创 2021-08-07 09:54:16 · 123 阅读 · 0 评论 -
JUC编程
一、基础知识介绍二、线程状态三、Lock锁3.1 Lock锁相关介绍3.2 Synchronized和Lock的区别3.3 生产者和消费者问题3.4 Lock版的生产者和消费者问题(Condition)四、线程八锁五、集合类不安全5.1 List集合5.2 Set集合5.3 Map集合六、Callable集合七、常用的辅助类7.1 CountDownLatch7.2 CyclicBarrier7.3 Semaphor八、读写锁(ReadWriteLock)九、阻塞队列十、同步队列(SynchronousQ.原创 2021-08-01 05:18:57 · 1008 阅读 · 0 评论 -
并发编程学习笔记
并发编程学习笔记前言 此为我在B站看传智播客的并发编程视频教程的学习笔记,个人目前感觉还不错,点此可前往观看1.进程和线程1.1 进程和线程进程 进程是用来加载指令、管理内存、管理IO的,在Java中,进程是资源分配的最小单位;在windows中,进程是作为线程的容器存在的,一个进程包含多个线程。线程 线程可以看成一个指令流,将指令流中的一条条指令以一定的顺序交给CPU执行,在Java中,线程是最小调度单位二者对比进程基本上相互独立的,线程存在于进程之内,是进原创 2021-01-31 15:01:09 · 263 阅读 · 1 评论 -
Java多线程基础
文章目录一、基础概念介绍二、线程的创建2.1 继承Thread类2.2 实现Runnable接口2.3 实现Callable接口2.4 总结三、线程状态四、线程方法五、停止线程六、线程休眠七、线程礼让八、Join九、线程状态十、线程优先级十一、守护线程十二、线程同步机制十三、同步方法十四、同步块十五、死锁十六、Lock(锁)十七、synchronized与Lock的对比十八、线程通信十九、线程池简介使用线程池一、基础概念介绍程序:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念原创 2021-06-30 00:47:11 · 224 阅读 · 0 评论 -
Lamba表达式
Lamba表达式(JDK1.8之后才有的)任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口public interface Runnable{ public abstract void run();}对于函数式接口,可以通过Lamda表达式来创建该接口的对象Lambda 规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法,jdk 8 中有另一个新特性:default, 被 default 修饰的方法会有默认实现,不是必须被实现的方法,所以不影响原创 2021-06-22 01:09:20 · 170 阅读 · 0 评论