![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 89
Java基础、容器、并发、框架
~一叶、
java、golang, devops, docker,
中间件、架构、系统设计、
方法论、思维模型
展开
-
理解JDBC/JPA/Mybatis/Hibernate
JPA全称Java Persistence API,为POJO提供持久化标准规范,可以通过注解或者XML描述【对象-关系】之间的映射关系,并将实体对象持久化到数据库中。JPA是一套ORM规范,Hibernate实现了JPA规范!Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。JDBC和JPA的区别不同标准:jdbc是数据库的统一接口标准;jpa是orm框架的统一接口标准。 用法区别:jdbc更注...原创 2022-05-11 09:54:31 · 894 阅读 · 0 评论 -
Dubbo框架
SpringCloud与Dubbo的区别两者都是现在主流的微服务框架,但却存在不少差异:初始定位不同:SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理 生态环境不同:SpringCloud依托于Spring平台,具备更加完善的生态体系;而Dubbo一开始只是做RPC远程调用,生态相对匮乏,现在逐渐丰富起来。 调用方式:SpringCloud是采用Http协议做远程调用,接口一般是Rest风格,比较灵活;Dubbo..原创 2022-05-11 09:47:18 · 560 阅读 · 0 评论 -
SpringCloud
Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。可以理解为它是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等操作,而 Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松..原创 2022-05-11 09:44:03 · 210 阅读 · 0 评论 -
SpringBoot
简介1.内置很多组件2.简化配置,自动配置Spring Boot是伴随着Spring4.0共同诞生的,它的目的就是简化spring的配置及开发,并协助开发人员可以整体管理应用程序的配置而不再像以前那样需要做大量的配置工作,它提供了很多开发组件,并且内嵌了web应用容器,如tomcat和Jetty等。其目的便是使我们的开发变得简化并且能大幅度提高开发人员的开发效率,为了简化Spring功能的配置我们可以引入或启动我们需要的Spring功能。这样做的好处就是避免开发人员过多的对框架的关注,而把更多的原创 2022-05-11 09:41:49 · 139 阅读 · 0 评论 -
Spring MVC / Webflux
SpringMVC流程前端控制器 DispatcherServlet:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度 处理器映射器 HandlerMapping:根据请求的URL来查找Handler 处理器适配器 HandlerAdapter:负责执行Handler 处理器 Handler:处理器,需要程序员开发 视图解析器 ViewResolver:进行视图的解析,根据视图逻辑名将ModelAndView解析成真正的视图(view)..原创 2022-05-11 09:39:56 · 311 阅读 · 0 评论 -
Spring核心组件和启动流程
1.Spring常用七大模块Spring Core:框架的最基础部分,提供 IoC 和DI 服务,对 bean 进行管理。 Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、EJB、电子邮件、国际化、定时任务等) Spring AOP:集成了所有AOP功能 Spring Web:提供了基础的 Web 开发的上下文信息,提供对常见框架如Struts2的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器 Spring原创 2022-05-11 09:37:22 · 224 阅读 · 0 评论 -
Netty基础及原理
为什么使用Netty,不直接用nio做得更多1.支持常用的应用层协议,如http、websocket2.解决了黏包半包问题、编解码3.支持流量控制等定制化功能(流量控制、黑名单等)4.具有完善的异常处理功能(网络闪断、拥塞等)做得更好1.更优秀更强大的工具和apiByteBuf - ByteBuffer (单个postion到双执行,不用每次flip,各种零拷贝)FastThreadLocal - ThreadLocal(使用index直接分配索引,避免hash冲..原创 2022-05-10 23:11:41 · 401 阅读 · 0 评论 -
Java并发
volatileJava内存模型抽象了线程执行时CPU多级缓存与主存的关系,在当前的 Java 内存模型下,线程可以把变量保存本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。(Java 内存模型主要目的是为了屏蔽系统和硬件的差异,避免一套代码在不同的平台下产生的效果不一致)所以引入了volatile变量,使用时必须从主存加载,赋值时必须写回主存。volatil..原创 2022-05-08 19:30:07 · 135 阅读 · 0 评论 -
Tomcat主要结构和启动流程
Tomcat最重要的两部分——连接器(Connector)、容器(Container)。连接器负责对外交流,容器负责内部处理。单独的连接器或者容器都不能对外提供服务,需要把它们组装起来才能工作,组装后这个整体叫作Service组件。Service本身没有做什么重要的事情,只是在连接器和容器外面多包了一层,把它们组装在一起。Tomcat内可能有多个Service,通过在配置多个Service,可以实现通过不同的端口号来访问同一台机器上部署的不同应用。Tomcat为了实现支持多种I/O模型和应用层协议,..原创 2022-05-08 19:46:55 · 1175 阅读 · 0 评论 -
Tomcat是干嘛的
0.为什么来了解它(背景-冲突-疑问-答案)作为go/c++的程序员,学习java后,后端部署web应用基本都会碰到tomcat,查阅后说是web容器,跟nginx也不是一个品类,一下子还不太好理解这玩意儿。以往的认知中(go/c++)通常后端服务不是直接启动就可以了吗,启动后应用程序监听端口接收协议请求,处理请求后返回,为什么到了java还要一个web容器???仔细研究后发现,从设计解偶考虑,才有了web容器(tomcat/jetty等),具体逻辑看以下步骤:1.没有web容...原创 2022-05-08 19:43:17 · 3374 阅读 · 0 评论 -
《深入拆解Tomcat & Jetty》笔记
极客时间《深入拆解Tomcat & Jetty》笔记03_你应该知道的Servlet规范和Servlet容器1.HTTP服务器怎么知道要调用哪个Java类的哪个方法呢。最直接的做法是在HTTP服务器代码里写一大堆if else逻辑判断,HTTP服务器的代码跟业务逻辑耦合在一起了,如果新加一个业务方法还要改HTTP服务器的代码。2.那该怎么解决这个问题呢?面向接口编程是解决耦合问题的法宝,于是有一伙人就定义了一个接口,各种业务类都必须实现这个接口,这个接口就叫Servlet接口..原创 2022-05-08 19:37:42 · 385 阅读 · 0 评论 -
Java容器/集合
注意:juc并发容器,以及Vector/Stack/HashTable,都只是单一操作保证线程安全,但是多线程同时复合操作是有安全性问题的。比如:v.remove(v.size() - 1) 是复合操作,可能A线程执行了删除,B线程拿到的size已经变了,导致越界异常;for循环访问同理。interface ListArrayList LinkedList Vector CopyOnWriteArrayListVector(数组,已不建议使用)[线程安全]所有公有方法..原创 2022-05-08 19:24:11 · 394 阅读 · 0 评论 -
《深入理解java虚拟机》笔记
====================================第二部分 自动内存管理机制====================================第2章 Java内存区域与内存溢出异常1.运行时数据区域程序计数器 [线程独立] 虚拟机栈、本地方法栈(有的虚拟机是合二为一) [线程独立] 元数据区(类、方法、静态变量、常量) jdk1.7及之前称为方法区 堆区 直接内存2.HotSpot虚拟机对象揭秘对象创建过程:类加载检查 ->原创 2022-05-08 19:19:34 · 186 阅读 · 0 评论 -
《Thinking in java》笔记
《thinking in java》引发的思考关于java面向对象的思考——抽象、并发thinking in java中1.1抽象过程的描述问题空间——>解空间的映射(所有问题最终都是列表,所有问题最终都是算法,面向对象)对象是现实世界的抽象,到解空间中很好表述难点:如何在问题空间的元素 到 解空间的对象之间创造一一对应的映射java中的不足——interface、abst?、 (1.必须先定义最高层[或者使用适配器方式] 2.类似的类如何高效的相互复用[比如...原创 2022-05-08 19:17:26 · 878 阅读 · 0 评论