Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by " Ljava
通过方法引用获取属性名的底层逻辑是什么?-51CTO.COM
很多小伙伴可能都用过 MyBatis-Plus,这里边我们构造 where 条件的时候,可以直接通过方法引用的方式去指定属性名: LambdaQueryWrapper<Book> qw = new LambdaQueryWrapper<>(); qw.eq(Book::getId, 2); List<Book> list = bookMapper.selectList(qw); System.out.println("list = " + list); Book::getId 这就是方法引用,松哥之前也专门写过文章介绍相关内容,这里就不再多说。这里我们就单纯来说说为什么 MP 通过 Book::getId 就可以识别出来这里的属性名。 1.
代理模式 - VoidCm - 博客园
介绍 代理模式作为设计模式的一种,在各种框架体系中均有应用,代理代理,顾名思义,代替某个对象处理事情.代理模式:为对象提供一个替身,以控制对这个对象的访问,从而通过代理对象访问目标对象,好处是在目标对象基础上增加额外的功能操作,扩展目标对象的功能 Java体系中代理模式有三种形式 静态代理 动态代理 JDK 动态代理 CGLIB 动态代理 静态代理 1.定义一个接口 2.定义一个实现类,实现该接口 3.定义一个代理类,同样实现该接口 4.代理类持有实现类的引用 5.通过代理类屏蔽对目标对象的访问,并且可以在目标方法执行前后做一些自己想做的事情 //1.定义一个接口 public interface SmsService { String send(String message); } //2.定义一个实现类,实现该接口 public class SmsServiceImpl implements SmsService { @Override public String send(String message) { System.out.println("message = " +...
ASM字节码操作类库(打开java语言世界通往字节码世界的大门) - 京东云开发者 - 博客园
前言:授人以鱼不如授人以渔,应用asm的文章有很多,简单demo的也很多,那么ASM都具备哪些能力呢?如何去学习编写ASM代码呢?什么样的情景需要用到ASM呢?让我们带着这些问题阅读这篇文章吧。 这里由于篇幅限制做了删减(第六部分TreeApi和CoreApi的比较、核心API类的介绍等),如果有兴趣可以联系作者进行交流, 个人认为核心在于第五部分如何查看一个想写的类的ASM代码如何写,以及全面了解ASM都有哪些能力,这样在后面的特定场景下我们才会知道可以通过它来实现想做的功能 ASM是一个通用的Java字节码操作和分析框架。它可以用于修改现有类或直接以二进制形式动态生成类。ASM提供了一些常见的字节码转换和分析算法,可以从中构建定制的复杂转换和代码分析工具。ASM提供了与其他Java字节码框架类似的功能,但侧重于性能。由于它的设计和实现尽可能小和快,因此非常适合在动态系统中使用(但当然也可以以静态方式使用,例如在编译器中)。...
JNI动态注册以及JNI签名 - 故乡的樱花开了 - 博客园
一.动态注册和静态注册 注册native方法有两种方式,动态注册和静态注册。静态注册是在编译时进行注册,而且在java中声明的native方法和c/c++中的本地方法的对应关系是恒定的;比如说在com.example.test包下的Test类中声明了一个stringFromJNI()的native方法,那么它对应的c/c++中的本地方法名就是Java_com_example_test_Test_stringFromJNI();并且这个方法名不能做任何的修改,在java中调用stringFromJNI()函数时,就会按包名_类名_方法名的形式找到对应的方法并调用。而动态注册是在运行时进行注册的,而且本地方法的名字可以按自己的喜好随意取,只要说明了java中声明的native方法和c/c++中的本地方法的对应关系即可。下面用代码的形式来演示一下动态注册的使用步骤。 二.动态注册的步骤 1.在java中声明native方法,并在静态代码块中加载动态库: public class Test { static{ System.loadLibrary("dynamic"); //加载动态库...
Android Native Code开发学习(二)JNI互相传参返回调用
本教程为native code学习笔记,希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04,当然windows也是可以的,区别不大 一、native code介绍 native code就是在android项目中混合C++或者C语言进行开发,这样的好处是很多底层的东西需要使用C++/C的语言进行操作,而且在android开发中,使用C++和C混合开发能够大大增强逆向的难度,同时还能提升程序运行的效率,毕竟C++/C的效率不是其他语言能比得上的。 二、NDK的开发流程 首先我们要先在你android的java文件中进行一个声明,声明的格式是这种 public native String stringFromJNI(); 当然也可以加上参数 public native String stringFromJNI(String str); 然后我们在android activity中调用这个函数 @Override protected void onCreate(Bundle savedInstanceState) {...
Qt安卓开发经验技巧总结V202308 - 飞扬青云 - 博客园
pro中引入安卓拓展模块 QT += androidextras 。 pro中指定安卓打包目录 ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android 指定引入安卓特定目录比如程序图标、变量、颜色、java代码文件、jar库文件等。 AndroidManifest.xml 每个程序唯一的一个全局配置文件,里面xml格式的数据,标明支持的安卓版本、图标位置、横屏竖屏、权限等。这个文件是最关键的,如果没有这个文件则Qt会默认生成一个。 android/res/drawable-hdpi drawable-xxxhdpi 等目录下存放的是应用程序图标。 android/res/layout 目录下存放的布局文件。 android/res/values/libs.xml 存储的一些变量值。 android/libs 目录下存放的jar库文件。 android/src 目录下存放的java代码文件,可以是根据包名建立的一层层子目录,也可以直接在src目录下。 其他目录自行搜索安卓目录规范。...
Android Studio 进行NDK开发,实现JNI,以及编写C++与Java交互(Java调用本地函数)并编译出本地so动态库
(1)什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C/C++的动态库,并能自动将so和java应用一起打包成apk。NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。 (2)为什么使用NDK? 1)代码的保护:由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2)可以方便地使用现存的开源库:大部分现存的开源库都是用C/C++代码编写的。 3)提高程序的执行效率:将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。 4)便于移植:用C/C++写得库可以方便在其他的嵌入式平台上再次使用。 (3)什么是JNI? JNI全称为:Java Native Interface。JNI是本地编程接口,它使得在 Java 虚拟机内部运行的 Java代码能够与用其它语言(如 C、C++)编写的代码进行交互。...
synchronized中wait、notify的原理与源码 - bug的自我救赎 - 博客园
1.wait和notify的流程图 2.JVM源码 java层面wait的方法 public final native void wait(long timeout) throws InterruptedException; jvm中object.c static JNINativeMethod methods[] = { {"hashCode", "()I", (void *)&JVM_IHashCode}, {"wait", "(J)V", (void *)&JVM_MonitorWait}, {"notify", "()V", (void *)&JVM_MonitorNotify}, {"notifyAll", "()V", (void *)&JVM_MonitorNotifyAll}, {"clone", "()Ljava/lang/Object;", (void *)&JVM_Clone}, }; jvm层面wait方法的源码 JVM_ENTRY(void, JVM_MonitorWait(JNIEnv* env, jobject handle, jlong ms))...
聊聊NDK开发那些事
小余的自习室 郭霖 2023-03-24 / 今日科技快讯 /近日,中国移动(股价63.6港元,市值1.4万亿港元)在港交所发布2022年年度业绩公告,2022年实现营运收入为9373亿元,同比增长10.5%。公司股东应占利润为1254.59亿元,同比增长8%,每股盈利为5.88元。/ 作者简介 / 明天就是周六啦,提前祝大家周末愉快!本篇文章转自自小余的自习室的博客,文章主要讲解了NDK开发的相关知识,相信会对大家有所帮助!原文地址:/ NDK简介 /ndk全称Native Developer Kits,Android NDK也是Android SDK的一个扩展集,用来扩展SDK的功能。 NDK打通了Java和C/C++之间的开发障碍,让Android开发者也可以使用C/C++语言开发APP。众所周知:Java是在C/C++之上的语言,语言金字塔越往上对开发者就更加贴近,也就是更容易开发,但是性能相对也就越低。越往下对开发人员的要求也就越高,但是实现后的产品性能也越高,因为可以自己控制内存等模块的使用,而不是让Java虚拟机自行处理。NDK的使用场景一般在:1....
Unidbg补环境实战第一篇:补环境入门_HarkAllen的博客-CSDN博客
Unidbg补环境实战第一篇:补环境入门 为什么要补环境 Unidbg补环境的案例情景复现 模拟执行so 参数获取 unidbg 代码初始化 目标函数的调用 补环境说明 实战补环境 本章小节 Unidbg补环境实战第一篇:补环境入门 Unidbg是一个基于unicorn的逆向工具,可以黑盒调用安卓和iOS中的so文件。这使得逆向人员可以在无需了解so内部算法原理的情况下,主动调用so中的函数,让其中的算法“为我所用”,只需要传入所需的参数、补全运行所需的环境,即可运行出所需要的结果。及由此衍生的辅助分析、算法还原、SO调试与逆向等等功能。 对于Android逆向来说,Unidbg的特点有以下几种: 模拟JNI调用的API,因此可以调用JNI_OnLoad函数。 支持JavaVM和JNIEnv。 支持模拟系统调用指令。 支持ARM32和ARM64。 支持基于Dobby的inline hook。 支持基于xHook的GOT hook。 unicorn后端支持简单的控制台调试器,gdb stub,指令追踪和内存读写追踪。 支持dynarmic快速的后端。 为什么要补环境...
使用VS2019开发调试Android动态库_vs2019移动开发-CSDN博客
1.1 安装JDK:jdk1.8.0_112 1.2 安装Android SDK SDK可以安装指定的platforms和ndk-bundle。为了兼容性考虑,单独安装了版本比较老的android-ndk-r10b 1.3 安装VS2019 安装VS2019并选择:使用C++的移动开发。 1.4 连接开发手机 使用USB数据线连接开发手机并打开开发手机的USB调试选项。 2.1 创建新项目 启动VS2019,选择创建新项目 2.2 选择项目类型 下拉框选择C++、Android,列表选择动态共享库(Android),单击下一 2.3 填写项目属性 填写项目名称:MyTestSo,选择创建位置,单击创 2.4 项目创建完成 3.1 新建Android项目 在解决方案上单击鼠标右键,选择弹出菜单中的添加->新建项目菜单项。 3.2 选择项目类型 下拉框选择C++、Android,列表选择Native-Activity应用程序(Android),单击下一步 3.3 填写项目属性 填写项目名称:Test,单击创建 3.4 项目创建完成 3.5 添加引用...
ASM字节码操作类库:打开java语言世界通往字节码世界的大门_ITPUB博客
来源:京东云开发者 授人以鱼不如授人以渔,应用asm的文章有很多,简单demo的也很多,那么ASM都具备哪些能力呢?如何去学习编写ASM代码呢?什么样的情景需要用到ASM呢?让我们带着这些问题阅读这篇文章吧。 这里由于篇幅限制做了删减(第六部分TreeApi和CoreApi的比较、核心API类的介绍等),如果有兴趣可以文章留言进行交流。 个人认为核心在于第五部分如何查看一个想写的类的ASM代码如何写,以及全面了解ASM都有哪些能力,这样在后面的特定场景下我们才会知道可以通过它来实现想做的功能。 一、ASM介绍 ASM是一个通用的Java字节码操作和分析框架。它可以用于修改现有类或直接以二进制形式动态生成类。ASM提供了一些常见的字节码转换和分析算法,可以从中构建定制的复杂转换和代码分析工具。ASM提供了与其他Java字节码框架类似的功能,但侧重于性能。由于它的设计和实现尽可能小和快,因此非常适合在动态系统中使用(但当然也可以以静态方式使用,例如在编译器中)。...
一文搞懂代理模式_deer-li的博客-CSDN博客
代理模式是常见的设计模式之一,顾名思义,代理模式就是代理对象具备真实对象的功能,并代替真实对象完成相应操作,并能够在操作执行的前后,对操作进行增强处理。(为真实对象提供代理,然后供其他对象通过代理访问真实对象) 以租房为例,租客找房东租房,然后中间经过房屋中介,以此为背景,它的UML图如下: 可以看出房东类(RentHouse)和代理类(IntermediaryProxy)都实现了租房接口,这就是一个静态代理的前提,那就是真实类和代理类要实现同一个接口,在代理类中实现真实类的方法同时可以进行真实类方法的增强处理,在一个代理类中就可以完成对多个真实对象的注入工作。代码如下: public interface IRentHouse { void rentHouse(); } public class RentHouse implements IRentHouse { @Override public void rentHouse() { System.out.println("实现租房"); } } public class IntermediaryProxy implements...
Java ASM 框架:字节码操作的常见用法(生成类,修改类,方法插桩,方法注入)
前言 ASM 是一款读写Java字节码的工具,可以达到跳过源码编写,编译,直接以字节码的形式创建类,修改已经存在类(或者jar中的class)的属性,方法等。 通常用来开发一些Java开发的辅助框架,其做法是在你编写的Java代码中注入一些特定代码(俗称字节码插装)达到特定目的,以Android开发为例最常用的方法通过字节码插装实现热修复,事件监听,埋点,开源框架等非常规操作,当然在Android开发中通常辅以Gradle插件一起使用,这个改天在写。 背景 早就听说过ASM和字节码插桩技术,但是工作中很少直接使用,因为近期有这个学习需求,特做此笔记,供有需要的同学依葫芦画瓢,也作为自己的参考笔记以备后用。 据我实操过程中发现至少有以下三个地方可以获得ASM API的地方 1.ASM官网:http://asm.ow2.io/ 这里有从4.0到最新的9.3 所有版本,你可以下载到响应的jar包,还有使用手册http://asm.ow2.io/asm4-guide.…, 然后依赖到Java工程中即可,其API没有太大的差异。 2.jdk 自带的asm api(我的是JDK11)...
Getting Started with HotSpot and OpenJDK
In this article, we’ll be looking at how to get started working on the HotSpot Java Virtual Machine, and its implementation in the OpenJDK open-source project - both from a virtual machine (VM) perspective and also in terms of its interaction with the Java class libraries. Introduction to the HotSpot source Let’s take a look at the JDK source and the implementations of Java concepts contained within.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with "
Contact ", search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack