自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

.zz的博客

编程人生,所知所见...

  • 博客(204)
  • 资源 (1)
  • 收藏
  • 关注

原创 redis详述

本文围绕以下几点进行阐述:· 为什么使用 Redis· 使用 Redis 有什么缺点· 单线程的 Redis 为什么这么快· Redis 的数据类型,以及每种数据类型的使用场景· Redis 的过期策略以及内存淘汰机制· Redis 和数据库双写一致性问题· 如何应对缓存穿透和缓存雪崩问题· 如何解决 Redis 的并发竞争 Key 问题为什么使用Redis我觉得在项目中使用 Redis,主要是从...

2018-06-28 18:04:09 303

原创 springCloud笔记详细

Eureka1. 服务提供者1. 服务注册服务提供者在启动的时候会通过发送REST请求的方式将自己注册到EurekaServer上, 同时带上了自身服务的 一 些元数据信息。Eureka Server接收到这个REST请求之后,将元数据信息存储在 一 个双层结构Map中, 其中第 一 层的key是服务名, 第二层的key是具体服务的实例名。2. 服务同步当服务提供者发送注册请求到 一 个服务注册中...

2018-06-06 16:49:28 3271

原创 项目刚启动,cpu占用率高但是又执行缓慢的问题

项目刚启动时,发现代码执行的巨慢,通过查看线程发现:有一个C2 compileThread0的线程占用了很大的cpu。进一步查询发现了一个jvm的特性,C2 Compiler 是JVM在server模式下字节码编译器,JVM启动的时候所有代码都处于解释执行模式,当某些代码被执行到一定阈值次数,这些代码(称为热点代码)就会被 C2 Compiler编译成机器码,编译成机器码后执行效率会得到大幅提升。

2023-03-23 09:46:24 881 1

原创 关于项目里分布式锁的坑

分布式锁

2022-10-10 15:13:38 175

原创 FeignClient动态配置服务url

OpenFeign动态配置服务url

2022-08-12 17:32:23 4112

原创 最近使用的一款session工具:sa-Token

官网:Sa-Token本文内容主要都来源于官网介绍Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题。特点调用接口简单 功能强大 基本都是一句话解决问题,和shiro,SpringSecurity比起来,简单到不像话功能登录认证—— 单端登录、多端登录、同端互斥登录、七天内免登录 权限认证—— 权限认证、角色认证、会话二级认证 Session会话——...

2022-05-09 15:01:09 4135

转载 最近看到的缓存好文章(3):深入解密来自未来的缓存-Caffeine

1.前言读这篇文章之前希望你能好好的阅读: 你应该知道的缓存进化史 和 如何优雅的设计和使用缓存? 。这两篇文章主要从一些实战上面去介绍如何去使用缓存。在这两篇文章中我都比较推荐Caffeine这款本地缓存去代替你的Guava Cache。本篇文章我将介绍Caffeine缓存的具体有哪些功能,以及内部的实现原理,让大家知其然,也要知其所以然。有人会问:我不使用Caffeine这篇文章应该对我没啥用了,别着急,在Caffeine中的知识一定会对你在其他代码设计方面有很大的帮助。当然在介绍之前还是要贴一下他

2021-05-25 16:50:48 368

转载 最近看到的缓存好文章(2):如何优雅的设计和使用缓存?

背景在之前的文章中你应该知道的缓存进化史介绍了爱奇艺的缓存架构和缓存的进化历史。俗话说得好,工欲善其事,必先利其器,有了好的工具肯定得知道如何用好这些工具,本篇将介绍如何利用好缓存。1.确认是否需要缓存在使用缓存之前,需要确认你的项目是否真的需要缓存。使用缓存会引入的一定的技术复杂度,后文也将会一一介绍这些复杂度。一般来说从两个方面来个是否需要使用缓存:CPU占用:如果你有某些应用需要消耗大量的cpu去计算,比如正则表达式,如果你使用正则表达式比较频繁,而其又占用了很多CPU的话,那你就应该

2021-05-25 16:47:29 237

转载 最近看到的缓存好文章(1):你应该知道的缓存进化史

