- 博客(31)
- 收藏
- 关注
原创 java中synchronized锁住的是什么?
synchronized关键字常用于静态方法、非静态方法、同步代码块,都知道它是加锁操作,那它锁住的到底是什么?
2022-03-20 11:08:41 638
原创 RabbitMQ的交换机类型和工作模式
RabbitMQ的交换机类型:直连交换机,主题交换机,扇形交换机,简单模式。RabbitMQ的工作模式:简单模式,工作队列,订阅模式,路由模式,通配符模式。
2022-03-15 22:38:17 3447
原创 单点登录解决方案
1、同一顶级域名的下的应用将cookie的path和domain属性设置为顶级域名,这样服务器在访问这个顶级域名下的各种二级域名时都会带上这个cookie。在浏览器发起一个请求,这个请求会带上哪些cookie是由浏览器控制的,浏览器根据cookie的path和domain属性带上相应的Cookie。所以,访问...baidu.com时不会带上...google.com域名的Cookie,同理,访问...google.com时也不会带上...baidu.com域名的Cookie。2、认证中心所有
2022-03-15 20:06:54 751
原创 HashMap解读
HashMap解读jdk1.8的HashMap相比JDK1.7,最主要的变化就是引入了红黑树。HashMap底层是Entry<K,V>数组,数组的每个节点上可能存放的是一个单向链表,当单向链表的数据量达到8时,HashMap底层会将单向链表转成红黑树的结构,以避免在链表过长的情况下影响查询效率。get(key) :1、计算key的hash值,找到数组索引下标。2、如果此处只有一个Entry,直接返回这个值。3、如果此处是一个链表,则根据hash值和equals方法逐一匹配,一旦匹配上
2022-03-14 11:36:05 1391
原创 Docker Swarm
1、什么是docker swarm ?Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/swarm简单理解就是多台服务器搭建一个docker集群,每个服务器就是集群中的一个节点。参考:Docker三剑客之Docker Swarm - 一本正经的搞事情 - 博客园2、docker swarm的几个关键概念swarm :集群管理工具node :节点,一个节点就是docker
2022-03-13 11:53:47 24822
原创 SpringBoot项目通过ApplicationContext获取Bean
SpringBoot项目通过ApplicationContext获取Bean
2022-02-26 20:52:40 1334
原创 Linux安装Docker
Linux安装docker作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个Docker 容器。容器除了运行其中的应用之外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。如何在linux环境下安装docker,以CentOS 7系统为例1、确保已经安装了gccyum -y install gccy
2022-02-19 13:42:25 13641
原创 SpringBoot集成Redis以及常用操作
spring boot 集成 redis,使用StringRedisTemplate对key、字符串、哈希、列表、集合的一些常规操作
2022-02-17 22:19:06 750 1
原创 用静态内部类的方式做数据校验
用静态内部类的方式做数据校验1、定义一个数据校验的接口public interface DataHandler<T> { void handle(T t, HandleResult result);}2、定义校验结果的实体类import lombok.Data;@Datapublic class HandleResult { private boolean checkRight = false; private StringBuffer errorMes
2022-02-14 20:41:50 294
原创 Redis常用命令
key相关keys pattern 查找所有给定模式的keykeys * 查找所有keykeys *ya 查找所有以ya结尾的keykeys cheng* 查找所有以cheng开头的keytype key 返回key的类型randomkey 返回随机的keyrename key newkey 修改key的名称(注意:如果这个key存储的数据很大,慎用,因为会有大量的IO操作。)rename key newkey 如果newkey不存在,将key的名称修改为newkeyd.
2022-02-12 21:51:17 370
原创 Linux上安装JDK1.8以及crontab设置环境变量
linux安装jdk1.8,crontab定时任务配合flock和timeout一起使用,保证定时正常执行。
2022-01-19 23:28:18 1133
原创 Windows连接不上linux虚拟机的问题排查
Windows连接不上虚拟机的问题排查今天使用windows连接VMware上安装的linux虚拟机,一直连接不上,最后花了两个小时才解决了问题,这里记录一下,供日后参考。说明一下,我安装的linux是CentOS 7的系统用windows的cmd命令ping 虚拟机,总是请求超时但是在linux里面 ping www.baidu.com 是可以的1、linux虚拟机需要采用桥接模式,不要选NAT模式2、检查linux防火墙是否开启,需要确保防火墙是关闭状态查看防火墙状态 systemctl
2021-12-08 21:12:27 5274 2
原创 MongoDB常用Shell命令
MongoDB Shell 命令1、数据库命令# 显示所有数据库show dbs# 显示当前使用的数据库db# 切换到local数据库,如果不存在local数据库,则创建use local# 删除当前数据库db.dropDatabase2、对数据库集合的操作# 显示当前数据库的所有集合show collections# 在当前数据库中创建一个集合workerdb.createCollection("worker")# 删除当前数据库中的worker集合db.wo
2021-11-05 21:29:27 4107 1
原创 使用Lock锁实现线程交替执行
java中,通常用synchronized关键字对需要保证线程安全的代码块加锁,但是synchronized关键字在使用上并不灵活,而Lock锁刚好就可以解决这问题。面试中有可能会被要求写一个要求两个线程交替运行程序,这里给出一个实现样例。1、公共服务类import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.Reentra
2021-11-05 21:22:27 264
原创 Spring项目@Conditional注解的使用
在Spring项目中,有时需要根据配置文件生成不同的Bean,以适应不同的业务场景,这时我们就可以考虑使用Conditional注解。下面给出一个Conditional注解的使用实例1、自定义接口public interface PersonService { String getPersonMessage();}2、两个不同的实现类public class BoyService implements PersonService { @Override public St
2021-11-05 20:24:23 202
原创 List去重
List去重在使用集合的过程中我们经常会遇到去重的问题,这里给出一个常用的去重工具类,供大家参考import java.util.Set;import java.util.concurrent.ConcurrentHashMap;import java.util.function.Function;import java.util.function.Predicate;public final class DistinctRepeatUtil{ private DistinctRepe
2021-11-03 22:17:54 172
原创 java参数校验
SpringBoot项目的参数校验1、简单用法a、引入依赖<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.1.Final</version></dependency>b、参数实体类的属性加注解i
2021-09-04 14:09:49 473
原创 NIO缓冲区之复制、中文编码
NIO缓冲区之复制、中文编码1、NIO缓冲区必须了解的几个概念:mark,position、limit、capacitymark:标识,默认值为-1position : 位置,可以理解为当前游标在缓冲区中的位置,它是相对put(byte b)和get()方法写入和读取的地方,绝对put(int index, byte b)和get(int index)则是在指定的索引处写入和读取。limit:限制,即缓冲区中可以存放数据的最大index(索引)。capacity:容量,即缓冲区的大小。其中,ma
2021-03-27 21:18:08 157
原创 对象深克隆
对象深克隆1、编写一个工具类public class StreamUtil <T> { public static Object copyObject(Object object) throws Exception{ ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream objOut = new ObjectOutputStream(byteOut); objOut.w
2021-03-01 13:11:44 139
原创 java利用反射和注解作数据校验
java利用反射和注解作数据校验1、自定义注解@Target(value={ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface NumCheck { int min() default 1; int max() default 100; String message() default "success";}2.创建校验工具public class ValidatorUtil { p
2021-02-22 20:36:07 389
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人