自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

古笑来的博客

愿今日之所作,可为君行一时方便!

  • 博客(191)
  • 资源 (11)
  • 收藏
  • 关注

原创 java相关问题

jvm如何判断一个同一个对象?全类名相同 类加载器相同final 能修饰什么不可被继承类不可覆盖的方法只能初始化一次的变量interface默认修饰级别默认的修饰级别是public, 子类的等级不能小于超类接口与子类类只能单继承 接口可以多实现private default protect public区别什么都不写,默认的是default 不需要书写public: Java语言中du访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许

2021-12-17 11:12:34 692

原创 java虚内存

什么是虚拟内存:内存碎片和外部磁盘组成一块内存,来欺骗程序有一块连续的内存

2021-12-17 11:12:25 195

原创 java进制

进制8 bit 位(-128~127) = 1byte B 字 字节1024B = 1KB1024KB = 1M

2021-12-17 11:12:13 164

原创 java异常

说一下Java中的异常https://www.cnblogs.com/lulipro/p/7504267.html总体上我们根据Javac对异常的处理要求,将异常类分为2类。非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try…catch…finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码,而不是

2021-12-17 11:12:01 119

原创 进程和线程

说一下进程和线程线程是真正执行计算的,线程与线程之间可以共享内存,通信也比较容易。线程运行在进程里,进程有固定的内存大小,可以做到资源隔离。进程与进程之间的通信比较麻烦,需要走网络通信。...

2021-12-17 11:11:49 197

原创 java对象组成

对象的组成mark word组成

2021-12-17 11:11:17 206

原创 java编码

java基本类型所占的字节1.位(bit)来自英文bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只可以表示0和1两种状态;两个二进制位可以表示00、01、10、11四种状态;三位二进制数可表示八种状态……。2.字节(byte)字节来自英文Byte,音译为“拜特”,习惯上用大写的“B”表示。字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8

2021-12-16 10:51:53 81

原创 线程问题排查

系统资源 线程 内存 网络带宽 磁盘IO线程Cpu(s):34.0% us: 用户空间占用CPU百分比%CPU:上次更新到现在 应用占用CPU时间的百分比通过上面的显示我们发现Cpu(s)表示的是 所有用户进程占用整个cpu的平均值,由于每个核心占用的百分比不同,所以按平均值来算比较有参考意义。而%CPU显示的是进程占用一个核的百分比,而不是整个cpu(12核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100

2021-12-16 10:51:17 141

原创 java方法签名

方法签名:由方法名称和一个参数列表(方法的参数的顺序和类型)组成。注意:方法签名不包括方法的返回类型。不包括返回值和访问修饰符。重载:同一个类中方法签名不同的方法。重写:方法签名必定相同,返回值必定相同, 访问修饰符 子 > 父, 异常类 子 < 父...

2021-12-16 10:50:42 369

原创 逃逸分析、栈上分配

逃逸分析、栈上分配栈上分配,可以直接随方法的销毁而销毁,减轻jc的压力逃逸分析,可以确定一个对象是否会被其他线程进行访问。1、全局逃逸(GlobalEscape)即一个对象的作用范围逃出了当前方法或者当前线程,有以下几种场景:对象是一个静态变量对象是一个已经发生逃逸的对象对象作为当前方法的返回值2、参数逃逸(ArgEscape)即一个对象被作为方法参数传递或者被参数引用,但在调用过程中不会发生全局逃逸,这个状态是通过被调方法的字节码确定的。3、没有逃逸即方法中的对象没有发生逃逸..

2021-12-16 10:48:57 131

原创 jdk、jre、jvm

JDK的组成jre 加 工具类库jre是什么Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。也是通过它,Java的开发者才得以将自己开发的程序运行。与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。jvm是什么JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核

2021-12-16 10:48:47 84

原创 类成员执行顺序

静态 常量 构造方法 各自从上倒下执行,和其他的没有关系。静态方法会被加载,不会被执行。

2021-12-16 10:48:36 106

原创 jdm常量池

常量池(静态常量池):编译时每个class文件中都存在常量池,class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池(Constant pool table),用于存放编译期生成的各种字面量和符号引用。运行时常量池:运行时常量池这部分内容,在类初始化进入运行时常量池中存放字符串常量池:只会存储一份,被所有的类共享。创建字符串之前检查常量池中是否存在,如果存在则获取其引用,如果不存在则创建并存入,返回新对象引用。常量池的演变1.7之前1.71.8方法区 是一种理

2021-12-16 10:47:47 92

原创 jmm内存模型

jvm与jmm关系个人理解jvm包括jmm,jmm只是内存方面的定义。什么是jmmJMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到一致的并发效果。jmm主要包括什么堆 方法区 栈 本地方法栈 程序计数器java7和java8的内存模型有什么不一样最大

2021-12-16 10:47:23 2345 2

原创 jvm概念理解

每一个程序jvm都会为其分配一个jvm实例每一个jvm实例有自己的堆,堆为一块内存区域,存放java对象每一个线程有自己的栈(栈,本地方法栈 - 看虚拟机的实现),栈存放引用堆是堆(heap),栈是栈(stack),堆栈是栈。我很不喜欢“堆栈”这种叫法,容易让新人掉坑里。JVM里的“栈”(stack)存放基本类型的变量数据和对象的引用。但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)JVM规范让每个Java线程拥有自己的独立的JVM栈,也就是

