- 博客(52)
- 收藏
- 关注
原创 起底spring data JPA全部增删改查(CRUD)方式
起底spring data JPA全部增删改查(CRUD)方式前言Repository方式标准方法自定义方法CriteriaQuery方式Entity管理方式JPQL(HQL)方式原生SQL方式总结前言 本文会按照封装的等级的高低,介绍spring data JPA为数据库基本操作(增删改查,CRUD)提供的所有方式。如果读者需要手撸一遍,手边又没有现成项目能够上手,参考spring data JPA的简单入门可以帮助你搭建一个简单的demo。本文同时也是s
2020-07-14 13:09:28 2300
原创 AST抽象语法树的基本思想
AST抽象语法树的基本思想前言AST概述AST结构AST解析转换生成前言 在阅读java ORM框架spring data jpa的源码时,发现Hibernate(spring data jpa依赖Hibernate核心代码)在底层使用了AST抽象语法树,将hql转换为sql,这激发了我研究AST的兴趣。AST概述 AST(Abstract Syntax Tree)抽象语法树多用作编程语言的分析和转换,C语言
2020-06-27 12:28:44 4430 1
原创 Spring Boot 前世今生和整体架构分析
依托于Servlet的Spring Boot spring boot是目前java微服务广泛使用的Web框架,本身内部的核心模块是嵌入的tomcat和spring mvc。 spring mvc设计上遵循Servlet标准,是在标准Servlet接口的基础上实现后续的请求处理和应答。一个Servlet本身并不能独立运行,需要依托外部Servlet容器加载到应用中才能工作。tomcat就是servlet容器中的佼
2020-06-21 15:20:20 1348
原创 Spring Data JPA的简单入门
前言 spring data JPA是spring团队打造的sping生态全家桶的一部分,本身内核使用的是hibernate核心源码,用来作为了解java持久层框架基本构成的样本是再好不过的选择。最近闲来无事,构建了一个demo工程,用来阅读spring data JPA源码,这对于宏观了解持久层框架的基本工作、微观分析spring data JPA的原理和优缺点、避免使用过程中采坑,将会有一定的帮助。基本工程搭建 &nb
2020-06-13 21:38:28 496
原创 java数据库持久层框架基础:为什么不是JPA?
mybatis和JPA 关于java持久层框架的故事的起源,还是要归结到java语言JDBC(Java Database Connectivity)设计上的不够成熟。jdbc底层使用sql操作关系型数据库,这种方式本身和java“一切皆对象”的设计理念格格不入。如果书写的sql语句和某特定类型的数据库强相关,也会导致应用的移植性下降。 这个时候JPA和Mybatis应运而生。
2020-05-30 14:06:48 763
原创 Java数据库持久层框架基础:jdbc原理和使用综述
Java数据库持久层框架基础:jdbc原理和使用综述前言jdbc基础架构jbdc的使用jdbc的主要接口驱动连接连接池会话Statement结果集ResultSet前言 目前java web项目流行的各种数据库持久层框架,如mybatis以及mybatis plus等mybatis各种变体、ORM框架包括Hibernate、spring data JPA等,底层的数据库访问都是依托于jdbc。虽然成熟项目中使用上述的持久层框架,并不能感知到jdbc的存在,但
2020-05-15 14:26:53 978
原创 spring mvc 常见拦截过滤处理器Interceptor、Filter、Converter等对比
spring mvc 常见拦截过滤处理器Interceptor、Filter、Converter等对比前言Filter原理使用Intercepter原理使用Converter原理使用Binder前言 spring mvc提供了完整的服务框架,能够对web请求进行预处理,包括参数解析、错误校验等。但是有些时候,开发者需要自行对请求进行预处理,比如设置......
2020-05-05 14:30:55 1035
原创 编程观:从黑客帝国谈起
一 在电影黑客帝国中,网络黑客尼奥发现自己身处的看似正常的世界实际上被某种力量控制。他在网络上探求真相时,遇到了黑客组织的崔妮蒂和组织首领墨菲斯,得知他身处的世界实际上是由一个名为“矩阵”的人工智能系统构造的虚拟世界,而现实中的每个人则被豢养在培养液中,只是意识被接入到了虚拟世界。尼奥从此走上了抗争“矩阵”的道路。黑客帝国1海报 ...
2020-04-25 13:48:19 867 2
原创 spring boot原理分析(九):上下文Context即世界2
spring boot原理分析(九):上下文Context即世界2前言上下文准备上下文刷新附:前言 上下文Context可以说spring boot中最重要的一个概念,不仅包含了tomcat和spring mvc的启动和管理,还对spring mvc原有模式中的bean注册进行了大幅简化,理解Spring boot的Context可以说是理解spr......
2020-04-12 15:34:52 1688
原创 spring boot原理分析(八):上下文Context即世界1
前言 上下文Context可以说spring boot中最重要的一个概念,不仅包含了tomcat和spring mvc的启动和管理,还对spring mvc原有模式中的bean注册进行了大幅简化,理解Spring boot的Context可以说是理解spring boot的基础。 原理分析(六)介绍了s......
2020-04-05 13:45:49 2301
原创 spring boot原理分析(七):spring boot运行时事件的监听
spring boot原理分析(七):spring boot运行时事件的监听前言事件事件基础定义事件的类型事件的处理注册一个事件监听的处理器事件监听的处理器如何处理事件ApplicationContextEvent事件监听实例前言 在原理分析(六)介绍spring boot启动流程中涉及到的组件或者模块的准备,事件监听器就是其中的一块。事件监听器的......
2020-03-29 14:26:51 1265
原创 设计模式中常用的几个“套路”
Gof的设计模式一共有23种模型,这23种模型只能算是一些情景下的通用解法,是离散的而非系统的解决方案,所以在理解、记忆和应用时,如果不是花费足够的时间熟悉和使用这些模型,就难以准确地使用合适的模型或者模型的变体解决开发中的问题。不过还好,这个23种模型中,存在着更加底层的常用套路,能够被提取出来,可以帮助理解和掌握设计模式的精髓。接口 ...
2020-03-22 17:26:46 346
原创 spring mvc @RequestBody @ResponseBoy(@RestController)原理解析
spring mvc @RequestBody @ResponseBoy (@RestController)原理解析前言作为参数解析器适配参数解析器参数解析器运作作为返回值处理器适配返回值处理器返回值处理器运作后记前言 在spring mvc原理(十一)和(十二)介绍了spring mvc如何使用HandlerAdpter对不同类型的请求进行适配处......
2020-03-15 10:50:38 1438
原创 spring boot原理分析(六):spring boot应用启动流程综述
前言 在原理分析(一)已经整体概括了spring boot实现,spring boot主要是在已有Servlet容器+Servlet模板的基础上进行整合。具体来说包括三种,tomcat + spring mvc的模式是其中的一种,另外两种分别是Undertow+Servlet和Jetty+Servlet的模式。另外,大部分的外部模块的加入都是使用sp......
2020-03-01 15:00:58 581
原创 【硬核】“需求”衍生了社会?
社会是什么?这似乎是个很无趣的问题。看到这个问题,很多人第一反应可能并不是思考“社会是什么”,而是会反问为什么需要理解"社会是什么"。对于这两个问题,我既不能准确地告诉你“社会是什么”,也不能确切的表述出明白”社会是什么“有什么价值,但我知道很多人在生活中会有如下的疑问:怎么样才能致富?为什么做这个能挣钱?行业未来的前景是什么?。第一个问题应该困扰了...
2020-02-22 16:17:01 581
原创 spring boot原理分析(五):依赖包中bean自动配置之Mybatis和自定义包配置
前言 原理分析(三)介绍了spring boot项目中自带的外部依赖的自动化配置,比如jdbc、redis、MongoDB、Kafka、amqp等比较常见的外部依赖项目。除此之外,还有一些不太常见的项目,或者仅仅是因为没有被纳入到spring boot优待范畴中的项目,它们的bean自动化配置也是需要考虑的方面。再进一步,有些项目模块甚至是我们自己内......
2020-02-20 10:50:10 1370
原创 tomcat + spring mvc原理(十二):spring mvc请求的适配处理和返回2
tomcat + spring mvc原理(十二):spring mvc请求的适配处理和返回2前言处理流程request转换获取WebDataBinderFactory创建ModelFactory和初始化model方法和方法的参数参数解析与方法调用参数解析的分析参数解析器的管理参数解析器的分类设置返回值返回值处理器的分类前言 HandleAdapt......
2020-02-12 16:26:39 693
原创 tomcat + spring mvc原理(十一):spring mvc对请求的适配处理和返回1
tomcat + spring mvc原理(十一):spring mvc对请求的适配处理和返回1前言HandlerAdapter的整体结构处理请求的具体实现参数格式可变的HandlerMethod的处理父类AbstractHandlerMethodAdapterRequestMappingHandlerAdapter处理流程简述前言 原理九和原理十......
2020-02-12 15:53:15 552
原创 tomcat + spring mvc原理外传:spring mvc与前端的纠葛
tomcat + spring mvc原理外传:spring mvc与前端的纠葛前言spring mvc的设计思想spring mvc的前后端一体化模式spring boot + Thymeleaf的demospring mvc专职后端模式spring mvc的RESTful Web服务前言 本来准备继续分析spring mvc的核心组件Handl......
2020-01-30 18:51:57 411
原创 spring boot原理分析(四):项目依赖包中bean的自动配置2之tomcat属性配置
前言 原理分析(三)因为偷…额,为了保持结构上的独立性,只介绍了spring boot如何加载了自动配置类,并没有分析自动配置类加载bean和配置环境的原理。这个点才是spring boot改进tomcat + spring mvc框架繁琐配置问题的最终关键所在。不过,由于自动配置类过多,不能一一列举,所以这里只会将比较典型而且对分析后面代码有意义的......
2020-01-19 16:07:50 817
原创 “回调”和java中的LambdaSafe类
在阅读spring boot源码时发现了WebServerFactoryCustomizerBeanPostProcessor类中有LambdaSafe.callbacks(WebServerFactoryCustomizer.class, getCustomizers(), webServerFactory) .withLogger(We...
2020-01-11 18:04:14 628 1
原创 spring boot原理分析(三):项目依赖包中bean的自动配置1
spring boot原理分析(三):项目依赖包中容器的自动配置1前言自动配置注解@EnableAutoConfiguration环境上下文:基础包配置自动化配置类的导入获取自动配置类的依赖信息获取能够加载的自动配置类前言 spring boot原理分析(二)主要是介绍了@SpringBootConfiguration注解所包含的@SpringBo......
2020-01-11 17:47:00 1744
原创 spring boot原理分析(二):项目内bean的注入
按照spring boot原理分析(一)规划,第一部分先分析spring boot的环境自动配置、加载所需要的bean是如何实现的。 根据bean的所属项目,spring boot的bean的加载分为两种:一类是项目中定义的、启动类所在包下的bean,比如自定义的@Controller、@Service......
2020-01-06 13:41:29 1941
原创 spring boot原理分析(一):spring boot原理综述
spring boot支持三种Servlet容器+Servlet的模式,tomcat + spring mvc的模式只是其中的一种,另外两种分别是Undertow+Servlet和Jetty+Servlet。我主要在tomcat + spring mvc的架构下开发,因此关于spring boot的原理的探究也会限定在这个模式。 &nbs...
2020-01-06 13:10:17 706
原创 tomcat + spring mvc原理(十):spring mvc如何将请求投送到Controller中的方法2
tomcat + spring mvc原理(十):spring mvc如何将请求投送到Controller中的方法2前言AbstractHandlerMethodMapping和其子类匹配条件AbstractHandlerMethodMapping及其子类初始化AbstractHandlerMethodMapping匹配请求前言 原理九介绍了Han......
2020-01-01 15:55:10 832
原创 最全配置Arduino IDE的esp8266开发环境教程
最全配置Arduino IDE的esp8266开发环境教程前言正常安装流程正常流程的安装原理手动安装原理判断安装成功百般无奈的最终解决方案前言 Arduino IDE除了可以编写在Arduino上运行的程序,还可以配置成esp8266的开发环境,这样就可以直接在Arduino IDE上开发esp8266的固件程序。但是正常流程安装非常慢,还会频繁报......
2019-12-29 14:57:15 24151 15
原创 tomcat + spring mvc原理(九):spring mvc如何将请求投送到Controller中的方法1
tomcat + spring mvc原理(九):spring mvc如何将请求投送到Controller中的方法 (一)前言HandlerMapping组件的整体架构接口标准和AbstractHandlerMapping前言 在原理七中列举了spring mvc的九大组件,分别是:HandlerMapping:处理器映射,寻找对应Interc......
2019-12-27 15:06:32 1256
原创 Maven插件开发引导--第一个maven插件项目
Maven插件开发引导--第一个maven插件项目前言重要官方提示:插件命名规范和Apache Maven商标你的第一个插件命令行创建你的第一个mojoA Simple mojopom配置:构建一个插件执行你的第一个Mojoidea创建生成插件项目引用插件前言 因为最近觉得mybatis自动生成代码的功能很有用且有趣,就打算研究一下maven插件。...
2019-12-23 14:03:07 296
原创 操作系统核心原理概述
操作系统概述 操作系统是在硬件汇编级基础上的软件抽象,相应的,对于硬件汇编级的CPU、多级存储以及外设IO都有自己的程序抽象模型。操作系统向下管理不同的计算机硬件,所谓的管理即对不同硬件的有相应的软件模型,同时通过控制各个软件模型的协作和通讯,来控制各个硬件组件的协作和通讯。操作系统向上为应用软件提供控制硬件组件的程序模型接口,其实是应用软件开发过程...
2019-12-19 15:37:41 351
原创 tomcat + spring mvc原理(八):spring mvc对请求的处理流程
tomcat + spring mvc原理(八):spring mvc对请求的处理流程前言FrameworkServlet对请求的处理DispatcherServlet对请求的处理前言 原理七讲了spring mvc整体的初始化、DispatcherServlet的继承结构和spring mvc组件的初始化。网站服务器最重要的还是提供网络服务,所以......
2019-12-16 14:20:37 977
原创 tomcat + spring mvc原理(七):spring mvc的Servlet和九大标准组件的静态结构与初始化
tomcat + spring mvc原理(七):spring mvc的Servlet和九大标准组件的静态结构与初始化前言tomcat中Servlet的加载Servlet的实现Servlet接口GenericServlet和HttpServletHttpServletBean和FrameworkServletDispatcherServlet前言 ......
2019-12-11 13:41:49 607
原创 tomcat + spring mvc原理(六):tomcat WAR包的部署与加载
tomcat + spring mvc原理(六):tomcat WAR包的部署与加载前言监控的启动原理状态监听部署项目前言 单独部署的tomcat服务器在运行中,当开发人员或者运维人员将开发工程的war包部署到服务目录时,服务器会自动进行war包的解包和类的加载运行,整个spring mvc项目就能在服务器上工作了。本文作为tomcat+sprin......
2019-12-09 10:07:59 2998
原创 charles对安卓和苹果ISO抓包--解决http协议包乱码
Charles用来截包非常方便,而且可以通过代理的方式截取手机上的发包。这两天有需求试验了一下,发现网上资料不是特别完整,折腾了一段时间,所以整理下来给大家排雷。先要信任Charles的证书会跳出钥匙串,选择charles证书全部信任。代理设置勾选代理,填写端口,默认8888就行。手机设置首先手机和电脑要连上同...
2019-12-05 11:54:23 673
原创 tomcat + spring mvc原理(五):tomcat Filter组件实现原理
tomcat + spring mvc原理(五):tomcat Filter组件实现原理前言:Wrapper中Pipeline的收尾Filter的基本实现FilterChain的实现前言: 原理(四)中假装结束了tomcat消息处理的流程分析,其实偷偷留了私货–Filter的这个部分依然属于tomcat网络消息处理的一个步骤。Wrapper中Pi......
2019-12-03 22:09:40 1024
原创 tomcat + spring mvc 原理(四):tomcat网络请求的监控与处理2
tomcat + spring mvc 原理(四):tomcat网络请求的监控与处理前言:Container传递请求的基本原理Container传递请求的具体实现前言: 原理(三)主要讲了Connector中的容器结构、容器配置和请求监听和请求到达后在Connector中的流转,直到请求进入Container的处理边界。这篇主要是接着原理(三)继续......
2019-12-02 20:01:07 849
原创 tomcat+spring mvc 原理(三):tomcat网络请求的监控与处理1
tomcat+spring mvc 原理(三):tomcat网络请求的监控与处理前言:请求处理的准备Connector处理请求Connector内部结构请求处理的动态实现前言: tomcat + spring mvc 原理(一):tomcat原理综述总结了tomcat的整体运作原理、静态容器架构和容器配置,tomcat + spring mvc 原...
2019-12-02 10:45:34 1255
原创 外设IO原理
外设IO原理外设一般是指除了CPU、内存之前的其他接入到计算机的设备,比如硬盘、光驱、鼠标、键盘、打印机等。一般软件编程领域的同学关心的I/O,是I/O硬件提供给软件的接口,如硬件能够接收的命令、它能够完成的功能以及它能够报告的错误。IO设备分类 I/O设备大概分为两种:块设备和字符设备。 块设备:...
2019-11-23 09:18:43 1134
原创 tomcat + spring mvc原理(二):tomcat容器初始化加载和启动
@[TOC](tomcat + spring mvc原理(二):tomcat容器动态加载) tomcat + spring mvc 原理(一):tomcat原理综述比较详细的叙述了tomcat容器的静态结构和容器的配置,从tomcat动态运行来讲,我也在原理(一)中简单论述了:显然,这种运作模式要求:tomcat需要有监视指定目录,一旦有新的wa...
2019-11-22 17:08:05 1824
原创 bytebuddy解决spring AOP切面同一个类嵌套方法不生效问题
bytebuddy解决spring AOP切面同一个类嵌套方法不生效问题 sping AOP切面注解使用中的坑中详细介绍了spring AOP切面注解的同一个类嵌套方法不生效问题和产生的原因,这篇实际是为了完美的解决打印方法运行时间的问题。 bytebuddy是字节码生成库,可以生成和操作java的字节......
2019-11-19 11:27:16 6002 10
原创 sping AOP切面注解使用中的坑--同一个类中嵌套方法注解不生效
sping AOP切面注解使用中的坑–同一个类中嵌套方法注解不生效 在开发过程中,监控方法运行时间,然后获取程序运行的瓶颈,是一个常见的优化步骤。写一个spring切面实现的注解来实现函数运行时间的监控看上去是一个比较直接的解决方案。 使用spring AOP实现方法运行时间的日志打印,其实比较简单:......
2019-11-19 11:23:53 5569 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人