工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表2018年07月的文章

Golang同步:条件变量和锁组合使用

 https://studygolang.com/articles/5776

golang 1.8 并发安全Map简单实现

XML/HTML代码
  1. type SafeMap struct {  
  2.     sync.RWMutex  
  3.     Map map[int64]string  
  4. }  
  5.   
  6. func NewSafeMap(size int) *SafeMap {  
  7.     sm :new(SafeMap)  
  8.     sm.Map = make(map[int64]string, size)  
  9.     return sm  
  10. }  
  11.   
  12. func (sm *SafeMap) ReadMap(key int64) string {  
  13.     sm.RLock()  
  14.     value :sm.Map[key]  
  15.     sm.RUnlock()  
  16.     return value  
  17. }  
  18.   
  19. func (sm *SafeMap) WriteMap(key int64, value string) {  
  20.     sm.Lock()  
  21.     sm.Map[key] = value  
  22.     sm.Unlock()  
  23. }  
  24.   
  25. // 用于for k,_ :range m.Keys(){v :m.ReadMap(k) ....}  
  26. func (sm *SafeMap) Keys() []int64 {  
  27.     sm.RLock()  
  28.     value :make([]int64, 0)  
  29.     for k, _ :range sm.Map {  
  30.         value = append(value, k)  
  31.     }  
  32.     sm.RUnlock()  
  33.     return value  
  34. }  

https://blog.csdn.net/qq_17612199/article/details/79601222

golang:An operation on a socket could not be performed because the system lacked sufficient buffer s

 1、问题 

conn, err := net.Dial(“tcp”, ‘127.0.0.1:50001’)

执行此语句报错详细报错信息 
dial tcp 127.0.0.1:50001: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

此报错的原因一般是系统端口已用尽,无法再建立新的Socket连接

https://blog.csdn.net/xia_xing/article/details/53352658

服务器 TIME_WAIT和CLOSE_WAIT

https://blog.csdn.net/xia_xing/article/details/53352486

常见SOCKET错误参数

https://blog.csdn.net/macky0668/article/details/4257721

 

 

MySQL 事务没有提交导致 锁等待 Lock wait timeout exceeded

 

MySQL 5.5 -- innodb_lock_wait 锁 等待

记得以前,当出现:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction,
要解决是一件麻烦的事情 ;
特别是当一个SQL执行完了,但未COMMIT,后面的SQL想要执行就是被锁,超时结束;
DBA光从数据库无法着手找出源头是哪个SQL锁住了;
有时候看看show engine innodb status , 并结合 show full processlist; 能暂时解决问题;但一直不能精确定位;

在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎);
innodb_trx ## 当前运行的所有事务
innodb_locks ## 当前出现的锁
innodb_lock_waits ## 锁等待的对应关系

看到这个就非常激动 ; 这可是解决了一个大麻烦,先来看一下表结构

https://blog.csdn.net/mangmang2012/article/details/9207007

mysql中set autocommit=0与start transaction区别

 set autocommit=0指事务非自动提交,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务。

 

 

1、不管autocommit 是1还是0 
     START TRANSACTION 后,只有当commit数据才会生效,ROLLBACK后就会回滚。

 

2、当autocommit 为 0 时
    不管有没有START TRANSACTION。
    只有当commit数据才会生效,ROLLBACK后就会回滚。

 

3、如果autocommit 为1 ,并且没有START TRANSACTION 。
    调用ROLLBACK是没有用的。即便设置了SAVEPOINT。