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,点击右侧的下载或更新,等待下载。
下载完成后,点击打开配 ...
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
在应用运行之前会通过 ...
签名
参考资料签名验签 - 知乎 (zhihu.com)
公私钥公私钥并不都是向ssl中公钥用于加密,私钥用于解密,具体要看使用场景。
但有一点是不变的,就是从名字上看,公钥就是公开的,私钥就是自己留着的。
签名对于签名来说,签名要完成的功能是,对一段信息进行计算,生成一段数据,这段数据需要简短,且对原始报文进行修改后,可以通过之前的签名发现报文被修改。将原始报文以及签名一并发给接收方后,接收方可以通过“验签”操作验证报文是否被修改。
之前一直以为签名由于数据变短,不可复原,所以使用的一定是单向加密,但今天了解e签宝原理时突然想到,如果是单向加密,那如何验签?假如签名算法暴露,那完全可以修改原文的同时修改密文,这样还是看不出来原文被修改。
原理签名方持有一对公私钥,公钥公开,私钥自己持有。
签名方首先使用摘要算法对原始报文进行摘要,这段摘要操作是不可逆的,保证签名简短。
签名方使用私钥对摘要进行加密,获得签名。接着将原始报文,签名发给验签方。
验签方使用之前保存的公钥对签名进行解密,获取摘要1,接着使用同样的摘要算法对原文进行摘要获得摘要2,最后对比摘要1和摘要2的内容是否相同,若相同则说明 ...
poi
依赖123456 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.5</version></dependency>
从文件读入工作簿12fileInputStream = new FileInputStream(frameFile);XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileInputStream);
sheet1234final int numberOfSheets = xssfWorkbook.getNumberOfSheets();for (int i = 0; i < numberOfSheets; i++) ...
MybatisPlus
通用mapper可将自定义的mapper接口继承BaseMapper接口,其中封装了一些常用操作
通用Service123456//自己写的service接口继承Iservice接口public interface SysMenuService extends IService<SysMenu> {}//自己写的实现类继承Iservice接口的实现类public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper,SysMenu> implements SysMenuService {}
主键生成12@TableId(type = IdType.ASSIGN_ID) //默认是雪花算法type = IdType.AUTO //数据库Id自增
日志配置12345//yml文件进行如下配置即可mybatis-plus: configuration: # 打印mybatis-plus上的sql语句 log-impl: org.apache.iba ...
protobuf
参考资料Protobuf通信协议详解:代码演示、详细原理介绍等 - 知乎 (zhihu.com)
概述谷歌定义的一种用于数据传输的数据序列化方式,节省流量同时省电(通信耗电)。
类似于json、xml这种,但是比json、xml更简洁,但牺牲了自描述特性。
特点
占用空间小
去除自描述符,需要对应的描述文件
无法以文本方式直接查看,以字节的方式存储
通信双方都需要具有描述文件才可以解析报文
.proto文件是proto信息的描述文件,可使用编译器根据该文件生成各种目标语言的源码,生成的源码中除了包含数据结构的实体类,同时携带从实体类生成protobuf内容的Writer与读取protobuf为实体类的Reader。
123456789101112131415161718192021222324252627282930313233343536// LICENSE: GNU General Public License v3.0 to Beem Development (https://github.com/beemdevelopment)// From https://github.c ...
2FA与TOTP原理及实现
参考资料动态令牌是怎么生成的?(OTP & TOTP 简单介绍) - 知乎 (zhihu.com)
2FA & TOTP 测试 (moyuscript.github.io)
概念了解2FA全称 Two Factor Authorization,双重因素认证,在身份认证时需要两个条件,比如一个密码,一个短信验证码这种。这种机制是为了防止密码泄露后不法人员盗用密码进行登录。只要符合需要双重认证才能登录的机制都可以算作双重认证,比如短信验证码,邮箱验证码,以及我最近了解到的TOTP。
TOTP全称 Time-based One-time Password,基于时间的一次性密码,顾名思义便是随当前时间变化的密码。以谷歌身份验证器为例,其界面长这个样子
其中的六位数变为基于时间生成的一次性密码,而后面的进度条则是当前密码的剩余生效时间。有意思的是,即使在断网的情况下,谷歌验证器仍然可以生成密钥,并且可以用于登录。
首先,为了让用户能够有足够的时间输入TOTP,要保证TOTP是有存活时间的,这就使得需要在一定时间范围内,使用当时的时间戳可以生成相同的密码,这一机制的实现主要是靠步 ...
maven-shade-plugin
参考资料maven-plugin-shade 详解 - 六开箱 - 博客园 (cnblogs.com)
介绍Maven Shade Plugin主要是为了将一个自启动JAR项目的依赖打包到一个大的JAR中,从而不用担心依赖问题。它还可以通过设置MainClass,创建一个可以执行的JAR包,同时若其他项目引用此jar包,可以解决第三方JAR包冲突问题。
可以将项目包含的依赖打包人一个jar中
可以通过重命名的方式将依赖的package重定向
使用方式maven-shade-plugin需要与maven生命周期中的package阶段绑定,在执行mvn package动作时会自动执行本插件。
1234567891011121314151617181920212223242526<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifact ...
xsd
Schemaxsd是Schema的后缀,故通常使用xsd表示Schema
能做什么
定义可以出现在文档中的元素
定义可以出现在文档中的属性
定义哪个元素是子元素
定义子元素的次序
定义子元素的数目
定义元素是否为空,或者是否可包含文本
定义元素和属性的数据类型
定义元素和属性的默认值以及固定值
例子1234567<?xml version="1.0"?><note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body></note>
对应的
12345678910111213141516<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2 ...