摘要:
并行计算在处处都有大数据的今天已经不是一个新鲜的词汇了,现在已经有单机多核甚至多机集群并行计算,注意,这里说的是并行,而不是并发。严格的将,并行是指系统内有多个任务同时执行,而并发是指系统内有多个任务同时存在,不同的任务按时间分片的方式切换执行,由于切换的时间很短,给人的感觉好像是在同时执行。Jav 阅读全文
posted @ 2019-07-31 16:16
qxwang
阅读(65)
评论(0)
推荐(0)
摘要:
JAVA并发涵盖一下知识块: 基础知识、并发理论(JMM)、并发关键字、Lock体系、并发容器、线程池(Executor体系)、原子操作类、并发工具、并发实践。如下图所示 基础知识: 包含并发编程的优缺点、线程的状态和一些基本操作 并发理论(JMM): 包含JMM内存模型、重排序、happens-b 阅读全文
posted @ 2019-07-31 16:15
qxwang
阅读(30)
评论(0)
推荐(0)
摘要:
1、线程池的优势 降低系统资源消耗。通过重用已存在的线程,降低线程创建和销毁造成的消耗; 提高系统响应速度。当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行; 方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切 阅读全文
posted @ 2019-07-31 16:15
qxwang
阅读(60)
评论(0)
推荐(0)
摘要:
Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。 Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽 阅读全文
posted @ 2019-07-31 16:11
qxwang
阅读(47)
评论(0)
推荐(0)
摘要:
言归正传,这一段时间我的工作主要是改进公司的调度器,调度器调度线程池执行任务,生产者生产任务,消费者消费任务,那么这时就需要一个任务队列,生产者向队列里插入任务,消费者从队列里提取任务执行,调度器里是通过BlockingQueue实现的队列,随后小查一下,下面看看BlockingQueue的原理及其 阅读全文
posted @ 2019-07-31 16:10
qxwang
阅读(96)
评论(0)
推荐(0)
摘要:
先看一下大体结构 ThreadLocal(线程本地变量),作用是让每个线程都维护一份独立的变量副本,解决了变量并发访问冲突的问题。表面上看,变量是存储在ThreadLocal里面的,实则不然:1. ThreadLocal只是个“工具类”,对外暴露了get、set、remove接口;2. 内部实现:变 阅读全文
posted @ 2019-07-31 16:10
qxwang
阅读(47)
评论(0)
推荐(0)
摘要:
介绍 Kafka起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark等都支持与Kafka集成。 1. 概述 Kafka与传 阅读全文
posted @ 2019-07-31 16:09
qxwang
阅读(92)
评论(0)
推荐(0)
摘要:
前言 该篇文章为转载文章,Guava的功能强大,由于自己使用Guava并没有特别频繁,很多工具类也是在阅读本篇文章之后才发现原来开发的过程中可以省去很多的繁琐,例如Charsets的使用,例如HttpHeaders的使用,例如Multimap相关集合类的使用,都是在阅读过本篇文章之后才发现可以在实际 阅读全文
posted @ 2019-07-31 16:08
qxwang
阅读(131)
评论(0)
推荐(0)
摘要:
server.properties配置 原文作者:文/debugo原文标题:Kafka主要参数详解 阅读全文
posted @ 2019-07-31 16:08
qxwang
阅读(62)
评论(0)
推荐(0)
摘要:
Guava Learning 该工程主要用以学习Guava工具包的常用功能 前提 工程路径:https://github.com/litttlefisher/guava-learning该工程是以jdk1.8为版本的代码,所以lambda表达式会大量的出现。如果自己的工程是jdk1.8以下的,请自行 阅读全文
posted @ 2019-07-31 16:07
qxwang
阅读(89)
评论(0)
推荐(0)
摘要:
前言 Spring最关键的部分,也就是解析并加载Bean的处理了,本篇文章以个人的角度进行说明Spring的Bean都是如何处理的。期间有些部分会进行跳过,可能自己还没理解到,也或者可能觉得不太重要吧。本篇文章以解析Xml的方式加载Spring的Bean为前提,基于ClassPathXmlAppli 阅读全文
posted @ 2019-07-31 16:03
qxwang
阅读(67)
评论(0)
推荐(0)
摘要:
简介 ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。 ZooKeeper是一个典型的分布式数据一致性的解 阅读全文
posted @ 2019-07-31 16:03
qxwang
阅读(38)
评论(0)
推荐(0)
摘要:
前言 电话面试的时候,发现去总结Kafka如何保证高可用时,整个脑袋是懵的,其实Kafka的原理我是懂的,可就是说不出来,这篇文章用来描述下Kafka在不同的情况下,如何保证高可用。具体Kafka原理解析,请移步Kafka数据可靠性深度解读 消息中间件出问题的可能性 Producer发送到消息中间件 阅读全文
posted @ 2019-07-31 16:02
qxwang
阅读(66)
评论(0)
推荐(0)
摘要:
一、什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石 阅读全文
posted @ 2019-07-31 16:02
qxwang
阅读(55)
评论(0)
推荐(0)
摘要:
自我介绍 面试官您好,我叫XXX,毕业于XXX,现就职于XXX,是恒生下属的子公司,主要从事于互联网金融相关系统的开发。我自己是一个对技术有追求的人,不满足于每天就写写业务代码的,所以每天上下班的时候经常会在微信公众号、简书、开源中国等途径中获取最新的技术知识,来提升自己的能力。另外,我自己从一年前 阅读全文
posted @ 2019-07-31 16:01
qxwang
阅读(20)
评论(0)
推荐(0)
摘要:
前言 ThreadPoolExecutor是jdk内置线程池的一个实现,基本上大部分情况都会使用这个线程池完成各项操作。 本文分析ThreadPoolExecutor的实现原理。 ThreadPoolExecutor的状态和属性 ThreadPoolExecutor线程池有5个状态,分别是: RUN 阅读全文
posted @ 2019-07-31 16:01
qxwang
阅读(44)
评论(0)
推荐(0)
摘要:
前言 总结一些算法题目,面试使用源码地址: https://github.com/litttlefisher/algorithm 1. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析: 兔 阅读全文
posted @ 2019-07-31 16:00
qxwang
阅读(33)
评论(0)
推荐(0)
摘要:
前言 总结排序算法 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747 阅读全文
posted @ 2019-07-31 16:00
qxwang
阅读(30)
评论(0)
推荐(0)
摘要:
前言 这两天对Docker进行从零部署,就是为了能够玩一玩devOps,现在将部署的过程既遇到的一些问题进行记录。 PS: 纯为自己兴趣而学,在公司会被认为不务正业。 服务器安装Docker 服务器安装docker 我这边的服务器是Centos系统,执行以上命令就会把docker安装并启动,至于测试 阅读全文
posted @ 2019-07-31 15:59
qxwang
阅读(66)
评论(0)
推荐(0)
摘要:
前言 这里只放一个标题,给自己定一个小小的目标,用于记录在Spring学习中,研磨Spring设计思想的感想。以前读Spring源码仅会去理解其中的逻辑,并没有去思考其中的设计原理,亦或者为什么这么设计,有什么更好的设计方案等等的。这里先罗列下我感觉可以深入思考下的问题。 阅读全文
posted @ 2019-07-31 15:58
qxwang
阅读(25)
评论(0)
推荐(0)
摘要:
个人技能学习路径 自我介绍 ThreadPoolExecutor源码,拒绝策略,Executors的几个线程池创建方法 阻塞队列区别,包括ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue Thr 阅读全文
posted @ 2019-07-31 15:57
qxwang
阅读(21)
评论(0)
推荐(0)
摘要:
前言 这里暂时放一个问题,后续进行解决。 JDK1.7到JDK1.8中ConcurrentHashMap的实现原理有变更,引入了红黑树,为什么引入红黑树? 桶中元素从链表转为红黑树有一个阙值,默认阙值是多少,为什么设置为这个值? ConcurrentHashMap和HashTable的区别? Con 阅读全文
posted @ 2019-07-31 15:57
qxwang
阅读(13)
评论(0)
推荐(0)
摘要:
简单解释一下J.U.C,是JDK中提供的并发工具包,java.util.concurrent。里面提供了很多并发编程中很常用的实用工具类,比如atomic原子操作、比如lock同步锁、fork/join等。 从Lock作为切入点 我想以lock作为切入点来讲解AQS,毕竟同步锁是解决线程安全问题的通 阅读全文
posted @ 2019-07-31 15:56
qxwang
阅读(42)
评论(0)
推荐(0)
摘要:
什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事务的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致; 隔离性: 并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事 阅读全文
posted @ 2019-07-31 15:55
qxwang
阅读(38)
评论(0)
推荐(0)
摘要:
TCP/IP原理 TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:AdvancedResearch Projects Agency)对有关分组交换的广域网(Packet-S 阅读全文
posted @ 2019-07-31 15:54
qxwang
阅读(200)
评论(0)
推荐(0)
摘要:
客户端发起HTTPS请求这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。 服务端的配置采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书 阅读全文
posted @ 2019-07-31 15:53
qxwang
阅读(223)
评论(0)
推荐(0)
摘要:
TCP 的特性 TCP提供一种面向连接的、可靠的字节流服务 在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP TCP使用校验和,确认和重传机制来保证可靠传输 TCP给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复 TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的 阅读全文
posted @ 2019-07-31 15:53
qxwang
阅读(32)
评论(0)
推荐(0)
摘要:
SpringBoot Http2改造 前置说明 该文档仅说明使用jetty作为web服务器的场景下如何配置具体springboot有官方的说明文档,链接如下https://docs.spring.io/spring-boot/docs/2.0.0.RC2/reference/html/howto-e 阅读全文
posted @ 2019-07-31 15:52
qxwang
阅读(74)
评论(0)
推荐(0)
摘要:
类图 该类图比较简陋,具体的可以参考网上关于拦截过滤器的设计模式类图 PS:拦截过滤器模式好像并不是23种设计模式中的一种,而是后来扩展出来的 具体的代码实现 下面这个接口,就是类图中的Inteceptor和Chain,只不过Chain是Inteceptor的内部类,为了维护泛型 123456789 阅读全文
posted @ 2019-07-31 15:52
qxwang
阅读(45)
评论(0)
推荐(0)
摘要:
前言 Java8在我看来主要由2个大的特性,一个是lambda的使用,另一个是stream流的出现,该篇博文用于介绍stream流的常用操作符。 流和其它集合具体的区别 流的操作是以管道的方式串起来的。流管道包含一个数据源,接着包含零到N个中间操作,最后以一个终点操作结束。 创建Stream 可以通 阅读全文
posted @ 2019-07-31 15:51
qxwang
阅读(41)
评论(0)
推荐(0)
摘要:
前言 本文主要介绍具体如何配置JVM参数来达到调优的目的。 GC性能方面的考虑 1. Total Heap 默认情况下,vm会增加/减少heap大小以维持free space在整个vm中占的比例,这个比例由MinHeapFreeRatio和MaxHeapFreeRatio指定。 一般而言,serve 阅读全文
posted @ 2019-07-31 15:51
qxwang
阅读(113)
评论(0)
推荐(0)
摘要:
前言 运用JVM自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然JVM调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢 阅读全文
posted @ 2019-07-31 15:50
qxwang
阅读(57)
评论(0)
推荐(0)
摘要:
前言 该篇博文介绍一下CheckStyle和PMD如何集成到工程中,以让工程打包时强制检查一遍代码,避免空谈代码检查却无人执行的尴尬境地。 搭建build-tools工程 可以在lang包中或者各个模块中定义一个build-tools工程,该工程中没有代码,仅是引入代码检查的配置文件 pom文件中引 阅读全文
posted @ 2019-07-31 15:49
qxwang
阅读(62)
评论(0)
推荐(0)