• 来自:掘金(作者:cipher)原文链接:https://juejin.im/post/5c551122e51d457fcc5a9790需求这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。订单实体:service接口:传统实现根据订单类型写一堆的if else:策略模式实现利用策略模式,只需要两行即可实现业务逻辑:可以看到上面的方法中注入了HandlerContext,这是一个处理器上下文,用来保存不同的业务处理器,具体在下文会讲解。我们从中获取一...
  • 本文较长,由于微信文章文字限制,IOC源码分析分为3个文章展示出来~Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。本文采用的源码版本是 4.3.11.RELEASE,算是 5.0.x 前比较新的版本了。为了降低难度,本文...
  • 点击上方"IT牧场",选择"设为星标"技术干货每日送达!之前,笔者总结了 Spring Cloud学习资源一网打尽!Awesome Spring Cloud v1.0 ,这一篇整理了Spring Boot 世界的优秀学习项目!Spring Boot 算是目前 Java 领域最火的技术栈了,也是Java开发人员不得不掌握的技术,今天给大家整理了13个优质 Spring Boot 开源项目给大家参考,希望能够帮助到正在学习 Spring Boot 的小伙伴!小伙伴简历中不知道写什么项目的或者项目没有亮点的,我只...
  • 日前端夜话0xC5每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:1892 字预计阅读时间:10 分钟作者:Yann Mulonda翻译:疯狂的技术宅来源:bitsrc有两个 JavaScript 插件可用于读取和处理 CSV 和 Excel 文件,之后仅对自己的脚本进行编码即可。CSV 表示 :用逗号分隔值这是一种文件格式,用于存储表格数据,如电子表格或数据库等。可以将 CSV 格式的文件导入或导出到将数据存储在表中的程序中。JSON:JavaScript 对象符号我的项目结构和文件的截图在...
  • 大厂对于非高P职位,面试标准其实很简单能干活Java基础要好最好熟悉些分布式框架相信其它公司应该也照着这个标准来的。前段时间,面试了若干位Java后端候选人,工作经验在3到5年间。不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,面试官总是只根据面试情况来判断。但现实情况是,大多数人可能面试前没准备,或准备方法不得当。要知道,我们平时干活更偏重于业务,不可能大量接触到算法,数据结构,底层代码这类面试必问的问题点,换句话说,面试准备点和平时工作要点...
  • 点击▲关注 “爪哇笔记”   给公众号标星置顶更多精彩 第一时间直达前言阿里巴巴提供的控制台只是用于演示 Sentinel 的基本能力和工作流程,并没有依赖生产环境中所必需的组件,比如持久化的后端数据库、可靠的配置中心等。目前 Sentinel 采用内存态的方式存储监控和规则数据,监控最长存储时间为 5 分钟,控制台重启后数据丢失。企业版这里推荐一下阿里云的官方版,AHAS Sentinel 控制台 是 Sentinel 控制台的阿里云上版本,提供企业级的控制台服务,包括:实时请求链路查看还有各种酷炫的监控...
  • 前不久,TechRepublic 发表了一篇文章讨论关于开发人员喜爱与讨厌的语言。结果很有意思:Java 在最受欢迎的语言排行榜名列第三,同时在最讨厌的语言中排在第二名。显然,Java 作为一门开发语言,人们对它的看法形成了两极分化。对此 C++ 的创始人 Bjarne Stroustrup 曾回复到:“这个世上只有两种语言:人们抱怨的语言和没有人使用的语言。”此言不虚啊。正因为 Java 的普及度高,不仅 JAVA 被大家抱怨,JAVA 之父也经常被人抱怨。今天我们就来介绍一下创造了这款传奇语言的传奇人物...
  • 阅读源码框架如下:Mybatis、Spring、Redis、Java并发、Dubbo、RocketMq、Sharding-sphere等作为一名优秀的 Java 开发程序员,以及想那些想要学习 Java 更深层一点的知识的同学,对源码框架的熟悉与熟练阅读与使用是必不可缺的核心技能了,也是每个 Java 程序员应该要做到的。比如去面试时问到Spring Aop底层实现原理?HashMap底层实现原理?Redis集群选举方式?你会一脸懵逼,被面试官虐惨。如果你有上述问题,老铁来吧,一起《跟我读源码》那么,如何着...
  • 点关注,不迷路;持续更新Java相关技术及资讯!!!一、使用Optional引言1.1、代码问题引出在写程序的时候一般都遇到过 NullPointerException,所以经常会对程序进行非空的判断:User user = getUserById(id); if (user != null) { String username = user.getUsername(); System.out.println("Username is: " + username); // 使用 username } 为...
  • 点关注,不迷路;持续更新Java相关技术及资讯!!!一、使用Optional引言1.1、代码问题引出在写程序的时候一般都遇到过 NullPointerException,所以经常会对程序进行非空的判断:User user = getUserById(id); if (user != null) { String username = user.getUsername(); System.out.println("Username is: " + username); // 使用 username } 为...
  • 点关注,不迷路;持续更新Java相关技术及资讯!!!一、使用Optional引言1.1、代码问题引出在写程序的时候一般都遇到过 NullPointerException,所以经常会对程序进行非空的判断:User user = getUserById(id); if (user != null) { String username = user.getUsername(); System.out.println("Username is: " + username); // 使用 username } 为...
  • 互联网时代已进入后半场,行业环境发生了显著变化。互联网人,尤其是技术人员,如何在加速更迭的技术浪潮中持续充电,提升自身价值,是当下必须面对的挑战。近期,阿里、百度、微软、滴滴、创新工场等顶级互联网大厂与开课吧深度合作,助力“开课吧”赋能处于环境变化快速、技术浪潮更迭中的互联网人,实现职业提升和自我成长。开课吧将前沿互联网技术领域的一线企业的实战项目根植于教学内容之中,帮助泛互联网人能力提升,无缝衔接大厂用人需求。Boss 直聘、猎聘网和开课吧达成战略合作,为开课吧学员提供就业服务支持。与此同时,开课吧在发布...
  • 不少同学担忧的情况——“晋升无望、收入见顶、生活开支飙升、财务危机如影随形”,小编精心挑选了十个优质原创技术号,推荐给大家化解成长的烦恼。这些号一般是由深耕技术多年的IT老兵运营,与你分享技术干货、技术成长经验。很多时候大家不是不努力,而是缺乏对应的学习方法,以及高手指点。他们都是我平时关注的优秀号主,分享给大家,助大家学习路上披荆斩棘~能力得到提升,思维得到开阔~表哥有话讲▲长按图片识别二维码关注表哥有话讲:国内最大的数据从业者分享平台。20W程序员聚集地!专注于思维、技术、经验分享交流!跟你讲讲技术圈,...
  • 互联网时代已进入后半场,行业环境发生了显著变化。互联网人,尤其是技术人员,如何在加速更迭的技术浪潮中持续充电,提升自身价值,是当下必须面对的挑战。近期,阿里、百度、微软、滴滴、创新工场等顶级互联网大厂与开课吧深度合作,助力“开课吧”赋能处于环境变化快速、技术浪潮更迭中的互联网人,实现职业提升和自我成长。开课吧将前沿互联网技术领域的一线企业的实战项目根植于教学内容之中,帮助泛互联网人能力提升,无缝衔接大厂用人需求。Boss 直聘、猎聘网和开课吧达成战略合作,为开课吧学员提供就业服务支持。与此同时,开课吧在发布...
  • 点关注,不迷路;持续更新Java相关技术及资讯!!!前言:随着应用用户数量的增加,相应的并发请求的数量也会跟着不断增加,慢慢地,单个数据库已经没有办法满足我们频繁的数据库操作请求了,在某些场景下,我们可能会需要配置多个数据源,使用多个数据源(例如实现数据库的读写分离)来缓解系统的压力等,同样的,Springboot官方提供了相应的实现来帮助开发者们配置多数据源,一般分为两种方式(目前我所了解到的),分包和AOP,其中利用AOP实现多个数据源到的动态切换时候会另开一篇文章来写。考虑到mybatis是java开...
  • 点关注,不迷路;持续更新Java相关技术及资讯!!!前言:随着应用用户数量的增加,相应的并发请求的数量也会跟着不断增加,慢慢地,单个数据库已经没有办法满足我们频繁的数据库操作请求了,在某些场景下,我们可能会需要配置多个数据源,使用多个数据源(例如实现数据库的读写分离)来缓解系统的压力等,同样的,Springboot官方提供了相应的实现来帮助开发者们配置多数据源,一般分为两种方式(目前我所了解到的),分包和AOP,其中利用AOP实现多个数据源到的动态切换时候会另开一篇文章来写。考虑到mybatis是java开...
  • 点关注,不迷路;持续更新Java相关技术及资讯!!!前言:随着应用用户数量的增加,相应的并发请求的数量也会跟着不断增加,慢慢地,单个数据库已经没有办法满足我们频繁的数据库操作请求了,在某些场景下,我们可能会需要配置多个数据源,使用多个数据源(例如实现数据库的读写分离)来缓解系统的压力等,同样的,Springboot官方提供了相应的实现来帮助开发者们配置多数据源,一般分为两种方式(目前我所了解到的),分包和AOP,其中利用AOP实现多个数据源到的动态切换时候会另开一篇文章来写。考虑到mybatis是java开...
  • 01 三次握手三次握手:(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功)(1)第一次握手客户端发送 syn 包 (syn=x) 到服务器,并进入 SYN_SEND 状态,等待服务器确认。(2)第二次握手服务器收到 syn 包,必须确认客户的 SYN(ack=x+1),同时自己也发送一个 SYN 包(syn=y),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。(3)第三次握手客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK (ack=y+1),此包发...
  • 01 三次握手三次握手:(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功)(1)第一次握手客户端发送 syn 包 (syn=x) 到服务器,并进入 SYN_SEND 状态,等待服务器确认。(2)第二次握手服务器收到 syn 包,必须确认客户的 SYN(ack=x+1),同时自己也发送一个 SYN 包(syn=y),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。(3)第三次握手客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK (ack=y+1),此包发...
  • 01 三次握手三次握手:(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功)(1)第一次握手客户端发送 syn 包 (syn=x) 到服务器,并进入 SYN_SEND 状态,等待服务器确认。(2)第二次握手服务器收到 syn 包,必须确认客户的 SYN(ack=x+1),同时自己也发送一个 SYN 包(syn=y),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。(3)第三次握手客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK (ack=y+1),此包发...