Golang介绍

目前golang最新版本为1.17.3,经过12年的发展,生态已经成熟。 Go是一门工程语言 go诞生的初衷就是解决c/c++的各种弊端,提高生产力。 go编译速度极快,相对于c++/rust,10倍以上编译速度。 go fmt 代码格式化,代码风格统一。 自动垃圾搜集。简化c/c++的内存管理。 单一执行文件。 Go与其他语言的区别 Go vs Java: Go有内存垃圾自动处理,无虚拟机。 Go无对象编程的类class的概念,更强调struct(类似C). Go的对象继承是“鸭子原理",Java是“血缘关系". Go vs C: Go无宏定义.兼容C。基本上可以用C的风格来写Go代码。 Go vs C++: …

关系型数据库实践

关系型数据库是绝大多数系统的数据核心,这个关键设施也往往是性能的瓶颈。以下是一些使用建议。 按业务场景设计表结构 业务场景: 一个mysql的用户表,1000万条记录,如何查询出当天生日的用户? 表结构通用规则 所有字段必须非空而且有默认值。 一般都有创建时间和更新时间字段,mysql5.6+ 支持数据库本身更新此字段。 尽可能不使用TEXT、BLOB类型. 表字符集尽量选择UTF8MB4,mysql的utf8不是标准的字符集,utf8mb4可以存储表情字符。 索引字段尽可能使用int/long, 索引为字符型不能超过32个字符。 注释尽量清楚 建表的时候应该考虑最终的数据量,mysql单表应该不超过1000万,分布式数据库按业务字 …

java模式:单例/多例/线程单例

java单例模式有5种实现方式,推荐以下3种方式. 一、单例-饿汉式: 特点:线程安全,不能延时加载 public enum SingletonDemo1 { //枚举元素本身就是单例 INSTANCE; //添加自己需要的操作 public void singletonOperation(){ } } 二、单例-懒汉式-双重锁检查: 特点:线程安全,延时加载。 ps: java1.5后,volatile可以避免jvm初始化内存分配可能乱序的问题。 public class SingletonDemo2 { private static volatile SingletonDemo2 SingletonDemo2; private …

docker tips

一、docker rmi: 使用多个images id删除,前四位、空格区分 docker rmi 861b 7d51 过滤批量删除镜像, 对docker images 显示的行进行过滤。 根据tag名删除 docker rmi -f $(docker images | grep "fabletang/test-*" | awk "{print \$3}") docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}") 根据版本号删除 docker rmi -f $(docker …

docker私有仓库搭建

环境:centos7,docker 1.12+,registry 2. 一、准备工作: mkdir /data/docker-registry mkdir /data/docker-registry-auth 二、安全设置: 生成 http 密码文件 docker run --entrypoint htpasswd registry:2 -Bbn anycloud '123'> /data/docker-registry-auth/htpasswd 获取 SSL 证书 git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt …