自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王华春_Jason

———随风潜入夜 润物细无声

  • 博客(243)
  • 收藏
  • 关注

原创 【多线程系列】Synchronized详解(1)

一、共享问题两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗?@Slf4j(topic = "c.Test01")public class Test01 { static int counter = 0; static Object lock = new Object(); public static void main(String[] args) throws InterruptedException { Thread t1

2021-06-25 20:45:05 406 2

原创 【多线程系列】线程的状态与常用方法详解

一、线程的状态1、线程状态,线程可以处于以下状态之一:NEW 尚未启动的线程处于此状态。RUNNABLE 在 Java 虚拟机中执行的线程处于这种状态。BLOCKED 被阻塞等待监视器锁的线程处于这种状态。WAITING 无限期等待另一个线程执行特定操作的线程处于此状态。TIMED_WAITING 等待另一个线程执行操作达指定等待时间的线程处于此状态。TERMINATED 已退出的线程处于此状态。一个线程在给定的时间点只能处于一种状态。 这些状态是不反映任何操作系统线程状态

2021-06-25 14:54:31 936 1

原创 【多线程系列】线程的创建与启动详解

一、创建线程下面两种方式相信一定非常的熟悉,这是我们常用的方式,下面就以它开头,对线程的创建和启动做一个详细的分析。也是希望通过分析这个过程来理解多线程。1、继承Thread的方式创建线程public class ThreadTest extends Thread { public void run(){ System.out.println("重写run方法"); } public static void main(String[] args) {

2021-06-24 21:15:04 876 1

原创 【SpringBoot系列】首页和模板引擎

一、欢迎页是如何映射?1、还是原来的办法:在WebMvcAutoConfiguration.java中找到welcomePageHandlerMappingpublic WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext,FormattingConversionService mvcConversionService, ResourceUrlProvider..

2021-06-24 11:35:56 341 1

原创 【SpringCloud系列】Gateway网关简介及使用

一、Gateway是什么Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用Zuul网关;但在2.x版本中,zuul的升级就是一直跳票,SpringCloud最后自己研发了一个网关代替Zuul。那就是 SpringCloud Gateway ,gateway是zuul 1.x版本的替代。Gateway是在Spring生态系统之上架构的API网关服务,基于Spring 5,Spring Boot2 和Project Reactor技术。Gateway旨在提供一种简单而有效的方式来对.

2021-06-15 23:30:30 7050

原创 【SpringBoot系列】自动装配原理

一、自动装配通过@SpringBootApplication扫描的包,会全部被springboot自动装配,并最终会指向“META-INF/spring.factories”文件,这个文件是一个核心自动装配文件,所有的东西都在这里面配置好了。每个XXXAutoconfiguration,都是容器中的一个主键,他们都有可能被加到容器中来做一些自动配置,通过上面的源码追踪,最后找到的文件就是下图的文件。二、思考:我们的application.yml和spri...

2021-06-11 21:27:40 1739

原创 【SpringBoot系列】配置文件

一、springboot配置文件1、application.properties 语法结构 :key=value 2、application.yml 语法结构 :key:空格 value 3、配置文件的作用:修改springboot自动配置的默认值,因为springboot在底层都给我们自动配置好了,如果要改他的默认值就需要通过配置文件进行修改。二、yaml初识1、概述YAML是"YAML Ain't a Markup Language"(...

2021-06-04 19:47:35 257 2

原创 【SpringBoot系列】SpringBoot运行原理初探

一、pom.xml1、父依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.3.RELEASE</version><relativePath/> <!-- lookup pa...

2021-05-24 17:03:21 188 6

原创 【SpringBoot系列】SpringBoot入门

一、springboot主要内容概览二、Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 三、微服务架构微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLI...

2021-05-21 17:16:45 175 6

原创 【SpringMVC系列】拦截器

一、概述1、拦截器:AOP思想的具体应用 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 SpringMVC中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的. SpringMVC拦截器的preHandle方法返回值是Boolean类型,所以条件够就放行,执行方法,而条件不足,前端无法知道是什么原因而被拦截,下面来解决这个问题。 .

2021-05-14 14:50:11 206 2

原创 【SpringMVC】JSON

JSON一、概述 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。 采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 在 JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都可以通过 JSON 来表示..

2021-05-07 19:40:16 153 2

原创 【SpringMVC系列】Ajax

一、跳转方式1、ModelAndView对象根据view的名称和视图解析器调到指定的页面({视图解析器前缀}+viewName+{视图解析器后缀})<!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 --><p...

2021-04-24 21:14:40 135 2

原创 操作系统概论学习总结

我学习了那么多计算机的课程,操作系统学习的次数最多,难度相对较大,但是我对它是又爱又恨。爱它:我觉得它是一门伟大的课程,诞生才短短几十年,却融入了人们生活的方方面面。恨它:是因为它的难度,每次考试总能被它卡住,其实关键还是在于自己没有学好,看书还是没有看到位。认识全书的每一个字,但是未必理解其中的含义。书是需要看多遍,而且每次看感觉都有不一样的感觉。本次学习就有深刻的体会,时间虽然花的不多,但是因为有了前几次学习的积累,这次看书明显能感觉到之前看书中的很多东西没有看到;之前很多东西没有理解到。相信如果我有机

2021-04-13 11:35:31 503 3

原创 【SpringMVC系列】SSM框架整合

一、环境 IDEA MySQL5.7.X Tomcat9 Maven3.6 二、建立数据库建表CREATE DATABASE ssmbuild;CREATE TABLE books (bookID INT(10) NOT NULL AUTO_INCREMENT COMMENT "书id" PRIMARY KEY,bookName VARCHAR(100) NOT NULL COMMENT "书名",bookCount...

2021-04-12 11:23:18 201 3

原创 【SpringMVC系列】数据处理和跳转

一、跳转方式1、ModelAndView对象根据view的名称和视图解析器调到指定的页面({视图解析器前缀}+viewName+{视图解析器后缀})<!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 -->...

2021-04-05 18:59:31 243

原创 【SpringMVC系列】控制器和RestFul

一、控制器1、控制器:负责提供访问应用程序的行为,通常通过接口定义或注解定义两种方式实现,负责解析用户的请求并将其转换为一个模型2、实现方式(1)实现Controller接口//实现该接口的类获得控制器功能public interface Controller {//处理请求且返回一个模型与视图对象ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponsevar2) throw...

2021-03-29 12:13:07 212 4

原创 【SpringMVC系列】springmvc概述

一、概述1、MVC:模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范,是将业务逻辑、数据、显示分离的方法来组织代码。M:Model(模型)数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。V:View(视图)负责进行模型的展示

2021-03-21 15:09:38 249 6

原创 Nginx-正向、反向代理、安装、配置详解

一、Nginx简介1、Nginx是什么?Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好2、反向代理(1)正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问(2)反向代理:客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求送到反向代理服务器,由反向代理服务器需选择目标服.

2021-03-09 11:29:40 1079 5

原创 敏捷开发Sprint周期总结

时间过的很快,转眼间在公司运用敏捷开发做项目已经10个sprint周期了,刚开始对于敏捷开发,从懵懵懂懂到渐渐清晰,从畏手畏脚到信手拈来,从陌生到熟悉,这中间经历了很多,也成长了很多。特别是刚开始心里特别不愿意接收,因为那时候总觉得敏捷开发有太多的步骤,似乎总有那么些程序需要走。作为项目组长的我那是深有感触,曾一度有点厌烦它,本来管理一个项目组就够忙的了,还要给上级一会做点这个一会搞点那。总有忙不完的任务。当经历了几个周期,渐渐的对敏捷开发熟悉了后,我开始改变了对它的看法。它还是有很多好处...

2021-03-01 16:07:29 2724 7

转载 抖音-产品分析

1、抖音产品介绍抖音是一款适合中国年轻人的音乐短视频社区,它致力于引导年轻用户以音乐短视频的方式进行自我表达。用户可以通过这款软件选择歌曲,拍摄15秒的音乐短视频,形成自己的作品。2、有什么2.1 抖音的资源有内容和用户:抖音短视频是目前中国最大、最受欢迎的原创音乐短视频分享平台。这里有全球潮流音乐搭配舞蹈、跑酷、表演等原创的内容形式。2.2 内容(1) 音乐:有大量的音乐供用户选择使用,能够满足用户的基本需求。(2) 教学视频:抖音小助手提供的拍摄指南指导了新用户如何快速上手玩

2021-02-26 17:13:58 7279 19

原创 【Mybatis系列】缓存

一、缓存定义1、什么是缓存 [ Cache ]? 存在内存中的临时数据。 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。 2、为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。3、什么样的数据能使用缓存?经常查询并且不经常改变的数据。4、Mybatis缓存 MyBatis包含一个非常强大的查询缓存特性,...

2021-02-17 08:13:58 236 12

原创 【Mybatis系列】动态SQL

一、动态SQL动态SQL:根据用户输入的不同查询条件,生成的不同SQL语句,之前咱们用的静态SQL,需要查询的条件几乎都是给定的,动态SQL语句功能是mybatis强大特性之一,当然JDBC也可以完成类似功能,只不过需要进行大量的SQL语句的拼接,会非常的麻烦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之

2021-02-08 20:39:03 293 7

原创 【Mybatis系列】mybatis一对多和多对一的处理

一、环境搭建1、创建项目,导入常用依赖,这里需要重点导入lombok依赖、settings依赖、typeAliases依赖<properties resource="db.properties"><property name="username" value="root"/><property name="password" value="root"/></properties><settings>...

2021-02-02 08:38:11 272 9

原创 【Mybatis系列】注解

MyBatis3构建在全面而且强大的Java 注解(Java annotation)之上。MyBatis注解提供了一种便捷的方式来实现简单映射语句,而不会引入大量的xml配置开销。 在没有注解之前,xml被广泛的应用于描述元数据,xml的维护越来越糟糕。在需要紧耦合的地方,比xml更容易维护,阅读更方便。在需要比较多参数设置时,使用xml更方便,而在将某个方法声明为服务时这种紧耦合的情况下,比较适合注解。一、常用注解:1、SQL语句映射@Insert:实现新增功能@Select..

2021-01-30 08:31:14 625 18

原创 【Mybatis系列】分页

思考:我们为什么需要分页?在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使用分页进行查询,也就是每次处理小部分数据,这样对数据库压力就在可控范围内。SQL实现分页:SELECT * FROM table LIMIT stratIndex,pageSizemybatis实现分页步骤:1、修改配置文件<select id="getUserByLimit" paramete.

2021-01-23 19:13:16 355 11

原创 【Mybatis系列】日志

当我们的SQL语句写错了怎么办?思考:我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?如果一个 数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题。对于以往的开发过程,我们会经常使用到debug模式来调节,跟踪我们的代码执行过程。但是现在使用Mybatis是基于接口,配置文件的源代码执行过程。因此,我们必须选择日志工具来作为我们开发,调节程序的工具。Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:• .

2021-01-17 21:34:36 310 9

原创 【Mybatis系列】ResultMap结果集映射

ResultMap结果集是用来定义SQL查询结果与java对象映射关系,当字段名和属性名不一致的时候,可以使用resultMap,resultType跟resultMap不能同时存在。实体类的字段如下:public class User {private int id;private String name;private String password;}而数据库中的字段如下:显然这个数据库pwd字段和java实体类中的password字段不...

2021-01-09 17:22:09 346 6

原创 【Mybatis系列】MyBatis配置解析

通过入门学习后,我们很容易发现,mybatis的重点在于核心配置文件,mybatis的配置文件包含了会深入影响mybatis行为的设置和属性信息。下面我们就来针对核心配置文件中进行深入的学习。一、environments元素1、如下所示,配置好的属性可以在整个配置文件中用来替换要动态配置的属性值。另外mybatis中可以有多套运行环境,将SQL映射到多个不同的数据库上,但是必须指定其默认的运行环境:<environments default="development">...

2020-12-24 18:05:39 343 7

原创 【Mybatis系列】mybatis入门

一、什么是MyBatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录。 二、什么是持久化?持久化是将程序数据在持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(

2020-12-18 20:22:17 382 6

原创 【spring系列】声明式事务

一、概述事务: 事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎!事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性。事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用事务四个属性ACID1. 原子性(atomicity) 事务是原子性操作,由一系列动作组成,事务的原子性确保动作要么全部完成,要么完全不起作用 2. 一致性(consistency) 一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满..

2020-12-09 20:58:16 271 7

原创 【spring系列】Spring整合Mybatis

一、概述MyBatis-Spring:就是将mybatis整合到spring框架中,之前有提到,spring是一个很强大的框架,可以很好的融合很多其他的框架,今天先来就融合mybatis。1、版本要求: MyBatis-Spring MyBatis Spring 框架 Spring Batch Java 2.0 3.5+ ...

2020-12-05 19:06:41 427 6

原创 设计模式的六种关系与代码之间的对应

强弱关系:依赖<关联<聚合<组合<实现<继承一、依赖VS关联依赖依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。说明:虚线+箭头可描述为:Uses a依赖是类的六种关系中耦合最小的一种关系。因为在生成代码的时候,这两个

2020-11-23 00:41:06 1279 23

原创 【spring系列】AOP的实现

一、概念AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。二、AOP详情 横切关注点:跨越应用程序多个模块的方法或功能。即是,与我们业务逻辑无关...

2020-11-21 08:36:55 420 9

原创 【spring系列】静态/动态代理

一、代理模式类图二、静态代理角色分析 抽象角色:使用抽象类或接口来实现 真实角色:被代理的角色 代理角色:代理真实角色,代理真实角色后一般会做一些附属的操作 客户:使用代理角色来进行操作 三、代码实现1、Rent . java 即抽象角色//抽象角色:租房public interface Rent {public void rent();}2、Host . java 即真实角色//真实角色: 房东,房...

2020-11-14 00:20:51 381 9

原创 【spring系列】spring注解开发 

一、spring的注解开发准备1、必须要保证aop包的导入2、spring配置文件中需要导入context约束,增加注解支持<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns...

2020-11-07 19:45:16 367 7

原创 【spring系列】Bean的作用域

一、概念Bean:在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 .二、单例模式(Spring默认机制)<bean id="user1" class="com.jason.pojo.User" c:name="华春" c:age="18" scope="singleton"/>测试:(true)@Testpublic...

2020-11-01 22:52:54 468 5

原创 【spring系列】依赖注入(DI)

一、概念依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。依赖:指Bean对象的创建依赖于容器注入:指Bean对象所依赖的资源,有容器来设置和装配二、构造器注入构造器注入依赖于构造方法实现,而构造方法可以是有参数的或者是无参数的。在大部分的情况下,我们都是通过类的构造方法来创.

2020-10-26 15:57:35 453 8

原创 【spring系列】spring对象的创建

一、HelloSpring1、创建基础项目、导入项目依赖<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-we

2020-10-24 18:28:18 460 8

原创 【spring系列】你需要知道的spring入门

spring入门一、概述1、spring概述spring就是一个轻量级的控制反转(IOC)和面向切面编程(AAOP)的框架2、相关地址官网 : http://spring.io/官方下载地址 : https://repo.spring.io/libs-release-local/org/springframework/spring/GitHub : https://github.com/spring-projects3、依赖<!-- https:/...

2020-10-24 09:55:54 353 8

原创 【Java专题】Java中的I/O流详解

一、知识必备(字节流和字符流)1、流:在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成,程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。2、字节流和字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的 是InputStream,在字符流中输出主要是使用Writ...

2020-10-18 14:03:14 578 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除