7.1、并发修改可能出现的问题 但两个线程同时修改一个对象时,后操作的对象会将前一个操作对象所更新的值还原。 这样就可能存在并发的问题。 如果需要解决并发需要为其增加锁来控制访问的情况 有两种方案 1、悲观锁(基于数据库的机制的锁) 2、乐观锁(基于Hibernate来加载的锁) 7.2、悲观锁 悲...
分类:
数据库 时间:
2015-12-06 21:08:01
阅读次数:
232
atomic : 变量默认是有该有属性的,这个属性是为了保证在多线程的情况下,编译器会自动生成一些互斥加锁的代码,避免该变量的读写不同步的问题。 nonatomic : 如果该对象无需考虑多线程的情况,这个属性会让编译器少生成一些互斥代码,可以提高效率。atomic 的意思是setter/gett....
分类:
移动开发 时间:
2015-12-06 17:33:14
阅读次数:
174
文件为什么要加锁?页的操作为什么要加锁?http://linux.chinaunix.net/techdoc/system/2007/06/11/959844.shtml上面一个页面有简单介绍什么时候要加锁。其实内核代码中也有写:如果444 /*445 * lock_page may only b....
分类:
其他好文 时间:
2015-12-05 11:13:14
阅读次数:
121
一、多线程的安全隐患资源共享1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源比如多个线程访问同一个对象、同一个变量、同一个文件当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题所以很自然的,当某个线程进入某个事件,处理某个事件,访问某个对象的时候,先加 “锁”互斥锁的优缺点...
分类:
编程语言 时间:
2015-11-30 22:11:18
阅读次数:
203
synchronized(Object.class)锁住的是Object.class对象,如下,若有某个方法如此加锁,那么该类的所有方法在此方法被某个线程使用时都被锁住。 public String[] split() { synchronized (Path.class) {....
分类:
其他好文 时间:
2015-11-28 13:26:37
阅读次数:
135
索引和锁可以让查询锁定更少的行。如果你的查询从不访问那些不需要访问的行,那么就会锁定更少的行,从两个方面来看这对性能都有好处。首先,虽然innodb的行锁效率很高,内存使用也很少,但是锁定行的时候仍然会带来额外的开销,其次,锁定超过需要的行会增加锁竞争,并减少并发性。 innodb只有在访问行...
分类:
数据库 时间:
2015-11-25 23:28:00
阅读次数:
226
今天看了到有意思的题:在静态方法上加锁 和 非静态方法加锁 有什么区别,从而再次引出锁机制的一些理解。先看方法:// 这是一个很简单的类,里面共享静态变量 num,然后一个静态 和 非静态方法,都加上锁// 我们假设有两个线程同时操作这两个方法,那么数据能互斥吗?Java代码publicclassW...
分类:
其他好文 时间:
2015-11-24 00:58:54
阅读次数:
484
存储引擎是innodb。nnoDB 是 MySQL 上第一个提供外键约束的数据存储引擎,除了提供事务处理外,InnoDB 还支持行锁,提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU...
分类:
数据库 时间:
2015-11-18 21:21:06
阅读次数:
232
线程安全的概念是,当多个线程同时访问一个资源时,要确保资源的准确性。也就是说,多个线程必须同步访问一块资源……实现线程安全就是加锁。加锁,锁定的代码要尽量少。加锁范围内的代码,同一时间只允许一个线程执行。互斥锁@synchronized (self)的参数,任何继承NSObject的对象都可以,如:...
分类:
编程语言 时间:
2015-11-15 16:09:32
阅读次数:
131
有了前两篇的文章这里直接给出代码,这种方法不是纯粹的饿汉式,比较懒汉式代码会容易一点点,但是苹果官方不推荐,了解一下就好.此时没有多线程的困扰,使用之前就创建一个单例对象,此时还没有线程.所以不需要加锁.static id _instance = nil;+(void)load{//该类加载之后lo...
分类:
其他好文 时间:
2015-11-11 06:29:20
阅读次数:
234