<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[default789的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/default789</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; default789]]></copyright><item><title><![CDATA[JVM虚拟机栈]]></title><link>https://blog.youkuaiyun.com/default789/article/details/122434394</link><guid>https://blog.youkuaiyun.com/default789/article/details/122434394</guid><author>default789</author><pubDate>Fri, 14 Jan 2022 22:10:00 +0800</pubDate><description><![CDATA[文章目录1.虚拟机栈1.1虚拟机栈出现的背景1.2 内存中的栈与堆1.3 虚拟机栈的基本内容1.3.1 虚拟机栈的特点1.3.2 虚拟机栈的异常1.3.3 设置栈内存大小2.栈的存储单位2.1 栈的运行原理
1.虚拟机栈
1.1虚拟机栈出现的背景

由于跨平台性的设计，Java的指令都是根据栈来设计的。不同平台CPU架构不同，所以不能设计为基于寄存器的。
优点是跨平台，指令集小，编译器容易实现，缺点是性能下降，实现同样的功能需要更多的指令。

1.2 内存中的栈与堆
首先栈是运行时的单位，而堆是存储的单位
]]></description><category></category></item><item><title><![CDATA[JVM内存管理]]></title><link>https://blog.youkuaiyun.com/default789/article/details/122502524</link><guid>https://blog.youkuaiyun.com/default789/article/details/122502524</guid><author>default789</author><pubDate>Fri, 14 Jan 2022 22:07:28 +0800</pubDate><description><![CDATA[文章目录分代策略新生代，老年代，永久代方法区方法区的演进过程方法区结构常量池直接内存JVM常用调优参数堆收集器设置垃圾回收统计信息并行收集器设置堆大小设置吞吐量优先的并行收集器响应时间优先的并发收集器
分代策略
Java Heap java虚拟机中管理内存的最大一块 堆是被所有线程共享的内存区域。在虚拟机启动的时候创建。
所有的对象实例以及数组都要在堆上分配。
栈帧只能存储指向堆中的对象和数组的引用。 对象只能由垃圾回收器移除。
Java堆是收集器管理的主要区域， GC堆 采用的分代收集的算法。

新生代
]]></description><category></category></item><item><title><![CDATA[如何实现并发的原子性、可见性、有序性]]></title><link>https://blog.youkuaiyun.com/default789/article/details/122442055</link><guid>https://blog.youkuaiyun.com/default789/article/details/122442055</guid><author>default789</author><pubDate>Tue, 11 Jan 2022 21:44:59 +0800</pubDate><description><![CDATA[文章目录原子性可见性有序性如何去实现
原子性
是指一个操作是不可中断，即使多个线程一起执行的时候，一个操作一旦开始，就不会被其他线程干扰；简单看几个例子：
1)int x=10;  2)int y=x; 3)x++; 4.x=x+1;
这上面四个语句，区分哪些是原子操作，哪些非原子操作？
1)第一句，直接把10赋值给x的工作内存，这个操作是不可再分的，并且很直接，这就是原子操作；
2)第二句，先读取x的值，然后将x的值写入到y的工作内存，这个可分割，并且不直接，这就不是原子操作 ；
3)第三句，其实和第四句]]></description><category></category></item><item><title><![CDATA[JAVA内存屏障]]></title><link>https://blog.youkuaiyun.com/default789/article/details/122440750</link><guid>https://blog.youkuaiyun.com/default789/article/details/122440750</guid><author>default789</author><pubDate>Tue, 11 Jan 2022 21:23:41 +0800</pubDate><description><![CDATA[文章目录指令重排序什么是内存屏障synchronized和volatilevolatile保证原子性吗？
指令重排序
程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不一定一致，这就是内存乱序访问。内存乱序访问行为出现的理由是为了提升程序运行时的性能。这种内存乱序问题主要是由两种原因引起的：


1.写内存屏障(Store Memory Barrier): 在指令后插入Store Barrier, 能让写入缓存中的最新数据更新写入主内存, 让其他线程可见强制写入主内存, 这种显示调用, CPU就不会因]]></description><category></category></item><item><title><![CDATA[JVM--基础入门]]></title><link>https://blog.youkuaiyun.com/default789/article/details/122379340</link><guid>https://blog.youkuaiyun.com/default789/article/details/122379340</guid><author>default789</author><pubDate>Sun, 09 Jan 2022 11:19:16 +0800</pubDate><description><![CDATA[1.JVM
执行引擎包含三部分：解释器，即时编译器，垃圾回收器

高级语言翻译为机器指令，主要是由执行引擎完成的。
解释器（解释运行，把字节码翻译为机器指令，主要负责翻编译器性能）。
jit及时编译器（编译器后端，主要是把热点代码缓存起来，主要负责编译器性能）组成执行引擎。



