jenkins+github配置CI/CD
本站访问有些慢,应该是国内的网络对vercel不友好。但是我有一台几乎闲置的华为云vps,于是尝试了一下配置本站的CI/CD。记录过程。 前置条件 服务器:centos8 项目:需要nodejs编译的前端项目 部署目标:nginx 过程 安装jenkins。参照官网介绍,安装完成后,可以在http://yourip:8080登入jenkins控制台,然后创建用户,安装推荐插件,等等。 配置凭据。进入Manage Credentials界面,Url一般是http://yourip:8080/credentials,创建一个ssh凭据,Private Key字段需填写已经在github配置过的ssh密钥,密钥位置一般在~/.ssh/id_rsa。ssh凭据 接着新建一个secret text凭据..
更多VXLAN 随笔
简介VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,(还有NVGRE、STT等技术)是对传统VLAN协议的一种扩展。VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输。VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。从用户的角度来看,接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上,可以方便地进行二层通信。已经是事实上的网络虚拟化标准,公有云(阿里云、华为云、AWS等)的VPC大多数都是..
更多CTF | 2022 数字中国创新大赛虎符网络安全赛道 初赛 WriteUp
引言 2022数字中国创新大赛-虎符网络安全赛道 - 初赛 比赛时间: 2022-03-19 09:00 ~ 2022-03-20 17:00 比赛官网: https://www.qianxin.com/DCICHF/2022 上个周末打了下虎符 CTF,感觉题目总体而言难度挺大,很多题目最后解题数还是个位数。 也就 Misc 方向相对来说简单一点了,于是来玩了玩,简单写一下 writeup 吧。 顺便可以回顾一下去年的: CTF | 2021 数字中国创新大赛虎符网络安全赛道 WriteUp MiscPlain Text ZE9CUk8gUE9WQUxPV0FUWCBOQSBNQVReLCBXWSBET0xWTlkgUEVSRVdFU1RJIFxUTyBOQSBBTkdMSUpTS0lKIFFa..
更多golang Channel用法和源码分析 二
本篇文章我们一起了解下golang Channel的常见问题和用法。 从一个关闭的channel中仍能读取到数据吗? 从一个有缓冲的 channel 里读数据,当 channel 被关闭,依然能读出有效值。只有当返回的 ok 为 false 时,读出的数据才是无效的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 func main() { ch := make(chan int, 5) ch <- 18 close(ch) x, ok := <-ch if ok { fmt.Println("received: ", x) } x, ok = <-ch if !ok { fmt.Println("channel ..
更多golang Channel用法和源码分析 一
本篇文章我们一起了解下golang里面channel的用法,和它的源码分析。 源码查看 底层数据结构需要看源码,路径 src/runtime/chan.go:32 ,go版本1.16.15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 type hchan struct { qcount uint // total data in the queue chan 里元素数量 dataqsiz uint // size of the circular queue chan 底层循环数组的长度 buf unsafe.Pointer // points to an arr..
更多golang Map用法和源码分析
本文从源码角度学习 golang map的一些操作,和对应的源码分析。 Golang的map使用哈希表作为底层实现,一个哈希表里可以有多个哈希表节点,也即bucket,而每个bucket就保存了map中的一个或一组键值对。 声明和初始化 golang中的map声明非常简单,我们用map关键字表示声明一个map,然后在方括号内填上key的类型,方括号外填上value的类型。 1 var m map[string] int 这样我们就声明好了一个map。 但是要注意,这样声明得到的是一个空的map,map的零值是nil,可以理解成空指针。所以我们不能直接去操作这个m,否则会得到一个panic。 1 panic: assignment to entry in nil map 我们声明了..
更多开源小事一则
这两天更新了一个两年前的 Flutter 插件,有感而发。前言上周收到了一封邮件,询问我两年前开发的一个 Flutter 插件,我惊讶于这个插件还有人在用,便回复了邮件,后来相互加了微信,解决他提的问题。提问的人很大方,一上来就发了一个微信红包,说问题解决之后再发一个,于是我花了大概两个多小时,总算是解决了问题,果不其然他又发了一个红包,让我对他好感倍增 🐶后来想想这个插件还是有用的,于是又更新了一下这个”年久失修”的插件 flutter-tree添加了 在线示例现在这个插件变的更加易用,有了更多的功能,完善的文档,希望对更多人有帮助吧。PS: 果然对于我来说金钱才是第一生产力啊 🐶
更多golang 几种负载均衡算法(随机,加权随机,轮询,一致性哈希)
本篇我们详细讲解一些常用的负载均衡算法。 什么是负载均衡 负载均衡指多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。 通过某种负载分担任务,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接受到的请求的服务器独立地回应客户的请求。 负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群技术可以用最少的投资获得接近于大型主机的性能。 在分布式系统中,多台服务器同时提供一个服务,并统一到服务配置中心进行管理,消费者通过查询服务配置中心,获取到服务到地址列表,需要选取其中一台来发起RPC远程调用。如何选择,则取决于具体的负载均衡算法,对应于不同的场景,选择的负载均衡算法也不尽相同。..
更多EE | Sipeed 荔枝派 LicheeRV | 1 开箱及上手入门
0x00 引言最近 不知道为啥 对硬件又很感兴趣了,可能是因为喵喵的树莓派出了点问题跑不起来了,于是想整点替代的东西。 由于疫情原因封校了,快递大多也不发货,不过学弟买了个 Sipeed 荔枝派 LicheeRV Dock 全志D1开发板,然而他玩不起来放着吃灰了,于是正好合适咱就拿过来折腾折腾好了。(好耶,有新玩具了! 啊,是块 RISC-V 架构的板子! 众所周知,喵喵一篇博客一般会写很多东西。这篇博客就是喵喵对这块板子的开箱体验及上手入门的折腾过程,咱尽量写正确的操作,可能有误导性或者尝试失败的操作放在了每部分的最后面,就留作个记录吧。 文中的先后顺序有所调整,不影响整体阅读 hhh。 (论喵喵翻车了多少次 0x01 开箱 & 板卡介绍喵喵手里的板子大概是图里的这款,相对而言挺便宜的了。 ..
更多golang Slice的创建、添加、删除等操作和源码分析
本文从源码角度学习 golang slice 的创建、删除、扩容,深拷贝和slice的源码实现。 golang 中的 slice 非常强大,让数组操作非常方便高效。在开发中不定长度表示的数组全部都是 slice 。但是很多同学对 slice 的模糊认识,造成认为golang中的数组是引用类型,结果就是在实际开发中碰到很多坑,以至于出现一些莫名奇妙的问题,数组中的数据丢失了。 slice的用法 定义slice的几种方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 //声明一个slice,值是nil var s []int //静态显式初始化 初始化成一个大小为0的slice. //此时变量(s == ni..
更多