自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 git(分布式版本控制工具)

分布式和集中式的区别git和svm的区别git可以在自己的电脑上做版本控制、自己的电脑上就有本地仓库、包含了项目的历史代码记录、断网还能用(分布式)svm只能在远程库上做版本控制、断网不能用(集中式)git的底层指定git底层就是指针1.有一个head指针指向当前的版本号,来指定分支2.分支的指针指向版本,来决定当前显示那个版本git常用命令git init #初始化本地库git status # 查看本地库git add [文件名] # 添加文件到git本地库中(被git tra

2022-05-17 21:58:28 313

原创 常见的linux、docker、kubectl命令

linux命令wactch -n 1 kubectl get pod # 监控、每隔一秒执行一次kubectl get pod 命令curl 192.168.36.73 #在终端对地址进行访问echo 1111 > index.html #把index.html文件中替换1111echo 2222 >> index.html #把2222追加到index.htmlvi file.txt #创建file.txt文件mkdir -p /temp/data #递归的创建目录

2022-05-15 21:33:33 735

原创 rabbitMQ基本知识

rabbitMQ基本知识mq是常见的物理解耦+逻辑解耦provider提供服务只需要对着mq进行发布消息,mq会转发给comsumer就可以接触耦合(逻辑上解耦了,物理上也解耦了)为什么需要使用mq1.流量消峰 # 在访问量突然增长的时候,mq就可以当做一个缓存的队列。2.应用解耦 # 应用之间中间多了一个mq,假如订单系统坏了,消息会缓存在mq中,不会直接导致其他的系统也受到影响。3.异步处理 # 如果应用A调用了B的服务,但是B需要一段时间才可以处理结束,但是A需要知道B什么时候才可以执行完

2022-05-09 21:57:32 629

原创 整合微信登入功能

功能介绍:使用微信扫码登入;首先要了解一个技术栈:OAuth2技术问题:我们用户的账号信息例如:用户名,地址,头像,等信息都是保存在腾讯的数据库,我们应该如何访问呢?1.使用用户的用户名和密码直接访问去访问腾讯的数据库(但是风险极大,密码可能会泄露,而且用户也不愿意给我们)2.通用开发者key(和腾讯一起开发一个可以共同访问的公共钥匙,但是不可能,腾讯不理你)3.颁发令牌(OAuth2方式)腾讯通过用户授权,颁发一个token给你,你可以只用这个token访问用户在腾讯的账号

2022-05-06 22:03:27 764

原创 对于java源码的一些理解

