![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 83
xueshanfeitian
这个作者很懒,什么都没留下…
展开
-
FeignClient的调用过程
前言小猿对于远程调用一直感到非常神秘,今天小猿就视图解析一下远程调用的整个过程。调用过程1、在保证服务没有错误的前提下开始远程调用,首先程序会进入ReflectiveFeign中的invoke方法,并执行invoke函数中的先决条件验证,如果说toString方法或者hashCode方法一样再或者说是统一FeignClient,就不继续往下执行。2、构建模板并开始调用远程方法并对放回结果进行解码如果第一次请求失败,那么会启动重试机制,重试默认最大次数为53、记录相关日志,并调用client原创 2022-03-20 17:01:53 · 4079 阅读 · 2 评论 -
典型传统项目部署实战(jdk,tomcat,mysql,nginx实战)
引言为了加强基础知识的复习,巩固学习成果,小猿将最近上线的公司项目重新部署一遍并记载整个过程,并说明要点,为传统项目部署做个综合案例以便做参考。jdk安装mysql安装tomcat安装配置nginx安装...原创 2021-10-25 16:11:15 · 3226 阅读 · 2 评论 -
mysql学习笔记(五)图解事务传播行为
引言本篇博文小猿主要是针对事务的应用,而事务的传播行为有7类,这7种传播行为各有不同的应用场景,以下小猿将论述7种传播行为各自的特点函数关系REQUIED/** * Support a current transaction, create a new one if none exists. * Analogous to EJB transaction attribute of the same name. * <p>This is the default setting原创 2021-04-17 12:13:56 · 418 阅读 · 0 评论 -
springcloud 学习笔记(五)Spring Cloud Config分布式配置中心
缘起在分布式系统中,由于服务数量非常多,配置文件分散在不同的微服务项目中,管理不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库(GitHub、码云)。使用Spring Cloud Config配置中心后的架构如下图:创建远程配置仓库配置文件的命名方式:{application}-{profile}.yml 或 {application}-{profile原创 2021-04-09 22:21:45 · 132 阅读 · 0 评论 -
springcloud 学习笔记(四)微服务之springgateway
引言前面章节中小猿都采用springcloud来搭建微服务,但是不够完美,消费者和服务提供者之间的调用往往是将地址暴露出来,这就造成安全隐患,为了解决这一隐患,springgateway就出世了。什么是springgatewaySpring Cloud Gateway是Spring官网基于Spring 5.0、 Spring Boot 2.0、Project Reactor等技术开发的网关服务。Spring Cloud Gateway基于Filter链提供网关基本功能:安全、监控/埋点、限流等。原创 2021-04-09 13:12:17 · 9631 阅读 · 0 评论 -
springcloud 学习笔记(三)微服务之feign组件的使用
引言在前一节内容中我们采用了ribbon的负载均衡功能,大大简化了远程调用时的代码。但是下面的拼接代码可能会频繁的出现,如何解决这一问题是我们讨论的重点。String url = "http://userservice/userController/queryById/"+id;UserDomain userDomain = restTemplate.getForObject(url, UserDomain.class);feigin的诞生就帮大家解决了这一问题,fegin自动根据参数拼接http原创 2021-04-07 21:05:36 · 238 阅读 · 3 评论 -
springcloud 学习笔记(二)springcloud工程基础
引言上篇文章中小猿说明了分布式服务必须面临的问题,要解决这些问题,我们就引入了注册管理中心,目前较为常见的注册管理中兴有Eureka、Zookeeper、Nacos,zookeeper小猿已经使用过了,他是RPC框架dubbo对应注册中心,而springcloud微服务比较流行的注册中心有Nacos,Eureka,下面我们先来学习Eureka。Eureka注册中心DevOps的思想是系统可以通过一组过程,方法或系统,提高应用发布和运维的效率,降低管理成本,而Eureka的设计也要遵从DevOps的思想原创 2021-04-07 14:12:06 · 267 阅读 · 0 评论 -
springcloud 学习笔记(一)分布式服务面临的若干问题
系统架构演变什么是springcloud原创 2021-04-03 13:16:22 · 173 阅读 · 0 评论 -
spring温习笔记(八)springboot 资源整合
lombok什么是lombokProject Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your原创 2021-03-21 23:46:31 · 209 阅读 · 0 评论 -
spring温习笔记(七)springboot工程基础
什么是springbootSpring Boot是一个便捷搭建 基于spring工程的脚手架;作用是帮助开发人员快速搭建大型的spring 项目。简化工程的配置,依赖管理;实现开发人员把时间都集中在业务开发上。原创 2021-03-21 17:00:49 · 223 阅读 · 5 评论 -
mybatis前因后果(三)mybatis 多表查询
多表查询原创 2021-03-04 13:48:11 · 112 阅读 · 0 评论 -
mybatis前因后果(二)mybatis的dao层实现
引言传统mybatis dao层实现UserDao接口public interface UserDao { List<User> findAll() throws IOException;}UserDao实现public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException { InputStream resourceAs原创 2021-02-27 17:06:17 · 194 阅读 · 0 评论 -
mybatis前因后果(一)mybaitis前因
引言原始jdbc操作直接进行裸操作public class JdbcTest { public static void main(String[] args) throws ClassNotFoundException { Connection connection = null; Statement statement = null; try { Class.forName("com.mysql.jdbc.Driver"原创 2021-02-26 10:26:05 · 119 阅读 · 0 评论 -
SpringMVC 温习笔记(四)springMVC框架之SpringMVC拦截器和异常处理机制
拦截器的概念Spring MVC的拦截器类似于Servlet中的Filter,一般用于处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。拦截器和过滤器的区别从以下两个方面进行区分。使用范围filter是servlet规范中的一部分,任何javaWeb工程中都可使用。intercepter是SpringMVC框架自己的,只原创 2021-02-24 10:04:58 · 128 阅读 · 0 评论 -
SpringMVC 温习笔记(三)springMVC框架之文件上传
文件上传说起文件上传小猿不经意间想起文件的输入和输出流和网路编程。其实springMVC在一定程度上是集成了网络socket编程,原创 2021-02-22 12:01:17 · 98 阅读 · 0 评论 -
SpringMVC 温习笔记(二)springMVC框架
什么是springMVC原创 2021-02-08 14:35:49 · 159 阅读 · 0 评论 -
SpringMVC 温习笔记(一)服务器启动和组件解析
spring 组件扫描解析首先小猿先引入一张图片,该图片可以全面的诠释自定义组件的一个运行过程:整个过程中最为核心的思想就是tomcat服务器启动的时候可以直接通过监听器去加载spring配置文件applicationContext.xml文件,以这种方式,我们可以借助tomcat服务器加载监听器的过程,可将service层,dao层的各类bean纳入到spring容器中来进行管理,这样就使得整个启动过程变得非常完美,总之自定义监听类的本质作用是将tomcat容器初始化和spring容器初始化紧密的链原创 2021-01-30 14:11:25 · 116 阅读 · 0 评论 -
Spring 温习笔记(六)spring 声明式事务编程
引言在学习事务之前首先需要学习mysql的事务相关知识,对于事务编程不是很了解的各位大猿请参考小猿的文章mysql学习笔记(四)mysql事务复习。该文章中详细讲述了有关事务的知识,对于事务而言,有以下几种隔离级别。- ISOLATION_DEFAULT- ISOLATION_READ_UNCOMMITTED- ISOLATION_READ_COMMITTED- ISOLATION_REPEATABLE_READ- ISOLATION_SERIALIZABLE上文中几种事务的隔离级别的区别原创 2021-01-29 10:18:55 · 99 阅读 · 0 评论 -
Spring 温习笔记(五)springjdbcTemplate基本使用
什么是springjdbcTemplatespringjdbcTemplate 是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。通常我们可以理解其为操作jdbc的一个强大工具,如何使用springjdbcTemplate首先需要建立依赖库,即导入jar包坐标<dependencies> <dependency> <groupId>mysql</groupId>原创 2021-01-27 15:11:05 · 101 阅读 · 0 评论 -
Spring 温习笔记(四)spring AOP
AOP 相关概念Spring 的AOP (Aspect Oriented Programming)实现底层就是对上面的动态代理的代码进行了封装,封装后我们只需要对需要关注的部分进行代码编写,并通过配置的方式完成指定目标的方法增强。Target(目标对象):代理的目标对象Proxy (代理):一个类被 AOP 织入增强后,就产生一个结果代理类Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点Pointcut(切入原创 2021-01-27 10:36:52 · 101 阅读 · 0 评论 -
Spring 温习笔记(三)动态代理
引言上两章小猿复习的是有关springIOC的有关内容,其实在本质上来讲,什么是IOC,IOC(inverse of control)可以通俗的理解程序在运行过程中,我们将更多的实例创建权交由spring容器来管理,这种管理能较大程度上减少硬编码导致的耦合,提高代码质量。这是java编程中的核心思想之一。然而接下来问题又出现了,当我们需要修改某项功能比如代码增强,是直接对原有类进行重新编写吗?答案肯定是否定的,因为在一个项目中我们是不能轻易去改动一个类的内容,如果直接改动可能会导致跟该类有联系的类都需原创 2021-01-26 10:21:44 · 77 阅读 · 0 评论 -
Spring 温习笔记(二)Spring与注解
注解注解是大猿们在快速开发项目中必不可少的神器,spring的注解分为原始注解和新注解,数据源考虑现实世界中的mobike 和ofo,他们就可以形象的比喻成为两种不同的"自行车源",数据源实现的基本思想亦复如前,如c3p0,druid是当先最为流行的数据源。spring与数据源当在项目中使用数据源时,需要将控制数据源的权限交给spring,可通过spring来全面管理数据源。...原创 2021-01-25 11:45:14 · 115 阅读 · 0 评论 -
Spring 温习笔记(一)Spring框架的概述及基本使用方法
Spring 概述什么是SpringSpring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。提供了展现层 SpringMVC和持久层 Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架Spring 发原创 2021-01-21 13:59:48 · 239 阅读 · 0 评论 -
服务器温习笔记(五)filter&Listener
filter什么是filter生活中的过滤器: 净水器,空气净化器web中的过滤器: 当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。过滤器的作用一般用于完成通用的操作。如: 登录验证、统一编码处理、敏感字符过滤…过滤器使用定义一个类,实现Filter接口复写方法配置拦截路径(1) web.xml(2) 注解过滤器细节web.xml配置可以用注解实现,也可采用web.xml来进行配置<filter> <filter-n原创 2020-12-04 11:50:10 · 113 阅读 · 0 评论 -
服务器温习笔记(四)服务器端页面温习
JSP什么是JSPJSP(Java Server Pages): java服务器端页面可理解为: 一个特殊的页面,其中即可以定义html标签,也可以定义java代码。JSP可用于简化书写JSP原理原理图解:原创 2020-11-17 12:00:19 · 133 阅读 · 0 评论 -
服务器温习笔记(三)Tomcat和Cookie&Session
会话技术一次会话: 浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止。会话: 一次会话中包含多次请求和响应。功能:在一次会话的范围内的多次请求之间实现数据共享方式:1.客户端会话技:Cookie2. 服务器端会话技术: SessionCookieCookie是客户端会话技术,可以将将数据保存到客户端。使用步骤创建Cookie对象,绑定数据new Cookie(String name, String value)发送Cookie对象response.addC原创 2020-11-16 09:02:30 · 358 阅读 · 0 评论 -
服务器温习笔记(二)Tomcat和HttpServlet
http协议什么是http协议什么是http协议,http英文全称为hyper text transfer protocol即超文本传输协议,何为传输协议呢?传输协议是指客户端和服务器端通信时,双方发送数据的格式,http的特点:http是基于TCP/IP的高级协议。默认端口号:80。基于请求/响应模型的:一次请求对应一次响应。无状态响应:每次请求之间相互独立,不能交互数据。历史版本1.0 : 每一次请求响应都会建立新的链接1.1: 服用连接请求消息格式和响应消息格式请求消息概述原创 2020-11-10 15:03:43 · 276 阅读 · 0 评论 -
服务器温习笔记(一)Tomcat和Servlet
动态资源和静态资源静态资源所有用户访问后,得到的结果都是一样的,称为静态资源,静态资源可以直接被浏览器解析。如html, css, JavaScript动态资源每个用户访问相同的资源后,得到的结果可能不一样。称为动态资源。动态资源被访问后,需要转换成为静态资源,在返回给浏览器。如:sevlet/jsp/php,asp;web服务器软件服务器: 安装了服务器软件的计算机服务器软件: 接收用户的请求,处理请求,做出响应web服务器软件: 接收用户请求,处理请求,做出响应。web服务器软件中,原创 2020-11-03 17:50:43 · 851 阅读 · 0 评论 -
XML文件基本原理及其解析
什么是XML文件XML文件及叫Extensible Markup Language 可扩展标记语言,XML可扩展性体现在其标签都是可以自定义的。如<teacher> <student>.小背景XML和HTML是兄弟关系,XML语法非常严格,最初也被发明用来展示网页,但是对于网页脚本XML文件并没有多少竞争力,所以XML文件开始用来存储配置文件,并且改文件有很大的市场,由此可以得出XML文件的主要功能。XML文件能做什么功能配置网络文件在网络中传输xml和ht原创 2020-11-02 10:34:54 · 5079 阅读 · 0 评论 -
java 操作数据库之数据库连接池
核辐射的会发生原创 2020-10-19 17:48:42 · 293 阅读 · 0 评论 -
java 操作数据库之JDBC基础知识温习
什么是JDBC?JDBC是(java database connection)原创 2020-10-16 17:46:09 · 160 阅读 · 0 评论 -
注解复习
注解注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。注解是计算机能够读懂的注释,注释是能够让程序员能够更便捷的读懂程序。注解的作用①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】②代码分析:通过代码里标识的注解对代码进行分析【使用反射】③编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【Over原创 2020-10-09 16:40:44 · 118 阅读 · 0 评论 -
java程序的运行过程及反射
引言世间万事万物都各有其 “基”,树之基在于根,楼之基在于架,为人之要在于德,为政之要在于民,其实在某种程度上来讲,“基”和“要”可以称为是同根并同枝,他们表示的是相同的意思,那我们不仅要思考,java的“基”和“要”又是什么呢?其实我们可以毫不犹豫的回答这就是“反射”,下文将逐步揭开反射之秘。java程序的运行过程在来学习反射之前,首先要学习java程序运行的过程。当程序要使用某个类时,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出现意外情况,JVM将会连续完成原创 2020-10-09 15:31:38 · 439 阅读 · 0 评论 -
jdk新特性(二)stream流
stream流为什么需要stream流,1、Stream流的引入可以使编程更加优雅,去除冗余代码,增加代码运行效率。2、Stream流把真正的函数式编程风格引入到Java中。案例public class StreamTest { public static void main(String[] args) { ArrayList<Actor> actors = new ArrayList<>(); Actor[] act = new原创 2020-10-09 11:08:32 · 90 阅读 · 0 评论 -
jdk新特性(一)接口和lambda表达式
引言伴随着编程技术的不断发展,oracle为了编程的便捷和提升项目的可维护性,对java做了许多的升级,比如新出现的lambda表达式的引入,在接口中增加静态方法和默认方法以及提取私有方法,下文首先复习一下lambda表达式。lambda表达式为什么采用lambda表达式?Lambda表达式是为了使得接口编程更加方便,这也可以与从lambda表达式的编程思想来考虑,函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”,所以这个可以使java编程变得更加优雅,代码更加简洁原创 2020-10-09 11:01:33 · 151 阅读 · 0 评论 -
网络编程(一)网络编程入门
引言网络是计算机通信的基础,网络编程是学习计算机网络最佳方法,通常标准的计算机网络通信协议有UDP和TCP两种(此处不包含微计算机网络通信协议(如CAN等)),首先小猿引入几个面试常见的问题。1、网络编程三要素是什么?2、网络模型有几种?如何理解?下文将重点介绍有关UDP和TCP相关的编程。UDPUDP特点案例采用udp协议实现一收一发。udp发送端程序public class UDPSendDemo { public static void main(String[] args原创 2020-09-30 16:46:07 · 873 阅读 · 0 评论 -
文件操作学习(三)文件读写之标准流、打印流及序列化流
标准流和打印流标准流和打印流虽然在日常生活中比较少见,但是这两个与底层的源码息息相关,所以为了深入聊节I/O操作,需要学习这两个流。标准流1、我们与ide交换信息时也需要输入流操作,而我们平时都没有见过直接用流来直接输入,而会用到一个类,这个类是什么?它的底层原理是什么?__针对问题一:__通常情况下我们使用scanner类与ide实现信息输入,scanner底层实现了对输入流的一种包装盒加强。标准流包含标准输出流和标准输入流,小猿将这连个流结合使用入一个例子中。案例一不利用scanner 实原创 2020-09-28 17:52:10 · 133 阅读 · 0 评论 -
文件操作学习(二)字节流和字符流
引言JVM对于文件的操作只有增删查是远远不够的,想想除了以上几个主要功能外,我们还需要对文件实现改动即编辑文件,而编辑文件必然涉及到数据流,通常在java中,数据流包含字节流和字符流,字节流和字符流的继承框架体系如下所示。在众多的流当中,InputStream、OutputStream、Reader、Writer为众多流中最顶层的父类,在这众多的流中,最常见的流已在上图中用红框标识出,首先小猿来复习字节流有关的知识,在操作系统中,我们可以把一切皆当成文件对象,而文件对象又分为具体文件和文件夹,而众多流原创 2020-09-27 15:46:02 · 398 阅读 · 0 评论 -
斗地主案例的简单实现
引言最近学习java相关的知识,学习了传智老师讲的斗地主案例感觉还是有点意思,此处小猿决定学习该案例并做一些相关的笔记,废话不多讲,我们开始进入正题。案例需求现有player1,player1,player1三人需要完poker,我们操作是将54张牌发给这三人,在这过程中需要经历的是:准备牌->洗牌->发牌->看牌四个过程,我们需要用集合的知识实现这个过程。方案一采用ArrayList集合,一个大集合来储存所有poker,然后遍历poker一次添加到不同玩家所采的集合,当pok原创 2020-05-31 17:26:40 · 403 阅读 · 0 评论 -
多线程学习笔记(二)多线程之线程通信
引言对于一个人而言,一生中会经历生、老、病、死等不同的状态,水无常形,兵无常势,反观线程启动后亦会有不同状态,线程所经历的状态比较固定,共有六种状态,一个线程从从创建到死亡过程,可能会经历中间的四种状态,也可能朝生夕死,下文将介绍有关线程在计算机中的六种状态。线程与其状态当一个线程加载如计算机中时,通常会有六种状态:new、terminated、timed waiting、running、blocked、wait,这六种状态的关系如下:线程的创建和死亡以及运行状态就不再赘述。timed wait原创 2020-06-16 18:12:08 · 326 阅读 · 0 评论