【DevOps Roadmap】 第二章《理解不同操作系统的概念》
Please do not throw sausage pizza away.
Networking 计算机网络Computer networking refers to interconnected computing devices that can exchange data and share resources with each other. These networked devices use a system of rules, called communications protocols, to transmit information over physical or wireless technologies.
计算机网络是指可以相互连接并交换数据以及共享资源的计算设备。这些网络设备使用一套被称为通信协议的规则系统,在物理或无线技术上传输信息。
Begin by studying the OSI Model. This model will assist in constructing an understanding of the linked top ...
【DevOps Roadmap】 第一章《Go基础》
gopher [ˈɡoʊfər] n. 囊地鼠(产自北美的一种地鼠)
命令
go mod init example.com/greetings:初始化项目 ,会生成go.mod,标明你使用的go version
go run main.go:运行main.go
go build main.go:打包(windows打包为linux可执行文件)
12$Env:GOARCH="amd64";$Env:GOOS="linux"go build main.go
数据类型声明方式
声明一个变量1var i = 1
声明多个变量1234var ( i string = "10" j int = 20)
省略类型声明1234var ( i = "10" j = 20)
省略var(常用)
12i := "10"j := 20
基础数据类型整形
有符号整型(负数、0和正数):如 int(可能是 32bit,也可能是 64bit,和硬件设备 CPU 有关)、int8、 ...
【Spring】SpringBoot对接WebSocket
SpringBoot都是绿色的
## 前言
由于网上各式各样的 WebSocket 代码都太旧了,前端后端代码的坑又特别多,所以总结了一套自己常用的 WebSocket 代码,这个代码仅针对单体应用
背景前端需要与后端建立一个长连接,用于传递新用户订阅的通知,并实时发送给前端的所有用户。传统的代码能用,但却面临以下痛点:
如何校验连接的安全性
如何防止连接断开
对于 如何校验连接的安全性 ,网上许多拆东墙补西墙的方法,是在 URL 做手脚,也就是将 token 以 ws://xx.xx.xx.xx:8080/application/{userId}?token={token} 这样的形式发送给后端,后端通过获取请求行中的内容,得到 token,再进行验证操作。
但有一天我通过 goaccess 分析 Nginx 日志,一下子就看到了许多用户的 ws 请求,上面的 token 写的可真是一清二楚,这对于生产环境来说,太危险了,如果有人得到了这份日志,就可以匿名做任何事情。
如果不在 URL 做手脚,但 WebSocket 又不支持请求体 ...
【大数据】Elastic + canal + kibana 安装文档
版本信息
CORE
VERSION
PORT
ORDER
OTHER
Elasticsearch
7.13.3
9200 9300
1
搜索引擎
Kibana
7.13.3
5601
2
数据可视化
Canal-Admin
1.1.15
8489 11110(Admin) 11111(tcp) 11112(metric)
3
Canal管理页面
Canal-Server
1.1.15
4
Canal数据同步,MySQL同步ES(1.1.16版本有bug,回调至低版本)
Prometheus
2.37.0
9090
5
采集
Grafana
9.0.4
3000
6
可视化
Node_exporter
1.3.1
9100
7
系统监控采集
P.S. 服务器为Linux,本文涉及到的ip地址请自行根据个人情况更改,所有组件部署全为单机部署,大部分为服务方式启动,本文仅简单记录部署过程,仅供参考,切勿完全照搬。
准备工作必备组件1yum -y install nano tar net-tools
JDK需要大于等于1.8版本
123 ...
【数据库】MySQL性能优化详解
一只小海豚
# 索引的常见类型
底层哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。如果计算后的哈希值相同,则以链表的形式存在。
但由于哈希表并不是顺序存储,因此哈希索引做区间查询的速度是很慢的,它更适用于等值查询,比如 Memcached 及其他一些 NoSQL 引擎。
有序数组有序数组在等值查询和范围查询场景中的性能就都非常优秀,但是,在需要更新数据的时候就麻烦了,你往中间插入一个记录就必须得挪动后面所有的记录,成本太高。所以,有序数组索引只适用于静态存储引擎。
二叉搜索树二叉搜索树的特点是:每个节点的左儿子小于父节点,父节点又小于右儿子。二叉树是搜索效率最高的,但是实际上大多数的数据库存储却并不使用二叉树。其原因是,索引不止存在内存中,还要写到磁盘上。
你可以想象一下一棵 100 万节点的平衡二叉树,树高 20。一次查询可能需要访问 20 个数据块。在机械硬盘时代, ...
【Java】Java分库分表实战之ShardingSphere
这个图标让我想起了火狐
## Java分库分表
概念对于分库分表的概念,建议查看这篇文章:[00 如何正确学习一款分库分表开源框架?.md (lianglianglee.com)](https://learn.lianglianglee.com/专栏/ShardingSphere 核心原理精讲-完/00 如何正确学习一款分库分表开源框架?.md),这篇文章大致讲述了分库分表的起源、原因以及各种解决方案。
本文主要讲述如何使用 ShardingSphere ,通过Java代码来分库分表,对于该组件的详细说明请参考概览 :: ShardingSphere (apache.org)。
引入Maven1234567891011121314151617<properties> <sharding-sphere.version>4.1.1</sharding-sphere.version> <shardingsphere.version>5.1.0</shardingsphere.version></propert ...
【博客】TinyPNG搭配GitHub Action实现自动压缩图床
起因在使用Typora搭配PicGo自动上传图片至GitHub图床时,图片是未被压缩的,导致博客在GitHub图床上获取图片的时间很长。因此想通过TinyPNG无损压缩图片,并通过GitHub Action自动压缩并替换原图,从而实现自动压缩并上传图片的功能。
项目地址 :https://github.com/leopold7/Learn_Tinify_Image_Action
步骤申请 Tinify API key申请地址:https://tinypng.com/developers
在你的邮箱中点击链接登录后,选择 Add API key,即可生成。
请记住此token
申请 GitHub Token在GItHub中点击头像,选择 Settings
选择Developer settings
选择 Personal access tokens -> Generate new token
按照下图勾选即可
请记住此token
配置yaml在GitHub项目中创建GitHub Action 所需的yaml配置文件,路径为 /.github/workflows/,文件名为 ...
【VPS】V2-ui转X-ui的升级与配置
前言自从在腾讯轻量云搭载V2-ui以来,稳定使用后就没再有过改动,由于最近入手了xbox,需要使用加速器,想到自身环境有利,便着手于对现有环境进行改造,发现V2-ui已经替换为X-ui。本文主要记录升级替换过程中遇到的问题,以及在nginx上的一些操作。
背景旧版使用的V2-ui采用HTTP域名访问的方式,共用443端口后,通过nginx进行分发到面板端口和地址。
系统采用的是CentOS。
开始更新及安装组件12yum update -y #CentOS 命令yum install -y curl #CentOS 命令
升级 X-ui1bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
启动 X-ui1x-ui
V2-ui ~ X-ui 数据迁移1x-ui v2-ui
仅迁移帐号,面板设置和用户名密码不会迁移。
停止V2-ui123456789101112131415161718192021222324252627282930[root@ ...
【Java】2021年Java对接APP支付宝API笔记
在图标的设计上,微信和支付宝都选择超出背景部分。
## 前言
由于工作需求,需要添加统一支付功能,微信已经有人对接过,因此我主要负责对接支付宝,本文主要记录Java对接支付宝的步骤,以及服务改造。
支付宝API文档确保支付所需的证书和参数正确下,我第一步选择查看官方API文档:https://opendocs.alipay.com/apis
由于项目是APP项目,且只涉及到支付与退款,因此我选择查看 alipay.trade.app.pay(app支付接口2.0) 和 alipay.trade.refund(统一收单交易退款接口)。
APP支付的含义是:外部商户APP唤起快捷SDK创建订单并支付。因此,我们得知,是APP通过阿里SDK调起支付宝,对于后端而言,我们只需要生成 符合规则的订单串 给前端,由前端唤起即可。
在查看支付宝官方的请求示例后,我并没有直接动手按照请求示例的代码开始编写测试,而是选择先Google下 ,有没有更好的服务端SDK供我们使用,果不其然,我发现了支付宝官方升级版SDK, Alipay Easy SDK:https://github.com/ali ...