- 博客(569)
- 资源 (4)
- 问答 (2)
- 收藏
- 关注
原创 DevOps文章之 操作手册用户使用说明书
最近主导了几个项目操作手册的编写。有新开发的项目,要重新编写操作手册;有中途接手别的项目,后来功能迭代,需要更新原操作手册;有客户对操作手册有意见,需要调整;零零散散写了数万字的手册。其实写操作手册或者叫用户使用说明书可以当作一个需求来处理。既然是需求,那么处理需求的几个主要步骤对于产品经理来说就是轻车熟路了。明确需求的目的明确目标用户明确使用场景形成解决方案最小代价验证方案调整并完善方案(编写文档到这一步就可以结束了)
2024-02-08 10:34:33
1463
原创 K8S系列文章之 [使用 Alpine 搭建 k3s]
官方描述,可运行在 systemd 或者 openrc 环境上,那就往精简方向走,使用 alpine 做系统。与 RHEL、Debian 的区别,主要在防火墙侧;其他基础配置需求类似,脚本指令一致。国内源拉取官方安装脚本准备,集群环境,需要克隆多台设备。修改主机名,配置 hosts 文件【重要】引导配置,因为 alpine 自身引导与其他发行版不同,以下为独有配置。编辑配置文件夹 末尾添加更新配置并重启。
2024-02-08 09:56:09
1996
原创 K8S系列文章之 [Alpine基础环境配置]
通过镜像文件,进入系统引导,默认用户名 root,密码为空。 配置网络,setup-interfaces wlan0 配置无线网卡,setup-interfaces -a 使用 dhcp 获取IP;如果键入一个 us ,会再次提示,因为键盘设置需要地区和键位两个值。配置源,键入数字即可,49 阿里云,52 北邮,60 东软。硬盘安装,对话前会打印出硬盘列表,默认 none ,键入。,系统安装时,已经安装应用;设置主机名,默认 localhost ,可自定义。,安装时已经配置,可略过;
2024-02-08 09:45:57
2242
原创 CMake 完整入门教程(五)
在前面,我们成功地使用了库,可是源代码放在同一个路径下,还是不太正规,怎么办。在例子三至五中,我们始终用的静态库,那么用动态库应该更酷一点吧。中的目录默认和源代码中结构一样么,我们可以指定其对应的目录在。文件中,命令名字是不区分大小写的,而参数和变量是大小写。文件了,每个源文件目录都需要一个,还好,每一个都不。方式构建,所以我们要时刻区分这两个变量对应的目录。另一种方法:不修改顶级的文件,修改其他两个文件。下,这个例子应该是很简单的,只需要在上个例子的。的过程,本身也就是一个编程的过程,只有多练才。
2024-01-28 22:34:08
1089
原创 CMake 完整入门教程(四)
(Common Object File Format),这是Windows可执行文件的标准格式。个语言的编译器名称、源代码附档名、输出档附档名、命令列格式等等。CMake会自动知道如何处理这些文件,并使用上面定义的命令进行编译。译器的相关知识,通常我们不需要费心思去操心编译细节。文件,您可以将这些文件视为常规的源代码文件,并将其添加到。已经有部分的知识,我们只要设定编译器名称和用法即可。言或编译器,就需要指定相关的编译规则。的编译标志,这些编译标志将被加入到。来编译资源档,我们必须手动指定。
2024-01-28 19:38:17
345
原创 CMake 完整入门教程(三)
总的来说,这段代码定义了一个CMake项目,该项目构建一个名为"main"的可执行文件,并尝试找到并链接一个名为libdb_cxx的库。是一个非常有用的命令,它可以帮助您自动地收集文件和目录的路径,特别是当您不知道文件的确切名称或只知道其模式时。: 添加一个名为"main"的可执行文件,该文件由DIR_SRCS变量中的源文件构建。用于指定一个变量保存外部命令执行的结果,这个结果可能是最后一个执行的外部命令的。命令简述:此命令提供了丰富的文件和目录的相关操作(这里仅说一下比较常用的)
2024-01-28 17:49:06
247
原创 CMake 完整入门教程(二)
这些条件在CMake的配置过程中非常有用,可以帮助您根据文件和目录的存在与否、新旧以及是否是绝对路径来执行不同的操作。的参数传入一个单独的变量中。对上面这个宏再进一步加强:如果我们想限制这个宏中传入的参数数目(尽管在这个宏中。会先检查左方算子是否为已定义过的变量,若是则会比对变量储存的字串值,否。,其余需要求和的数字都是不定形式传入的,所以需要先将多余。总之,这个循环会按照指定的步长打印出从5到14的数字。中的一个变量,指代宏中传入的多余参数。,并且函数中的变量是局部的,而宏中的变量在外面也。
2024-01-28 15:35:32
417
原创 CMake 完整入门教程(一)
虽然学习新东西可能会花费一些时间,但是它们带来的好处会远远超过这些花费的时间。学习新东西是值得的,也是很有乐趣的。令来设定一个变量的值,变量会在第一次使用的时候自动初始化,无须宣告。如果在命令中,使用包含了字符串数组的变量作为参数会是怎样的情况呢?每一次学习新东西都是很有乐趣的,虽然刚开始会花费时间用来学习,但是实践证明,变量可以认为都是全局的,哪怕在一个宏中定义的变量,也可以在宏的外面被访问。种配置的工程,你可以将工程配置作为一个全局变量,在命令行指定。指令的时候,可以定义任意多个全局变量。
2024-01-28 14:12:57
531
原创 DevOps系列文章之 Git命令:过滤日志
由于它提供了定位特定代码涉及到的所有提交记录的能力,这对于调试问题可能非常有用。比如下面的命令只显示2014年7月1日以及之后的提交历史信息。如果你只对最近几次提交感兴趣,这会节省在页面上查看所有提交的麻烦。想要按照提交的具体内容来过滤提交记录,也是可以办到的。请注意在作者字段中也包含提交者的email值,所以你也可以使用此选项来搜索特定email地址。命令传递一个表示提交之间的区间来筛选仅在这两次提交之间的所有提交记录。命令在执行这两个区间时都有返回,那么也就意味着你的提交历史已经分叉了。
2024-01-28 02:21:03
1309
原创 K8S系列文章之 docker配置远程访问
Docker Daemon 默认情况下是只允许本地访问的,不允许远程访问。本文将首先介绍 Docker Daemon 的连接方式,然后说明如何配置远程访问。即实现通过本地 docker 客户端访问远程主机的 docker 服务端,以此来监控远程主机上的 Docker 容器。
2024-01-27 22:01:32
1030
原创 DevOps系列文章之 GitLabCI汇总
Gitlab在安装的时候,就默认包含了Gitlab CI的能力,但是该能力只是用于协调作业,并不能真的去执行作业,因此需要搭配Gitlab Runner来作为执行器实现具体的CICD工作。大致的意思是,build阶段启动一个作业,输出一段文本;关于Gitlab-ci的yaml更多配置,可以参考官方参考文档:https://docs.gitlab.com/ee/ci/yaml/此时,任意的提交行为、合并行为都会触发流水线的执行,但是也可以手动执行,我们此时选择项目中的CICD,流水线,并点击运行流水线。
2024-01-27 21:56:44
1636
原创 数据库系列文章之 ClickHouse入门
Clickhouse由俄罗斯yandex公司开发。专为在线数据分析而设计。Yandex是俄罗斯搜索引擎公司。官方提供的文档表名,ClickHouse 日处理记录数“十亿级”。1.特性采用列式存储。数据压缩。基于磁盘的存储,大部分列式存储数据库为了追求速度,会将数据直接写入内存,按时内存的空间往往很小。CPU 利用率高,在计算时会使用机器上的所有 CPU 资源。支持分片,并且同一个计算任务会在不同分片上并行执行,计算完成后会将结果汇总。
2024-01-22 19:40:00
1845
原创 DevOps系列文章之 GitLab Runner续
当Project更新,触发Runner服务器上的Runner Service(某管理队伍),Runner Service根据自己的配置信息,和项目的需求(tag指定某个工人),派遣Runner工人去执行Project给予的任务(Job)。1)好处:对于大多数Runner的配置其实是完全相同的(同样的executor,同样的配置文件和工作路径,同样的依赖环境),如果每个项目都去一个个注册不仅麻烦,而且不方便迁移,这时可以使用shared runner。尤其是使用Docker镜像时,必须加入docker组。
2024-01-21 20:14:33
1488
原创 DevOps系列文章之 GitLab Runner
因为gitlab-ci-runner register的作用除了把Runner的信息保存到配置文件以外,还有一个很重要的作用,那就是向GitLab-CI发出请求,在GitLab-CI中登记这个Runner的信息并且获取后续通信所需要的token。Runner就像一个个的工人,而Gitlab-CI就是这些工人的一个管理中心,所有工人都要在Gitlab-CI里面登记注册,并且表明自己是为哪个工程服务的。当然,如果你有更细化的分类需求,你也可以在注册的时候通过-c或--config选项指定配置文件的位置。
2024-01-21 19:49:04
1428
原创 DevOps系列文章之 GitLab CI/CD
gitlab-ci.yml 文件被用来管理项目的 runner 任务,Gitlab CI通过.gitlab-ci.yml文件管理配置job,该文件定义了statge顺序、job应该如何触发和工作、执行什么脚本、如何构建pipeline等流程该文件存放于仓库的根目录, 默认名为我们先看一个简单的例子:.gitlab-ci.yml## 定义pipeline流程:verify->build->dockerpush->deploystages:- verify- build- deploy#单元测试。
2024-01-21 19:35:31
1409
原创 DevOps系列之 Python操作数据库
例子: link = pymysql.Connect(host='localhost', port=3306, user='root', password='123456', db='shop', charset='utf8')当然也可以删除、查询、修改表中的数据,但是无论是怎么操作,都需要创建连接并在结束的时候关闭连接对象。cs1.execute(query,(4,'蒙牛酸奶',13.9,88))# 提交之前的操作,如果之前已经执行多次的execute,那么就都进行提交。# 如果全部执行成功,提交事务。
2024-01-11 21:45:39
741
原创 DevOps系列之 JNI实现Java调用C的实现案例
JNI(Java Native Interface)允许Java代码与其他语言编写的代码进行交互。以下是一个简单的JNI示例,演示如何使用JNI在Java中调用C/C++函数。JNI(Java Native Interface)允许Java代码与其他语言编写的代码进行交互。以下是一个简单的JNI示例,演示如何使用JNI在Java中调用C/C++函数。在C/C++文件中实现头文件中声明的函数。首先,创建一个Java类,其中包含一个native方法。工具从Java类生成C头文件。(Linux)的动态链接库。
2024-01-01 12:53:57
778
原创 DevOps系列 之 Python与Java互相调用的案例
在这个示例中,我们使用JPype调用了Java中的System类,并使用System.out.println方法输出了一条消息。我们首先启动了JVM,然后导入了Java中的System类,并使用out.println方法输出了一条消息。在本文中,我们将讨论如何使用Python测试Java源代码,Java如何调用Python脚本。在这个示例中,我们使用Jython调用了Python中的print函数,并输出了一条消息。确保你的Java类在正确的包中,并且这个包名与你在Python中导入的模块名一致。
2023-12-30 21:55:36
676
原创 自动化测试系列 之 Python单元测试框架unittest
单元测试是一种软件测试方法,是测试最小的可测试单元,通常是一个函数或一个方法。在软件开发过程中,单元测试作为一项重要的测试方法被广泛应用。
2023-12-30 19:44:33
1375
原创 产品设计 之 创建完美产品需求文档的4个核心要点
简而言之,产品需求文档详细说明了特定产品版本中必须包含的特性和功能。对于参与设计和开发特定产品的所有团队来说,这是一个至关重要的参考点。可以根据 PRD 中捕获的信息创建其他几个文档。技术部门可能会创建一份技术要求文档,详细说明产品的系统要求。设计师可以创建功能需求文档,详细说明用户与系统交互时会发生什么,包括显示产品设计的线框图。用户体验 (UX) 设计人员也可以通过PRD的内容创建一个用户界面需求文档来解释产品的外观和感觉。
2023-12-24 21:28:51
1240
原创 大数据系列教程之 Kafka基础
Kafka 是一个分布式的基于发布 / 订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。Kafka 0.9 版本以前,offset 存储在 Zookeeper,0.9 版本后,默认将 offset 存储在 Kafka 的一个内置的 topic 中。除此之外,Kafka 还可以选择自定义存储 offset。offset 的维护是相当繁琐的,因为需要考虑到消费者的Rebalance。
2023-08-31 20:07:41
1653
原创 DevOps系列文章 之 Python基础
1、形式参数:函数定义时,紧跟在函数名后(圆括号内)的参数被称为形式参数,简称形参。由于它不是实际存在变量,所以又称虚拟变量;在定义函数和函数体的时候使用形参,目的就是在函数调用的时候接收实参(实参个数,类型应与实参一一对应)2、实际参数:在主调函数中调用一个函数时,函数名后面括弧中的参数称为“实际参数”,简称实参;调用函数时候传给函数的变量,可以是常量,变量,表达式,函数,传给形参。
2023-08-27 19:54:17
1252
原创 DevOps系列文章 之 Python基础
1、集合是一个无序的,不重复的数据组合,它的主要作用如下:1.去重,把一个列表变成集合,就自动去重了2.关系测试,测试两组数据之前的交集、差集、并集等关系1.数学上,把set称做由不同的元素组成的集合,集合(set)的成员通常被称做集合元素2.集合对象是一组无序排列的可哈希的值3.集合有两种类型 :可变集合set 、不可变集合frozense>>> s1 = set('hello')>>> s2 = frozenset('hello')>>> s1
2023-08-27 19:49:24
1032
原创 DevOps系列文章 之 Python基础
tu = ("alex", [11, 22, {"k1": 'v1',元祖的特性 "k2": ["age", "name"], "k3": (11,22,33)}, 44])有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。如果可以,请在其中添加一个元素 "Seven"2, 字典dic,dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
2023-08-27 19:45:01
1261
原创 DevOps系列文章之 Python基础
元组元素用小括号()包裹,不可以更改(尽管他们的内容可以)元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可可以认为元组是"静态"的列表元组一旦定义,不能改变t = ()t = (5) : 这样是错误的t = (5,) :这样才是正确的可以使用 tuple() 或者 () 直接初始化元组,主要注意的是,定义单个元素的元组时,需要在单个元素后面加一个逗号。1、创建元组1.通过()或工厂函数tuple()创建元组2.元组是有序的、不可变类型。
2023-08-27 19:38:41
1115
1
原创 DevOps系列文章之 Python基础
1.可以将列表当成普通的“数组”,它能保存任意数量任意类型的python对象2.像字符串一样,列表也支持下标和切片操作3.列表中的项目可以改变# 列表的初始化lst = []
2023-08-27 19:36:16
5025
原创 DevOps系列文章 之 Python基础
1.python中字符串被定义为引号之间的字符集合2.python支持使用成对的单引号或双引号3.无论单引号,还是双引号,表示的意义相同4.python还支持三引号(三个连续的单引号或者双引号),可以用来包含特殊字符5.python不区分字符和字符串字符串是不可变对象,字符串是可迭代对象Python3中,字符串是Unicode编码特别提醒:字符串如果修改的话,字符串所在的内存地址也跟着变化,所以不可被修改,但是对于列表来说,可以修改是因为列表的内存是不变的,可以直接在上面修改。
2023-08-27 19:23:46
1150
原创 DevOps系列文章 之 Python基础
1.python代码块通过缩进对齐表达代码逻辑而不是使用大括号2.缩进表达一个语句属于哪个代码块3.缩进风格 : 建议使用四个空格如果是Linux系统的话,可以这样做,实现自动缩进 :set ai。
2023-08-27 19:15:52
1105
1
原创 DevOps系列文章 之 Python基础
它由三部分组成: 关键字本身, 用于判断结果真假的条件表达式, 以及当表达式为真或者非零时执行的代码块可支持else和elif;条件表达式并不需要用括号括起来1、标准if 条件语句的语法如下:如果表达式的值非0 或者为布尔值True, 则代码组if_suite被执行;否则就去执行下一条语句。if 语句的 expr_true_suite 代码块只有在条件表达式的结果的布尔值为真时才执行, 否则将继续执行紧跟在该代码块后面的语句。
2023-08-27 19:05:49
1039
原创 DevOps系列文章 之 Python基础
用 Python 来打印 'Hello, world' 你会惊奇地发现Python是如此的简洁与优雅。请输入你的昵称:你好,行远见大!
2023-08-27 18:31:08
1176
1
原创 微服务系列文章之 SpringBoot 最佳实践
这在使用大型企业级应用程序时非常重要。除了一般异常之外,我们可能还会有一些场景来识别某些特定的错误情况。异常顾问可以使用创建,我们可以创建具有有意义细节的单独异常。它将使得将来识别和调试错误变得更加容易。自定义响应对象可用于返回包含某些特定数据的对象,并满足 HTTP 状态代码、API 代码、消息等要求。我们可以使用构建器设计模式来创建具有自定义属性的自定义响应对象。
2023-08-19 18:59:15
708
原创 微服务系列文章之 Springboot+Vue实现登录注册
分为三个包,分别为controller,service, dao以及resource目录下的xml文件。User.java (我安装了lombok插件)配置cnpm仓库,下载的时候可以快一些。输入账号密码,实现简单的注册,登录功能。安装node,npm,配置环境变量。创建springBoot项目。修改项目文件,按照如下结构。数据库需要建相应得到表。
2023-08-14 22:12:17
3530
1
原创 DevOps系列文章之 GitlabCICD自动化部署SpringBoot项目
本文主要记录如何通过Gitlab CI/CD自动部署SpringBoot项目jar包。使用GitLab自带的CICD功能部署SpringBoot项目非常方便,前期环境搭建可能需要花一点时间学习,但是后期部署项目可以省去很多人为操作失误,对于小型团队来说,Gitlab自带的CICD功能比Jenkins更加简单,总体思想步骤是:搭建GitLab服务;搭建GitLab Runner服务;搭建应用服务;编写gitlab-ci.yml;对于SpringBoot项目来说,一般分为:(1)maven 打包;
2023-08-14 21:26:07
1946
原创 DevOps系列文章 之 SpringBoot整合GitLab-CI实现持续集成
CI/CD属于DevOps,代表持续集成、持续交付/部署。CI/CD 自动化了传统上将新代码从提交到生产(例如构建、测试和部署)以及基础设施配置所需的大部分或全部手动人工干预。借助 CI/CD ,开发人员可以对代码进行更改,然后自动测试并推出以进行交付和部署。以实现停机时间最小化,代码发布速度更快。
2023-08-14 21:14:52
1564
大数据系列博客——环境搭建安装包
2020-11-03
23种设计模式 -设计模式图解.7z
2020-09-11
win7 idea2018 1.8版本 docker插件 配置报错?如何解决啊,谢谢
2019-08-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人