- 浏览: 54319 次
- 性别:
- 来自: 南京
最新评论
-
fellowming:
官网对这个死锁的原因是,S1申请X锁时,S2优先提出申请X锁, ...
MySQL InnoDB锁机制(一) -
zxjlwt:
学习了。不知道大侠有没有用过karaf。http://sure ...
OSGi中使用log4j -
908311595:
文章写的很好
Java网络安全(一) -
wang_janne:
574221240@qq.com 兄弟方便的话,给我个源码!万 ...
Apache xml-rpc与spring的整合 -
whbah:
whbah 写道我用的是felix容器,在windows下测试 ...
OSGi中使用log4j
文章列表
前面两篇文章讨论了MySQL InnoDB的锁类型与加锁方式,这次,我们来看看在不同的场景下,不同的SQL会以什么样的方式加什么类型的锁。
在开始之前,我们先了解一下什么是聚族索引?
每一张InnoDB表都有且仅有一表特殊的索引,聚族索引(Clustered Index),表中的数据是直接存放在聚族索引的叶子节点页面中,这样,根据聚族索引查询就会比普通索引更快,因为少了一次IO操作。通常,聚族索引就是表的主键;如果表没有主键,那InnoDB会把第一个非空的唯一索引当作聚族索引;如果表既无主键,又无非空的唯一索引,那么InnoDB会创建一个隐藏的索引。表中的其它全部索引,都叫做 ...
上一篇文章我们提到MySQL InnoDB对数据行的锁定类型一共有四种:共享锁(读锁,S锁)、排他锁(写锁,X锁)、意向共享锁(IS锁)和意向排他锁(IX锁),今天我们要讨论的是MySQL InnoDB对数据行的锁定方式。
MySQL InnoDB支持三种行锁定方式:
行锁(Record Lock):锁直接加在索引记录上面。
间隙锁(Gap Lock):锁加在不存在的空闲空间,可以是两个索引记录之间,也可能是第一个索引记录之前或最后一个索引之后的空间。
Next-Key Lock:行锁与间隙锁组合起来用就叫做Next-Key Lock。
默认情况下,InnoDB工作 ...
以前在学习《数据库概论》这门课程的时候,了解到在可重复读这个隔离级别下,一个事务内同一个SELECT查询的多次执行会返回相同的结果,而这个是对查询返回的记录加共享锁来实现的。这样,别的事务如果要更新相同的记 ...
MySQL InnoDB一共有四种锁:共享锁(读锁,S锁)、排他锁(写锁,X锁)、意向共享锁(IS锁)和意向排他锁(IX锁)。其中共享锁与排他锁属于行级锁,另外两个意向锁属于表级锁。
共享锁(读锁,S锁):若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放S锁。
排他锁(写锁,X锁):若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务不能再对A加作何类型的锁,直到T释放A上的X锁。
意向共享锁(IS锁):事务T在对表中数据对象加S锁前,首先需要对该表加IS(或更强的IX)锁。
意向排他锁(IX锁):事务T ...
上篇文章讨论了事务隔离级别,隔离级别这个东西在不同的数据库产品上,是有一些区别的,本篇重点讲讲mysql数据库。
四种标准的隔离级别MySQL数据库都支持,下面我们一个一个看过来先。
首先我们先创建一个简单的测试表。
CREATE TABLE tb1(
id INT NOT NULL,
value DECIMAL NOT NULL,
PRIMARY KEY (id)
)ENGINE=INNODB;
Read Uncommitted读未提交
首先,会话S1查询tb1表,没有记录返回。
mysql> set session transa ...
最近工作非常郁闷,天天被领导盯着。主要是系统近来死锁发生在频率很高。最终,经过大家的共同努力,我们成功的定位并解决了问题,所以把过程中学习的知识与经验分享一下
问题背景
系统中有一个账户模块,负责管理和 ...
一般纳税人公司与小规模的公司有什么不一样
- 博客分类:
- 其它
一般纳税人公司与小规模公司的不同
1、一般纳税人容易和一般纳税人作生意,通常大公司都是一般纳税人,因此生意容易做大。
2、一般纳税人的财务、税务、管理要求规范,财务人员要求高,可以减少经营风险、涉税风 ...
Mysql 账户管理
1、创建账户
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'my pass';
2、删除账户(删除账户同时会删除其所有权限)
DROP USER 'jeffrey'@'localhost';
3、分配权限
GRANT ALL PRIVILEGES ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION
4、回收权限
REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';
REVOKE ALL PRIVI ...
1. Create SVN server
svnadmin create path
svn import project file:///path
2. Make SVN server accessible via http
File: httpd.conf
LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so
LoadModule autoindex_module libexec/apache2/mod_au ...
最近在看关于OSGi方面的内容,自己做了些简单的例子。虽然在log方面OSGi有提供一些实现,但我们javaer们早已习惯了log4j,于是很想试试看log4j在OSGi上能不能用。
在网上搜了下,相关的资料不多也不少,但都不是很详细,所以记下来,方便大家参考一下。
例子用到了:
apache的felix(版本4.0.2)
springDM(版本1.2.1)中的log4j的jar包。
首先,实现一个bundle类:
public class Activator implements BundleActivator
{
private static final Logger l ...
消息摘要是数据信息的数字指纹。通过某种安全散列算法(如SHA1)对数据信息进行加密,就可以生成一个20字节(MD5算法好像是16字节)的序列,这个序列就称为消息摘要。
从安全的角度考虑,我们总是希望任何不同的数据信息都生成不同的消息摘要,但这是不可能的,就拿SHA1算法来说,消息摘要是一个20字节的序列,也就是160位的长度,一共也只有2的160次方种可能。但这已经是一个巨大的数字了,我们可以相信两个不同的数据信息总是生成不同的消息摘要。
所以,消息摘要具有以下两个特点:
如果数据信息改变了,那么消息也将根着改变;
伪造者无法创建与原数据信息具有相同消息摘要的假数据信息。
...
死锁
1、何为死锁
简单说来,死锁就是系统中的线程因相互等侍彼此占有的资源而暂停执行,造成系统假死的现象。
2、死锁是如何发生的
假设系统有两个互斥资源A和B,系统中的两个线程1和2都要获得A和B之后才能正常工作, 但是线程1先取资源A再取资源B,线程2先取资源B再取资源A。这样就有可能发生这样的情况:线程1先申请了资源A,再准备申请资源B的时候,由于处理器调度,线程2开始执行;线程2申请了资源B,在准备取资源A的时候发现资源A已经被别的线程(1)占用了,这样线程2暂停执行;当线程1接着执行时,发现资源B已经被别的线程(2)占用了。就这样,线程1和2相互等待彼此占有的资源而一直停止下去 ...
线程同步
1、什么是线程同步
概念上的东西在这里就不过多介绍了,线程同步,也叫做线程间通信,就是多个线程共同协作完成一件事情。
为了完成一件事情,可能需要分很多的部分或步骤,每个部分由一个或一类线程来负责,而各个部分的处理又有先后顺序,这就对相互协作的线程有了一定的约束,也就是进程同步。
2、Java中如何实现线程同步
在Java中,线程的同步涉及到synchronized和三个方法wait()、notify()和notifyAll()。
synchronized在上篇中已经讲过了,这里就不再重复了。
wait()方法与Thread类的sleep()和yield()方 ...
今天,已经上线的项目,客户忽然那边报出一个bug来。
bug描述如下:
在PC1下以user1登录系统,接着以user2在PC2登录系统,之后user1的部分菜单变成了user2的菜单。
当时觉得这个bug很不可思议,因为系统是一个项目组的子项目,是一个web程序,菜单都是在用户登录系统的时候写进session里面的,在不同的PC上登录怎么会相互影响呢?查了很久还没找出原因。
后来想起不久前对系统做过一次压力测试,为了提高登录时的效率,对取菜单这部分做过优化。开始时系统的菜单是采用层次的方法划分的,也就是一级菜单、二级菜单,角色的分配是直接指定二级菜单,所以每次在登 ...