1.背景本文是上周去技术沙龙听了一下爱奇艺的Java缓存之路有感写出来的。先简单介绍一下爱奇艺的java缓存道路的发展吧。可以看见图中分为几个阶段:第一阶段:数据同步加redis通过消息队列进行数据同步至redis,然后Java应用直接去取缓存 这个阶段优点是:由于是使用的分布式缓存,所以数据更新快。缺点也比较明显:依赖Redis的稳定性,一旦redis挂了,整个缓存系统不可用,造成缓存雪崩,所有请求打到DB。第二,三阶段:JavaMap到Guava cache这个...

2021-05-25 16:44:43 163

原创 将springboot项目一键部署到远程docker(docker+Alibaba Cloud Toolkit)

1. 步骤服务器安装docker 编写运行jar包得Dockerfile,构建镜像 idea安装,配置Alibaba Cloud Toolkit。 这个插件会执行打包,上传到服务器,上传后执行命令,一键完成部署,jar包war包没有限制,docker不docker的也没有限制,主要在于自己的命令 2. 构建运行jar包的镜像新建文件夹 /root/dockerFile/sp...

2020-04-22 16:35:59 1401

原创 2. ParNew垃圾回收器和CMS垃圾回收器

1. ParNew垃圾回收器新生代垃圾回收器 配置:-XX:+UseParNewGC 特点:多线程垃圾回收机制,需要把工作线程全部停掉 默认线程数量:cpu核数,可以通过 -XX:ParallelGCThreads 设置线程数2. 老年代:CMS-XX:+UseConcMarkSweepGC 标记清理算法 通过追踪GC Roots的方法,先将垃圾对象都标记出来,然后一次性...

2020-04-02 14:55:43 393

原创 1. jvm基础

1. 类的加载过程加载,验证,准备,解析,初始化,使用,销毁2. 内存划分线程私有 程序计数器 没有OOM JAVA虚拟机栈 本地方法栈 线程共享 java堆 方法区,包括:运行时常量池 直接内存3. 如何设置内存大小-Xms:Java堆内存的大小-Xmx:Java堆内存的最大大小-Xmn:Java堆内存中的新生代大小,扣除新生代剩下的就是老年...

2020-04-02 14:43:22 183

原创 springcloud-zuul详解

源码解析Spring.factories中加载了ZuulServerAutoConfiguration和ZuulProxyAutoConfiguration ZuulServerAutoConfiguration中注册了FilterRegistrationBean FilterRegistrationBean设置new了一个ZuulServletFilter ZuulServletFil...

2019-12-17 15:13:39 433

原创 微服务

一、微服务化的基石:持续集成二、静态资源分离与接入层设计三、应用层设计之无状态化与容器化四、应用层设计之服务的拆分,发现与编排五、性能优化之数据库设计与横向扩展六、性能优化之缓存的设计与横向扩层七、性能优化之消息队列与异步化设计八、服务的编断,降级,限流设计九、配置中心的设计与实践十、统一日志中心的设计与实践十一、全质路应用监控实践十二、服务的全战路压测实践...

2019-02-16 10:22:08 200

原创 面试题整理

 数据库 四大特性: Atomicity原子性 Consistency一致性 Isolation隔离性 Durability持久性 事物的并发问题 脏读:事物A读取了事物B更新的数据,然后B回滚才做,那么A读到的是脏数据 不可重复读:事物A多次读取同一数据,事物B再事物A多次读取过程中,对数据更新并提交,导致事物A多次读取到的结果不一致。 ...

2019-02-15 16:26:59 241

原创 kafka梳理

基本概念 Broker:Kafka节点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。 Topic:一类消息,消息存放的目录即主题,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。 Partition:topic物理上的分组,一个topic可以分为多个partition,每个p...

2019-01-23 17:20:20 273

原创 spring常用注解整理

1. 生成bean对象@Bean @Controller @Service @Repository @Component 注解标注该类,然后再使用 @ComponentScan 扫描包 @Import 方法 传入普通类,则将此类注入IOC容器 传入普通类实现ImportSelector接口,返回需要导入的组件的全类名数组,将之下所有类注入IOC 传入普通类实现ImportBean...

2019-01-14 17:02:37 1125

转载 Sentinel 使用(3)集群流控

