自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lz710117239的博客

java程序员的博客

  • 博客(323)
  • 收藏
  • 关注

原创 java开发工具(4)你真的会用IDEA么?(番外篇)Export/Import Setting、分屏功能、查看方法调用上下级功能介绍

上一篇文章《java开发工具(3)你真的会用IDEA么?(下)》中说了Idea的keyMap快捷键设置和Project Structure项目结构功能,相信掌握了这两个技能,你对IDEA的熟悉程度和工作效率又提升了一截。在这IDEA的最后一篇文章,番外篇中,我会告诉你IDEA的更多你可能不知道,却非常好用的小技巧,掌握后保证你的开发效率像飞一样直升而上。一、Export/Import Sett...

2020-02-12 22:00:36 2028

原创 java开发工具(3)你真的会用IDEA么?(下)keyMap、Project Structure功能介绍

上一篇文章《java开发工具(2)你真的会用IDEA么?(中)》,我介绍了Idea的Spring,debug和TODO功能,相信通过上一节的学习,你的开发效率又提升了一截。这次我会为你介绍让你能进一步玩弄Idea的快捷键设置方式keyMap,让你对项目结构有更一步了解的Project Structure。

2020-02-11 18:03:41 875

原创 java开发工具(2)你真的会用IDEA么?(中)TOTO、debug、Spring功能介绍

上面一篇文章《java开发工具(1)你真的会用IDEA么?(上)》.我们说了Idea的Struture功能和Favorites功能。这一期,针对java开发人员,我想做javaWeb开发的人员基本都是用Spring框架把,所以今天我将向你介绍Idea的Spring,debug和TODO功能。一、TODO我想TODO功能,你一定知道,而且经常使用,它的常规使用方式就是在代码行中的注释后面写上“T...

2020-02-09 15:27:25 2351

原创 java开发工具(1)你真的会用IDEA么?(上)Structure、Favorites功能介绍

idea你真的会用么?本篇文章主要介绍了侧边栏Structure和标签功能,这是你不容错过的细节

2020-02-07 08:59:53 1832 3

原创 DDD(序)充血模式比贫血模式好在哪里?

现在随着DDD越来越多地被人提出,代码开发的充血模式也在被越来越多的人使用,什么是充血模式?充血模式到底有哪些优点,又有什么缺点,到底要不要用充血模式?怎么用充血模式?一、什么是充血模式要了解充血模式,就需要了解与之相对的贫血模式,这个概念是国外的一位叫“Martin Fowler”的人提出的。贫血模式贫血模式是指业务对象里面只包含属性和get,set\color{red}get,setg...

2020-01-30 09:53:22 730

原创 怎么写出好的文章

写博客的时候,一篇好的文章是能让读者感觉读起来容易理解且逻辑分明的,许多人知道什么是好的文章,但是看到好的文章只能心中赞叹为何别的读者可以写出如此好的文章,到自己写文章的时候就无从下手了。在此说下怎么写好一篇文章,都要从哪些方面入手。一、借鉴别人文章的优点在平时阅读中,你一定能看到许多优秀的文章,让你流连忘返,此时你可以反复浏览、深度总结,为什么别人的文章写的很好,都有哪些优点。以下一篇文...

2020-01-16 20:47:33 310

原创 DDD编程

DDD现在是指导代码编写,甚至是架构设计的思想,要详细了解DDD必须先了解“聚合根、实体、值对象”的含义,这块网上已经有不少相关文章,为了避免踩坑,博主推荐一篇:聚合根、实体、值对象一、界限上下文最近看了欧创新老师使用DDD拆分微服务的思想,感受颇丰,特此总结一番。欧老师将划定领域模型和微服务的边界分为了三步:在事件风暴中梳理业务过程中的用户操作,事件以及外部依赖关系等,根据这些要素梳...

2019-12-12 20:25:02 1332

原创 软件·质量·管理(3)测量

