架构
程序员小志
在删库跑路的边缘疯狂徘徊
展开
-
我敢肯定刷到这篇文章的老表们都答不上这个问题【玩转Redis-删除了两百万key,为什么内存依旧未释放?】没有10年经验谁敢这么解惑??
大纲背景 如何查看Redis内存数据 内存为何不释放 什么是内存碎片 Redis的内存碎片是如何形成的 如何释放内存 生产环境整理内存碎片的注意事项1、背景 公司某业务使用的Redis集群是自建的,前段时间计划将自建Redis集群迁移到购买的阿里云集群。 老集群共有 350W key,占用内存 8.8 G,DTS迁移前分析发现有近两百万的key无需迁移,于是提前删除了这两百万key。 删除key后发现redis内存竟然几乎无变化,350W key删除了两百万,怎么也得释原创 2020-10-13 19:39:23 · 701 阅读 · 0 评论 -
面试了一个 39 岁大龄程序员,我有点慌……
本文非广告,也非标题党,栈长最近的亲身面试经历。招人背景首先说下公司招人的背景吧,公司要招的是一个研发经理的岗位,负责管理技术团队的各个项目组,领导只给了我两个要求:1)技术可以2)管理有一套说白了,这是一个技术+管理的岗位,不是纯粹的管理岗,能写代码,技术上过得去是前提,所以底层还得是个程序员。干我们这行的都懂,大厂都在清理 35 岁以上的基础岗,如果到了这个年纪还混不到中高层管理岗位,基础岗确实不太好找了。现在的年轻人很厉害,很年轻就走上了管理层,所以我很庆幸公司在年龄上没有原创 2020-10-10 21:31:40 · 552 阅读 · 0 评论 -
都2021年了,你还不会优化MySQL千万级大表?6000字的解读带你飞!
千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分:“千万级”,“大表”,“优化”,也分别对应我们在图中标识的“数据量”,“对象”和“目标”。我来逐步展开说明一下,从而给出一系列的解决方案。..原创 2020-10-10 21:22:36 · 616 阅读 · 0 评论 -
什么才是真正的架构设计?
一. 什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。Linux有架构,MySQL有架构,JVM也有架构,使用Java开发、MySQL存储、跑在Linux上的业务系统也有架构,应该关注哪一个?想要清楚以上问题需要梳理几个有关系又相似的概念:系统与子系统、模块与组建、框架与架构:原创 2020-09-14 19:44:13 · 649 阅读 · 0 评论 -
三分钟 秒懂Spring源码,教你轻松手写SpringMVC框架
1,3分钟读懂Spring核心源码;2,SpringMVC与Spring框架关系;MVC--Spring的作用是整合,但不仅仅限于整合,Spring 框架可以被看做是一个企业解决方案级别的框架。客户端发送请求,服务器控制器(由DispatcherServlet实现的)完成请求的转发,控制器调用一个用于映射的类HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。HandlerMapping 将请求映射到对应的处理器Controller(相当于Action)在Spring...原创 2020-09-09 13:20:52 · 744 阅读 · 0 评论 -
经验分享|数据库连接池引起的FullGC问题,看我如何一步步排查、分析、解决
问题现象在某个工作日,突然收到线上的服务告警,有大量的请求延时产生,查看线上服务发现基本上都是获取数据库连接超时,而且影响时间只有3~4秒钟,服务又恢复了正常。隔了几分钟之后,又出现了大量的告警,还是影响3~4秒后又恢复正常。 由于我们是底层服务,被重多的上层服务所依赖,这么频繁的异常波动已经严重影响到了业务使用。开始排查问题排查过程DB的影响?当第一次告警产生时,第一反应是可能上层服务有大量的接口调用,并且涉及到一些复杂的SQL查询导致数据库连接数不够用,但是在分析了接口调用情况后发现异常原创 2020-09-07 19:57:08 · 441 阅读 · 0 评论 -
就这一次!把进程、线程、协程这几个特点给你讲清楚
前言在操作系统课程的学习中,很多人对进程线程有大体的认识,但操作系统教材更偏向于理论叙述,本文会结合 Linux 系统实现分析,更加印象深刻。同时,大部分人都接触进程和线程比较多,对协程知之甚少,然而最近协程并发编程技术火热起来,希望读完本文你对协程也有一个基本的了解。话不多说,我们马上进入本文的学习。进程首先还是说下「程序」的概念,程序是一些保存在磁盘上的指令的有序集合,是静态的。进程是程序执行的过程,包括了动态创建、调度和消亡的整个过程,进程是程序资源管理的最小单位。进程与资源原创 2020-09-04 10:25:56 · 382 阅读 · 0 评论 -
阿里巴巴 Java研发部四面:Redis缓存+中间件+笔试撸码(已拿offer)终极面经,干就完了
阿里团队一面:三分钟简短自我介绍?介绍自己的项目经验和个人的擅长点,面试官主要考察你的表达能力和语言精简能力。第二步:项目中做了什么,难点在哪里? 你是怎么克服难点的?主要是想了解参与过技术难度最大的项目难点,技术难点在哪里,你是怎么来解决的,考察项目经验(技术难度)。聊天结束,技术面试正题:技术面试正题:阿里技术二面:阿里技术三面:三面是笔试,做了将近三小时,主要是考察自己对Java核心的基础!总结出大概就是这几个考点:阿里HR面:聊人生谈理想,原创 2020-09-03 22:29:52 · 202 阅读 · 0 评论 -
好用却容易被忽略的日志工具分享。面对成百上千台服务器产生的日志,试试这款轻量级日志搬运神器
之前我们搭建的ELK日志收集系统,主要是用来收集SpringBoot应用的日志。其原理是应用通过Logstash插件,使用TCP向Logstash传输日志,从而存储到Elasticsearch中去。但是有很多中间件的日志都是直接存储在文件中的,比如Nginx、Elasticsearch和MySQL,此时我们就需要一个搬运工来把日志搬到Elasticsearch中去,Filebeat正是这样一个日志搬运工,本文将详细介绍它的使用方法,希望对大家有所帮助。Filebeat简介Filebeat是一款轻量级原创 2020-09-03 21:22:22 · 220 阅读 · 0 评论 -
4小时开发一个SpringBoot+vue前后端分离博客项目,你学废了吗?
Java后端接口开发1、前言从零开始搭建一个项目骨架,最好选择合适,熟悉的技术,并且在未来易拓展,适合微服务化体系等。所以一般以Springboot作为我们的框架基础,这是离不开的了。然后数据层,我们常用的是Mybatis,易上手,方便维护。但是单表操作比较困难,特别是添加字段或减少字段的时候,比较繁琐,所以这里我推荐使用Mybatis Plus(https://mp.baomidou.com/),为简化开发而生,只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。作为一个项目骨架原创 2020-09-02 20:10:23 · 1290 阅读 · 0 评论 -
兄弟们!我扒了半天源码,终于找到了Oauth2自定义处理结果的最佳方案
在上篇文章中,我们介绍了Oauth2在微服务中的使用,但是我们没有自定义Oauth2默认的处理结果。有时候我们真的很希望Oauth2中的认证授权能返回我们指定格式的结果,比如登录认证的结果、网关鉴权不通过的结果等等。本文将详细介绍Oauth2中自定义处理结果的方案,希望对大家有所帮助!解决什么问题自定义Oauth2处理结果,主要是为了统一接口返回信息的格式,从下面几个方面着手。自定义Oauth2登录认证成功和失败的返回结果; JWT令牌过期或者签名不正确,网关认证失败的返回结果; 携带过原创 2020-09-02 13:25:47 · 969 阅读 · 0 评论 -
好文推荐|百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题
UidGenerator是百度开源的Java语言实现,基于Snowflake算法的唯一ID生成器。而且,它非常适合虚拟环境,比如:Docker。另外,它通过消费未来时间克服了雪花算法的并发限制。UidGenerator提前生成ID并缓存在RingBuffer中。 检测结果显示,单个实例的QPS能超过6000,000。依赖环境:JDK8+ MySQL(用于分配WorkerId)snowflake由下图可知,雪花算法的几个核心组成部分:1为sign标识位; 41位时间戳; 10位work原创 2020-09-01 13:41:29 · 250 阅读 · 0 评论 -
老铁们,墙裂推荐这款网页版 Nginx 配置生成器,好用到爆
最近LZ发现一款好用的网页版开源工具,同样它的功能也是Nginx配置生成器,功能非常强大,方便实用,它是:NginxWebUI。NginxWebUI介绍NginxWebUI是一款方便实用的nginx 网页配置工具,可以使用 WebUI 配置 Nginx 的各项功能,包括端口转发,反向代理,ssl 证书配置,负载均衡等,最终生成「nginx.conf」配置文件并覆盖目标配置文件,完成 nginx 的功能配置。项目地址:https://gitee.com/cym1102/nginxWebUI官原创 2020-08-28 14:36:09 · 180 阅读 · 0 评论 -
印象中的tcp?你可能一直都理解错了|开发者的必备技能
我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。1、TCP状态了解TCP之前,先了解几个命令:linux查看tcp的状态命令:1) netstat -nat#查看TCP各个状态的数量2)lsof -i:port#可以检测到打开套接字的状况3) sar -n SOCK#查看tcp创建的连接数4) tcpdump -iany tcp port 9000#对tcp端口为9000的进行抓包网络测试常用命令;1.ping:检测网络连接的正常与否,主要是测试延原创 2020-08-27 22:27:03 · 196 阅读 · 0 评论 -
顶级阿里P8架构师详谈:高并发与多线程的关系、区别、高并发的技术方案 你绝对不知道的面试禁区
什么是高并发?高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。高并发的处理指标?高并发相关常用的一些指标有:1.响应时间(Response Time)响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应原创 2020-08-27 14:28:14 · 209 阅读 · 0 评论 -
妙啊!竟然有人能把23种设计模式解析透彻了,附笔记、教程、PPT
简介设计模式就代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性为什么要学习设计模式看懂源代码:如果你不懂设计试去看Jdk、Spring、 SpringMVC、 I0等等等等的源码,你会很迷茫,你会寸步原创 2020-08-26 22:30:51 · 773 阅读 · 0 评论 -
什么是JVM?深入解读Java虚拟机,从入门到精通有这一遍文章就够了!
一、什么是JVMJVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Ja原创 2020-08-26 14:48:33 · 402 阅读 · 0 评论 -
永远学不会的微服务?全网最火SpringCloud微服务商城系统项目,全套教程分享给你 ,记得收藏呦
项目介绍mall-swarm是一套微服务商城系统,采用了 Spring Cloud Greenwich、Spring Boot 2、MyBatis、Docker、Elasticsearch等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。系统架构图组织结构mall├── mall-common -- 工具类及通用代码模块├── mall-mbg -- MyBatisGenerator生原创 2020-08-20 16:19:05 · 222 阅读 · 0 评论