2021-12-16 10:47:11 73

原创 jvm类加载器

通过什么来加载class类类加载器类加载器的任务是什么类加载器的任务是根据一个类的全类名来读取此类的二进制字节流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例。你知道哪几种类加载器3种引导(Bootstrap)类加载器扩展(Extension)类加载器系统(System)类加载器(也称应用类加载器)自己写的类加载器引导(Bootstrap)类加载器启动类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现的,是虚拟机自身的一部分,它负责将

2021-12-16 10:46:57 278

原创 gc-root

什么区域的对象可以作为gc root虚拟机栈(栈帧中的本地变量表)中引用的对象本地方法栈中 JNI(即一般说的 Native 方法)引用的对象方法区中 静态属性引用的对象方法区中 常量引用的对象finalize它是Object中的方法Java虚拟机一旦通过刚才提到的“根搜索算法”判断出某对象处于可回收状态时,会判断该对象是否重写了Object类的finalize方法,如果没,则直接回收。如重写过finalize方法,而且未执行过该方法,则把该对象其放入F-Queue队列,另个线程会定时遍

2021-12-15 10:05:50 128

原创 oom内存泄露

六大oom都有那些?堆溢出java.lang.OutOfMemoryError: Java heap space栈溢出java.lang.StackOverflowError元空间溢出java.lang.OutOfMemoryError: Metaspace直接内存溢出java.lang.OutOfMemoryError: Direct buffer memory创建线程过多 linux默认一个应用最多1024个线程,这个数量是可以调的java.lang.OutOfMemoryErro

2021-12-15 10:05:12 235

原创 双亲委派机制

你写个类加载器,这个累加加载器就会生效么?不会那在类加载过程中使用的机制或者方法是什么?双亲委派机制什么是双亲委派机制如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是使用代理模式,把这个请求委派给父类加载器去完成。每一个层次的类加载器都是如此。因此,所有的加载请求最终都应该传送到顶层的启动类加载器中。只有当父加载器反馈自己无法完成这个加载请求时(搜索范围中没有找到所需的类),子加载器才会尝试自己去加载。双亲委派的优势采用双亲委派模式的是好处是Java类随着它的类加

2021-12-15 10:04:39 98

原创 jvm垃圾回收

四大垃圾回收算法引用计数法:每次引用对象就被计数器+1,失去引用的时候就-1,但对于复杂引用,需要额外的开销。目前几乎不用这个算法。(标记)复制:将内存区域划分成两个等大的区域,同一时间只能使用一半的区域。先标记,再移动活着的对象到另一个空区域。执行效率不可控 浪费空间 垃圾对象少的时候,需要复制大量的对象标记清除:先标记在清除。 执行效率不可控 内存碎片,当给大对象分配内存空间的时候,都是内存碎片,没有连续的大内存,就有会触发gc标记整理:标记并将活着的对象移动到内存空间的一端,然后将存活对

2021-12-15 10:03:46 481

原创 类加载过程

class执行执行的流程 加一次验证准能解初来什么是类加载每个编写的".java"拓展名类文件都存储着需要执行的程序逻辑,这些".java"文件经过Java编译器编译成拓展名为".class"的文件,".class"文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的".class"文件,并创建对应的class对象。将class文件加载到虚拟机的内存,这个过程称为类加载。类加载的过程的五步加载:通过一个类的完全限定查找此类字节码文件,并利用字节码文件创建一个Cl

