关于https请求SSL证书问题
关于https请求SSL证书问题 说明 这个问题是我在公司项目中产品上线遇到的一个问题,其实就是个SSL证书所用算法不安全问题。这个问题发生在公司产品进行支付模块进行回调时HTTP请求发生的,Java 默认的 SSL 安全策略限制了使用不安全的加密算法,而我访问的商户服务器对应所使用的证书使用的是 SHA1withRSA 签名算法,这是被认为 不再安全 的算法,因此连接被拒绝。 从 Java 8u181 开始,SHA-1 证书默认被禁止用于 TLS 连接(因为存在碰撞攻击风险)。 触发了 checkAlgorithmConstraints 安全检查,SSL 握手失败。 当时的报错: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748javax.net.ssl.SSLHandshakeException: Certificates do not conform to algorithm constraints at...
数据库读写分离和分库分表
数据库读写分离和分库分表 1 什么是读写分离? 读写分离主要是将数据库的读写操作分散到不同的数据库节点上,这样就能小幅度提升写性能,大幅度提升读性能。 2 如何实现读写分离? 不管使用哪一种读写分离具体的实现方案,想要实现读写分离一般包括下面几个步骤: 部署多台数据库,选择其中的一台作为主数据库,其他的一台或多台作为从数据库。 保证主数据库和从数据库之间的数据是实时同步的,这个过程也就是我们常说的主从复制。 系统将写请求交给主数据库处理,读请求交给从数据库处理。 落实到项目本身的话,常用的方式有两种: 代理方式 我们可以在应用和数据中间加了一个代理层。应用程序所有的数据请求都交给代理层处理,代理层负责分离读写请求,将它们路由到对应的数据库中。 提供类似功能的中间件有 MySQL Router(官方, MySQL Proxy 的替代方案)、Atlas(基于 MySQL Proxy)、MaxScale、MyCat。 关于MySQL Router多提一点:在MySQL8.2的版本中,MySQL...
Go项目模块划分
Go项目模块划分 1 基础包结构 一个基本的Go模块的所有代码都位于项目的根目录中。该项目一般仅仅包含一个模块,而该模块又仅仅包含一个包。该包名与模块名称的最后一个路径部分相匹配。对于一个只需要一个Go文件的得长简单的包,项目结构如下: 1234project-root-directory/ go.mod modname.go modname_test.go 如果说你的项目是需要上传Github仓库的(例如地址为:github.com/Changbaiqi/go-project),那么在go.mod文件中的模块行为应该写成module github.com/Changbaiqi/go-project 在对应代码文件中,通过以下方式申明了该包: 12package go-project// ... 你的代码 这样用户就可以用这个包了,只需要在他们项目GO代码中通过以下方式导入即可: 1import...
Hexo+GithubActions+GithubPages自动化部署打包更新博客
Hexo+GithubActions+GithubPages自动化部署打包更新博客 这篇文章主要是通过Hexo配合Github一系列方便的工具进行一键部署博客更新操作,这样就减少了自行本地静态文件编译和push的操作了,极其方便。 1 创建Hexo博客 这里就省略掉博客的搭建工作了,这些都是基础操作,网上可以直接找到文章学着搭建,这里就直接讲述如何利用GithubActions将博客自动化部署到GithubPages 我用的是Butterfly主题 2 编写Actions配置文件 首先在博客根目录创建目录.github\workflows,然后在此目录下创建对应Actions的yaml配置文件,名字随意,我这里取名为deploy.yml 然后进入文件编写配置文件: 12345678910111213141516171819202122232425262728293031323334353637383940414243name: Deploy Changbaiqi Blog to GitHub Pageson: push: branches: - main ...
hexo+buttefly如何添加小风车
hexo+buttefly如何添加小风车 1 效果展示 2 如何添加 2.1 新建CSS 在对应主题下的/source/css下创建对应CSS主题文件,这里我因为用的是buttefly主题,所以路径是themes/butterfly/source/css 新建CSS文件之后再在文件里面添加对应代码,这里我创建的文件名称是pinwheel.css: 12345678910111213141516171819202122232425/* 文章页H1-H6图标样式效果 */h1::before, h2::before, h3::before, h4::before, h5::before, h6::before { -webkit-animation: ccc 1.6s linear infinite ; animation: ccc 1.6s linear infinite ;}@-webkit-keyframes ccc { 0% { -webkit-transform: rotate(0deg); transform:...
Activiti工作流
Activiti工作流 1 工作流背景介绍 Activity 第一版在2010年5月发布,当时仅支持最简单的流程处理,之后的版本陆续完善了对BPMN 2.0规范的支持。其核心是使用Java开发的。其前身就是JBPM。 activiti5以及activiti6、flowable是Tijs Rademakers团队开发的,Activiti7是 Salaboy团队开发的。2016.7~2017.5期间,activiti团队内部已经产生了重大的分歧,最终将 Activiti 交给了 Salaboy 团队为(可以理解为离职之前的工作交接),该团队开发了一个新的工作流框架:flowable。 2019年6月中旬...
并发性能指标
并发性能指标 1 QPS,每秒查询 QPS: Queries Per Second 是衡量信息检索系统(例如搜索引擎活数据库)在一秒内接收到的搜索流量的一种常见度量。该术语在任何请求-响应系统中都得到更广泛的使用,更正确地称为每秒请求数(RPS:Request Per Second)。 高性能、高并发、高可用(简称“三高”)要求的系统必须注意其QPS,才能知道何时扩容系统以处理更多请求。 1.1 理论计算:带宽与QPS的数学关系 1.1.1 基础公式 带宽(单位Mbps,兆比特每秒)与QPS的关系为: 所需带宽(Mbps)=(请求大小+响应大小)×QPS×8/1000000(网络带宽、硬盘容量通常采用十进制)所需带宽(Mbps)=(请求大小+响应大小)\times QPS \times 8/1000000 (网络带宽、硬盘容量通常采用十进制)所需带宽(Mbps)=(请求大小+响应大小)×QPS×8/1000000(网络带宽、硬盘容量通常采用十进制) 1.2 计算过程 12345678平均请求大小:512字节 0.5KB平均响应大小: 2048字节...
关于Linux出现网络接口ens33出现DOWN状态如何解决
关于Linux出现网络接口ens33出现DOWN状态如何解决 这个问题是我在使用Ubuntu学习的时候发生的问题,当时是发现apt install指令无法正常下载,然后使用ip addr指令之后发现网络接口ens33接口状态为down,这很明显非常不对劲,这里的话我是执行如下指令进行恢复的: 1234# 先启动ens33网络接口sudo ip link set ens33 up# 使用DHCP自动获取IP地址sudo dhclient ens33 执行完成之后我们再使用如下指令检查一下网络接口状态 1ip a s 然后我们再使用ping去测试一下网络连接,如果正常,说明就可以了。
虚拟机Linux如何拓展存储
虚拟机Linux如何拓展存储 这是一份为你整理的 VMware Workstation 中 Ubuntu 虚拟机拓展存储空间的详细操作笔记。 扩容操作分为两大部分:第一步在 VMware 中扩展虚拟磁盘(相当于给物理硬盘扩容),第二步在 Ubuntu 系统中分配新空间(相当于在系统里让新空间生效)。 📝 操作前重要提醒 删除快照:在进行任何磁盘扩展操作前,必须删除该虚拟机的所有快照。否则,VMware 中的“扩展”按钮将是灰色的,无法点击 。 备份数据:虽然此操作为无损扩容,但为防止意外(如断电、误操作),建议提前备份重要数据或复制一份虚拟机文件 。 第一部分:在 VMware 中扩展虚拟磁盘 关闭虚拟机:确保 Ubuntu 虚拟机处于 “关机” 状态,不能是挂起或正在运行 。 打开设置:选中要操作的虚拟机,点击菜单栏的 “编辑虚拟机设置” (或右键虚拟机 -> “设置”)。 找到扩展选项: 在“硬件”选项卡中,选中 “硬盘” 。 在下方的磁盘工具区域,点击 “扩展” 按钮 。 设置新容量: 在弹出的窗口中,输入你想要扩容到的最终总容量(例如原来是...
Hexo启用数学公式渲染
Hexo启用数学公式渲染 这里以Butterfly主题为例,Butterfly主题支持Mathjax和KaTex两种数学公式渲染引擎,这里我使用KaTex插件为例,因为KaTex更快更轻量 1 在主题配置文件中配置math 现在主题文件中的_config.yml文件中找到math配置 1234567891011121314151617181920212223242526# --------------------------------------# Math# --------------------------------------# About the per_page# if you set it to true, it will load mathjax/katex script in each page# if you set it to false, it will load mathjax/katex script according to your setting (add the 'mathjax: true' or 'katex: true' in...










