重学 Java 设计模式:实战原型模式
程序员这份工作里有两种人;一类是热爱喜欢的、一类是仅当成工作的。而喜欢代码编程的这部分人会极其主动学习去丰富自己的羽翼,也非常喜欢对技术探索力求将学到的知识赋能到平时的业务需求开发中。对于这部分小伙伴来说上班写代码还能赚钱真的是幸福! 无论做哪行那业你都喜欢,往往来自从中持续不…
重学 Java 设计模式:实战建造者模式
无论承接什么样的需求,是不是身边总有那么几个人代码写的烂,但是却时常有测试小姐姐过来聊天(求改bug)、有产品小伙伴送吃的(求写需求)、有业务小妹妹陪着改代码(求上线),直至领导都认为他的工作很重要,而在旁边的你只能蹭点吃的。 这样的小伙伴,可能把代码写的很直接,ifelse多…
重学 Java 设计模式:实战抽象工厂模式
代码一把梭,兄弟来背锅。 大部分做开发的小伙伴初心都希望把代码写好,除了把编程当作工作以外他们还是具备工匠精神的从业者。但很多时候又很难让你把初心坚持下去,就像;接了个烂手的项目、产品功能要的急、个人能力不足,等等原因导致工程代码臃肿不堪,线上频出事故,最终离职走人。 这就有点…
重学 Java 设计模式:实战工厂方法模式
好看的代码千篇一律,恶心的程序升职加薪。 该说不说几乎是程序员就都知道或者了解设计模式,但大部分小伙伴写代码总是习惯于一把梭。无论多少业务逻辑就一个类几千行,这样的开发也可以归纳为三步;定义属性、创建方法、调用展示,Done!只不过开发一时爽,重构火葬场。 好的代码不只为了完成…
11万字的字节码编程总结成PDF,asm、Javassist、bytebuddy、javaagent
让人怪不好意思的,说是出书有点膨胀💥,毕竟这不是走出版社的流程,选题、组稿、编著、审读、加工到出版发行。 讲道理,市面上以及网络搜索中都基本很少有成体系的关于字节码编程的知识,这主要由于大部分开发人员其实很少接触这部分内容,包括;ASM、Javassist、Byte-budd…
字节码编程,Byte-buddy篇三《使用委托实现抽象类方法并注入自定义注解信息》
截至到本章节关于字节码框架 Byte-buddy 的大部分常用 API 的使用已经通过案例介绍比较全面了,接下来介绍关于如何去实现一个抽象类以及创建出相应注解(包括类的注解和方法的注解)的知识点。而注解的这部分内容在一些监控或者拦截处理的场景下还是比较常用的,所以在这章节我们会…
字节码编程,Byte-buddy篇二《监控方法执行耗时动态获取出入参类型和值》
就像是我们研究字节码编程最终是需要应用到实际场景中,例如:实现一款非入侵的全链路最终监控系统,那么这里就会包括一些基本的核心功能点;方法执行耗时、出入参获取、异常捕获、添加链路ID等等。而这些一个个的功能点,最快的掌握方式就是去实现他最基本的功能验证,这个阶段基本也是技术选型的…
自建云盘存储PDF书籍支持在线预览和下载
本篇文章只介绍如何自建云盘,不剐蹭任何云服务。 在技术学习的路上经常与同好交流心得,时而分享一些技术的PDF书籍。但也经常发现即使是一些可以开源的书籍,分享出来的链接也常常遇到链接失效问题。 尤其是最近希望把看过的一些不错的技术书籍和伙伴的推荐的一起汇总,并附上简单的书评和推荐…
字节码编程,Byte-buddy篇一《基于Byte Buddy语法创建的第一个HelloWorld》
相对于小傅哥之前编写的字节码编程; ASM、Javassist 系列,Byte Buddy 玩法上更加高级,你可以完全不需要了解一个类和方法块是如何通过 指令码 LDC、LOAD、STORE、IRETURN... 生成出来的。就像它的官网介绍; Byte Buddy 是一个代码…
汉字不能编程?别闹了,只是看着有点豪横!容易被开除!
最近有初学编程的小伙伴问小傅哥,汉字可以写代码吗。自己英文不好,要是汉字可以写代码就好了。难道你要的是「易语言」?其实并不是,小伙伴也是学习 Java 的初学者,刚刚学习到 Spring 看着一片没有注释的代码实在不好理解,要是都是汉字写的,那不和读作文一样了吗! 其实对于学习…
讲道理,只要你是一个爱折腾的程序员,毕业找工作真的不需要再花钱培训!
「标题」想吸引你进来参考下我的学习方式,或许能给你带来一些经验。当然不乏一些培训中也有超级优秀的开发人员。 讲道理,程序员上学这段时光相对每个人都是公平的。同样是拿到了一本 谭浩强 的《Java 2 实用教程》,也同样有一台笔记本电脑,和一个宿舍一张床。 「说说我自己」,刚上大…
字节码编程,Javassist篇五《使用Bytecode指令码生成含有自定义注解的类和方法》
到本章为止已经写了四篇关于字节码编程的内容,涉及了大部分的API方法。整体来说对 Javassist 已经有一个基本的使用认知。那么在 Javassist 中不仅提供了高级 API 用于创建和修改类、方法,还提供了低级 API 控制字节码指令的方式进行操作类、方法。 有了这样的…
字节码编程,Javassist篇四《通过字节码插桩监控方法采集运行时入参出参和异常信息》
1. 获取方法基础信息 2. 方法字节码插桩 字节码编程插桩这种技术常与 Javaagent 技术结合用在系统的非入侵监控中,这样就可以替代在方法中进行硬编码操作。比如,你需要监控一个方法,包括;方法信息、执行耗时、出入参数、执行链路以及异常等。那么就非常适合使用这样的技术手段…
《Netty+JavaFx实战:仿桌面版微信聊天》代码开源、上云部署、视频讲解,只为让你给点个Star!
与 Netty 的缘分是从 5.0 版本开始,当时网上资料也不多,就随着学习整理编写了一整套案例。但也就当我全套的案例编写没多久后,netty5.0,因最新版本的性能问题,被官网下掉了并主推 netty4.0 版本。好吧!就这样有很多小伙伴问我是不是可以写一套 netty4.0…
字节码编程,Javassist篇三《使用Javassist在运行时重新加载类「替换原方法输出不一样的结果」》
通过前面两篇 javassist 的基本内容,大体介绍了;类池(ClassPool)、类(CtClass)、属性(CtField)、方法(CtMethod),的使用方式,并通过创建不同类型的入参出参方法,基本可以掌握如何使用这样的代码结构进行字节码编程。 「那么」,今天我们尝试…
字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》
1. 反射调用字节码类方法 2. 查看使用Javassist生成的类 在上一篇 「Helloworld」 中,我们初步尝试使用了 Javassist字节编程的方式,来创建我们的方法体并通过反射调用运行了结果。大致了解到创建在使用字节码编程的时候基本离不开三个核心类;ClassP…
字节码编程,Javassist篇一《基于javassist的第一个案例helloworld》
1. 使用Javassist生成的类 2. 输出的测试结果 在字节码编程方面有三个比较常见的框架;ASM、byte-buddy、Javassist,他们都可以对这字节码进行操作,只是操作方式和控制粒度不同。 其中 「ASM」 更偏向于底层,需要了解 「JVM」 虚拟机中指定规范…
ASM字节码编程 | 用字节码增强技术给所有方法加上TryCatch捕获异常并输出
一套系统是否稳定运行,取决于它的运行健康度,而这包括;调用量、可用率、响应时长以及服务器性能等各项指标的一个综合值。并且在系统出现异常问题时,可以抓取整个业务方法执行链路并输出;当时的入参、出参、异常信息等等。当然还包括一些JVM、Redis、Mysql的各项性能指标,以用于快…
工作两年简历写成这样,谁要你呀!
最近有伙伴问小傅哥,我的简历怎么投递了都没有反应,心里慌的很呀。 工作两年了目前的公司没有什么大项目,整天的维护别人的代码,有坑也不让重构,都烦死了。荒废我一身技能无处施展,投递的简历也没人看。我是不动物园里的猩猩,狒狒了! 我要加班,我要996,我要疯狂编码,求给我个机会..…
ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称以及入参和出参结果并记录方法耗时
在我们实际的业务开发到上线的过程中,中间都会经过测试。那么怎么来保证测试质量呢?比如;提交了多少代码、提交了多少方法、有单元测试吗、影响了那些流程链路、有没有夹带上线。 大部分时候这些问题的汇总都是人为的方式进行提供,以依赖相信研发为主。剩下的就需要依赖有经验的测试进行白盒验证…