![](https://img-blog.csdnimg.cn/20190903091950198.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA
文章平均质量分 82
Funnee
Java,Javascript,Vue,SpringBoot
展开
-
盘点JAVA中延时任务的几种实现方式
一、挂起线程;二、ScheduleService;三、DelayQueue;四、Redis监听过期key;五、时间轮;六、消息队列原创 2022-07-15 23:28:13 · 3772 阅读 · 1 评论 -
日常开发填坑
设置jpa.hibernate.ddl-auto: update启动服务器自动建表报错More than one table found in namespace (, ) - SchemaExtractionException因为在同一个数据源下存在多个相同表结构的schema。解决办法:指定schemajpa:properties:hibernate:default_schema.........原创 2022-07-10 23:56:30 · 934 阅读 · 0 评论 -
盘点JAVA中五个重定向的方式
日常开发中,时常要用到重定向,有时甚至是同一个请求需要根据不同的业务场景进行不同的重定向,下面总结了5种重定向的方式原创 2022-07-08 23:32:14 · 10217 阅读 · 2 评论 -
解耦的利器:Spring中的发布订阅模式
你是否因为产品经理一个需求变更,要翻出布满灰尘的代码,一点点的进行修改,重新提测呢?你是否因为代码的耦合度太高,改动一块代码,就不得不翻阅关联的所有代码,一步步关联修改?这里推荐一个代码解耦的便捷方式,需求变更,业务逻辑调整,都不用修改核心代码就能完成需求——Spring中的发布订阅模式...原创 2022-07-08 16:06:13 · 845 阅读 · 0 评论 -
盘点IDEA的超实用快捷键以及插件
快捷键用于帮助我们更为快速的编码,阅读代码,而插件是我们编码过程中常常用于辅助开发的。若能熟练使用实用的快捷键,插件,对于解放我们的生产力有着不可比拟的作用。原创 2022-07-05 00:03:24 · 651 阅读 · 0 评论 -
还在为并发编程苦恼吗?轻松掌握volatile和CAS原理
JMM(JAVA Memory model,java内存模型)本身是一种抽象的概念,并不真实存在,描述的是一组规范或规则,通过这组规范定义了程序中各个变量(包括实例字段,静态字段,构成数组对象的元素)的访问方式。Java内存模型是围绕着并发编程中原子性、可见性、有序性这三个特征来建立的。可见性:一个线程对共享变量做了修改之后,其他的线程立即能够看到(感知到)该变量的这种修改(变化)。JMM关于同步的规定:线程解锁前,必须把共享变量的值刷回主内存。线程加锁前,必须把主内存的变量值更新到工作内存(原创 2021-03-07 15:06:05 · 367 阅读 · 3 评论 -
JAVA调用MySQL递归查询相关的存储过程引发的思考
CREATE PROCEDURE `get_child_nodes` (IN `tableName` VARCHAR(100), IN `idKey` VARCHAR(50), IN `pIdKey` VARCHAR(50), IN `pId` VARCHAR(100), IN 'queryLevel' INT, OUT `result` VARCHAR...原创 2019-11-06 23:43:38 · 203 阅读 · 0 评论 -
Spring注解使用(一) -- 前后端交互使用的注解
前后端交互使用的注解1.@RequestParam(value=“XX”, required=true)GET和POST请求传的参数会自动转换赋值到@RequestParam 所注解的变量上;@RequestParam不添加任何参数默认值为变量名, required=true,因此此时前端不传该变量,会报400错误:HTTP Status 400 - Required String par...原创 2019-08-01 00:25:46 · 1686 阅读 · 0 评论 -
Spring中的拦截器、过滤器与切面
|类别|拦截器| 过滤器 | 切面|原创 2019-08-05 16:54:55 · 1211 阅读 · 0 评论 -
JAVA设计模式(十五) -- 观察者模式与发布-订阅模式
观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF 给观察者模式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。(一)观察者模式的组成部分1) 抽象目标角色(Subject):目标角色知道它的观察者,可以有任意多个观察者观察同一个目标。并且提供注册和删除观察者对象的接口。目标角色往往由...原创 2019-08-02 18:23:42 · 223 阅读 · 0 评论 -
何为Restful?
概念RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力,更好地使用现有Web标准中的一些准则和约束。常见的HTTP状态码200(“OK”):响应成功。301(“Moved Permanently”)...原创 2019-07-29 00:47:56 · 188 阅读 · 0 评论 -
JAVA设计模式(十七) -- 状态模式
一、概念状态模式:允许一个对象在其内部状态改变时改变它的行为。二、组成结构1 ) 使用环境(Context)角色: 客户程序是通过它来满足自己的需求。它定义了客户程序需要的接口;并且维护一个具体状态角色的实例,这个实例来决定当前的状态。2 ) 状态(State)角色: 定义一个接口以封装与使用环境角色的一个特定状态相关的行为。3 ) 具体状态(Concrete State)角色: 实现状...原创 2019-08-26 11:45:28 · 121 阅读 · 0 评论 -
JAVA设计模式(十四) -- 模版方法模式
模板方法(Template Method)模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这里的算法的结构,可以理解为你根据需求设计出来的业务流程。特定的步骤就是指那些可能在内容上存在变数的环节。模版方法模式的结构:1) 抽象类(Abstract Class):定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还...原创 2019-07-19 11:47:26 · 139 阅读 · 0 评论 -
Spring注解使用(二) -- 自定义注解及扩展应用
自定义注解及扩展应用概念:元注解java.lang.annotation 提供了四种元注解,即专门注解其他的注解(在自定义注解的时候,需要使用到元注解):@Documented – 注解是否将包含在JavaDoc中@Retention – 什么时候使用该注解@Target – 注解用于什么地方@Inherited – 是否允许子类继承该注解1.)@Retention – 定义该...原创 2019-07-27 11:50:16 · 977 阅读 · 0 评论 -
JAVA8 使用心得(四)--default关键字
JAVA8之前,接口是不能有方法体的。在JAVA8,使用default关键字,可以实现在接口中编写方法体。default方法是在java8中引入的关键字,作用为Virtual extension methods(虚拟扩展方法)。是指,在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。原创 2019-08-01 17:12:36 · 292 阅读 · 0 评论 -
JAVA8 使用心得(五)--排序
stream().sorted();Collections.sort ();集合自带的.sort方法原创 2019-08-02 10:38:12 · 313 阅读 · 0 评论 -
泛型详解及其应用
泛型(Generics,通用的类型)的本质是为了参数化类型(通过泛型指定的不同类型来控制形参具体限制的类型)。Java中的泛型,只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦除,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。原创 2019-08-14 17:50:38 · 1117 阅读 · 0 评论 -
JAVA设计模式(十六) -- 责任链模式
一、概念责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。二、责任链模式的组成结构抽象处理者角色(Handler): 它定义了一个处理请求的接口。当然对于链子的不同实现,也可以在这个角色中实现后继链。具体处理者角色(Concrete Handler): 实现抽象角色中定义的接口,并处理...原创 2019-08-23 17:46:23 · 160 阅读 · 0 评论 -
Swagger2的使用
Swagger2 可以动态生成Api接口文档,并且提供测试接口,降低沟通成本,促进项目高效开发。原创 2019-08-31 08:09:46 · 3492 阅读 · 0 评论 -
WireMock使用总结
一、WireMock 服务端二、引入WireMock依赖三、WireMock 客户端(为请求伪造响应内容)原创 2019-08-31 13:30:52 · 2506 阅读 · 0 评论 -
SpringCloud使用总结
服务注册,服务发现(如eureka,consul);服务间的相互调用(如feign,ribbon);原创 2019-06-13 23:14:10 · 301 阅读 · 0 评论 -
JAVA设计模式(九) -- 适配器模式
将一个类的接口转换成客户希望的另外一个接口。适配器模式(Adapter)使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。GOF将适配器模式分为类适配器模式和对象适配器模式。区别仅在于适配器角色对于被适配角色的适配是通过继承完成的还是通过组合来完成的。GOF提倡使用组合来代替继承。(一)适配器模式的组成结构1) 目标(Target)角色:定义 Client 使用的接口。2) 被...原创 2019-07-12 15:56:00 · 110 阅读 · 0 评论 -
JAVA设计模式(十三) -- 享元模式
享元模式英文称为“Flyweight Pattern”,又译为羽量级模式或者蝇量级模式。享元模式的定义为:采用一个共享类来避免大量拥有相同内容的“小类”的开销。这种开销中最常见、直观的影响就是增加了内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象,减少其带来的开销。事物之间都是不同的,但是又存在一定的共性,如果只有完全相同的事物才能共享,那么享元模式可以说就是不可行的;因此我们应该尽量...原创 2019-07-19 01:24:46 · 135 阅读 · 0 评论 -
JAVA设计模式(八) -- 原型模式
原型模式属于对象创建模式,GOF 给它的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。(一)概念梳理浅复制与深复制概念1.浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。2.深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值...原创 2019-07-12 11:52:40 · 96 阅读 · 0 评论 -
Spring AOP--使用总结
1.Advice(通知、切面): 某个连接点所采用的处理逻辑,也就是向连接点注入的代码, AOP在特定的切入点上执行的增强处理。2.JointPoint(连接点): 程序运行中的某个阶段点,比如方法的调用、异常的抛出等.3.Pointcut(切入点):JoinPoint的集合,是程序中需要注入Advice的位置的集合,指明Advice要在什么样的条件下才能被触发,在程序中主要体现为书写切入点表达式。4.@Aspect(切面):通常是一个类的注解,里面可以定义切入点和通知原创 2019-06-13 00:00:09 · 188 阅读 · 0 评论 -
JAVA设计模式(一) -- JAVA中的设计原则与设计模式类型概括
设计模式类型概括六大设计原则原创 2019-07-02 17:52:22 · 238 阅读 · 0 评论 -
递归与栈
递归即方法调用自身。递归可以用栈加循环实现转换。递归增强了代码的可读性,但是牺牲了内存消耗。递归写法:/*** 将树状结构组织机构数据放入准备数据中* @param dto当前遍历的组织机构* @param allOrganizationDtos 所有组织机构串* @param preparedData 组织机构准备数据串*/private void putDataTreeInt...原创 2019-05-31 17:33:24 · 1683 阅读 · 0 评论 -
应用换肤-总结
(一)存储策略<1>数据库<2>读写配置<3>session(二)后台逻辑实现<1>ThymeLeaf是怎么实现的<2>JSP是怎么实现的(三)前端实现其实就是切换css对应皮肤所在文件夹的策略...原创 2019-05-20 16:19:31 · 267 阅读 · 0 评论 -
IO流操作总结
前言流的概念,文件读写与数据库读写的对比(一)读写文件API(包括读写json)1.FileUtils2.原生IO流(二)大学时期流操作总结原创 2019-05-20 15:47:26 · 203 阅读 · 0 评论 -
JAVA8 使用心得(三)--optional
APIOptional实例原创 2019-05-27 17:26:31 · 157 阅读 · 0 评论 -
补充知识:断言
断言:也就是所谓的assertion,是jdk1.4后加入的新功能。它主要使用在代码开发和测试时期,用于对某些关键数据的判断,如果这个关键数据不是你程序所预期的数据,程序就提出警告或退出。当软件正式发布后,可以取消断言部分的代码。java中使用assert作为断言的一个关键字,这就可以看出java对断言还是很重视的,因为如果不是很重要的话,直接开发个类就可以了,没必要新定义一个关键字。语法1...原创 2019-01-30 10:28:38 · 181 阅读 · 0 评论 -
ElasticSearch整合springboot使用总结
1原创 2019-02-14 15:31:43 · 461 阅读 · 2 评论 -
Java和Javascript中的值传递与引用传递
(一)Java值传递引用传递(二)Javascript值传递引用传递原创 2019-06-04 00:42:18 · 1014 阅读 · 0 评论 -
JAVA设计模式(十二) -- 桥梁模式
GOF 在《设计模式》中给桥梁模式的定义为:将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里的抽象部分和实现部分不是我们通常认为的父类与子类、接口与实现类的关系,而是组合关系。也就是说,实现部分是被抽象部分调用,以用来完成(实现)抽象部分的功能。桥梁模式由如下四种角色组成:1) 抽象角色(Abstraction ):它定义了抽象类的接口而且维护着一个指向实现(Implementor)...原创 2019-07-18 11:28:00 · 156 阅读 · 0 评论 -
JAVA设计模式(七) -- 代理模式
代理模式的定义为:为其他对象提供一种代理以控制对这个对象的访问。说白了就是,在一些情况下客户不想或者不能直接引用一个对象,而代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的内容和服务或者增添客户需要的额外服务。根据GOF对代理模式的分类,常见的代理模式如下:1 ) 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。比如:你可以将一个在世界某个角落一...原创 2019-07-11 11:05:03 · 186 阅读 · 0 评论 -
JAVA设计模式(六) -- 组合模式
组合(Composite)模式的其它翻译名称也很多,比如合成模式、树模式等等。GOF给出的定义是:将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。...原创 2019-07-11 08:48:47 · 386 阅读 · 0 评论 -
JAVA设计模式(五) -- 装饰模式
装饰模式(Decorator)也叫包装器模式(Wrapper)。GOF 在《设计模式》一书中给出的定义为:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。...原创 2019-07-11 08:48:36 · 148 阅读 · 0 评论 -
JAVA设计模式(十一) -- 门面模式
门面模式(facade)又称外观模式。GOF在《设计模式》一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。...原创 2019-07-13 14:09:28 · 151 阅读 · 0 评论 -
JAVA设计模式(十) -- 建造者模式
建造者模式的定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。简言之,将构造复杂对象的过程和组成对象的部件解耦。当要生成的产品有复杂的内部结构——比如由多个对象组成;而系统中对此产品的需求将来可能要改变产品对象的内部结构的构成,比如说产品的一些属性现在由一个小对象组 成,而更改后的型号可能需要 N个小对象组成;而且不能将产品的内部构造完全暴露给客 户程序,一是为了...原创 2019-07-13 09:55:22 · 267 阅读 · 0 评论 -
JAVA设计模式(三) -- 工厂模式
(一)简单工厂模式简单工厂模式又称静态工厂方法模式。它存在的目的很简单:定义一个用于创建对象的接口。组成结构:1) 工厂类角色(Creator):这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。2) 抽象产品角色(Product):它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。3) 具体产品角色(ConcreteProd...原创 2019-07-08 15:03:53 · 212 阅读 · 0 评论