自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 简单易懂的socket

在网络编程中,socket一词我们经常看到,那么socket到底是什么呢?  socket的中文名为套接字,我们不用理解为何名字叫做套接字,我们只需知道套接字只是对双端通讯的一端的抽象,一个套接字即socket,就是一端,那么一个连接是需要由两端来构成的,当两个程序要进行通讯的时候,它们各自需要拿住自己的一端,然后再把各自拿的一端对接在一起就形成了一个双向通道,而这个双向通道就可以为两个程序提供互相的通讯。由于图和注释我已经都写在了processOn了,那么我就直接将其截图放在下面,不足的会在后面用文字进

2021-02-26 20:18:11 259

原创 NIO讲解

  由于已经在processOn上画好了图以及注释了解析,那么我就直接上图好了,由于画得有点大,有些文字截不了,那么我就直接将文字ctrl +C 、Ctrl+V 到这里来好了。每一次连接都需要三个socket:  ①serverSocketChannel:用于接收客户端的连接  ②客户端的socketChannel:用于通讯服务端的连接  ③服务端接收到客户端连接时所创建的socketChannel:用于通讯客户端的连接当socketChannel在使用缓冲区byteBuffer的时候,要注意:

2021-02-26 19:33:23 201

原创 String常量池

一、第一步  当前所使用的jdk版本是1.8  首先我们需要注意的是有运行期与编译期,而运行期还得区分运行时的类加载过程与实际执行某个代码片段。  当代码为:String a=“abc”时,由于字符串字面量会在编译期就被编译到.class二进制文件中,当虚拟机加载该class文件的时候,这种字符串字面量会被JVM初始化成一个String对象,存储在字符串常量池中,在jdk1.8里字符串常量池是在堆里的,而Constant Table\String table则在Native Memory,Con

2021-02-26 19:09:14 316

原创 springboot启动类上的注解@SpringBootApplication

springboot的重要注解 @SpringBootApplication要以下将会介绍图中所标注注解的含义。@Inherited:  此解释引用辛德瑞拉Dangerous 的简书https://www.jianshu.com/p/4a3ffb79c10e@SpringBootConfiguration:  该注解是继承了@Configuration,@Configuration能干嘛它就能干嘛。@EnableAutoConfiguration:  springboot的自动配置

2021-02-26 11:10:28 543

原创 Spring的注解@Import原理分析

源码分析当我们从this.refresh();——>this.invokeBeanFactoryPostProcessors(beanFactory);在这一步将进入PostProcessorRegistrationDelegate类的invokeBeanFactoryPostProcessors(beanFactory, this.getBeanFactoryPostProcessors())方法;在PostProcessorRegistrationDelegate的invokeBeanF

2021-02-26 11:04:12 292

原创 使用layui时由于session过期导致页面嵌套问题

使用layui的框架时,遇到session过期后,在弹出框里显示的页面跳到了登录页面,造成嵌套式的页面  如下图所示:登录后就会变成如下这样:解决方法:<script>$(document).ready(function () { if (window != top) { top.location.href = location.href; }});</script>  若嫌加载页面完成后才执行太慢,可以放在html页面的前面,就会优先执行。...

2021-02-26 01:18:28 908 1

原创 Docker出现的一些错误信息及解决办法

出现错误:一、Job for docker.service failed because the control process exited with error。 原因:daemon.json文件内容书写有错误,或者所使用的字符是中文符号。 解决方案:yum update 更新一下。通过docker container inspect 容器名 可以查看容器的ip地址,以下172.17.0.2就是所查到的地址;改容器的网关是 172.17.0.1,

2021-02-26 01:12:25 2471

原创 软链接和硬链接

