<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[古笑来的博客]]></title><description><![CDATA[愿今日之所作,可为君行一时方便!]]></description><link>https://blog.youkuaiyun.com/m0_37987402</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_37987402]]></copyright><item><title><![CDATA[java相关问题]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969728</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969728</guid><author>m0_37987402</author><pubDate>Fri, 17 Dec 2021 11:12:34 +0800</pubDate><description><![CDATA[jvm如何判断一个同一个对象？
全类名相同  类加载器相同
final 能修饰什么
不可被继承类
不可覆盖的方法
只能初始化一次的变量
interface默认修饰级别
默认的修饰级别是public， 子类的等级不能小于超类
接口与子类
类只能单继承  接口可以多实现
private default protect public区别
什么都不写，默认的是default 不需要书写
public： Java语言中du访问限制最宽的修饰符，一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问，而且允许]]></description><category></category></item><item><title><![CDATA[java虚内存]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969752</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969752</guid><author>m0_37987402</author><pubDate>Fri, 17 Dec 2021 11:12:25 +0800</pubDate><description><![CDATA[什么是虚拟内存：
内存碎片和外部磁盘组成一块内存，来欺骗程序有一块连续的内存


]]></description><category></category></item><item><title><![CDATA[java进制]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969770</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969770</guid><author>m0_37987402</author><pubDate>Fri, 17 Dec 2021 11:12:13 +0800</pubDate><description><![CDATA[进制

8 bit 位（-128~127） = 1byte  B  字  字节
1024B = 1KB
1024KB = 1M

]]></description><category></category></item><item><title><![CDATA[java异常]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969783</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969783</guid><author>m0_37987402</author><pubDate>Fri, 17 Dec 2021 11:12:01 +0800</pubDate><description><![CDATA[说一下Java中的异常
https://www.cnblogs.com/lulipro/p/7504267.html
总体上我们根据Javac对异常的处理要求，将异常类分为2类。
非检查异常（unckecked exception）：Error 和 RuntimeException 以及他们的子类。javac在编译时，不会提示和发现这样的异常，不要求在程序处理这些异常。所以如果愿意，我们可以编写代码处理（使用try…catch…finally）这样的异常，也可以不处理。对于这些异常，我们应该修正代码，而不是]]></description><category></category></item><item><title><![CDATA[进程和线程]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969795</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969795</guid><author>m0_37987402</author><pubDate>Fri, 17 Dec 2021 11:11:49 +0800</pubDate><description><![CDATA[说一下进程和线程
线程是真正执行计算的，线程与线程之间可以共享内存，通信也比较容易。线程运行在进程里，进程有固定的内存大小，可以做到资源隔离。进程与进程之间的通信比较麻烦，需要走网络通信。

...]]></description><category></category></item><item><title><![CDATA[java对象组成]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969809</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969809</guid><author>m0_37987402</author><pubDate>Fri, 17 Dec 2021 11:11:17 +0800</pubDate><description><![CDATA[对象的组成
mark word组成

]]></description><category></category></item><item><title><![CDATA[java编码]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969700</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969700</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:51:53 +0800</pubDate><description><![CDATA[java基本类型所占的字节
1.位（bit）来自英文bit，音译为“比特”，表示二进制位。
位是计算机内部数据储存的最小单位，11010100是一个8位二进制数。一个二进制位只可以表示0和1两种状态；两个二进制位可以表示00、01、10、11四种状态；三位二进制数可表示八种状态……。
2.字节（byte）字节来自英文Byte，音译为“拜特”，习惯上用大写的“B”表示。
字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息，规定一个字节由八个二进制位构成，即1个字节等于8个比特（1Byte=8]]></description><category></category></item><item><title><![CDATA[线程问题排查]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969673</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969673</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:51:17 +0800</pubDate><description><![CDATA[系统资源 线程 内存 网络带宽 磁盘IO
线程
Cpu(s)：34.0% us: 用户空间占用CPU百分比
%CPU：上次更新到现在 应用占用CPU时间的百分比
通过上面的显示我们发现Cpu(s)表示的是 所有用户进程占用整个cpu的平均值，由于每个核心占用的百分比不同，所以按平均值来算比较有参考意义。而%CPU显示的是进程占用一个核的百分比，而不是整个cpu（12核）的百分比，有时候可能大于100，那是因为该进程启用了多线程占用了多个核心，所以有时候我们看该值得时候会超过100%，但不会超过总核数*100]]></description><category></category></item><item><title><![CDATA[java方法签名]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121969661</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121969661</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:50:42 +0800</pubDate><description><![CDATA[方法签名：由方法名称和一个参数列表（方法的参数的顺序和类型）组成。
注意：方法签名不包括方法的返回类型。不包括返回值和访问修饰符。
重载：同一个类中方法签名不同的方法。
重写：方法签名必定相同，返回值必定相同， 访问修饰符 子 &gt; 父， 异常类 子 &lt; 父

...]]></description><category></category></item><item><title><![CDATA[逃逸分析、栈上分配]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121945961</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121945961</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:48:57 +0800</pubDate><description><![CDATA[逃逸分析、栈上分配
栈上分配，可以直接随方法的销毁而销毁，减轻jc的压力
逃逸分析，可以确定一个对象是否会被其他线程进行访问。
1、全局逃逸（GlobalEscape）
即一个对象的作用范围逃出了当前方法或者当前线程，有以下几种场景：
对象是一个静态变量
对象是一个已经发生逃逸的对象
对象作为当前方法的返回值
2、参数逃逸（ArgEscape）
即一个对象被作为方法参数传递或者被参数引用，但在调用过程中不会发生全局逃逸，这个状态是通过被调方法的字节码确定的。
3、没有逃逸
即方法中的对象没有发生逃逸

..]]></description><category></category></item><item><title><![CDATA[jdk、jre、jvm]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121945976</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121945976</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:48:47 +0800</pubDate><description><![CDATA[JDK的组成
jre 加 工具类库

jre是什么
Java Runtime Environment（JRE）是运行JAVA程序所必须的环境的集合，包含JVM标准实现及Java核心类库。也是通过它，Java的开发者才得以将自己开发的程序运行。与大家熟知的JDK不同，JRE是Java运行环境，并不是一个开发环境，所以没有包含任何开发工具（如编译器和调试器），只是针对于使用Java程序的用户。
jvm是什么
JVM是Java Virtual Machine（Java虚拟机）的缩写，是整个java实现跨平台的最核]]></description><category></category></item><item><title><![CDATA[类成员执行顺序]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121946026</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121946026</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:48:36 +0800</pubDate><description><![CDATA[静态  常量  构造方法 各自从上倒下执行，和其他的没有关系。静态方法会被加载，不会被执行。

]]></description><category></category></item><item><title><![CDATA[jdm常量池]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121946058</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121946058</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:47:47 +0800</pubDate><description><![CDATA[常量池（静态常量池）：编译时每个class文件中都存在常量池，class文件中除了有类的版本、字段、方法、接口等描述信息外，还有一项信息是常量池(Constant pool table)，用于存放编译期生成的各种字面量和符号引用。
运行时常量池：运行时常量池这部分内容，在类初始化进入运行时常量池中存放
字符串常量池：只会存储一份，被所有的类共享。创建字符串之前检查常量池中是否存在，如果存在则获取其引用，如果不存在则创建并存入，返回新对象引用。
常量池的演变
1.7之前

1.7

1.8

方法区 是一种理]]></description><category></category></item><item><title><![CDATA[jmm内存模型]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121946128</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121946128</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:47:23 +0800</pubDate><description><![CDATA[jvm与jmm关系个人理解
jvm包括jmm，jmm只是内存方面的定义。
什么是jmm
JMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下，内存的访问有一定的差异，所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异，以实现让java程序在各种平台下都能达到一致的并发效果。
jmm主要包括什么
堆 方法区 栈 本地方法栈 程序计数器
java7和java8的内存模型有什么不一样
最大]]></description><category></category></item><item><title><![CDATA[jvm概念理解]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121946155</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121946155</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:47:11 +0800</pubDate><description><![CDATA[每一个程序jvm都会为其分配一个jvm实例
每一个jvm实例有自己的堆，堆为一块内存区域，存放java对象
每一个线程有自己的栈（栈，本地方法栈 - 看虚拟机的实现），栈存放引用
堆是堆（heap），栈是栈（stack），堆栈是栈。我很不喜欢“堆栈”这种叫法，容易让新人掉坑里。
JVM里的“栈”（stack）存放基本类型的变量数据和对象的引用。但对象本身不存放在栈中，而是存放在堆（new 出来的对象）或者常量池中（字符串常量对象存放在常量池中。）
JVM规范让每个Java线程拥有自己的独立的JVM栈，也就是]]></description><category></category></item><item><title><![CDATA[jvm类加载器]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121946170</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121946170</guid><author>m0_37987402</author><pubDate>Thu, 16 Dec 2021 10:46:57 +0800</pubDate><description><![CDATA[通过什么来加载class类
类加载器
类加载器的任务是什么
类加载器的任务是根据一个类的全类名来读取此类的二进制字节流到JVM中，然后转换为一个与目标类对应的java.lang.Class对象实例。
你知道哪几种类加载器
3种
引导（Bootstrap）类加载器
扩展（Extension）类加载器
系统（System）类加载器（也称应用类加载器）
自己写的类加载器

引导（Bootstrap）类加载器
启动类加载器主要加载的是JVM自身需要的类，这个类加载使用C++语言实现的，是虚拟机自身的一部分，它负责将]]></description><category></category></item><item><title><![CDATA[gc-root]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121945936</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121945936</guid><author>m0_37987402</author><pubDate>Wed, 15 Dec 2021 10:05:50 +0800</pubDate><description><![CDATA[什么区域的对象可以作为gc root
虚拟机栈（栈帧中的本地变量表）中引用的对象
本地方法栈中 JNI（即一般说的 Native 方法）引用的对象
方法区中  静态属性引用的对象
方法区中  常量引用的对象
finalize
它是Object中的方法
Java虚拟机一旦通过刚才提到的“根搜索算法”判断出某对象处于可回收状态时，会判断该对象是否重写了Object类的finalize方法，如果没，则直接回收。
如重写过finalize方法，而且未执行过该方法，则把该对象其放入F-Queue队列，另个线程会定时遍]]></description><category></category></item><item><title><![CDATA[oom内存泄露]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121945914</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121945914</guid><author>m0_37987402</author><pubDate>Wed, 15 Dec 2021 10:05:12 +0800</pubDate><description><![CDATA[六大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]]></description><category></category></item><item><title><![CDATA[双亲委派机制]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121945897</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121945897</guid><author>m0_37987402</author><pubDate>Wed, 15 Dec 2021 10:04:39 +0800</pubDate><description><![CDATA[你写个类加载器，这个累加加载器就会生效么？
不会
那在类加载过程中使用的机制或者方法是什么？
双亲委派机制
什么是双亲委派机制

如果一个类加载器收到了类加载的请求，它首先不会自己去尝试加载这个类，而是使用代理模式，把这个请求委派给父类加载器去完成。
每一个层次的类加载器都是如此。因此，所有的加载请求最终都应该传送到顶层的启动类加载器中。
只有当父加载器反馈自己无法完成这个加载请求时（搜索范围中没有找到所需的类），子加载器才会尝试自己去加载。
双亲委派的优势
采用双亲委派模式的是好处是Java类随着它的类加]]></description><category></category></item><item><title><![CDATA[jvm垃圾回收]]></title><link>https://blog.youkuaiyun.com/m0_37987402/article/details/121945766</link><guid>https://blog.youkuaiyun.com/m0_37987402/article/details/121945766</guid><author>m0_37987402</author><pubDate>Wed, 15 Dec 2021 10:03:46 +0800</pubDate><description><![CDATA[四大垃圾回收算法
引用计数法：每次引用对象就被计数器+1，失去引用的时候就-1，但对于复杂引用，需要额外的开销。目前几乎不用这个算法。
（标记）复制：将内存区域划分成两个等大的区域，同一时间只能使用一半的区域。先标记，再移动活着的对象到另一个空区域。执行效率不可控  浪费空间  垃圾对象少的时候，需要复制大量的对象
标记清除：先标记在清除。 执行效率不可控  内存碎片，当给大对象分配内存空间的时候，都是内存碎片，没有连续的大内存，就有会触发gc
标记整理：标记并将活着的对象移动到内存空间的一端，然后将存活对]]></description><category></category></item></channel></rss>