JVM 是 java虚拟机，是用来执行java字节码(二进制的形式)的虚拟计算机。
jvm是运行在操作系统之上的，与硬件没有任何关系。
通过java指令 将字节码文件.class 进行解析，首先class文件先通过classlo.]]></description><category></category></item><item><title><![CDATA[Spring04]]></title><link>https://blog.youkuaiyun.com/default789/article/details/120395945</link><guid>https://blog.youkuaiyun.com/default789/article/details/120395945</guid><author>default789</author><pubDate>Mon, 20 Sep 2021 22:51:07 +0800</pubDate><description><![CDATA[Spring事务操作
先附上代码框架

jdbc.properties
prop.driverClass=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/tb2
prop.userName=root
prop.password=12345678

bean1.xml
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframewor]]></description><category></category></item><item><title><![CDATA[Spring03]]></title><link>https://blog.youkuaiyun.com/default789/article/details/120394190</link><guid>https://blog.youkuaiyun.com/default789/article/details/120394190</guid><author>default789</author><pubDate>Mon, 20 Sep 2021 21:11:19 +0800</pubDate><description><![CDATA[1.AOP
（1）面向切面编程（方面），利用 AOP 可以对业务逻辑的各个部分进行隔离，从而使得
业务逻辑各部分之间的耦合度降低，提高程序的可重用性，同时提高了开发的效率。
（2）通俗描述：不通过修改源代码方式，在主干功能里面添加新功能
（3）使用登录例子说明 AOP

2.AOP底层使用动态代理
2.1使用 JDK 动态代理

先附上代码框架

（1）创建接口，定义方法
public interface UserDao {
 public int add(int a,int b);
 public Str]]></description><category></category></item><item><title><![CDATA[Spring02]]></title><link>https://blog.youkuaiyun.com/default789/article/details/120385429</link><guid>https://blog.youkuaiyun.com/default789/article/details/120385429</guid><author>default789</author><pubDate>Mon, 20 Sep 2021 18:31:40 +0800</pubDate><description><![CDATA[1.IOC之引入外部属性文件
以连接数据库为例
jdbc.properties文件
prop.driverClass=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/tb2
prop.userName=root
prop.password=12345678

bean.xml
 引入 context 名称空间
xmlns:context="http://www.springframework.org/schema/context"

