自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xzh_blog

哦~ 慢慢清晰

  • 博客(20)
  • 资源 (6)
  • 收藏
  • 关注

原创 负载均衡算法居然有这么多种!!!负载均衡算法总结

负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法,另外还可以自定义负载均衡算法。静态负载均衡算法轮询(Round Robin):服务器按照顺序循环接受请求。 随机(Random):随机选择一台服务器接受请求。 比率(Ratio):给每个服务器分配一个权重值,根据权重分配请求。 Hash(Hash):根据客户端IP的hash值取模访问对应服务器。 一致性Hash(Consistent Hash ):相同IP的客户端请求总是发送到同一服务器。动态负载均衡算法最少连接数(Leas

2021-04-27 16:27:54 7001 44

原创 利用MybatisPlus两步实现多租户方案

1.定义一个TenantLineHandler的实现类:import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;import com.google.common.collect.Lists;import net.sf.jsqlparser.expression.Expression;import net.sf.jsqlparser.expression.LongValue;import java.

2021-04-26 15:30:33 3863 17

原创 领域模型命名规约:POJO、DTO、VO、BO、PO、DO

POJO(Plain Ordinary Java Object)简单Java对象是对DTO/VO/BO/PO/DO的统称。DTO(Data Transfer Object)数据传输对象不同服务或服务层之间的数据传输,如:RPC接口参数、Controller层的请求参数。VO(Value Object、View Object)值对象、展示对象返回给前端的值对象,如:Controller层的响应参数。BO(Business Object)业务对象可能包含多个表的数据,也..

2021-04-26 10:16:49 1656 5

原创 package xxx does not exist cannot find symbol(maven仓库程序包不存在)

在Linux上部署服务时抛了大量的包找不到异常[ERROR] /home/jenkins/agent/workspace/pipeline_p-h6sbk-4/src/main/java/com/UserServiceImpl.java:[3,28] package com.alibaba.fastjson does not exist[ERROR] /home/jenkins/agent/workspace/pipeline_p-h6sbk-4/src/main/java/com/User.ja

2021-04-25 09:47:49 4492 5

原创 Java将excel转换成List集合或json,将excel文件导出到本地,excel导入导出,easyexcel工具类

引入maven <!--fastjson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version> </dependency&gt

2021-04-22 14:42:18 1823 10

原创 双写一致性方案

什么是双写同一份数据,需要写数据库、写缓存。双写很难保证强一致性,可以保证最终一致性。要做到强一致性就需要将所有读写请求用队列串行化,但是性能非常差,降低系统的QPS。没有完美的方案,用到缓存就会存在不一致的情况,需要根据具体业务权衡得失,选择合适业务的方案。先更新数据库,再删除缓存(推荐方案)此方案数据不一致的几率比较低,并且实现简单。造成数据不一致的情况:在缓存刚好失效时,有线程查询数据库得到旧值,另外一个线程更新数据库并删除缓存后,前面持有旧值的线程将数据存入缓存,造成数据

2021-04-20 14:19:27 3253 6

原创 Redis事务机制

Redis的事务很鸡肋,并不能保证原子性,也不支持回滚。Redis使用MULTI、EXEC、DISCARD、WATCH命令来实现事务功能。Redis事务是一组命令的集合,事务中的所有命令都被序列化加入队列并按顺序执行,事务执行期间不会被中断。使用Redis事务三个步骤:开始事务(MULTI) 命令入队 执行事务(EXEC)/ 撤销事务(DISCARD)WATCH通过CAS实现,用来监视某个key,如果监视的key被其他客户端修改,EXEC将会放弃执行事务队列中的所有命令。WATCH只能在.

2021-04-19 08:53:13 587 6

原创 Spring源码中的设计模式

工程模式:Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象。 单例模式:Spring依赖注入Bean实例默认是单例的。Spring的依赖注入(包括lazy-init方式)都是发生在AbstractBeanFactory的getBean里。getBean的doGetBean方法调用getSingleton进行bean的创建。 装饰器模式:Spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorato

2021-04-18 11:42:02 581 3

原创 字符串拼接还在用String、StringBuilder?试试StringJoiner吧

StringJoiner是JDK1.8新出的一个类,用于拼接字符串时加入分隔符、前缀、后缀。不需要手动拼接这些与业务无关的符号,也省去处理边界问题的麻烦。使用说明例子:将数组中的元素拼接成以","分割的字符串String[] strings = new String[]{"a", "b", "c"};拼接结果:a,b,c使用StringJoiner之前 public static void main(String[] args) { String[] str

2021-04-16 11:08:40 923 4

原创 Java线程池七个参数详解:核心线程数、最大线程数、空闲线程存活时间、时间单位、工作队列、线程工厂、拒绝策略

源码简介ThreadPoolExecutor是JDK中的线程池实现,这个类实现了一个线程池需要的各个方法,它实现了任务提交、线程管理、监控等等方法。来看看ThreadPoolExecutor类的构造方法源码,其他创建线程池的方法最终都会导向这个构造方法。共有7个参数:corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler,下面将对这7个参数展开讲解。 public ThreadPool

2021-04-11 22:28:48 59660 39

原创 ConcurrentHashMap是如何保证线程安全的

JDK1.7,采用分段锁技术本质上还是采用数组+链表的形式存储键值对的。为了提高并发,把原来的整个 table 划分为 n 个 Segment 。从整体来看,它是一个由 Segment 组成的数组。每个 Segment 里边是由 HashEntry 组成的数组,每个 HashEntry之间又可以形成链表。我们可以把每个 Segment 看成是一个小的 HashMap,其内部结构和 HashMap 是一模一样的。当对某个 Segment 加锁时,不会影响到其他 Segment 的读写,降低锁的竞争。J

2021-04-09 13:42:10 2248 7

原创 HashMap为什么线程不安全

JDK1.7中,HashMap的put方法采用的是头插法,在resize扩容时会形成环形链表,造成死循环。扩容时还可能造成数据丢失。JDK1.8中,HashMap将put方法改成了尾插法,不会形成环链死循环,但是会造成数据覆盖。...

2021-04-09 11:08:48 470 1

原创 MySQL一条update语句的执行过程(图)

update

2021-04-08 14:00:28 937 7

原创 Redisson分布式锁的原理 锁续期 看门狗 死锁问题

使用Redis锁,会有业务未执行完,锁过期的问题,可以采用Redisson锁解决。Redisson锁有两种模式1.固定有效期的锁:超过有效期leaseTime后,自动释放锁。 public void lock(long leaseTime, TimeUnit unit) { try { this.lockInterruptibly(leaseTime, unit); } catch (InterruptedException var

2021-04-08 13:42:30 6954 6

原创 一致性哈希

一致性哈希目的是解决哈希算法动态伸缩的问题,使得在进行扩容时尽量少的进行数据同步。一致性哈希算法将整个哈希值空间映射成一个虚拟的圆环,整个哈希空间的取值范围为0~2^32-1。整个空间按顺时针方向组织。0~2^32-1在零点中方向重合。接下来使用如下算法对服务请求进行映射,将服务请求使用哈希算法算出对应的hash值,然后根据hash值的位置沿圆环顺时针查找,第一台遇到的服务器就是所对应的处理请求服务器。当增加一台新的服务器,受影响的数据仅仅是新添加的服务器到其环空间中前一台的服务器(也就是顺着逆时针方向

2021-04-08 11:06:57 387 2

原创 Spring Security OAuth2使用短信验证码登录

通过继承org.springframework.security.oauth2.provider.token.AbstractTokenGranter定义GRANT_TYPE=sms重写getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest)可以参考org.springframework.security.oauth2.provider.password.ResourceOwnerPasswordTokenG

2021-04-06 11:41:25 1842 4

原创 零拷贝技术

DMA(Direct Memory Access)直接内存访问技术:在进行 I/O 设备和内存的数据传输的时候,数据搬运的工作全部交给 DMA 控制器,而 CPU 不再参与任何与数据搬运相关的事情,这样 CPU 就可以去处理别的事务。零拷贝(Zero-copy):通过 DMA 将磁盘上的数据拷贝到内核缓冲区里,然后将缓冲区描述符和数据长度传到 socket 缓冲区,网卡的 SG-DMA 控制器就直接将内核缓存中的数据拷贝到网卡的缓冲区里。零拷贝技术的文件传输方式相比传统文件传输的方式,减少了 2 次

2021-04-06 11:08:03 411

原创 互联网黑话大全 最新词汇 黑话生成器

二字动词复盘 赋能 沉淀 倒逼 落地 串联 协同 反晡 兼容 包装 重组 履约 晌应 量化 发力 布局 联动 细分 梳理 输出 加速 共建 支撑 融合 聚合 集成 对齐 对标 对焦 抓手 拆解 拉通 抽象 摸索 提炼 打通 打透 吃透 迁移 分发 分层...

2021-04-02 15:04:48 7225 1

原创 tomcat默认最大线程数、等待队列长度、连接超时时间

tomcat的默认最大线程数是200,默认核心线程数(最小空闲线程数)是10。在核心线程数满了之后,会直接启用最大线程数(和JDK线程池不一样,JDK线程池先使用工作队列再使用最大线程数),当达到最大线程数后,新的请求会添加到工作队列,工作队列长度是Integer.MAX_VALUE(2147483647)。

2021-04-02 10:18:41 20724

原创 Push failed Unable to access ‘https://github.com/‘: Failed to connect to github.com port 443: Timed

GitHub推送到远程仓库报错: Push failed Unable to access 'https://github.com/': Failed to connect to github.com port 443: Timed out 解决办法:在控制面板的凭证管理器找到GitHub登录凭证,修改账号密码。也可以通过cmd窗口快速打开,输入:rundll32.exe keymgr.dll,KRShowKeyMgr...

2021-04-01 16:37:13 787

SublimeText4下载

Sublime Text – 性感的代码编辑器、程序员之必备神器!Sublime Text 是个功能强大的代码编辑器,也是HTML和散文先进的文本编辑器。

2021-04-07

MySQL5.7下载 64位 mysql-5.7.20-winx64 免安装

MySQL数据库服务是一种完全托管的数据库服务,用于部署云原生应用程序

2021-04-07

Git下载 64位 官方正式版 windows Git-2.31.1-64-bit.exe

Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。

2021-04-07

JDK11下载 64位 官方正式版 jdk-11.0.10_windows-x64_bin.exe

感谢您下载此版本的Java™平台标准版开发套件(JDK™)。 JDK是用于使用Java编程语言构建应用程序和组件的开发环境。

2021-04-07

JDK1.8下载 64位 官方正式版 jdk-8u191-windows-x64.exe

感谢您下载此版本的Java™平台标准版开发套件(JDK™)。 JDK是用于使用Java编程语言构建应用程序和组件的开发环境。

2021-04-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除