java
文章平均质量分 92
南橘ryc
《Java今法修真》
展开
-
【进阶之路】Java的类型擦除式泛型
Java选择的泛型类型叫做类型擦除式泛型。什么是类型擦除式泛型呢?就是Java语言中的泛型只存在于程序源码之中,在编译后的字节码文件里,则全部泛型都会被替换为原来的原始类型(Raw Type),并且会在相应的地方插入强制转型的代码。因此,对于运行期间的Java程序来说ArrayList< Integer>和ArrayList< String>其实是同一个类型。这也就是Java选择的泛型类型叫做类型擦除式泛型的原因。ArrayList<String> stringArr原创 2021-08-07 12:04:53 · 233 阅读 · 1 评论 -
【进阶之路】动态代理与字节码生成
这段时间换了新工作,因为去了外企,所以对英语的要求突然猛增,现在每天靠着谷歌翻译过日子。在开会的时候,经常遇到不懂的单词,很多时候都需要记下读音,事后再慢慢根据语境去找对应的单词,日子过得可谓是有滋有味。于是乎,自我充电的时间大部分用来学习英语了,所以这段时间更新的节奏会很慢~对于大多数Java程序员而言,我们会经常用到字节码生成与动态代理技术,比如编译时织入的AOP框架中,在Spring的Bean组织管理中,亦或是Web服务器的JSP编译器里。总之,我们在不知不觉中已经大量的用到了这些技术了。动态.原创 2021-07-31 11:50:34 · 455 阅读 · 0 评论 -
【进阶之路】深入理解Java虚拟机的类加载机制(长文)
我们在参加面试的时候,经常被问到一些关于类加载机制的问题,也都会在面试之前准备的时候背好答案,但是我们是否有去深入了解什么是类加载机制呢?这段时间因为一些事情在家看了些书,这次就和大家分享一些关于Java类加载机制的知识。虚拟机的类加载机制:Java虚拟机把数据加载到内存,同时对数据进行校验、解析、初始化等一些列操作,最终把Class文件变为虚拟机可以直接使用的Java类型文件。一个类从被加载到虚拟机内存开始,直到卸载出内存为止,他的生命周期会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段(原创 2021-06-29 12:03:07 · 134 阅读 · 1 评论 -
【进阶之路】详解数据库事物与隔离级别
这段时间忙于上线和重构、写文章的是减少了很多,更新不得不变得迟缓起来~一、事务的特性事务是指作为单个逻辑工作单元执行的一系列操作,要么都执行成功,要么都执行失败。数据库事物有四种特征:即原子性、一致性、隔离性和持久性,也就是我们俗称的 ACID 特性。事务处理可以确保除只有本事务单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。事务是数据库运行中的一个逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。事务主要用于复杂度高、重要且会出现并发的任务。比如银行扣款、生成订单、转账汇款、.原创 2021-03-24 14:51:31 · 114 阅读 · 0 评论 -
【进阶之路】自定义注解介绍与实战
在使用spring框架的时候,我们经常会感叹注解式编程真是大大简化了开发的时间,几个小小的注解,就能解决一系列的配置问题,让写代码像写诗一样轻松明快。我们都知道,在spring框架的前期,大多使用XML配置进行开发。XML配置起来有时候冗长,如实体类的映射,使用XML进行开发会显得十分复杂。同时注解在处理一些不变的元数据时有时候比XML方便的多,比如spring 声明式事务管理,如果用XML写的代码会多的多。注解与Java Bean紧密结合,既大大减少了配置文件的体积,又增加了Java Bean的可读性与原创 2021-02-24 16:06:05 · 221 阅读 · 0 评论 -
【进阶之路】服务网格Service Mesh到底是什么
首先,看到Service Mesh这个词,相信很多同学都听说过这个词,但是具体它是干什么的,每个人就各有各的理解了。我第一次系统地了解Service Mesh的时候,也是通过帮同事买课返现,意外地看到这个名词,旺盛的好奇心迫使我点了进去。然后,不多时,我便一头雾水的走了出来。啊这,里面的弯弯绕绕比盥洗室之主还复杂啊!于是乎,在经过一段时间的学习,对Service Mesh有所了解之后,我决定写下这篇文章与大家分享我的理解。一、什么是Service Mesh开门见山,先站在前辈的肩膀上给出定义:Ser原创 2021-01-26 16:01:25 · 328 阅读 · 0 评论 -
【进阶之路】调用链监控原理与zipkin项目简单搭建
在单体服务的架构中,所有的服务,组件都在一台机器上,如果需要监控服务的异常与耗时,往往是比较简单的。我们可以使用 AOP 在调用具体的业务逻辑前后分别打印一下时间即可计算出整体的调用时间。在问题追踪的时候,也可以在关键节点打印日志。但是在微服务架构里就不同了,一次请求会涉及到多个模块与系统,往往需要多台机器的相互协作才能完成。而一系列的请求,不仅会涉及到串联并联、还有同步异步之分。这个时候,如果依然采取单体架构中服务监控的方式,那么确定这个请求背后调用了哪些服务,哪些模块,哪些节点及调用的先后顺序,调用的原创 2021-01-15 15:57:08 · 325 阅读 · 2 评论 -
【进阶之路】和南橘一起探索连接池(一)
一、连接池的定义什么叫连接池?顾名思义,连接池就是将应用所需的连接对象放在池中,每次访问时从池中获取,使用完毕再放回池中,以达到连接复用的目的。连接池和线程池很像,都是为了减少连接对象在创建、销毁连接过程中不必要消耗的资源。大家接触最多的连接池、大概是数据库连接或者tomcat连接池,C3P0、DBCP、Tomcat Jdbc Pool、BoneCP、Druid等。这些连接池的目的都非常的纯粹,即在服务启动的时候,预先生成若干条连接,每当有请求过来,就从中取出一个,执行操作,执行完成后再放回,从而避免反原创 2021-01-11 20:32:20 · 118 阅读 · 0 评论 -
【进阶之路】任务调度监控开发详解
新的一年、旧的方式,这一次就从一个需求开发的角度和大家分享监控系统的开发。前段时间与大家分享了定时任务调用平台xxl-job,也简单地讲了讲平台的结构模式、调度方法。【进阶之路】定时任务调用平台xxl-job调用任务的过程中,如果xxl-job的代码能够顺利执行,但是本身需要执行的任务没有顺利执行成功,或者因为一些问题导致任务延迟执行甚至没有执行,xxl-job并不会正常报错通知。这个时候,我们就需要用一些其他的方法来协助监控定时任务的执行。在大佬的要求下,我这边设计了一个方案,如图所示:.原创 2021-01-08 09:15:24 · 999 阅读 · 0 评论 -
【进阶之路】并发编程(三)-非阻塞同步机制
导言这一篇的内容主要来自于《java并发编程实战》,有一说一,看这种写的很专业的书不是很轻松,也没办法直接提高多少开发的能力,但是却能更加夯实基础,就像玩war3,熟练的基本功并不能让你快速地与对方拉开差距,但是却能再每一次团战中积累优势。近年来,并发编程的领域更多的偏向于使用非阻塞算法,这种算法底层用原子机器指令(如比较交换CAS之类的)来替代锁用以确保数据在并发访问中的一致性。这样的非阻塞算法广泛的用于在操作系统和JVM中实现线程/程序调用机制、垃圾回收算法等。java5.0后,使用原子变量原创 2021-01-01 11:50:51 · 228 阅读 · 0 评论 -
【进阶之路】线程池拓展与CompletionService操作异步任务
大家好,我是练习java两年半时间的南橘,小伙伴可以一起互相交流经验哦。一、扩展ThreadPoolExecutor1、扩展方法介绍ThreadPoolExecutor是可以扩展的,它内部提供了几个可以在子类中改写的方法(红框内)。JDK内的注解上说,这些方法可以用以添加日志,计时、监视或进行统计信息的收集。是不是感觉很熟悉?有没有一种spring aop中 @Around @Before @After三个注解的既视感?我们来对比一下ThreadPoolExecutorspring.原创 2020-12-22 09:15:21 · 262 阅读 · 0 评论 -
【开源之路】温蒂、一次简单的尝试
主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, greenwillow, v-green贡献主题:https://github.com/xitu/juejin-markdown-themestheme: juejinhighlight:干点正事吧,巴巴托斯##V1.01 2020/11/23 温蒂类信息对比处理工具包,目前可以用来对比更新前后的类信息.原创 2020-11-23 10:23:15 · 143 阅读 · 0 评论 -
【进阶之路】理解行为型模式开发(责任链模式)
大家好,我是练习java两年半时间的南橘,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助【进阶之路】理解结构型模式开发(桥接模式)【进阶之路】理解结构型模式开发(享元模式)【进阶之路】理解结构型模式开发(适配器模式)之前和大家分享了设计模式中的结构型模式,它主要是描述如何将类或对象通过组合新来实现功能,而我也是.原创 2020-10-19 15:35:38 · 151 阅读 · 0 评论 -
【进阶之路】理解结构型模式开发(适配器模式)
大家好,我是练习java两年半时间的南橘,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助【进阶之路】理解结构型模式开发(桥接模式)【进阶之路】理解结构型模式开发(享元模式)之前的文章,我们讲过桥接模式。桥接模式是我们代码里抽象与现实之间的桥梁,而今天要讲的适配器模式,则可以理解为不兼容的接口(类)之间的桥梁,就像读卡器至.原创 2020-10-15 20:04:14 · 150 阅读 · 0 评论 -
【进阶之路】Java代码性能调优-基准测试工具JMH(三)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助第一件事还是把思维导图贴给大家,因为用的是免费版,所以有水印,如果需要原始版本的话,可以加我的微信:【进阶之路】Java代码性能调优(一)【进阶之路】Java代码性能调优(二)前两章介绍了JA原创 2020-06-22 20:08:26 · 575 阅读 · 0 评论 -
【进阶之路】Java代码性能调优(二)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助第一件事还是把思维导图贴给大家,因为用的是免费版,所以有水印,如果需要原始版本的话,可以加我的微信:上一章介绍了字符串、数字和集合类的一些高效用法,这一章就继续查漏补缺、介绍更多的性能优化技巧。【进阶原创 2020-06-11 21:10:28 · 268 阅读 · 0 评论 -
【进阶之路】Java代码性能调优(一)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助第一件事还是把思维导图贴给大家,因为用的是免费版,所以有水印,如果需要原始版本的话,可以加我的微信:一、字符串的优化1、String优化String对象是java中重要的数据类型,在大部分情况下我们都原创 2020-06-08 20:58:02 · 414 阅读 · 0 评论 -
【进阶之路】SM4国密算法与实现
一、起因最近在工作中,突然一个交易异常缓慢,调用时间高达40wms,严重影响了整个集群的生产效率。得知这个情况,我开始对整个交易进行剖析,最终发现原来是RSA非对称加密算法的锅。RSA作为一种非对称的加密算法,其中很重要的一特点是当数据在网络中传输时,用来加密数据的密钥并不需要也和数据一起传送。因此,这就减少了密钥泄露的可能性。RSA在不允许加密方解密数据时也很有用,加密的一方使用一个密钥,称为公钥,解密的一方使用另一个密钥,称为私钥,私钥需要保持其私有性。RSA非常安全,但是效率却很低,本身的秘原创 2020-05-26 20:18:23 · 14588 阅读 · 7 评论 -
【进阶之路】分布式系统中的柔性事务解决方案
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助这是消息中间件的文章,大家没有看过的可以跟着看一下【进阶之路】消息队列——原理及选型(一)...原创 2020-04-25 19:59:28 · 660 阅读 · 0 评论 -
【进阶之路】消息队列——RocketMQ原理(三)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助这是消息中间件的文章,大家没有看过的可以跟着看一下【进阶之路】消息队列——原理及选型(一)【...原创 2020-04-19 13:59:12 · 1078 阅读 · 0 评论 -
【进阶之路】消息队列——RabbitMQ原理(二)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助这是消息中间件的文章,大家没有看过的可以跟着看一下【进阶之路】消息队列——原理及选型(一)【...原创 2020-04-12 15:55:05 · 3063 阅读 · 0 评论 -
【进阶之路】消息队列——原理及选型(一)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助第一件事还是把思维导图贴给大家,因为用的是免费版,所以有水印,如果需要原始版本的话,可以加我的微信...原创 2020-04-09 21:34:12 · 1184 阅读 · 0 评论 -
【进阶之路】攻克JVM——JVM的垃圾收集器(三)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助这是之前的两篇,没看过的可以一起看一下攻克JVM——JVM对象及对象的访问定位(一)攻克JV...原创 2020-04-07 20:37:45 · 342 阅读 · 0 评论 -
【进阶之路】攻克JVM——JVM的垃圾回收(二)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助这是之前的几篇文章,有兴趣的同学可以看看(暗搓搓给自己打广告)索引中一些易忽视的点Redis...原创 2020-04-05 12:54:42 · 172 阅读 · 0 评论 -
【进阶之路】攻克JVM——JVM对象及对象的访问定位(一)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助这是之前的几篇文章,有兴趣的同学可以看看(暗搓搓给自己打广告)索引中一些易忽视的点Redis...原创 2020-04-01 09:46:19 · 345 阅读 · 0 评论 -
【进阶之路】包罗万象——JAVA中的锁
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助这是之前的几篇文章,有兴趣的同学可以看看(暗搓搓给自己打广告)索引中一些易忽视的点Redis...原创 2020-03-30 20:44:30 · 921 阅读 · 0 评论 -
【进阶之路】Redis基础知识两篇就满足(一)
导言大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助这篇文章的出现,首先要感谢一个人三太子敖丙 ,就是他的文章让我发现,原来Redis的知识如此的多...原创 2020-03-27 20:55:18 · 442 阅读 · 0 评论 -
【进阶之路】基于ShardingSphere的线上业务数据脱敏解决方案
因为某种原因,需要去考虑数据脱敏的问题,但是既不想因为脱敏而影响数据的操作性,又需要对一些敏感信息进行可靠的保护。因此,正好解决了手头问题的我就开始研究各种脱敏手段、寻求最适合目前现状的脱敏解决方案。对于已经上线的业务,如何在不修改业务逻辑、业务SQL的情况下,透明化、安全低风险地实现无缝进行脱敏改造呢?Apache的ShardingSphere进入了我的视野,Apache ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Shardin原创 2020-12-14 19:38:43 · 457 阅读 · 0 评论 -
【进阶之路】线程池配置与调优的一些高级选项(一)
这一篇的内容主要来自于《java并发编程实战》,有一说一,看这种写的很专业的书不是很轻松,也没办法直接提高多少开发的能力,但是却能更加夯实基础,就像玩war3,熟练的基本功并不能让你快速地与对方拉开差距,但是却能再每一次团战中积累优势。一、线程池的基础1、线程池的相关属性:corePoolSize(线程池的基本大小):当提交一个任务到线程池时,线程池会创建一个线程来执行任务,即使其他空闲的基本线程能够执行新任务也会创建线程,等到需要执行的任务数大于线程池基本大小时就不再创建。如果调用了线程池的.原创 2020-12-08 11:08:05 · 350 阅读 · 0 评论 -
【进阶之路】定时任务调用平台xxl-job
大家好,我是练习java两年半时间的南橘,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和工作中的重点(自我认为),希望给大家带来一些帮助定时任务很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多可以相互替换场景。如,发货成功发短信通知客户的业务场景,我们可以在发货成功后发送MQ消息到队列.原创 2020-12-04 14:50:45 · 2001 阅读 · 0 评论 -
阿里巴巴-菜鸟网络和申通快递面试
开头的话今年无意中给菜鸟网络投了简历,本来觉得应该没啥机会,突然有一天收到邮件,告诉我阿里一位帅哥(肯定是)推荐我应聘菜鸟网络的职位,让我等待面试,很开心,于是我在工作之余开始准备面试。过了五六天、下午三四点突然接到一个电话,问我可不可以开始面试。当时我手上的活已经做完了,就毅然决然的答应了一面1、讲一讲Resource和Autowired的区别2、熟悉hashmap吗?它的数据结构是什...原创 2020-02-20 19:21:09 · 3736 阅读 · 2 评论