后端:所谓后端就是从数据库中拿到数据,然后保存在对象中,对数据进行处理,返回给前端;在一个类的组成是属性和方法;public class UserList { private int id ; private List list; public int getId() { return id; } public void setId(int id) { this.id = id; } public

2022-05-04 18:31:29 933

原创 jkd8新特性 StreamAPi流

问题:在对集合进行处理的时候,我们需要经常对集合进行遍历,然后创建新的集合装载数据,比较麻烦;使用jdk8提供的Stream流进行处理就会比较方便了;#知识点1.Stream和io流没有关系;2.Stream不是一个数据结构,不存放数据;3.在stream流中可以比作是一个流水线,主要是用来对集合的数据进行处理的;#Stream获取流的方式:1.在Collection集合中的对象可以来获取Stream对象(map中没有实现Collection接口),不过可以分别得到map

2022-05-02 17:14:01 1996

原创 jdk8中函数式接口

#jdk在java.util.funtion中定义了很多函数式接口,方便我们在使用lambda定义接口;常用接口函数:1.Supplier提供者:提供数据@FunctionalInterfacepublic interface Supplier<T> { /** * Gets a result. * * @return a result */ T get();}//声明 public static void te

2022-05-02 16:13:02 515

原创 jdk8新特性+接口

#jdk8之前接口中只能有1.静态常量2.抽象方法#jdk8后接口中可以有:1.静态常量2.抽象方法3.default默认方法4.静态方法#在接口中变化:package InterfaceText;public interface InterText { public static int a = 10; void A(); /** * 在接口中可以使用default方法,需要有方法的具体实现; * 目的:方便我们接

2022-05-02 15:22:19 261

原创 jdk8新特性

#1.lambda表达式为了解决问题简化匿名内部类;#lambda的使用场景:1.在方法的参数或者局部变量是必须接口;2.接口中只能有一个抽象方法(@FunctionalInterface);#lambda表达式和匿名内部类的区别:1.需要的类型不一样:匿名内部类可以是类,接口,抽象类;lambda表达式的类型必须是接口;2.抽象方法的数量不同;匿名内部类可以任意数量的抽象方法;lambda表达式只能有一个抽象方法;3.实现原理不一样:匿名内部类是编译生成

2022-05-02 14:42:02 207

原创 在docker中redis的配置文件

#已经配置好了直接使用#没有设置密码# Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:## ./redis-server /path/to/redis.conf# Note on units: when memory size is ne

2022-04-28 21:32:37 3929

原创 jsonObject

通过一个模块访问另一个模块,都是通过http请求访问的。如果有携带post请求的话,post请求又是json的格式,就可以把json格式的请求,封装成json对象;将json格式看成是String进行数据传输;jSONObject来完成这个操作;#将JSON格式的字符串转换成user对象;JSONObject.parseObject("{name:张三,age:20}",User.class);#将JSONObject对象装换成为java对象JSONObject obj = ne

2022-04-27 20:29:04 624

原创 SpringBoot整合MongoDB

了解MongoDBMongoDB可以直接使用,采用K-V的形式存储数据;可以不用指定存储数据的类型,任何数据的类型都是按照k-v的形式存储;采用的是insert的一次,{保存的数据k-v};保存一行数据;查询时直接放回一条{}的数据;数据库中的表,又称为集合collection;#下载MongoDB的镜像在docker中下载镜像docker pull mongo#启动MongoDBdocker run -d --restart=always -p 270.

2022-04-25 15:32:12 1789

原创 docker软件的安装

tomcat:直接docker hub上pull下来运行实例docker run -it -p 8080:8080 tomcat-p(端口映射,访问容器的8080端口,直接映射到容器内8080的tomcat)

2022-04-25 13:34:46 1387

原创 docker容器的数据卷

卷就是文件或者目录,卷的目的就是数据的持久化,独立于容器的生命周期,因此容器删除时,或者容器挂掉了,数据卷依旧存在,可以使用数据卷完成数据的恢复(类似于redis的AOF,RDB);设置容器卷的命令:docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名(默认可读可写)#--privileged=true 打开root的权限 -v表示绑定一组路径容器内指定路径下产生的数据,宿主机指定路径下也可以获取;宿主机指定目录下产..

2022-04-24 19:55:08 2249

原创 docker的镜像

什么是镜像:是一个可以运行的轻量级的软件包,把运行某个软件的依赖,配置文件打包成为一个可以交付的运行环境(包括代码、运行时需要的库,环境变量,配置文件等),这个环境就是image镜像文件;#镜像分层在原来的镜像中添加新的功能,成为新的镜像,通过现有的镜像成为新的镜像,一层一层的功能可以叠加;#在容器中安装内容(工具)(在ubuntu中安装vim,并成为一个新的镜像):apt-get update #更新我们的ubuntu工具 (apt-get ==centos中的yum)apt-ge

2022-04-24 18:09:14 449

原创 docker常用的命令

docker常用命令:##镜像命令:docker images #查看本地镜像docker search redis #查看hub上全部的redis镜像docker pull redis #下载最新的redis镜像docker pull redis:6.0 # 下载指定版本的redis镜像docker system df #查看本地的docker的卷轴docker rmi redis/redis的imageId #删除镜像(镜像可能被某个容器实例化了,所以无法删除 -f强制删除)

2022-04-24 16:10:20 1193

原创 SpringBoot启动失败的原因之一

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2022-04-16 17:02:54.067 ERROR 27016 --- [ main] o.s.boot.SpringApplication : Application run failed原因之一:依赖问题你添加的...

2022-04-16 17:17:02 1167

原创 MyBatisPlus

MybatisPlus和mybatis的区别:MybatisPlus是mybatis的增强版本,只做增强不做修改、简化开发,提高效率;如何使用mybatisplus:1、添加mybatisplus依赖: <!--Mybatis-plus的依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId

2022-04-15 21:37:21 10776

原创 Spring的Aware,初始化,后置处理器(BeanPostProcessor)

1.在bean的Aware和初始化:都是对象实现接口,然后spring对bean的判断是否实现接口,执行重写的方法;1.接口的定义//bean实现这个类,对类的接口进行判断public interface BeanNameAware { //方法参数名的回调 public void Aware( String name);}@Component("dao")@Scope("prototype")public class Dao implements Initia

2022-04-14 18:25:25 926

原创 手写Spring的ioc容器

#使用jdk提供的包完成的一个简易版本的Spring容器beanFactory的实现类:public class applicationContext { //用来扫描的启动类(扫描出启动类的信息) Class aClass; //单例池(单例的对象需要存放的地方) ConcurrentHashMap<String,Object> singleton = new ConcurrentHashMap<>(); //存放扫描进来...

2022-04-12 21:15:58 427

原创 Spring整合Mybatis

前提:bean是java对象,而java对象不一定是bean对象;右ioc容器(BeanFactory)生成管理的对象才是bean;动态代理是Mybatis框架生成的、代理对象不在ioc容器中,所以代理对象无法自动注入到属性中;我们整合的目的就是把代理对象存放在ioc容器中;第一步://把注册beanDefinition这个类导入到ioc容器中@Import({RegistrarBeanDefinition.class})public class Config { .

2022-04-11 22:09:06 248

原创 手写一个@MapperScan扫描器

@MapperScan1.@MapperScan这个注解是由MyBatis提供的;2.只能使用在类上;3.主要功能是扫描到指定包下接口的生成Class对象注解使用在类上,指定value的值可以指定扫描的包,把扫描到的包中的接口,生成动态代理注入到Spring的ioc容器中;自己手写该注解的思路:1.需要使用一个类,...

2022-04-11 20:33:23 782

原创 ApplicationContext的三个实现类

AnnotationConfigApplicationContext通过注解来管理BeanClasspathXMLApplication:相对路径的xml文件来管理Bean(相对于classpath)FileSystemXMLApplicationContext:可以使用绝对路径来管理Bean#ApplicationContext可以支持刷新ioc容器通过调用ApplicationContext.refresh();来刷新ioc容器刷新对象:表明对象已经改变了Clas

2022-04-09 17:06:38 307

原创 单例池、单例Bean、单例模式的区别

单例和原型在xml文件中Scopt中的区别单例:每次从ioc容器中取出来的对象都是同一个;原型:每次从ioc容器中取出来的对象都不是同一个;单例池(concurrentHashMap):确保单例Bean每次从单例池中取出来的Bean对象都是同一个;concurrentHashMap是applicationContext中的一个属性;#把ioc理解成map:通过Bean的id获取Bean对象;...

2022-04-09 16:57:36 374

原创 @Resource和@Autowired的使用区别

这两个注解的使用是一致的,都是用来完成Bean依赖注入的。可以使用在成员变量上,也可以使用在方法上;这两个注解可以互相替换;@Resource注解是jdk提供的,@Autowired注解是Spring框架提供的;在@Resource注解中有两个属性,name和type;如果name有值的话,会直接按照name进行注入,如果name没有值的话,会使用属性名作为值进行注入。如果属性名的值也没有找到bean对象的话则会按照类型进行注入。主要使用的是@Resource注解可以使用name这个属性。

2022-04-09 16:42:05 517

原创 @Autowired注解的使用

@Autowired表示一个属性是否需要进行依赖注入,可以使用在属性、普通方法上、构造方法上。注解中的required属性默认是true,如果没有对象可以注入到属性,则会报出异常;@Autowired加在某个属性上,spring会从ioc容器中找到bean对象注入到属性上,如果找到多个该类型的Bean对象,则再根据属性的名字从多个Bean对象中确认一个;@Autowired写在set()方法上,在spring会根据方法的参数类型从ioc容器中找到该类型的Bean对象注入到方法的行参中,并且自动反射调

2022-04-09 14:47:47 7411

原创 Spring源码(3)FactoryBean

FactoryBean在ioc容器的基础上加上了简单的工厂模式和装饰器模式;为什么需要FactoryBean:这是Spring提供的一个bean,在遇到一些配置比较复杂的bean,使用xml文件配置起来会比较麻烦,这时候可以采用编程的方式来配置。此时会在ioc容器中生成两个bean(一个是id为$user,一个id为是user);装饰器模式(解决不同搭配时,类爆炸的问题)修饰着解决的问题后:简单工厂模式:利用多态,根据传入不同的需求,创建不同的子类,返回的是父类的引用;如何使用.

2022-04-08 21:44:57 322

原创 Spring源码(2)BeanFactory

BeanFactory(Bean工厂),创建Bean和管理Bean;BeanFactory是一个接口,给具体的ioc容器的实现类提供规范;ApplicationContext、XMLBeanFactory、DefaultListableBeanFactory是BeanFactory的子接口;AnnotationConfigApplicationContext、ClassPathXmlApplicationContext、FileSystemXmlApplicationContext 这三个

2022-04-08 20:53:33 469

原创 原型模式(浅克隆、深克隆)

浅克隆:值的传递,应用的传递(克隆的对象的引用是一致的,所以多个应用指向的是同一个对象,修改一个引用的对象,其他对象也会收到影响(牵一发而动全身))深克隆:对于基本数据类型也是值的传递,对于引用数据类型,会重新创建一份,引用是不同的,所以也会指向的是不同的对象;...

2022-04-08 20:02:17 272

原创 Spring源码系列(1)BeanDefinition

1.什么是BeanDefinitionBeanDefinition是<bean>标签的内部表现形式,BeanDefiniton是bean属性的一中承载实体(通过BeanDefiniton的属性来控制bean对象)BeanDefinition是Spring的核心概念BeanDefinition表示Bean定义Spring根据BeanDefinition来创建Bean对象2.BeanDefinition中几个重要的属性beanClass 、 Scope 、 isLazy 、

2022-04-07 22:00:41 369

原创 springMVC的执行流程

2022-03-28 22:52:16 45

原创 @responseBody

1.在使用@requestMappering注解后,返回值一般是直接解析为转跳的路径,加上@responseBody注解后,返回值不会解析为转跳的路劲,而是直接写入到http响应体中。一般是在异步获取时使用2.原理:@responseBody注解使用HttpMessageConverter将对象转化为json格式的字符串,直接写入到响应体中;扩展:@pathVariable 在形参中使用可以动态的获取uri的动态参数;...

2022-03-28 22:34:45 110

原创 数据库的相关面试题

数据库的事务在单个逻辑工作单元中执行的一系列操作,要么全部成功,要么全部失败;事务的特性原子性、一致性、隔离性、持久性原子性:每个逻辑操作要么全部失败,要么全部成功;一致性:事务在完成的时候,数据全部一致(例如转账,转账前两个人的钱是1000,那么转账结束后两个人的钱还是1000);隔离性:数据库的四种隔离级别;持久性:在事务结束后对系统的影响是永久性的(会写入到物理的硬盘中);...

2022-03-28 22:17:36 459

原创 MySQL的相关面试题

.如何在创建索引三种方法1.在一张表中创建索引,这个过程不会创建设立主键;create<索引名> on 表名2.在创建表的同时完成索引的创建这个语句就是设置一张表的主键,同时完成索引的创建constraint primary key 索引名3.在一张表中设置主键,同时把主键设置成为索引主键、外键、唯一键的区别主键具有唯一性,一张表中只能有一个主键,而且主键不能为空;外键是用来加强两张表的联系,外键主要是为了让主键引用,用来进行表连接;唯一键,可以为空,但是

2022-03-28 01:19:07 446

原创 数据库的三大范式

1.列不可再分(原子性);2.属性完全依赖主键;3.属性不依赖与其他非主键,属性完全依赖于主键;学习前提:弄清几个概念前提:高的范式是基于低范式的(完成二范式就是需要先完成一范式);依赖关系:f(y)=x;那么在确定一个字段的时候,其他几个字段也可以确定;确定这个的字段一般称为主键;而其他字段称为非主键;完全依赖关系:一个字段需要两个或者以上的字段才可以确定下来;##第一范式:列不可再分一个列中不可以在包含着其他的列(原子性),在mysql数据库进行建表必须满足第一范

2022-03-26 01:41:10 1249

原创 手写一个HTTP服务器

http服务器的工作流程:1.创建一个service,设置它的端口号。创建一个监听线程,监听一个ServerSocket(端口号);如果有浏览器访问这个ServerSocket,就会建立一个socket通道(ip地址+端口号构建成一个端口号);2.创建一个线程来处理socket(为什么需要创建一个线程来处理socket,因为服务器的的接收请求一直在执行。不能等待处理完请求再接收请求;这是一个异步的行为);3.在这个线程中要完成解析socket的过程;从socket中拿出一个输入流和输出流,可

2022-03-24 16:21:28 1765

原创 SpringMVC的三成架构

M(model)数据访问层:dao、service。对数据进行持久化操作;V(view)视图层:把数据写入把数据写入到jsp中,把jsp编译成httpService的实现类,写入到响应对象中,返回给浏览器;C(Controller)控制层:接收浏览器的请求,把处理结果放回给浏览器;...

2022-03-22 15:29:44 977

原创 Spring的三层架构

说是三层架构,但是实际上还有一个实体类这个包(新手可能喜欢按照有几个包,来区分有几层)。controller层控制层:使用@controller这个注解标记在类上,使用@RequestMapping用来映射URl调用service层处理url的请求,或者获取参数,处理请求;service层服务层:使用@service这个注解在标记在类上,调用dao层,传入处理完的参数,执行sql语句;repository层持久层:使用@repository这个注解标记在类上,进行数据库的持久性操作,确保数据

2022-03-22 15:23:18 2911

原创 Int和Integer的区别

Int是基本数据类型 | Integer是引用数据类型Int可以直接使用 | Integer需要new这个对象Int直接存放的数据的数值 |Integer存放的引用的内存地址在jdk中自动装箱的变化在jdk1.5之前是不支持自动装箱的,1.5之后支持自动装箱(可以直接基本数据类型直接赋值给Integer引用数据类型)编译器帮我们完成这个操作;Integer和int在使用上的区别Integer的默认值是null,int的默认值是0。所以在使用的时候在区别用户输入的数值是

2022-03-22 14:45:59 1943

原创 SpringBoot的各种注解

@Configuration表示当前类可以用作配置文件使用可以在这个类中使用@bean注解来创建对象(类似于单例模式的饿汉式)。方法中需要有返回值+使用new这个关键字spring会把这个返回值放入spring容器中;在后面的方法中如果要调用这个方法(@bean中有个属性name,命名name的值,在后面的@resource中使用使用按照名称注入)没有使用name这个属性的话,默认情况下@bean方法的方法名;-------------------------------------

2022-03-22 01:00:35 901

空空如也

空空如也

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

TA关注的人

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