2021-12-15 09:59:31 60

原创 慢的yong-gc怎么排查

因为新生代垃圾收集算法采用的复制算法,因为新生代存活对象过多,导致GC时间长因为程序书写不当进入SafePoint的时间过长,导致GC时间过长清理各类引用的时间过长加入参数,看gc过程中的详细日志,执行时间。dump下对象来,结合分析。SafePoint是程序中的某些位置,线程执行到这些位置时,线程中的某些状态是确定的,在safePoint可以记录OopMap信息,线程在safePoint停顿,虚拟机进行GC。线程停顿方式有两种,抢先式中断和主动式中断:抢先式中断:虚拟机需要GC时,中断所有线程

2021-12-15 09:57:58 1002

原创 minor-gc为什么比full-gc快

minor gc :①minor gc 需要扫描的对象很少②扫描后需要复制有效对象也很少full gc:①扫描的对象较多(young和old区都要),②真正需要清除的往往较少(能够分配到老年代的往往都是老油条对象了),换句话说需要“整理/压缩/移动”的对象数量较多。...

2021-12-15 09:56:45 109

原创 jvm先关问题

Java内存模型 (JMM) 硬件内存架构1.8 堆 栈 本地栈 计数器 元空间常量池、运行时常量池、字符串常量池、静态变量、方法区 在哪常量池又称静态常量池,在class类里面,初始化的是后被加载到运行常量池中运行时常量池在元空间(方法区)中字符串常量池在堆中静态变量在元空间(方法区)中方法区是jmm理论模型中的东西,hotsport在1.7实现叫做永久代,在1.8是元空间逃逸分析、栈上分配?经过逃逸分析的对象被分配到栈上。对象只存在与方法中,没有跳出方法的引用对象,可以称作逃逸对象

2021-12-15 09:56:11 61

原创 rocketmq死信队列

当一条消息消费失败时,RocketMQ会进行一定次数的重试。重试的结果也很简单,无非就是在第N次重试时,被成功消费。或者就是经过M次重试后,仍然没有被消息。这通常是由于消费者在正常情况下无法正确地消费该消息。此时,RocketMQ不会立即将消息丢弃,而是将其发送到该消费者对应的特殊队列中去。(1)死信消息具有以下特性:不会再被消费者正常消费。有效期与正常消息相同,均为 3 天,3 天后会被自动删除。因此,请在死信消息产生后的 3 天内及时处理。(2)死信队列具有以下特性:一个死信队列对应一个 Gr

2021-12-15 09:55:33 444 1

原创 rocketmq延时队列

RocketMQ延迟队列的核心思路是:所有的延迟消息由producer发出之后,都会存放到同一个topic(SCHEDULE_TOPIC_XXXX)下,不同的延迟级别会对应不同的队列序号,当延迟时间到之后,由定时线程读取转换为普通的消息存的真实指定的topic下,此时对于consumer端此消息才可见,从而被consumer消费。...

2021-12-15 09:55:19 661

原创 webSocket

webSocket1、简介WebSocket协议是基于TCP的一种新的网络协议,和http协议一样属于应用层协议,它实现了浏览器与服务器全双工(full-duplex)通信,也就是允许服务器主动发送信息给客户端。我在实现二维码扫描登录时曾使用过,有了它就不需要通过轮询或者建立长连接的方式来使客户端实时获取扫码状态,因为当扫码后,服务器端可以主动发送消息通知客户端。2、webSocket和http的区别http链接分为短链接和长链接,短链接是每次请求都要重新建立TCP链接,TCP又要三次握手才能建立,

2021-12-14 09:32:04 1735

原创 文件零拷贝

https://blog.csdn.net/zhangcongyi420/article/details/103099441什么是零拷贝? 文件nio 即 零拷贝读信息需要 先读到内核缓存 再读到用户缓冲区写信息需要 先写到内核缓存 在写到网卡或磁盘零拷贝就是不需要拷贝到 用户缓冲区,也不需要从用户缓冲区拷贝出去,而是直接引用内核缓存在Java中就是不需要拷贝到堆,也不需要从堆拷贝出去。java中直接操作 直接内存,可以达到零拷贝的目的。数据读到内核缓冲区,可以通过映射直接映射到java的直接

