自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Nice_Yiag

大三在校生一枚,记录学习中遇到的问题,欢迎大家一起交流

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

原创 2.BIO编程模型实现群聊

在第一章中运用Socket和ServerSocket简单的实现了网络通信。这一章,利用BIO编程模型进行升级改造,实现群聊聊天室所谓BIO,就是Block IO,阻塞式的IO。这个阻塞主要发生在:ServerSocket接受请求时(accept()方法)、InputStream、OutputStream(输入输出流的读和写)都是阻塞的。这个可以在下面代码的调试中发现,比如在客户端接受服务器消息的输入流处打上断点,除非服务器发来消息,不然断点是一直停在这个地方的。也就是说这个线程在这时间是被阻塞的。如图

2021-10-12 17:12:11 153

原创 1.Socket和ServerSocket入门实例,实现单聊

Socket定义:套接字(Socket)是一个抽象层,应用程序可以通过它发送或接受数据,可对其进行像文件一样的打开,读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址和端口的组合。可以理解为两台机器或进程间进行网络通信的端点,这个端点包括IP地址和端口号。Socket和ServerSocket的区别就像其名字一样,简单的说ServerSocket作用在服务端,用以监听客户端的请求。Socket作用在客户端和服务端,用以发送和接受消息。就像上边

2021-10-12 15:03:08 279

原创 qs.stringify和JSON.stringify

HTTP定义了与服务器进行交互的不同方法,常见的有四种:GET、POST、PUT、DELETE。其中,GET和POST最常用。两种 HTTP 请求方法:GET 和 POSTGET - 从指定的资源请求数据。POST - 向指定的资源提交要被处理的数据。在前端向后端传递数据的时候,可以选择使用表单的方式进行提交,也可以转换成json格式进行传输,这取决于自己定义的前后端的数据格式规范。qs.stringify()1.qs.stringify()作用是将对象或者数组序列化成URL的格式。对

2021-08-06 13:35:40 892

原创 学习logback

看完这个不会配置 logback ,请你吃瓜!

2021-07-14 15:08:59 473

原创 Spring Boot 打包成的 jar 和普通jar有什么区别

Spring Boot 打包成的 jar 和普通jar有什么区别多了一个插件Spring Boot 中默认打包成的 jar 叫做 可执行 jar,这种 jar 不同于普通的 jar,普通的 jar 不可以通过 java -jar xxx.jar 命令执行,普通的 jar 主要是被其他应用依赖,Spring Boot 打成的 jar 可以执行,但是不可以被其他的应用所依赖,即使强制依赖,也无法获取里边的类。但是可执行 jar 并不是 Spring Boot 独有的,Java 工程本身就可以打包成可执行 j

2021-07-14 13:57:51 2761

原创 使用JSR303进行数据校验

步骤一.使用注解校验在Java中提供了一系列的校验方式,它这些校验方式在“javax.validation.constraints”包中,提供了如@Email,@NotNull等注解。在非空处理方式上提供了@NotNull,@Blank和@NotEmpty(1)@NotNullThe annotated element must not be null. Accepts any type.注解元素禁止为null,能够接收任何类型(2)@NotEmptythe annotated element

2021-05-16 21:43:06 501

原创 SpringBoot统一异常处理

统一异常处理可以使用SpringMvc所提供的@ControllerAdvice,通过“basePackages”能够说明处理哪些路径下的异常。(1)抽取一个异常处理类package com.yjn.gulimall.product.exception;import com.bigdata.common.utils.R;import lombok.extern.slf4j.Slf4j;import org.springframework.validation.BindingResult;im

2021-05-16 21:32:54 209

原创 Springboot自动装配简述

springboot自动装配我们首先从程序的main方法开始入手 ,在main方法中调用了SpringApplication.run()方法 ,这个方法会接着调用refreshContext()方法刷新容器,然后会去扫描注解或者是加载配置文件 ,springboot是基于注解开发的,所有这个时候他会去扫描@SpringBootApplication注解这个注解里有三个比较重要的注解分别是@SpringConfiguration 这个注解继承自Configuration 标明这是一个配置类然后

2021-05-07 01:23:00 202

原创 SpringMVC请求流程

springmvc请求流程客户端发起url请求,首先会经过DispatcherServlet—>DispatcherServlet收到请求之后调用HandlerMapping 处理器映射器---->处理器映射器根据url找到具体的处理器,然后生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet—>DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行

2021-05-07 01:17:31 142

原创 springIco流程详细讲解

第一步就是执行构造器,然后扫描配置信息Ioc初始化首先要执行this()构造器,构造器中初始化了AnnotatedBeanDefinitionReader()读取器用来扫描注解类,ClassPathBeanDefinitionScanner()用来扫描配置类,然后扫描配置类或者加载配置信息然后在refresh方法中执行扩展功能(重点)public void refresh() throws BeansException, IllegalStateException { synchronized (

2021-05-07 01:16:45 267

原创 Springbean的生命周期

首先spring加载bean对象并不是根据bean的Class定义来创建bean对象的,在容器启动的时候,他会扫描bean的定义信息,扫描bean的定义信息是在refresh()方法里的invokeBeanFactoryPostProcessors()方法,在这个方法里边他会执行BeanFactoryPostProcessors后置处理器及其子接口BeanDefinitionRegistryPostProcessor,执行顺序是先执行BeanDefinitionRegistryPostProcessor接口

2021-05-07 01:15:33 78

原创 Spring循环依赖

spring只能解决通过setter注入方式构成的循环依赖。对于setter注入造成的依赖是通过提前暴露刚完成构造器注入但未完成其他步骤(如setter注入)的bean来完成的,而且只能解决单例作用域的bean循环依赖.通过提前暴露一个单例工厂方法,从而使其他bean能引用到该bean如下代码所示addSingletonFactory(beanName,new ObjectFactory){ public Object getObject() throws BeansException{

2021-05-07 01:13:46 65

原创 SpringAop原理

Aop代理的开始是通过实现BeanPostProcessor后,当spring加载这个Bean时会在实例化前调用其postProcessAfterInitialization方法。postProcessAfterInitialization->wrapIfNecessary(bean,beanName,cacheKey)(如果它适合被代理,就需要封装指定的bean)这个方法中已经看到了创建代理的雏形.在真正开始之前还需要一些判断,比如是否已经处理过或者是否需要跳过的bean,而真正创建代理的代码是

2021-05-07 01:12:59 80

原创 spirngboot自动装配

理解springboot自动装配首先从main方法入手,mian方法中调用SpringApplication.run(),然后他会调用refreshContext()方法刷新容器。refresh方法会去解析Spring的各种注解和xml配置文件等 ,这时候才是进入@SpringBootApplication注解的分析@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited<1.&g

2021-03-28 12:12:53 76

原创 SpringMVC配置时显示:通配符的匹配很全面, 但无法找到元素 ‘mvc:annotation-driven‘ 的声明

今天在配置spring-mvc的配置文件时显示"通配符的匹配很全面, 但无法找到元素 ‘mvc:annotation-driven’ 的声明",这是因为我们虽然在约束文件里声明了mvc文件 但是没有此声明对应的解析文件,正确配置如下:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co

2020-07-12 16:25:51 242

空空如也

空空如也

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

TA关注的人

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