09 2013 档案
摘要:同步装置 JDK5.0后提供了一个新的多线程并发控制的装置/工具,它允许一组线程互相进行协调运行。先引用IBM网站的一个表格:Semaphore一个经典的并发工具(计数信号量)。通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。CountDownLatch同步辅助类,在完成一组正在其他线程中执行的操作之前,允许一个或多个线程一直等待。用于在保持给定数目的信号、事件或条件前阻塞执行。CyclicBarrier同步辅助类,是一个可重置的多路同步点,在某些并行编程风格中很有用。Exchanger允许两个线程在 collection 点交换对象,它在多流水线设计中是有用的。1.信号量 Semap
阅读全文
摘要:Java多线程总结 有几天未写博客了,虽然在网络上一搜Java多线程主题有许多的结果,而且有许多深入讲解Java多线程的文章,仍想自己简单总结一下多线程。 线程的生命周期是指从线程创建、运行到消亡的整个过程。线程的状态可以表明线程处于生命周期具体那一阶段。线程的状态包括:创建、就绪、运行、阻塞、死亡五个状态。 线程状态间的转化,引用一张网上的图来说明:Java多线程基本概念 Java多线程的编程主要通过几个基础类来完成的:Thread、Runnable、Object对象的wait()、notify()、notifyAll()方法、synchronized关键字以及Java 5.0后引入的一些多
阅读全文
摘要:XML文档结构 一个XML文档结构由根元素、元素、元素属性、文本组成,引用w3school上的一张图和说明:上图表示下面的 XML 中的一本书: ---- XML声明 ---- 根元素 ---- 为元素、元素属性 category、文本 Harry Potter,包括 4个子元素:title、author、year、price Harry Potter ----- 为元素、Harry Potter为文本内容 J K. Rowling 2005 29.99 Learning XML Erik T. Ray 2003 39.95 Everyday Italian Giada De Lau...
阅读全文
摘要:通常情况下,当访问某张表的时候,读取者首先必须获取该表的锁,如果有写入操作到达,那么写入者一直等待读取者完成操作(查询开始之后就不能中断,因此允许读取者完成操作)。当读取者完成对表的操作的时候,锁就会被解除。如果写入者正在等待的时候,另一个读取操作到达了,该读取操作也会被阻塞(block),因为默认的调度策略是写入者优先于读取者。当第一个读取者完成操作并解放锁后,写入者开始操作,并且直到该写入者完成操作,第二个读取者才开始操作。 通过LOCK TABLES和UNLOCK TABLES语句可以显式地获取或释放锁,但是在通常情况下,服务器的锁管理器会自动地在需要的时候获取锁,在不再需要的时候释放.
阅读全文
摘要:第一步:检查系统的状态 通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率、IO、网络,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正等待IO的完成。除此之外,还应观注那些占用系统资源(cpu、内存)的进程。1.用vmstat察看关于内核进程,虚拟内存,磁盘,cpu的的活动状态[root@ks01 ~]# vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------r b swpd free bu
阅读全文
摘要:在 Zen And The Art Of Scaling - A Koan And Epigram Approach 一文中, Russell Sullivan 提出一个很有趣的设想:一共有20种经典的瓶颈。这听起来就像只有20种基本的故事情节(20 basic story plots)那样让人怀疑。不过基于每个人不同的分类方式,这个说法或许是对的,但是在现实中,众所周知,瓶颈是无穷无尽的而且涉及方方面面。 一天, 来自 Terracotta 的 Aurelien Broszniowski 给我电邮了一份他心中的瓶颈列表,我们同时把我们的邮件抄送给了Russell, 他也给出了他的列表。而我.
阅读全文
摘要:在分析性能欠佳的查询时,应考虑: 1) 应用程序是否正获取超过需要的数据,即访问了过多的行或列。 2) Mysql服务器是否分析了超过需要的行。 如果发现访问的数据行数很大,而生成的结果中数据行很少,那么可以尝试修改,比如使用覆盖索引、更改架构或重写查询让优化器可以以优化的方式执行它。 优化最终集中在减少IO,降低CPU,提高查询速度。 一般应用中数据库通常是IO密集型的,大部分数据库操作中超过90%的时间是由IO操作所占用,所以减少IO访问次数是SQL优化中首要考虑的因素。除了IO外,需要再考虑优化CPU的运算量。通常,ORDER BY、GROUP BY、DISTINCT和一些比较运算都是主
阅读全文
摘要:1.如果索引了多列,遵守最左前缀法则。所谓最左前缀,指的是查询从索引的最左前列开始,并且不跳过索引中的列。mysql> explain select uid, fuid, name from ptb where uid=1378109017;+----+-------------+-------+------+---------------+----------+---------+-------+------+-------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows |
阅读全文
摘要:mysql> show status;Com_xxx 语句计数变量表示每个xxx 语句执行的次数。每类语句有一个状态变量。例如,Com_delete和Com_insert分别统计DELETE 和INSERT语句执行的次数。然而,如果一个查询的结果是从查询缓存中得到的,这会增加Qcache_hits,而不是Com_selectConnections 4192试图连接到(不管是否成功)MySQL服务器的连接数。Created_tmp_disk_tables 0服务器执行语句时在硬盘上自动创建的临时表的数量Created_tmp_files 5mysqld创建的临时文件个数Created_tm
阅读全文
摘要:在使用SHOW PROCESSLIST命令查看当前 MySQL 在进行的线程时,不仅可以显示哪种查询正在执行,也能看到连接的状态。其中一些因素,比如大量连接处于锁定状态,是瓶颈的明显线索。本语句报告TCP/IP连接的主机名称(采用host_name:client_port格式),以方便地判定哪个客户端正在做什么。如果语句不使用FULL关键词,则只显示每个查询的前100个字符。如果你得到“too many connections”错误信息,并且想要了解正在发生的情况,本语句是非常有用的。MySQL保留一个额外的连接,让拥有SUPER权限的 账户使用,以确保管理员能够随时连接和检查系统(假设您没有
阅读全文
摘要:1. 优化数据库对象1)选择表合适存储引擎:MyISAM存储引擎: 应用时以读和插入操作为主,只有少量的更新和删除,并且对事务的完整性,并发性要求不是很高的。 * 表锁:MyISAM表有表级锁,注意不要让它成为瓶颈。 * 不支持自动数据恢复:如果MySQL服务器崩溃或掉电,就应该在使用之前进行检查和执行可能的修复。如果有大型表,这可能会花几个小时。 * 不支持事务:MyISAM表不支持事务。实际上,MyISAM甚至不保证单个命令完成。如果在多行UPDATER的中途有错误发生,一些行会被更新,而另外一些行则不会。 * 只有索引被缓存在内存中:MyISAM只缓存了MySQL进程内部的索引,并保存在
阅读全文
摘要:在MySQL中,联接是一种对表的引用,多表联接类型:1.笛卡尔积(交叉联接):在MySQL中为CROSS JOIN或省略JOIN,如: select * from course, teachcourse; -- 隐式交叉联接或者select * from course join teachcourse或 select * from course cross join teachcourse; 返回结果为被连接的两张表的乘积。因此当有WHERE,ON或USING条件时一般不建议使用。因为数据多太时查询会很慢。一般使用LEFT [OUTER] JOIN或者 RIGHT [OUTER] JOIN。
阅读全文

浙公网安备 33010602011771号