2021-12-14 09:31:30 353

原创 网络相关面试题

什么是跨域浏览器访问不同源的东西,就是跨域同源指的是是么?http ip port 一样,则为同源怎么解决同源?后端服务允许代理服务器 前端jsonb 只能访问get请求,不推荐正向代理客户的请求,和代理服务器发出的请求是一个相同的请求。是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。反向代理客户的请求,和代理服务器发出的请求可以是一个不同的请

2021-12-14 09:30:43 56

原创 netty

https://zhuanlan.zhihu.com/p/196759269netty是什么?使用 NIO 编写代码太难了一个使用 NIO 编写的 Server 端如下,可以看出还是整体还是比较复杂的,并且代码读起来不是很直观,并且还可能由于 NIO 本身会存在 Bug。这时候netty就诞生了,它是一个基于 NIO 的 client-server(客户端服务端)网络通信框架,使用它可以快速简单地开发网络应用程序。在java nio的基础上做了很多优化,比直接使用 Java 核心 API 有更高的吞吐

2021-12-14 09:29:58 198

原创 网络nio

IO:网络IO、磁盘IO。IO流就是输入输出,而输入和输出的地方是各式各样的。所有的io说的都是操作系统和应用之间的事为什么说IO都是针对系统的,因为客户端和服务端, 都是在自己的宿主机子上,向宿主机询问资源,只是这个资源可能是别的机子通过网络发过去的。如果是通过网络发过去的,那么它就是在行宿主机的网卡索要,和另一个服务没关系。网络io,网卡(磁盘) 到 内核空间 再到 用户空间 进行操作https://www.cnblogs.com/flashsun/p/14591563.html四种IO模型

2021-12-14 09:29:30 1019

原创 长连接、短连接

tcp:是一种协议,也是一种定义,操作系统会实现它发送一个http请求:浏览器构造数据(ip:port connection:keep-alive)调用系统api(socket.__sys_connect()),实现tcp连接发送数据短连接:tomcat处理完这个请求并返回之后,断开连接。浏览器接受到响应之后,断开连接。长连接:谁都不会去断开这个连接。tomcat可以配置这个连接,被复用到少次之后,断开。默认是100滑动窗口,浏览器每次想服务器发送报文的时候,都会去问一下服务器你的窗

2021-12-14 09:26:20 261

原创 http、https、http2

http2帧化:头信息帧 数据信息帧连接复用:一个报文分解成多个帧 在一条链路上传输,回来也一样hpack压缩:客户端和服务端维护一个表,存储请求头,如果下次请求发生变化,只需要把头中变化的信息带上就行了,其他的都不用传,因为服务端也已经缓存。http3:因为http2 使用的是一个连接,那个有一个丢包后,后边其他的包都要等待重排。http3使用基于udp的QUIC解决这个问题。...

2021-12-14 09:22:56 1307

原创 计算机网络协议

有那四层协议和八层协议TCP的三次握手和四次挥手为什么要四次分手?TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告

2021-12-14 09:21:59 1745

原创 数据库分库分表

什么情况下分库,什么情况下分表请求数据库的网络io过大,带宽不够用;数据库磁盘io过大,降低读写性能 分库单表数据量过大,优化sql,建立索引,查询依然很慢 分表io瓶颈 分库cpu瓶颈 分表垂直切分?是根据业务来拆分数据库,同一类业务的数据表拆分到一个独立的数据库,另一类的数据表拆分到其他数据库。比如说一个新零售的电商数据库,我们可以把跟商品相关的数据表拆分成一个数据库,然后在这些数据表的基础之上,构建出商品系统。水平切分按照某个字段的某种规则,把数据切分到多张数据表。一张数

2021-12-14 09:19:30 271

原创 数据库相关面试题

分布式唯一id的生成?利用数据库自增ID优点:最简单。 缺点:单点风险、单机性能瓶颈。Twitter Snowflake优点:高性能高可用、易拓展。 缺点:需要独立的集群以及ZK。美团做法时间戳+用户标识码+随机数优点:方便、成本低。基本无重复的可能。自带分库规则,这里的用户标识码即为用户ID的后四位,在查询的场景下,只需要订单号就可以匹配到相应的库表而无需用户ID,只取四位是希望订单号尽可能的短一些,并且评估下来四位已经足够。可排序,因为时间戳在最前面。缺点:长度稍长,性能要比i

