![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
Luke Lan
这个作者很懒,什么都没留下…
展开
-
面试题系列(一):hashmap的底层实现put操作,扩容机制
1.Hashmap原理及内部数据结构: 底部采用hash表数据加链表的形式,1.8以后引入了红黑树的数据结构。时间复杂度由O(n)变为O(logn) 节点结构: 重写了equals方法: 1.1扩容规则是什么? 初始化数组长度为16. 最大长度限制 获取在数组中的位置: 当数组长度到0.75时扩容: ...原创 2018-12-16 23:11:33 · 5104 阅读 · 0 评论 -
多线程设计模式之两阶段停止
本人来自《java多线程实战指南》一书的内容 java多线程停止实际上是一个很复杂的任务,有各种各样的情况,比如:线程还有没有进行完的任务,比如还有处于阻塞状态的任务等等。那么怎么实现有效的停止呢? 就像现实中的跑步一样,飞奔的过程中突然停止总是很难的,总需要一个准备阶段和一个打断的阶段。 我们先来看看线程的运行情况: 那么准备阶段我们需要做什么呢? 1.我们应该告诉线程...翻译 2019-06-16 23:30:50 · 203 阅读 · 0 评论 -
领域驱动设计(二)
1.在分析模型中最难做的就是分离领域,如何分离领域?每层之间如何联系?每层做什么?我们为什么使用框架? 只有分离领域才能将分而治之的思想用到,才能模块化具体化。从抽象概念到领域设计必经之路。 2.基本的模型划分:用户界面层=》应用层=》领域层=》基础设施层 3.面向对象的程序中,常常将业务对象直接写入用户界面、数据库访问等支持代码。而一些业务逻辑则会被嵌入到用户界面组件和数据库脚本中...原创 2019-05-31 00:40:58 · 321 阅读 · 0 评论 -
领域驱动设计
领域设计随着微服务的越来越火,领域设计也越来越火。 什么是领域设计? 一、了解领域设计,如何通过模型来吸收知识 一些设计因素是技术上的。大批开发人员很注意培养自己的技能,并紧跟每一次技术进步。很多的应用程序主要的复杂性不在于技术上,而来自于领域本身、用户的活动或者业务。 领域设计注重领域模型的建立。模型:用来描绘人们所关注的现实或想法的某个方面,模型是一种简化。它是对现实的解释...原创 2019-05-25 22:48:45 · 656 阅读 · 0 评论 -
骚操作系列(一)
1.每当看到一些好的操作总会记录下来。这次看看hbase源码中的骚操作吧: 一、创建对象: 如何灵活增加删除接口的实现类呢?保证使用的时候只加载一次呢?看看hbase源码如何做的 1.1 @InterfaceAudience.Private public class CompatibilitySingletonFactory extend...原创 2019-05-12 21:11:37 · 978 阅读 · 0 评论 -
Kafka之生产者 笔记二
1.客户端请求分为响应式的请求和非响应式的请求: 不需要响应的流程: 开始发送请求->添加客户端请求到队列->发送请求->请求发送成功->从队列中删除请求->构造客户端响应。 需要响应的流程: 开始发送请求->添加客户端请求到队列->发送请求->请求发送成功->等待接收响应->接收响应->...翻译 2019-04-08 21:15:27 · 146 阅读 · 0 评论 -
Kafka之生产者 笔记一
文章内容选自《Kafka技术内幕图解》 1.消息系统通常是由三大块组成:生产者、消费者、消息代理。 功能:生产者会将消息写入消息代理中,消费者会从消息代理中读取消息。对于消息代理而言,消费者和生产者都是客户端。 2.通信步骤: 1.生产者客户端应用产生消息。 2.生产者包装消息到请求头中,发送到客户端。 3.服务端对象负责接收请求,并将消息以文件形式...翻译 2019-03-31 22:32:20 · 130 阅读 · 0 评论 -
谈谈设计模式之观察者模式
观察者模式场景是什么?设计的本质是什么? 首次很多场景中都有观察者,观察者的功能是【发现和通知】。发现如何设计,通知又如何设计? 选自《大话设计模式》的场景。前台服务去观察老板是否回来,回来的话就通知同事不要玩游戏了。 对场景中的对象进行抽象 最终的模式图: 看一篇关于这个的博文: https://www.cnblogs.com/fingerboy/p/6393644....原创 2019-03-17 21:44:21 · 134 阅读 · 0 评论 -
Java面试之JVM(一)
(JVM)请介绍类的加载过程,什么是父类委托机制(双亲委派模型不准确的叫法)? 加载过程有哪些?这些过程有什么作用?各个过程有问题又会怎么样?为什么叫做双亲委派模型?好处是什么?坏处是什么?有什么解决方式吗? 类加载:JVM将编译好的.class文件(字节码文件)以二进制流的方式加载到我们内存中,并且将二进制流中静态的数据结构转换成我们方法区中动态运行数据结构,并且在对堆内存生成一个java.l...原创 2019-03-03 16:08:09 · 146 阅读 · 0 评论 -
sparkSQL入数据库源码解析
1.用sparkSQL入mysql和sparkcore入mysql有啥区别呢?我们看看sparksql源码: 写入: df.write.jdbc(url1, "TEST.TRUNCATETEST", properties) 转化一下配置信息: def jdbc(url: String, table: String, connectionProperties: Properties): ...原创 2019-01-13 11:24:33 · 666 阅读 · 0 评论 -
需求分析
需求分析是软件计划阶段的重要活动,也是软件生存周期中的一个重要环节,该阶段是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。需求分析的目标是把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。此外,软件的一些非功能性需求(如软件性能、可靠性、响应时间、可扩展性等),软件设计的约束条件,运行...原创 2019-01-06 23:16:01 · 1736 阅读 · 0 评论 -
netty入门demo
netty原理链接 https://www.oschina.net/question/16_9863 本文主要是手写一个demo入门: 服务器: public class MyNettyServer { private static String IP="127.0.0.1"; private static int port=1234; ...转载 2019-01-06 14:44:29 · 191 阅读 · 2 评论 -
JAVA注解
1.阅读源码时经常会有一些注解,通常是为了更加灵活的设计。代码片段一选自Netty源码: @Inherited @Documented @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @interface Sharable { // no value } Inherited应用在类上,继承的子类会自动向上查...原创 2019-01-01 22:00:31 · 84 阅读 · 0 评论 -
多线程系列(一)线程基础知识
本文选自【JAVA并发的艺术】一书的内容 1. 如何减少上下文切换? 减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。 · 无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一 些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。 · CAS算法。Java...翻译 2018-12-18 23:45:41 · 223 阅读 · 0 评论 -
设计模式回顾
设计模式本人比较倾向于敏捷开发的时候最好用(大神请忽略),总体设计比较倾向于自顶向下的设计。 设计模式主要是根据设计原则在不同场景的使用经验的出来的,我们站在巨人的肩膀上来看看吧。 http://c.biancheng.net/design_pattern/ 本人面试问的最多的是:什么是面向对象,讲讲你的理解?往往很少人能说好,只能说面向对象有三大特征:封装、继承、多态。背过无数次深入...原创 2019-07-13 23:39:10 · 163 阅读 · 0 评论