bmp图像结构了解与编辑
参考资料BMP图像文件完全解析 - 知乎 (zhihu.com)
测试文件文件大小为8*8,保存格式为24色,
每行的开头都为000000的黑色,结尾为ffffff的白色,方便判断行开头与行结尾
文件格式
文件标识:类似于class文件的cafebabe,bmp文件开头为ascii编码的BM,也就是424d
文件大小:从02字节到05字节为文件大小,且为小端字节序,测试文件中为000000f6,也就是246,单位为字节
保留位,无意义:06-09字节
图像开始位置:0A-0D字节,表示图像像素开始位置,这里可以看到是00000036,刚好是我们做了标识的纯黑色开头,只不过上下是颠倒的
图像头大小:0D-11字节,标识头的大小,测试文件中是0x28,也就是40个字节
图像宽高:紧挨着的4字节为图像宽度,再往后4字节为图像高度,这里都是8,注意图像的高度和宽度是有正负之分的,当高度为正数时,图像的存储方式为从下到上
颜色平面数:2字节 恒为1
每个像素的位数:2字节 其值可为1,4,8,16,24,32,24位为常见的RGB,32位则多了arpha通道
压缩方式:4字节,全为0为不压缩 ...
mysql字段类型不同导致的隐式转换问题
参考资料MySQL :: MySQL 8.0 Reference Manual :: 14.3 Type Conversion in Expression Evaluation
MySQL 避坑指南之隐式数据类型转换_mysql隐式转换整数转浮点数-CSDN博客
MySQL隐式转化整理 - Rollen Holt - 博客园 (cnblogs.com)
场景当两个字段类型不同,但要对他们进行运算,则会隐式的对其进行转换
文档原文:
If one or both arguments are NULL, the result of the comparison is NULL, except for the NULL-safe <=> equality comparison operator. For NULL <=> NULL, the result is true. No conversion is needed.
有一方类型为NULL,结果即为NULL,除非是太空船运算,NULL <=> NULL结果为true
If both a ...
PicGo配合github搭建图床
参考资料Typora搭建github图床 - 知乎 (zhihu.com)
利用GitHub+jsdelivr搭建一个高速图床全网最详细附加解决上传失败问题 - 知乎 (zhihu.com)
如何使用jsDelivr+Github 实现免费CDN加速? - 知乎 (zhihu.com)
使用 jsDelivr CDN 对 Github 图床进行加速,带给你如丝滑般的图片体验! - 知乎 (zhihu.com)
配置手册 | PicGo
配置文件 | PicGo-Core
github端配置建立图床仓库github上新建一个开源仓库,用于存放图片资源
生成访问token个人设置>开发者设置>个人访问token
选择刚创建的仓库
这里的token需要有Content的写入权限,权限参考:REST API endpoints for repository contents - GitHub Docs
Typora端配置PicGo-Core进入Typora的设置,找到图像配置中的图像上传配置,选择PicGo-core,点击右侧的下载或更新,等待下载。
下载完成后,点击打开配 ...
curl
简单get请求12curl www.baidu,comcurl "www.baidu,com?a=1&b=2"
post带表单1curl -X POST -d 'a=1&b=2' www.baidu.com
post带json1curl -H "Content-Type: application/json" -X POST -d '{"abc":123,"bcd":"nihao"}' www.baidu.com
查看响应头1curl -i www.baidu,com
flutter
Android tool chain问题使用AS下载完SDK和相关工具后,使用flutter config --android-sdk SDK路径设置一下SDK即可
google仓库问题在系统环境变量中添加如下两个变量
PUB_HOSTED_URL="https://pub.flutter-io.cn"
FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"
gradle修改
my_flutter\android\gradle\wrapper\gradle-wrapper.properties下distributionUrl=file://D/tools/flutterSDK/gradle-8.11.1-all.zip
idea
idea2023全局配置idea中关闭所有项目,展示启动界面,在启动界面中找到customize,点击all setting
maven成功下载依赖但pom找不到版本尝试Invalidate Caches/Restart
路由器不同中继模式的区别
参考资料路由器中继模式WISP、Client + AP、AP模式的区别和适使用场景_wisp模式是什么意思-CSDN博客
WISP又叫:热点信号放大模式
创建一个子网,子网中的ip由当前路由分配而非上级路由
碰到一种情况就是公司的WiFi需要使用工号认证,但每个账号下同时只能登录两个设备,后来发现通过手机热点中继可以拓展连接的设备数量:一部手机开启热点,所有连接到该手机的设备包括该手机,只要有一款设备通过了认证,其余设备便都可上网。经过验证,发现wisp模式是最接近手机热点模式的。
Client+AP又叫:万能中继模式
放大wifi信号,连接当前路由器的设备的ip由上层路由分派
AP不能进行无线中继,只能通过有线连接,ip由上层路由器分派
使用windows快捷键快速启动应用
概述使用windows徽标键后会弹出开始菜单,此时窗口焦点在搜索框上,直接输入文字便可检索开始菜单中的内容,配合回车键便可快速打开文件或者启动应用,流畅程度不亚于utools。
操作:win徽标>搜索>回车启动
增强对于在安装过程中已经添加到开始菜单的软件,可直接使用上述方式启动,但有些软件安装过程中并没有加入到开始菜单,或者有些自己的文件也想要快速启动,此时可以通过如下操作实现:
原理为:开始菜单中的内容实际上就是某个文件夹的内容,该文件夹的路径为:
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu
当将一个文件放入该文件中时,该文件便会被开始菜单索引,此时便可通过开始菜单中的搜索定位
我们可以在该文件夹中新建一个文件夹,用于存放我们自添加的文件,如:
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\自添加快捷方式
在自添加快捷方式这个文件夹中,便可以存放一些应用的快捷方式,比如:
此时便可通过开始菜单来快捷启动idea ...
arthas
介绍用于监控运行时的java进程,且无需对java进程进行配置
官网快速入门 | arthas (aliyun.com)
使用运行arthas时,会输出jps信息,输入序号选择对应的java进程进行跟踪
命令命令列表 | arthas (aliyun.com)
dashboard 查看数据面板
jad 反编译类
monitor 监控方法的调用
watch 监控方法的返回值与入参等
启动官网下载jar包后,在待监控服务机器上使用java -jar命令执行该jar包
启动后会输出一个当前机器上的java进程列表,选择对应的(要监控的java进程)进行监控
Watch注意结束后要执行stop命令
监控某方法的入参与出参使用watch命令,比如要查看如下方法
1234567891011121314package com.boranget.controller;@RestControllerpublic class HelloController { @Autowired private HelloService helloService; @Request ...
JavaAgent
参考资料一文讲透Java Agent是什么玩意?能干啥?怎么用? - 知乎 (zhihu.com)
背景JVMPI(Java Virtual Machine Profiler Interface)与JVMDI(Java Virtual Machine Debug Interface)是java在1.5之前提出的jvm规范,分别要求jvm提供分析与调试的接口,1.5之后将两类接口合称为JVMTI(JVM Tool Interface)
JAVA AGENT在JDK1.5之后,jvm提供了探针接口Instrumentation,底层依赖JVMTI的native api,在1.6之后,jvm提供了attach接口,同样是依赖JVMTI的native接口。
可认为Java Agent可以理解为是一种特殊的Java程序,是调用Instrumentation接口的客户端。
java agent无法单独启动,必须依附在一个java应用程序上,与其共享同一个jvm,通过Instrumentation接口与jvm进行交互。
Java Agent有两种执行方式:
premain
在应用运行之前会通过 ...