关闭
当前搜索:

Java多线程之Fork/Join框架基本使用(八)

1. 概述 java.util.concurrent.ForkJoinPool由Java大师Doug Lea主持编写,它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。本文中对Fork/Join框架的讲解,基于JDK1.8+中的Fork/Join框架实现,参考的Fork/Join框架主要源代码也基于JDK1.8+。 这几篇文章将试图解释...
阅读(14) 评论(0)

Java多线程之原子操作atomic的使用CAS(七)

3-5、java.util.concurrent.atomic:线程安全的原子操作包 在JDK1.5+的版本中,Doug Lea和他的团队还为我们提供了一套用于保证线程安全的原子操作。我们都知道在多线程环境下,对于更新对象中的某个属性、更新基本类型数据、更新数组(集合)都可能产生脏数据问题(如果您不清楚这个问题,请Google或者Baidu。这边文章本身不讨论脏数据产生的具体原因)。 ...
阅读(21) 评论(0)

Java多线程之CountDownLatch同步器的使用(六)

3-4、CountDownLatch:同步器 在JKD1.5+环境中,Doug Lea和他的团队为我们提供了可以很好实现这个要求的工具类:CountDownLatch和CyclicBarrier。我们首先介绍CountDownLatch的基本使用方式: 3-4-1、CountDownLatch基本使用 CountDownLatch是一个同步计数器,能够保证在其他线程完成某一个业务...
阅读(13) 评论(0)

Java多线程之Semaphore的使用(五)

3、工作在多线程环境下的“计数器”: 从这个小节开始,我们将以一个“赛跑”的例子,讲解JDK1.5环境下一些线程控制工具(包括Semaphore、CountDownLatch和java.util.concurrent.atomic子包),并且复习这个专题讲到的知识点:同步快、锁、线程池、BlockingQueue、Callable等。 3-1、 赛跑比赛的需求 现在您不仅可以通过...
阅读(19) 评论(0)

一个获取国家地区最新数据的方法

缘由 最近做一个小型微信商城,因为要用到省市区收货地址的原因(虽然之前整理过,但是数据太老了),所以上网搜了一下相关资料, 结果找到的东西要么数据太老了,要么就是表是分开的(省市区存了三张表),索性自己动手。 我们需要的是一个类似下面这样的数据结构,区域ID,上级ID,区域名称,等级,排序,状态 建好表后,我们有很多解决方案去填充里面的数据 1.做好后台UI,丢给运营去慢慢录入,是时...
阅读(23) 评论(0)

Java多线程之Callable和其他Lock锁的使用(四)

1、概要 如果您阅读JAVA的源代码,出现最多的代码作者包括:Doug Lea、Mark Reinhold、Josh Bloch、Arthur van Hoff、Neal Gafter、Pavani Diwanji等等。其中java.util.concurrent包中出现的基本都是Doug Lea的名字。Doug Lea,是对Java影响力最大的个人,直接贡献的设计包括java的Collec...
阅读(62) 评论(0)

Java多线程之ThreadPoolExecutor关于参数队列详解(三)

5、扩展ThreadPoolExecutor线程池 实际上JAVA中提供的ThreadPoolExecutor线程池是鼓励各位程序员进行扩展的(虽然大多数情况下您无需扩展),并且JBOSS(Netty)、Apache(Camel)也正是这样在做。下面我们看看一些由ThreadPoolExecutor提供的扩展方式。 5-1、Hook methods 在ThreadPoolExec...
阅读(23) 评论(0)

分布式锁的几种使用方式(redis、zookeeper、数据库)

Q:一个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费 synchronized lock db lock Q:两个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费 分布式锁 我们需要怎么样的分布式锁? 可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。 这把锁要是一把可重入锁(避免死锁) 这把锁最好是一把...
阅读(71) 评论(0)

Java多线程之ThreadPoolExecutor关于参数队列详解(二)

3-4、JAVA主要线程池的继承结构 我们先来总结一下上文中讨论过的内容,首先就是JAVA中ThreadPoolExecutor类的继承结构。如下图所示: ThreadPoolExecutor:这个线程池就是我们这两篇文章中介绍的重点线程池实现。程序员可以通过这个线程池中的submit()方法或者execute()方法,执行所有实现了Runnable接口或者Callab...
阅读(27) 评论(0)

Java多线程之ThreadPoolExecutor详解使用

1、概述 我将讲解JAVA原生线程池的基本使用,并由此延伸出JAVA中和线程管理相关的类结构体系,然后我们详细描述JAVA原生线程池的结构和工作方式 2、为什么要使用线程池 前文我们已经讲到,线程是一个操作系统概念。操作系统负责这个线程的创建、挂起、运行、阻塞和终结操作。而操作系统创建线程、切换线程状态、终结线程都要进行CPU调度。 另一方面,目前大多数生产环境我们...
阅读(24) 评论(0)

微服务消息中间件ActiveMQ,RabbitMQ,kafka等的技术选择

在微服务盛行的时代,系统的分布式,让我们广泛的运用消息中间件来进行系统间的数据交换,而且通过消息的方式,便于系统间异步解耦。我们在谈技术选型的时候,不能脱离业务空谈选型,每种消息中间件必定有其优点和不足,我们根据我们自身的场景择优选择,结合我自己使用的二种类型的MQ简单说说:首先说说RabbitMQ,这是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMT...
阅读(80) 评论(0)

