<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AI梦想家]]></title><description><![CDATA[但行好事，自有前程]]></description><link>https://blog.youkuaiyun.com/dfjaadada</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dfjaadada]]></copyright><item><title><![CDATA[原型模式、建造者模式、装饰器模式]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/105484828</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/105484828</guid><author>dfjaadada</author><pubDate>Mon, 13 Apr 2020 11:31:45 +0800</pubDate><description><![CDATA[原型模式

必须让目标了实现Cloneable接口，该接口中没有任何方法,这样的接口仅仅为一个“标记接口”，作用是告诉Jvm,任何实现了Cloneable接口的类的对象都可以被克隆！
必须写Java.lang.Object的clone方法，一定要把该方法的访问修饰符，重写为public！不然无法调用clone方法
克隆方法不会引起构造调构造器！那么clone如何实现对象的clone？clone方法...]]></description><category></category></item><item><title><![CDATA[工厂设计模式]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/105470517</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/105470517</guid><author>dfjaadada</author><pubDate>Sun, 12 Apr 2020 15:43:17 +0800</pubDate><description><![CDATA[工厂设计模式：简单工厂、工厂方法、抽象工厂

面向接口编程示意图：
相关概念：产品、抽象产品、产品蔟、产品等级
产品：类
抽象产品：抽象类和接口
产品蔟：多个有内在联系，或者是有关系的产品


简单工厂：解耦了客户端与服务器代码
//抽象产品
interface Food{
	public void eat();
}
//具体产品
class Hamburger implements Food{
...]]></description><category></category></item><item><title><![CDATA[设计模式：七大设计原则]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/105448812</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/105448812</guid><author>dfjaadada</author><pubDate>Sat, 11 Apr 2020 11:06:58 +0800</pubDate><description><![CDATA[绪论：


设计模式是前辈们不断总结，不断打磨出的设计方法，不同设计模式适应于不同的场景


设计模式，公认的有23种设计模式，不同的设计模式适用于不同的场景


设计模式有优点，也有缺点不要为了使用设计模式而使用设计模式，切记防止“模式的滥用”


23种设计模式，其背后是7大设计原则。也就是说，每一个设计模式都归于一个或多个设计原则


7大设计原则的背后又是一个字，分。


7大设计原则，分...]]></description><category></category></item><item><title><![CDATA[图的构建深度优先和广度优先]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/104427897</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/104427897</guid><author>dfjaadada</author><pubDate>Fri, 21 Feb 2020 14:57:06 +0800</pubDate><description><![CDATA[图结构
1. 图的构建
&lt;pre&gt;
package GraphPackage;
import java.util.Arrays;
class Edge{
	String beginCity;
	String endCity;
	int cost;
	
	public Edge(String beginCity, String endCity, int cost) {
		super()...]]></description><category></category></item><item><title><![CDATA[二叉树的前序中序后续遍历]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103961459</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103961459</guid><author>dfjaadada</author><pubDate>Mon, 13 Jan 2020 17:27:13 +0800</pubDate><description><![CDATA[二叉树的遍历
遍历：按照某一种次序依次访问各个结点，每个结点恰好访问一次。

二叉树前序遍历
1.递归实现前序遍历
&lt;pre&gt;
public static void main(String[] args) {
	//设置结点之间的关系
	BinNode root = new BinNode(0);
	BinNode node1 = new BinNode(1);
	BinNode no...]]></description><category></category></item><item><title><![CDATA[二叉树]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103937334</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103937334</guid><author>dfjaadada</author><pubDate>Sat, 11 Jan 2020 15:46:56 +0800</pubDate><description><![CDATA[二叉树
二叉树结点的构建
&lt;pre&gt;
class BinNode{
	public int data;
	public int height;
	public BinNode parent;
	public BinNode left;
	public BinNode right;
	public BinNode(int data) {
		super();
		this.data = ...]]></description><category></category></item><item><title><![CDATA[栈--中缀表达式与逆波兰表达式]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103930550</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103930550</guid><author>dfjaadada</author><pubDate>Fri, 10 Jan 2020 20:46:23 +0800</pubDate><description><![CDATA[栈
构造一个栈类
&lt;pre&gt;
class StackArray{
	public int maxiSize;
	public int[] stack;
	public int top;
	public StackArray(int maxiSize) {
		//构造一个栈
		this.top = -1;
		this.maxiSize = maxiSize;
		stack = n...]]></description><category></category></item><item><title><![CDATA[选择排序和插入排序]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103912644</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103912644</guid><author>dfjaadada</author><pubDate>Thu, 09 Jan 2020 17:25:45 +0800</pubDate><description><![CDATA[选择排序和插入排序
选择排序
选择排序：选择排序的思路是从一组元素中逐次选择最大的元素，放在无序元素末端，具体的实现过程如下图所示。因此选择排序需要存在以下几个接口：
1.selectMax(p,n):从节点p开始，在节点p前n个节点中(不包括节点p)选择一个节点返回。

&lt;pre&gt;
public static ListNode selectMax(ListNode p, int n)...]]></description><category></category></item><item><title><![CDATA[无序链表和有序链表]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103881211</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103881211</guid><author>dfjaadada</author><pubDate>Tue, 07 Jan 2020 20:30:33 +0800</pubDate><description><![CDATA[链表–无序链表
无序链表的相关接口

寻秩访问–rank2data(head,rank),时间复杂度为O(rank),复杂度与rank成正比，以均匀分布为例，期望的时间复杂度为O(n),其中n为链表的长度

&lt;pre&gt;
public class LinkedList {

	public static void main(String[] args) {
		//创建一个链表node1...]]></description><category></category></item><item><title><![CDATA[冒泡排序与归并排序]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103872981</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103872981</guid><author>dfjaadada</author><pubDate>Tue, 07 Jan 2020 13:45:36 +0800</pubDate><description><![CDATA[冒泡排序与归并排序
冒泡排序

方法一：思想是相邻元素逐个比较，然后将最大的放在后面。每遍历完一次，就会有一个元素就位，所以时间复杂度为O(n^2)

&lt;pre&gt;
public class LinearRecur {
	public static void main(String[] args) {
		int[] b = {7,6,10,9,12,15};
		int low = 0...]]></description><category></category></item><item><title><![CDATA[二分查找与斐波那契查找]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103866130</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103866130</guid><author>dfjaadada</author><pubDate>Mon, 06 Jan 2020 22:37:16 +0800</pubDate><description><![CDATA[数据结构–查找
二分查找

方法一：轴点取中点，逐步递归。算法时间复杂度O(log[n])。主要思路如下图：


&lt;pre&gt;
public class LinearRecur {
	public static void main(String[] args) {
		int[] b = {2,6,6,9,10,10};
		int low = 0;
		int high = b.len...]]></description><category></category></item><item><title><![CDATA[数据库系统相关概念]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103845100</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103845100</guid><author>dfjaadada</author><pubDate>Sun, 05 Jan 2020 17:17:22 +0800</pubDate><description><![CDATA[数据库系统
定义：

数据库：相互有关联关系的数据集合
数据库管理系统：管理数据库的一种系统软件
数据库语言：通过数据库语言开发数据库应用程序
现实世界&gt;&gt;&gt;&gt;&gt;信息世界&gt;&gt;&gt;&gt;&gt;计算机世界
由现实世界到信息世界：我们需要对数据进行建模（信息模型）
由信息世界到计算机世界：我们需要进行数据库设计
主要内容：




数据库系统之–基本关系...]]></description><category></category></item><item><title><![CDATA[数组扩容--无序数组]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103842634</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103842634</guid><author>dfjaadada</author><pubDate>Sun, 05 Jan 2020 14:07:52 +0800</pubDate><description><![CDATA[数据结构
数组扩容–如何对一个数组进行有效的扩容

静态空间管理：开辟内部数组并适用一段地址连续的物理空间，capacity为总容量，size为当前的实际规模。若采用静态空间策略管理，容量capacity固定，则存在明显的不足。
上溢：capacity空间不够，不足以存放所有元素
下溢：capcity空间过大，存放的元素寥寥无几，装填因子（load factor） u=size/capacity ...]]></description><category></category></item><item><title><![CDATA[动态规划]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103838603</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103838603</guid><author>dfjaadada</author><pubDate>Sat, 04 Jan 2020 22:40:53 +0800</pubDate><description><![CDATA[动态规划
问题一：斐波那契数列问题：
斐波那契数列是指存在递推关系为：fib(n)=fib(n-1)+fib(n-2),且fib(0)=0，例如{0，1，1，2，3，5，8，13，…}就是一个斐波那契数列
问题：给定n，求解对应的fib(n)

迭代法一：

&lt;pre&gt;
public class LinearRecur {
	public static void main(String...]]></description><category></category></item><item><title><![CDATA[递归与迭代]]></title><link>https://blog.youkuaiyun.com/dfjaadada/article/details/103833363</link><guid>https://blog.youkuaiyun.com/dfjaadada/article/details/103833363</guid><author>dfjaadada</author><pubDate>Sat, 04 Jan 2020 15:04:01 +0800</pubDate><description><![CDATA[数据结构
第一部分：
对于一个数组求和问题的两种思路

减而治之： 时间复杂度：O(n)

 
	public class LinearRecur {  
	public static void main(String[] args) {
		int[] array = {1,2,3,4,5,6,7,8,9};
		int length = array.length;
		int sum = 0;...]]></description><category></category></item></channel></rss>