<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bbqe597的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bbqe597</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bbqe597]]></copyright><item><title><![CDATA[创建型设计模式——抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/102471404</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/102471404</guid><author>bbqe597</author><pubDate>Wed, 09 Oct 2019 22:42:31 +0800</pubDate><description><![CDATA[定义

为创建一组相关或者是相互依赖的对象提供一个接口，而不需要指定他们的具体类


使用场景

一个对象族有相同的约束时可以使用抽象工厂模式。


简单实现

抽象车厂类


public abstract class CarFactory {
	//生产轮胎
	public abstract ITire createTire();
	//生产发动机
	public abstract IEng...]]></description><category></category></item><item><title><![CDATA[应用最广泛的模式——工厂方法模式]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101387075</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101387075</guid><author>bbqe597</author><pubDate>Wed, 25 Sep 2019 21:36:31 +0800</pubDate><description><![CDATA[定义：

定义一个用于创建对象的接口，让子类决定实例化哪个类。


使用场景：

在任何需要生成复杂对象的地方，都可以使用工厂方法模式。复杂对象适合工厂模式，用new就可以完成创建的对象无需使用工厂模式


简单实现：

奥迪工厂：


public abstract class AudiFactory {

    /**
     * 奥迪工厂
     * @param clz 具体的奥...]]></description><category></category></item><item><title><![CDATA[编程好帮手——代理模式]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101357697</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101357697</guid><author>bbqe597</author><pubDate>Wed, 25 Sep 2019 13:42:03 +0800</pubDate><description><![CDATA[定义：

为其他对象提供一种代理以控制这个对象的访问。


使用场景：

当无法或不想直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问，为了保证客户端使用的透明性，委托对象与代理对象需要实现相同的接口。


简单实现：

诉讼接口类：


public interface ILawsuit {

    //提交申请
    void submit();

    //进行...]]></description><category></category></item><item><title><![CDATA[《将博客搬至优快云》]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/107438832</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/107438832</guid><author>bbqe597</author><pubDate>Sat, 21 Sep 2019 13:04:00 +0800</pubDate><description><![CDATA[将博客搬到优快云了
]]></description><category></category></item><item><title><![CDATA[Linux下将Python脚本变成Service实现开机启动]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244861</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244861</guid><author>bbqe597</author><pubDate>Sat, 21 Sep 2019 12:14:00 +0800</pubDate><description><![CDATA[1.新建dreamtech.sh脚本文件：


#!/bin/bash
filepath="/home/OPERATE/start.pyc"
start(){
nohup python3 $filepath&gt;/dev/null 2&gt;&amp;1 &amp;
echo 'dreamtech service OK'
}
stop(){
serverpid=`ps -aux|grep "$f...]]></description><category></category></item><item><title><![CDATA[应用最广的设计模式——单例模式]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244855</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244855</guid><author>bbqe597</author><pubDate>Sat, 21 Sep 2019 09:51:00 +0800</pubDate><description><![CDATA[介绍
单例模式是应用最广的模式之一，也可能是很多初级工程师唯一会使用的设计模式。在应用这个模式时，单例对象的类必须保证只有一个实例存在。许多时候整个系统只需拥有一个全局对象，这样有利于我们协调系统整体的行为。

定义
确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例

使用场景
确保某个类有且只有一个对象的场景，避免产生多个对象消耗过多的资源，或者某种类型的对象只应该有且只有一个。...]]></description><category></category></item><item><title><![CDATA[走向灵活软件之路——面向对象的六大原则]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244853</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244853</guid><author>bbqe597</author><pubDate>Sat, 21 Sep 2019 09:14:00 +0800</pubDate><description><![CDATA[优化代码的第一步——单一职责原则
	让程序更稳定、更灵活——开闭原则
	
		定义：软件中的对象（类、模块、函数等）应该对于扩展是开放的，对于修改是封闭的。当软件的需求发生变化时，应尽量通过扩展的方式来实现变化，而不是通过修改已有代码来实现。
		
	
	构建扩展性更好的系统——里氏替换原则
	
		定义：
		第一种定义：如果对每一个类型为S的对象O1，都有类型为T的对象O2使得以T定义的所有程...]]></description><category></category></item><item><title><![CDATA[解决解耦的钥匙——观察者模式]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244852</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244852</guid><author>bbqe597</author><pubDate>Fri, 20 Sep 2019 17:29:00 +0800</pubDate><description><![CDATA[介绍：
观察者模式是一个使用率非常高的模式，它最常用的地方是GUI系统、订阅——发布系统。因为这个模式的一个重要作用就是解耦，将被观察者和观察者解耦，使得它们之间的依赖性更小，甚至做到毫无依赖。以GUI系统来说，应用的UI具有易变性，尤其是前期随着业务的改变或者产品的需求修改，应用界面也会经常性变化，但是业务逻辑基本变化不大，此时GUI系统需要一套机制来应对这种情况，是的UI层与具体的业务逻辑解耦...]]></description><category></category></item><item><title><![CDATA[UDP]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244851</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244851</guid><author>bbqe597</author><pubDate>Tue, 17 Sep 2019 18:07:00 +0800</pubDate><description><![CDATA[UDP 是一个简单的传输层协议。有如下特点：


UDP 缺乏可靠性。UDP 本身不提供确认，序列号，超时重传等机制。UDP 数据报可能在网络中被复制，被重新排序。即 UDP 不保证数据报会到达其最终目的地，也不保证各个数据报的先后顺序，也不保证每个数据报只到达一次。
UDP 数据报是有长度的。每个 UDP 数据报都有长度，如果一个数据报正确地到达目的地，那么该数据报的长度将...]]></description><category></category></item><item><title><![CDATA[TCP]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244850</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244850</guid><author>bbqe597</author><pubDate>Tue, 17 Sep 2019 14:37:00 +0800</pubDate><description><![CDATA[TCP特点：



TCP是面向连接的传输层协议：





应用程序在使用TCP协议之前必须先建立TCP连接。在传送数据结束后，必须释放已经建立的TCP连接





每一条TCP连接只能有两个端点：





每一条TCP连接只能是点对点的





TCP提供可靠交付的服务：





通过TCP连接传送的数据...]]></description><category></category></item><item><title><![CDATA[JVM内存模型]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244849</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244849</guid><author>bbqe597</author><pubDate>Tue, 17 Sep 2019 11:08:00 +0800</pubDate><description><![CDATA[主内存与工作内存

Java内存模型的主要目标是定义程序中各个变量的访问规则，即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。Java内存模型规定了所有的变量都存储在主内存（Main Memory）中。每条线程还有自己的工作内存（Working Memory），线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝，线程对变量的所有操作都必须在工作内存中进行，而...]]></description><category></category></item><item><title><![CDATA[JVM类加载机制]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244848</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244848</guid><author>bbqe597</author><pubDate>Fri, 13 Sep 2019 11:44:00 +0800</pubDate><description><![CDATA[类从被加载到虚拟机内存中开始，到卸载出内存开始，它的整个生命周期如下



加载
连接初始化

验证
准备
解析



使用
卸载





加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的，类的加载过程必须按照这种顺序按部就班的开始，而解析阶段则不一定：它在某些情况下可以在初始化阶段之后再开始，这是为了支持Java语言的运行时绑定（也称...]]></description><category></category></item><item><title><![CDATA[CMS与G1垃圾收集器]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244847</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244847</guid><author>bbqe597</author><pubDate>Tue, 10 Sep 2019 15:54:00 +0800</pubDate><description><![CDATA[CMS收集器

CMS(Concurrent Map Sweep)收集器是一种以最短回收停顿时间为目标的收集器，通常用于JavaWeb程序上，重视服务响应速度，希望系统时间停顿最短，而它是基于"标记-清除"算法。
整个过程分为四个步骤：





初始标记





只是标记一下GC Roots能直接关联到的对象，速度很快。





并发标...]]></description><category></category></item><item><title><![CDATA[JVM垃圾收集]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244846</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244846</guid><author>bbqe597</author><pubDate>Mon, 09 Sep 2019 18:25:00 +0800</pubDate><description><![CDATA[对象已死吗？

Java堆几乎存放了所有的对象实例，垃圾回收器在进行回收之前，首先确定的就是哪些对象存活，哪些对象死亡。

可达性分析算法：


由于引用计数算法无法处理“循环引用”的情况，所以主流的商用程序语言（Java、C#等）都是通过可达性分析来判定对象是否存活的。
这个算法的基本思想就是：通过一系列的称为“GC Roots”的对象作为起始点，从这些节点开始向下...]]></description><category></category></item><item><title><![CDATA[Java GC、新生代、老年代]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244845</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244845</guid><author>bbqe597</author><pubDate>Mon, 09 Sep 2019 15:51:00 +0800</pubDate><description><![CDATA[1、堆内存Java 中的堆是 JVM 所管理的最大的一块内存空间，主要用于存放各种类的实例对象。 在 Java 中，堆被划分成两个不同的区域：新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域：Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象，包括内存的分配以及回收...]]></description><category></category></item><item><title><![CDATA[HotSpot虚拟机对象]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244844</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244844</guid><author>bbqe597</author><pubDate>Mon, 09 Sep 2019 14:46:00 +0800</pubDate><description><![CDATA[对象的创建：


new指令：虚拟机开始创建对象
类加载检查：检查new指令的参数是否能在常量池中定位到某个类的符号引用，并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有，那必须先执行相应的类加载过程。
分配内存：类加载检查通过后，虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成之后便可以确定。为对象分配空间的任务等同于把一块确定大小的内存从Ja...]]></description><category></category></item><item><title><![CDATA[Java内存区域与内存溢出异常]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244843</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244843</guid><author>bbqe597</author><pubDate>Mon, 09 Sep 2019 10:45:00 +0800</pubDate><description><![CDATA[Java运行时数据区域

程序计数器
Java虚拟机栈
本地方法栈
Java堆
方法区
运行时常量池
直接内存



程序计数器：

程序计数器是一块较小的内存空间，它可以看作是当前线程所执行的字节码的行号治时期。在虚拟机的概念模型里，字节码解释器工作时就是通过改变这个计数器的值来选取吓一跳需要执行的字节码指令，分支、循环、跳转、异常处理、线程恢复等基础功能都...]]></description><category></category></item><item><title><![CDATA[剑指Offer-用两个栈实现队列]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244842</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244842</guid><author>bbqe597</author><pubDate>Mon, 02 Sep 2019 22:35:00 +0800</pubDate><description><![CDATA[题目描述：
用两个栈来实现一个队列，完成队列的Push和Pop操作。 队列中的元素为int类型。


import java.util.Stack;

public class Solution {
    Stack&lt;Integer&gt; stack1 = new Stack&lt;Integer&gt;();
    Stack&lt;Integer&gt;...]]></description><category></category></item><item><title><![CDATA[剑指Offer-重构二叉树]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/101244840</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/101244840</guid><author>bbqe597</author><pubDate>Mon, 02 Sep 2019 22:23:00 +0800</pubDate><description><![CDATA[题目描述：
输入某二叉树的前序遍历和中序遍历的结果，请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}，则重建二叉树并返回。



public class Solution {
    class TreeNode {
        int v...]]></description><category></category></item><item><title><![CDATA[Java中Static关键字的用法]]></title><link>https://blog.youkuaiyun.com/bbqe597/article/details/88643285</link><guid>https://blog.youkuaiyun.com/bbqe597/article/details/88643285</guid><author>bbqe597</author><pubDate>Mon, 18 Mar 2019 17:13:57 +0800</pubDate><description><![CDATA[看了别人的总结一下，原地址：

https://www.cnblogs.com/hcl22/p/6371939.html

特点：
　　1.static是一个修饰符，用于修饰成员。（成员变量，成员函数）static修饰的成员变量 称之为静态变量或类变量。
　　2.static修饰的成员被所有的对象共享。
　　3.static优先于对象存在，因为static的成员随着类的加载就已经存在。
　　4.s...]]></description><category></category></item></channel></rss>