<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sysong13的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sysong13</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sysong13]]></copyright><item><title><![CDATA[Java大数BigInteger的原理]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/110820266</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/110820266</guid><author>sysong13</author><pubDate>Mon, 07 Dec 2020 16:15:19 +0800</pubDate><description><![CDATA[引言

在java中，整型分为Integer（4 bytes 32位）和Long（8 bytes 64位）两种类型，因此java中一个整数最多只能占64个bits，并且java中不存在无符号数，无论是Integer类型还是Long类型都是有符号数。当我们需要表示一个超过64 bits的数时，就需要用到BigInteger类型，BigInteger是java包提供的一个大数类型，它的原理就是将大数拆分成一个int[]表示，理论上该int[]数组的长度可以无限增大，该类提供了普通整型具有的所有运算方法，包括加减]]></description><category></category></item><item><title><![CDATA[Mysql批量插入数据时是否为原子操作]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/109742841</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/109742841</guid><author>sysong13</author><pubDate>Tue, 17 Nov 2020 15:05:42 +0800</pubDate><description><![CDATA[摘要

mysql支持批量插入，即insert into values(),().. ，可以一次插入多条数据，那么这一次插入是否为原子操作呢？

通过测试验证一下mysql一次批量插入结果是不是要么全部插入成功，要么全部插入失败



建立测试表

建立一个带unique key的表作为实验表，当插入重复uk的数据mysql会插入失败


CREATE TABLE `uk_test` (
  `id` bigint(32) NOT NULL AUTO_INCREMENT,
  `ip` varchar(3.]]></description><category></category></item><item><title><![CDATA[Java源码阅读之HashMap]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/96307100</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/96307100</guid><author>sysong13</author><pubDate>Wed, 17 Jul 2019 14:36:24 +0800</pubDate><description><![CDATA[目录



putVal方法

迭代器的实现方法

迭代器

迭代器的获取

putVal方法


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; in...]]></description><category></category></item><item><title><![CDATA[详细解释HashMap中tableSizeFor函数]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/95348739</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/95348739</guid><author>sysong13</author><pubDate>Wed, 10 Jul 2019 16:30:27 +0800</pubDate><description><![CDATA[最近在看一些集合的源码，看到HashMap感觉用到了很多移位运算的技巧，看了好一会儿才明白，记一下以免以后再忘了

后面有时间会整理完整的源码

HashMap中有这样一段代码，当初始化HashMap时，如果指定了初始容量initialCapacity，由于哈希桶的数目必须是2的n次幂，因此要把initialCapacity转化为比它大的最小的2的n次幂数，例如initialCapacity = ...]]></description><category></category></item><item><title><![CDATA[JVM学习之类加载过程]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/95238084</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/95238084</guid><author>sysong13</author><pubDate>Tue, 09 Jul 2019 21:37:42 +0800</pubDate><description><![CDATA[类加载过程发生在java程序编译和运行之间，java运行过程可以分为 编译 -&gt; 类加载 -&gt; 执行

类加载由jvm完成，可以分为三步：加载 -&gt; 链接-&gt; 初始化 （这里的加载和类加载不同）

1. 加载

我们知道编译.java文件之后会生成.class文件，这一步就是将编译生成的.class二进制文件加载到内存，放在运行时区域的方法区内供程序使用，然后在堆中创建该类...]]></description><category></category></item><item><title><![CDATA[Java多线程学习之ThreadLocal类的简单理解]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/94651730</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/94651730</guid><author>sysong13</author><pubDate>Thu, 04 Jul 2019 21:14:16 +0800</pubDate><description><![CDATA[ThreadLocal提供了线程本地变量，当创建一个ThreadLocal变量后，每个线程访问ThreadLocal变量的时候访问的都是自己线程中的变量，而不是共享变量。

1ThreadLocal类的使用

先看一个例子


public class TestThreadLocals {
	
	static ThreadLocal&lt;String&gt; local = new Thre...]]></description><category></category></item><item><title><![CDATA[Java多线程学习之内存模型]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/94649529</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/94649529</guid><author>sysong13</author><pubDate>Thu, 04 Jul 2019 20:24:56 +0800</pubDate><description><![CDATA[目录

1. Java的内存模型

1.1 JVM内存结构

1.2 多线程下Java的内存模型

1.3 多线程的不可见问题

1. Java的内存模型

1.1 JVM内存结构

Java中的每个线程拥有独立的栈空间，但是同一个进程中的多线程共享一块堆内存，JVM的内存结构：





1）程序计数器：每个线程私有的，当前线程执行字节码的行号指示器

2）虚拟机栈：每个线程被分配一段栈，线程...]]></description><category></category></item><item><title><![CDATA[Java集合框架之ArrayList源码解析]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/94589345</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/94589345</guid><author>sysong13</author><pubDate>Wed, 03 Jul 2019 20:40:49 +0800</pubDate><description><![CDATA[目录



成员变量及构造方法

Add方法

Add(int index)方法

addAll(Collection c)方法

remove(int index)方法

成员变量及构造方法


public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt;
        implements List&lt;E&gt;, Rand...]]></description><category></category></item><item><title><![CDATA[servlet+ajax+json实现前后端分离]]></title><link>https://blog.youkuaiyun.com/sysong13/article/details/90208555</link><guid>https://blog.youkuaiyun.com/sysong13/article/details/90208555</guid><author>sysong13</author><pubDate>Tue, 14 May 2019 15:55:15 +0800</pubDate><description><![CDATA[这里写自定义目录标题1. 前后端分离的理解1.1 以一个简单的例子说明后端渲染的过程1.2  前后端分离1.2.1 Servlet产生json数据1.2.2 前端通过ajax获取json数据，并渲染到前端界面
1. 前后端分离的理解
1.1 以一个简单的例子说明后端渲染的过程
示例：提交表单信息，返回提交的信息

点击提交后：注意看url已经发生变化

以下是表单html代码
     &lt;f...]]></description><category></category></item></channel></rss>