自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 synchronized锁升级全过程

synchronized全过程

2022-11-11 11:29:02 315 1

原创 NIO、AIO、BIO的区别

NIO、AIO、BIO有什么区别

2022-11-06 11:57:45 710

原创 TCP三次握手相关问题详细解读

TCP三次握手相关情况

2022-10-29 19:27:39 1172

原创 计算机网络 - 应用层

一. 网络应用模型1. 客户/服务器模型在客户/服务器(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。其工作流程如下∶1)服务器处于接收请求的状态。2)客户机发出服务请求,并等待接收结果。3)服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。客户程序必须知道服务器程序的地址,客户机上一般不需要特殊的硬件和复杂的操作系统。而服务器上运行的软件则是专门用来提供某种服务的程序,可同时处理多个远程或本地客户的要

2022-01-09 22:31:58 3007 2

原创 计算机网络 - 传输层

一. 传输层提供的服务1. 传输层的功能从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。传输层位于网络层之上,它为运行在不同主机上的进程之间提供了逻辑通信,而网络层提供主机之间的逻辑通信。显然,即使网络层协议不可靠(网络层协议使分组丢失、混乱或重复),传输层同样能为应用程序提供可靠的服务。从图 5.1 可以看出,网络的边缘部分的两台主机使用网络核心部分的功能进行端到端(端口到端口)的通信时,只有主机的协议栈才有传输层和应用层,

2021-10-22 15:11:42 8284

原创 Java 深克隆和浅克隆总结

1-浅拷贝(shallow copy):创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话,则复制引用但不复制引用的对象。因此,原始对象及其副本引用同一个对象。2-深拷贝 (deep copy):创建一个新对象,然后将当前对象的非静态字段复制到该新对象,无论该字段是值类型的还是引用类型,都复制独立的一份。当你修改其中一个对象的任何内容时,都不会影响另一个对象的内容。3-如何实现深拷贝?​ ① 让每个引用类型属性内部都继承

2021-10-22 15:01:34 115

原创 Java - List集合简单总结

1.List集合1.1 List接口介绍java.util.List 接口继承自 Collection 接口,是单列集合的一个重要分支,习惯性地会将实现了 List 接口的对 象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过 索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。List接口特点:它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就.

2021-10-20 08:19:35 211

原创 Java中方法的参数传递机制以及形参个数可变的方法

Java里方法的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响。基本类型的参数传递引用类型的参数传递Java对于引用类型的参数传递一样采用的是值传递方式。但是却可以改变该引用变量所引用的对象,这使许多人可能对引用类型的参数传递产生一些误会。形参个数可变从JDK 1.5之后,Java允许定义形参个数可变的参数。如果在定义方法时,在最后一个形参的类型后增加三点(…),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。

2021-10-20 08:16:58 1010

原创 matches和split方法,正则表达式

boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。public String[ ] split(String regex, int limit) split函数是用于使用特定的切割符(regex)来分隔字符串成一个字符串数组,函数返回是一个数组。正则表达式 – 语法 | 菜鸟教程 (runoob.com)(1) regex是可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回

2021-10-17 21:22:41 227

原创 continue和break跳出多层循环的问题

