自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 git复习

简单复习git

2022-08-18 12:58:21 2307 1

原创 JVM 那些对象可以被回收

引用计数法有引用+1 断开-1,为0时回收,实现简单循环引用不好处理可达性分析GC Roots引用链上可以存活,没有关联认为已经死哪些对象可以作为GCROOTS虚拟机栈中引用的对象 * 方法区中的静态属性引用的对象 * 方法区常量引用的对象 * 本地方法栈 JNI引用对象 * 虚拟机内部的引用 * 同步锁(synchronized)持有的对象...

2021-08-08 16:52:32 3051

原创 垃圾收集器

CMS老年代,多线程,标记清除算法初始标记:仅标记一下GCRoots能直接关联到的对象,速度很快,没有关联到底,速度很快并发标记:从GC Roots的直接关联对象开始遍历整个对象图的过程,这个过程耗时较长,不需要停顿用户线程,可以与垃圾收集线程一起并发运行为什么?通过什么形式解决了由白到黑的过程重新标记:因用户程序继续运作而导致标记产生变动的那部分对象的标记记录并发清除:清理删除掉标记阶段判断的已经死亡的对象G1多线程region分块收集G1的收集器内存结构完全区别于CMS弱化了Cms

2021-08-08 16:51:38 3024

原创 类加载机制

类加载机制破坏性双亲委派加载JVM在该阶段把数据源(.class文件,jar包,网络等)转换为二进制字节流,并生成一个代表该类的java.lang.Class对象验证确保class文件的字节流中包含的信息符合约束要求准备为类中定义的变量(即静态变量,被static修饰的变量)分配内存并设置类变量初始值;解析将常量池内符号引用替换为 直接引用;符号引用就是Integer,String定义的那些,不知道所引用的类的实际地址,因此只能使用符号引用来代替.,映射为句柄或指针初始化在准备阶段,类

2021-08-08 16:50:24 3032

原创 HashMap源码解读

本文主要是对JDK1.8的HashMap的主要方法实现做了分析,对于一些基础的知识,认为大家在看这篇文章之前是都懂得的,比如哈希表的原理、红黑树的原理!如果大家有不了解这些原理的一定要去看看相关文章,否则如果直接看下面的源码的分析肯定有你看不懂的!数据结构—红黑树(RedBlackTree)的实现原理以及Java代码的完全实现,这是看懂HashMap底层红黑树源码必备的基础知识!数据结构—散列表(哈希表)的原理以及Java代码的实现,HashMap就是一张散列表,这是关于散列表的介绍!文章目录1

2021-08-06 18:51:01 3075

原创 HTTP协议,三次握手四次挥手

Http协议与Https协议HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。HTTP协议传

2021-08-06 18:42:10 147

原创 算法题(自我学习)