当你掌握了上一篇的任务排期后,你对项目开始之前的安排已经可以做到游刃有余了,这篇我们就开始讲讲项目进行中的处理办法。在软件管理的过程中,观察软件进行的过程,并对此作出反应是至关重要的,这能保证项目时刻按照你的预期进行,有问题也可以及时调整。一个好的观察方式与模型是必不可少的,而观察的目的是为了依据情形做出对应的反馈,一个优秀的观察反馈模型如下:摄入赋意意义反应这些事情做的意义何在呢?我们分...

2019-12-10 12:02:52 249

原创 软件·质量·管理(2)任务排期

在软件设计之初,许多公司在项目开始之前都会进行项目排期,通过项目排期可以充分安排利用开发、测试资源,做到不浪费人员的空余时间。如果你是第一次做项目排期,对你来说,项目排期一定非常不容易,因为作为一个PM,你需要对开发、前端、APP的时间有完美的安排(一般测试的时间会根据开发人员的完成度进行排期),这样才能保证项目有序地进行。而下面,我们就对应该如何排期,保证PM能把控项目进度,以及如果出现问题如...

2019-11-21 16:35:45 1150

原创 软件·质量·管理(一)系统思维-总结

《质量·软件·管理-系统思维》是一系列比较优秀的书籍,楼主觉得里面的介绍还是有些不是很容易理解,所以结合我们的日常开发,由浅入深地去讲这块东西。一、压力与绩效压力与绩效是实施项目管理进程的有效手段。压力:压力可以激发程序员的开发进度,但是压力应当是适度的,过大的压力会压垮一个人,而如果开发人员没有任何压力,那这个管理者也是失败的。如下为压力与开发进度的折线图:随着压力的增大,工作效率...

2019-11-20 21:41:33 458

原创 高效能程序员的修炼-总结篇

在此,无关技术,只是从效能上探讨下,如何提升工作效率,结合了大量研究,分析,实践证明。同一时间最好只做一个任务温伯格提出一个经验法则,用以计算由于切换项目而引起的浪费。即使你只做一个项目,这种情况也可能会发生,你会被邮件、聊天所打扰...

2019-10-19 14:58:38 303

原创 数据结构与算法之美要点摘要

写这篇文章是为了总结记录《数据结构与算法》课程中的技术要点。一、数组在数组中插入的时候,如果要插入指定的下标,会使数组的其他元素后移,此时插入到指定下标的时间复杂度是O(n),如果不是非必要不一定要插入到指定下标,可以插入末尾,或者直接替换下标数据。删除数组中元素的时候,会使数组产生复制操作,此时时间复杂度是O(n),为了节省时间,可以批量删除,降低时间复杂度。二、链表链表做插入操...

2019-10-09 09:11:06 411

原创 SpringBoot源码解析(十)让你深度理解Spring是如何解决循环依赖的

