Go静态编译+优化体积
Golang静态编译+体积优化 用Golang写了个E5续费小工具,用了gin+gorm(sqlite3),静态编译后能运行,但是体积较大,使用如下方法进行优化,做个小记录 静态编译去除无用信息 go build -a -ldflags '-s -w -extldflags "-static"' . 使用upx壳压缩 upx xxx 优化前体积 21M: 优化后体积 5.7M:...
Golang静态编译+体积优化 用Golang写了个E5续费小工具,用了gin+gorm(sqlite3),静态编译后能运行,但是体积较大,使用如下方法进行优化,做个小记录 静态编译去除无用信息 go build -a -ldflags '-s -w -extldflags "-static"' . 使用upx壳压缩 upx xxx 优化前体积 21M: 优化后体积 5.7M:...
Goland使用wsl2输出提前换行问题的解决 问题描述 搭建好wsl2的go环境后,使用Goland进行开发,运行后出现日志换行的问题,如下: 明明还有这么长的距离,但是出现了提前的换行。 解决办法 解决办法也很简单: 首先按住Ctrl+Shif+A键 然后输入Registry,进入Registry界面 输入run.process.with.pty,找到go.run.pr...
关于Go的http.HandleFunc方法执行过程 http.HandleFunc方法作用为注册请求URL到具体处理方法的映射,也就是方法的路由。 首先贴上方法原型 func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) { DefaultServeMux.HandleFunc(pattern,...
ConcurrentHashMap 简要分析 JDK1.7和1.8,不同之处? 1. JDK1.7 在JDK1.7中ConcurrentHashMap底层结构为Segment数组。 而Segment继承自ReentrantLock,因此Segment是一个可重入的锁,我们对Segment的线程安全操作就是通过Segment(ReentrantLock)的lock方法来保证的,同时我们也就可...
普通索引和唯一索引 主键索引:特殊的唯一索引,不允许有空值 唯一索引:与 "普通索引"类似,但是索引列的值必须唯一,但是允许为空 查找过程的区别 普通索引和唯一索引在查找时有区别: 普通索引在找到匹配的值之后,还会继续往下寻找 唯一索引在找到匹配的之后,就不会再往下寻找了 但是这带来的区别通常来说特别小,因为InnoDB的数据都是按照页为单位读取的,当需要一条记录时,会把这个记录...
一致性读与当前读 开启一个事务,可以通过begin或start transaction命令开启,但是这两个命令并不是一个事务的起点,事务真正开启是在执行第一个操作InnoDB表的语句之后,才是真正启动。这样可以最大程度上支持事务并发,让锁持有的时间尽量短。 如果想要立马启动一个事务,那么可以通过start transaction with consistent snapshot命令去开启事务...
了解MySQL的锁 MySQL中可以把锁大致分成全局锁,表锁以及行锁三类。 全局锁 全局锁会锁住整个数据库实例。可以通过下面命令(FTWRL)给数据库加全局读锁: Flush tables with read lock; 解锁通过 unlock tables; 使用此命令后,数据更新、数据定义语句以及更新类事务的提交语句会被阻塞住。全局锁的典型场所是做全库的逻辑备份(备份过程中整个库处于...
索引 索引的出现就是为了提高数据查询的效率,如书的目录 常见索引结构 索引通常有几种常用的数据结构 key-val结构(hash) 优点:查询速度快 缺点:范围查询效率低 适合等值查询。 有序数组 如下,将数据根据id递增的顺序,直接存放在数组里面,通过二分就可以进行快速的查询,但是插入时效率较低,需要将所有的数据往后移动,因此适合静态存储。 树 二叉搜索树 父节点左边的值小于父...