mysql基础学习

字段长度表示问题

mysql中的字段长度表示的是字符长度,而非字节长度,例如varchar(64)表示最大字符串长度为64,而非字节大小为64

问题:下列代码的输出结果是什么

golang
package main import "fmt" func main() { defer func() { if err := recover(); err != nil { fmt.Println(1) } }() go func() { panic("123") }() defer func() { if err := recover(); err != nil { fmt.Println("recover") } }() }

结果: 空

问题原因:

pylance版本问题,经常会自动升级为新的版本

解决方案:

降低pylance版本到2023.5月(包括)之前

相关信息

icoding(vscode)无法跳转方法排查

背景

  • vscode配置golang项目,发现无法进行代码跳转,同时提示找不到goroot的路径

解决方法

  • 执行 go env 获取正确的gopath和goroot的路径
  • 配置到settings.json中
2024-10-180

sync

通过sync使程序只执行一次

golang
package main import ( "fmt" "sync" ) func main() { var once sync.Once onceBody := func() { fmt.Println("Only once") } done := make(chan bool) // 创建 10 个 goroutine,但是 onceBody 只会执行 1 次 for i := 0; i < 10; i++ { go func() { once.Do(onceBody) done <- true }() } // 等待 10 个 goroutine 结束 for i := 0; i < 10; i++ { <-done } }

pandas 字符串转int64

py
# 1. 将 bid 列中无效的值(如空字符串、None)替换为 NaN df['bid'] = df['bid'].replace([None, ''], np.nan) # 2. 使用 pd.to_numeric 将字符串转换为数值,并处理无法转换的情况 df['bid'] = pd.to_numeric(df['bid'], errors='coerce') # 3. 将 NaN 值(空值)填充为 0 或者你想要的默认值 df['bid'] = df['bid'].fillna(0)..astype('uint64', errors='ignore')

shell学习

shell基础

  • 环境变量可以从父shell传给子shell,即当子Shell产生时,它会继承父Shell的环境变量为自己所用
  • declare -a Name=("john" "sue") 报错zsh: unknown file attribute: j
    • 原因是使用的是zsh, 而declare是bash的命令
  • 测试某文件的读写执行属性的代码

image.png

学习背景

很多linux相关的知识都不太了解,所以需要不断地补充自己的知识储备

单机架构的三大问题

  • 数据量上限
    • 磁盘、内存、CPU 都有限
  • 性能瓶颈
    • 查询再快,也只能一台机器扛
  • 单点故障
    • 机器一挂,服务直接不可用

单机扛不住,所以需要分布式

ss 命令的使用

  • 概念: socket statistics的缩写

  • 作用

    • TCP/UDP
    • 端口监听
    • 网络连接
    • 进程占用
  • 常用命令 ss -lntp | grep nginx

    参数含义
    -llistening,仅查看监听
    -n数字显示端口
    -tTCP
    -p显示进程
    -a查看所有 socket

排查内存使用情况

  • ps
sh
ps aux --sort=-%mem |head
  • top
    • Shift + M 键(注意大写),按照内存使用量排序进程。
    • Shift + P 键(注意大写),按照cpu使用量排序进程。

查看服务状态

js
systemctl status nginx.service -l

核实服务端口

js
ps -ef | grep nginx root 14230 14210 0 09:07 ? 00:00:00 nginx: master process nginx -g daemon off; 101 14445 14230 0 09:07 ? 00:00:00 nginx: worker process 101 14446 14230 0 09:07 ? 00:00:00 nginx: worker process root 18205 11594 0 09:15 pts/0 00:00:00 grep --color=auto nginx [root@localhost nginx_update_docker]# ss -lntp | grep nginx LISTEN 0 511 *:4430 *:* users:(("nginx",pid=14446,fd=9),("nginx",pid=14445,fd=9),("nginx",pid=14230,fd=9)) LISTEN 0 511 *:4430 *:* users:(("nginx",pid=14446,fd=7),("nginx",pid=14445,fd=7),("nginx",pid=14230,fd=7)) LISTEN 0 511 127.0.0.1:80 *:* users:(("nginx",pid=14446,fd=8),("nginx",pid=14445,fd=8),("nginx",pid=14230,fd=8)) LISTEN 0 511 127.0.0.1:80 *:* users:(("nginx",pid=14446,fd=6),("nginx",pid=14445,fd=6),("nginx",pid=14230,fd=6)) [root@localhost nginx_update_docker]# ps -o pid,ppid,cmd -p 14230,14445,14446 PID PPID CMD 14230 14210 nginx: master process nginx -g daemon off; 14445 14230 nginx: worker process 14446 14230 nginx: worker proces

gcc

GCC 是一个工具链,用于编译代码,将代码与各种库依赖项连接,并为程序集,最后形成可执行文件。GCC 遵循标准的 UNIX 设计理念,工具简单,但效果和性能一流。GCC 开发组件利用多个分散的工具辅助软件编译。

yum

sh
yum的全称为Yellow dog Updater,Modified,是一个基于RPM的shell前端包管理器,能够从指定的服务器上(一个或多个)自动下载并安装或更新软件、删除软件。其最大的好处是可以自动解决依赖关系。RedHat和CentOS的版本为5以上的都会默认安装yum,所以该命令可以直接使用。