在spring中我们有可能会遇到这种情况,A依赖B,B又依赖A,正常情况下,我们用@Reference或者@Autowired注解,是不会有问题的,可在我们用构造方法的时候,就会出现问题: public AssistantDoctorController(UserDoctorController userDoctorController) { this.userDoctor...

2019-10-03 20:58:25 331

原创 G1垃圾收集器,调优原理详解

关于G1是新开始使用的垃圾回收器,在G1垃圾回收器进行回收的时候,怎么样设置JVM启动参数,怎么对G1进行调优,楼主看了网络上的文章都不尽如人意,所以我想在此写一篇比较贴合实际的文章,能让大家看了在实战中去使用,从各个方面去优化G1的gc参数。其实提到G1的gc参数的优化,主要从几个方面说起:服务停止时间吞吐量回收的效率一、服务停止时间如果gc参数配置不合理,在相同时间内应用线程的...

2019-09-26 16:53:00 1573

原创 G1垃圾收集器要点总结

HotSpot提供了一种垃圾回收策略,G1(Garbage First)算法,通过参数-XX:+UseG1GC来启用,该算法在JDK 7u4版本被正式推出。一、Remembered Set在G1收集器中,Region之间的对象引用以及其他收集器中的新生代与老年代之间的对象引用,虚拟机都是使用Remembered Set来避免全堆扫描的。G1中每个Region都有一个与之对应的Remember...

2019-08-20 10:22:49 789

原创 程序员的五个等级

在工作中,什么样的程序员是一个好的程序员,什么是一个差的程序员,怎么划分,是不是技术好的程序员就是好程序员,一个好的程序员需要哪些技能,在此楼主结合自己的工作经验,做一些总结,下面就楼主遇到的程序员从低到高来一个分类一、最优秀的程序员在此我们就不说那些获得图领奖,或者国外的比尔盖茨,国内的李彦宏、马化腾这种事业有成的一方大佬了,因为这样的人也是属于时代的产物。我们从6个方面来评论沟通:良...

2019-07-20 19:49:00 2396

原创 Mono和Flux的用法详解

WebFlux的Flux和Mono用法Fluxjust可以指定序列中包含的全部元素。创建出来的 Flux 序列在发布这些元素之后会自动结束。fromArray(),fromIterable()和 fromStream()可以从一个数组、Iterable 对象或 Stream 对象中创建 Flux 对象。empty()创建一个不包含任何元素,只发布结束消息的序列,在响应式编程中,流的...

2019-07-03 15:20:10 53997 5

原创 soul(1)插件文档

结合选择器的后端页面,介绍下选择器是如何在请求的过程中起到作用的匹配方式条件匹配方式的条件中有5个选项,分别是post、query、host、ip、header,其对应在请求时候的源码如下: String buildRealData(final ConditionZkDTO condition, final ServerWebExchange exchange) { ...

2019-06-12 10:43:03 73

原创 hystrix原理文章整合整理

hystrix的源码文章参考,此文章只说了一部分功能,具体细节却没有说清楚,现在我们就一起看看具体细节

2019-06-11 21:12:16 237

原创 rxjava1

公司决定用个soul搭建网关,稍微研究了下,其中断路器是使用了rxJava,关于rxjava有一篇比较好的文章:http://gank.io/post/560e15be2dca930e00da1083。在这里结合soul的HystrixObservableCommand说一下rxjava。其代码都在这里了 HttpCommand command = new HttpCommand...

2019-06-04 21:13:23 270

原创 AliMQ(RockertMQ)源码(五)Consumer的发布订阅和start()方法

一、发布订阅发布订阅是调用了ComsumerImpl的subscribe方法。this.subscribeTable.put(topic, listener);是将topic和listener设置到subscribeTable中,可见,同一个consumer只能设置一个topic对应一个listener。将tag放入到了ConsumerImpl的rebalanceImpl的subscr...

2019-05-22 21:07:04 783

原创 AliMQ(RocketMQ)源码(六)MQClientInstance的start()方法

MQClientInstance的start()方法,客户端的start() // Start request-response channel this.mQClientAPIImpl.start(); // Start various schedule tasks ...

2019-05-22 21:03:17 419

原创 AliMQ(RockertMQ)源码(四)创建消费者

一般创建AliMQ(RocketMQ)的Consumer的方式都是如下:AliMQHandler.buildConsumer(accessKey, secretKey, systemCancelOrder.get("topicId"), "CANCEL_ORDER"+"||"+systemCancelOrder.get("tagPoli...

2019-05-21 18:56:19 1264

原创 如何学习(六)重新理解学习并释放你的潜力

多了解大脑 有助于学习如何成为一个更好的学习者第一点 奖励大脑最好的方式就是做运动 老观点认为出生后脑中神经元总数就不变了 但现在发现某些特定区域每天都会有新的神经元产生 海马体就是这些特定区域之一 我们前面讲过 它对学习新事物至关重要 在这个实验中 一只老鼠在学习如何区分花和飞机的图片 背景图就是海马体中的神经元 图中蓝色部分是旧神经元 红色的是新产生的神经元 为了更好地区分两张图片 老鼠在...

2019-05-11 19:53:21 971

原创 如何学习(五)记忆

我们将深入讲解如何理解记忆 或许你已经意识到 记忆只是学习和发展专业知识的一部分 但这往往是一个重要的部分 你可能会惊讶地发现,我们具有 高度视觉化和空间化的记忆系统 他们可以帮助我们形成一部分长期记忆 我的意思是 如果你受邀参观一所陌生的房子 你很快就会知道家具的总体布局 房间的分布 颜色的搭配,甚至是卫生间柜子里的药 在几分钟内 你的大脑就能获取并存储数以千计的信息 甚至几周后 就算你面前是一...

2019-05-11 14:15:51 339

原创 如何学习(四)拖延

这一章我们要讨论两个看上去不同的概念 拖延和记忆 不过事实上这两个概念是紧密相关的 为什么? 这些组块在短时记忆中可以轻易记住 但想要牢固植入长时记忆则需要一定时间 这不是那种你想要拖到最后一分钟再去干的事 我们已有一个对付拖延的良方了 那就是番茄工作法 利用25分钟的专注时间集中注意力工作 本周我们将进一步讲述拖延发生的原因 以及对付拖延的简单方法 这些就是本周的要点 这些 (对付拖延的方法) ...

2019-05-11 11:33:07 346

原创 如何学习(三)看到更多东西

是什么激励你?当学的东西非自己真正喜欢的东西时 学习是非常困难的 但学习自己真正感兴趣的东西的时候 一切都变得非常简单 那这是为什么呢?你的大脑也有一套神经递质的广泛投射系统 加载的不是经验本身的内容 而是它的重要性以及对未来的价值 神经递质是一种可以影响神经元如何回应其他神经元的化学物质 今天我们将要谈谈它们其中的三种 乙酰胆碱 多巴胺和血清素 乙酰胆碱神经元能与负责专注学习的大脑皮层间形成...

2019-05-11 10:11:50 312

原创 如何学习(二)块

在本单元中,我们将谈论块。我们将讨论如何形成块,如何使用它们来提高您对材料的理解和创造力,以及块如何帮助您在测试中做得更好。我们还将探讨学习能力,过度学习的挑战以及交错的优势。分块介绍我们要来谈谈组块 它是你的大脑可以轻松使用的一些紧凑的信息包 我们将会讲到组块是如何形成的 你可以如何利用它们提升自己 对材料的理解和创造 以及组块如何能帮助你更好地对付考试 我们还将讨论对学习能力的一些误解 当...

2019-05-10 22:48:53 561

原创 如何学习(一):学习困难科目的实用思维方法(翻译)

一个人不论在学校里面还是在职场上面,学习能力都是至关重要的,关于怎么学习,在国外有一篇不错的文章,博主在此将其翻译过来,如果你想看原版,这是地址。集中和扩散的思维模式当你想不出来东西的时候,你会怎么办,僵尸会用脑袋撞墙,但人类的大脑明显要更复杂,如果你能了解一些大脑工作的原理,你就可以更轻松的学习,少一些焦虑。研究发现我们有两个不同的思维模式,集中思维和发散思维。我们非常熟悉集中思维,当你...

2019-05-10 19:57:43 968

原创 链路追踪-Google-Dapper论文翻译总结

关于物理链路追踪,出名的有阿里的鹰眼,Twitter的zip-kin等,这些追踪的工具都是建立在Google的一篇Dapper论文的基础上,这篇论文可以说是指明了链路追踪设计的指导方针和设计原则(https://ai.google/research/pubs/pub36356)。所以楼主写了此篇博文对这篇博文进行总结。一、两个基本需求无处不在的部署:无处不在很重要,如果系统的一小部分没有被...

2019-04-08 20:57:09 2484

原创 SpringBoot源码解析(十五)MockBean之Mapper的加载

在做单元测试的时候,有时我们需要用MockBean去Mock一些spring中的bean,在MockBean中会调用spring-boot-test中的一个类,MockitoPostProcessor,这个类中会对你用@MockBean注解的bean做替换为Mock自己生成的bean,从而达到Mock的效果。因为MockitoPostProcessor属于BeanFactoryPostProce...

2019-03-31 23:27:42 2297

原创 AliMQ(RocketMQ)源码(三)producer.send(message)

在producer.start()后,就可以进行消息发送了,在ProducerImpl中 public SendResult send(Message message) { this.checkONSProducerServiceState(this.defaultMQProducer.getDefaultMQProducerImpl()); com.ali...

2019-03-15 21:15:52 910

原创 AliMQ(RocketMQ)源码(二)producer.start()

在创建完成Producer后,就进入了Producer的start()方法。start()方法DefaultMQProducerImpl的start()方法。 this.serviceState = ServiceState.START_FAILED; this.checkConfig(); if ...

2019-03-15 20:45:00 764

原创 AliMQ(RocketMQ)源码(一)创建producer

公司现在在使用阿里云的AliMQ也就是RocketMQ,趁着工作之余,将RocketMQ的使用心得分析一下,关于RocketMQ的Producer、Consumer、Broker、NameServer等架构问题,在此处先不做分析了,想了解的可以自行查找,在这里从Java端分析一下RocketMQ源码,本篇从发送消息的Producer开始,先了解一下producer的创建。一、创建Producer...

2019-03-15 19:49:37 2730

原创 关于http请求的跨域问题

1、什么时间会引起跨域问题当请求的资源与当前所在页面的资源的服务器不同的域、协议或端口不同的时候,如http://192.168.3.122:8080 这样一个地址。域不同,地址换成了 192.168.3.123协议不同,http变成了https端口不同,原来是8080,换成了8081在以上这些情况就会引起跨域问题。跨域一般产生在js的代码中,src等路径一般可以直接访问跨域资源2...

2019-03-13 23:39:35 4192

原创 LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue、ConcurrentLinkedQueue、TransferQueue的原理与使用场景

在jdk中有许多的队列,队列的使用还是有一些难度的,因为涉及到了并发等概念,现在我们列举一下队列的特点:并发情况下不会有线程安全问题队列都有元素都有添加(生产者端使用)、获取(消费者端使用)功能基本上的使用场景都是在多线程、高并发的场景在jdk中的队列有如下几种:1、LinkedBlockingQueueLinkedBlockingQueue是使用比较多的队列,在SingleTh...

2019-02-13 22:28:19 1620

原创 电商业务之商品表规格结构

楼主在一年多以前参与过商品相关结构的设计,刚开始是瞎子过河,不过也是参考了通用的电商表结构模型。规格结构是商品中的商品规格结构,而且是最为重要的核心部分结构。...

2019-02-12 21:53:58 1850

转载 架构设计文档模板

备选方案模板1.需求介绍[需求介绍主要描述需求的背景、目标、范围等]随着XX微博业务的不断发展,业务上拆分的子系统越来越多,目前系统间的调用都是同步调用,存在如下问题:性能问题:当用户发布了一条微博后,微博发布子系统需要同步调用“统计子系统”“审核子系统”“奖励子系统”等共8个子系统,性能很低。耦合问题:当新增一个子系统时,例如如果要增加“广告子系统”,那么广告子系统需要开发一个新的接...

2019-02-02 11:09:21 5588

转载 架构重构内功心法第二式:合纵连横

合纵架构重构是大动作,持续时间比较长,而且会占用一定的研发资源,包括开发和测试,因此不可避免地会影响业务功能的开发。因此,想要真正推动一个架构重构项目启动,需要花费大量的精力进行游说和沟通。注意这里不是指办公室政治,而是指要和利益相关方沟通好,让大家对于重构能够达成一致共识,避免重构过程中不必要的反复和争执。一般的技术人员谈到架构重构时,就会搬出一大堆技术术语:可扩展性、可用性、耦合、代码很乱...

2019-01-30 23:07:44 246

转载 架构重构内功心法第一式:有的放矢

相比全新的架构来说,架构重构对架构师的要求更高,主要体现在:业务已经上线,不能停下来关联方众多,牵一发动全身旧架构的约束因此架构重构对架构师的综合能力要求非常高,业务上要求架构师能够说服产品经理暂缓甚至暂停业务来进行架构重构;团队上需要架构师能够与其他团队达成一致的架构重构计划和步骤;技术上需要架构师给出让技术团队认可的架构重构方案。总之,架构重构需要架构师既要说的住老板,也要镇得住同...

2019-01-30 22:07:36 336

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除