![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序员
文章平均质量分 89
程序员阿轩
Java领域:架构干货分享:互联网分析
展开
-
十年经验倾囊相授,MySQL-高性能使用索引,拿走不谢
前言索引是存储引擎用于快速找到记录的一种数据结构,索引对于良好的性能非常关键,特别是随着数据量的加大,索引对性能的影响越发重要,但是日常工作中索引经常被忽略,造成经常遇到糟糕索引导致的性能问题。索引优化是对查询性能优化最有效的手段,索引能够轻易将查询性能提高几个数量级,创建一个真正的最优索引,应该是研发追求的目标。所谓索引其实就是我们日常经常使用目录,协助我们尽快找到需要的内容。索引有很多种类型,为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层实现,而不是在服务器层实现,所以并没有统一的索原创 2021-06-24 15:57:15 · 344 阅读 · 1 评论 -
炒干货!!!Springboot整合Shiro实现登录加密和权限
这篇文章实打实的技术指导,废话不多说,直接开始干,希望大家多多一键三连支持一下野生技术博客,毕竟这年头技术博士不多见了呀先看看下面的teacher表role表 perms表 shiro是一个安全框架,可以进行认证、授权、密码加密、会话管理 从外部来解析shiro框架:Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject原创 2021-06-24 14:33:43 · 477 阅读 · 1 评论 -
网曝:985毕业的“打工人”,大厂java开发5年被裁,内卷优化后还被经历了哪些黑幕?
周末的时候,一个很久没联系的朋友在微信上找到我,说有些关于程序员职业规划的问题想聊一聊。其实我跟他并不熟,甚至不记得是因为什么加的微信,只记得有过几次问题的探讨。那个时候,他还在大厂工作,负责一个创新业务的产品工作。现在,他刚从那家待了两年的大厂离职了。按他的说法,自己是被「优化」的。「优化」这个词也算一个互联网行业的「黑话」,通常指因为某些原因被辞退或者拿了公司赔偿后主动离职的。他发给我的经历,我看完后觉得,其实相对于大多数职场人来说,他的履历还算是光鲜的。本科985,毕业后通过校招进了美团原创 2021-06-23 10:01:24 · 417 阅读 · 0 评论 -
Github标星35K+超火的整理宝典【数据结构和算法】爆肝三万字你必须知道的20个解决问题的技巧
前言数据结构和算法 (DSA) 通常被认为是一个令人生畏的话题——一种常见的误解。它们是技术领域最具创新性概念的基础,对于工作/实习申请者和有经验的程序员的职业发展都至关重要。掌握DSA意味着你能够使用你的计算和算法思维来解决前所未见的问题,并为任何科技公司的价值做出贡献(包括你自己的!)。通过了解它们,您可以提高代码的可维护性、可扩展性和效率。话虽如此,我决定将我所了解的数据结构和算法集中起来。本文旨在使 DSA 看起来不像人们认为的那样令人生畏。它包括 15 个最有用的数据结构和 15 个最重要原创 2021-06-22 20:58:14 · 2223 阅读 · 0 评论 -
阿里巴巴面试官:谈谈 Tomcat 请求处理流程,我一脸懵逼。。
很多东西在时序图中体现的已经非常清楚了,没有必要再一步一步的作介绍,所以本文以图为主,然后对部分内容加以简单解释。那接下来我将重点聊聊Tomcat,希望给你以借鉴!大家看完觉得还不错的话,别忘了给个一键三连哦!绘制图形使用的工具是 PlantUML + Visual Studio Code + PlantUML Extension本文对 Tomcat 的介绍以 Tomcat-9.0.0.M22 为标准。https://tomcat.apache.org/tomcat-9.0-doc/index.h原创 2021-06-21 15:14:42 · 200 阅读 · 0 评论 -
渣硕试水字节跳动,消息队列面试连环问,本以为简历都过不了,123+HR面直接拿到意向书满满干货指导!
消息队列核心知识点有很多,为了更贴合实际场景,这里我们从常见的面试问题入手:如何保证消息不丢失?如何处理重复消息?如何保证消息的有序性?如何处理消息堆积?当然在剖析这几个问题之前需要简单的介绍下什么是消息队列,消息队列常见的一些基本术语和概念。接下来进入正文。什么是消息队列来看看维基百科怎么说的,顺带学学英语这波不亏:In computer science, message queues and mailboxes are software-engineering component转载 2021-06-18 17:01:29 · 408 阅读 · 0 评论 -
阿里内部Java实战指南|花3分钟你就初步掌握了Redis分布式锁
前言:随着互联网的发展,单体架构所存在的问题也一一爆了出来,如部署成本高,迭代速度慢,不易于扩展等问题,微服务架构也油然而生,微服务的出现,并不是为了替代原先单体架构,而是为了解决单体架构出现的相关问题;微服务并不是为了取代某一种程序架构,而是它更适合于某种业务场景或更好地解决某种问题。然而微服务的出现也会带来一些相关的问题如:分布式问题更加复杂化:因为本来分布式问题就存在,比如分布式锁,分布式事务,数据一致性等问题,随着服务的细化,自然就让分布式问题更加复杂化;问题排查增加难度:微服务很多时原创 2021-06-18 14:33:34 · 188 阅读 · 1 评论 -
Github标星35K+超火的阿里p7大佬整理的Java核心知识总结,附超全教程文档
JDK JRE JVMJDK:Java标准开发包,它提供了编译、运⾏Java程序所需的各种⼯具和资源,包括Java编译器、Java运⾏时环境,以及常⽤的Java类库等。JRE:Java运⾏环境,⽤于解释执⾏Java的字节码⽂件。JVM:Java虚拟机,是JRE的⼀部分。负责解释执⾏字节码⽂件,是可运⾏java字节码⽂件的虚拟计算机区别联系:JDK包含JRE,JDK 和 JRE 中都包含 JVM。JDK出了包含jre还包含⼀些常⽤开发⼯具和基础类库JDK ⽤于开发,JRE ⽤于运⾏jav.原创 2021-06-17 15:40:25 · 341 阅读 · 0 评论 -
硬核!啃完666页Java面试高频宝典,6月成功定级腾讯T3-2
面试,是大家从学校走向社会的第一步。互联网公司的校园招聘,从形式上说,面试一般分为 2-3 轮技术面试 +1 轮 HR 面试。但是一些公司确实是没有 HR 面试的,直接就是三轮技术面。技术面试中,面试官一般会先就你所应聘的岗位进行相关知识的考察,也叫基础知识和业务逻辑面试。只要你回答的不是特别差,面试官通常会说:“咱们写个代码吧”,这个时候就开始了算法面试。也就是说,一轮技术面试 = 基础知识和业务逻辑面试 + 算法面试。本文我们主要从技术面试聊起。技术面试包括:业务逻辑和基础知识面试。首先是业务逻原创 2021-06-17 15:25:30 · 327 阅读 · 0 评论 -
史无前例!肝了30天,终于整出这份JVM原理最全、清晰、通俗讲解的宝典笔记
开发工程师们都知道,JVM对于我们来说十分重要。“学习 JVM 能深入地理解 Java 这门语言,可以为未来排查问题打下基础”对于刚开始学习Java的人来说,JVM是有一些难度的,但对于已经有2、3年工作经验的Java程序员来说,你若想不再只做CRUD,而是继续提升成为高级开发工程师,拥有拿到更高工资的能力,那就必须深入掌握JVM。从求职的角度来看,JVM也是Java工程师面试成功的一道门槛,可能以前我们会认为只有中高级的Java工程师才会面对JVM的问题,但现在初级Java工程师也难逃此题。**原创 2021-06-16 16:41:10 · 224 阅读 · 1 评论 -
大厂面试内幕:阿里内部整理出的5000页Java多线程面试题(含答案)复盘指南,起飞
Java并发编程问题是面试过程中很容易遇到的问题,提前准备是解决问题的最好办法,将试题总结起来,时常查看会有奇效。在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得更多职位,那么你应该准备很多关于多线程的问题。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。现在引用Java5并发包关于并发工具和并发集合的问题正在增多。那些问题中ThreadLocal、Blocking Queue、Count原创 2021-06-16 14:39:43 · 208 阅读 · 0 评论 -
学妹半夜想学SpringBoot,连夜起来整理了一篇SpringBoot入门最详细教程笔记,看完才准睡觉!
前言凭借开箱即用,远离繁琐的配置等特性,Spring Boot 已经成为 Java 开发者人人必学必会的开源项目。那么开发者该如何快速上手Spring Boot 呢?Spring Boot 到底是啥?那请问Spring Boot 到底是啥?Spring Boot是Spring框架的扩展和自动化,它消除了在Spring中需要进行的XML(EXtensible Markup Language)文件配置(若习惯XML配置,则依然可以使用),使得开发变得更快、更高效、更自动化。微服务 微服务:每一个功能元原创 2021-06-09 22:18:24 · 281 阅读 · 1 评论 -
教妹学MySQL:哇塞!GitHub 上这些 实用的几种SQL语句太强了吧,看完哪个都变大佬!
前言SQL查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考学习。如果大家还有其他好的语句或者好的见解欢迎分享。实用的SQL1、常见 SQL 语句性能优化策略对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引。应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建表时 NULL 是默认值,但大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值。应尽原创 2021-06-07 15:44:19 · 392 阅读 · 4 评论 -
史无前例!肝了30天,我靠着这份java突击成功拿下蚂蚁金服offer
今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。前前后后面试了不下二十家公司,一二线大公司或者是融资中的创业公司都面试过,也拿了几个offer,其中包括美团、蚂蚁金服等。下面题目都是我总结这些天面试中问的大多数题目,综合分类有Java基础,框架,多线程,网络通信,数据库以及设计模式,算法等几个模块。如果大家还有其他好的题目或者好的见解欢迎分享。一、JVM出乎意料,Java虚拟机应原创 2021-06-03 21:11:37 · 279 阅读 · 2 评论 -
28岁因为不能月入过万,所以在一起5年的女朋友和我分手了,我想当程序员!可父母力阻我辞职,怎么办?
前言就因为女朋友说了一句,你看你兄弟是做程序员的一个月2万多,那像你天天加班加点的做月收入才8k,所以我选择了分手!大学选择的就是计算机专业,但是毕业后电商很火所以我选择去做跨境电商,这两年因为疫情的原因本来就想换行业分手应该是我压死我最后一根稻草,我现在有车无房,父母在老家有一个农场,每年能够挣个20多问万,我觉得我可以再拼一把,但是父母极力阻止我,希望我回去专心做农场即使在这样的情况下我还是选择了跳槽从头去做Java,因为我在城市买房买车!让前任看看新的面试一面:1hmysql知道哪些原创 2021-05-27 18:01:39 · 219 阅读 · 0 评论 -
5年BAT 老兵的经验之谈!如何编写高效优雅的Java程序?
大家好!我是老猿,一个热爱技术的程序猿,Java行业入行7年,每天都在学习和分享的路上!1.面向对象 1.1 构造器参数太多怎么办? 对于多个成员变量的类构造函数,对于不同参数个数的构造函数一般需要定义多个构造函数,比较麻烦。 对于JavaBean模式,使用set/get方式可能会使得得到的对象,某个成员变量没有初始化就使用了该成员变量,会有问题。 比较好的初始化方式是用Builder构造者模式。初始化直接采用链式初始化的方式进行初始化。 用builder模式,用在 1、5个或者5个以上的成员变量原创 2021-05-21 16:26:18 · 207 阅读 · 2 评论 -
毕业五年,年薪百万,我掌握了这些java最简单粗暴的入门线程方法
大家好!我是老猿,一个热爱技术的程序猿,Java行业入行7年,每天都在学习和分享的路上!线程1.简介大家都知道多线程给我们带来了更好的资源利用和更好的程序响应,所以关于它的简介我就不多阐明了,大家可以自行搜索,我主要讲的就是重点线程就是独立的执行路径;在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程、gc线程;对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;线程会带来额外的开销,如cpu调度时间,并发控制开销;每个线程在自己的工作内存交互,内存控制不当会造成数据不一致;2.线程创原创 2021-05-21 11:21:10 · 140 阅读 · 4 评论 -
太香!终于有阿里大牛用15分钟,把Java多线程性能优化讲明白了
大家好!我是老猿,一个热爱技术的程序猿,Java行业入行7年,每天都在学习和分享的路上!正文大家使用多线程无非是为了提高性能,但如果多线程使用不当,不但性能提升不明显,而且会使得资源消耗更大。下面列举一下可能会造成多线程性能问题的点:死锁过多串行化过多锁竞争切换上下文内存同步下面分别解析以上性能隐患死锁关于死锁,我们在学习操作系统的时候就知道它产生的原因和危害,这里就不从原理上去累述了,可以从下面的代码和图示重温一下死锁产生的原因:public class LeftRightDeadlo原创 2021-05-20 11:40:05 · 132 阅读 · 4 评论 -
15分钟教你快速学会!JVM内存区域异常分析
Java虚拟机在执行java程序时会把它所管理的内存会分为若干个不同的数据区域,不同的区域在内存不足时会抛出不同的异常。接下来将对各区域分别进行分析介绍,内容包括触发各区域OutOfMemoryError异常的代码,以及对其进行排查判定的过程。还会初步涉及几个与内存相关的最基本虚拟机参数。1、Java堆溢出Java堆用于存储对象实例,只要不断创建对象并保证对象不会被回收,那么当对象数量到达最大堆的容量限制后就会产生堆内存溢出异常。测试代码如下:/** * 探究Java堆溢出 * VM Args原创 2021-05-18 16:58:29 · 246 阅读 · 6 评论 -
90%的程序员都不知道的Redis过期删除策略和内存淘汰策略
先自己思考一下这些问题:①、如何设置Redis键的过期时间?②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗?③、如何设置Redis的内存大小?当内存满了之后,Redis有哪些内存淘汰策略?我们又该如何选择?如果上面的几个问题你都懂,那么下面的内容你就不用看了;如果你不是很懂,那就带着这些问题往下看。1、设置Redis键过期时间 Redis提供了四个命令来设置过期时间(生存时间)。①、EXPIRE :表示将键 key 的生存时间设置为 ttl原创 2021-05-18 11:37:17 · 119 阅读 · 0 评论 -
采访了900个大厂员工,终于总结出10大MySQL性能调优方法
MYSQL是什么就不需要我一一解释了,一般都是工作2年的架构师所掌握的必备技能之一一定看到最后哦!!!所有方法都是整理实践亲测有效才会分享给大家!!1.选择合适的存储引擎: InnoDB现在基本都是默认选择InnoDB,不知道你们的习惯是什么,我自己测试的时候我觉得MyISAM 比 InnoDB 速度快,为什么?很简单 MyISAM 只缓存索引,而 InnoDB 缓存数据和索引,MyISAM 不支持事务。但是 如果你使用 innodb_flush_log_at_trx_commit = 2 你.原创 2021-05-17 17:26:03 · 137 阅读 · 0 评论 -
(最终篇)一文看透垃圾回收,深入剖析,浅入深出
由于上一篇文章篇幅比较多,我们在这一篇文章重点讲解上一篇文章中提到的 CMS 垃圾回收器,让你可以更好的理解垃圾回收的过程。还没阅读过上一篇文章的朋友可以点击此处查看以便更好理解:关于垃圾回收你真的了解透彻了吗?我熬夜深度剖析了一下在这里首先给你介绍几个概念:Minor GC:发生在年轻代的 GC。 Major GC:发生在老年代的 GC。 Full GC:全堆垃圾回收。比如 Metaspace 区引起年轻代和老年代的回收。理解了这三个概念,我们再往下看。CMS 的全称是 Most原创 2021-04-12 21:56:22 · 142 阅读 · 0 评论 -
如何在亿级流量高并发下进行估算和调优?直接上实战案例
本篇文章主要讲解如何在大流量高并发场景下进行估算和调优。我们知道,垃圾回收器一般使用默认参数,就可以比较好的运行。但如果用错了某些参数,那么后果可能会比较严重,我不只一次看到有同学想要验证某个刚刚学到的优化参数,结果引起了线上 GC 的严重问题。所以你的应用程序如果目前已经满足了需求,那就不要再随便动这些参数了。另外,优化代码获得的性能提升,远远大于参数调整所获得的性能提升,你不要纯粹为了调参数而走了弯路。那么,GC 优化有没有可遵循的一些规则呢?这些“需求”又是指的什么?我们可以将目标归结为三原创 2021-04-02 17:57:39 · 209 阅读 · 0 评论 -
大厂面试题:有了G1还需要其他垃圾回收器吗?我教你怎么答
本篇文章我们主要来看下这两个高频的面试考题:G1 的回收原理是什么?为什么 G1 比传统 GC 回收性能好? 为什么 G1 如此完美仍然会有 ZGC?我们在上次,简要的介绍了 CMS 垃圾回收器,下面我们简单回忆一下它的一个极端场景(而且是经常发生的场景)。在发生 Minor GC 时,由于 Survivor 区已经放不下了,多出的对象只能提升(promotion)到老年代。但是此时老年代因为空间碎片的缘故,会发生 concurrent mode failure 的错误。这个时候,就需要降级为原创 2021-04-01 21:32:50 · 311 阅读 · 0 评论 -
最简单的JVM内存结构图!既详细又简单明了,十分钟掌握
JVM内存结构图大家好,好几天没有更新了,今天的内容有点多,我们详细介绍下JVM内部结构图,还是和之前一样,案例先行,方便大家理解记忆。/** * @author :jiaolian * @date :Created in 2021-03-10 21:28 * @description:helloworld测试jvm内存区域 * @modified By: * 公众号:叫练 */public class HelloWorldTest { public static.原创 2021-03-23 22:00:02 · 1270 阅读 · 0 评论 -
当Parallel遇上了DI—Spring并行数据聚合最佳实践
分析淘宝PDP让我们先看个图, Taobao的PDP(Product Detail Page)页.打开Chrome Network面板, 让我们来看taobao是怎么加载这个页面数据的. 根据经验, 一般是异步加载的, 要么是XHR,要么就是js(jsonp), 你应该很快可以找到还能看到这个接口的性能神奇的是,taobao竟然在一次请求中拉下了整个PDP页的完整数据, 而且服务端处理耗时不到125ms首先, 这么做有什么好处?前后端开发对接简单 在...原创 2021-03-21 21:04:24 · 177 阅读 · 0 评论 -
实践!在Spring Boot启动时添加方法运行,一文全懂!
springboot最佳实践:在Spring Boot启动时添加方法运行在开发Spring Boot应用程序时,有时我们需要在启动时运行方法或一段代码。这段代码可以是任何内容,从记录某些信息到设置数据库,cron作业等。我们不能仅将此代码放入构造函数中,因为所需的变量或服务可能尚未初始化。这可能导致空指针或其他一些异常。为什么我们需要在Spring Boot启动时运行代码?由于多种原因,我们需要在应用程序启动时运行方法,记录重要的事情或说应用程序已启动的消息 处理数据库或文件,建立索引,创原创 2021-02-02 20:18:34 · 1202 阅读 · 0 评论 -
阿里一面就落马,恶补完这份“阿里面试宝典”后,竟上岸蚂蚁金服!
一、我也曾后悔过踏入程序员这一职业相信大家考上大学时应该都有面临过选专业这一道难题吧,我同样没有避免,但是我还是算比较果断的,因为我从初中开始就对计算机感兴趣,然后就很佛的报了计算机专业,大学时,我对这个专业还是一直抱有很大的希望的。直到毕业工作三年了,发现现在的工作只有加不完的班,敲不完的代码,增删改查,完全失去了灵魂,和我当初的初心完全是相反的,再三考虑后我辞职去面试了一直向往的企业“阿里”,但无奈一面就被刷了下来,那段时间,我真的自闭到后悔自己踏入这个行业。文章中会展示我一面整理的笔记以原创 2021-02-01 17:25:02 · 775 阅读 · 3 评论 -
还搞不懂JUC中的AQS?一顿饭的时间就可以看懂
AQS提供了一个框架来实现阻塞锁和依赖于先进先出(FIFO)等待队列的相关同步器(信号量、事件等),是实现 ReentrantLock、CountDownLatch、Semaphore、FutureTask 等类的基础核心,对应于java.util.concurrent.locks.AbstractQueuedSynchronizer。AQS同时支持独占锁和共享锁。通常,实现AbstractQueuedSynchronizer的子类只支持其中一种模式,但这两种模式都可以发挥作用,例如在ReadWrite原创 2021-01-28 17:51:36 · 163 阅读 · 0 评论 -
你知道开源框架怎么实现运维编排吗?其实很简单
在日常的工作中通常会组合几个系统的相关功能共同完成某个业务场景,这时候通常在一般的微服务中就需要使用分布式事务来解决,或者通过本文说的编排的方式来解决,本文算是这个系列的入门篇,主要是介绍下笔者在实际工作中的尝试,后续会持续更新一些内部的原理与更好玩的生产实践1.背景在接手的运维平台中之前的设计是在一个大的controller将完成某个业务场景的代码全部写在一起,然后中间为了兼容各种之前的平台和场景的问题,充斥着大量的if else以及硬编码,导致出了问题需要就要人为介入排查,扩展性、健壮性几乎为零原创 2021-01-27 17:28:34 · 289 阅读 · 0 评论 -
IDEA插件:你会开发多线程文件下载插件吗?不会就来学学
摘要上周使用Java开发了大文件多线程下载工具类,自己平时的文件下载也在使用这个工具,下载速度确实提升不少,但是每次下载都要去打开项目运行代码,觉得实在不是很方便;考虑到每天我们都会使用到IDEA开发工具,所以就决定把这个下载工具做成IDEA的插件,文章末尾附上插件下载地址。❝Java实现大文件多线程下载Gitee地址:gitee.com/silently952…IDEA多线程文件下载插件Github地址:github.com/silently952…Gitee地址:gitee.c原创 2021-01-19 17:28:39 · 183 阅读 · 1 评论 -
MinIO对象存储与K8S整合
一、MinIO 简介MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。二、MinIO 优点高性能 minio是世界上最快的对象存储(官网说的: min.io/) 弹性扩原创 2021-01-18 17:53:18 · 6777 阅读 · 6 评论 -
不懂就来看看!多线程之线程可见性synchronized
synchronized的规定线程解锁前,必须把共享变量刷新到主内存 线程加锁前将清空工作内存共享变量的值,需要从主存中获取共享变量的值。加锁(synchronized 同步)的功能不仅仅局限于互斥行为,同时还存在另外一个重要的方面:内存可见性。我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且还希望确保当一个线程修改了对象状态后,其他线程能够看到该变化。而线程的同步恰恰也能够实现这一点。内置锁可以用于确保某个线程以一种可预测的方式来查看另一个线程的执行结果。为了确原创 2021-01-18 17:47:03 · 104 阅读 · 2 评论 -
沉寂唯品会3年,毅然辞职冲刺阿里,我是怎么全心备战即将到来的金三银四的?
自我阐述三年前我还是一名毕业于湖南某学院软件工程的毕业生,通过校招的方式我进入了唯品会历经长达六个月的实习时光,其实唯品会对待实习生的考核机制还是算严格的,我从事的是后端开发岗,我记得当时我这个部门是有十八名实习生,最终加我也就留下了三个人。实习期间我很努力,被留下来我觉得也是理所当然的,这三年来我一直都很努力,所以我也比同期的员工进步得快,也得到了自己努力该得到的回报,总体也算是蛮顺利的吧。既然顺利,为何要辞职呢?我和大部分朋友一样,出生在乡村,也许是家庭的原因,我从小到大都比较内向,其实原创 2021-01-17 22:17:13 · 202 阅读 · 0 评论 -
还在用你那个很难用的JWT库?推荐一个超好用的
摘要以前一直使用的是jjwt这个JWT库,虽然小巧够用,但对JWT的一些细节封装的不是很好。最近发现了一个更好用的JWT库nimbus-jose-jwt,简单易用,API非常易于理解,对称加密和非对称加密算法都支持,推荐给大家!简介nimbus-jose-jwt是最受欢迎的JWT开源库,基于Apache 2.0开源协议,支持所有标准的签名(JWS)和加密(JWE)算法。JWT概念关系这里我们需要了解下JWT、JWS、JWE三者之间的关系,其实JWT(JSON Web Token)指的是一原创 2021-01-17 21:46:49 · 1708 阅读 · 1 评论 -
基于微服务成熟度模型的高可用优化实践
前言 随着微服务的流行,每个互联网公司后台都有无数大大小小的服务,服务与服务之间又有着千丝万缕的调用关系。要保证整个微服务系统的成熟稳定,就必须保证每个微服务的成熟度。但如何来定义服务的成熟度?应该从哪些纬度来考量?各个纬度里又有哪些普遍的问题?如何来优化? 本文介绍了爱奇艺技术产品团队用来衡量服务成熟度的模型,并基于此模型对多个后台服务进行评估,总结出了一些常见的低分项,并对低分项整理了相关优化方案。希望对大家有所帮助。01服务成熟度模型 为了能够对服务的...原创 2021-01-15 17:54:01 · 224 阅读 · 0 评论 -
你知道dubbo怎么优雅下线吗?一文解析以及附上解决方法
问题背景我们微服务之间的远程调用使用的是dubbo框架(版本2.4.9),在最近几次服务的发布中,我们发现在dubbo provider服务的重启过程中,如果此时正处于业务的高峰期,短时间内会有大量的rpc调用失败,如果consumer侧没有重试机制或本地兜底策略的话,很可能导致业务异常。为了解决上述问题,我们有必要知道我们服务上下线过程中,dubbo究竟做了哪些事情。服务上线首先看在上线过程中,dubbo是如何做到服务的注册和发现的。dubbo的架构如下图:对于provide.原创 2021-01-15 17:48:41 · 3640 阅读 · 1 评论 -
带你深入理解InnoDB的表空间
页面类型回顾InnoDB是以页为单位管理存储空间的,我们的聚簇索引(也就是完整的表数据)和其他的二级索引都是以B+树的形式保存到表空间的,而B+树的节点就是数据页。这个数据页的类型名其实是:FIL_PAGE_INDEX类型名称 十六进制 描述 FIL_PAGE_TYPE_ALLOCATED 0x0000 最新分配,还没使用 FIL_PAGE_UNDO_LOG 0x0002 Undo日志页 FIL_PAGE_INODE 0x0003 段信息节原创 2021-01-14 17:56:43 · 305 阅读 · 1 评论 -
一顿饭的时间就可以看懂!以太坊源码分析之txpool
交易池概念原理交易池工作概况:交易池的数据来源主要来自: 本地提交,也就是第三方应用通过调用本地以太坊节点的RPC服务所提交的交易; 远程同步,是指通过广播同步的形式,将其他以太坊节点的交易数据同步至本地节点; 交易池中交易去向:被Miner模块获取并验证,用于挖矿;挖矿成功后写进区块并被广播 Miner取走交易是复制,交易池中的交易并不减少。直到交易被写进规范链后才从交易池删除; 交易如果被写进分叉,交易池中的交易也不减少,等待重新打包。关键数据结构TxPoolConfig.原创 2021-01-14 17:53:21 · 411 阅读 · 1 评论 -
这是什么操作?简单解析为什么要看源码
前言很多人都有一个疑惑,为什么面试都喜欢问原理,问源码.但是实际工作根本用不上,也就是大家常说的,面试造火箭,进去拧螺丝.我身边也有不少朋友问过我,我给他们的回答是.如果不看源码,不懂原理,出了问题你怎么解决?他们给我的答复基本都是两个字,"搜索"也确实,工作中大部分问题通过复制错误信息搜索都能解决,加上现在框架越来越多,拼积木式的编程方式加上搜索引擎,让越来越多人产生了开发是件很容易的事的错觉.我也一直想举一个搜索几乎搜不到,要看源码才能弄懂其中缘由的例子.正巧这件事发生...原创 2021-01-13 17:56:42 · 133 阅读 · 4 评论