修改class字节码中的字符串常量
原理Java文件在编译为class文件后,字符串内容会存储在字节码的常量池部分,理论上若有需求,可以修改此部分的值达到修改程序运行结果的目的。
字符串常量的字节码结构如下图:
实验实验文件测试程序为标准的helloworld程序,这里只输出hello,后续操作补上world
12345class My{ public static void main(String[] args) { System.out.println("hello"); }}
修改过程若目的为将hello改为world,则仅需要下载一个vscode插件“Hex Editor”,该插件支持直接修改二进制数据,我们只需要找到常量池部分的hello内容将其修改为world即可。
但该插件只能修改已有字节,如果要更改文件的长度比如添加或删除内容,是不支持的,所以这里写了个Java程序,通过写字节数组到文件的方法,在其中插入内容。
1234567891011121314151617181920212223242526272829303 ...
cloudflare代理github
参考资料gh-proxy
起因之前一直用gh-proxy来代理github,偶尔发现该网页的页脚有源码分享,于是自己搭建一个
Cloudflare注册首页:https://workers.cloudflare.com
注册账号并登录后,点击左侧”Workers 和 Pages“,点击创建
复制 index.js 到work.js点击部署,一般右侧预览窗口应显示最终效果。
但国内访问web.dev域名会被拦截,这里需要自定义域名代理
代码注释12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812 ...
euorg域名申请
参考资料资源分享|免费注册申请永久的eu.org顶级域名创建属于自己的域名,再也不用给博客域名续费了! - 墨天轮 (modb.pro)
工具虚拟地址生成器
Hostry注册HOSTRY - Instant Robust Hosting Services | HOSTRY Hosting Services
由于eu.org申请的时候不能直接填写cloudflare的解析服务器,所以这里使用hostry临时作为解析服务器。
经过尝试,现在Hostry已经无法使用qq邮箱和163邮箱注册,于是使用了临时接码平台(Hostry只用一次)
在注册时可以使用工具中的虚拟地址生成器生成信息
注册完邮箱里会收到验证邮件,第一次登陆会收到第二次邮件
登录时人机验证吗加载较慢,需要等一会儿
登录之后,点击Service中的Free DNS进入DNS页面
输入要申请的域名,点击创建DNS,后面的步骤默认
eu.org注册访问地址:https://nic.eu.org/ 进行账户注册
注册过程中的个人信息同样可以通过上方的信息生成器,但邮箱建议使用自己的邮箱,因为之后要接受域名审核成功的邮件
首先会接收到一 ...
VMware安裝教程
参考资料VMware 17 下载安装及永久激活使用教程 - 嘿笨笨熊 - 博客园 (cnblogs.com)
下载下载地址:下载 VMware Workstation Pro | CN
安装
打开安装包
接受协议
选择安装路径
勾选增强键盘驱动程序
勾选添加到Path
取消勾选产品更新和客户体验计划
勾选创建快捷方式
安装
激活点击许可证,输入密钥
aa :JU090-6039P-08409-8J0QH-2YR7F
bb:ZA5RU-6FYD5-48EPY-3XXEE-PAUGD
开放麒麟虚拟机体验
参考资料openKylin 下载地址和安装方法 | openKylin文档平台
下载下载地址:系统下载-openKylin 开放麒麟社区官网 | 开源聚力,共创未来
配置虚拟机
VMware中点击创建新的虚拟机
选择典型模式(Typical)
选择稍后安装操作系统
系统选择linux,版本选择ubuntu 64位
输入名称和虚拟机存放地址
磁盘大小分配50G,选择将磁盘拆分为多个文件
自定义硬件,在新cd页面点击“使用ISO镜像文件”,选择下载的镜像文件,点击关闭
完成,启动
安装系统启动虚拟机后,点击桌面上的“安装openKylin”开始安装系统
选择语言中文
选择时区上海
创建用户
选择全盘安装,点击磁盘(50G)
勾选格式化整个磁盘,开始安装
体验分配的内存6g,cpu4个核
应用商店下载qq for linux,运行较流畅
应用商店下载QQ音乐(win32),非常卡顿,无法使用
应用商店下载edge,运行较流畅
下载了一个安卓应用,但虚拟机不支持安卓应用运行
java反编译相关
字符串replace问题某系统升级后并不是向下兼容的,新系统在运行后,自定义的模块一直报错NoSuchMethodException,查阅代码发现该方法属于在旧系统中存在但是新系统中移除的一个方法,为保证自定义模块继续执行,需要反编译新系统的源码添加该方法来适配自定义的调用。但在某个类的反编译结果中出现了一个很奇怪的现象。该段代码通过jd-gui反编译的结果如下:
123String a;...a.replace(false, '1');
已知String类没有首个参数为布尔值的replace方法,不做修改的话编译肯定是无法通过的。根据经验,猜测应该是原字符转成数字之后,jd-gui又转成布尔值了,而表示成布尔值之后为false的数,按理来说是0。于是使用java的命令行反编译工具javap,反编译结果如下:
1javap -c -v Trace.class > Trace.txt
1234: iconst_05: bipush 497: invokevirtual #3 // Method java/lang/String.repla ...
windows集成身份验证配置edge浏览器
某系统与windows域控配置了sso,故可以使用计算机用户账号登录该系统。当前已可以使用计算机用户账号登录该系统,期望效果为打开系统登陆页面自动登录而无需手动输入用户名和密码。
参考资料配置浏览器以将 Windows 集成身份验证 (WIA) 与 AD FS 配合使用 | Microsoft Learn
IE浏览器配置自动登录打开IE设置菜单中的Internet选项,安全:自定义级别,滑倒最下面,在用户身份验证-登录中旋转自动使用当前用户名和密码登录。
edge浏览器配置系统设置Internet属性
开始菜单搜索 ”inetcpl.cpl“,打开internet属性,设置方式同IE
windows server 默认是允许IE发起自动登录请求的,edge需要在域服务器上设置下(也有可能是新版的edge需要设置)
查看
域管理员权限打开powershell,执行
1Get-AdfsProperties | select -ExpandProperty WiaSupportedUserAgents
可以查看当前支持的浏览器
虽然结尾是.*Edge,但新版的Edge并不支持,故我猜想 ...
红黑树
参考资料树(数据结构名词)_百度百科 (baidu.com)
图解:什么是B树?(心中有 B 树,做人要虚心)一文读懂B-树 - 知乎 (zhihu.com)
B树详解与实现 - 知乎 (zhihu.com)
(53条消息) B树、B-树、B+树、B*树介绍_Zzzzzzzz_hu的博客-CSDN博客
图解:什么是红黑树? - 知乎 (zhihu.com)
P9 3 3 1 Balanced Search Trees Red Black BSTs Coursera_哔哩哔哩_bilibili
树概念
单节点是一棵树,树根为其本身
空集合成为空树,空树没有节点
一个节点含有的子树的根节点称为该节点的子节点
一个节点含有的子节点个数称为该节点的度
度为0的节点称为叶节点或终端节点
度不为0的节点称为非终端节点或分支节点
父节点也称双亲节点
一棵树中最大的节点度称为树的度
节点的层次为其父节点的层次+1,根节点为第一层
树的高度或深度为树中最大的节点层次
多棵互不相交的树称为森林
种类
无序树
树中任意节点的子节点之间没有顺序关系
有序树
书中任意节点的子节点之间有顺序关系
二叉树
度 ...
图像二值化
参考资料为什么图片识别要将彩色图像灰度化? - 知乎 (zhihu.com)
一文搞懂图像二值化算法 - 知乎 (zhihu.com)
起因起因是有一个将图像显示到一个128*64大小的oled屏幕的需求,该屏幕只能显示黑白图像,所以需要将图像先处理为黑白两种颜色,经过查询了解到这种操作叫做图像的二值化。
具体流程分为先将图像转为灰度图像,再将灰度图像转为二值图像
灰度化分量法思想为取rgb三个分量中的某一个分量作为灰度值,比较三个分量哪个效果好用哪个;
123gray1(x,y)=r(x,y)gray2(x,y)=g(x,y)gray3(x,y)=b(x,y)
最大值法取三个分量中最亮的作为灰度值
1gray(x,y)=max(r(x,y),g(x,y),b(x,y))
平均值法取三个分量的平均值作为灰度值
1gray(x,y)=(r(x,y)+g(x,y)+b(x+y))/3
加权平均法将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,按下式对RGB三分量进行加权平均能得到较合理的灰度图像
1gray(x,y)=0.299*r(x,y)+0.578 ...
Maven安装与配置
下载这里注意,如果要配合idea使用,需要查询idea版本与maven版本的适配关系,不匹配将会导致无法在idea中使用maven。
Maven – Download Apache Maven
下载apache-maven-***-bin.zip
解压将压缩包中的内容解压到文件夹,这里解压到D:\tools\maven
环境变量用户变量中配置M2_HOME为D:\tools\maven\apache-maven-3.9.2
系统变量配置Path添加%M2_HOME%\bin
配置打开maven根目录下的conf目录下的settings.xml
本地仓库1<localRepository>D:\tools\maven\mvnr</localRepository>
阿里云镜像12345678<mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <nam ...