深圳幻海软件技术有限公司 欢迎您!

  • 代理模式——JDK动态代理与CGLib原理及对比分析

    1.前言首先回顾下代理模式(ProxyPattern)的定义:代理模式指为其他对象提供一种代理,以控制这个对象的访问,属于结构型设计模式。其适用于在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端于目标对象之间起到中介的作用。代理模式主要分为静态代理和动态代理两种方式,静

  • 从一个线上问题 重新认识R8编译器

    背景在过去的一段时间内,京东AndroidAPP通过图片压缩、图片转下载、资源混淆编译、插件化、插件后装、混合开发等一系列手段对安装包大小进行了优化,取得了不错的瘦身收益。在完成这些常规瘦身手段优化后,为了进一步优化安装包的大小,调研了谷歌官方新推出的R8编译器,了解到R8编译器在提升构建效率的同时

  • Java字节码,你还可以搲的更深一些!

    Java真的是长盛不衰,拥有顽强的生命力。其中,字节码机制功不可没。字节码,就像是Linux的ELF。有了它,JVM直接摇身一变,变成了类似操作系统的东西。要学习字节码,不能仅仅靠看枯燥的文档。本文会介绍几个有用的工具,可以非常容易的上手,来实际观测class文件这个小魔兽,助你搲的更深一些。1、字

  • 面向对象——什么是面向对象

    Java的核心思想就是OOP(面向对象)面向过程&面向对象面向过程思想步骤清晰简单,第一步做什么,第二步做什么(例如:吃饭,先买菜->洗菜->炒菜->吃)面向过程适合处理一些较为简单的问题面向对象思想物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分

  • 硬核 | 基于ASM实现Java类与接口的动态代理

    asm是一款编写字节码的框架,熟练使用可以加深对字节码指令的掌握。Java的动态代理​Java动态代理是基于接口代理的,所以首先我们得定义一个公共接口。现在代理用户接口,实现登陆逻辑和来打印登录的花费时间复制publicinterfaceUserService{booleanlogin(String

  • if快还是switch快?解密switch背后的秘密

     条件判断语句是程序的重要组成部分,也是系统业务逻辑的控制手段。重要程度和使用频率更是首屈一指,那我们要如何选择if还是switch呢?他们的性能差别有多大?switch性能背后的秘密是什么?接下来让我们一起来寻找这些问题的答案。switchVSif要尽量使用switch因为他的性能比较高

  • 必杀技:当报错信息看不出原因时,怎么办?

     今天遇到了一个错误,一般的错误提示会很明显,一看就知道是什么问题。今天遇到的这个说实话真的不好找原因,一般在这种情况下该怎么解决呢?分享下我的思路吧,不一定是最好的,至少有用。直接上图吧,下面是报错信息:为了方便查看,我把最重要的信息提取出来,如下:复制org.springframewo

  • Java 14发布了,不使用"class"也能定义类了?还顺手要干掉Lombok!

    2020年3月17日发布,Java正式发布了JDK14,目前已经可以开放下载。在JDK14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP359:Records官方吐槽最为致命早在2019年2月份,Java语言架构师BrianGoetz,曾经写过一篇文章(http://cr.openjdk

  • 为什么给Java代码加个空行,class文件就翻脸不认人了?

       复制public class HelloWorld {         public static void ma

  • 为什么给Java代码加个空行,class文件就翻脸不认人了?

    为了写出这几行优美的代码,主要是为了让它输出优美动听的乐符,我下了一番功夫。你不要觉得简单,我把它打印出来给普通的保洁阿姨去看,阿姨竟然连xjjdog都认不出来。别说代码了,中英文混血,就秒杀一大堆高干分子。复制public class HelloWorld {&nbs

推荐阅读