<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[modabaichi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/modabaichi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; modabaichi]]></copyright><item><title><![CDATA[Java 单例模式]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/89931029</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/89931029</guid><author>modabaichi</author><pubDate>Tue, 07 May 2019 22:25:21 +0800</pubDate><description><![CDATA[设计模式是一种思想，适合于任何一门面向对象的语言。
单例模式：保证某个类的对象唯一。
设计单例模式思路：
1、其他程序不能声明该类的对象。
2、该类声明了一个本类的实例。
3、对外提供方法让外界获取该对象。
步骤：
1、私有化该类的构造函数。
2、创建一个该类的实例。
3、创建一个方法返回该实例。
具体实现有两种：
饿汉式
public class Single{
	private Single(...]]></description><category></category></item><item><title><![CDATA[剪绳子]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/89042551</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/89042551</guid><author>modabaichi</author><pubDate>Fri, 05 Apr 2019 13:22:58 +0800</pubDate><description><![CDATA[题目描述
给定一根长度为n的绳子，请把绳子剪成m段（m、n都是整数，n&gt;1并且m&gt;1），每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]* k[1] * … *k[m]可能的最大乘积是多少？例如长度为8的绳子，可以剪成2，3，3段，最大乘积为18。
此题提供动态规划和贪心算法两种解法：
动态规划
假设f(n)为长度为n的绳子剑成若干段后的最大乘积。那么如果我们只剪一刀，...]]></description><category></category></item><item><title><![CDATA[HashMap源码解析]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/88953352</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/88953352</guid><author>modabaichi</author><pubDate>Wed, 03 Apr 2019 21:58:47 +0800</pubDate><description><![CDATA[一、哈希表
HashMap的本质就是一个哈希表，所以我们先来讨论一下哈希表。
首先，哈希表的主干是一个数组，它存储的是一个键值对(key-value)映射。
既然哈希表的本质是一个数组，我们试试将存储的key映射为数组下标，存储value的值。那么我们将通过key定位到数组位置就需要一个函数，这个函数我们称之为哈希函数。假设一组数据{1，15},这组数据的值既是key也是value，哈希函数为f(...]]></description><category></category></item><item><title><![CDATA[Java——对象克隆]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/89005777</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/89005777</guid><author>modabaichi</author><pubDate>Wed, 03 Apr 2019 21:48:32 +0800</pubDate><description><![CDATA[对象克隆
克隆，这个概念很好理解，就是对一个现有的物体进行复制，获得一个新的和原来物体相同的新物体。对于Java而言，克隆也是一样的道理，但Java的克隆，复制的是对象本身。
Java中通过clone()方法进行复制，clone()这个方法是从Object中继承下来的，一个对象如果要实现clone()方法，必须在类中继承Cloneable接口，不然会报 CloneNotSupportedExcep...]]></description><category></category></item><item><title><![CDATA[2019.3.27——腾讯后端一轮面试]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/88858850</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/88858850</guid><author>modabaichi</author><pubDate>Thu, 28 Mar 2019 00:52:04 +0800</pubDate><description><![CDATA[今天，再战了一次腾讯。
这次的面试总的来说面的挺开心的，面试官人很好，知道了自己的许多不足。话不多说，先说说面试前的准备吧。
前期准备
面试前一天，我首先将自己之前写过的博客从线程池开始往后全部都回顾了一遍，重点看了类加载部分(每次都记不住0~0)。
最近真的压力巨大，很多事情堆在一起，公司，学习，面试等等，让我并没有想花太多心思准备(心累~)。
面试当天，上午上完计网课后，回去补了个午觉，大约在...]]></description><category></category></item><item><title><![CDATA[HTTPS协议简介]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/86416078</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/86416078</guid><author>modabaichi</author><pubDate>Sun, 13 Jan 2019 15:12:50 +0800</pubDate><description><![CDATA[HTTP协议的缺点
HTTP协议是一个非常简单的协议，效率高同时方便快捷，但它在安全性方面却几乎没有做什么处理。这也是HTTP协议主要的缺点：
1、HTTP协议通信过程使用的是明文，可能会被窃听。
2、在传输的过程中没有验证对方的身份，可能出现伪装。
3、无法验证报文的完整性，可能遭到篡改。
HTTP+加密+认证+完整性保护=HTTPS
HTTPS就是为了解决HTTP协议的缺点而出现。一般情况下，...]]></description><category></category></item><item><title><![CDATA[正确理解三次握手&四次挥手]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/85871416</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/85871416</guid><author>modabaichi</author><pubDate>Sat, 05 Jan 2019 23:30:52 +0800</pubDate><description><![CDATA[上一篇讲HTTP协议的时候提到了TCP连接的建立和释放，事实上这两个过程就分别对应了三次握手和四次挥手，于是我仔细研究了一下这两个过程，写下这篇文章做个总结。
一、TCP报文格式
三次握手就是客户端和服务端总共发送三个包来确认连接的建立，四次握手是客户端和服务端总共发送四个包来确认连接的建立。这个包指的就是TCP报文，我们来看一下它具体格式：

1、序号：Seq序号，占32位，用来标识从TCP源端...]]></description><category></category></item><item><title><![CDATA[HTTP协议：输入一个网址，页面发生了些什么呢？]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/85852909</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/85852909</guid><author>modabaichi</author><pubDate>Sat, 05 Jan 2019 16:39:03 +0800</pubDate><description><![CDATA[HTTP简介
HTTP协议是Hyper Text Transfer Protocol（超文本传输协议）的缩写,是用于从万维网（WWW:World Wide Web ）服务器传输超文本到本地浏览器的传送协议。
HTTP是一个应用层协议，由请求和响应构成，是一个标准的客户端服务器模型。客户端向服务端发送请求，服务端对客户端进行响应的模式。HTTP协议共有以下几个特点：
1、支持客户端\服务端和浏览器\...]]></description><category></category></item><item><title><![CDATA[浅谈JVM(三)：类加载机制]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/84959074</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/84959074</guid><author>modabaichi</author><pubDate>Wed, 12 Dec 2018 22:42:52 +0800</pubDate><description><![CDATA[什么是类的加载？
类的加载是指将.class文件中的二进制数据读入到内存中，并对数据进行校验、转换解析和初始化，最终形成可以被虚拟机直接使用的Java类型。数据放在运行时数据区的方法区中，然后在堆区创建一个java.lang.Class对象，用来封装类在方法区内的数据结构。
一、类的生命周期
该图显示了类的生命周期中的七个阶段。类的加载过程包括了加载、验证、准备、解析、初始化五步。加载、验证、准备...]]></description><category></category></item><item><title><![CDATA[浅谈JVM(二)：gc]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/84843577</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/84843577</guid><author>modabaichi</author><pubDate>Fri, 07 Dec 2018 12:52:22 +0800</pubDate><description><![CDATA[java中的gc即垃圾处理器(Gargage Collection)，是java和C++/C的主要区别之一。对于C开发人员来说内存是自己分配的，同时还要对内存进行维护和释放。然而对于java程序员来说，内存是由JVM自动分配的，同时垃圾的回收是由gc自动进行回收的，不太容易出现内存溢出和内存泄露的问题。
gc是用来回收垃圾的它主要对java堆进行回收，也是就是回收对象。那么我们很容易想到几个问题：...]]></description><category></category></item><item><title><![CDATA[浅谈JVM(一)：内存与内存溢出]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/84782065</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/84782065</guid><author>modabaichi</author><pubDate>Tue, 04 Dec 2018 22:18:55 +0800</pubDate><description><![CDATA[一、java内存区域

java内存区域即JVM内存区域，主要分为以上几块，我们一一进行解释：
1、程序计数器
程序计数器(Program Counter Register)是一块较小的内存空间，它是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里，字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。可以说程序计数器是用来指示执行哪条指令的。在多线程的情况下，因为...]]></description><category></category></item><item><title><![CDATA[java线程池的使用]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/84570469</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/84570469</guid><author>modabaichi</author><pubDate>Wed, 28 Nov 2018 21:45:18 +0800</pubDate><description><![CDATA[一、为什么要使用线程池？

]]></description><category></category></item><item><title><![CDATA[java 线程同步实现方法]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/84201921</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/84201921</guid><author>modabaichi</author><pubDate>Tue, 20 Nov 2018 19:53:31 +0800</pubDate><description><![CDATA[为什么需要线程同步？
线程同步：即线程按照一定的顺序执行。
在java中，当我们运行多个线程的时候，线程可能会对同一个数据、文件、内存进行读写操作，读操作我们是允许多个线程共同进行的，但是写操作确会让这几个线程产生冲突。此时我们就说这几个线程存在竞争关系，这种竞争关系我们如果不及时处理的话，会产生未知错误。竞争产生究其根本是因为我们对线程是不可控的，但是虽然线程不可控，我们却可以用一些方法让线程按...]]></description><category></category></item><item><title><![CDATA[接口与重绘]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/83624199</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/83624199</guid><author>modabaichi</author><pubDate>Thu, 01 Nov 2018 20:05:29 +0800</pubDate><description><![CDATA[一、接口
接口是一种极度抽象的类，在软件工程中，接口泛指别人调用的方法和函数。接口定义的关键字为interface，定义方法为：
interface 接口名{}；
接口中可以定义属性和方法。但接口中的属性会被隐性的定义为public static final属性（并且只能是public属性），接口中的方法会被隐性的定义为public abstract（只能是public方法），即接口中的方法一定是...]]></description><category></category></item><item><title><![CDATA[java类的继承与构造方法]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/83474389</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/83474389</guid><author>modabaichi</author><pubDate>Sun, 28 Oct 2018 14:21:50 +0800</pubDate><description><![CDATA[一、类的继承
我们试着想象一下两个类：学生类和大学生类
学生类
属性：姓名、性别、年级、成绩
方法：学习、休息
大学生类
属性：姓名、性别、年级、成绩、专业
方法：学习、休息、实习
我们可以看出来，大学生类的属性和方法包含了学生类的属性与方法，如果我们在定义这两个类的时候将它们的属性和方法全部定义一遍，就显得麻烦同时不精简，由此继承的概念就出来了。
继承：如果A类继承了B类，我们将A类称作B类的子...]]></description><category></category></item><item><title><![CDATA[进程与线程]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/83472449</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/83472449</guid><author>modabaichi</author><pubDate>Sun, 28 Oct 2018 10:25:13 +0800</pubDate><description><![CDATA[一、进程与线程
程序：通俗的讲，程序是一个包含可执行代码的静态的文件，是应用软件执行的蓝本。
进程：进程是一个已经执行但是还没有结束的程序的实例，可以看作是程序的一次动态执行。
当程序被系统调用到内存后，系统会给程序分配一定的资源（内存、设备等），然后进行一系列操作使得静态的程序变成动态的进程以供系统调用。
线程：线程是进程的组成部分。一个进程中可以只有一个线程，也可以有多个线程。线程不单独占用系...]]></description><category></category></item><item><title><![CDATA[类与对象]]></title><link>https://blog.youkuaiyun.com/modabaichi/article/details/83316035</link><guid>https://blog.youkuaiyun.com/modabaichi/article/details/83316035</guid><author>modabaichi</author><pubDate>Fri, 26 Oct 2018 20:57:31 +0800</pubDate><description><![CDATA[一、类与对象
生活中我们常说的对象指的是某一具体事物，如你我可以是对象，戴着的戒指，别着的发卡等等都可以称为对象。由此可知对象是一个非常具体的概念。
类是具有相同属性或行为的一类对象的抽象概念，它事实上并不存在。你我可以抽象为一个类：人。戴着的戒指，别着的发卡可以抽象为另一个类：装饰品。在java中，类包括属性和方法。属性可以看做是事物本身的一类特点，如人的身高、体重等，是不用可以去表现的。方法可...]]></description><category></category></item></channel></rss>