2021-12-14 09:19:11 287

原创 spring传播行为

spring七种事务传播行为

2021-12-13 14:01:23 162

原创 数据库的索引

覆盖索引从索引中就能查到的记录联合索引是什么多个字段建立的一个索引。如果查询结果只需要索引中的字段也可以避免回表聚簇索引、也叫一级索引一张表中只有个一索引索引,一般是主键索引(没有主键的时候会用列号),他们的叶子节点上存储的是正行数据。非聚簇索引、也叫二级索引、也叫辅助索引叶子节点上存储的是数据块的指针(myisam中是存储地址 innodb中是主键或列号),需要二次查找。对于mysql中两种引擎myisam innodb来说,myisam中都是非聚集索引,innodb中一定有一个非聚集索

2021-12-13 14:00:42 56

原创 数据库的隔离机制

数据库的四大特性隔离性(Isolation)持久性(Durability)一致性(Consistency)原子性(Atomicity)独持一原(idca):一致性 是说事务结束后不能破坏数据库原有的约束。事务四大特性? 独持一原(idca)隔离性(Isolation): 如果2个事务 T1 和 T2 同时运行,事务 T1 和 T2 最终的结果是相同的,不管 T1和T2谁先结束。持久性(Durability): 一旦事务提交,不管发生什么(崩溃或者出错),数据要保存在数据库中。一致性(Co

2021-12-13 13:55:03 1940

原创 mysql中的mmr

mrr是什么全称是 Multi-Range Read Optimization将随机 IO 转化为顺序 IO 以降低查询过程中 IO 开销的一种手段不开启mrr便会想上图一样,来回切换磁盘读取数据,降低了IO开销对于 Myisam,在去磁盘获取完整数据之前,会先按照 rowid 排好序,再去顺序的读取磁盘。对于 Innodb,则会按照聚簇索引键值排好序,再顺序的读取聚簇索引。优化器将二级索引查询到的记录放到一块缓冲区中;如果二级索引扫描到文件的末尾或者缓冲区已满,则使用快速排序对缓冲区中的内

2021-12-13 13:53:49 915 1

Chrome6.5.7-谷歌浏览器手势插件

Chrome6.5.7-浏览器手势插件-完全符合国人习惯-比谷歌商城中的好用N倍 留下您的评价,让更多人看到,为他人行方便!

2018-10-19

系统分析与设计-旅游信息管理系统-word文档(各种图设计)-源码-sq文件一应俱全

系统分析与设计-旅游信息管理系统-word文档(各种图设计)-源码-sq文件一应俱全-部署简单方便

2018-10-19

新闻管理系统-jsp大作业-java大作业-sq文件-源码-word文档

家乡菜学习系统-jsp大作业-java大作业-sq文件-源码-word文档,文件齐全,部署方便简单

2018-10-19

网上交友平台系统-jsp大作业-java大作业-sq文件-源码-word文档

网上交友平台系统-jsp大作业-java大作业-sq文件-源码-word文档,文件齐全,部署方便简单

2018-10-19

家乡菜学习系统-jsp大作业-java大作业-sq文件-源码-word文档

家乡菜学习系统-jsp大作业-java大作业-sq文件-源码-word文档,文件齐全,部署方便简单

2018-10-19

超市管理系统-jsp大作业-java大作业-sql文件-源码-word文档

超市管理系统-jsp大作业-sql文件-源码-word文档,简单易懂,文档齐全,部署方便简单

2018-10-19

jsp大作业-sql文件-源码-word文档

jsp大作业-sql文件-源码-word文档,简单易懂,文档齐全,部署方便简单

2018-10-19

ACM训练系统-jsp大作业-sql文件-源码-word文档

ACM训练系统-jsp大作业-sql文件-源码-word文档,简单易懂,文档齐全,部署方便简单

2018-10-19

旅游信息管理系统-SSH框架大作业-java大作业-sql文件-源码-ppt-word

旅游信息管理系统-java大作业,框架大作业都可用,工程文档俱全sql文件-源码-ppt-word,文档齐全,部署方便简单

2018-10-19

空空如也

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

TA关注的人

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