在多重循环中, break和continue只对当层循环有用,对外层循环没有影响。如何直接跳出多层循环:可以在外层循环前面定义一个标号,然后在内层循环中使用带有标号break或者continue的语句,就可以直接跳出多重循环。public static void main (String args[ ]) { grade1: for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; .

2021-10-17 21:19:28 1524

原创 comparator接口中compare比较方法详述

java.util 包下接口 Comparator类型参数: T - 此 Comparator 可以比较的对象类型可以将 Comparator 传递给 sort 方法(如 Collections.sort或Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。 int compare(T o1, T o2) 比较用来排序

2021-10-17 21:18:28 5399 1

原创 计算机网络 - 网络层

一. 网络层的功能互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。也就是说,所传送的分组可能出错、丢失、重复、失序或超时,这就使得网络中的路由器比较简单,而且价格低廉。如果主机中的进程之间的通信需要是可靠的,那么可以由更高层的传输层来负责。采用这种设计思路的好处是∶网络的造价大大降低,运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种设计思想的正确性。1. 异构网络互联 (数据链路层与物理层不同)网络的异构性是指传输介质、数据

2021-10-14 18:35:59 3308

原创 Fabric区块链网络docker-compose部分配置与启动

一、docker-compose管理容器节点在docker容器中运行,docker-compose管理docker容器examples/e2e_cli/docker-compose-cli.yamlversion: '2' #docker-compose的版本services: #服务,orderer和peer组织的节点 orderer.example.com: # 服务名(排序节点和peer节点) extends: # 继承了下面file路径下文件的一些

2021-10-14 18:20:40 1794 1

原创 Fabric 创世块和通道文件的生成

一、configtxgen命令介绍configtxgen --help-asOrg 组织名称-channelID channel的名字,不指定使用默认的testchainid-outputAnchorPeersUpdate 更新peer锚节点的配置信息-outputBlock 输出创世块文件路径-outputCreateChannelTx 输出通道的文件路径-profile 指定配置文件中的节点不常用:-inspec

2021-10-14 18:19:02 15151

原创 ArrayList和LinkedList区别

ArrayList和LinkedList区别一、底层数据结构1.ArrayList是实现了基于动态数组的数据结构,每个元素在内存中存储地址是连续的;LinkedList基于链表的数据结构,是一个双向链表的结构,每个元素在内存中存储地址是离散的。二、ArrayList扩容机制2.为了使得突破动态长度数组而衍生的ArrayList初始容量为10,每次扩容会固定为之前的1.5倍,所以当ArrayList达到一定量之后会是一种很大的浪费,并且每次扩容的过程是复制数组到新数组,再对新数组重新分配容量;而Li

2021-10-13 21:42:42 135

原创 @NotBlank注解不生效解决方法

2021年@NotBlank已经被废弃掉了如果是spring boot2.x项目,直接引用下面这个依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>即可解决...

2021-10-13 18:21:43 1083

原创 计算机网络 - 数据链路层

一. 数据链路层的功能数据链路层在物理层提供服务的基础上向网络层提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。链路:从一个结点到相邻节点的一段物理链路(有线或无线),中间没有任何其它的交换结点。数据链路:在物理链路上加上实现一些必要的通信协议(用于控制数据的传输)的硬件和软件(当下最常用的就是网络适配器,包括了硬件和软件),就构成了数据链路层。1. 为网络层提供服务对网络层而言,数据链路层

2021-10-13 09:09:53 2084

原创 静态内部类和内部类

静态内部类和内部类静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。【主要是因为对于类的静态资源在类加载的时候就被加载进内存中分配空间了,先存在的不能使用后存在的】静态内部类只能访问外部类的静态成员变量和静态方法,而非静态内部类由于持有对外部类的引用(this),可以访问外部类的所用成员对象创建的方式不同静态内部类无需依赖于外部类,它可以独立于外部对象而存在,可以和外部类一样使用 创建方式是注意是new 外部类本身.静态内部类()。内部类创建

2021-10-09 21:08:04 340

原创 Fabric配置文件及生成证书–cryptogen

配置文件及生成证书–cryptogen一、命令介绍cryptogen --help 命令帮助cryptogen showtemplate --help 子命令帮助二、生成模板配置文件**src目录下 **mkdir hyperledgercryptogen showtemplate > config.yamlOrdererOrgs: # 排序节点组织信息 - Name: Orderer # 排序节点组织的名字 Domain: example.com

2021-10-09 21:05:16 589

原创 区块链 - 密码学

第一章 密码学第一节 密码介绍一、为什么要加密?保证数据的安全小明–>小红:原文:放学后,学校后门小树林见密钥:+2密文:让他放引入学恩替后,润如学请问校嗯嗯后学校门抽成小版本树版本林你能见密钥(密码):-2解密:让他放引入学恩替后,润如学请问校嗯嗯后学校门抽成小版本树版本林你能见放学后,学校后门小树林见二、常见的几种加密算法1.编码解码2.哈希加密3.对称加密4.非对称加密5.数字签名三、加密三要素1.明文/密文2.密钥3.加密

2021-10-09 21:00:04 8979

原创 Mysql安装教程

第一步:去官网下载安装第二步:注意:安装8.0.19及以后的版本,这一步可以跳过,后面步骤保持一致就好1.先解压,然后在mysql下创建一个my.ini文件,然后输入:【mysqld】#设置3306端口port=3306#设置mysql的安装目录basedir=mysql的安装目录地址,如E:\mysql\mysql-8.0.25-winx64\#设置mysql数据库的数据的存放目录datadir=mysql的安装目录地址\data,如:E:\mysql\mysql-8.0.25-w

2021-10-05 15:34:41 170

原创 计算机网络 --- 物理层知识点总结

第一章. 物理层一. 通信基础1. 基本概念1.数据、信号与码元通信的目的是:传送信息,如文字、图像和视频等。数据是指:传送信息的实体。信号则是:数据的电气或电磁表现,是数据在传输过程中的存在形式。数据和信号都可用:“模拟的"或"数字的” 来修饰∶① 连续变化的数据(或信号)称为模拟数据(或模拟信号);② 取值仅允许为有限的几个离散数值的数据(或信号)称为数字数据(或数字信号)。数据传输方式可分为:串行传输和并行传输。串行传输:是指1比特1比特地按照时间顺

2021-10-05 08:30:16 3762

原创 Fabric网络搭建流程

0.虚拟机使用ubuntu16.04.7安装openssh-server:apt install openssh-server1.安装pythonubuntu18默认安装python3.6,查看版本:python --version更新apt-get:sudo apt-get update安装python2.7:sudo apt-get install python2.7安装pip:sudo apt install python-pipsudo apt

2021-10-04 20:54:18 12327

转载 semantic-ui中图片的处理

1、基础样式   方式一:因为图片是使用img标签,所以直接将class加载img标签中即可。不过要注意的是,class中要指定是ui image。   方式二:使用一个span或者div将img标签包裹,然后ui image的class加载div或者span里面,img中只写一个src即可 <!-- 方式一 --><img src="demo.png" class="ui image"><!-- 方式二 --><div clas...

2021-10-04 20:51:06 333

原创 计算网络 - 计算机网络体系结构知识点总结

第一章. 计算机网络体系结构一. 计算机网络基本概述计算机网络由若干节点和连接这些结点的链路组成。(结点:计算机,集线器,交换器,路由器等)。也可以理解为是互联的、自治的计算机系统的结合。计算机网络的组成从工作方式上分为:边缘部分(所有连接在互联网上的主机,用于通信与资源共享);网络边缘的两个端系统(主机)的通信方式分为: 客户-服务器方式(C/S):客户是服务请求方,服务器是服务提供方 对等连接方式(P2P):每一台主机既可以是客户端,也可以是服务端核心部分(大量的网络以及连接

2021-10-02 22:42:07 1045

原创 图算法学习

LC 200. 岛屿数量 考频:107我们首先明确一下岛屿问题中的网格结构是如何定义的,以方便我们后面的讨论。网格问题是由 m×n 个小方格组成一个网格,每个小方格与其上下左右四个方格认为是相邻的,要在这样的网格上进行某种搜索。岛屿问题是一类典型的网格问题。每个格子中的数字可能是 0 或者 1。我们把数字为 0 的格子看成海洋格子,数字为 1 的格子看成陆地格子,这样相邻的陆地格子就连接成一个岛屿。class Solution { int n, m; int[] dx = {-

2021-10-02 22:38:35 146

原创 二分算法总结记录

二分的思想最基本的思想:我们最开始保证答案在一个区间里面,每一次把答案的备选范围缩小一半,当我们的区间长度缩小到1时(L = R),这个数一定是我们的答案。 75% 题目 与单调性有关; 95% 题目 存在两段性的性质。 找到一个分界点:前一段满足一个性质,后一段不满足这个性质。二分流程1. 确定二分的边界2. 编写二分的代码框架 while (l < r) { int mid = (l + r) >> 1; }3. 设计一个check(性质)函数.

2021-09-29 08:26:25 385

原创 回溯算法总结

回溯 - 就是要回复初始状态搜索 != 递归搜索:可以用循环进行实现也可以用回溯(递归)进行实现顺序! 如何能够不重复,不遗漏的将所有情况枚举出来。LC 17 组合问题:state = {""} for 每个数字 for c = 当前数字的所有备选字母 for s = state中的所有字符串 s += c 将s加入到新的集合中去 例:23

2021-09-19 19:17:15 251

原创 八大排序算法总结----Java实现

//selectSort 每次将当前元素替换为后面最小的元素 public static void selectSort(int[] a){ int N = a.length; for (int i = 0; i < N; i++) { int min = i; for (int j = i+1; j < N; j++) { if(a[j]<a[min]) min=j;

2021-09-16 20:43:36 83

原创 反射深度解析

反射:将类的各个组成部分封装为其他对象,这就是反射机制类加载全过程反射并不是什么高大上的东西,其实我们一直都在使用,只是我们并不知道它叫反射。IDEA就是一个程序(进程),我们定义了一个字符串s,当我们使用s.的时候,就会出现一大堆方法的提示,那么这些方法从哪里来的呢? 解析: 其内部就是使用了反射机制,当我们定义了一个字符串后,IDEA就会将字符串这个字节码文件加载进内存,那么内存中就会有一个该字符串的Class类对象,该class类对象已经将所有的方法抽取出来封装成了一个..

2021-09-16 11:18:40 95

原创 java.io.Serializable序列化与反序列化

类通过实现 java.io.Serializable 接口以启用其序列化功能。序列化和反序列化的时候,如果对象没有实现序列化接口 (implement Serializable),会抛出NotSerializableException没有序列化异常。类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。 Serializable接口也叫标记型接口 要进行序列化和反序列化的类必须实现Seri...

2021-09-16 11:17:19 696

原创 枚举类深度解析

枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由什么类维护的呢,我们简单的写一个枚举:public enum t { SPRING,SUMMER,AUTUMN,WINTER;}经过反编译后,我们得到public final class T extends Enum //final修饰,继承自Enum{ //私有方法 private T(String s, int i) {

2021-09-16 11:15:55 152

原创 多线程情况下实例化对象发生指令重排而造成空指针问题

问题来源于:为什么双重检查的单例模式,volatile关键字不能少?public class Singleton { private static Singleton instance = null; private Singleton() { } public static volatile Singleton getInstance() { if(instance == null) { synchronzied(Singleton.c.

2021-09-16 11:15:22 703 1

原创 静态变量与静态代码块执行顺序理解

static 修饰的会被称之为 静态常量,静态变量, 静态方法 ,还有就是静态代码块,static{ // 代码块 非static修饰的方法,变量,常量, 是不能再静态代码块中使用的 } ​ 静态常量,静态变量,静态方法, 都是通过类名直接调用的(例如:Demo.getStatic() )。但是静态代码块 不是主动调用的。 那它到底什么时候被执行呢?✔**只要你的代码在任意地方,动用了静态代码块所属的类中的任意东西,那么该静态代码块就会马上执行(说白了就是静态代码块是这个类最先执行的代码

2021-09-16 08:01:09 833

原创 静态(static)变量、方法的本质

首先明确static修饰的是跟着类走,而不是跟着对象走。 类的形象解释 ○ 把类看成是一个房子,房子里面有家具,桌椅板凳之类的,房子里面还有人。 ○ 这些家具是唯一的(那么就是静态的,为静态变量),所有类的变量都共用这一套家具。 ○ 房子里面的人(就相当于非静态变量),因为每套房子里面的人都可能不一样。 类的Java解释 Ø 静态变量也叫做类变量,它开始于类的创建,结束于类的消亡。(所有new的类,都共用这一套静态变量,座椅板凳是类变量,它们是在房子被建好了之后就被

2021-09-15 16:58:39 145

原创 java中类的初步认知

java中类的出初步认知简单说:类是一个抽象模版,根据此模型可创建多个具体对象;类即相当于定义了一种新的引用数据类型,java中数据类型分两类: 基本类型,引用类型eg: Int i=10; //i为基本类型; String str=“abc”; //String是引用数据类型; Java内部已定义我们也可以根据我们定义的类去定义数据。...

2020-11-08 08:42:40 139

空空如也

空空如也

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

TA关注的人

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