<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wayne566的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wayne566</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wayne566]]></copyright><item><title><![CDATA[分层理解Java字符串常量池]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/127786939</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/127786939</guid><author>wayne566</author><pubDate>Tue, 28 Nov 2023 13:47:43 +0800</pubDate><description><![CDATA[Java是一门计算机编程语言，但我们脑海中所理解的Java不仅仅是一门语言。它还包括Java虚拟机（JVM）的一系列规定，及具体Java产品（如Hotspot）的实现原理。不管我们日常在Java中用到的任何一种语法，都会由语言规范对其进行语义和用法上的规定，再由虚拟机规范进行实现方案上的约束和建议，最后由具体的产品进行编码实现。其中，语言规范和虚拟机规范是 Oracle 制定好的（），不同的Java产品（如Hotspot、JRockit、J9）等，对虚拟机规范的实现方式不尽相同。]]></description><category></category></item><item><title><![CDATA[深入理解Java内存模型理论]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/110532038</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/110532038</guid><author>wayne566</author><pubDate>Thu, 03 Dec 2020 15:19:30 +0800</pubDate><description><![CDATA[Java并发是一个很大的主题，包含很多方面的知识。本文从内存模型的角度分析，从概念理论上尽量精确理解Java内存模型，及其对并发的影响。
文章目录一. 引入1. 并发的概念二. 内存模型的理解1. 什么叫内存模型2. 顺序一致性模型3. happens-before 模型4. Java内存模型 及 “因果关系”（Causality）三. 提炼理念1. 技术层次观念与思想方法的互通2. executed 和 exhibit 的区别，及双向视图
一. 引入
1. 并发的概念
并发听起来是一个计算机术语，但计算机]]></description><category></category></item><item><title><![CDATA[synchronized 加锁相关问题]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/107845947</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/107845947</guid><author>wayne566</author><pubDate>Thu, 06 Aug 2020 17:44:34 +0800</pubDate><description><![CDATA[文章目录一. synchronized 关键字实现原理及应用方式简述1.1. 重量级锁的实现原理1.2. synchronized 代码块如何利用monitor1.3. synchronized 方法如何利用monitor二. 优化后的 synchronized 锁级别及锁升级2.1. 先修知识简述2.1.1. Java对象、对象头的组成2.1.2. JOL打印对象信息2.1.3. 大端小端字节序2.1.4. 对象信息打印示例2.2. 偏向锁相关实验2.2.1. 无锁2.2.2. 无偏向的偏向锁2.2.3.]]></description><category></category></item><item><title><![CDATA[深入理解计算机时间系统-系统&硬件篇]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/100095568</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/100095568</guid><author>wayne566</author><pubDate>Mon, 09 Dec 2019 17:43:22 +0800</pubDate><description><![CDATA[上篇从日常代码出发，着重讨论了Java、MySQL等应用层中日期时间的表示和存储等操作、可能遇到的坑，及时区转换相关方法。下篇将尽量深入底层，看看我们在用及“日期时间”时，计算机中发生了什么。
一. 奇怪的现象
上篇中讲过 System.currentTimeMillis() 的用法，也提到了高频调用时会产生一定性能问题，我们先来看现象：
用以下代码大致测量 System.currentTimeM...]]></description><category></category></item><item><title><![CDATA[深入理解计算机时间系统-Java应用篇]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/102548772</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/102548772</guid><author>wayne566</author><pubDate>Mon, 09 Dec 2019 17:41:16 +0800</pubDate><description><![CDATA[文章目录1.  常识知识1.1. 时区1.2. 夏令时1.3. UTC和GMT2. Java关于日期时间的获取、表示及格式转换2.1. System.currentTimeMillis()2.2. System.nanoTime()2.3. java.util.Date2.4. java.sql.Date、java.sql.Time 和 java.sql.Timestamp2.5. java.ut...]]></description><category></category></item><item><title><![CDATA[【转载】数据库索引底层是怎么实现的]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80952648</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80952648</guid><author>wayne566</author><pubDate>Sun, 08 Jul 2018 00:12:48 +0800</pubDate><description><![CDATA[参考资料：数据库索引原理及优化—HeavenWang的专栏



一、摘要

本文以MySQL数据库为研究对象，讨论与数据库索引相关的一些话题。特别需要说明的是，MySQL支持诸多存储引擎，而各种存储引擎对索引的支持也各不相同，因此MySQL数据库支持多种索引类型，如BTree索引，哈希索引，全文索引等等。为了避免混乱，本文将只关注于BTree索引，因为这是平常使用MySQL时主要打交道的索引，至...]]></description><category></category></item><item><title><![CDATA[【转载】如何提高服务器并发处理能力]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80859424</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80859424</guid><author>wayne566</author><pubDate>Fri, 29 Jun 2018 17:04:55 +0800</pubDate><description><![CDATA[转载自https://www.cnblogs.com/zengjin93/p/5569556.html



什么是服务器并发处理能力

一台服务器在单位时间里能处理的请求越多，服务器的能力越高，也就是服务器并发处理能力越强



有什么方法衡量服务器并发处理能力


吞吐率 
吞吐率，单位时间里服务器处理的最大请求数，单位req/s

从服务器角度，实际并发用户数的可以理解为服务器当前维护的代表...]]></description><category></category></item><item><title><![CDATA[【转载】提高网站性能的常见方法]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80858062</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80858062</guid><author>wayne566</author><pubDate>Fri, 29 Jun 2018 15:55:12 +0800</pubDate><description><![CDATA[转自https://blog.youkuaiyun.com/liuyang755855737/article/details/78238987

一.Web前端性能优化 
一般来说Web前端指网站业务逻辑之前的部分，包括浏览器加载，网站视图模型，图片服务，CDN服务等，主要优化手段有优化浏览器访问，使用反向代理，CDN等。 
1..浏览器访问优化 
(1)减少http请求 
HTTP协议是无状态的应用层协议，...]]></description><category></category></item><item><title><![CDATA[Java序列化（持久化）]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80292689</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80292689</guid><author>wayne566</author><pubDate>Sat, 12 May 2018 16:54:07 +0800</pubDate><description><![CDATA[参考了菜鸟教程 和 天凉好个秋

什么是Java序列化

Java 提供了一种对象序列化的机制，该机制中，一个对象可以被表示为一个字节序列，该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。

将序列化对象写入文件之后，可以从文件中读取出来，并且对它进行反序列化，也就是说，对象的类型信息、对象的数据，还有对象中的数据类型可以用来在内存中新建对象。

使用场景


一般情况下...]]></description><category></category></item><item><title><![CDATA[【转载】Java迭代器Iterator]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80285452</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80285452</guid><author>wayne566</author><pubDate>Fri, 11 May 2018 18:53:16 +0800</pubDate><description><![CDATA[转自http://cmsblogs.com/?p=1185

迭代其实我们可以简单地理解为遍历，是一个标准化遍历各类容器里面的所有对象的方法类，它是一个很典型的设计模式。Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来，从而避免向客户端暴露集合的内部结构。 在没有迭代器时我们都是这么进行处理的。如下：

对于数组我们是使用下标来进行处理的:



i...]]></description><category></category></item><item><title><![CDATA[Java网络编程]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80273762</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80273762</guid><author>wayne566</author><pubDate>Fri, 11 May 2018 16:10:17 +0800</pubDate><description><![CDATA[网络编程是指编写运行在多个设备（计算机）的程序，这些设备都通过网络连接起来。java.net 包中 J2SE 的 API 包含有类和接口，它们提供低层次的通信细节。你可以直接使用这些类和接口，来专注于解决问题，而不用关注通信细节。 
java.net 包中提供了两种常见的网络协议的支持：TCP；UDP。 



Socket通信
URL处理
HTTP通信




Socket通信

套接字使用TC...]]></description><category></category></item><item><title><![CDATA[Java IO流（Stream）、文件（File）]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80263948</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80263948</guid><author>wayne566</author><pubDate>Thu, 10 May 2018 16:44:30 +0800</pubDate><description><![CDATA[java IO]]></description><category></category></item><item><title><![CDATA[Java移位运算小结]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80213278</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80213278</guid><author>wayne566</author><pubDate>Sun, 06 May 2018 12:15:49 +0800</pubDate><description><![CDATA[
左移（&amp;lt;&amp;lt;） 
左移没有有符号和无符号之分。移除高位指定位数的同时在低位补零。
有符号右移（&amp;gt;&amp;gt;） 
若参与运算的数字为正数，则在高位补0；若参与运算的数字为负数，则在高位补1。实际上就是补原来最左面的数字。
无符号右移（&amp;gt;&amp;gt;&amp;gt;） 
不论参与运算的数字正负性，都在高位补0。




注意：


在对char，byte，short等类型进行移位操作前，编译...]]></description><category></category></item><item><title><![CDATA[关于值传递和引用传递的一个典型例子]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80212775</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80212775</guid><author>wayne566</author><pubDate>Sun, 06 May 2018 11:15:44 +0800</pubDate><description><![CDATA[深入理解引用传递



public class Main {
    public static void changeStrBuffer(StringBuffer sb1, StringBuffer sb2) {
        sb1.append(&quot; World&quot;);
        sb2 = sb1;
    }

    public static void main(String[...]]></description><category></category></item><item><title><![CDATA[【转】构造代码块]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80207749</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80207749</guid><author>wayne566</author><pubDate>Sat, 05 May 2018 17:30:43 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/hspingcc/article/details/54893853

Java中有四种代码块：


普通代码块

就是在方法后面使用”{}”括起来的代码片段,不能单独执行,必须调下其方法名才可以执行.
静态代码块

在类中使用static修饰,并使用”{}”括起来的代码片段,用于静态变量的初始化或对象创建前的环境初始化.
同步代码块

使用sy...]]></description><category></category></item><item><title><![CDATA[Java中static和final关键字]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80206818</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80206818</guid><author>wayne566</author><pubDate>Sat, 05 May 2018 16:15:06 +0800</pubDate><description><![CDATA[
static关键字 
Static关键字有四种使用情况：成员变量、成员方法、代码块、内部类。

Static修饰的成员变量就成了类变量，随着类的加载而加载，生命周期和类一样。Static修饰的成员方法变成了类方法，可以直接通过类名调用。和.class一样存在于方法区。

static变量和static方法可以被继承但是不能被重写（没有重写的概念）。static方法可以重载（静态不静态和重载不重载...]]></description><category></category></item><item><title><![CDATA[【转载】Java内部类详解]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/80203366</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/80203366</guid><author>wayne566</author><pubDate>Sat, 05 May 2018 16:01:46 +0800</pubDate><description><![CDATA[原文链接：http://www.cnblogs.com/dolphin0520/p/3811445.html
内部类详解]]></description><category></category></item><item><title><![CDATA[LeetCode404. Sum of Left Leaves]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/79457507</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/79457507</guid><author>wayne566</author><pubDate>Tue, 06 Mar 2018 14:08:59 +0800</pubDate><description><![CDATA[题目

Find the sum of all left leaves in a given binary tree.

Example:



    3
   / \
  9  20
    /  \
   15   7

There are two left leaves in the binary tree, with values 9 and 15 respectively. Retur...]]></description><category></category></item><item><title><![CDATA[LeetCode400. Nth Digit]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/79416932</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/79416932</guid><author>wayne566</author><pubDate>Thu, 01 Mar 2018 20:23:25 +0800</pubDate><description><![CDATA[题目

Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …

Note: 
n is positive and will fit within the range of a 32-bit signed integer.

Example 1:



Input:
3

Ou...]]></description><category></category></item><item><title><![CDATA[LeetCode383. Ransom Note]]></title><link>https://blog.youkuaiyun.com/wayne566/article/details/79416137</link><guid>https://blog.youkuaiyun.com/wayne566/article/details/79416137</guid><author>wayne566</author><pubDate>Thu, 01 Mar 2018 18:40:49 +0800</pubDate><description><![CDATA[383. Ransom Note]]></description><category></category></item></channel></rss>