- 博客(64)
- 资源 (6)
- 收藏
- 关注
转载 oracle start with connect by prior 使用方法
作用:是根据条件递归查询"树",分为四种使用情况:方式1:start with 子节点ID='...' connect by prior 子节点ID = 父节点IDselect * from mdm_organization o start with o.org_code='10000008' connect by prior o.org_code=o.org_parent_code--查询结果:自己所有的后代节点(包括自己)。方式2:start with 子节点ID='...' connec
2022-02-11 14:06:16
539
原创 mybatis中 <if test=>等于的条件怎么写
经常在mybatis中使用的话 怎么怎么样那么等于怎么写呢?注意 要想使用 == 仅仅需要将双引号和单引号的位置换一下即可!!!
2021-11-22 14:41:10
427
原创 oracle批量插入ORA-00933: SQL 命令未正确结束
oracle 不支持 insert into 表名 (column1,column2,column3)values (value1,value2,value3),((value1,value2,value3))该种格式的批量插入 mysql 支持oracle 写法 如下<insert id="insertDataList" parameterType="java.util.List"> insert into authen_batch_verify_data(
2021-11-11 15:06:30
3666
原创 HttpSecurity常用方法详解
requestMatchers()取得RequestMatcherConfigurer对象并配置允许过滤的路由;如requestMatchers().anyRequest()等同于http.authorizeRequests().anyRequest().access(“permitAll”);如下面两个例子:@Overridepublic void configure(HttpSecurity http) throws Exception { //只允许路由由test开头的需要
2021-10-11 14:58:49
11453
2
原创 按几率产生随机数
按几率产生随机数import org.apache.commons.lang3.RandomUtils;import java.util.ArrayList;import java.util.List;/**按几率产生随机数例如,产生0.1-100的随机数,0.1-1的几率是90%,1-10的几率是9%,10-100的几率是1%*/public class RateRandomNumber {/**产生随机数@param min 最小值@param max 最大值@ret
2021-09-17 17:46:33
548
原创 response header
前端想获取响应头中的信息后端需这样写 response.setHeader("Access-Control-Expose-Headers","Content-Disposition-name"); // 自定义需要暴露的响应头参数 response.setHeader("Content-Disposition-name",URLEncoder.encode( fileName + ".pdf", "UTF-8"));// 自定义参数 对应的value值 response.setHea
2021-09-14 15:43:23
530
转载 redis trib 常用命令
可以看到redis-trib.rb具有以下功能:1、create:创建集群2、check:检查集群3、info:查看集群信息4、fix:修复集群5、reshard:在线迁移slot6、rebalance:平衡集群节点slot数量7、add-node:将新节点加入集群8、del-node:从集群中删除节点9、set-timeout:设置集群节点间心跳连接的超时时间10、call:在集群全部节点上执行命令11、import:将外部redis数据导入集群1、create创建集群creat
2021-09-07 11:26:19
616
原创 CentOS 7 离线安装Redis
非 root用户无法装rpm包rpm包镜像地址CentOS 7.5官方地址:https://gcc.gnu.org/releases.html镜像站点1:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/镜像站点2:https://vault.centos.org/7.5.1804/os/x86_64/Packages/离线安装ruby、rubygems具体资源下载 找下面这个链接Centos7 离线安装 rubygemslinux
2021-09-07 11:24:56
434
转载 linux网络联通命令
linux下网络端口连通性测试命令汇总方法一、telnet法telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法格式:telnet ip port说明:ip:是测试主机的ip地址port:是端口,比如80如果telnet连接不存在的端口,那会如下图所示。如果telnet 连接存在端口会出现如下图所示的内容,下图中以80端口为例。方法二、ssh法SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在linu
2021-06-03 15:01:25
770
转载 HashMap 原理
先了解数组和链表有助于理解hashmap的原理数组特点:增删慢、查询快原因:数组在内存中占用的是一堆连续的存储空间,遍历时数组的首地址是知道的,而且数组中的每一个元素占用的空间大小是一样的,因此就可以通过数组下标确定数组的位置和值。元素地址=(首地址+(元素下标+1)*每个元素占用的空间大小)因为在增加一个元素或者删除某个元素的时候,该元素的位置一旦发生改变就会影响它后面所有元素的位置的变化。所以增删慢链表**特点:**增删快、查询慢**原因:**链表中的各元素存储占用的空间是不连续的, 并
2021-05-27 17:26:11
318
转载 countdownlatch 门栓
概念CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。用法CountDownLatch典型用法1:某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为n new CountDownLatch(n) ,每当一个任务线程执行完毕,就将计数器减1 countdownlatch.countDown(),当计数器的值变为0时,在CountDow
2021-05-23 10:37:50
127
转载 泛型 小结
概念那么参数化类型怎么理解呢?特性写法:demo当实现泛型接口的类,未传入泛型实参时:当实现泛型接口的类,传入泛型实参时:泛型方法的基本介绍泛型方法与可变参数静态方法与泛型如何解决上面的问题?Class<?>和 `Class`区别泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的
2021-05-13 10:24:33
308
原创 kafka 基本理解 消费组
概念:kafka是一个基于zookeeper协调的一个发布订阅模式的消息中间件应用场景:1.日志存放2.消息的缓存(在高并发场景下)3.运营监控,用来记录各种运营监控数据,做数据的统计分析特点1.高并发2.高吞吐量、低延迟(每秒可以处理几万条数据)3.容错性(允许集群中节点失败(若副本数量为n,则允许n-1个节点失败))4.可扩展性(支持kafka集群热扩展)5.持久性(持久化消息到硬盘中)消息组件:broker(一台kafka节点服务器就代表一个broker)producer(消
2021-04-27 15:08:46
592
转载 mybatis 不同数据库厂商切换不同的sql语句
参考一:多数据库支持参考二:demo步骤一// DatabaseIdProvider元素主要是为了支持不同的数据库@Beanpublic DatabaseIdProvider getDatabaseIdProvider() { DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider(); Properties properties = new Properties(); properties.
2021-04-26 11:28:44
636
原创 23种设计模式GOF
设计模式六大原则单一职责原则一个类只负责一个功能领域中的相应职责也就是一个类该干啥就干啥别把不相关的也放到该类中迪米特法则(最少知道原则)概念:一个软件实体应当尽可能少地与其他实体发生相互作用实际上就是 降低类与类之间的耦合 甲乙双方不需要直接接触的话尽量使用第三方去接触甲方和乙方依赖倒转原则高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象,其核心思想是:要面向接口编程,不要面向实现编程。遵循java中多态的特性合成复用原则尽量使用合成/聚合的方式
2021-04-19 01:05:55
208
转载 访问者模式
提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素,而划价人员和药房工作人员就是访问者。访问者模式使得用户可以在不修改现有系统的情况下扩展系统的功能,为这些不同类型的元素增加新的操作。不同的用户可以对该集合对
2021-04-19 00:53:13
155
转载 模板方法模式
概念:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗点就是 说在父类中定义一些通用方法,然后其他一些独特方法交给子类去实现。(前提是该场景适用模板模式)如下:在软件开发中,有时也会遇到类似的情况,某个方法的实现需要多个步骤(类似“请客”),**其中有些步骤是固定的(类似“点单”和“买单”),而有些步骤并不固定,存在可变性(类似“吃东西”)。为了提高代码的复用性和系统的灵活性,可以使用一种称之为模板方法模式的设计模式
2021-04-11 22:17:16
156
转载 策略模式
概念:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。通俗点说就是定义一个抽象类或者接口 。让子类去做实现,不同的类具有不同的功能,但方法名称是一样的// 在使用策略模式时,我们需要将算法从Context类中提取出来,//首先应该创建一个抽象策略类,其典型代码如下所示: abstract class AbstractStrategy { public abstract v
2021-04-11 20:38:39
241
原创 list 递归 tree
package cn.picclife.authen.common.bean.domain;import lombok.Data;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;/** * @Author liyueming * @CreateTime 2021/3/29
2021-04-09 13:05:52
114
转载 桥接模式
概念:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式比如有俩种笔(毛笔和画笔),各有大中小三种型号,给他们搭配6种颜色,画笔的话就需要3*6=18支,而毛笔的话就只需要三种笔和6个画盒一共9个对象。通过分析我们可以得知:在蜡笔中,颜色和型号两个不同的变化维度(即两个不同的变化原因)融合在一起,无论是对颜色进行扩展还是对型号进行扩展都势必会影响另一个维度;但在毛笔中,颜色和型号实现了分离,增加
2021-04-09 13:00:18
115
转载 mybatis动态sql
https://blog.youkuaiyun.com/qq_39623058/article/details/88779242
2021-04-09 10:36:41
82
转载 list循环去重
package other;import java.util.ArrayList;import java.util.HashSet;public class test4 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("aaa"); list.add("aaa"); list.add("bbb");
2021-04-07 13:58:36
313
转载 外观模式
概念:为子系统的一组接口提供一个统一的入口。又称为门面模式外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。包含俩个角色外观角色客户端请求的入口,可以将客户端发起的任意请求转发到对应的子系统中去子系统角色处理由外观类传过来的请求;子系统并不知道外观的存在,对于子系统而言,外观角色仅仅是另外一个客户端而已。在软件系统中可以有一个或者多个子系统角色,每一个子系统可以不是一个单独的类,而是一个类的集合,它实现子系统的功能;每一个子
2021-04-07 00:17:58
90
转载 mybatis多层嵌套查询
基于权限管理时的用户角色权限处理。实体类:1.User public class User{private Integer uid;private String username;private String password;private Set roles=new HashSet<>();2.Role public class Role {private Integer rid;private String rname;private Set modules=
2021-04-06 23:10:49
254
原创 基于redis 和mysql 分布式锁的实现
基于Redis锁实现加锁private static final String LOCK_SUCCESS = OK;private static final String SET_IF_NOT_EXIST = NX;private static final String SET_WITH_EXPIRE_TIME = PX;/*** 尝试获取分布式锁* @param jedis Redis客户端* @param lockKey 锁* @param requestId 请求标识* @para
2021-04-06 14:01:41
148
转载 代理模式
概念:当无法直接访问一个对象或者直接访问一个对象比较困难时就需要运用代理模式目标接口(下面俩个类共同的接口)代理类目标类分类远程代理 :为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是在同一台主机中,也可是在另一台主机中,远程代理又称为大使缓存代理为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。虚拟代理如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。保护代理控制对一个
2021-04-06 00:20:18
113
转载 装饰器模式
概念:(增加对象的一些功能)动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。Component(抽象构件):它是具体构件和抽象装饰类的共同父类ConcreteComponent(具体构件):它是抽象构件类的子类,用于定义具体的构件对象,实现了在抽象构件中声明的方法,装饰器可以给它增加额外的职责(方法)。Decorator(抽象装饰类):它也是抽象构件类的子类,用于给具体构件增加职责,但是具体职责在其子类中实现。它维护一个指向抽象构
2021-04-05 18:48:21
102
转载 适配器模式
概念:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。也就是原有的接口或者类满足不了新的功能需求,但是不能改动原有的代码,只能在原有的基础上进行拓展,而这时候就需要适配器的进入。适配器的种类类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模式中适配器和适配者之间是关联关系,而类适配器模式中适配器和适配者是继承关系对象适配器: 对适配者的引入(包含)
2021-04-05 01:26:14
107
原创 bean 移除 是否线程安全(spring)
在此记录一下哈当在项目中如果涉及到的是单体项目的话,在启动的时候注入bean然后在初始化的时候重新注入bean确实会出发线程安全的问题这时候你需要给其加一个锁。或者是集群也是加一个简单的锁就行(比如 synchronizied)...
2021-04-05 00:44:42
151
转载 原型模式
概念:就是对对象的拷贝浅拷贝:数据类型分为值类型(基本数据类型)和引用类型,值类型包括int、double、byte、boolean、char等简单数据类型深拷贝:引用类型包括类、接口、数组等复杂类型。浅克隆和深克隆的主要区别在于是否支持引用类型的成员变量的复制java自带一种克隆模式 不过那种克隆是属于浅拷贝(实现cloneable接口)当使用java中覆盖object中的clone方法时,其中引用对象复制的是地址(也就是说地址值和复制之前的一样,然后指向同一个对象),而不是new一个新的地址
2021-04-04 00:39:21
191
原创 springboot 重新注入bean
/** * @Author liyueming * @CreateTime 2021/4/2 * @Description */@Datapublic class DataSourceMapBean { private HashMap hashMap;}方式一:属性注入 //注入重新注入datasources 可以通过构造方法 也可以通过新增属性 DefaultListableBeanFactory autowireCapableBeanFa..
2021-04-02 16:31:41
2634
转载 建造者模式
概念:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。也就是说将各个不同的零件拼凑组成一个整体,比如某个工厂造汽车,他不需要去别的工厂去找轮胎,倒车镜,方向盘等等,自己就能造出一辆完整的一个汽车。与抽象工厂的区别就是 抽象工厂造的是不同的产品,而产品的零件组成却不是自己工厂都能完成的比如海尔虽然是造冰箱的但冰箱的门也许是三星造的。还不懂就去专门看看抽象工厂的概念组成:在这样的设计模式中,有以下几个角色:1、Builder:为创建一个产品对象的各个部件指定抽象接口。2、
2021-04-02 00:30:50
83
原创 抽象工厂模式
不喜勿喷 ,望理解概念:是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。意图:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。使用场景:比如海尔厂家不仅卖洗衣机还卖电脑,还有电视。然后三星也卖洗衣机 电脑和电视,也就是所说的产品族和工厂模式相比工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。demointerface Factory {TV get();wash get();computer get();}class haierFa
2021-03-31 23:24:04
79
原创 工厂方法模式
概念:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。场景:接口选择的问题,比如数据库的切换(当不知道选择哪类数据库时,可以交给子类去实现)下面这个demo正好遵循设计模式的开闭原则demo:interface Database{public void run();}class Mysql impliments Database{public void run(){sout(“选用mysql”);}}class Orcle imp
2021-03-31 22:47:44
105
转载 中介者模式
概念:就是相当于一个注册中心,如聊天室中各个用户聊天的消息都可以通过该注册中心将消息发到聊天室。用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。...
2021-03-26 00:11:18
89
转载 springboot 日志配置
https://blog.youkuaiyun.com/flysun3344/article/details/80555746 讲的很不错 通俗易懂**今天来介绍下Spring Boot如何配置日志logback1. 如何引入日志?2.日志输出格式以及输出方式如何配置?3. 代码中如何使用?@[TOC](正文)Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。
2021-03-25 13:19:11
12687
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人