我们或多或少都会经历过若干个面试,而每每问到 Spring 的时候都少不了IOC容器的影子,那么这个 IOC 容器是什么呢? 本篇文章就来了解一下 BeanFactory 和 FactoryBean
Java Grammar:数据类型
Java中的基础数据类型
聊聊目标管理之 OKR
这篇文章我们不谈技术,聊点轻松的,那聊什么呢?聊一下最近很火的目标管理 OKR。不知道小伙伴你们的公司什么情况,我的公司今年开始推行 OKR,用了大半年的时间,感觉效果还不错,上周六又参加了一天的复盘培训会,刚好借此机会总结一下顺便跟大家分享一下这个优秀的工具。
浅谈Java中字符串的初始化及字符串操作类。
在深入学习字符串类之前, 我们先搞懂JVM是怎样处理新生字符串的.
当你知道字符串的初始化细节后, 再去写String s = "hello"
或String s = new String("hello")
等代码时, 就能做到心中有数。
MyBatis 核心配置综述之 ParameterHandlers
MyBatis 四大核心组件我们已经了解到了两种,一个是 Executor ,它是MyBatis 解析SQL请求首先会经过的第一道关卡,它的主要作用在于创建缓存,管理 StatementHandler 的调用,为 StatementHandler 提供 Configuration 环境等。
Spring 源码学习(十) Spring mvc
经过前面的 AOP
(面向切面编程) 和 Transaction
(事务管理),这次来到了 MVC
(Web 应用,进行请求分发和处理)
Spring MVC 定义:
分离了控制器(Controller)、模型(Model)、分配器(Adapter)、视图(View)和处理程序对象(Handler,实际上调用的是 Controller 中定义的逻辑)。
基于 Servlet 功能实现,通过实现了 Servlet 接口的 DispatcherServlet 来封装其核心功能实现,通过将请求分派给处理程序,同时带有可配置的处理程序映射、视图解析、本地语言、主题解析以及上传文件支持。
同样老套路,本篇按照以下思路展开:
(1) 介绍如何使用
(2) 辅助工具类 ContextLoaderContext
(3) DispatcherServlet
初始化
(4) DispatcherServlet
处理请求
我们谈谈面试技巧(初入职场年轻人该学的)
昨天在我们的知识星球中,有人向我咨询了一个问题,问题描述大概是这个样子,很多家技术面得还可以 结果就是等通知,然后让我给一点小小的建议,我和他交流了一下,然后思考了我怎么去面试的,总结了一下,送给大家作为参考。
SpringBoot 精髓之 SpringBoot-starter
背景
在互联网发达的今天,容器化和微服务化是一种潮流,已经不是趋势了,而是潮流。不管是出去面试还是自己日常项目开发,容器化可能还没普及,但是微服务化是不能缺少的。在微服务如此盛行的天下,Spring Clound 已经很流行了,作为 SpringCloud 的基石 SpringBoot 自然也是不容忽视。关于 SpringBoot 我们 Java 极客技术团队专门为知识星球的用户制作了一套视频教程,视频已经发布了几章了,还在持续更新中,欢迎大家到知识星球中学习,进入知识星球后请记得发帖要机器码哦。这篇文章我们先了解一下SpringBoot Starter,SpringBoot 的 Starter 我们可以说是天天都在用,但是到底什么是 Starter,如何自己编写一个 Starter 呢?这篇文章我们来一探究竟。
深入学习 Intellij IDEA 调试技巧
程序员的日常工作除了写代码之外,很大一部分时间将会在查找 BUG,解决问题。查找 BUG,离不开在 IDE 中调试代码。熟练的掌握调试技巧,可以帮助我们减少查找时间,快速定位问题。
在 IDEA 中调试代码很方便,只要开启调试,在相应代码处使用断点,然后进行相应调试即可。正是因为只要掌握这几个功能,就可以调试代码,所以在很长一段时间内,不了解其他调试技巧。后续深入使用 IDEA 过程中,不断学会 IDEA 其他调试技巧,很大程度上加快调试速度。
Spring 源码学习(九) Transaction 事务
业务系统的数据,一般最后都会落入到数据库中,例如 MySQL
、Oracle
等主流数据库,不可避免的,在数据更新时,有可能会遇到错误,这时需要将之前的数据更新操作撤回,避免错误数据。
Spring
的声明式事务能帮我们处理回滚操作,让我们不需要去关注数据库底层的事务操作,可以不用在出现异常情况下,在 try / catch / finaly 中手写回滚操作。
Spring
的事务保证程度比行业中其它技术(例如 TCC
/ 2PC
/ 3PC
等)稍弱一些,但使用 Spring
事务已经满足大部分场景,所以它的使用和配置规则也是值得学习的。
接下来一起学习 Spring
事务是如何使用以及实现原理吧。
Java:前程似锦的 NIO 2.0
Java 之所以能够霸占编程语言的榜首,其强大、丰富的类库功不可没,几乎所有的编程问题都能在其中找到解决方案。但在早期的版本当中,输入输出(I/O)流并不那么令开发者感到愉快:
1)JDK 1.4 之前的 I/O 没有缓冲区的概念、不支持正则表达式、支持的字符集编码有限等等; 2)JDK 1.4 的时候引入了非阻塞 I/O,也就是 NIO 1.0,但遍历目录很困难,不支持文件系统的非阻塞操作等等。
为了突破这些限制,JDK 1.7 的时候引入了新的 NIO,也就是本篇文章的主角——NIO 2.0。
Spring 源码学习(八) AOP 使用和实现原理
我们在业务开发中,使用得最多的是面向对象编程(OOP),因为它的代码逻辑直观,从上往下就能查看完整的执行链路。
在这个基础上延伸,出现了面向切面编程(AOP),将可以重复性的横切逻辑抽取到统一的模块中。
例如日志打印、安全监测,如果按照 OOP
的思想,在每个方法的前后都要加上重复的代码,之后要修改的话,更改的地方就会太多,导致不好维护。所以出现了 AOP
编程, AOP
所关注的方向是横向的,不同于 OOP
的纵向。
所以接下来一起来学习 AOP
是如何使用以及 Spring
容器里面的处理逻辑~
大致思路:
1. 如何使用
2. 动态 AOP 自定义标签
3. 创建 AOP 代理
4. 静态 AOP
java中List元素移除元素的那些坑
本文主要介绍,java中list集合移除元素的那些坑,今天小编就和大家一起来了解一下吧!
请求地址最后面的 “/” 加和不加到底有什么区别?
URL 是我们每天畅游在互联网世界中最最常见的东西了,对于普通用户来说,URL 就是一个字符串,比如 http://www.justdojava.com ,但是对于我们开发者而言,除了 URL,还有一个东西叫做 URI,很多人经常搞不清楚这两个概念,本文我们就从这个话题开始。
MyBatis 核心配置综述之 StatementHandler
StatementHandler
是四大组件中最重要的一个对象,负责操作 Statement 对象与数据库进行交流,在工作时还会使用 ParameterHandler 和 ResultSetHandler 对参数进行映射,对结果进行实体类的绑定
Spring 注解编程之注解属性别名与覆盖
前两篇文章咱聊了深入了解了 Spring 注解编程一些原理,这篇文章我们关注注解属性方法,聊聊 Spring 为注解的带来的功能,属性别名与覆盖。
面向对象的设计原则最终篇
关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则,依赖倒置原则而接下来我们要解释的就是最后的三种原则了,分别是接口隔离原则, 迪米特法则, 组合复用原则
MyBatis 核心配置综述之 细说一级缓存
跟我学spring security系列文章第三章 Remember Me功能
源码地址:
https://github.com/pony-maggie/spring-security-learn
remember me(记住我)这个功能大家都很熟悉,现在各大网站用得很普遍。当我们勾选了这个功能并且登录成功后,在一定的时间内再次登录就不用输入用户名和密码了,即使浏览器退出重新打开也是如此。
本文会实现一个基本的remember me功能,并且简单分析下它的实现原理。
分布式下必备神器之分布式锁
今天这篇文章我们来聊聊在分布式环境下的一个神兵利器——分布式锁!在看这篇文章的时候,默认大家对锁已经了解了,如果不了解的朋友可以去翻翻公号前面的文章,有很多篇详细介绍了锁的一些知识。
写这篇文章的主要原因是之前星球中有朋友说面试中被问的频率有点高,虽然知道分布式锁是什么,但是还是不能很好的说出来,这篇文章就是帮助大家好好梳理一下分布式锁的原理,希望对大家有帮助。
另外欢迎到 Java 极客技术知识星球中,我们一起煮酒论技术~