测试报告 遇到的bug 遇到了线程安全的bug,bug的原因是必须在调用api之前先获取到token,而获取token和调用api都需要新开一个线程,解决方法为通过加锁来解决线程安全问题 遇到了页面的适配问题,在不同的手机上显示的页面差距非常大,解决方法为替换为根据不同屏幕自动调整的relative ...
分类:
其他好文 时间:
2020-04-29 00:42:39
阅读次数:
79
应用场景:库存修改 一:使用 synchronized ,lock 等同步方法: (1)特点:synchronized的flag只有jvm进程内可见,不能跨jvm (2)缺点:1.作用范围是单个jvm实例, 如果做了集群,分布式等,就没用了; 2.数据库的事务隔离级别,加锁时机。主要矛盾是事务开启和 ...
分类:
编程语言 时间:
2020-04-27 17:26:25
阅读次数:
71
像之前我们说的 synchronized 这种独占锁属于悲观锁。什么是悲观锁呢?简单来说,它是在悲观的认为加锁的这个地方一定会发生冲突。除了悲观锁之后,还有乐观锁,乐观锁的含义就是我乐观的认为这个的地方不会发生冲突,如果没有发生冲突我就正常执行,如果发生了冲突,我就重试。 CAS(compare a ...
分类:
编程语言 时间:
2020-04-27 09:43:15
阅读次数:
65
1、MySQL 中有哪几种锁? 1、表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最 高,并发度最低。 2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最 低,并发度也最高。 3、页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表 锁和行锁 ...
分类:
数据库 时间:
2020-04-26 16:50:59
阅读次数:
88
原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。 处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。 在 Java 中可以通过锁和循环 CAS 的方式来实现原子操作。 CAS 操作—— Compare & Set,或是 Compare & Sw ...
分类:
编程语言 时间:
2020-04-25 00:45:21
阅读次数:
88
同步锁: multiprocessing 的 Lock() 不加锁:未加锁部分并发执行,加锁部分串行执行,速度慢,数据安全 GIL锁: 线程执行速度快,直接创建, 进程要先创建进程,申请空间。 线程 主程序 进程 垃圾回收 是 线程,干活的。进程是一块内存空间,空间里有主线程,和其它线程。 http ...
分类:
其他好文 时间:
2020-04-24 20:16:04
阅读次数:
71
进程对象及其他方法 僵尸进程与孤儿进程(了解) 守护进程 互斥锁 多个进程操作同一份数据的时候,会出现数据错乱的问题 针对上述问题,解决方式就是加锁处理: 将并发变成串行,牺牲效率但是保证了数据的安全 进程间通信 队列Queue模块 IPC机制 生产者消费者模型 线程理论 致命三问 什么是线程 为何 ...
分类:
系统相关 时间:
2020-04-23 22:47:52
阅读次数:
82
以前对Mysql的锁的认识,只了解表锁和行锁,其实Mysql的锁的种类还是不少的,有全局锁,表级锁,行级锁,还有元数据锁,间隙锁,临界锁。 一 全局锁 Mysql的全局锁是对整个实例加锁,加锁之后,数据库整体处于只读状态,数据上不能执行增删改,元数据上不能执行新建表,更新表;不能提交事务。 命令: ...
分类:
数据库 时间:
2020-04-21 22:34:01
阅读次数:
90
Mysql中有哪几种锁? 1.表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 2.行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 3.页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度 ...
分类:
数据库 时间:
2020-04-20 14:00:36
阅读次数:
81
缓存击穿 缓存中没有但数据库中有的数据(一般是缓存时间到期),同时高并发读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大 解决 1.设置热点数据永远不过期。 2.加互斥锁,没有命中缓存的时候,加锁访问数据库,不造成数据库的瞬间压力 缓存穿透 用户想要查询一个数据,发现redis内存数 ...
分类:
其他好文 时间:
2020-04-20 01:34:40
阅读次数:
102