- 博客(46)
- 收藏
- 关注
原创 java stream 简单使用
java stream流进行内存分页stream 进行内存分页stream 处理null字段的排序stream 过滤出不存在另一个list里面的数据stream 过滤出存在另一个list里面的数据stream 删除Map中值为空的数据stream 进行内存分页int pageSize=templateCompanyListRequest.getPageSize();int pageNum=templateCompanyListRequest.getPageNum();int skipNum = pa
2022-04-13 16:48:27 573
原创 mybatis二级缓存
mybatis二级缓存Mybatis中一级缓存 和 二级缓存的区别一级缓存(本地缓存)二级缓存(全局缓存)二级缓存开启mybatis解读总结Mybatis中一级缓存 和 二级缓存的区别两者区别:一级缓存的作用域是在SqlSession中,二级缓存的作用域是针对mapper做缓存。一级缓存(本地缓存)一级缓存是框架默认为我们开启的,我们不需要做任何配置。例如我们首次查询id为1的用户,mybatis会将该用户的对象存储在一级缓存中;如果在此中间 sqlSession 执行了commit操作(增删改
2022-04-13 15:44:45 4495
原创 Mybatis使用
Mybatis使用collection标签代码mappermapper.xmlforeach标签delete批量删除代码mappermapper.xmlinsert批量添加代码mappermapper.xmlselect代码mapper.xmlif 标签代码mapper.xmlwhere 标签代码mapper.xmltrim 标签代码mapper.xmlset 标签代码mapper.xmlbind 标签代码mapper.xmlchoose、when、otherwise 标签代码mapper.xmlcoll
2022-04-13 15:06:45 1065
原创 RestTemplate 的 exchange 接口请求
RestTemplate 的 exchange 接口请求get 请求post 请求get 请求String urlStr = "url";UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(urlStr) .queryParam("参数1", "....") .queryParam("参数2", "....");HttpHeaders headers = new
2022-01-19 11:22:53 3259
原创 字符串操作
字符串按照每两位插入一个空格 public static String toStr(String str){ String regex = "(.{2})"; str = str.replaceAll(regex,"$1 "); return str; }
2021-11-25 09:06:56 422
原创 java -MD5加密
java -MD5加密 public static String md5(String plainText) { if (null == plainText) { plainText = ""; } String mD5Str = null; try { // JDK 支持以下6种消息摘要算法,不区分大小写 // md5,sha(sha-1),md2,sha-256
2021-11-24 18:08:27 133
原创 springboot数据库连接
springboot2.3.1与springboot1.5连接数据库的差别1.Spring Boot 2.3.1与Spring Boot 1.5 默认数据源1.springboot2.3.1默认数据源2.HikariDataSource优点2.springboot连接数据库配置1.springboot连接数据库配置文件1.Spring Boot 2.3.1与Spring Boot 1.5 默认数据源1.springboot2.3.1默认数据源Spring Boot 2.3.1 默认使用 com.zax
2021-11-16 14:31:08 1261
原创 Springboot声明式事务和编程式事务
声明式事务–@Transactional声明式事务一般使用@Transactional注解,标注该注解的方法具有事务能力,出现异常会进行回滚。但是,使用@Transactional注解事务粒度比较大,有时候可能不适合自己的业务场景,我们在不需要对整个方法进行事务管理,而是对指定的数据库操作代码进行添加事务,那么我们需要使用编程式事务管理编程式事务–TransactionTemplateTransactionTemplate 源码编程式事务一般使用 TransactionTemplate ,还可以
2021-11-16 14:05:52 749
原创 linux系统将zookeeper服务设置为开机自启
首先进入开机启动的目录(# cd /etc/rc.d/init.d)创建zookeeper文件夹touch zookeeper将zookeeper文件设置为可执行文件chmod +x zookeeper编辑zookeeper文件vim zookeeper添加一下内容#!/bin/bash#chkconfig:2345 20 90#description:zookeeper#processname:zookeeper# export JAVA_HOME=/usr/java/jdk
2021-11-11 20:50:50 2547
原创 java8时间日期
java8时间日期LocalDate / LocalTime / LocalDateTimeZonedDateTime和OffsetDateTimeLocalDate / LocalTime / LocalDateTimeLocalDate ,日期的API,表示没有时间的日期格式LocalTime ,表示不带日期的时间格式LocalDateTime ,表示时间日期格式ZonedDateTime和OffsetDateTimeZonedDateTime:表示区域时间日期OffsetDateTime
2021-09-27 18:02:14 382
原创 java-RSA数据加密
java-RSA数据加密生成RSA公钥和私钥下载openssl(或者在线生成)生成RSA公钥和私钥下载openssl(或者在线生成)在线生成非对称加密公钥私钥对:选择PKCS8格式,net,ios中RSA加解密使用的是PKCS1,而java使用的是PKCS8。按1024取模(通常都是1024),PKCS1格式的私钥长度应该是812,而PKCS8的格式的密钥长度为861。将生成的公钥和秘钥复制到文件中,将文件后缀改为.pem,或者将...
2021-09-27 13:40:38 1286
原创 数组转为集合的方法解析
数组转为集合的方法Arrays.asList()方法转为集合asList源码jdk1.8中,将数组转为stream流,使用collect(Collectors.toList())toList源码总结Arrays.asList()方法转为集合 @Test void testAsList() { String[] str = new String[] { "qqq", "kkk" }; List list = Arrays.asList(str); l
2021-07-22 10:43:51 1595
原创 集合遍历时删除元素
集合遍历时删除元素二级目录使用迭代器的remove方法倒序遍历删除二级目录使用迭代器的remove方法使用迭代器的remove方法,而不是集合的remove方法。这是因为,迭代器的remove方法会修改expectedModCount,从而使modCount与之相等public void remove() { if (lastRet < 0) throw new IllegalStateException(); c
2021-07-12 11:30:25 1063
原创 Spring依赖注入原理(DI)
Spring依赖注入原理(DI)DI: 依赖注入第一种注入方式: 使用set方法进行注入(setter注入)第二种注入方式: 使用有参构造进行注入(构造器注入)第三种注入方式: p名称空间注入 (了解)DI: 依赖注入第一种注入方式: 使用set方法进行注入(setter注入)(1)创建类, 定义属性和对应的set方法/** * 演示使用setter方法进行注入属性 */public class Book { //创建属性 private String bname; p
2021-07-12 09:48:41 557
原创 HashSet 底层数据结构
HashSet 底层数据结构HashSet源码HashSet的 add(E e) 方法HashSet 底层数据结构是HashMap ,无参构造方法会创建一个初始容量为16,加载因子为0.75的HashMapHashSet源码public class HashSet extends AbstractSet implements Set, Cloneable,Serializable { private transient HashMap map;
2021-07-10 12:01:11 3883
原创 HashMap底层数据结构
HashMap底层数据结构HashMap的put原理HashMap代码扰动函数:putVal方法:HashMap的put原理JDK1.8中,HashMap采用位桶+链表+红黑树实现,当map集合中总数量达到64个并且链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。HashMap代码public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}扰动函数:static
2021-07-10 11:51:48 195
原创 HashCode特性与作用
HashCode特性与作用HashCode特性HashCode作用HashCode特性(1)HashCode的存在主要是用于快速查找,如GC查找要回收的对象,Hashtable,HashMap等,HashCode经常用于确定对象的存储地址;(2)如果两个对象相同,hashcode一定相同,并且equals方法一定返回true;(3)两个对象的HashCode相同,并不一定表示两个对象就相同,即equals()不一定为true,只能说明这两个对象在一个散列存储结构中。(4)如果对象的equals方法
2021-07-10 11:27:50 248
原创 map遍历的四种方式
map遍历的四种方式entrySet遍历keySet或values遍历Iterator遍历forEach遍历(java8)entrySet遍历Map<Employee.Status, List<Employee>> group = emps.stream() .collect(Collectors.groupingBy(Employee::getStatus));// 1. entrySet遍历,在键和值都需要时使用(最常用) f
2021-03-25 21:18:54 227
原创 Springboot+Poi实现excel导入导出+swagger2进行测试
Springboot+Poi实现excel导入导出+swagger2进行测试pom.xml文件配置文件--application.yml配置swagger2--SwaggerConfig导入导出实体类--ExcelData导入导出工具类-- ExcelUtil导入导出方法解释导入导出service层-- 对商城菜单栏表进行导入导出导入导出控制层--ExcelControllerSwagger测试导入导出文件pom.xml文件<dependencies> <depende
2021-03-15 14:57:12 1794
原创 docker容器+fastdfs搭建文件服务器--springboot整合文件服务器实现文件上传, 下载, 删除
docker容器+fastdfs搭建文件服务器Linux安装dockerdocker拉取fastdfs镜像构建容器构建tracker容器(跟踪服务器,起到调度的作用)构建storage容器(存储服务器,提供容量和备份服务)配置storage端口和Nginx端口(尽量一致)配置storage端口配置nginx端口关闭防火墙(最好是暴露端口)Linux安装dockerdocker拉取fastdfs镜像该镜像已经整合了nginx构建容器构建tracker容器(跟踪服务器,起到调度的作用)创建挂载目
2021-03-11 17:34:43 1230 3
原创 数据库的内,外连接方式
数据库连接方式数据表自然连接(natural join)内连接(inner join)左外连接(left outer join)右外连接(rignt outer join)全外连接(full join)数据表自然连接(natural join)自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。(输出的是c列相同的数据)sql语句:Select …… from 表1 natural jin 表2结果:内连接(inne
2021-02-01 16:15:18 3454 1
原创 SpringBoot设置gzip压缩选项--提高数据传输速度
SpringBoot设置gzip压缩选项--提高数据传输速度application.yml配置application.yml配置server: compression: enabled: true mime-types : text/html,text/xml,text/plain,text/css,application/javascript将数据压缩成上述的文本格式, 压缩后数据传输速度大大增加, 提高接口速度...
2021-01-21 09:50:20 837
原创 注册中心特性对比
注册中心特性对比对比图Nacos全景图Nacos支持CP和AP模式的切换对比图Nacos全景图Nacos支持CP和AP模式的切换用PUT请求开启Nacos服务并且指出Nacos的模式curl -X PUT ‘$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP’...
2021-01-07 18:20:39 228
原创 SpringCloud-Stream
SpringCloud-Stream标准流程套路创建生产者module生产者端pom文件消息驱动生产者配置文件主启动类service业务类controller层自测创建消费者module消息消费端pom文件消息消费端的配置文件主启动类controller业务类测试消息重复消费按照8802创建出8803问题如何解决重复消费问题设置分组, 在后面添加group, 8803同下设置相同分组即可解决重复消费消息持久化配置了group属性会自动实现消息持久化标准流程套路创建生产者modulecloud-st
2021-01-07 11:32:24 582
原创 IDEA 快捷键
IDEA 快捷键Ctrl+r 查找替换Ctrl+n Search Everywhere(全局查找类,接口等等)Ctrl+f 查找关键字Ctrl+l 直接向下查找上次查找过的关键字Ctrl+g 光标跳到哪一行哪个字Ctrl+h 查看类层级Ctrl+e 查看最近使用过的文件Ctrl+t 拉取代码Ctrl+k 提交代码到本地git仓库Ctrl+Shift+k 将本地git仓库代码推送到git仓库Ctrl+j 插入代码模板main函数for循环Ctrl+Alt+J 用动态模板环绕Alt+Insert 代码生成(g
2021-01-06 10:13:23 101 1
原创 springboot排除自动配置(如果你引入的依赖包含jdbc, druid连接池, mybatis依赖,需要排除三个 )
springboot排除自动配置[如果你引入的依赖包含jdbc, druid连接池, mybatis依赖,需要排除三个] 1. 在主启动类添加 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class, MybatisAutoConfiguration.class}) 注解2.使用 @EnableAutoConfiguration(exclude = {Dat
2020-12-30 12:39:04 6185
原创 springboot,springcloud,springcloudAlibaba版本选择
springboot,springcloud,springcloudAlibaba版本选择版本说明
2020-12-28 18:12:15 220
原创 centos7设置静态ip
centos7设置静态ip第一步 查看IP(#ip addr)第二步 查看网关(#netstat -rn)第三步 编辑 #vim /etc/sysconfig/network-scripts/ifcfg-ens33第四步 重启网卡服务(#service network restart)另, 进入#vim /etc/resolv.conf查看DNS第一步 查看IP(#ip addr)或者#ifconfig查看ip与子网掩码第二步 查看网关(#netstat -rn)第三步 编辑 #vim /e
2020-12-07 12:55:55 76
原创 线程创建的方式
线程创建的方式Java 提供了三种创建线程的方法通过继承Thread类通过实现 Runnable 接口来创建线程通过Callable和Future创建线程三种方式的优缺点Java 提供了三种创建线程的方法通过实现Runnable接口通过继承Thread接口通过Callable和Future创建线程通过继承Thread类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建
2020-09-29 17:31:53 61
原创 JAVA中创建对象的方式
JAVA中创建对象的方式1.new2.使用Class类的newInstance方法3.使用Constructor类的newInstance方法4.使用clone方法5.使用反序列化Java中有5种创建对象的方式1.newPerson person=new Person2.使用Class类的newInstance方法Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee").newInst
2020-09-29 16:53:20 57
原创 GC的4个算法
GC的4个算法分代垃圾回收机制复制算法标记清除标记整理(压缩)引用计数法分代垃圾回收机制不同的对象生命周期是不一样的,不同的生命周期的对象可以采取不同的回收算法, 以提高回收效率, 我们将对象分为三种状态: 年轻代, 年老代, 持久代. JVM将堆内存划分为Eden, Survivor, Tenured/Old空间复制算法年轻代(Eden)中采用的Minor GC 这种GC算法采用的复制算法, 所有新生的对象首先放在Eden区, 年轻代的目标就是尽可能快速的收集那些生命周期短的那些对象, Minor
2020-09-29 11:23:24 357
原创 docker中mysql连接Navicat
docker中mysql连接Navicatdocker安装mysql启动mysql进入docker中的mysql进行远程配置docker安装mysqldocker pull mysql:8.0启动mysqldocker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name=mysql01 mysq
2020-09-22 10:22:44 1091
原创 docker安装Elasticsearch
docker安装Elasticsearch首先启动docker下载Elasticsearch查看镜像启动docker首先启动dockerdocker启动systemctl start docker (centos7.x)service docker start(centos6.x)重启docker服务systemctl restart dockersudo service docker restart关闭dockersystemctl stop dockerservice docker
2020-09-22 09:22:52 70
原创 HTTP状态码
HTTP状态码HTTP状态码分类分类-----------------分类描述1** -----信息,服务器收到请求,需要请求者继续执行操作2** -----成功,操作被成功接收并处理3** -----重定向,需要进一步的操作以完成请求4** -----客户端错误,请求包含语法错误或无法完成请求5** -----服务器错误,服务器在处理请求的过程中发生了错误...
2020-09-15 16:44:36 42
原创 抽象类
抽象类为什么需要抽象类?如何定义抽象类要点为什么需要抽象类?如何定义抽象类是一种模板模式, 抽象类为子类提供了一个通用模板, 子类可以在这个模板基础上进行扩展通过抽象类, 可以避免子类设计的随意性要点√ 有抽象方法的类只能定义抽象类√ 抽象类不能实例化, 即不能用new来实例化抽象类√ 抽象类可以包含属性, 方法, 构造方法. 但是构造方法不能用来new实例, 只能用来被子类调用√ 抽象类只能用来继承√ 抽象方法必须被子类实现...
2020-09-15 15:05:32 70
原创 final修饰变量, 方法和类
final修饰变量, 方法和类final修饰变量final修饰方法final修饰的类final修饰变量final修饰的变量不能改变,一旦赋了初值,就不能被重新赋值final修饰方法final修饰的方法不被子类重写, 但是可以被重载final修饰的类final修饰的类不能被子类继承...
2020-09-15 11:47:38 143
原创 ==与equals
==与equals==equals=="=="代表比较双方是否相同,如果是基本类型则表示值是否相同, 如果是引用类型则表示地址是否相同即表示是否是同一个对象equals判断对象内容是否相同(重写之后)equals方法内部与"=="是相同的, 重写之后可以用于判断对象内容是否相同...
2020-09-15 11:33:44 49
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人