&l]]></description><category></category></item><item><title><![CDATA[Spring01]]></title><link>https://blog.youkuaiyun.com/default789/article/details/120272816</link><guid>https://blog.youkuaiyun.com/default789/article/details/120272816</guid><author>default789</author><pubDate>Sun, 19 Sep 2021 21:23:41 +0800</pubDate><description><![CDATA[1.spring
是什么
Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架，它以IOC控制反转和AOP面向切面编程为核心，提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术；还有个强大之处就是可以整合众多的第三方开源框架和类库，所以逐渐成为使用最多的 Java EE 企业级应用的开源框架。
特点
（1）方便解耦，简化开发
（2）Aop 编程支持
（3）方便程序测试
（4）方便和其他框架进行整合
（5）方便进行事务]]></description><category></category></item><item><title><![CDATA[JavaSE -- hash冲突和内存溢出]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119766855</link><guid>https://blog.youkuaiyun.com/default789/article/details/119766855</guid><author>default789</author><pubDate>Tue, 17 Aug 2021 22:10:49 +0800</pubDate><description><![CDATA[hash冲突
源码：1.8
final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
                   boolean evict) {
        Node&lt;K,V&gt;[] tab; Node&lt;K,V&gt; p; int n, i;
        if ((tab = table) == null || (n = tab.length) == 0)
            //首次进入直接进行扩]]></description><category></category></item><item><title><![CDATA[JavaSE --软引用和弱引用]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119766329</link><guid>https://blog.youkuaiyun.com/default789/article/details/119766329</guid><author>default789</author><pubDate>Tue, 17 Aug 2021 21:41:29 +0800</pubDate><description><![CDATA[我们都知道垃圾回收器会回收符合回收条件的对象的内存，但并不是所有的程序员都知道回收条件取决于指向该对象的引用类型。这正是Java中弱引用和软引用的主要区别。如果一个对象只有弱引用指向它，垃圾回收器会立即回收该对象，这是一种急切回收方式。相对的，如果有软引用指向这些对象，则只有在JVM需要内存时才回收这些对象。弱引用和软引用的特殊行为使得它们在某些情况下非常有用。例如：软引用可以很好的用来实现缓存，当JVM需要内存时，垃圾回收器就会回收这些只有被软引用指向的对象。而弱引用非常适合存储元数据，例如：存储Clas]]></description><category></category></item><item><title><![CDATA[JavaSE -- 线程池原理]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119765134</link><guid>https://blog.youkuaiyun.com/default789/article/details/119765134</guid><author>default789</author><pubDate>Tue, 17 Aug 2021 21:08:52 +0800</pubDate><description><![CDATA[线程池（ThreadPool）是一种基于池化思想管理和使用线程的机制。它是将多个线程预先存储在一个“池子”内，当有任务出现时可以避免重新创建和销毁线程所带来性能开销，只需要从“池子”内取出相应的线程执行对应的任务即可。
池化思想在计算机的应用也比较广泛，比如以下这些：


内存池(Memory Pooling)：预先申请内存，提升申请内存速度，减少内存碎片。
连接池(Connection Pooling)：预先申请数据库连接，提升申请连接的速度，降低系统的开销。
实例池(Object Pooling)：循环]]></description><category></category></item><item><title><![CDATA[java入门 -- 深浅拷贝及克隆]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119135966</link><guid>https://blog.youkuaiyun.com/default789/article/details/119135966</guid><author>default789</author><pubDate>Tue, 17 Aug 2021 19:29:20 +0800</pubDate><description><![CDATA[1深拷贝
2浅拷贝
克隆

]]></description><category></category></item><item><title><![CDATA[JavaSE --网络编程]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119567772</link><guid>https://blog.youkuaiyun.com/default789/article/details/119567772</guid><author>default789</author><pubDate>Tue, 10 Aug 2021 22:33:54 +0800</pubDate><description><![CDATA[文章目录InetAddress类IP地址端口号SocketTCP网络编程三次握手，四次挥手UDP网络编程URL编程
InetAddress类
Internet上的主机有两种方式表示地址：
域名(hostName)：www.atguigu.com
IP 地址(hostAddress)：202.108.35.210
netAddress类主要表示IP地址，两个子类：Inet4Address、Inet6Address。 InetAddress 类 对 象 含 有 一 个 Internet 主 机 地 址 的 域 ]]></description><category></category></item><item><title><![CDATA[JavaSE -- IO流]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119532138</link><guid>https://blog.youkuaiyun.com/default789/article/details/119532138</guid><author>default789</author><pubDate>Mon, 09 Aug 2021 16:23:03 +0800</pubDate><description><![CDATA[file类
绝对路径：是一个固定的路径,从盘符开始
相对路径：是相对于某个位置开始
路径分隔符:
windows:\
unix:/
     import jdk.nashorn.api.scripting.ScriptObjectMirror;
import org.junit.Test;

import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * 1. File类的一个对象，代表一个文件或一个文件目录(]]></description><category></category></item><item><title><![CDATA[JavaSE --集合]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119177216</link><guid>https://blog.youkuaiyun.com/default789/article/details/119177216</guid><author>default789</author><pubDate>Sat, 07 Aug 2021 17:24:42 +0800</pubDate><description><![CDATA[1

]]></description><category></category></item><item><title><![CDATA[java入门 -- 面向对象关键字及内部类]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119116557</link><guid>https://blog.youkuaiyun.com/default789/article/details/119116557</guid><author>default789</author><pubDate>Wed, 28 Jul 2021 13:02:18 +0800</pubDate><description><![CDATA[1static

]]></description><category></category></item><item><title><![CDATA[java入门 -- 面向对象之多态]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119052957</link><guid>https://blog.youkuaiyun.com/default789/article/details/119052957</guid><author>default789</author><pubDate>Tue, 27 Jul 2021 19:27:50 +0800</pubDate><description><![CDATA[1 多态

▪  多态是同一个行为具有多个不同表现形式或形态的能力。
▪  父类的引用指向子类的对象(可以应用在抽象类和接口上)。


]]></description><category></category></item><item><title><![CDATA[java入门 -- 异常处理]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119053061</link><guid>https://blog.youkuaiyun.com/default789/article/details/119053061</guid><author>default789</author><pubDate>Sat, 24 Jul 2021 10:50:17 +0800</pubDate><description><![CDATA[异常
1 异常的分类

▪  在Java语言中，将程序执行中发生的不正常情况称为“异常”，Java在编译或运行或者运行过程中出现的错误 (例如要求用户输入数字，但是用户输入了一串字符串，此时就会发生异常)

异常的根接口Throwable,其下有2个子接口，Error和Exception。

▪   Error：指的是JVM错误，这时的程序并没有执行，无法处理；
▪  Exception：指的是程序运行中产生的异常，用户可以使用处理格式处理。


运行时异常

▪  是指编译器不要求强制处置的异常。一般是指]]></description><category></category></item><item><title><![CDATA[java入门 -- 面向对象之继承]]></title><link>https://blog.youkuaiyun.com/default789/article/details/119045479</link><guid>https://blog.youkuaiyun.com/default789/article/details/119045479</guid><author>default789</author><pubDate>Fri, 23 Jul 2021 22:54:32 +0800</pubDate><description><![CDATA[1 继承
1.1 何为继承

▪ 继承是利用现有的类创建新类的过程，现有的类称作基类（父类）(超类)，创建的新类称为派生类（子类），派生类可以拥有所有基类的非私有的属性和方法。

1.2 继承的规则

▪ 子类不能直接访问父类中私有的成员方法和变量，但是可以通过get和set获得。
▪ java支持单继承，不支持多继承。
▪ 一个子类只能有一个父类，但是一个父类可以有多个子类。
▪ 子类继承了父类，就继承了父类的方法和属性。
▪ 在子类中，可以使用父类中定义的方法和属性，也可以创建新的数据和方法。
▪ 继承]]></description><category></category></item></channel></rss>