摘要: 这是java高并发系列第17篇。 本文主要内容: 1. 介绍CyclicBarrier 2. 6个示例介绍CyclicBarrier的使用 3. 对比CyclicBarrier和CountDownLatch CyclicBarrier简介 CyclicBarrier通常称为循环屏障。它和CountD 阅读全文
posted @ 2019-07-25 09:20 路人甲Java 阅读(777) 评论(0) 推荐(2) 编辑
摘要: 这是java高并发系列第16篇文章。 本篇内容 1. 介绍CountDownLatch及使用场景 2. 提供几个示例介绍CountDownLatch的使用 3. 手写一个并行处理任务的工具类 假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一 阅读全文
posted @ 2019-07-22 15:08 路人甲Java 阅读(814) 评论(0) 推荐(1) 编辑
摘要: 这是java高并发系列第15篇文章 Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能允许一个线程访问一个资源,而信号量可以控制有多少个线程可以 同时访问 特定的资源。 Semaphor 阅读全文
posted @ 2019-07-22 09:02 路人甲Java 阅读(1346) 评论(0) 推荐(1) 编辑
摘要: 这是java高并发系列第14篇文章。 本文主要内容: 1. 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例 2. 介绍LockSupport主要用法 3. 对比3种方式,了解他们之间的区别 LockSupport 位于 java.util.concurrent ( 简称juc )包中,算是j 阅读全文
posted @ 2019-07-20 17:17 路人甲Java 阅读(849) 评论(1) 推荐(2) 编辑
摘要: 本文目标: 1. synchronized中实现线程等待和唤醒 2. Condition简介及常用方法介绍及相关示例 3. 使用Condition实现生产者消费者 4. 使用Condition实现同步阻塞队列 Object对象中的wait(),notify()方法,用于线程等待和唤醒等待中的线程,大 阅读全文
posted @ 2019-07-20 17:14 路人甲Java 阅读(859) 评论(0) 推荐(1) 编辑
摘要: java高并发系列 第12天JUC:ReentrantLock重入锁 本篇文章开始将juc中常用的一些类,估计会有十来篇。 synchronized的局限性 synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由jvm实现,用户不需要显示 阅读全文
posted @ 2019-07-17 19:17 路人甲Java 阅读(1162) 评论(4) 推荐(7) 编辑
摘要: java高并发系列第11篇文章。 本文主要探讨一下中断线程的几种方式。 通过一个变量控制线程中断 代码: 代码中启动了一个线程,线程的run方法中有个死循环,内部通过exit变量的值来控制是否退出。 让主线程休眠3秒,此处为什么使用TimeUnit?TimeUnit使用更方便一些,能够很清晰的控制休 阅读全文
posted @ 2019-07-17 09:55 路人甲Java 阅读(568) 评论(0) 推荐(1) 编辑
摘要: 这是并发系列第10篇文章。 什么是线程安全? 当多个线程去访问同一个类(对象或方法)的时候,该类都能表现出正常的行为(与自己预想的结果一致),那我们就可以所这个类是线程安全的。 看一段代码: 分析上面代码: 1. 线程t1、t2、t3中调用的方法都需要获取d1的锁,所以他们是互斥的 2. t1/t2 阅读全文
posted @ 2019-07-17 09:45 路人甲Java 阅读(526) 评论(0) 推荐(3) 编辑
摘要: 守护线程 是一种特殊的线程,在后台默默地完成一些系统性的服务,比如 垃圾回收线程 、 JIT线程 都是 守护线程 。与之对应的是 用户线程 ,用户线程可以理解为是系统的工作线程,它会完成这个程序需要完成的业务操作。如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了。 所以 阅读全文
posted @ 2019-07-15 17:48 路人甲Java 阅读(626) 评论(0) 推荐(1) 编辑
摘要: 线程组 我们可以把线程归属到某个线程组中,线程组可以包含多个 线程 以及 线程组 ,线程和线程组组成了父子关系,是个树形结构,如下图: 使用线程组可以方便管理线程,线程组提供了一些方法方便方便我们管理线程。 创建线程关联线程组 创建线程的时候,可以给线程指定一个线程组,代码如下: 输出结果: act 阅读全文
posted @ 2019-07-15 17:46 路人甲Java 阅读(408) 评论(0) 推荐(1) 编辑
摘要: 运行上面代码,会发现程序无法终止。 线程t1的run()方法中有个循环,通过flag来控制循环是否结束,主线程中休眠了1秒,将flag置为false,按说此时线程t1会检测到flag为false,打印“线程t1停止了”,为何和我们期望的结果不一样呢?运行上面的代码我们可以判断,t1中看到的flag一 阅读全文
posted @ 2019-07-15 17:44 路人甲Java 阅读(472) 评论(0) 推荐(1) 编辑
摘要: 新建线程 新建线程很简单。只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可。 那么线程start()之后,会干什么呢?线程有个run()方法,start()会创建一个新的线程并让这个线程执行run()方法。 这里需要注意,下面代码也能通过编译,也能正常执行。但是,却不能 阅读全文
posted @ 2019-07-15 17:38 路人甲Java 阅读(835) 评论(0) 推荐(2) 编辑
摘要: 进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。 进程具有的特征: 动态性 :进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的 并发性 : 阅读全文
posted @ 2019-07-15 17:35 路人甲Java 阅读(527) 评论(0) 推荐(0) 编辑
摘要: JMM(java内存模型),由于并发程序要比串行程序复杂很多,其中一个重要原因是并发程序中数据访问 一致性 和 安全性 将会受到严重挑战。 如何保证一个线程可以看到正确的数据呢? 这个问题看起来很白痴。对于串行程序来说,根本就是小菜一碟,如果你读取一个变量,这个变量的值是1,那么你读取到的一定是1, 阅读全文
posted @ 2019-07-15 17:24 路人甲Java 阅读(398) 评论(0) 推荐(1) 编辑
摘要: 有关为什么要使用并行程序的问题前面已经进行了简单的探讨。总的来说,最重要的应该是处于两个目的。 第一,为了获得更好的性能; 第二,由于业务模型的需要,确实需要多个执行实体。 在这里,我将更加关注第一种情况,也就是有关性能的问题。将串行程序改造为并发程序,一般来说可以提高程序的整体性能,但是究竟能提高 阅读全文
posted @ 2019-07-15 17:22 路人甲Java 阅读(756) 评论(1) 推荐(1) 编辑
摘要: 由于临界区的存在,多线程之间的并发必须受到控制。根据控制并发的策略,我们可以把并发的级别分为 阻塞 、 无饥饿 、 无障碍 、 无锁 、 无等待 几种。 阻塞 一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行。当我们使用synchronized关键字或者重入锁时,我们得到的就是阻塞 阅读全文
posted @ 2019-07-15 17:19 路人甲Java 阅读(861) 评论(1) 推荐(2) 编辑
摘要: java高并发系列 第1天:必须知道的几个概念 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用, 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为 。 异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以 阅读全文
posted @ 2019-07-14 20:51 路人甲Java 阅读(1427) 评论(1) 推荐(2) 编辑
摘要: java程序中出现死锁问题,如果不了解排查方法,是束手无策的,今天咱们用三种方法找到死锁问题。 阅读全文
posted @ 2019-06-04 16:10 路人甲Java 阅读(8520) 评论(1) 推荐(0) 编辑
摘要: 包含了深入理解Java虚拟机笔记、java命令行工具系列、java可视化工具系列,共31篇文章。 阅读全文
posted @ 2019-06-04 14:24 路人甲Java 阅读(1624) 评论(1) 推荐(0) 编辑
摘要: 分布式事务属于非常重要的一个知识点,难度也比较高,互联网系统中经常用到,所以这块一定要吃透,自己整理了一些关于分布式事务的,刚好后面两天是周末,大家可以看一下,大家看完之后,基本上可以玩转分布式事务了。 1. "微服务架构的分布式事务解决方案" 2. "分布式事务方案 最终一致性" 3. "分布式事 阅读全文
posted @ 2019-05-24 16:55 路人甲Java 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 分布式事务属于非常重要的一个知识点,难度也比较高,整理一套分布式事务的视频,大家可以周末看一下,一定要反复看,消化掉,有不理解的可以加我微信聊。 01. 课程介绍.avi 02. 解决方案的效果演示(结合支付系统真实应用场景)_rec.avi 03. 常用的分布式事务解决方案介绍.avi 04. 消 阅读全文
posted @ 2019-05-24 16:30 路人甲Java 阅读(1307) 评论(0) 推荐(0) 编辑
摘要: 在分布式时代,分库分表是很常见的,微服务系统中,各个系统通常使用独立的数据库,所以,事务很难靠数据库本身保证,只能靠业务系统来解决。 例如支付宝中的余额宝、花呗,具体不清楚,但猜测应该就是2个服务,不是同一个数据库,我们还花呗的时候通常都是从余额宝中扣除的,这就是分布式事务,一个系统中扣减钱,一个系 阅读全文
posted @ 2019-05-17 11:47 路人甲Java 阅读(2204) 评论(5) 推荐(6) 编辑
摘要: 什么是分布式事务?分布式事务中的难点,常见的解决方案,案例:常见的跨库转账问题如何解决 阅读全文
posted @ 2019-05-16 13:51 路人甲Java 阅读(2817) 评论(0) 推荐(1) 编辑
摘要: 主要内容 1. 在springcloud config中,使用数据库存储配置信息。 系统默认采用git的方式,此处我们介绍使用jdbc的方式存储配置信息 准备数据库 1. 数据库我们使用mysql。 2. 新建库 p config server 3. 创建配置需要的表,并初始化一些配置信息 sql 阅读全文
posted @ 2019-05-15 17:43 路人甲Java 阅读(401) 评论(0) 推荐(1) 编辑
摘要: 分布式系统中全局唯一id是我们经常用到的,生成全局id方法由很多,我们选择的时候也比较纠结。每种方式都有各自的使用场景,如果我们熟悉各种方式及优缺点,使用的时候才会更方便。下面我们就一起来看一下常见的生成全局唯一id的方法 本文主要讨论 常见的生成全局唯一id有哪些? 他们各有什么优缺点? 1. 使 阅读全文
posted @ 2019-05-15 10:50 路人甲Java 阅读(2149) 评论(0) 推荐(4) 编辑
摘要: 什么是幂等性?幂等性常见的实现方式?如何选择? 阅读全文
posted @ 2019-05-14 09:44 路人甲Java 阅读(6023) 评论(0) 推荐(1) 编辑
摘要: 如何确保消息至少消费一次,确保消费者最大程度消费成功 阅读全文
posted @ 2019-05-14 09:42 路人甲Java 阅读(1028) 评论(0) 推荐(0) 编辑
摘要: java开发,月薪3万,实现也不算是太难,需要花一些时间掌握一些技术,了解其原理,高薪就是顺其自然的事情了。 学java技术,最好能按照系列一个个学,能有一套非常好的学习资料,反复看,最终效果都是非常好的。尽量避免看很多套教程、每套只看其中一点,很难做到对技术的深入了解。 自己整理了一套java学习的教程,课程前后是有依赖的,所以请按顺序学习掌握,废话不多说了,直接上干货。 阅读全文
posted @ 2019-05-10 13:43 路人甲Java 阅读(1682) 评论(5) 推荐(1) 编辑
摘要: mq消息消费中pull、push如何选择?各有什么优缺点? 阅读全文
posted @ 2019-05-06 09:09 路人甲Java 阅读(2302) 评论(0) 推荐(0) 编辑
摘要: 业务系统中投递消息到mq的操作,如何实现?每种方式优缺点? 阅读全文
posted @ 2019-05-05 15:43 路人甲Java 阅读(865) 评论(0) 推荐(0) 编辑
摘要: mq常用的一些使用场景:1. 通过异步方式对系统解耦;2. 增加系统的并发处理能力;3.系统日志的处理;4.事件驱动业务的一些场景 阅读全文
posted @ 2019-05-05 09:07 路人甲Java 阅读(1435) 评论(0) 推荐(1) 编辑
摘要: 1. " java爬虫系列第一讲 爬虫入门(爬取动作片列表)" 2. " java爬虫系列第二讲 爬取最新动作电影《海王》迅雷下载地址" 3. " java爬虫系列第三讲 获取页面中绝对路径的各种方法" 4. " java爬虫系列第四讲 采集"极客时间"专栏文章、视频专辑" 5. "java爬虫系列 阅读全文
posted @ 2019-04-23 11:54 路人甲Java 阅读(520) 评论(1) 推荐(0) 编辑
摘要: 本文内容 1、分析一下爬虫存在的问题及解决方案 2、webmagic中代理的使用 3、目前市面上一些比较好用的代理服务器 存在的问题 我们在使用爬虫过程中,大多都会遇到这样的问题:突然某一天爬虫爬不到内容了,目标网站直接返回404或者其他错误信息,这说明我们的爬虫被目标网站给屏蔽了。 爬虫被屏蔽的原 阅读全文
posted @ 2019-04-23 11:51 路人甲Java 阅读(3693) 评论(0) 推荐(0) 编辑
摘要: 在使用webmgiac的过程中,很多时候我们需要抓取连接的绝对路径,总结了几种方法,示例代码放在最后。 以和讯网的一个 "页面" 为例: xpath方式获取 xpath+css选择器方式获取 css选择器方式获取 jsoup方式获取 jsoup中stringutil工具类方式获取 示例代码 ​执行结 阅读全文
posted @ 2019-04-22 11:03 路人甲Java 阅读(1285) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 java爬虫系列包含哪些内容? 1. java爬虫框架webmgic入门 2. 使用webmgic爬取 http://ady01.com 中的电影资源(动作电影列表页、电影下载地址等信息) 3. 使用webmgic爬取 极客时间 的课程资源(文章系列课程 和 视频系列的课程) 本篇文章主 阅读全文
posted @ 2019-04-21 11:41 路人甲Java 阅读(2130) 评论(2) 推荐(0) 编辑
摘要: spring aop中pointcut表达式完整版 本文主要介绍spring aop中9种切入点表达式的写法 1. execute 2. within 3. this 4. target 5. args 6. @target 7. @within 8. @annotation 9. @args 0. 阅读全文
posted @ 2019-04-21 11:11 路人甲Java 阅读(16415) 评论(0) 推荐(4) 编辑
摘要: 1.先下载http://download.gna.org/wkhtmltopdf/obsolete/windows/wkhtmltox-0.11.0_rc1-installer.exe,安装2.在命令行下输入:wkhtmltopdf www.Google.com.hk... 阅读全文
posted @ 2016-12-01 16:33 路人甲Java 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 点击下载本示例相关代码关于spring aop的具体使用,暂时不在这里讲解,后面会特定来讲解,本次主要探讨spring中通知执行的顺序。spring中通知分为以下几种:before:前置通知,在方法执行之前执行 around:环绕通知,在方法执行前后执行 afterr... 阅读全文
posted @ 2016-11-18 12:47 路人甲Java 阅读(1574) 评论(0) 推荐(0) 编辑