一、为什么需要集群流控功能?假设我们希望给某个用户限制调用某个 API 的总 QPS 为 50,但机器数可能很多(比如有 100 台)。这时候我们很自然地就想到,找一个 server 专门用来统计总的调用量,其它的实例都与这台 server 通信以判断是否可以调用。这就是最基础的集群流控的方式。那么这个 server 如何部署呢?最直观的方式就是作为独立的 token server 进程启...

2019-01-14 15:00:24 3982

原创 Sentinel 使用(2)规则配置

1. 流量控制规则 (FlowRule)重要属性:Field 说明 默认值 resource 资源名,资源名是限流规则的作用对象   count 限流阈值   grade 限流阈值类型,QPS 或线程数模式 QPS 模式 limitApp 流控针对的调用来源 default,代表不区分调用来源 strategy...

2019-01-11 17:07:46 3399

原创 Sentinel 使用(1)基本使用

1. 简述Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等 Sentinel 分为两个部分:核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。 ...

2019-01-10 16:33:57 10073 1

原创 关于雪花算法全是偶数的问题处理

1. 问题描述生成的id全是偶数的2. 问题发现由于跨毫秒后,最后的sequence累加就会清零,导入末位为偶数。如果id生成不频繁,则生成的就是全是偶数3. 解决主要的根本就在跨毫秒清零,如果在跨毫秒时候sequence不清零,实际上每次生成id时,时间毫秒在增加,sequence也在增加,也是不会重复的。所以,索性去掉这一块同时由于sequence = (sequenc...

2018-12-10 11:17:26 4424 8

转载 在高并发的核心技术中如何实现幂等性

实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如:1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会崩溃;4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出...

2018-10-12 15:48:46 495

原创 dubbo基本使用

相关链接:git文档:https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/README_CN.md官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html外部化配置:https://github.com/mercyblitz/...

2018-09-11 14:43:14 697

原创 swagger的使用

1. 添加依赖<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2&...

2018-09-07 17:36:34 161

转载 详细介绍高性能Java缓存库Caffeine

本篇文章主要介绍了详细介绍高性能Java缓存库Caffeine,觉得挺不错的。1、介绍在本文中,我们来看看Caffeine — 一个高性能的 Java 缓存库。缓存和 Map 之间的一个根本区别在于缓存可以回收存储的 item。回收策略为在指定时间删除哪些对象。此策略直接影响缓存的命中率 — 缓存库的一个重要特征。Caffeine 因使用 Window TinyLfu 回收策略...

2018-09-04 14:07:43 7685

原创 jetcache(3)优点与问题

优点注解式操作springboot支持多级缓存支持缓存细节封装缓存统计可以提供原生的操作对象,比如jedis,lettuce等可以配置多个redis实例,以及集群,哨兵等模式等等等等。。。。。。缺点computeIfAbsent方法load数据时没有提供锁功能,会造成缓存穿透tryLock方法提供的锁能够是不是很严格的锁,不能自定义在使用的时候,最好实现自己...

2018-09-03 11:15:00 5185

原创 jetcache(2)缓存策略

redis的支持jedis选用jedis访问redis,对应的maven artifact是jetcache-redis和jetcache-starter-redis(spring boot)。 部分配置:jetcache: areaInCacheName: false remote: default: type: redis key...

2018-09-03 11:03:38 3958 1

原创 jetcache(1)基本使用

基本使用当前有四个实现,RedisCache、TairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory),要添加新的实现也是非常简单的。pom<dependency> <groupId>com.alicp.jetcache</group...

2018-08-31 14:23:32 4012

原创 缓存系统的设计和问题

参考文章:http://stor.51cto.com/art/201808/582218.htm选择合适的进程缓存ConcurrentHashMap, 比较适合缓存比较固定不变的元素,且缓存的数量较小的 jdk自带的,使用方便 可以用来缓存反射的Method, Field等 LRUMap  依赖common-collections包 淘汰算法淘汰数据 Ehcac...

2018-08-29 16:18:14 1640

原创 redis的java客户端lettuce的使用

