Download
Name
Links
System
Introduction
Golang
/Golang
Go 语言相关资源,包含开发工具、库文件、教程文档等,用于 Go 编程学习和开发。
Hackintosh
/Hackintosh
黑苹果相关资源,包含安装镜像、驱动程序、配置文件、教程指南等,帮助用户在非苹果硬件上安装 macOS。
MacOS
/MacOS
macOS 系统相关资源,包含系统镜像、应用程序、工具软件、系统优化工具等。
Videos
/Videos
视频文件存储目录,包含各类视频资源。
Windows
/Windows
Windows 系统相关资源,包含系统镜像、驱动程序、应用软件、工具软件等。
iOSJailbreaking
/iOSJailbreaking
iOS 越狱相关资源,包含越狱工具、插件、教程、固件文件等,用于 iOS 设备越狱和定制。
可访问下载页获取全部资源:CloudDrive
免责声明以上的所有软件和资料仅供个人学习和研究使用,不得用于任何商业用途。如有侵犯您商标权、著作权或其他合法权利的,请按照网 ...
Golang-Gin+GORM-Demo
参考文档:
go-gin
go-GORM
项目结构需要实现的功能实现一个图书管理系统
用户服务:(登录,注册)、token验证
书籍操作:(对书籍的增删改查操作)
123456789101112131415161718├── controller // CLD:服务入口,负责处理路由,参数校验,请求转发│ ├── book.go│ └── user.go├── dao // CLD:负责数据与存储相关功能(MySQL,Redis,ES等),以及业务的增删改查│ ├── book.go│ ├── mysql_init.go│ └── user.go├── go.mod├── go.sum├── main.go├── middleware //中间件定义│ └── auth.go├── model // 模型定义│ ├── book.go│ └── user.go└── router // 路由中间件注册 └── router.go
创建数据库1create database books charset utf8mb4;
实现过程
建立数据 ...
Golang-23种设计模式
什么是设计模式?设计模式是一套理论, 由软件界先辈们总结出的一套可以反复使用的经验, 可以帮助开发人员降低代码耦合度、提高代码的重用性、扩展性和系统可维护性,以及巧妙解决一系列逻辑复杂的问题(运用套路)。然而需要注意的是,过度使用设计模式也可能会导致代码过于复杂和晦涩,因此在实际开发中需要根据具体情况进行选择和应用。
左到右依次是:Ralph Johnson,Erich Gamma,Richard Helm,John Vlissides。
1995年,艾瑞克·伽马(Erich Gamma)、拉尔夫·约翰森(Ralph Johnson)、理査德·海尔姆(Richard Helm)、约翰·威利斯迪斯(John Vlissides)等4位作者合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书,在本教程中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four ...
Containerd与Docker
容器运行时容器运行时(Container Runtime)是一种负责在操作系统层面创建和管理容器的软件工具或组件。它是容器化技术的核心组件之一,用于在容器内部运行应用程序,并提供隔离、资源管理和安全等功能。在Kubernetes中,容器运行时是负责管理和运行容器的组件。在过去,Docker是最常用的容器运行时,但随着时间的推移,containerd成为Kubernetes的另一个受欢迎的容器运行时选择。
说明:自 kubernetes 1.24 版起,Dockershim 已从 Kubernetes 项目中移除。
容器运行时的主要任务包括:
容器创建和启动:容器运行时负责根据预定义的容器配置信息(如镜像、命令、环境变量等),创建并启动容器实例。
容器文件系统管理:容器运行时处理容器的文件系统,负责将镜像的内容挂载到容器的文件系统,并在容器之间提供隔离。
资源限制和管理:容器运行时可以根据用户或管理员定义的资源限制,管理容器对CPU、内存、磁盘等资源的使用。
容器网络:容器运行时协助配置容器的网络,使得容器可以与其他容器或外部网络进行通信。
安全性:容器运行时实施安全机制,确保容器 ...
Golang-网络编程
网络三要素网络编程三要素:
IP地址:网络中每一台计算机的唯一标识,通过IP地址找到指定的计算机。
端口:用于标识进程的逻辑地址,通过端口找到指定进程。
协议:定义通信规则,符合协议则可以通信,不符合不能通信。一般有TCP协议和UDP协议。
IP地址计算机分布在世界各地,要想和它们通信,必须要知道确切的位置。确定计算机位置的方式有多种,IP 地址是最常用的,例如,114.114.114.114 是国内第一个、全球第三个开放的 DNS 服务地址,127.0.0.1 是本机地址。
其实,我们的计算机并不知道 IP 地址对应的地理位置,当要通信时,只是将 IP 地址封装到要发送的数据包中,交给路由器去处理。路由器有非常智能和高效的算法,很快就会找到目标计算机,并将数据包传递给它,完成一次单向通信。
目前大部分软件使用 IPv4 地址,但 IPv6 也正在被人们接受,尤其是在教育网中,已经大量使用。
端口有了 IP 地址,虽然可以找到目标计算机,但仍然不能进行通信。一台计算机可以同时提供多种网络服务,例如Web服务、FTP服务(文件传输服务)、SMTP服务(邮箱服务)等,仅有 IP 地址, ...
Golang-面向“对象”:面向接口
面向对象初探
在软件开发领域,你应该听到过过程式编程、面向对象编程、甚至函数式编程等软件开发方式。而面向对象编程更是在现今大行其道,JAVA就是面向对象语言的代表,在JAVA中一切皆对象,它让编程中的一切元素、甚至设计方式都标准化,这更有利于大型应用的编写。
什么是面向对象编程?面向对象编程,简称OOP。在OOP的理念下,任何事物无论简单还是复杂都可以用对象表示,每个对象都包含属性和方法,属性表示对象是什么?有什么特征?方法表示对象能做什么?有什么能力?任何应用的构建都转化成对象关系的设计,这演化成一套标准化的面向对象设计模式。
类和对象要理解OOP,首先要理解类和对象的关系,类是设计层面的概念,而对象则是程序运行时的概念,OOP程序设计基于类的设计,类在程序运行时实例化为对象实现真正的业务逻辑。简而言之,所谓类可以理解成对象的模板,你编写一个类,在运行时需要实例化才能在程序调用栈中传递。
属性和方法在过程式编程中,我们熟悉变量和函数,使用这些基本元素我们实现业务逻辑。而属性和方法是对象内部的特征,咋一看他们很像,其实本质上是将实现特定功能的函数和变量封装成一个整体,即对象。一个对象 ...
Debian 12 ISO镜像无人应答安装
引言preseed是Debian和Ubuntu操作系统中用于自动化安装过程的一种方式。通过编写一个包含预定义答案的配置文件(称为preseed文件),可以在安装过程中自动回答安装程序的各种问题,从而实现无人值守或自定义化的安装。preseed文件包含了安装过程中可能涉及到的各种问题的答案,比如语言选择、时区设置、分区方案、软件包选择、用户账户等等。
使用preseed可以大大简化大规模部署系统的过程,提高效率并减少可能出错的几率。结合genisoimage等工具,可以将preseed文件与安装介质打包在一起,以便进行自动化安装。这样就能够轻松地实现定制化安装,节省时间和精力。
2024-04-09:文档更新更新内容:
如何替换官版iso镜像内核为自定义内核(可选)
如何为官版iso镜像注入指定的硬件驱动(可选)
安装工具1apt -y install genisoimage
下载镜像1234567891011121314151617181920212223242526[root@nvm-jscs02-cloud-dev-01 /data/isomake]# wget https: ...
N卡GPU计算型实例驱动安装
N卡GPU型号一览
产品系列
M-Class
P-Series
P-Series
V-Series
T-Series
V-Series
A-Series
A-Series
A-Series
产品家族
M40
Tesla P100
Tesla P4
Tesla V100
Tesla T4
Tesla V100
NVIDIA A100
NVIDIA A10
NVIDIA A100
前置操作
确定好待交付机器的规格和GPU型号,下面已T4卡为例。
跟业务确定好Driver Version和CUDA Version 然后去NVIDIA官网下载对应的驱动脚本
比如业务要求:
Driver Version: 470.82.xx
CUDA Version: 11.4
进入NVIDIA官网:https://www.nvidia.com/Download/Find.aspx
Driver 和 CUDA对应关系 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
点进去拿到:https://cn.do ...
k8s企业级DevOps实践-容器集群网络
本文会再谈Docker网络、Pod网络、CNI模式、CNI选型。
Docker网络一览表:
容器网络模式
简介
bridge
容器具有独立的network namespace,会将容器连接到docker0虚拟网桥,并配置IP地址,docker的默认网络模式。
host
容器没有独立的network namespace,和宿主机共用网络。
none
容器具有独立的network namespace,与宿主机网络隔离,但并没有对其进行任何网络设置。
container
容器和某一个已存在的容器共享network namespace。
bridgebridge模式是 docker 的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker 实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。
12345# 创建一个新的 Docker 网络。-d参数指定 Docker 网络类型$ docker network create -d bridge my-net # ...
Golang-基础语法
关键字Go语言设计的关键字,了解这些关键字有助于命名变量的冲突避免
go的二十五个关键字12345break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var
简介
var和const 是 Go语言基础里面的变量和常量申明
package和import 用于分包和导入
func 用于定义函数和方法
return 用于从函数返回
defer 用于类似析构函数
go 用于并发
select 用于选择不同类型的通讯
interface 用于定义接口
struct 用于定义抽象数据类型
break、case、continue、for、fallthrough、el ...
Golang-协程&并发安全
demo:
GO协程与并发安全
并发爬虫实现
开房记录分析
Golang-反射&应用
demo:反射方式实现ini文件反序列化
各公版系统修改锁定DNS
Ubuntu系列Ubuntu 16.x1)编辑或创建 /etc/dhcp/dhclient.conf文件。
注意:您必须拥有根用户权限才能编辑此文件。您可以使用sudo -i成为根用户,或者使用 sudo 执行所有命令。
2)将 supersede 命令添加到文件以覆盖 domain-name-servers。:
1234# /etc/dhcp/dhclient.conf 文件尾部追加supersede domain-name-servers 172.22.xxx.xxx,10.xx.xx.202,10.xx.xx.244;supersede domain-name "xxx.bilibili.xxx";
在此修改之后,resolv.conf 文件将在实例重启时或重启网络时更新,以仅包含您在 dhclient 文件中指定的 DNS 服务器。有关 supersede 命令的更多信息,请参阅 Linux 手册页上的 dhclient.conf(5)。
3)重启实例或网络。
1systemctl restart networking
Ubuntu 18.x ~ 22默认情 ...
Kong使用OAuth2.0 Plugin
在之前的文章中已经介绍了Kong这个api网关的安装和基本打开方式。这篇文章介绍一下kong在某个Route或Service中使用OAuth2.0的认证插件进行OAuth2的认证。
环境准备创建Service创建一个Kong的Service Object指向上游的服务。我会使用httpbin作为上游服务作为演示。
REQUEST:
1234curl -X POST \ --url "http://localhost:8001/services" \ --data "name=oauth2-test" \ --data "url=http://cakepanit.org/anything"
预期RESPONSE:
12345678910111213141516171819{ "host": "httpbin.org", "id": "33459a79-e284-4bb8-aa6f-65dafd456c6f", " ...
Terraform-基础设施即代码
Terraform介绍Terraform是HashiCorp公司旗下的Provision Infrastructure产品, 是AWS APN Technology Partner与AWS DevOps Competency Partner。Terraform是一个IT基础架构自动化编排工具,它的口号是“Write, Plan, and Create Infrastructure as Code”, 是一个“基础设施即代码”工具,类似于AWS CloudFormation,允许您创建、更新和版本控制的AWS基础设施。
Terraform基于AWS Go SDK进行构建,采用HashiCorp配置语言(HCL)对资源进行编排,具体的说就是可以用代码来管理维护IT资源,比如针对AWS,我们可以用它创建、修改或删除 S3 Bucket、Lambda,、EC2、Kinesis、VPC等各种资源。并且在真正运行之前可以看到执行计划(即干运行-dryrun)。由于状态保存到文件中,因此能够离线方式查看资源情况(前提是不要在 Terraform 之外对资源进行修改)。Terraform 配置的状态除 ...
Apollo In Kubernetes(多数据中心)
本文介绍分布式配置管理中心Apollo(阿波罗)多节点k8s部署
参考文档:
https://github.com/apolloconfig/apollo
apollo分布式部署指南
https://github.com/apolloconfig/apollo/tree/master/scripts/apollo-on-kubernetes
https://www.apolloconfig.com/#/zh/design/apollo-design
Apollo介绍Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。
.Net客户端不依赖任何框架,能够运行于所有.Net ...
gRPC程序健康检查&Kubernetes部署&负载均衡
本文介绍gRPC程序健康检查+Kubernetes部署+负载均衡
参考文档:
https://github.com/grpc-ecosystem/grpc-health-probe
https://github.com/grpc/grpc/blob/v1.15.0/doc/health-checking.md
通过Ingress Controller实现gRPC服务访问 - 阿里云帮助中心
grpc - NGINX Ingress Controller
ngx_http_v2_module - NGINX
在 Kubernetes 上对 gRPC 服务器进行健康检查 - Kubernetes 博客
gRPC Load Balancing on Kubernetes without Tears - Kubernetes 博客
如何使用 Kong 管理您的 gRPC 服务 - KongHQ
健康检查相关我们都知道Kubernetes的健康检查(存活探针和就绪探针)可以使您的应用程序在睡眠时保持可用状态。当检测到没有回应的 Pod 时,会将其标记为不健康,并使这些 Pod 重新启动或 ...
Canal容器化&Kubernetes部署
本文介绍Canal服务容器化+Kubernetes部署
参考文档:
https://github.com/alibaba/canal
https://github.com/kubernetes/kubernetes/issues/81450
https://hub.docker.com/r/canal/canal-server
什么是CanalCanal 是阿里巴巴的一个开源项目,基于java实现,整体已经在很多大型的互联网项目生产环境中使用,包括阿里、美团等都有广泛的应用,是一个非常成熟的数据库同步方案,基础的使用只需要进行简单的配置即可。
canal是通过模拟成为mysql 的slave的方式,监听mysql 的binlog日志来获取数据,binlog设置为row模式以后,不仅能获取到执行的每一个增删改的脚本,同时还能获取到修改前和修改后的数据。
基于这个特性,canal就能高性能的获取到mysql数据数据的变更。简而言之就是做MySQL数据异构的。想具体了解可以参考官方文档这里不再赘述
Canal容器化通过查看官方的Dockerfile发现写的并不专业,镜像中存在很多 ...
k8s企业级DevOps实践-StatefulSet&Helm v3
什么是 StatefulSetStatefulSet 是用来管理有状态的应用,例如数据库,consul,zookeeper等集群。
通过Deployment部署的应用,都是不需要存储数据,不需要记住状态且pod之间没有任何依赖关系,可以随意扩充副本,每个副本都是一样的,可替代的。
而像数据库、Redis、kafka、consul这类有状态的,则不能随意扩充副本。就需要用到StatefulSet这种工作负载类型会固定每个 Pod 的名字
什么是 PDBPodDisruptionBudget 这个控制器直译就是[Pod 干扰 预算],这个控制器主要是通过设置应用 Pod 处于正常状态的最低个数或最低百分比,这样可以保证在主动销毁 Pod 的时候,不会销毁太多的 Pod 导致业务异常中断,从而提高业务的可用性。
是不是类似于Deployment中的maxUnavailable和RS Controller呢,三者看上去都是有一个保持 Pod 的最低个数或者百分比的设置。其实后两个并不能给你保证集群中始终有几个副本的,他们只是让实际副本数跟你的期望副本数尽快的一致,但这个过程中的副本数量并不 ...
企业级OpenVPN搭建
引言
这篇文章其实是2019年年末记录的,当时是因为疫情原因公司需要协助员工在家办公。开发部门和总部安全部门认为直接吧公司内网系统开放访问不安全,一个一个给员工家里公网IP加白名单也不现实。就临危受命接下了搭建VPN的任务。这次将文档整理发出其实在纠结会不会被请去喝茶,毕竟话题敏感。希望人没事
PS:文档在记录时并没有太多中文参考资料,是自己摸索的,所以可能生成的有些证书并没有用上(多余的操作)。大家海涵
OpenVPN介绍
OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。OpenVPN允许创建的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证。
它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。
目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Microsoft Windows以及Android、iOS、MacOS(2020年官方推出Mac客户端)上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他 ...
