数据库事务的acid理论介绍 数据库允许多个并发事务同时对数据进行读写和修改的能力,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。B、存入200元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了200元。整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。例如:数据库中两个变量的和在事务执行前后是不发生变化的。...
第三题 无重复字符的最长字串 主要思路就是滑动遍历,每次都用下一个字符跟前面的字串进行比较,是否已经存在,如果存在就重新开始。这种算是比较常见的考虑方法。这道题解题思路,类似于滑动窗口的方式,但是跟滑动窗口还是有点区分,毕竟是自己写的,分享出来,可以互相学习。用时比较长,打败11%的go用户,但是内存消耗的比较小,打败98%还不错哦。后面如果有时间,会再次尝试优化消耗时间。...
golang中线程过多? 首先先介绍下os线程和cpu线程,这个有人知道吗?cpu线程就是我们常说的四核八线程的线程个数,而os线程指的是系统进程调度线程。可以有很多个。golang中gmp的m指的os中的线程。golang中的GOMAXPROCS设置的最大线程指的是同一时刻可以执行的最大线程个数,但是并不包含系统调用阻塞的线程。GMP调度过程中,P的个数一般是cpu的核数,M会略大于P的个数。如果g中发生系统调度,就会造成线程阻塞,如果有太多的g发生系统调度,会造成os产生更多的m,过多的m会造成操作系统切换线程消
gdb No such file or directory 使用gdb来对可执行程序进行调试:gdb -tui main在这个页面,如果退出输入q,继续回车输入l直接报错,文件不存在。网上有很多说法,有的说:1. 可执行文件跟.go不在一个目录,2. 也有的说是不同机器编译造成等,3. 通过设置debug路径来解决。上面三种方案小编也都进行测试了,问题没有解决。后面脑回路清新了一下,再gdb进去后,不要先输入l, 直接输入b main.main,再次输入l就可以看到代码了。代码调试的时候,各种问题都可能出现,有问题大家一.
golang slice扩容 很多程序员对于slice的使用,都是直接append,有没有人考虑过批量append和单个连续append有什么区别? 对于cap的申请有什么规则?很多人都说slice容量小于1024,扩容是双倍扩容,大于1024是1.25倍扩容,这句话有没有道理呢? 还别说在一定条件是这句话是没有问题的。直接上代码:package mainimport "fmt"// 扩容规则// 字节大小:1024 * 1.25 * 8 = 10240 cap:10240/8 = 1280 超过1024的话,1.2