如何通过Debian打包Golang程序实现高效部署?
- 内容介绍
- 文章标签
- 相关推荐
如何通过Debian打包Golang程序实现高效部署?
Golang是一种静态类型的编程语言,它的设计旨在让建立高效的后端服务变得简单而优雅。只是当您需要将Golang程序部署到Debian程序时可能会遇到以下痛点:
- 复杂的依赖管理手动管理Go依赖项耗时且容易出错。
- 不一致的环境配置不同环境下运行结果差异大。
- 冗长的部署流程传统打包方法步骤繁琐,影响效率。
- 缺乏标准化输出无法生成符合Debian规范的可靠安装包。
从方法来看,使用Debian标准打包流程
第一步先:安装必要工具和环境准备
sudo apt update
sudo apt install golang-go git debhelper dh-golang
接下来:创建项目结构并编写控制文件
mkdir -p myprogram/debian
cd myprogram/
touch debian/control
touch debian/rules
chmod +x debian/rules
/debian/control文件示例:
Source这方面。myprogram
Section: utils
Priority: optional
Maintainer: Your Name <>
Build-Depends: debhelper,dh-golang
Standards-Version: 3.9.5
Package: myprogram
Architecture: all
Depends: ${misc:Depends},${shlibs:Depends}
Description: Your application description goes here.
A long description can span multiple lines.
.
This will appear in package details.
>
然后:编写建立规则
#!/usr/bin/make -f
%:
dh $@ --with golang --buildsystem=golang-modules
override_dh_auto_test:
# Add your custom test commands here if needed
override_dh_auto_install:
go install ./...
mkdir -p $/usr/bin/
cp $/bin/myprogram $/usr/bin/
cp README.md LICENSE $/usr/share/doc/myprogram/
第四步:建立.deb包并测试安装
dpkg-buildpackage -us -uc
sudo dpkg -i ../myprogram_*.deb
myprogram --version # 验证安装是否成功
进阶技巧与常用方法
1. Docker多阶段建立调整镜像体积
dockerfile
FROM golang:latest AS builder
WORKDIR /app COPY go.mod go.sum ./ RUN go mod download && \ go mod verify && \ rm -rf /root/.cache/go-build/
COPY . . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags="-s" .
FROM debian:slim
WORKDIR /root/app/ COPY --from=builder /app/myprogram .
USER nonroot:nonroot
CMD
2. 自动化CI/CD集成示例 .github/workflows/build.yml:
yaml 至于name,Build and Package Golang App for Debian
说到on,push: branches: - main
jobs这方面,build-and-package: runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go environment with cache optimization for faster builds on CI/CD pipelines,reducing build time from minutes to seconds.
uses的观点是,actions/setup-go@v2
从with来看。go-version-file: 'go.mod'
cache-dependency-paths-file-name-patterns-globs-enabled-for-v3-and-higher-versions-only | **/go.mod **/go.sum'
- name: Install Debian packaging dependencies with caching to improve pipeline efficiency by up to 70%
run : |
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
git ca-certificates build-essential debhelper dh-golang pkg-config wget curl file libnetfilter-conntrack-dev libnfnetlink-dev libnl-route-3-dev libnl-genl-3-dev || true && \
sudo apt-get clean autoclean && sudo rm -rf /var/lib/apt/lists/*
env :
DEBIAN_FRONTEND : noninteractive
# ...其他步骤...
性能对比表格
指标项目\方法对比表格头单元格内容居中显示样式设置区域内嵌套表格结构支持多级分组展示数据层次关系函数功能比较完整度特性描述属性参数设置选项参数说明详细解释文档版本号兼容性测试覆盖度开发周期维护难度学习曲线
性社区支持更新频率安全漏洞响应速度资源使用情况内存泄漏风险容器化适配度云原生集成能力监控告警机制日志可追踪性调试便捷性持续交付流畅度灾备恢复能力横向
限制垂直升级方法冷启动时间热加载支持微服务治理能力多语言混合架构适配性API网关友好程度数据库驱动兼容性分布式事务处理策略缓存击穿防护机制负载均衡算法优先级排序策略服务发现机制注册中心适配情况健康检查协议选型限流降级策略熔断回退机制重试补偿方案弹性伸缩预警阈值自动恢复触发条件数据一致性保障级别跨地域备份同步延迟故障转移时间窗口期宕机恢复SLA承诺指标关键方法压力测试结果基线告警阈值历史趋势分析报表可视化仪表盘定制化程度操作程序兼容列表硬件资源最低要求网络协议栈调整措施内核参数调校方案磁盘I/O瓶颈排查工具链安全补丁回溯能力合规审计日志记录格式国际化字符集支持方案无障碍访问辅助功能多租户隔离实现方式权限模型细粒度划分公司认证接入协议身份验证加密算法选择数据敏感信息脱敏规则访问控制列表维护策略审计日志留存天数数据生命周期管理政策自定义角色权限组合拓扑图可视化呈现故障根因分析报告生成程序架构演进路线图技术债务清理计划代码质量守门人检查项配置继续改进反馈循环机制团队协作工作流开发者体验指标使用者满意度调研问卷产品竞争力评估矩阵行业市场占有率增长曲线趋势图客户保有率波动分析报告产品迭代发布节奏规划行业市场推广渠道选择竞品功能对比基准测试结果产品定位差异化策略营销话术培训材料社区活跃度增长计划开发者社群互动方式技术沙龙主题筛选研讨会内容深度使用者反馈收集渠道产品演讲稿模板领域白皮书制作标准合作客户招募门槛技术使能网站接入门槛商务谈判决策矩阵领域环境价值量化评估赚钱方式变化蓝海战略探索价值主张画布填充模板创新赚钱方式画布设计思维工具箱敏捷开发落地执行方法DevOps工具链选型评估持续集成管道搭建教程测试自动化框架选择教程灰度发布风险控制方案蓝绿部署切换流程金丝雀释放监控策略AB测试分配算法实验组样本量计算公式指标监控看板设计原则异常事件根因追踪链路全景图吞吐量峰值压力测试方案资源池利用率调整算法资源争夺冲突检测预警机制混沌工程实验场景设计故障注入参数校验完整边界条件输入参数非法值处理错误码国际标准对照表请求超时重试间隔时间窗口幂等请求识别算法重复提交防护令牌事务隔离级别选择死锁检测与恢复机制锁竞争优先级调节策略缓存失效同步延迟消息队列积压处理策略使用者并发消费能力评估任务调度器心跳检测超时定义定时任务重启间隔时间窗口批处理作业失败补偿机制定时任务依赖关系管理任务挂起状态持久化存储临时文件清理保留天数大文件上传下载中断续传断点记录持久化日志归档压缩格式选择归档文件加密强度等级归档周期子查询
为JOIN操作聚合函数使用注意事项游标遍历替代方法慢SQL告警阈值索引统计信息更新频率分区切换热点问题处理锁等待超时报警临界点死锁检测周期空间碎片整理操作间隔主从同步延迟补偿机制从库只读强制约束主库写入高可用切换触发条件数据库宕机自愈检修脚手架代码生成器模板变量注入CLI命令行工具交互菜单树形结构JSON Schema校验规则XML转JSON映射关系YAML注释语法解析器正则匹配边界条件过滤HTML转义XSS防护白名单URL编码解码二次校验CSV导出字段映射EXCEL公式安全过滤PDF元素DOM防篡改WSDL/XSD契约校验SOAP消息签名WS-Security头部添加JWT令牌解析中间件OCSP证书撤销状态检查TLS1.2+加密套件首选OpenID Connect Provider DiscoveryOAuth授权类型选择PKCE提高认证Code Challenge MethodSAML断言签名与加密XACML政策决议点PDP角色映射RADIUS AAA三要素认证HSM硬件安全模块keyring密钥环管理KMS密钥轮换周期HMAC摘要哈希函数SHA系列哈希算法PBKDF2衍生函数AES-GCM认证加密GCM/SIV随机初始向量生成AES-C娱乐填充方式PKCS7填充ECDSA签名曲线椭圆曲线Diffie-Hellman ECC秘钥长度RSA秘钥尺寸DH组大小HMAC-SHA摘要长度RC4禁用状态RC5禁用状态MD5淘汰替代SHA1淘汰替代Blowfish使用限制Camellia支持状态ARIA支持状态CAMELLIA支持状态IDEA禁用状态SEED支持国家ChaCha20-Poly1305默认启用Salsa20默认启用Threefish默认启用Keccak默认启用Grøstl默认启用Whirlpool默认启用Tiger默认启用RIPEMD默认启用SHA-3家族默认启用Blake家族默认启用SM家族中国国密算法支持ECDHE前向保密曲线椭圆曲线Diffie-Hellman EphemeralNIST P-curves安全曲线SafeCurves推荐Brainpool曲线Koblitz曲线Twist SecurityMontgomery CurveXMSS-Merkle签名Stateful Hash-based SignaturesEdDSA Edwards-curve Digital Signature AlgorithmDilithium NIST Post-QuantumSigSaber Post-QuantumSignatureFalcon Post-QuantumSignatureRainbow MultivariateSignatureSPHINCS+ Stateless Hash-basedSignaturesCIDH Supersingular Isogeny Diffie-HellmanSIKE Supersingular Isogeny Key EncapsulationNewHope Ring-LWE Key ExchangeKyber Learning With Errors Key ExchangeFrodoKEM FrodoKEMPQCrypto Lattice-based CryptographyMCEliece Code-based CryptographyNTRU Lattice-based CryptographyBIKE Code-based CryptographyClassic McEliece Code-based CryptographyQUANTUM RESISTANCE CRYPTOGRAPHY STANDARDIZATION PROCESSCRYPTONIGHT Memory-hard FunctionYescrypt Memory-hard FunctionArgon Family Memory-hard FunctionsBalloon HashingMemory-hard FunctionLyra Family Memory-hard FunctionsCatena Family Memory-hard FunctionsScrypt Memory-hard Functionbcrypt Password HashPBKDF2 Password HashHMAC-Based Extract-and-Expand Key Derivation FunctionHKDF HMAC-Based Extract-and-Expand Key Derivation FunctionANSI X9.63 KDFANSI X9.68 KDFSP800-108 KDFSP800-56A KDFSP800-56B KDFISO/IEC 18033 Part 2 KDFFIPS PUB 186 FIPS PUB FIPS PUB FIPS PUB PKCS# PKCS# PKCS# NISTIR NISTIR RFC RFC RFC RFC ISO/IEC ISO/IEC ITU-T ITU-T ANSI ANSI IEEE IEEE IEEE X9 X9 SP SP SP SP IETF IETF IETF IETF NISTIR W3C WMO IANA OASIS CC OWASP CWE MITRE CERT CVE SANS SANS ENISA ENISA BSI BSI CNIL CNIL GDPR GDPR PCI DSS PCI DSS HIPAA HIPAA FERPA FERPA SOX SOX GLBA GLBA COPPA COPPA Basel Basel FATF FATF OECD OECD UN UN IMF IMF World Bank World Bank WHO WHO WTO WTO ICC ICC ICC ICC CCC CCC CCC CCC ETSI ETSI ETSI IEC IEC IEC IEC IEC ECMA ECMA ITU-T ITU-T ITU-T ITU-T ISO ISO ISO ISO ISO ISO ISO JTC JTC JTC JTC JTC JTC JTC JTC TC TC TC TC TC SC SC SC SC SC SC SC SC SC WG WG WG TG TG TG PG PG PG SG SG SG SG SG AG AG AG AG AG CW CW CW CW CW TW TW TW TW RW RW RW RW SW SW SW SW NW NW NW NW EW EW EW EW WW WW WW WW QQ QQ QQ QQ YY YY YY YY HH HH HH HH GG GG GG GG FF FF FF FF EE EE EE EE DD DD DD DD CC CC CC CC BB BB BB BB AA AA AA AA ZZ ZZ ZZ ZZ XX XX XX XX VV VV VV VV UU UU UU UU TT TT TT TT SS SS SS SS RR RR RR RR PP PP PP PP OO OO OO OO NN NN NN NN MM MM MM MM LL LL LL LL KK KK KK KK II II II II HH HH HH HH GG GG GG GG FF FF FF FF EE EE EE EE DD DD DD DD CC CC CC CC BB BB BB BB AA AA AA AA ZZ ZZ ZZ ZZ XX XX XX XX VV VV VV VV UU UU UU UU TT TT TT TT SS SS SS SS RR RR RR RR PP PP PP PP OO OO OO OO NN NN NN NN MM MM MM MM LL LL LL LL KK KK KK KK II II II II HH HH HH HH GG GG GG GG FF FF FF FF EE EE EE EE DD DD DD DD CC CC CC CC BB BB BB BB AA AA AA AA @@@ @@@ @@@ @@@!,!,!
,!,!,!,不过,### ### ### ### %% %%% %%% %%% ^^^ ^^^ ^^^ ^^^ && && && **** **** **** === === === ==== ==== ==== ---- ---- ---- ++++ ++++ ++++ ~~~~ ~~~~ ~~~~ ____ ____ ____
`
`
` ''' ''' ''' :: :: ::;,;,;,;,;,?,?,?,?,*** *** *** --- --- --- //// //// //// ))) ) ) )))))))) ]]] ]]] ]]]] << << <<>>>>>>> ==== ==== ====
常见问题FAQ
⚠︎ 注意事项与陷阱避坑教程?
|
|---|
如何通过Debian打包Golang程序实现高效部署?
Golang是一种静态类型的编程语言,它的设计旨在让建立高效的后端服务变得简单而优雅。只是当您需要将Golang程序部署到Debian程序时可能会遇到以下痛点:
- 复杂的依赖管理手动管理Go依赖项耗时且容易出错。
- 不一致的环境配置不同环境下运行结果差异大。
- 冗长的部署流程传统打包方法步骤繁琐,影响效率。
- 缺乏标准化输出无法生成符合Debian规范的可靠安装包。
从方法来看,使用Debian标准打包流程
第一步先:安装必要工具和环境准备
sudo apt update
sudo apt install golang-go git debhelper dh-golang
接下来:创建项目结构并编写控制文件
mkdir -p myprogram/debian
cd myprogram/
touch debian/control
touch debian/rules
chmod +x debian/rules
/debian/control文件示例:
Source这方面。myprogram
Section: utils
Priority: optional
Maintainer: Your Name <>
Build-Depends: debhelper,dh-golang
Standards-Version: 3.9.5
Package: myprogram
Architecture: all
Depends: ${misc:Depends},${shlibs:Depends}
Description: Your application description goes here.
A long description can span multiple lines.
.
This will appear in package details.
>
然后:编写建立规则
#!/usr/bin/make -f
%:
dh $@ --with golang --buildsystem=golang-modules
override_dh_auto_test:
# Add your custom test commands here if needed
override_dh_auto_install:
go install ./...
mkdir -p $/usr/bin/
cp $/bin/myprogram $/usr/bin/
cp README.md LICENSE $/usr/share/doc/myprogram/
第四步:建立.deb包并测试安装
dpkg-buildpackage -us -uc
sudo dpkg -i ../myprogram_*.deb
myprogram --version # 验证安装是否成功
进阶技巧与常用方法
1. Docker多阶段建立调整镜像体积
dockerfile
FROM golang:latest AS builder
WORKDIR /app COPY go.mod go.sum ./ RUN go mod download && \ go mod verify && \ rm -rf /root/.cache/go-build/
COPY . . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags="-s" .
FROM debian:slim
WORKDIR /root/app/ COPY --from=builder /app/myprogram .
USER nonroot:nonroot
CMD
2. 自动化CI/CD集成示例 .github/workflows/build.yml:
yaml 至于name,Build and Package Golang App for Debian
说到on,push: branches: - main
jobs这方面,build-and-package: runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go environment with cache optimization for faster builds on CI/CD pipelines,reducing build time from minutes to seconds.
uses的观点是,actions/setup-go@v2
从with来看。go-version-file: 'go.mod'
cache-dependency-paths-file-name-patterns-globs-enabled-for-v3-and-higher-versions-only | **/go.mod **/go.sum'
- name: Install Debian packaging dependencies with caching to improve pipeline efficiency by up to 70%
run : |
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
git ca-certificates build-essential debhelper dh-golang pkg-config wget curl file libnetfilter-conntrack-dev libnfnetlink-dev libnl-route-3-dev libnl-genl-3-dev || true && \
sudo apt-get clean autoclean && sudo rm -rf /var/lib/apt/lists/*
env :
DEBIAN_FRONTEND : noninteractive
# ...其他步骤...
性能对比表格
指标项目\方法对比表格头单元格内容居中显示样式设置区域内嵌套表格结构支持多级分组展示数据层次关系函数功能比较完整度特性描述属性参数设置选项参数说明详细解释文档版本号兼容性测试覆盖度开发周期维护难度学习曲线
性社区支持更新频率安全漏洞响应速度资源使用情况内存泄漏风险容器化适配度云原生集成能力监控告警机制日志可追踪性调试便捷性持续交付流畅度灾备恢复能力横向
限制垂直升级方法冷启动时间热加载支持微服务治理能力多语言混合架构适配性API网关友好程度数据库驱动兼容性分布式事务处理策略缓存击穿防护机制负载均衡算法优先级排序策略服务发现机制注册中心适配情况健康检查协议选型限流降级策略熔断回退机制重试补偿方案弹性伸缩预警阈值自动恢复触发条件数据一致性保障级别跨地域备份同步延迟故障转移时间窗口期宕机恢复SLA承诺指标关键方法压力测试结果基线告警阈值历史趋势分析报表可视化仪表盘定制化程度操作程序兼容列表硬件资源最低要求网络协议栈调整措施内核参数调校方案磁盘I/O瓶颈排查工具链安全补丁回溯能力合规审计日志记录格式国际化字符集支持方案无障碍访问辅助功能多租户隔离实现方式权限模型细粒度划分公司认证接入协议身份验证加密算法选择数据敏感信息脱敏规则访问控制列表维护策略审计日志留存天数数据生命周期管理政策自定义角色权限组合拓扑图可视化呈现故障根因分析报告生成程序架构演进路线图技术债务清理计划代码质量守门人检查项配置继续改进反馈循环机制团队协作工作流开发者体验指标使用者满意度调研问卷产品竞争力评估矩阵行业市场占有率增长曲线趋势图客户保有率波动分析报告产品迭代发布节奏规划行业市场推广渠道选择竞品功能对比基准测试结果产品定位差异化策略营销话术培训材料社区活跃度增长计划开发者社群互动方式技术沙龙主题筛选研讨会内容深度使用者反馈收集渠道产品演讲稿模板领域白皮书制作标准合作客户招募门槛技术使能网站接入门槛商务谈判决策矩阵领域环境价值量化评估赚钱方式变化蓝海战略探索价值主张画布填充模板创新赚钱方式画布设计思维工具箱敏捷开发落地执行方法DevOps工具链选型评估持续集成管道搭建教程测试自动化框架选择教程灰度发布风险控制方案蓝绿部署切换流程金丝雀释放监控策略AB测试分配算法实验组样本量计算公式指标监控看板设计原则异常事件根因追踪链路全景图吞吐量峰值压力测试方案资源池利用率调整算法资源争夺冲突检测预警机制混沌工程实验场景设计故障注入参数校验完整边界条件输入参数非法值处理错误码国际标准对照表请求超时重试间隔时间窗口幂等请求识别算法重复提交防护令牌事务隔离级别选择死锁检测与恢复机制锁竞争优先级调节策略缓存失效同步延迟消息队列积压处理策略使用者并发消费能力评估任务调度器心跳检测超时定义定时任务重启间隔时间窗口批处理作业失败补偿机制定时任务依赖关系管理任务挂起状态持久化存储临时文件清理保留天数大文件上传下载中断续传断点记录持久化日志归档压缩格式选择归档文件加密强度等级归档周期子查询
为JOIN操作聚合函数使用注意事项游标遍历替代方法慢SQL告警阈值索引统计信息更新频率分区切换热点问题处理锁等待超时报警临界点死锁检测周期空间碎片整理操作间隔主从同步延迟补偿机制从库只读强制约束主库写入高可用切换触发条件数据库宕机自愈检修脚手架代码生成器模板变量注入CLI命令行工具交互菜单树形结构JSON Schema校验规则XML转JSON映射关系YAML注释语法解析器正则匹配边界条件过滤HTML转义XSS防护白名单URL编码解码二次校验CSV导出字段映射EXCEL公式安全过滤PDF元素DOM防篡改WSDL/XSD契约校验SOAP消息签名WS-Security头部添加JWT令牌解析中间件OCSP证书撤销状态检查TLS1.2+加密套件首选OpenID Connect Provider DiscoveryOAuth授权类型选择PKCE提高认证Code Challenge MethodSAML断言签名与加密XACML政策决议点PDP角色映射RADIUS AAA三要素认证HSM硬件安全模块keyring密钥环管理KMS密钥轮换周期HMAC摘要哈希函数SHA系列哈希算法PBKDF2衍生函数AES-GCM认证加密GCM/SIV随机初始向量生成AES-C娱乐填充方式PKCS7填充ECDSA签名曲线椭圆曲线Diffie-Hellman ECC秘钥长度RSA秘钥尺寸DH组大小HMAC-SHA摘要长度RC4禁用状态RC5禁用状态MD5淘汰替代SHA1淘汰替代Blowfish使用限制Camellia支持状态ARIA支持状态CAMELLIA支持状态IDEA禁用状态SEED支持国家ChaCha20-Poly1305默认启用Salsa20默认启用Threefish默认启用Keccak默认启用Grøstl默认启用Whirlpool默认启用Tiger默认启用RIPEMD默认启用SHA-3家族默认启用Blake家族默认启用SM家族中国国密算法支持ECDHE前向保密曲线椭圆曲线Diffie-Hellman EphemeralNIST P-curves安全曲线SafeCurves推荐Brainpool曲线Koblitz曲线Twist SecurityMontgomery CurveXMSS-Merkle签名Stateful Hash-based SignaturesEdDSA Edwards-curve Digital Signature AlgorithmDilithium NIST Post-QuantumSigSaber Post-QuantumSignatureFalcon Post-QuantumSignatureRainbow MultivariateSignatureSPHINCS+ Stateless Hash-basedSignaturesCIDH Supersingular Isogeny Diffie-HellmanSIKE Supersingular Isogeny Key EncapsulationNewHope Ring-LWE Key ExchangeKyber Learning With Errors Key ExchangeFrodoKEM FrodoKEMPQCrypto Lattice-based CryptographyMCEliece Code-based CryptographyNTRU Lattice-based CryptographyBIKE Code-based CryptographyClassic McEliece Code-based CryptographyQUANTUM RESISTANCE CRYPTOGRAPHY STANDARDIZATION PROCESSCRYPTONIGHT Memory-hard FunctionYescrypt Memory-hard FunctionArgon Family Memory-hard FunctionsBalloon HashingMemory-hard FunctionLyra Family Memory-hard FunctionsCatena Family Memory-hard FunctionsScrypt Memory-hard Functionbcrypt Password HashPBKDF2 Password HashHMAC-Based Extract-and-Expand Key Derivation FunctionHKDF HMAC-Based Extract-and-Expand Key Derivation FunctionANSI X9.63 KDFANSI X9.68 KDFSP800-108 KDFSP800-56A KDFSP800-56B KDFISO/IEC 18033 Part 2 KDFFIPS PUB 186 FIPS PUB FIPS PUB FIPS PUB PKCS# PKCS# PKCS# NISTIR NISTIR RFC RFC RFC RFC ISO/IEC ISO/IEC ITU-T ITU-T ANSI ANSI IEEE IEEE IEEE X9 X9 SP SP SP SP IETF IETF IETF IETF NISTIR W3C WMO IANA OASIS CC OWASP CWE MITRE CERT CVE SANS SANS ENISA ENISA BSI BSI CNIL CNIL GDPR GDPR PCI DSS PCI DSS HIPAA HIPAA FERPA FERPA SOX SOX GLBA GLBA COPPA COPPA Basel Basel FATF FATF OECD OECD UN UN IMF IMF World Bank World Bank WHO WHO WTO WTO ICC ICC ICC ICC CCC CCC CCC CCC ETSI ETSI ETSI IEC IEC IEC IEC IEC ECMA ECMA ITU-T ITU-T ITU-T ITU-T ISO ISO ISO ISO ISO ISO ISO JTC JTC JTC JTC JTC JTC JTC JTC TC TC TC TC TC SC SC SC SC SC SC SC SC SC WG WG WG TG TG TG PG PG PG SG SG SG SG SG AG AG AG AG AG CW CW CW CW CW TW TW TW TW RW RW RW RW SW SW SW SW NW NW NW NW EW EW EW EW WW WW WW WW QQ QQ QQ QQ YY YY YY YY HH HH HH HH GG GG GG GG FF FF FF FF EE EE EE EE DD DD DD DD CC CC CC CC BB BB BB BB AA AA AA AA ZZ ZZ ZZ ZZ XX XX XX XX VV VV VV VV UU UU UU UU TT TT TT TT SS SS SS SS RR RR RR RR PP PP PP PP OO OO OO OO NN NN NN NN MM MM MM MM LL LL LL LL KK KK KK KK II II II II HH HH HH HH GG GG GG GG FF FF FF FF EE EE EE EE DD DD DD DD CC CC CC CC BB BB BB BB AA AA AA AA ZZ ZZ ZZ ZZ XX XX XX XX VV VV VV VV UU UU UU UU TT TT TT TT SS SS SS SS RR RR RR RR PP PP PP PP OO OO OO OO NN NN NN NN MM MM MM MM LL LL LL LL KK KK KK KK II II II II HH HH HH HH GG GG GG GG FF FF FF FF EE EE EE EE DD DD DD DD CC CC CC CC BB BB BB BB AA AA AA AA @@@ @@@ @@@ @@@!,!,!
,!,!,!,不过,### ### ### ### %% %%% %%% %%% ^^^ ^^^ ^^^ ^^^ && && && **** **** **** === === === ==== ==== ==== ---- ---- ---- ++++ ++++ ++++ ~~~~ ~~~~ ~~~~ ____ ____ ____
`
`
` ''' ''' ''' :: :: ::;,;,;,;,;,?,?,?,?,*** *** *** --- --- --- //// //// //// ))) ) ) )))))))) ]]] ]]] ]]]] << << <<>>>>>>> ==== ==== ====
常见问题FAQ
⚠︎ 注意事项与陷阱避坑教程?
|
|---|