有个整数数组 ,里面有奇数和偶数,1)将所有奇数挪到偶数前面,2)保障所有奇数和偶数内部相对顺序不发生变化,3)在原数组上操作o(1)的空间复杂度public class Array {public static void main(String[] args) {int[] arr = {1, 2, 4, 8, 9, 6};int[] ints = orderArray(arr);System.out.println(Arrays.toString(ints));}public static

2021-08-06 18:38:41 121

原创 阿里编码规范

编程规约命名风格代码命名不能以下划线或者美元符号开头或者结尾代码命名不能以中文拼音或者中文拼音与英文混合方式类名使用UpperCamCamelCase风格,但DO、PO、DTO、VO、BO等除外方法名、参数名、变量名统一使用lowerCamelCase,必须遵守驼峰命名常量名全部大写,单词间用下划线隔开抽象类必须以Abstract或者Base开头,异常类必须以Exception结尾,测试类以测试的类的名称开头Test结尾类型与中括号紧挨相连标示数组POJO类中布尔类型变量不要加is前缀

2021-08-05 15:35:19 4416

原创 排序(自我学习)

0、排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。0.3 算法总结0.4 图片名词解释:n: 数据规模k: “桶”

2021-08-04 20:02:19 88

原创 BIO NIO AIO 基本概念(自我学习)

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。BIO我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进

2021-08-04 19:52:12 3052

原创 乐观锁,悲观锁(自我学习)

悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判

2021-08-04 19:51:17 54

原创 计算机网络(自我学习)

Http协议与Https协议HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。HTTP协议传

2021-08-04 19:46:38 3072

原创 MQ(自我学习)

消息队列消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已常见的消息队列RabbitMq ActiveMq ZeroMq kafka等;为什么使用RabbitMq?RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言的。可靠性,RabbitMQ的持久化支持,保证了消息的稳定性;高并发,RabbitMQ使

2021-08-04 19:45:08 200

原创 Java中的代理(自我学习)

1-代理模式代理(Proxy)是一种设计模式。提供了对目标对象另外的访问方式,即通过代理对象访问目标对象,这样的优点是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。编程思想:不随意去修改别人已经写好的代码或者方法,如果需要修改,通过代理的方式来拓展该方法。例子:比如邀请一位明星,那么并不是直接连线邀请明星,而是联系明星的经纪人来达到同样的目的,明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决,这就是生活中的一个代理的例子;图例:

2021-08-04 19:44:00 91

原创 进程、线程、管程、纤程、协程概念以及区别(自我学习)

进程进程是指在操作系统中能独立运行并作为资源分配的基本单位,由一组机器指令、数据和堆栈等组成的能独立运行的活动实体。进程在运行是需要一定的资源,如CPU、存储空间和I/O设备等。进程是资源分配的基本单位,进程的调度涉及到的内容比较多(存储空间,CPU,I/O资源等,进程现场保护),调度开销较大,在并发的切换过程效率较低。为了更高效的进行调度,提出了比进程更轻量的独立运行和调度的基本单位。线程线程能独立运行,独立调度,拥有资源(一般是CPU资源,程序计数器等) 线程调度能大幅度减小调度的成本(相对于

2021-08-04 19:42:36 2566

原创 top K 面试

先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10亿,m为10000)。 优化的方法:可以把所有10亿个数据分组存放,比如分别放在1000个文件中。这样处理就可以分别在每个文件的10^6个数据中找出最大的10000个数,合并到一起在再找出最终的结果。 以上就是面

2021-07-28 18:06:44 68

原创 分布式缓存,本地缓存和数据库

分布式缓存本地缓存和数据库 优缺点本地访问速度快,应用程比关闭就没有了,存的少分布式:数据传输慢,保持数据一致性,高容量数据库:频繁操作性能低,数据一致性高本地缓存的优缺点访问速度快,但无法进行大数据存储本地缓存相对于分布式缓存的好处是,由于数据不需要跨网络传输,故性能更好,但是由于占用了应用进程的内存空间,如 Java 进程的 JVM 内存空间,故不能进行大数据量的数据存储。集群的数据更新问题与此同时,本地缓存只支持被该应用进程访问,一般无法被其他应用进程访问,故在应用进程的集群部署当中

2021-07-27 09:07:43 467

原创 深拷贝和浅拷贝

浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。即默认拷贝构造函数只是对对象进行浅拷贝复制(逐个成员依次拷贝),即只复制对象空间而不复制资源。2. 浅拷贝特点(1) 对于基本数据类型的成员对象,因为基础数据类型是值传递的,所以是直接将属性值赋值给新的对象。基础类型的拷贝,其中一个对象修改该值,不会影响另外一个。(

2021-07-27 09:06:18 58

原创 HashMap小结

jdk 1.8 只有链表长度大于8并且数组长度大于64 才会转换为红黑树hashmap jdk 1.7 的数据结构是 数组加链表当执行put()方法 新加一个entry对象,先判断是否有存在对应的key值,如果有 ,则新的value值去覆盖旧的value值,并返回旧的value值。如果没有,则先判断size是否大于等于阈值(阈值等于table.length*负载因子),如果大于等于且当前bucket下标存在 则说明hashmap需要扩容,扩容后重新计算hash值,然后得到bucket下标,以头插法新

2021-07-27 09:00:21 78

原创 序列化,反序列化

一、序列化、反序列化、使用场景、意义。序列化:将对象写入IO流中;反序列化:从IO流中恢复对象;意义:序列化机制允许将实现序列化的Java对象转换为字节序列,并将字节序列保存在磁盘中,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使地对象可以脱离程序的运行而独立存在。使用场景:所有在网络上传输的对象都必须是可序列化的。如:RMI (远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错。所有必须保存到磁盘的java对象都必须是可序列化的。程序创建的JavaBean最好都实现Seri

2021-07-26 16:58:44 2252

原创 Dubbo

Dubbo 面试题1、为什么要用 Dubbo?随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。就这样为分布式系统的服务治理框架就出现了,Dubbo 也就这样产生了。2、Dubbo 的整体架构设计有哪些分层?**接口服务层(Service):**该层与业务逻辑相关,根据 provider 和 con

2021-07-26 16:57:26 153

原创 RabbitMQ

市面上的消息队列产品有很多,比如老牌的 ActiveMQ、RabbitMQ ,目前我看最火的 Kafka ,还有 ZeroMQ ,去年底阿里巴巴捐赠给 Apache 的 RocketMQ ,连 redis 这样的 NoSQL 数据库也支持 MQ 功能。总之这块知名的产品就有十几种,就我自己的使用经验和兴趣只打算谈谈 RabbitMQ、Kafka 和 ActiveMQ ,本文先讲 RabbitMQ ,在此之前先看下消息队列的相关概念。什么叫消息队列消息(Message)是指在应用间传送的数据。消息可以非常

2021-07-26 16:47:04 58

原创 2021-07-11 JavaBase

除了静态方法,所有的普通方法都是对象调用JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。在Java中用来表示运行时类型信息的对应类就是Class类,Class类也是一个实实在在的类,存在于JDK的java.lang包中。Class类也是类的一种,其创建后的对象称作class对象;手动编写的类被编译后会产生一个Class对象,其表示的是创建的类

2021-07-12 09:05:03 55

原创 2021-07-10 JavaBase

请简述java 128陷阱答案就在Integet的valueOf()方当中,如果我们的数值在-128-127之间的数值都存储在有一个catch数组当中,该数组相当于一个缓存,当我们在-128-127之间进行自动装箱的时候,我们就直接返回该值在内存当中的地址,所以在-128-127之间的数值用==进行比较是相等的。而不在这个区间的数,需要新开辟一个内存空间,所以不相等。普通类可以去实例化调用;抽象类不能被实例化,因为它是存在于一种概念而并非具体。普通类和抽象类都可以被继承,但是抽象类被继承后子类必须

2021-07-11 09:05:47 74

原创 10.29学习笔记

float a =10.0f ; float a =10.0double =10.0 ; double =10.0默认用double写 双精度 (float容易精度丢失)BigDecimalUnicode => utf-8(1-6个字节)char a =‘中’; (char用的是单引号)默认值(全局变量) 整数型:0 ;浮点型:0.0;Boolean:false;char:空;常量名大写 final NUM =10;值不能改变 final(最终的,不可改变的)一、加1操作不同

2020-10-29 22:47:22 173

原创 计算机网络通信过程,加密技术,CA证书

IP 网络部分 主机部分 区域网 主机存储域名和IP地址的关系 DNS服务器OSI七层协议应用层 所有能产生网络流量的程序都叫做应用层程序(.txt不属于)表示层 对不同数据进行处理–(压缩 ,加密)会话层 保证客户端和服务器端进行连接–(session,查杀木马)(木马,需要网络,监控电脑,传输账号密码)(病毒,不需要网络,攻击电脑)传输层 TCP/UDP (TCP可靠传

2020-10-07 19:18:50 2535 1

空空如也

空空如也

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

TA关注的人

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