vbs脚本
使用vbs批量替换文件内容其中使用到了正则表达式进行搜索
123456789101112131415161718192021222324252627282930313233343536Const ForReading = 1Const ForWriting = 2Set objFSO = CreateObject("Scripting.FileSystemObject")Set folder = objFSO.GetFolder("E:\test\vbtest\testdir")i = 0for each file in folder.Filesif lcase(objFSO.getExtensionName(file.path))="xml" theni=i+1Set objFile = objFSO.OpenTextFile(file.path, ForReading)strOriginal = "<a>[^<]*</a>"strReplacement = "&l ...
markdown规范教程
参考资料Markdown 官方教程https://ld246.com/article/1579414663700)
标题标题为在段落开头添加#标记,在跟一个空格后添加标题内容,映射成html后,会转为h标签包裹的元素,最多支持到6级标题。
123456= markdown =# 一级标题## 二级标题= html =<h1>一级标题</h1><h2>二级标题</h2>
段落段落在html中是被<p></p>标签包裹的内容,在markdown中,使用一个空行分隔开两段文本会生成这种段落结构(也就是需要敲两次回车)。
1234567= markdown =这是第一个自然段这是第二个自然段= html =<p>这是第一个自然段</p><p>这是第二个自然段</p>
换行对应html中的<br />标签,标准的换行语法是在需要换行的地方添加两个空格然后再加一个回车,不清楚为什么不能直接回车,typora官方的建议是,尽量少用换行结构或者不用,如果需要用的话,建 ...
md编辑器相关技术记录
参考资料从零开始写一个富文本编辑器(一) - 掘金 (juejin.cn)
十分钟实现自己的Typora - 掘金 (juejin.cn)
Selection - Web API | MDN (mozilla.org)
Vditor 实现 Markdown 所见即所得 - 链滴 (ld246.com)
关于所见即所得 Markdown 编辑器的讨论 - 链滴 (ld246.com)
剪贴板操作 Clipboard API 教程 - 阮一峰的网络日志 (ruanyifeng.com)
SelectionSelection中存储用户选择的文本范围或者插入符号的位置,获取方式:window.getSelection()
在不可编辑元素中,插入点位置和选区范围必须通过鼠标的点击或者拖拽产生,在可编辑元素中,插入点位置和选取范围也可以通过键盘方向键变化。
可通过window.getSelection().toString()获取被选中的文字
Range可通过selection.getRangeAt获取
Range.commonAncestorContainer返回完整包含所选内容的最深一层的节 ...
扫描枪接入前端
参考资料B8DDFFC785FF7F57091E2CD5EC7FD5AF.pdf (manuallib.com)
HID 简介 - USB中文网 (usbzh.com)
配置条形码扫描仪 - UWP applications | Microsoft Learn
HID设备HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型
HID-KBW:键盘 wedge 模式,允许你将条形码扫描到无法感知条形码扫描仪的应用程序(如记事本)。 在此模式下扫描条形码时,条形码扫描仪的解码数据将插入插入点,就像使用键盘键入数据一样。
HID-POS:貌似是可以双向通信的协议
OH340相关功能记录
可启用USB HID功能
可修改访问HID设备频率
有KPW和POS两种模式切换,默认KPW
可设置输入时大写锁定(CapsLock)的状态,默认关闭
可设置前导键,前导键默认关闭,键值为ctrl+shift+r,启用后在每次扫描后输入内容前会先输出前导键
默认会在扫描结束后再解码数据后添加结束符CR,此外可选择关闭、TAB、CRLF
启用设置需要读取开启设置码, ...
Elasticsearch
参考资料Download Elasticsearch | Elastic
配置windows下直接启动bin\elasticsearch.bat后无法访问,经验证,需要先将配置文件中的xpack.security.enabled: true改为xpack.security.enabled: false。
启动运行bin\elasticsearch.bat后,访问http://localhost:9200/
显示内容如下,即为启动成功
1234567891011121314151617{ "name": "....", "cluster_name": "elasticsearch", "cluster_uuid": ".....", "version": { "number": "8.14.3", "build_flavor": "defau ...
代理
参考资料代理服务器原理(https, socks5) - Leo’s Blog (leo021017.github.io)
让代理服务器支持HTTPS很难吗?_代理服务器不支持443-CSDN博客
代理过程
客户端通过http协议发送一条connect请求给代理服务器,并告知代理服务器需要连接的主机和端口。
代理服务器和目标主机建立tcp连接,回送一条http200的响应给客户端
客户端向代理服务器发送给目标服务器的数据,代理服务器会通过第二部建立的tcp连接进行转发
代理https在代理服务器代理https请求时,会将发送方发来的消息原封不动的发送给接收方,然后将接收方的请求原封不动的再返回给发送方,由于只是做请求的转发,故https的加解密并不在代理服务器上进行,故在客户端服务器上配置相关证书即可。
银行接口加密技术记录
记录最近做了一些对接银行的接口,用到了各种加密技术,这里记录一下
PGPPGP工作原理简述 | Mr.Muzi (marcuseddie.github.io)
gpg 密钥生成、导入、导出、自动输入密码_centos如何导入gpg-CSDN博客
OpenPGP 工作方式 | SAP Help Portal
汇丰银行要求使用PGP的方式来进行加解密,PGP最初是一款软件,其提供了一种混合加密的方式,将需要传输的信息使用对称加密如AES算法加密,接着将对称加密的密钥使用非对称算法进行加密,同时会使用散列算法将报文进行摘要,并使用私钥对其进行签名。所有的信息都会被封装进一个数据结构,发送给对方。
后来PGP将其协议公开,形成了OpenPGP,而GPG是实现了该协议的一种工具,可用于加解密内容或者生成PGP密钥。
PGP签名
发送方使用摘要算法计算消息内容中的摘要(或哈希值)。
PGP 签名支持以下哈希算法:
对于 DSA 密钥:SHA-1、SHA224、SHA256、SHA384、SHA512
对于 RSA 密钥:MD5、SHA-1、RIPE-MD/160、SH256、SHA3 ...
编译原理
概述何为编译将高级语言翻译为汇编语言或者直接翻译为机器语言的过程叫做编译,将汇编语言翻译为机器语言的过程叫做汇编。
源程序先经过预处理器处理,预处理器会将存储在不同文件中的源程序聚合再一起,同时把被称为宏的缩写语句转换为原始语句,接着通过编译器,转换为汇编语言程序。汇编语言程序经过汇编器转为可重定位的机器代码(可重定位是指在内存中的起始位置不固定)
编译系统的结构
分析部分,生成中间代码,称为前端
词法分析
语法分析
语义分析
中间表示
综合部份,生成目标语言,称为后端
目标代码生成
目标代码优化
词法分析概述从左向右逐行扫描源程序的字符,识别出各个单词,确定单词的类型,将识别出的单词转换成统一的机内表示——词法单元(token)
token由种别码和属性值构成
单词类型
种别
种别码
关键字
if、else、then……
一词一码
标识符
变量名、方法名……
多词一码
常量
整型、字符型……
一型一码
运算符
算数、关系、逻辑
一词一码或一型一码
界限符
;(){}……
一词一码
一词一码的token有时不需要属性值也可,种别码通常是整数,当 ...
编辑器LSP服务
参考资料理解 Language Server Protocol 的工作原理 - 掘金 (juejin.cn)
概述LSP为为编辑器提供的工作区内容索引服务,一般具有代码补全,纠错等功能。
基本作用原理在编辑器启动时会同时启动一个进程叫做语言服务,编辑器会将当前用户编辑的位置及相关消息通过进程间通信发送给语言服务进程,语言服务会根据用户当前编辑位置的上下文进行代码补全等处理,并将结果响应给编辑器
优点该协议使得语法补全等功能无需每个语言都要为每个编辑器适配一套,大家都遵循这一协议,每种语言只需要在该协议上提供服务,而每种编辑器只需要实现LSP的客户端与服务端即可。
gpt4all体验
参考资料GPT4All 官网
介绍gpt4all是一款可以在本地运行的gpt工具,且可以不使用gpu,但是速度较慢,此外模型需要另外下载
下载GPT4ALL在官网下载gpt4all的程序并安装
安装过程中各种设置目录的步骤建议在某处新建一个文件夹,将相关的目录在其中新建
下载并安装模型安装完成后,会在桌面生成gpt4all的图标,双击执行,进入首页后会让你先下载一个模型使用,但程序内部的下载方式可能会有网络问题,这里建议在官网下载
打开gpt4all后,其下方会显示一个模型存放地址,默认在C盘某位置,可点击右侧browse修改为我们上面新建的文件夹
官网首页向下滚动会找到模型列表,根据自己设备的性能选择模型下载,由于我的电脑配置很低,所以这里使用了第一个模型,运行内存仅需8GB,将该文件下载到上方设置的模型文件夹中
下载完成后,重启chat4all,可以看到首页上方的下拉列表框内出现了刚下载的模型,选择该模型,等待加载到内存中后即可进行聊天,聊天输入框在最下方
其他设置设置在软件右上角一个齿轮图标,可以对使用的设备是cpu还是gpu进行设置,也可以设置prompt语句等