彩虹导航个人博客
最新博客
  • 2019年03月30日 Mysql创建索引 摘要: 1.索引作用在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的... 发表于 2019-03-30 12:47 阅读(678) 评论(0)

  • 2019年03月18日 08 | 管程:并发编程的万能钥匙 摘要: 并发编程这个技术领域已经发展了半个世纪了,相关的理论和技术纷繁复杂。那有没有一种核心技术可以很方便地解决我们的并发问题呢?这个问题如果让我选择,我一定会选择管程技术。Java 语言在 1.5 之前,提供的唯一的并发原语就是管程,而且 1.5 之后提供的 SDK 并发包,也是以管程技术为基础的。除此之外,C/C... 发表于 2019-03-18 10:10 阅读(1285) 评论(0)

  • 2019年03月18日 07 | 安全性、活跃性以及性能问题 摘要: 通过前面六篇文章,我们开启了一个简单的并发旅程,相信现在你对并发编程需要注意的问题已经有了更深入的理解,这是一个很大的进步,正所谓只有发现问题,才能解决问题。但是前面六篇文章的知识点可能还是有点分散,所以是时候将其总结一下了。并发编程中我们需要注意的问题有很多,很庆幸前人已经帮我们总结过了,主要有三个方面,分... 发表于 2019-03-18 10:09 阅读(947) 评论(0)

  • 2019年03月18日 06 | 用“等待-通知”机制优化循环等待 摘要: 由上一篇文章你应该已经知道,在破坏占用且等待条件的时候,如果转出账本和转入账本不满足同时在文件架上这个条件,就用死循环的方式来循环等待,核心代码如下:// 一次性申请转出账户和转入账户,直到成功while(!actr.apply(this, target));复制代码如果 apply() 操作耗时非常短,而... 发表于 2019-03-18 09:57 阅读(714) 评论(0)

  • 2019年03月18日 05 | 一不小心就死锁了,怎么办? 摘要: 在上一篇文章中,我们用 Account.class 作为互斥锁,来解决银行业务里面的转账问题,虽然这个方案不存在并发问题,但是所有账户的转账操作都是串行的,例如账户 A 转账户 B、账户 C 转账户 D 这两个转账操作现实世界里是可以并行的,但是在这个方案里却被串行化了,这样的话,性能太差。试想互联网支付盛行... 发表于 2019-03-18 09:56 阅读(654) 评论(0)

  • 2019年03月18日 04 | 互斥锁(下):如何用一把锁保护多个资源? 摘要: 在上一篇文章中,我们提到受保护资源和锁之间合理的关联关系应该是 N:1 的关系,也就是说可以用一把锁来保护多个资源,但是不能用多把锁来保护一个资源,并且结合文中示例,我们也重点强调了“不能用多把锁来保护一个资源”这个问题。而至于如何保护多个资源,我们今天就来聊聊。当我们要保护多个资源时,首先要区分这些资源是否... 发表于 2019-03-18 09:54 阅读(829) 评论(0)

  • 2019年03月18日 03 | 互斥锁(上):解决原子性问题 摘要: 在第一篇文章中我们提到,一个或者多个操作在 CPU 执行的过程中不被中断的特性,称为“原子性”。理解这个特性有助于你分析并发编程 Bug 出现的原因,例如利用它可以分析出 long 型变量在 32 位机器上读写可能出现的诡异 Bug,明明已经把变量成功写入内存,重新读出来却不是自己写入的。那原子性问题到底该如... 发表于 2019-03-18 09:52 阅读(761) 评论(0)

  • 2019年03月18日 02 | Java内存模型:看Java如何解决可见性和有序性问题 摘要: 上一期我们讲到在并发场景中,因可见性、原子性、有序性导致的问题常常会违背我们的直觉,从而成为并发编程的 Bug 之源。这三者在编程领域属于共性问题,所有的编程语言都会遇到,Java 在诞生之初就支持多线程,自然也有针对这三者的技术方案,而且在编程语言领域处于领先地位。理解 Java 解决并发问题的解决方案,对... 发表于 2019-03-18 09:50 阅读(591) 评论(0)

  • 2019年03月18日 01 | 可见性、原子性和有序性问题:并发编程Bug的源头 摘要: 如果你细心观察的话,你会发现,不管是哪一门编程语言,并发类的知识都是在高级篇里。换句话说,这块知识点其实对于程序员来说,是比较进阶的知识。我自己这么多年学习过来,也确实觉得并发是比较难的,因为它会涉及到很多的底层知识,比如若你对操作系统相关的知识一无所知的话,那去理解一些原理就会费些力气。这是我们整个专栏的第... 发表于 2019-03-18 09:45 阅读(746) 评论(0)

  • 2019年03月18日 学习攻略 | 如何才能学好并发编程? 摘要: 并发编程并不是一门相对独立的学科,而是一个综合学科。并发编程相关的概念和技术看上非常零散,相关度也很低,总给你一种这样的感觉:我已经学习很多相关技术了,可还是搞不定并发编程。那如何才能学习好并发编程呢?其实很简单,只要你能从两个方面突破一下就可以了。一个是“跳出来,看全景”,另一个是“钻进去,看本质”。跳出来... 发表于 2019-03-18 09:41 阅读(514) 评论(0)

Powered by 彩虹导航 V3.0 Copyright © 2012-2016 彩虹导航网站 版权所有