使用ln命令可以创建软链接和硬链接(默认是硬链接)软链接: ln -s 源文件名 软链接文件名硬链接: ln 源文件名 硬链接文件名预备知识:  inode  在Linux的文件系统中,只要是保存在磁盘分区里的,不管是啥类型的文件都会分配到一个编号,称为索引节点(indoe index),在硬盘中最小存储单位叫做“扇区(sector)”,扇区是对硬盘而言的,是物理层,每个扇区存储512个字节(即512B),当操作系统读取硬盘时,是不会一个个扇区来读取的,而是一次性连续读取多个扇区(即一次

2021-02-26 01:02:17 213

原创 静态代理与动态代理

代理有静态代理和动态代理静态代理里分继承(extends)和聚合(接口)(1) 继承的话就是通过super操作父类了。(2) 聚合的话,就是在代理类里指定一个接口属性,为接口属性指定一个要被代理的对象,然后在该代理类里调用被代理的对象,对其前后进行增强。动态代理市面上主流的技术有2种:jdk动态代理、cglib动态代理。像ASM、javac都不是主流的,虽然cglib得使用到ASM,但那属于太底层的了,没必要去学。  ①jdk动态代理主要使用 Proxy.newProxyInstanc

2021-02-26 00:10:35 81

原创 AOP零配置搭建以及失效的原因

一、AOP零配置切面类要用@Aspect(表明该类作为切面)和@Component(表明将此类注入到spring的容器中)注解上配置类,要用上@Configuration(保证bean的作用域)和@ScanComponent(所要扫描的包)及@EnableAspectJAutoProxy( 开启AOP代理自动配置,参数proxyTargetClass默认为false表示jdk动态代理,true为cglib代理, 但是如果不设置或者设置为false,但是代理的类没有实现接口的话也是cglib代理。)

2021-02-25 21:28:41 243

原创 接口幂等性

幂等性  什么叫幂等性?就是当一操作多次执行所产生的影响与一次执行的影响相同。  接口幂等性,就是当接口被多次调用所产生的结果与一次调用的结果相同。应用层http协议也分幂等性  GET:该方法用于获取资源,不会改变资源,属于幂等。  DELETE:该方法用于删除资源,但资源只能删一次,(删多次的结果和删一次一样)所以属于幂等。  POST:该方法既可以创建资源又可更新资源,但重点在于其对应的不是资源本身,而是资源的定位(URL)。例如:POST http://www.tieba.baidu.c

2021-02-25 19:04:56 200

原创 ThreadLocal的原理

  当涉及多线程的时候,ThreadLocal是经常会被使用到的,所以我们来看看ThreadLocal到底是什么  ThreadLocal是一个线程内部的存储类,他能够为每个线程存储数据,而且每个线程存储的数据在线程相互之间是独立的。要取到某一线程的存储数据就必须切换到某一线程才能将其数据取出。这就像是ThreadLocal为线程开辟了各自独立的存储空间来存储线程的局部变量。所以,当一个变量需要被多线程使用到并且修改的时候,就会用到ThreadLocal了,因为如果不使用ThreadLocal的话,多个线

2021-02-25 15:37:30 74

原创 JDBC加载mysql驱动模块

       JDBC加载驱动模块核心类就是DriverManager,例如当我们还不用自动加载服务时,我们过去平常加载mysql的两种方式都必须用到DriverManager类 ①、方式一 Driver driver = new Driver();//com.mysql.jdbc.Driver DriverManager.registerDriver(driver); ②、方式二 Class.forNam.

2021-02-21 23:28:43 322

原创 如何打破双亲委派机制

双亲委派机制       第一次知道何为打破双亲委派机制是通过阅读周志明的《深入理解Java虚拟机》,我们知道双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。【这里的“父类”只是名义上的父类,而不是真的是继承上父子关系】       这种模型要求,除了顶层的启动类加载器外,其他的类

2021-02-21 23:15:37 2487

原创 spring中所涉及到的SPI机制

一、什么是SPISPI ,全称为 Service Provider Interface,是一种服务发现机制,这一机制被广大厂商和插件所使用。 SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。在我们的系统中有各个抽象的模块,而往往该模块会有很多不同的实现方案,比如:日志模块:加载不同的日志实现框架jdbc模块:加载不同类型的数据库驱动spring:spring-web加载不同的web容器(servlet3.0所规范的)TypeConversion SPI

2021-02-21 22:14:23 4342 4

原创 springboot的自动配置原理

springboot为什么通过一个全局配置文件(application.properties | | application.yml)就能配置整个项目的各种属性呢?原因就在于springboot为我们做好了自动配置,那么springboot是怎样做到自动配置的呢?接下来我们就来讲解其原理。springboot自动配置的关键注解就是@EnableAutoConfiguration,我们通常使用在启动类上的@SpringbootApplication就是继承了该注解才可以成功自动配置。当我们使用spring

2021-02-21 21:34:18 138

原创 zookeeper使用close命令关闭连接与直接关闭运行窗口对临时节点来说有什么区别

我们知道临时节点都是建立在session基础上的,而每一个客户端连接都会有独自的session,当连接断开或超时的情况下,在session上建立的临时节点都会自动删除。

2021-02-21 19:54:34 1422

原创 3.6版本的zookeeper中的watch机制

Watch的分类客户端可分为三类,服务端可分为两类dataWatches:表示监听的是某节点的数据变化,比如数据的新增、修改、删除。childWathes:表示监听的是某节点的孩子节点的变化,如果某个孩子节点新增或删除了,会触发其父节点上的NodeChildrenChanged事件。existWatches(只在客户端):服务端无需单独触发该事件,由客户端接收其他事件自己判断,比如客户端接收到一个NodeCreated事件,客户端如果注册了existWatches,那么existWatches就会

2021-02-21 18:19:10 847

原创 Final关键字修饰的变量是否真的不能改变吗

我们所知道的Final在类上:该类不能被继承,其中所有的方法都不能被重写,但可以被重载, 所以不能同时用abstract和final修饰类(abstract修饰的类是抽象类,抽象类是用于被子类继承的,刚好final起冲突) 在方法上: 该方法不能被重写,但是子类可以用父类中final修饰的方法 在成员变量上: 该成员变量是不可变的,如果成员变量是基本数据类型,初始化之后成员变量的值不能被改变,如果成员变量是引用类型,那么它只能指向初始化时指向的那个对象,不能再指向别的对象,但

2021-02-21 17:16:03 6446

原创 zookeeper源码编译注意事项

源码源码可以从github上拉取 https://github.com/apache/zookeeper/releases所需工具这里演示的是zookeeper老版本它是一个eclipse工程,并使用了ant构建工具。所以需要安装ant来编译zookeeper。而新版本已经开始使用maven了。安装anthttps://ant.apache.org/bindownload.cgi 根据对...

2020-04-10 21:07:35 536

转载 mysql

数据库mysql 安装与设置 ①有Can't connect to MySQL server on 'localhost' (10061)错误; 1)查看服务里有MySQL服务没有;如果有服务但没有开启,则点击开启,若没有这个服务则进行第二步 2)查看MySQL的bin目录下是否有mysqld 有:使用命令行 输入my...

2019-03-03 23:15:05 82

原创 网络协议及其基础知识

JAVA网络编程 定位: IP:分辨电脑主机的 。 【InetAddress表示IP地址(IPv4与IPv6),Inet4Address表示IPV4,Inet6Address表示IPV6。】 【SocketAddress表示不依赖于具体协议的套接字地址抽象类,InetSocketAddress是其唯一的实现类子类】端口:分辨电脑软...

2019-02-20 17:28:39 412

空空如也

空空如也

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

TA关注的人

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