Eric’s Blog 👋 💻

一个小站点,记录一些技术笔记,以及一些有趣的事情。

Go 标准库学习

快速学习Go标准库的方法 Go标准库是Go语言强大功能的核心部分,学习标准库可以显著提高开发效率和代码质量。以下是系统学习Go标准库的方法: 1. 结构化学习路径 基础核心库(先掌握这些) fmt:格式化输入输出 os:操作系统功能接口 io/ioutil:I/O操作 strings:字符串处理 strconv:字符串转换 time:时间日期处理 errors:错误处理 sort:排序功能 中级重要库 bufio:缓冲I/O encoding/json:JSON处理 net/http:HTTP客户端和服务端 sync:并发同步原语 flag:命令行参数解析 path/filepath:文件路径处理 regexp:正则表达式 高级专业库 context:上下文管理 database/sql:数据库接口 crypto:加密相关 reflect:反射 runtime:运行时接口 testing:测试功能 2. 高效学习方法 实践驱动学习法 小项目实践:为每个库创建小型示例项目 // strings库示例 package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Contains("hello", "he")) // true fmt.Println(strings.ToUpper("hello")) // HELLO fmt.Println(strings.Split("a,b,c", ",")) // [a b c] } 修改官方示例:在pkg.go.dev上找到官方示例并修改实验 每日一库计划 每天专注学习1-2个标准库 记录学习笔记和代码片段 周末回顾并整合所学内容 3. 利用优质资源 官方资源 Go标准库文档 Go by Example Go官方博客 书籍推荐 《Go语言标准库》 《Go程序设计语言》(The Go Programming Language) 4. 实用技巧 IDE集成:使用VS Code或GoLand的代码补全和文档查看功能 源码阅读:直接阅读标准库源码(位于Go安装目录的src文件夹) 测试驱动:为学习的库编写测试用例 func TestStrings(t *testing.T) { if !strings.Contains("hello", "he") { t.Error("Contains failed") } } 比较学习:对比相似功能的不同实现(如bytes vs strings) 5. 学习路线图示例 阶段 时间 内容 产出物 1 第1周 基础I/O、字符串、错误处理 10个实用代码片段 2 第2周 文件操作、时间、命令行参数 小型文件处理工具 3 第3周 并发、HTTP、JSON 简易HTTP服务 4 第4周 数据库、测试、高级特性 带测试的数据库应用 6. 避免的常见误区 贪多求全:不要试图一次性记住所有API 只看不练:必须动手编写代码 忽视文档:标准库文档包含丰富示例和用法说明 过早优化:先掌握基本用法,再研究高级技巧 通过系统化的学习和持续的实践,你可以在4-6周内掌握Go标准库的核心内容,并在实际开发中熟练运用。 ...

四月 13, 2025 · 1 分钟 · Eric

国家网站列表

国家官方网站合集

一月 5, 2025 · 1 分钟 · Eric

Dockerfile 分段式构建

介绍 在Docker Engine 17.05 中引入了多阶段构建 在一个Dockerfile中使用多个FROM指令,每个FROM都可以使用不同的基镜像,并且每条指令都将开始新阶段构建。在多阶段构建中,我们可以将资源从一个阶段复制到另一个阶段,在最终镜像中只保留我们所需要的内容。 Dockerfile 示例 # build ui FROM node:16 AS ui COPY ui /src RUN cd /src \ && npm config set registry http://mirrors.cloud.tencent.com/npm/ \ && npm install \ && npm run build # build server FROM maven:3.6-jdk-8 AS server COPY server /src COPY --from=ui /src/dist /src/admin/src/main/resources/public RUN cd /src && mvn clean install # build image FROM openjdk:8-jre-alpine3.9 LABEL author=Eric COPY --from=server /src/admin/target/admin.jar /opt/app.jar COPY application.yml /opt/config/application.yml WORKDIR /opt EXPOSE 8080 ENTRYPOINT ["java","-jar","app.jar", "--spring.config.location=optional:config/application.yml"] dockerfile中 FROM 指令后添加 AS <NAME>来命名构建阶段,以后的阶段中使用COPY --from=<NAME> /src/admin/target/admin.jar /opt/app.jar 从指定的阶段中复制文件; ...

七月 9, 2023 · 1 分钟 · Eric

小米路由器Pro SSH登录

测试型号为 小米路由器Pro R3P 更新固件为开发者版本 Rom下载地址:http://www1.miwifi.com/miwifi_download.html 后台手动升级 安装ssh工具包 ssh工具包下载地址:https://d.miwifi.com/rom/ssh 需要登录小米帐号,会有root密码,页面有安装步骤 问题1 Unable to negotiate with 10.11.1.8 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 解决 ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 root@192.168.31.1 问题2 Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss 解决 指定算法 ssh -o HostKeyAlgorithms=+ssh-rsa -oKexAlgorithms=+diffie-hellman-group1-sha1 root@192.168.31.1

一月 26, 2023 · 1 分钟 · Eric

Docker OpenOffice excel 转 pdf

Docker 安装 OpenOffice OpenOffice 下载地址:https://www.openoffice.org/download/index.html 选择对应环境的安装包文件,下载 Download full installation Dockerfile 如下: FROM centos:7 MAINTAINER Eric # 添加 openoffice 安装包 ADD Apache_OpenOffice_4.1.13_Linux_x86-64_install-rpm_zh-CN.tar.gz /opt/ # 添加字体,拷贝自 windows 环境下 C:/Windows/Fonts 目录文件 COPY ./fonts /usr/share/fonts RUN cd /opt && \ yum install -y zh-CN/RPMS/*.rpm && \ yum install -y java-1.8.0-openjdk && \ yum clean all && \ chmod -R 755 /usr/share/fonts && \ yum install mkfontscale fontconfig -y && \ yum groupinstall "X Window System" -y && \ mkfontscale && \ mkfontdir && \ fc-cache -f && \ rm -rf zh-CN EXPOSE 8100 CMD /opt/openoffice4/program/soffice -headless -nofirststartwizard -accept="socket,host=0.0.0.0,port=8100;urp;" 安装完成启动容器,映射8100端口即可; ...

八月 7, 2022 · 2 分钟 · Eric