Redis详解之-集群方案:高性能(Codis3.2+Redis Cluster)(五)

对以前的内容进行一下总结和复习。 了解Redis的基本参数配置和使用。了解事件订阅和持久化存储方式(RDB和AOF)。Redis集群方案:高可用(使用Redis Sentinel),官网Rdeis3.x推荐三主三从的方式,参考(https://www.cnblogs.com/zhongkaijun/p/4728334.html)。Redis集群方案:高性能,Twemproxy和Red...
阅读(40) 评论(0)

Redis详解之-集群方案:高性能(使用原生Redis Cluster)(四)

对以前的内容进行一下总结和复习。 了解Redis的基本参数配置和使用。了解事件订阅和持久化存储方式(RDB和AOF)。Redis集群方案:高可用(使用Redis Sentinel),官网Rdeis3.x推荐三主三从的方式,参考(https://www.cnblogs.com/zhongkaijun/p/4728334.html)。Redis集群方案:高性能,Twemproxy和Red...
阅读(214) 评论(0)

Redis详解之-集群方案:高可用(使用Redis Sentinel)(三)

对以前的内容进行一下总结和复习。 了解Redis的基本参数配置和使用。了解事件订阅和持久化存储方式(RDB和AOF)。Redis集群方案:高可用(使用Redis Sentinel),官网Rdeis3.x推荐三主三从的方式,后面再介绍,参考(https://www.cnblogs.com/zhongkaijun/p/4728334.html)。 接下来让我熟知一下:Redis集群...
阅读(37) 评论(0)

Redis详解之-事件订阅和持久化存储方式(RDB和AOF)(二)

对以前的内容进行一下总结和复习。 了解Redis的基本参数配置和使用。了解事件订阅和持久化存储方式(RDB和AOF)。 接下来让我熟知一下:事件订阅和持久化存储方式(RDB和AOF)。 3-4、事件功能和配置项 Redis从2.X版本开始,就支持一种基于非持久化消息的、使用发布/订阅模式实现的事件通知机制。所谓基于非连接保持,是因为一旦消息订阅者由于各种异常...
阅读(340) 评论(0)

Redis详解之-基本参数配置和使用(一)

对以前的内容进行一下总结和复习。 了解Redis的基本参数配置和使用。 1、综述 Redis是一款内存数据库,所谓内存数据库是指它存储数据的主要介质是内存而非传统意义的磁盘,后者只用于辅助功能。Redis可以当作NoSQL数据库,缓存和消息代理来使用,目前各行业实践中使用Redis最多的场景还是把它当成缓存子系统,例如存储在线用户的登录情况,存储1小时内提交的...
阅读(143) 评论(0)

MySQL数据库性能优化-利用sql执行计划预先查看执行性能(五)

总结之前的内容,MySQL数据库性能优化的途径有以下几个方式 提高硬件方面的配置,比如SSD固态硬盘等。选择合适的存储引擎,一般使用Innodb(支持事务处理等优势)。适当的创建索引和进行Query cache配置相结合。尽量避免MySQL中出现死锁(数据库中事务锁定的其实是表的索引)。执行sql之前,使用sql执行计划(如:EXPLAIN SELECT * FROM DEMO)检查...
阅读(153) 评论(0)

MySQL数据库性能优化-避免数据死锁的发生(四)

总结之前的内容,MySQL数据库性能优化的途径有以下几个方式 提高硬件方面的配置,比如SSD固态硬盘等。选择合适的存储引擎,一般使用Innodb(支持事务处理等优势)。适当的创建索引和进行Query cache配置相结合。尽量避免MySQL中出现死锁(数据库中事务锁定的其实是表的索引) 来学一下一下第四点知识:mysql中的锁的使用。 4-3、In...
阅读(233) 评论(0)

MySQL数据库性能优化-索引原理和Query cache配置使用(三)

总结之前的内容,MySQL数据库性能优化的途径有以下几个方式 提高硬件方面的配置,比如SSD固态硬盘等。选择合适的存储引擎,一般使用Innodb(支持事务处理等优势)。适当的创建索引和进行Query cache配置相结合。 来学一下一下第三点知识mysql索引的原理。 4、影响SQL性能的要素 MySQL数据库的性能不止受到性能参数和底层硬件条件的影响,在这两个...
阅读(64) 评论(0)

MySQL数据库性能优化-硬件和参数配置提升I/O(二)

膜拜学习一下...... 3-3、突破I/O性能 为了解决上一节中提到的I/O性能问题,本文这里基于之前介绍的块存储方案的知识,列出这个问题的几种解决方案。除了根据I/O吞吐量要求对MySQL数据库特别是InnoDB引擎的配置参数进行更改以外,本文提到的硬件层解决方法所需要花费的资金和能够得到的I/O性能和扩展能力基本上成正比。 3-3-1、对MySQL中的I/O相关参数...
阅读(104) 评论(0)
347条 共18页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:250248次
    • 积分:3954
    • 等级:
    • 排名:第9272名
    • 原创:104篇
    • 转载:242篇
    • 译文:1篇
    • 评论:15条
    最新评论