能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
能力说明:
基本的计算机知识与操作能力,具备Web基础知识,掌握Web的常见标准、常用浏览器的不同特性,掌握HTML与CSS的入门知识,可进行静态网页的制作与发布。
专注于Java领域的佛系UP主。 口号: 天下代码一大抄,抄来抄去有提高,看你会抄不会抄。
前面我们学习了如何开发mybatis查询,本次我们目标: 针对Mysql数据库实现动态修改sql的能力,增加上limit的查询限制。
Mybatis 中的插件都是通过代理方式来实现的,通过拦截执行器中指定的方法来达到改变核心执行代码的方式。举一个列子,查询方法核心都是通过 Executor来进行sql执行的。那么我们就可以通过拦截下面的方法来改变核心代码。基本原理就是这样,下面我们在来看 Mybatis 是如何处理插件。
1. Mybatis是如何整合进Spring中的 - Spring如何知道哪些接口是Mapper接口的? - Mapper接口是如何变成Spring Bean的? 2. Spring在哪里声明的SqlSession的实现逻辑? 3. Spring中声明式事务的实现方式是怎样的? 4. Spring中如何处理嵌套事务的? 5. Spring中事务的传播方式是如何实现的?
Java JDK中提供了标准接口`Connection`,不同的数据库驱动负责具体的实现。后面无论是`Spring`还是`Mybatis`对事务的处理,无论怎么的封装,最终究其到底都是由`Connection`来提供的能力。
MyBatis 对缓存的设计是非常巧妙的。花样很多,但却不是真的花样。因为`Mybatis`只是对 `Map`数据结构的封装, 但是却实现了很多挺好用的能力。 如果单单从设计模式上的角度来,其实就是典型的装饰器模式, 装饰器模式其实并不难,所以我们不讲设计模式, 本篇文章我们来看看`Mybatils` 缓存设计巧妙的点。
MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。本篇文章,小编将会在最短的时间呢,通过观察源码来深刻了解Mybatis的 一级二级缓存;然后在说如何定制。
前面我们知道了Mybatis是如何进行代理的, 但是最终 `PlainMethodInvoker` 中是如何将参数转组装成Sql,并执行处理Sql返回值的地方还都没看到。本篇我们就带着如下三个问题开始我们的探索吧。
Mybatis中Mapper一般只是一个接口, 那么为什么能执行数据操作的呢? 那肯定是基于代理没得说。在了解Mybatis如何实现代理 前, 我们先大概看下它的架构是什么样的, 对这些关键的类有个大概的认识, 知道它所处的位置在哪里。
前面我们知道Mybatis的解析原理,知道了在 `Configuration` 、`MapperBuilderAssistant` 出现了很多核心的类。 正是由这些类来实现了,Mybatis的核心功能。所以要想完全搞懂 Mybatis,这些类就必须要进行深入的研究,废话不多少,直接就开始吧。
在上一篇的代码中,我们看到了一个非常重要文件,这里我们先来人肉分析看,然后看下代码是如何解析的,毕竟代码也是人写的。 思路决定出路,我们如果有思路,然后在看源码会更加的具有分析的能动性。
最早使用Mybatis是在2016年,那时候学习只会用,根本不知道什么原理,不懂的原理的地方只能死记。搭建一个小的demo放到github,工作需要的时候就直接复制黏贴,虽然也能满足工作需要但是总感觉到不带劲。在找到工作后大概2017年时候就对Mybatis的源码进行了阅读,其实相对于Dubbo,Spring,之类的源码Mybatis的源码还是非常简单的,现在也经常推荐给刚开始学习看源码的同学。 早在2019年小编就开始写Mybatis的博客了,那时候博客主要还是自己学习为主,现在回头看看,感觉有些粗糙。这里准备回炉重造一波。将原博客进行优化。对Mybaits的核心功能,核心处理类重新重构下博
图床其实就是放图片的空间,我们在网络上浏览的图片,其实都存放在网络的服务器上的,比如qq空间,csdn等等网站。 那么既然上面这些网站都已经给我们提供了图床,我们为啥还要自己搭建图床呢? 不知道大家有没有发现,我们在qq空间或者是csdn上传的图片。如果要在其他网站上去引用。这些平台会自动给你加了一个水印。
可以这样说,我们写的任何系统都离不开通讯,离不开网络编程,就没有现在我们发达的互联网世界。就没有什么分布式,没有什么微服务。所以由此可见网络编程是非常基础的知识。 个人如果想成长,想打破这种现状, 那么网络通信是一定要掌握的,当你掌握了这些,才算掌握了一点核心技术。当你掌握了这些,才能收获一些不一样的东西,看问题的维度又会有所提升。
天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄!从本篇开始后面的所有章节都是实战环节,每节一个小目标,最终我们实现完整的JavaRPC的框架,然后发布maven仓库,感兴趣的同学可以下载研究。
本篇文章的主要内容就是设计我们自己的通信协议及架构,可以这样说如果没有了本篇文章的内容,就不可能实现RPC。因为RPC的最基本要求就是能实现远程通信。本篇文章是讲述通信层的设计思路,
本系列文章的总体目标是从零实现一个RPC框架,我们将从TCP通信协议开始, 一步一步实操,将socket 二进制数据流一步一步变成Java可以认识的数据类型, 从而最终实现RPC远程通信,并可以集成在Spring中,同时也可以支持SpringBoot的自动化配置。最终我们会将项目发布到全球Maven仓库, 让大家都可以下载学习。
做为一名程序猿多多少少每天都在跟服务器打交道,尤其是后端的小伙伴,那么你是否也有这样的想法呢? 来看一下, 云服务器到底能做什么吧