自定义博客皮肤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)
  • 收藏
  • 关注

原创 Java Scanner的hasNext()方法

Java Scanner的hasNext()方法

2023-02-28 19:15:38 1044 1

转载 Redis的数据结构

Redis的数据结构

2023-01-31 15:03:57 120

转载 Docker 入门教程

作者:阮一峰日期:2018年2月 9日2013年发布至今,Docker一直广受瞩目,被认为可能会改变软件行业。但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发。一、环境配置的难题软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能...

2021-01-05 17:07:34 134

转载 数字签名与HTTPS详解

数字签名与HTTPS详解因为HTTP协议本身存在着明文传输、不能很好的验证通信方的身份和无法验证报文的完整性等一些安全方面的确点,所以才有了HTTPS的缺陷。HTTPS确切的的说不是一种协议,而是HTTP + SSL (TSL)的结合体。HTTP报文经过SSL层加密后交付给TCP层进行传输。SSL(安全套节层)主要采取的是RSA(非对称加密)与AES(对称加密)结合的加密方式。先通过RSA交互AES的密钥,然后通过AES进行报文加密和解密。本篇博客主要聊的就是HTTPS具体的工作过程。一、RSA与A

2021-01-05 15:08:54 248

转载 https中的数字证书认证过程解析

RSA非对称加密的2个用途:加密和签名加密(防窃听)RSA非对称加密会用到一对密钥,分别称为公钥和私钥,公钥加密之后的数据可以通过私钥来进行解密,私钥加密的数据也同样可以用对应的公钥进行解密。在web数据传输过程中,由于客户端和服务器端是多对一的关系,因此可以让所有的客户端持有相同的公钥,服务器持有私钥,这样一来就能方便地实现数据的加密传输。在网络传输过程中,一旦客户端发送的用公钥加密过的数据被第三方截获,由于第三方没有服务器上的私钥,因此无法对客户端发送的加密数据进行解密从而获得明文,这样.

2020-12-31 18:02:00 189

转载 SSL/TLS协议运行机制的概述

互联网的通信安全,建立在SSL/TLS协议之上。本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。一、作用不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。(1)窃听风险(eavesdropping):第三方可以获知通信内容。(2)篡改风险(tampering):第三方可以修改通信内容。(3)冒充风险(pretending):第三方可以冒充他人身份...

2020-12-31 17:44:32 87

转载 理解RESTful架构

越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发在互联网环境中使用的软件。RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符

2020-12-31 17:00:36 77

转载 数据类型和Json格式

1.前几天,我才知道有一种简化的数据交换格式,叫做yaml。我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开。它说,从结构上看,所有的数据(data)最终都可以分解成三种类型:第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海"。第三种类型是映射(mapp

2020-12-31 16:11:26 117

转载 Base64简单介绍

1.昨天的《MIME笔记》中提到,MIME主要使用两种编码转换方式----Quoted-printable和Base64----将8位的非英语字符转化为7位的ASCII字符。虽然这样的初衷,是为了满足电子邮件中不能直接使用非ASCII码字符的规定,但是也有其他重要的意义:a)所有的二进制文件,都可以因此转化为可打印的文本编码,使用文本软件进行编辑;b)能够对文本进行简单的加密。2.首先,简单介绍一下Quoted-printable编码转换方式。它主要用于ACSII文本中夹杂少量非

2020-12-31 10:40:38 395

转载 密码学简单理解

1.加密方法可以分为两大类。一类是单钥加密(private key cryptography),还有一类叫做双钥加密(public key cryptography)。前者的加密和解密过程都用同一套密码,后者的加密和解密过程用的是两套密码。历史上,人类传统的加密方法都是前一种,比如二战期间德军用的Enigma电报密码。莫尔斯电码也可以看作是一种私钥加密方法。2.在单钥加密的情况下,密钥只有一把,所以密钥的保存变得很重要。一旦密钥泄漏,密码也就被破解。3.在双钥加密的情况下,密钥有两把

2020-12-31 10:34:00 148

转载 谈谈MVC模式

1.如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。MVC模式就是架构模式的一种,它对我的启发特别大。我觉得它不仅适用于开发软件,也适用于其他广泛的设计和组织工作。下面是我对MVC模式的一些个人理解,不一定正确,主要用来整理思路。2.MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。1)

