首页
导航
统计
留言
更多
壁纸
直播
关于
推荐
星的魔法
星的导航页
星的云盘
谷歌一下
腾讯视频
Search
1
Ubuntu安装 kubeadm 部署k8s 1.30
160 阅读
2
kubeadm 部署k8s 1.30
108 阅读
3
rockylinux 9.3详细安装drbd
106 阅读
4
rockylinux 9.3详细安装drbd+keepalived
100 阅读
5
ceshi
68 阅读
默认分类
日记
linux
docker
k8s
ELK
Jenkins
Grafana
Harbor
Prometheus
Cepf
k8s安装
Gitlab
traefik
sonarqube
OpenTelemetry
MinIOn
golang
Git
Python
Web开发
HTML和CSS
JavaScript
对象模型
登录
/
注册
Search
标签搜索
k8s
linux
docker
drbd+keepalivde
ansible
dcoker
webhook
星
累计撰写
77
篇文章
累计收到
938
条评论
首页
栏目
默认分类
日记
linux
docker
k8s
ELK
Jenkins
Grafana
Harbor
Prometheus
Cepf
k8s安装
Gitlab
traefik
sonarqube
OpenTelemetry
MinIOn
golang
Git
Python
Web开发
HTML和CSS
JavaScript
对象模型
页面
导航
统计
留言
壁纸
直播
关于
推荐
星的魔法
星的导航页
星的云盘
谷歌一下
腾讯视频
搜索到
75
篇与
的结果
2025-05-22
Gitlab安装
一、gpg.key-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =0Y9y -----END PGP PUBLIC KEY BLOCK-----二、执行命令sudo cat /tmp/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/gitlab-archive-keyring.gpg sudo apt update sudo apt install -y gitlab-ce三、修改配置 外部访问URLvi /etc/gitlab/gitlab.rb external_url 'http://192.168.1.100' # 替换为实际IP或域名 unicorn['listen_port'] = 8080 # 可选:调整默认端口四、关闭防火墙sudo ufw allow http sudo ufw allow https sudo ufw allow ssh sudo ufw enable五、启动sudo gitlab-ctl reconfigure sudo gitlab-ctl restart六、查看密码sudo cat /etc/gitlab/initial_root_password zlh2xR7fA814Z2TG0gx+QmHBZSFLrZJ1v6Lk2NEYk4w= 登录192.168.3.201 账号root 密码zlh2xR7fA814Z2TG0gx+QmHBZSFLrZJ1v6Lk2NEYk4w=七、添加ssh秘钥root@k8s02:~# ssh-keygen -t ed25519 -C "jenkins@your-server" Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_ed25519 Your public key has been saved in /root/.ssh/id_ed25519.pub The key fingerprint is: SHA256:9ddgsERNTkCNMf0mG9LOXtVamYkuewg1xnj+NUlaCUw jenkins@your-server The key's randomart image is: +--[ED25519 256]--+ | o@Eo | | ..O+ | | + ..*.*| | o B.o+X*| | S = ++=B+| | . o +=+.| | . =....| | o o. | | . | +----[SHA256]-----+ root@k8s02:~# cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILncgKrxDBMvO8zW0WaBymGLbKIRjUo2ZBsdacdayP03 jenkins@your-server关闭开机自启root@k8s02:~# sudo systemctl is-enabled gitlab-runsvdirenabledroot@k8s02:~# sudo systemctl disable gitlab-runsvdirRemoved /etc/systemd/system/multi-user.target.wants/gitlab-runsvdir.service.root@k8s02:~#
2025年05月22日
4 阅读
0 评论
0 点赞
2025-02-09
ceph
ubuntu系统改网络配置/etc/netplan/..network: version: 2 ethernets: ens33: dhcp4: no addresses: - 192.168.3.131/24 gateway4: 192.168.3.1 nameservers: addresses: - 8.8.8.8 - 114.114.114.114 - 8.8.4.4账号:admin密码123456Abc@用https访问添加路由目录sudo ip route add default via 192.168.3.1root@ubuntu01:~# sudo resolvectl dns ens33 8.8.8.8 8.8.4.4
2025年02月09日
7 阅读
0 评论
0 点赞
2025-02-07
js的dom操作
css选择器本质就是css与html两种语法建立关联的特定标识符那在JS语言的语法中,也有特点的方式与html语言编写的表情建立关联,我们就称之为JS选择器。一、getElement系列// 1.通过id名获取唯一满足条件的页面元素 document.getElementById('id名'); // 该方法只能由document调用 // 2、通过class名获取所有满足条件的页面元素 document.getElementsByClassName('class名'); // 该方法可以由document及任意页面元素对象调用 // 返回值为HTMLCollection (一个类数组结果的对象,使用方式同数组) // 没有匹配到任何结果返回空HTMLCollection对象 ([]) // 3.通过tag名获取所有满足条件的页面元素 document.getElementsByTagName('tag名'); // 该方法可以由document及任意页面元素对象调用 // 返回值为HTMLCollection (一个类数组结果的对象,使用方式同数组) // 没有匹配到任何结果返回空HTMLCollection对象 ([])二、querySelect系列// 1.获取第一个匹配到的页面元素 document.querySelector('css3语法选择器'); // 该方法可以由document及任意页面对象调用 // 2.获取所有匹配到的页面元素 document.querySelectorAll('css3语法选择器'); // 该方法可以由document及任意页面对象调用 // 返回值为NodeList (一个类数组结果的对象,使用方式同数组) // 没有匹配到任何结果返回空NodeList对象 ([])2.1 案例:<body> <div id="box" class="box"></div> <script> var box1 = document.getElementById('box'); var box2 = document.querySelector('.box'); // box1 === box2,就代表页面id为box,class为box的div标签 </script> </body>三、JS页面操作3.1 鼠标事件/* 交互的方式,叫做标签对象的事件绑定,可以绑定的事件有: onclick:鼠标点击 ondblclick:鼠标双击 onmousedown:鼠标按下 onmousemove:鼠标移动 onmouseup:鼠标抬起 onmouseover:鼠标悬浮 onmouseout:鼠标移开 oncontextmenu:鼠标右键 */3.2 事件的绑定// 具体绑定事件的方式: <body> <div class="box">绑定点击事件后可以完成点击交互</div> <script> var box = document.querySelector('.box'); // 页面class为box的div被鼠标点击后会有弹出框 box.onclick = function() { alert("box标签被点击了") } </script> </body>3.3 操作行间试样式<head> <style> .box { width: 200px; height: 200px; } </style> </head> <body> <div class="box" style="background-color: red"></div> <script> var box = document.querySelector('.box'); // 语法:页面对象.全局style属性.具体的样式名 box.onclick = function() { // 读:获取行间式样式值 var bgColor = box.style.backgroundColor; // 写:对行间式样式进行赋值,初始没有该条行间式样式,相同会自动添加设置好的行间式 box.style.backgroundColor = 'orange'; // css3多个单词的属性名采用小驼峰命名法 } </script> </body>3.4 只读计算后 样式<head> <style> .box { width: 200px; height: 200px; } </style> </head> <body> <div class="box" style="background-color: red"></div> <script> var box = document.querySelector('.box'); // 语法:getComputedStyle(页面元素对象, 伪类).样式名; // 注:我们不需要考虑伪类的范畴,直接用null填充即可 box.onclick = function() { // 只读:获取计算后样式值 var width = getComputedStyle(box, null).width; } </script> </body>3.5 操作标签class名<body> <div class="box">class名操作</div> <script> var box = document.querySelector('.box'); // 查看类名 var cName = box.className; // 修改类名 box.className = "ele"; // 增加类名 box.className = " tag"; // 添加后的结果class="ele tag",所以赋值时一定注意tag前有个空格字符串 // 删除所有类名 box.className = ""; </script> </body>3.6 操作标签全局属性值<body> <img src="https://www.baidu.com/favicon.ico" class="image" /> <script> var img = document.querySelector('.image'); // 查看全局属性值 var imgSrc = img.getAttribute('src'); // 修改全局属性值 img.setAttribute('src', 'img/bg_logo.png'); // 删除全局属性值 img.setAttribute = ('src', '');; </script> </body>
2025年02月07日
8 阅读
0 评论
0 点赞
2025-02-07
js内置对象
一、Number1.1 属性MAX VALUE JS可以表示的最大的数字 MIN VALUE JS可以表示的最小的数字1.2 方法toFixed(length) 指定保留长度的小数 toExponential() 用科学计数法表示 toPrecision(length)要求数字按照指定长度显示 整数+小数 toString(number) 把数字转换为字符串 可以按照指定的 进制 返回二、String2.1 属性length 字符串长度2.2 方法charAt(index) 返回指定位置的字符 concat(string)连接字符串 indexOf(str) 返回小字符串在字符串对象中第一次出现位置 -1表示不存在 lastlndexOf() 返回小字符在字符串中最后一次出现的位置 substr(start, length)截取字符串 省略长度截取到结束 substring(start, end)截取字符串,省略结束位置 一直到最后 slice(start, end)与substring 一模一样 split(char) 把字符串分割为数组 toUpperCase() 把字符串转为大写 toLowerCase() 把字符串转为小写 match() 匹配字符串 可用正则 search()查找字符串 可用正则 replace() 替换字符串可用正则 charCodeAt() 返回在指定的位置的字符的 Unicode 编码。 String.formCharCode() 从字符编码创建一个字符串。三、Array3.1 创建数组使用直接量[] 构造函数方式 new Array()3.2 数组特点索引必须连续 如果索引不连续,会产生稀疏数组3.3 数组的遍历(迭代)for 循环遍历 for ... in 循环 for ... of 循环3.4 数组元素的添加和删除#添加 为新索引赋值 利用数组长度,在数组尾部插入新元素 push() unshift() splice()#改变数组长度 pop() shift() splce() 运算符delete3.5 数组对象属性length数组长度 元素个数3.6 数组对象方法splice() 删除指定位置指定个数的元素 替换指定位置指定个数的元素 添加指定位置的元素 返回 被删除的元素组成的数组 reverse()翻转数组 sort() 数组排序 push() 和 pop() 在数组的最后添加或删除元素 unshift()和shift()在数组的最前面添加或删除元素 toString() 和 toLocalString() 把数组转换为字符串join0 把数组的元素拼接成字符串 slice() 截取数组中的一部分,返回新的数组 slice(start, end) concat()合并多个数组 indexOf() 搜索数组中的元素,并返回它所在的位置, lastlndexOf() 返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索 forEach() 遍历 循环 map() 通过指定函数处理数组的每个元素,并返回处理后的数组 filter() 检测数值元素,并返回符合条件所有元素的数组 every() 检测数值元素的每个元素是否都符合条件。 some() 检测数组元素中是否有元素符合指定条件 reduce() 将数组元素 索引值从低到高 进行组合 reduceRight()将数组元素 索引值从高到低进行组合四、Math4.1 属性PI 返回圆周率(约等于3.14159)4.2 方法abs(x)返回数的绝对值。 sqrt(x) 返回数的平方根。 pow(x,y) 返回 x的y次幂。 ceil(x) 对数进行上舍入。 floor(x) 对数进行下舍入。 round(x) 把数四舍五入为最接近的整数。 max(x,y) 返回 x和 y中的最高值。 min(x,y) 返回 x和y中的最低值。 random() 返回0~1之间的随机数。五、Date5.1 方法getYear() 请使用 getFullYear0) 方法代替。 getFullYear() 从 Date 对象以四位数字返回年份。 getMonth() 从 Date 对象返回月份 (0 ~ 11)。 getDate() 从 Date 对象返回一个月中的某一天(1 ~ 31)。 getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 getHours() 返回 Date 对象的小时 (0 ~ 23)。 getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。 getSeconds() 返回 Date 对象的秒数 (0 ~ 59). getMilliseconds() 返回 Date 对象的亳秒(0 ~ 999). getTime() 返回 1970 年 1月1 日至今的毫秒数。 getTimezoneOffset() 返回本地时间与格林威治标准时间(GMT) 的分钟差, getUTc... 标准时区 set... setUTC.. toTimeString0 把 Date 对象的时间部分转换为字符串。 toDateString() 把 Date 对象的日期部分转换为字符串。 toUTCString() 根据世界时,把 Date 对象转换为字符串。 toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串 toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串 toLocaleDateString()根据本地时间格式,把 Date 对象的日期部分转换为字符串。六、RegExp6.1 属性global RegExp 对象是否具有标志 g ignoreCase RegExp 对象是否具有标志i。 lastlndex 一个整数,标示开始下一次匹配的字符位置 multiline RegExp 对象是否具有标志 m。 source 正则表达式的源文本。6.2 方法exec() 检索字符串中指定的值。返回找到的值,并确定其位置 test() 检索字符串中指定的值。返回 true 或 false。七、JSON7.1 方法JSON.parse() 解析json格式的字符串 JSON.stringify() 序列化对象 数组 或 原始值八、Global8.1 属性NAN InFinity8.2 方法escape()对字符串进行Unicode编码。 unescape() 对由 escape0 编码的字符串进行解码。encodeURl0 把字符串编码为 URI。对其他一些在网址中有特殊含义的符号":/?:@ &=+$,#"不进行编码 decodeURl() 解码某个编码的 URI。 encodeURlComponent() 把字符串编码为 URI 组件 decodeURlComponent() 解码一个编码的 URI 组件。 eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。 isFinite( 检查某个值是否为有穷大的数。 isNaN0) 检查某个值是否是数字。 parselnt() 解析一个字符串并返回一个整数。 parseFloat() 解析一个字符串并返回一个浮点数。 Number0) 把对象的值转换为数字。 String() 把对象的值转换为字符串。 所有内置构造函数 都是 全局对象的属性
2025年02月07日
7 阅读
0 评论
0 点赞
2025-02-07
js函数
一、JavaScript函数1.1 声明函数的方式function 关键字 匿名函数方式(表达式方式) Function 构造函数方式1.2 参数问题形参和实参数量问题 可选形参(参数默认值) 可变长的实参列表:实参对象 aruguments1.3 回调函数#一个函数就可以接收另一个函数作为参数,这种函数就称之为回调函数(高阶函数) function add(x, y, f) { return f(x) + f(y); } add(-5, 6, Math.abs)1.4 递归函数 函数内部调用自己就是递归函数//用递归 实现阶乘 function multiply(n) { if (n == 1) { return 1 } return n * multiply(n - 1) }1.5 自调函数 函数声明完 直接调用(function(){ console.log('ok') })()1.6 闭包函数 当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,形成闭包function count() { var arr = []; for (var i=1; i<=3; i++) { arr.push((function (n) { return function () { return n * n; } })(i)); } return arr; } var results = count(); var f1 = results[0]; var f2 = results[1]; var f3 = results[2]; f1(); // 1 f2(); // 4 f3(); // 9二、JavaScript作用域2.1 局部作用域函数中使用定义的变量就是局部变量,只能在本函数中使用2.2 全局作用域var a = 100 function demo(){ console.log(a) var a = 200 }2.3 作用域链 函数嵌套函数会形成作用域链function demo(){ function fn(){ function fn1() { } } }2.4 块状作用域(ES6) 使用let关键字声明的变量会具有块状作用域for (let i = 0; i < 10; i ++) { } console.log(i) //变量不存在 Uncaught ReferenceError: i is not defined
2025年02月07日
6 阅读
0 评论
0 点赞
1
...
3
4
5
...
15