- 博客(123)
- 资源 (7)
- 收藏
- 关注
原创 手动模拟 calico 网络
网段 10.42.11.0/24。可选:不使用BGP,手动添加网关。可选:不使用BGP,手动添加网关。网段 10.42.1.0/24。
2023-09-18 00:09:40
1239
原创 临时想出来的一种服务编排架构
组织层级可以存在多个下级,但你不能出现同名下级提供个性化配置(环境变量、文件)管理(创建、更新、删除)功能提供平台资源配额管理(创建、更新、删除)功能出现同名个性化配置时以子级个性化配置为准个性化配置变更时自动同步配置内容给各个服务
2022-09-15 23:12:11
1304
原创 关于中台的一点思考
而DDD在这方面恰恰相反,DDD要求你的技术架构使用业务模型来构建,这样在后续迭代过程中业务模型的变更会实时体现到技术架构中,这时候是技术来适配业务模型的技术架构,是技术来适配业务。以前的开发模式是识别到一个业务,然后确定数据模型,技术架构,然后在后续迭代的过程中用这个技术架构来实现业务,业务只能基于当前的技术架构来实现,业务来适配技术。事件触发执行程序功能,程序功能将事件影响到的数据取出来后对这部分数据的流动按符合业务逻辑的方式进行引导,并在数据流动结束后将数据固化到数据存储中。...
2022-07-20 14:33:16
242
原创 使用 Jenkins + 企微机器人 + docker + cypress + allure 完成自动化测试及结果通知
镜像定义文件: 开发镜像开发使用的镜像定义文件:镜像依赖文件启动脚本:修改过的 ,可选 - 可以使用官方版本。
2022-06-07 16:24:08
1817
原创 UML 中对象和对象之间的几种关系及图例,画法(泛化,依赖,聚合,组合,实现,关联)
1. 泛化关系表示一个对象(子对象)继承另外一个对象(称为父对象)的能力,并可以增加它自己新功能的能力2. 依赖关系表示一个类使用到了另一个类,被依赖类的变化会影响到类本身3. 聚合关系表示对象由多个其他对象聚合组成,组成聚合对象的对象是可以独立存在的,并具有各自的生命周期4. 组合关系表示对象由多个其他对象组成,且组成对象的对象不可以独立存在,组成对象的对象和对象有一样的生命周期5. 实现关系表示类与接口的关系,代表类实现了接口的所有属性和方法6. 关联关系表示对象与对象之
2022-05-31 17:57:06
2642
原创 一个线上SQL执行顺序和结果的定位排查工具
安装工具功能: 读取生产环境的网络包或者 pcap 包文件,并解析网络包中的SQL执行语句和执行结果保存到本地go install github.com/ssoor/mysql-replay@latest使用方式1 抓取生产环境的网络包执行下面语句抓取网络包并存储在 pcaps/ens37.pcap 文件中下面的命令指定了在网卡 ens37 上抓取协议为 tcp 并且端口为 3306 的网络包存储在 pcaps/ens37.pcap 文件中,具体参数可以查 tcpdump 的使用说明tcpd
2022-05-23 17:19:30
325
原创 MySQL客户端、服务端通讯协议格式
1 交互过程MySQL客户端与服务器的交互主要分为两个阶段: 握手认证阶段和命令执行阶段。1.1 握手认证阶段握手认证阶段为客户端与服务器建立连接后进行,交互过程如下:服务器 -> 客户端:握手初始化消息客户端 -> 服务器:登陆认证消息服务器 -> 客户端:认证结果消息1.2 命令执行阶段客户端认证成功后,会进入命令执行阶段,交互过程如下:客户端 -> 服务器:执行命令消息服务器 -> 客户端:命令执行结果MySQL客户端与服务器的完整交互过程如
2022-05-18 14:50:45
2048
2
原创 Jenkins 入门:使用 docker 启动代理
这篇文章将引导你使用 docker 启动一个 Jenkins 代理来运行构建,接下来我们将在 docker 容器中运行 Jenkins 代理。本文假设我们已经运行了 Jenkins,所以先打开 Jenkins 主页 http://localhost:8080,然后按照以下步骤操作:单击左侧的Manage Jenkins 。在 System Configuration 部分下,单击 Manage Nodes and Clouds。在左侧,单击 New Node。起个名字这里我起名叫 smith
2022-04-13 15:18:52
2031
原创 一图看尽 Go 1.16 变更
工具链 go mod GO11MODULE 环境变量从默认 auto 改成了 on mod 功能从1.11以来终于彻底成熟了 //go:embed 通过 //go:embed 注解的方式内嵌文件 go-bindata 的活被干了 通过在变量上方添加注解来实现内嵌文件 一个文件 //go:embed hello.txt 支持变量类型 string []b.
2021-03-06 13:23:35
367
原创 Ubuntu 多网卡阻止Netplan在每个接口上绑定默认网关
问题现象当ubuntu服务器配置两个网卡 ens33 和 ens38 ,比如说 ens33 用于内部本地网络通信,ens38 是与ISP到Internet的外网连接。当你将ens33 配置为静态,不设默认网关,ens38 通过 DHCP 获取配置信息时不会出问题。/etc/netplan/00-installer-config.yamlnetwork: version: 2 renderer: networkd ethernets: ens33: dhcp4: n
2021-02-20 12:32:36
2438
原创 kubernetes 源码解析,kubelet pod 变更事件处理逻辑整理
代码划分由于 kubelet 代码还是比较复杂的,下面是我整理的自己对kubelet的代码功能划分,可以先通过下面的描述在脑海里构造一个大致的框架,这样看到具体代码逻辑大致能知道属于哪一部分负责什么逻辑,理解会轻松一些。根据整理代码,目前我将kubelet和POD相关的代码划分为3大部分。事件源 - POD变更事件产生抽象层 - 一些中间逻辑抽象,以及对很多特性的支持执行层 - 负责POD真正的创建,修改,删除关键路径下面这张图不是完整的调用层级,因为完整的调用层级比较深,所以对于不太重
2021-01-04 19:12:15
639
原创 kubelet 指标监控,/metrics 接口暴露出来的指标列表和说明,
现状这段时间在研究 kubernetes 的性能测试,需要观察当前 kubernetes 的各种运行指标,但是苦于英语渣,百度又找不到别人的分享,或者搜索词不对。目标没有办法,硬着头皮使用 Goole 翻译加上看代码对 kubelet 的指标内容进行了翻译,所以整理一下,希望可以帮到有需要的人。结果// 审计事件生成并发送到审计后端的数量# HELP apiserver_audit_event_total [ALPHA] Counter of audit events generated and
2020-12-30 11:16:11
3938
1
原创 配置OpenLDAP主从复制模式
https://lework.github.io/2019/07/21/ldap-master-slave/cat > loglevel.ldif << EOFdn: cn=configchangetype: modifyreplace: olcLogLevelolcLogLevel: statsEOFldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldifcat > rpuser.ldif <<EOF
2020-11-05 17:44:21
845
原创 使用 Docker 搭建 PostgreSQL 12 主从环境
mkdir -p /data/psql/{master,slave,repl}chown 999:999 /data/psql/{master,slave,repl}docker run --name "psql-master" -d -e "POSTGRES_PASSWORD=postgres" -v /data/psql/master:/var/lib/postgresql/data postgres:12docker exec -ti psql-master psql -U postgres -
2020-11-03 17:44:08
591
原创 LDAP 如何修改条目的对象类,避免修改对象类时提示 “structural object class modification from X to Y not allowed“
问题现象由于LDAP 没有在单个事务中执行两个操作的标准化方法,因此中间目录状态(在删除之后,在添加之前)对于其他客户端是可见的, 这可能导致不良的客户端行为。基于这个考虑早期 LDAP 没有提供修改条目对象类的功能。当你尝试修改条目的对象类的时候会提示你structural object class modification from X to Y not allowed,具体提示如下:[core@localhost tmp]$ ldapmodify -h home.coocn.cn -D "c
2020-10-16 15:20:18
669
原创 对视频声音,音频进行音量标准化和响度均化,归一化的标准,原理以及具体操作
为什么要做音频(音量)标准化( Audio normalization)?当我们在网上寻找音频时,由于制作标准等其他方面影响,会发现下载到的音频声音有的大有的小,比如音乐,这就会导致我们在听的时候需要根据不同的文件调整不同的音量大小,要不然可能在切换到下一首时音量能直接把你震晕或者查找我们在网上寻找音频素材,在使用时素材声音忽大忽小会严重影响成品质量。因此需要对视频中的音频进行标准化,避免声音忽大忽小。Audio normalization 是什么?目前音频标准化主要分为两种做法Peak (lev
2020-10-16 11:46:44
30099
1
原创 使用Rust编写 Windows dll 并注入进第三方进程后对 Windows API MessageBoxW 进行 Hook
hook 方式这里采用编译成 dll 后注入,这里有两点需要注意:目标程序为 32/64 位 rust 编译工具链也需要对应 32/64 位编译需要用 release 模式,防止注入编译器在 debug 下为了调试附加的数据Cargo.toml 中需要说明将其编译为库且类型为动态的,如果编译时显示找不到编译目标则手动添加一行路径:[lib]crate-type = ["dylib"]path = "src/lib.rs"当然你还可以通过创建远程线程来 hook,不过过程比较繁琐这里就提
2020-09-30 13:58:00
8101
3
原创 解决 ffmpeg 开启 mp3 解码器时提示 mp3_decoder because some selected dependency is unsatisfied: mpegaudio
问题编译iOS平台的FFmpeg,编译完成后,使用 avcodec_find_decoder(AV_CODEC_ID_MP3) 结果找不到AAC解码器编译配置关于解码器的编译配置是 --disable-decoders --encoder-decoder=mp3问题排查查看编译过程,发现有一个警告WARNING: Disabled mp3_decoder because some selected dependency is unsatisfied: mpegaudio解决需要添加以下两个
2020-09-27 15:58:22
710
原创 解决 ffmpeg 开启 acc 解码器时提示 some selected dependency is unsatisfied: adts_header mdct15 mdct sinewin
问题编译iOS平台的FFmpeg,编译完成后,使用 avcodec_find_decoder(AV_CODEC_ID_AAC) 结果找不到AAC解码器编译配置关于解码器的编译配置是 --disable-decoders --encoder-decoder=aac问题排查查看编译过程,发现有一个警告WARNING: Disabled aac_decoder because some selected dependency is unsatisfied: adts_header mdct15 mdc
2020-09-27 15:57:25
822
2
原创 win10+cuda10+tensorflow+tensorflow -gpu 安装教程,解决cuda10国内下载文件大小只有42b
背景简介作为一个对深度学习极其富有好奇心,但一直不得入门的小白来说,前几天终于看到了 《深度学习之TensorFlow:入门、原理与进阶实战 》这本书,通过这本书算是终于看懂了一些,于是准备用自己电脑实地操练一番。需要安装的软件此处假设当前机器是全新机器!!!AnacondaTensorflow && Tensorflow-gpu (由于书籍上面的示例多数是v1版本的,所以此处安装 v1.15)CUDA 10.0CUDNNAnaconda下载地址:https://rep
2020-09-13 19:23:45
1280
原创 让genymotion支持直接在vscode中用F5运行flutter的项目
起因手机连接电脑VS Code能识别到设备,说明驱动是正常的VS Code的插件也是安装好了的;然而开启Genymotion,VS Code 检测不到设备,命令行跑adb advices或flutter advices或flutter doctor都检测不到;解决方法如下:vs和as都是ide,以下方法通用1. 点击左上角进入settings2. 点击ADB3. 选择Use custom Android SDK tools,选择你当前Android SDK的位置(我的在D盘下的An
2020-08-31 16:29:53
612
原创 flutter安装程序和依赖包国内镜像以及下载地址集合
现象国内下载flutter和安装依赖实在是太太太太太慢了!!!简直无法忍受!!!解决方案下面是国内几个镜像,PUB_HOSTED_URL是Dart依赖包地址,FLUTTER_STORAGE_BASE_URL是Flutter依赖文件地址。下载安装包要手动下载最新版本的flutter SDK包,可以访问FLUTTER_STORAGE_BASE_URL 地址,然后进入/flutter_infra/releases/目录下载(这个方式Flutter社区不可用)。比如使用腾讯云开源镜像站// 所有稳定版
2020-08-31 14:26:43
2816
1
转载 将所有 Git 远程仓库 URL 从 HTTPS 替换成 SSH
自从年初的时候入手了 Yubikey 之后,就在 Github 上配置了安全密匙,随之而来的是在 push 到 Github 的时候不知道自己的密码到底是什么了(直接输入密码会报错),为了掩盖自己是一个垃圾的事实,便想到了让所有的 git 都走 SSH 而不是 HTTPS 的方法解决方法此处以 Github 为例,在命令行中输入以下内容即可 (替换所有的 HTTPS 为 SSH)git config --global url.ssh://git@github.com/.insteadOf https:
2020-08-28 23:18:28
4197
原创 一种简单的 Golang 项目目录结构划分
简介当时在公司内部做分享画的PPT,介绍之前公司使用的项目目录结构划分。目录结构应用接口层业务模型层数据模型层项目规划示例
2020-08-18 10:01:35
2797
原创 分享一款免费网易云,QQ音乐,虾米音乐,酷狗,酷我加密格式批量转换MP3格式的网站
转换网站也不知道是谁带的头,网易云,QQ音乐,虾米音乐,酷狗,酷我现在下载的音乐全都是自有的加密方式,恶心的一批。这里分享一款在线界面网站,可以在线将加密格式转成正常的音乐格式。网址:http://www.coocn.cn/music/decode/网站截图...
2020-08-01 19:04:58
8193
2
原创 阿里人机检测验证码的自动化操作尝试
1. 通过检测浏览器状态来进行人机检测使用selenium打开浏览器通过 selenium 打开的浏览器是出于测试状态的,和正常的浏览器不太一样。通过 selenium 打开的浏览器哪怕人工手动拖动验证码也会被判断出来是机器操作并显示"出错了"。通过查阅资料发现阿里人机交互会检查window.navigator.webdriver 是否为空,通过代码处理后可以绕过。正常打开window.navigator.webdriver值:> window.navigator.webdrive
2020-07-20 09:26:11
2609
原创 Golang 根据 interface 接口定义直接生成空白实现代码和注释,避免大量的复制粘贴
说明implgen 用于通过 interface 定义生成 Go 接口空白实现代码的工具。用于减少开发人员工作量,将机械式的复制粘贴代码交由工具来实现,提升工作效率。安装说明1. 通过源码安装执行命令通过源码安装:go get github.com/ssoor/implgen执行命令检查输出来验证安装结果:implgen --help2. 使用 gex 安装gex 是用来管理项目工具类依赖项的工具。通过使用 gex 可以清晰的说明代码都依赖于哪些工具,并在使用时自动拉取和
2020-06-28 12:14:19
2231
原创 解决 VMWare 虚拟机中无法 使用 kata-containers,提示 vhost_vsock: Device or resource busy
问题现象在 VMWare 中的 linux 虚拟机中安装 kata-containers 运行 sudo kata-runtime kata-check 检查环境时出现如下提示:ore@ubuntu20-dev:~$ sudo kata-runtime kata-checkWARN[0000] modprobe insert module failed: modprobe: ERROR: could not insert 'vhost_vsock': Device or resource busy
2020-06-27 19:10:56
3085
原创 解决 AMD CPU 使用 VMWare 在嵌套虚拟化中用 qemu 启动虚拟机提示 Assertion ret == cpu-kvm_msr_buf-nmsrs failed
问题现象在 AMD CPU上通过VMWare 虚拟出来的虚拟机中继续通过 qemu 进行嵌套启动虚拟机时报错,报错信息如下:core@ubuntu20-dev:~$ sudo qemu-system-x86_64 -cpu "host,pmu=off" -enable-kvmMoTTY X11 proxy: Unsupported authorisation protocolUnable to init server: Could not connect: Connection refusedqe
2020-06-27 18:55:13
6500
2
原创 关闭 CentOS 的后台更新服务 dnf makecache 停止系统在后台跑流量
现象新创建的一台服务器并关联了一个流量包,因为有其他事单个了就啥都没装,结果第二天发现流量包被消耗了1个G。原因经过查看系统日志发现,dnf-makecache.service服务一直定期的更新元数据导致消耗流量。不太能理解的是 dnf 命令执行的时候每次都强制更新,为什么还要有个计划任务一直跑~Fri 2020-06-19 01:55:13 CST dev-node init.scope[1]: Starting dnf makecache...Fri 2020-06-19 01:55:1
2020-06-19 18:02:25
11989
3
原创 Hyper-V 在 AMD 处理器上开启嵌套虚拟化
问题现象Hyper-V 之前一直不支持在 AMD 平台开启嵌套虚拟化,但最近的 win10 build 19640 更新对 AMD 平台上的嵌套虚拟化提供了支持。所以,Windows 10 现在 AMD 平台也可以开启嵌套虚拟化了。解决方案必须使用Powershell使用以下方法创建计算机:PS C:\Users\Administrator> New-VM -Name "S2019 Nested Test" -Version 9.3 -Generation 2如果不提供版本的话会创建 9
2020-06-08 14:42:49
13002
1
原创 解决文件权限正确,但 systemd 服务仍然提示没有权限,启动失败。提示信息:service: Failed to execute command: Permission denied
现象文件权限正确,但是通过 ·systemd· 启动时仍然报 Permission denied 错误。文件权限:[core@localhost ~]$ ll /usr/local/bin/total 192512-rwxrwxr-x. 1 core core 39813120 Jun 6 09:00 kubeadm-rwxrwxr-x. 1 core core 44032000 Jun 6 09:00 kubectl-rwxrwxr-x. 1 core core 113283800
2020-06-06 19:17:58
21905
1
原创 解决 Fedora CoreOS 执行 ‘systemctl enable kubelet.service’ 时提示 ‘Failed to enable unit: Access denied’
# 现象我在 `Fedora CoreOS` 上安装 `kubernetes` 进行到创建 `kubelet` 服务设置开机启动时执行 `systemctl enable kubelet` 结果出现错误:```[core@localhost ~]$ sudo systemctl enable /usr/local/lib/systemd/system/kubelet.serviceFailed to enable unit: Access denied```我勒个去!这搞毛啊。我可是
2020-06-06 19:02:36
6634
原创 重置 systemd 失败列表,让 CoreOS 和 Fedora CoreOS 登录时不要显示 [systemd] Failed Units。
现象CoreOS 和 Fedora CoreOS 系统中,如果 systemd 检测到有服务启动失败,当用户登录进 shell 的时候就会将出问题的服务在 mean 消息时显示出来。mean 消息如下:......[systemd]Failed Units: 1 NetworkManager-wait-online.service[core@localhost ~]$ 解决方案首先,我肯可以通过下面的命令来查看更多信息:$ systemctl --failed$ systemd
2020-06-06 17:10:59
655
转载 概念数据模型(CDM)、逻辑数据模型(LDM)、物理数据模型(PDM)区别以及哪些适合需求分析阶段的数据建模
在工作中,关于概念数据模型(Concept Data Model)、逻辑数据模型(Logical Data Model)、物理数据模型(Physical Data Model)三个数据模型的探讨中,发现大家都有自己的见解,但是却没有一个人能真正的说清楚这三个模型的涵义与差异。虽说由于这三个模型在软件开发的过程中,由于其功能与作用的差异,结合项目规模等实际情况,不一定会全部使用以节省项目时间(有时候直接设计物理模型),但我认为不应该被冠以“大家对这个概念的理解不同”不同之名而歪曲数据模型的定义。事实上,
2020-06-02 15:02:22
25889
2
转载 搜索和筛选有什么区别?顺丰 UED 的总结!
本文作者将从用户诉求、信息层级、界面表现三个层次上,试图对搜索和筛选两者的边界进行理清,并分别给出一些设计切入点。一、问题产生一次设计评审会上,作为设计师的我们和研发方针对「搜索和筛选到底是不是一回事?」这一问题产生了认知差异。核心分歧点在于:研发哥哥认为从数据层面来讲,搜索和筛选是一回事。而从用户的感知来看,我们认为两者是不同的。剖析字面意:搜索是寻求,搜查,发现之意;而筛选则是对分离的两种或两种以上物质按照某种特性进行选择的操作过程。显而易见,两者性质不同。而在产品设计中,两者的差异从哪些细节中体
2020-06-02 09:35:31
861
原创 Golang 常见面试考点汇总及原理解析(2) - map, slice 考点
Slice 切片slice 的考点一般围绕着 len,cap,append 进行考察,我这里整理了一道面试题,基本覆盖了 slice 中的大多数考点。题目:下面这段代码的输出结果是什么?package mainimport "fmt"func sliceAppend(slice []int,v int) []int { return append(slice, v)}func ...
2020-04-19 11:58:35
1680
1
原创 Golang 常见面试考点汇总及原理解析(1) - defer 机制考点
defer 机制defer 机制一般有两个考点,第一个是多defer的执行顺序,第二个就是defer func(){...}() 和 defer func(a) {...}(a) 的区别。1.1 执行顺序题目:下面这段代码的输出结果是什么?package mainimport "fmt"func out(str string) { fmt.Println(str)...
2020-04-19 10:32:22
389
微服务概念及优缺点.docx
2019-05-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人