2020-12-31 10:21:43 113

转载 ASCII,Unicode 和 UTF-8

一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。ASCII 码一共规定了128个字符的编码,比如空格S

2020-12-31 10:00:26 100

转载 非对称加密算法--RSA加密原理

>[密码](https://baike.baidu.com/item/%E5%AF%86%E7%A0%81)学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。#### 密码学发展史在说RSA加密算法之前, 先说下密码学的发展史。其实密码学的诞生,就是为了运用在战场,在公元前,战争之中出现了秘密书信。在中国历史上最早的加密算法的记载出自于周朝兵书《六韬.龙韬》中的《阴符》和《阴书》。在遥远的西方,在希罗多德(Herodotus)的《..

2020-12-29 10:48:58 370

转载 深入浅出:原码,反码,补码及减法

众所周知(我不说大家也知道),计算机内部是以二进制存储数据的,对于不同的数据类型可能存储的格式含义不一样。例如有符号整数,最高位是符号位,其余代表数值;那么它在计算机里要怎么运算表达呢,我们下面来一步步说一下举个例子,1+1怎么表达呢?1的二进制表达为(为了方便用1个字节表示):00000001那么1+1即表达为:00000001 + 00000001 = 00000010 = 2是吧,这样子是对的,so easy。2.再接着看下面,2-1怎么表达呢?2的二进制为:000...

2020-12-25 18:14:42 591

转载 浅谈 -128的原码 反码 补码

以java中byte表示:2字节 8位,-128 首先首位1表示负数,128的正数为1000 0000(其实是-128),然后拼接为1 1000 0000,大于8位,则取低8位,为1000 0000,所以-128就是1000 0000, 就是计算机的-0,当然java可能对-0这样的表示有特殊处理(只是猜测);首先说一句在8位2进制中超粗范围时候符号位不仅是符号位还是数值位,其实这时候数据是10000000就是-128 就是所谓的-0,但是这里表示的-128 因为-0 +0补码表示是一样的所以使用00

2020-12-25 18:13:29 17047 1

转载 雪花算法的原理和实现Java

SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解。这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。给大家举个例子吧,比如下面那个 64 bit 的 long 型数字:..

2020-12-25 15:26:57 117

转载 获取authorization_刚教完面试官OAuth 2.0为什么要先获取授权码code

xx软件最终是通过访问令牌请求到我的公众号里的文章。访问令牌是通过授权码换来的。你有想过为何要用授权码换令牌,而不直接颁发访问令牌呢?OAuth 2.0 的角色资源拥有者、客户端(即第三方软件)、授权服务和受保护资源。资源拥有者=> 我 客户端 => xx软件 授权服务 -> 公众号开放平台的授权服务 受保护资源 -> 我的公众号里的文章一定要授权码吗?第 4 步授权服务生成授权码,倘若我们不要授权码,这步直接返回访问令牌access_token 。那就不

2020-12-24 16:31:56 456 2

转载 http 长连接和短连接介绍

对于http长连接和短连接这样的概念,不知道大家了解多少,今天的文章将给大家介绍http短连接和长连接的定义、http协议以及短连接长连接的操作过程等内容。对于http长连接和短连接这样的概念,不知道大家了解多少,今天的文章将给大家介绍http短连接和长连接的定义、http协议以及短连接长连接的操作过程等内容。1、HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由

2020-11-25 17:54:21 180

转载 简单理解网络IO

简单理解网络IO什么是网络IO?首先用大白话的方式,方便自己理解网络IO本质上也是IO的一种,一般的IO就是数据的输入输出,再简单来说,就是从一个地方,到另一个地方 在计算机中,能够存储数据的,一定是存储介质,而且一般采用的存储结构无非是数组、链表、树。而且我们知道,网络中的数据是以二进制的形式传输的,所以,可以简单认为,数据就是二进制数组中的元素。 那么,就有一个简单的推论,网络IO其实就是数据从一个数组到另一个数组的过程。接下来,就把这个数组具体化。稍微提高一点专业性网络IO的硬件

2020-11-25 17:48:56 701

原创 ByteArrayOutputStream或ByteArrayInputStream是可以不关闭的

因为ByteArrayOutputStream或ByteArrayInputStream指向内存中的数据,不需要通过操作系统,所以虚拟可以直接进行垃圾回收。他的colse()方法中其实是空的,其字类ByteInputStream中有重写cloes()方法,但也只是调用了reset()方法,并没有实际的关闭什么资源,而这个流不用后被GC清除了之后也就不会占用别的什么资源; 所以及其严格的来说,并不是所有的IO流不关闭都会占用系统资源;只是一些像文件流会占用文件资源、数据库连接会占用连接池的连接...

2020-11-25 16:35:01 4152

转载 Spring Aop之Advisor解析

文章转载于:https://zhuanlan.zhihu.com/p/44094896在上文Spring Aop之Target Source详解中,我们讲解了Spring是如何通过封装Target Source来达到对最终获取的目标bean进行封装的目的。其中我们讲解到,Spring Aop对目标bean进行代理是通过AnnotationAwareAspectJAutoProxyCreator.postProcessAfterInitialization()进行的,Spring Aop的代理主要分.

2020-11-05 17:48:05 795

转载 Spring中的5种Aop常见应用方式(扫描注解方式)

转载于:https://zhuanlan.zhihu.com/p/103236714提到Aop,不得不提的那就是动态代理;关于动态代理,可以参考前面写过的文章加耀:浅谈动态代理​zhuanlan.zhihu.com一个完整的AOP是由多个元素组成的,AOP由切面、切点、连接点、目标对象、回调 五个元素构成;就好比aspect:切面,通俗的讲可以理解为一个功能,比如具备某项能力(如:帮助他人是一种能力)),定义为一个切面;pointCut:切点,可以理解为一种匹配规则,比如哪些人需要.

2020-11-05 15:46:23 1836

转载 Spring中的AOP的使用(xml与方法路径注解方式)

原文地址:https://blog.csdn.net/weixin_40055163/article/details/108511997?biz_id=102&utm_term=spring%E4%B8%AD%E7%9A%84aop%E4%BD%BF%E7%94%A8&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-108511997&spm=1018.2118.3001

2020-11-05 15:27:18 332

原创 反射及动态代理

本文引用极客时间“动态代理是基于什么原理?”文章中“公号-代码荣耀”的评论1 关于反射反射最大的作用就是在我们可以不在编译的时候知道某个对象的类型,而是通过运行时知道、获取、操作某个类功能:●在运行时判断任意一个对象的所属类●在运行时构造任意一个类的对象●在运行时判断任意一个类的所有成员变量和方法●在运行时调用任意一个对象的方法特点:可显示在编译时不好实现的功能(即可在运行时动态实现,即编译时不能确定类型);因为可以越过权限检查,所以会破坏封装性,可能导致安全性问..

2020-11-05 10:30:27 47

转载 Java中的四种引用及其用处

Java中存在四种引用,StrongReference(强引用) 、SoftReferenc(软引用) 、WeakReferenc(弱引用)、PhantomReference(虚引用).虽然不常用,但是对于理解Java的回收等级还是很有帮助的,一句话来说这些引用只是不同回收等级的一种表现形式.StrongReference(强引用)强引用是最经常使用的一种引用,如new操作创建的对象就属于强引用.如下代码,对于强引用要记住无论如何JVM都不会去回收其内存.Object obj = n.

2020-11-04 17:12:29 313

转载 Java的三种代理模式

原文链接:https://www.cnblogs.com/leeego-123/p/10995975.htmlJava的三种代理模式1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位..

2020-10-16 17:56:52 78

转载 spring的两种常用事务传播属性说明

原文链接:https://blog.csdn.net/qianxiaopeng/article/details/82427689常用的两种传播属性:1.REQUIRED如果存在当前事务则用当前事务,如果不存在当前事务,则新建一个事务2.REQUIRES_NEW如果当前存在事务则挂起当前事务,开启一个新事务,新事务执行完毕后,唤醒之前挂起的事务,继续执行。如果不存在当前事务,则新建一个事务第一种情况:执行controller以后事务会回滚,两条数都插不进去。(propagat...

2020-10-16 17:31:03 94

转载 java中的异常

原文链接:https://zhuanlan.zhihu.com/p/93722021java的异常是一个面试高频问题,而且在学习java的时候也是一个基础而且重要的问题。这篇文章结合着面试问题对java的异常体系进行一个梳理。1、体系梳理Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error和Exception。其中 Error 用来表示 JVM 无法处理的错误,Exception 又分为两种:(1)受检异常:需要用 try…catch… 语句捕获并进行处理,...

2020-10-16 16:54:39 104

转载 理解OAuth 2.0

以下内容转载于http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html作者:阮一峰日期:2014年5月12日OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。更新:我后来又写了一组三篇的《OAuth 2.0 教程》,更加通俗,并带有代码实例,欢迎阅读。一...

2020-08-17 11:32:37 103

转载 我们必须要知道的RESTful服务最佳实践

以下内容转载于https://blog.csdn.net/kebi007/article/details/80614157?utm_source=blogxgwz7看过很多RESTful相关的文章总结,参齐不齐,结合工作中的使用,非常有必要归纳一下关于RESTful架构方式了,RESTful只是一种架构方式的约束,给出一种约定的标准,完全严格遵守RESTful标准并不是很多,也没有必要。但是在实际运用中,有RESTful标准可以参考,是十分有必要的。实际上在工作中对api接口规范、命名规则、返.

2020-08-17 10:35:28 275

转载 彻底理解 RESTful

内容转载于https://zhuanlan.zhihu.com/p/37980590内容列表REST 的出处 REST 的概念 REST 的推导与其特征 REST 与 HTTP 、URI 的关系 REST 的使用示例与描述 开发 RESTful API 的流行框架 总结REST 的出处REST 这个概念是 Roy Thomas Fielding2000 年在加州大学欧文分校 (UNIVERSITY OF CALIFORNIA, IRVINE) 的 博士论文 中提出...

2020-08-17 10:03:31 252

转载 Java常用锁的使用

Java常用锁的使用详见:https://zhuanlan.zhihu.com/p/132714367

2020-07-17 14:17:36 187

转载 java中共享变量的可见性:volatile与synchronized 

1.volatile 由关键字volatile修改的线程共享变量具有内存可见性,每次读取此变量时都会从主内存中读取,每次修改此变量时都会写到主内内存中,是真正的在任何时候都具有可见性。原理:在执行cpu命令层面应用CAS算法,实现原子性。2. synchronized以下内容引用于https://www.cnblogs.com/hupu-jr/p/8397911.html,有少许修改。最近在看<Java并发编程实战>这本书,看到共享变量的可见性,其中说到“加锁的含义不仅仅局限于互..

2020-07-03 13:53:56 283

原创 Java锁Synchronized不同用法的区别

一、Synchronized锁用法示例:1)加在方法上:非静态方法:public synchronized void test(){...}静态方法: public static synchronized void test2(){...}2)加在代码锁类锁public void test(){ ... synchronized (ObjLockTest.class){ ... } ...}对象锁public void .

2020-07-03 09:25:30 377

原创 java中sleep、interrupt、wait、notify、join、yield用法

1)interrupt是Thread对象的方法,用于修改线程的打断状态为true(可以用isInterrupted()来获取),除此之外未做任何其他事,所以interrupt并不会去真正的打断某个线程的运行状态或杀死某个线程;但是,当本线程在sleep阻塞或者wait阻塞或者join阻塞(本质还会wait阻塞)时,如果被interrupt,那么会在sleep或wait或join方法内抛出异常InterruptedException(可理解为本线程正在阻塞,没办法设置interrupt的状态,所以抛出异.

2020-07-03 09:25:17 439

原创 浅谈java中继承Thread与实现Runable的区别

java中现实多线程可以继承Thread,也可以实现Runable; 一般的用法都是重写或实现run方法,然后用Tread调用start方法(注意,只有Thread有start方法;Runable是没有start方法的); 在我们通常简单的用多线程时尽量通过实现Runable的方式;因为实现R相对于继承T有如下有点: 1. 继承了T后不能再继承别的类,但实现R...

2019-03-07 21:11:34 459

空空如也

空空如也

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

TA关注的人

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