服务端为swoole 的websocket 客户端js代码: 注意: 1.onclose、onerror出现两个,tcp重连的时候会重连两次;为避免这种情况,需要进行加锁lockReconnect 2.limitConnect 断线重连次数;timeConnect从0次开始播报 效果: 完整代码:去 ...
分类:
Web程序 时间:
2019-12-28 16:37:42
阅读次数:
116
什么是锁?MySQL 中提供了几类锁? 锁是实现数据库并发控制的重要手段,可以保证数据库在多人同时操作时能够正常运行。MySQL 提供了全局锁、行级锁、表级锁。其中 InnoDB 支持表级锁和行级锁,MyISAM 只支持表级锁。 详解锁 全局锁: 对整个数据库实例加锁,MySQL提供了一个加全局读锁 ...
分类:
数据库 时间:
2019-12-28 16:04:03
阅读次数:
86
概述 在开发过程中,会有很多地方用到锁,比如多线程修改一个对象时,为了防止多个线程同时修改,会采用加锁的机制,还有数据库在多个线程修改同一条记录时,也会有读锁,写锁等,所有这些都为了解决一个问题,在并发情况修改同一个值的时候,如何可以保证这个值不出问题。举个简单的例子说明:比如淘宝上某款商品库存只剩 ...
分类:
编程语言 时间:
2019-12-28 12:54:52
阅读次数:
84
public interface DistributedLock { /** * 加锁 * @param lockKey 锁定的key * @param lockSeconds 锁定时间(单位:秒),超过该锁定时间会自动释放锁,可能会导致并发问题。 * @param expirySeconds 本次 ...
分类:
其他好文 时间:
2019-12-27 11:34:05
阅读次数:
60
什么是事务 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。 事务和锁 当执行一个事务dml的时候,oracle会被作用的表上加锁,防止其他用户改表的结构。 保存点是一个回退机制,个数没有限制savepoint a1;delete from emp ...
分类:
数据库 时间:
2019-12-24 23:45:17
阅读次数:
102
最近在重构项目代码时,发现两个线程同时访问一个加锁的std::list队列时,会出现恶性竞争锁的现象。 具体现象是A线程总是拿不到锁,B线程抢占几次后,A才抢占到。 由于是重构项目,也无法通过回滚代码来解决。 最终定位问题是,重构时对std::list队列单独封装了一个类导致的。单独封装一个类,那么 ...
分类:
编程语言 时间:
2019-12-21 22:19:03
阅读次数:
65
sudo apt-get update报错:"E: Could not get lock /var/lib/apt/lists/lock" 出现此问题的原因可能是有另外一个程序在运行,导致资源被加锁,不可用。导致资源被锁的原因可能是上次更新源的操作没有完成! 从上图可以看出,报错的内容是不能获取那个 ...
分类:
系统相关 时间:
2019-12-20 12:07:07
阅读次数:
95
前言 前两篇我们讲述了ReentrantLock的加锁释放锁过程,相对而言比较简单,本篇进入深水区,看看ReentrantReadWriteLock-读写锁的加锁过程是如何实现的,继续拜读老Lea凌厉的代码风。 一、读写锁的类图 读锁就是共享锁,而写锁是独占锁。读锁与写锁之间的互斥关系为:读读可同时 ...
分类:
其他好文 时间:
2019-12-19 23:12:58
阅读次数:
70
channel的基本介绍 channel的本质是一个数据结构队列 数据是先进先出 FIFO 线程安全,多goroutine访问时,不需要加锁,就是说channel本身是线程安全的 channel是由类型的,一个string的channel只能存放string类型数据 无缓冲的channel关闭后,再... ...
分类:
其他好文 时间:
2019-12-19 20:59:18
阅读次数:
261
转自:https://www.cnblogs.com/ftl1012/p/chattr.html 常见命令参数 常用的命令展示 chatter: 锁定文件,不能删除,不能更改 +a: 只能给文件添加内容,但是删除不了, chattr +a /etc/passwd -d: 不可删除 加锁:chattr ...
分类:
其他好文 时间:
2019-12-19 19:18:22
阅读次数:
79