<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[code_Floyed的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/code_Floyed</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; code_Floyed]]></copyright><item><title><![CDATA[Git的学习]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/119943297</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/119943297</guid><author>code_Floyed</author><pubDate>Fri, 27 Aug 2021 00:39:19 +0800</pubDate><description><![CDATA[Git
概念：
​	是一个免费的、开源的分布式 版本控制系统。可以快速

版本控制：
​	一种记录一个或若干文化内容变化，以便将来查阅特定版本修订情况的系统
​	好处：
​			可以将某个文件【甚至整个项目】回溯到之前的状态
​			可以比较文件的变化细节，并且可查看最后谁进行修改。

版本控制的分类：
​
​	集中化的版本控制系统 [SVN]
通过一个单一的集中管理的服务器，保存所有文件的修订版本，而协同工作的人们都通过客户端连到该服务器，取出最新的文件或者提交更新。
缺点：中央服务器的单点故障。
分布式]]></description><category></category></item><item><title><![CDATA[运行时数据区之堆]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/119304380</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/119304380</guid><author>code_Floyed</author><pubDate>Sun, 01 Aug 2021 22:02:37 +0800</pubDate><description><![CDATA[堆的核心概述
&nbsp;&nbsp;对一个进程而言是唯一的。一个进程对应一个JVM实例、一个JVM实例拥有一个运行时数据区，仅拥有一个堆结构，也是Java内存管理的核心区域。
&nbsp;&nbsp;Java堆区在JVM启动时便被创建，并且设定好了大小。是JVM中最大的一块内存空间（可调节）

通过Java Visual JVM查看 通过 -Xms…m -Xmx…m

&nbsp;&nbsp;堆在物理上可以存在不连续的内存空间，但逻辑上应当视为连续的。
&nbsp;&nbsp;所有线程共享堆。堆还能划分为]]></description><category></category></item><item><title><![CDATA[本地方法接口]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118933694</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118933694</guid><author>code_Floyed</author><pubDate>Tue, 20 Jul 2021 14:04:58 +0800</pubDate><description><![CDATA[什么是本地方法？
​	就是一个Java调用非Java代码的接口。即本地方法(Native Method)的实现由非Java语言实现。

在定义一个本地方法时，并不由Java提供实现，因为实现是由非Java语言在外部实现。

作用：
​	融合不同的编程语言位Java所用。
为什么需要本地方法？
​		1.与Java环境外的交互
​				有时候Java需要与Java环境外的环境交互【主要原因】。Java需要与一些底层系统，如操作系统或硬件交换信息的情况。本地方法便是一种提供非常简洁的接口，并且使我们无需了解.]]></description><category></category></item><item><title><![CDATA[本地方法栈]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118933666</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118933666</guid><author>code_Floyed</author><pubDate>Tue, 20 Jul 2021 14:02:11 +0800</pubDate><description><![CDATA[​	本地方法栈用于管理本地方法的调用。
​	生命周期：与线程一致，属线程私有。
​	允许被实现成固定或可动态扩展的内存大小。
​	具体做法：本地方法栈登记native方法，在Execution Engine 执行时加载本地方法库。

当某个线程调用一个本地方法时，它就进入一个全新且不再受JVM限制的世界。
​	-本地方法可以通过本地接口来访问JVM的运行时数据区
​	-甚至可以直接使用本地处理器的寄存器
​	-直接从本地内存的堆中分配任意数量的内存

​	由于JVM规范并没有明确要求本地方法栈的使用语言、实]]></description><category></category></item><item><title><![CDATA[Mybatis]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118767950</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118767950</guid><author>code_Floyed</author><pubDate>Thu, 15 Jul 2021 20:30:48 +0800</pubDate><description><![CDATA[ 一种持久层框架。支持定制化SQL、存储过程以及高级映射。
 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
 支持简单的XML或注解来配置和映射原生类型、接口和java的POJO为数据库中的记录。
 
 如何获取Mybatis？
&lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.mybatis&lt;/groupId&gt]]></description><category></category></item><item><title><![CDATA[运行时数据区之虚拟机栈]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118742165</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118742165</guid><author>code_Floyed</author><pubDate>Thu, 15 Jul 2021 01:09:48 +0800</pubDate><description><![CDATA[概述
 Java虚拟机栈(Java Virtual Machine Stack)。每个线程在创建时都会创建一个虚拟机栈，用来保存一个个栈帧，对应着一次次的Java方法调用。
 
生命周期：
  虚拟机栈是每个线程私有的，因此生命周期与线程一致
 
作用：
  管理Java程序的运行，虚拟机栈保存方法的局部变量、部分结果，并参与方法的调用和返回。
 
优点：
  1.是一种快速有效的分配存储方式，访问速度仅次于 程序计数器
  2.不存在垃圾回收机制（由于操作仅支持pop、push）
 

开发常见异常：

]]></description><category></category></item><item><title><![CDATA[运行时数据区之PC寄存器]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118741961</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118741961</guid><author>code_Floyed</author><pubDate>Thu, 15 Jul 2021 00:55:22 +0800</pubDate><description><![CDATA[运行时数据区
 
内部结构：

 其中有些是随着虚拟机的启动而创建，随着虚拟机退出而销毁。还有一些是与线程相对应的，随着线程的开始与结束而创建或销毁。
 程序计数器、虚拟机栈、本地方法栈都属于每个线程私有的
 方法区、堆是属于多个线程共享
 
程序计数器
 PC寄存器(Program Counter Register)中,寄存器存储指令相关的现场信息。
 
作用
 1.程序计数器用来存储指向下一条指令的地址，即将要执行的指令代码。【由执行引擎读取下一条指令】
 程序计数器是一个占用小的内存空间，也是运行速度]]></description><category></category></item><item><title><![CDATA[类加载器 && 双亲委派机制]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118675826</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118675826</guid><author>code_Floyed</author><pubDate>Mon, 12 Jul 2021 15:21:22 +0800</pubDate><description><![CDATA[类加载器

 整体作用：
  1.类加载器子系统负责从文件系统或者网络中加载Class文件，class文件在文件开头有特定的文件标识。
  2.ClassLoader只负责class文件的加载，执行则由Execution Engine决定
  3.加载的类信息存放在方法区的内存空间，除了类信息外，方法区还会存放运行时常量池的信息，可能还包括字符串字面量和数字常量
 
类加载过程

 
类加载流程图

 
类加载过程一：Loading
 1.通过一个类的全限定名获取定义此类的二进制字节流
 2.将这个字节流所]]></description><category></category></item><item><title><![CDATA[JVM的学习]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118675719</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118675719</guid><author>code_Floyed</author><pubDate>Mon, 12 Jul 2021 15:15:27 +0800</pubDate><description><![CDATA[ java虚拟机，二进制字节码的运行环境，负载装载字节码到其内部，解释、编译为对应平台上的机器指令执行。每一条Java指令，Java虚拟机规范都有详细定义，如怎么取操作数，怎么处理操作数，处理结果放在哪里。
 
 特点：
  一次编译，到处运行
  自动内存管理
  自动垃圾回收功能
 
JVM整体结构
 
简略图

 
详细图

 
流程：
 Class files =》
 类装载器子系统 == 加载到内存当中，生成CLASS类 ==》
 运行时数据区 == 实例与各个分区相联系 ==》
 执行引擎（解释]]></description><category></category></item><item><title><![CDATA[职责链模式(Chain of Responsibility Pattern)]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118653076</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118653076</guid><author>code_Floyed</author><pubDate>Sun, 11 Jul 2021 12:53:06 +0800</pubDate><description><![CDATA[学校OA系统的采购审批项目：
 需求是
  1.采购员采购教学器材
  2.如果金额小于等于5000，由教学主任审批
  3.如果金额小于等于10000，由院长审批
  4.如果金额小于等于 30000， 由副校长审批
  5.如果金额超过30000，由校长审批
&nbsp;
传统方案：
 碰到金额，根据数目调用相对应的采购员

传统方案解决 OA 系统审批问题分析

 1.传统方式是 ：接收到一 个采购请求后，根据采购金额来调用对应的 Approver ( 审批人 完成审批）。
 2.传统方式的问题分析 ]]></description><category></category></item><item><title><![CDATA[策略模式(Strategy Pattern)]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118653048</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118653048</guid><author>code_Floyed</author><pubDate>Sun, 11 Jul 2021 12:47:45 +0800</pubDate><description><![CDATA[鸭子问题
​	 1.有各种各样的鸭子，eg：野鸭，北京鸭，水鸭
​	 2.鸭子有各种行为：叫、飞行
​	 3.显示鸭子信息
&nbsp;
传统方案
Duck
	野鸭
	北京鸭
	水鸭


传统的方式实现的问题分析和解决方案

 1.其它鸭子，都继承了 Duck 类，所以 fly 让所有子类都会飞了，这是不正确的
 2.上面说的1的问题，其实是继承带来的问题：对类的局部改动，尤其超类的局部改动，会影响其他部分，容易引起溢出效应。
 3.为了改进1问题，我们可以通过覆盖fly方法来解决 =&gt; 覆盖解决
&]]></description><category></category></item><item><title><![CDATA[状态模式(State Pattern）]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118653022</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118653022</guid><author>code_Floyed</author><pubDate>Sun, 11 Jul 2021 12:43:20 +0800</pubDate><description><![CDATA[抽奖问题
 1.每参加一次抽奖需要50积分，中奖概率10%
 2.奖品数量有限，没有即止
 3.抽象由4个状态：可以抽奖、不能抽奖、发放奖品、奖品领完。
状态模式
 状态模式:它主要用来解决对象在多种状态转换时，需要对外输出不同的行为的问题。状态和行为是一一对应的，状态之间可以相互转换
 当一个对象的内在状态改变时，允许改变其行为，这个对象看起来像是改变了其类
状态模式结构

 1.上下文 （Context） 保存了对于一个具体状态对象的引用， 并会将所有与该状态相关的工作委派给它。 上下文通过状态接口与状]]></description><category></category></item><item><title><![CDATA[解释器模式]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118633489</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118633489</guid><author>code_Floyed</author><pubDate>Sat, 10 Jul 2021 12:08:19 +0800</pubDate><description><![CDATA[四则运算问题
计算a+b-c
 要求：
  先输入表达式的形式，eg：a+b+c-d+e，并且字母不可重复
  分别输入 a,b,c,d,e
  计算出结果
&nbsp;
传统方案
 编写方法，来接受根据数据输入的数值进行解析，得出结果
​
&gt;问题分析：

 如果加入新的运算符，比如  *  /。 则不利于扩展，另外让一个方法来解析会造成程序结构混乱
&nbsp;
解释器模式
 1.在编译原理中一个算术表达式通过词法分析器形成词法单元，而后这些词法单元再通过语法分析器构建语法分析树，最终形成一颗抽象的]]></description><category></category></item><item><title><![CDATA[备忘录模式]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118633462</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118633462</guid><author>code_Floyed</author><pubDate>Sat, 10 Jul 2021 12:05:36 +0800</pubDate><description><![CDATA[游戏角色状态恢复问题
 游戏角色有攻击力和防御力，在大战 Boss 前保存自 身的状态攻击力和防御力当大战 Boss 后攻击力和防御力下降， 从备忘录对象恢复到大战前的状态
&nbsp;
传统方案
对象 &lt;-&gt; 对象状态
对象 &lt;-&gt; 对象状态
对象 &lt;-&gt; 对象状态


传统方式的问题分析

 1.一 个对象，就对应一个保存对象状态的对象， 这样当我们游戏的对象很多时，不利于管理，开销也很大
 2.传统的方式是简单地做备份(new 出另外一个对象出来)，再把需要备份的数]]></description><category></category></item><item><title><![CDATA[中介者模式]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118633409</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118633409</guid><author>code_Floyed</author><pubDate>Sat, 10 Jul 2021 12:01:52 +0800</pubDate><description><![CDATA[智能家庭
 智能家居有许多。当你起床时，你希望各个设备能够协同做一些事情。
 比如：闹钟响起-&gt;音响播放音乐-&gt;空调关闭
&nbsp;
传统方案：


问题：

 当有多种电器时，相互之间的调用关系会比较复杂。不利于松耦合。
 各个对象之间传递的内容容易混乱
 当系统中途增加一个电器对象，或者执行流程改变，则需要改动代码较大，不利于系统的可维护性、扩展性。
&nbsp;
中介者模式
 用一个中介对象来封装一系列的对象交互。则中介者可以使各个对象不需要显示地相互引用，从而松耦合，又可以独立地改变它]]></description><category></category></item><item><title><![CDATA[观察者模式]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118633364</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118633364</guid><author>code_Floyed</author><pubDate>Sat, 10 Jul 2021 11:58:00 +0800</pubDate><description><![CDATA[天气预报：
 1.天气站可以将每天测量的温度，湿度，气压等等以公告的形式发布出去
 2.如果设置开放型API，则第三方的应用也可接入气象站获取数据
 3.提供温度、气压和适度的接口。
 4.测量数据更新时，要实时的通知第三方
&nbsp;
普通方案1：

​	 通过getxxx的方法，直接让第三方接入，并获取相关信息。
​	 当数据变化时，气象站使用dataChange()来更新数据。那么第三方再次获取时，就能得到最新数据。
&nbsp;
普通方案2：

 当dataChange时，则通知给第三方的upda]]></description><category></category></item><item><title><![CDATA[迭代器模式]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118608362</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118608362</guid><author>code_Floyed</author><pubDate>Fri, 09 Jul 2021 15:47:28 +0800</pubDate><description><![CDATA[展示学校院系系统
 展示学校院系系统，展示一个学校要多少学院、一个学院有多少个系。
&nbsp;
迭代器模式
 提供一种遍历集合元素的统一接口，用一致的方法遍历集合元素，不需要指导集合对象的底层。
 当我们集合元素是用不同的方式实现，比如数组、集合类等，当客户端需要遍历时，便会使用多种迭代方法，则容易暴露元素的内部结构，此时便可考虑迭代器模式
&nbsp;
迭代器模式结构

 1.迭代器 （Iterator） 接口声明了遍历集合所需的操作： 获取下一个元素、 获取当前位置和重新开始迭代等。
 2.具体迭代器]]></description><category></category></item><item><title><![CDATA[访问者模式]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118608224</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118608224</guid><author>code_Floyed</author><pubDate>Fri, 09 Jul 2021 15:44:23 +0800</pubDate><description><![CDATA[评测系统的需求
 当电影播放完后，通常人们都会对其进行评价。评价有三种状态：成功、失败、待定。而观众分为男人、女人。
&nbsp;
传统方案
 Person
  -&gt;Woman
  -&gt;Man
&nbsp;

问题：

 若要增加新功能时，对代码改动较大。
 扩展性不好，比如增加新的人员类型，新的管理方法。
&nbsp;
访问者模式
 封装一些作用于某种数据类型的各元素的操作，它可以在不改变的前提下定义作用于这些元素的新操作。
 主要将数据结构与数据操作分离，有利于解决数据结构和操作耦合性的问题]]></description><category></category></item><item><title><![CDATA[命令模式的学习]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118608171</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118608171</guid><author>code_Floyed</author><pubDate>Fri, 09 Jul 2021 15:39:56 +0800</pubDate><description><![CDATA[智能生活需求：
​		 每个品牌都有着各自的智能家居。而你想操作不同牌子的智能家居只能通过不同品牌的App进行控制。
​		 我们能否通过一个App就可以控制全部的智能家居。这便要求每个智能家具厂家提供一个统一接口给App调用。
&nbsp;
命令模式
​		 在软件设计中，经常需要向某些对象发生请求，但是并在不知道接收者是谁，也不知道被请求的操作是哪个，那么我们只需要在程序运行时指定具体的请求接收者即可。
​		 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参]]></description><category></category></item><item><title><![CDATA[模板方法的学习]]></title><link>https://blog.youkuaiyun.com/code_Floyed/article/details/118608005</link><guid>https://blog.youkuaiyun.com/code_Floyed/article/details/118608005</guid><author>code_Floyed</author><pubDate>Fri, 09 Jul 2021 15:35:56 +0800</pubDate><description><![CDATA[豆浆制作问题
​		 1.流程：选材 添加配料 浸泡 放入豆浆机搅碎
​		 2.通过添加不同的配料，可以制作不同口味的豆浆
​	 3.其中选材、浸泡、放入豆浆机搅碎对于制作每一种口味的豆浆机都是一致的。
​
模板方法模式
​	 公开它方法的模板。它的子类可以按需要重写方法实现，但调用将以抽象类定义的方式进行。
​	 即定义了一个操作中的算法骨架，将一些步骤的实现延迟给子类，使得子类可以在不改变一个算法的结构，便可定义某些特定步骤。
&nbsp;
模板方法模式结构

 1.抽象类 （Abstract­Cla]]></description><category></category></item></channel></rss>