从官方文档翻译并整理的,有地方可能表述不准确文档地址:https://github.com/lettuce-io/lettuce-core/wiki/About-lettuce1. lettuce的介绍lettuce是一个线程安全的redis客户端。提供同步,异步和reactive(?)的APIs.。如果可以避开阻塞和事务型的操作比如BLPOP和MULTI/EXEC,多个线程可以分...

2018-08-28 17:28:12 27624

原创 java的try-witn-resource

Java7新增了自动关闭资源的try语句。它允许在try关键字后紧跟一对圆括号,里面可以声明、初始化一个或多个资源,此处的资源指的是那些必须在程序结束时显示关闭的资源(数据库连接、网络连接等),try语句会在该语句结束时自动关闭这些资源。偶尔看到,原来还可以这样。。。public class test2 { public static void main(String[] arg...

2018-08-27 18:07:28 171

转载 session持久化

目录1. 参考的优秀文章Tomcat Session 持久化Package org.apache.catalina.session 最近同事在做Session外置的功能,我对Session持久化、共享也不太了解,学习一下。 一般来说,Tomcat原生的持久化Session方式,有StandardManager和PersistentManager。版本说明:apa...

2018-08-24 16:46:34 2160 1

原创 spring session管理

1. session管理spring session管理可以适用于很多功能,如:登陆/退出 在线统计 限制账号多处登陆等2. 监听器相关的监听器主要有两个:HttpSessionListener和HttpSessionBindingListener1. HttpSessionBindingListener1. 使用实现HttpSessionBindingListene...

2018-08-23 16:55:43 1000

转载 python协程

python asyncio网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程。无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态。使用协程可以实现高效的并发任务。Python的在3.4中引入了协程的概念,可是这个还是以生成器对象为基础,3.5则确定了协程的语法。下面将简单介绍asyncio的使用。实现协程的不仅仅是async...

2018-08-08 15:48:19 418

原创 前端图片转base64并压缩

js$(function() { $("#up").change(function() { imageDeal(this, dealChange); });})var dealChange = function(blob, base64) { var fd = new FormData(); fd.append("file", blob); //fileData为自定义 /...

2018-07-09 18:03:06 23265 2

转载 redis架构(4)-集群动态扩容

原文:https://www.cnblogs.com/PatrickLiu/p/8473135.html一、引言      上一篇文章我们一步一步的教大家搭建了Redis的Cluster集群环境,形成了3个主节点和3个从节点的Cluster的环境。当然,大家可以使用 Cluster info 命令查看Cluster集群的状态,也可以使用Cluster Nodes 命令来详细了解Cluster集群每...

2018-06-29 16:53:18 2060

转载 redis架构(3)-集群搭建

原文:https://www.cnblogs.com/PatrickLiu/p/8458788.html一、引言        本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的所涉及到的概念做深入的探讨。本文只是针对如何设置集群、测试和操作集群做了简述,并且从用户的角度描述了系统的行为,并不涉及Redis集群规范中所包含的细节。但是,本教程试图从最终用户的角度来解释有关R...

2018-06-29 16:52:08 256

转载 redis架构(2)-哨兵模式

原文:https://www.cnblogs.com/PatrickLiu/p/8444546.html一、引言             上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一点,Master和Slave两个节点的持久化配置尽量保持一致,否则会有奇怪的问题出现。从今天开始...

2018-06-29 16:50:12 290

转载 redis架构(1)-主从复制

原文:https://www.cnblogs.com/PatrickLiu/p/8426610.html一、引言          Redis的基本数据类型,高级特性,与Lua脚本的整合等相关知识点都学完了,说是学完了,只是完成了当前的学习计划,在以后的时间还需继续深入研究和学习。从今天开始来讲一下有关Redis的集群模式,Redis有三种集群模式,第一个就是主从模式,第二种“哨兵”模式,第三种是...

2018-06-29 16:49:13 233

转载 logback配置详解

目录1、根节点包含的属性2、根节点的子节点 2.1、设置上下文名称: 2.2、设置loger、root 正文回到顶部1、根节点<configuration>包含的属性scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生...

2018-06-27 17:24:17 236

easyUI1.4.5接口文档

easyUI1.4.5接口文档

2017-03-29

空空如也

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

TA关注的人

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