<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[许长安]]></title><description><![CDATA[除了奋斗，别无选择！！！！]]></description><link>https://blog.youkuaiyun.com/an327104</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; an327104]]></copyright><item><title><![CDATA[设计模式-工厂方法模式]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/104504874</link><guid>https://blog.youkuaiyun.com/an327104/article/details/104504874</guid><author>an327104</author><pubDate>Tue, 25 Feb 2020 21:11:01 +0800</pubDate><description><![CDATA[上一篇文章简要概述了简单工厂设计模式，随着需求的不断扩展，若每个课程的创建逻辑不同，则会导致工厂会非常的臃肿，有点像万能工厂，并不便于维护，根据单一职责原则，我们将职能拆分，专人干专事儿，将万能的工厂拆分为创建Java的工厂，Python的工厂，对工厂本身也做一个抽象，于是工厂设计模式应运而生，下面来看代码，先定义个ICourceFactory接口：


public interface ICou...]]></description><category></category></item><item><title><![CDATA[设计模式-简单工厂模式]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/104473976</link><guid>https://blog.youkuaiyun.com/an327104/article/details/104473976</guid><author>an327104</author><pubDate>Mon, 24 Feb 2020 22:24:24 +0800</pubDate><description><![CDATA[简单工厂模式不属于23种设计模式，是指一个工厂决定创建哪一种产品类的实例，简单工厂适用于需要创建的对象较少的情形，客户端只需要传工厂类的参数，不需要关系工厂创建对象的逻辑。下面我们以课程为例。

有一个ICource接口


public interface ICource {
    /**
     * 录制视频
     */
    void record();
}


接下来有JavaC...]]></description><category></category></item><item><title><![CDATA[我对七大设计原则的理解]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/104452387</link><guid>https://blog.youkuaiyun.com/an327104/article/details/104452387</guid><author>an327104</author><pubDate>Sun, 23 Feb 2020 22:16:15 +0800</pubDate><description><![CDATA[1）单一职责原则：一个方法、模块、类只干一件事，也可以说对于一个类而言只有一个引起它变化的原因。

   优点：避免模块函数或者方法发生变化时，影响其他类，降低了耦合度。

2）开闭原则：对于一个实体（类、函数、模块）而言，对内修改关闭，对外扩张开放。

   原因：新功能经常有，可以添加代码，但是不能对已有的功能做修改。

   实现方法: 面向接口编程，提供一个固定的接口，若...]]></description><category></category></item><item><title><![CDATA[生活感言]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/104419140</link><guid>https://blog.youkuaiyun.com/an327104/article/details/104419140</guid><author>an327104</author><pubDate>Thu, 20 Feb 2020 22:06:06 +0800</pubDate><description><![CDATA[时光荏苒，岁月匆匆，时光不会因为我们没有学到太多的东西而放慢了它前进的脚步；寒冬已至，工作不会因为你的懒惰而选择施舍它的怜悯；机会总是留给有准备的人；2020新的开始，注定会是一个不平凡的一年,新的一年计划如下:

1.坚持学习，将学到的东西通过写博客的形式记录；

2.不断总结，可以提高自己的文采表达能力；

3.敢讲，敢说，敢于表达自己的想法。


...]]></description><category></category></item><item><title><![CDATA[SourceTree的使用教程]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/80190778</link><guid>https://blog.youkuaiyun.com/an327104/article/details/80190778</guid><author>an327104</author><pubDate>Fri, 04 May 2018 09:53:46 +0800</pubDate><description><![CDATA[SourceTree的基本使用1. SourceTree是什么拥有可视化界面的项目版本控制软件，适用于git项目管理window、mac可用2. 获取项目代码1. 点击克隆/新建 2. 在弹出框中输入项目地址，http或者ssh地址都可以 　　如果箭头指向的仓库类型表明“这不是一个标准的Git仓库”，可能是有以下原因　　　　1) 项目地址获取错误　　　　2) 没有项目访问权限3. 点击“克隆”，等...]]></description><category></category></item><item><title><![CDATA[大数相乘]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76588673</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76588673</guid><author>an327104</author><pubDate>Wed, 02 Aug 2017 17:38:46 +0800</pubDate><description><![CDATA[思路：两个数相乘最多有length1+length2 位  第i位*第j位所得的数的个位数一定落在第i+j位  如果这个数超过了10 就往第i+j+1上进位package testPackage;

public class Big {
	public static int[] stringtoArray(String str){
		int length=str.length();
		int[]]></description><category></category></item><item><title><![CDATA[二叉搜索树的后序遍历序列]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76573883</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76573883</guid><author>an327104</author><pubDate>Wed, 02 Aug 2017 11:44:29 +0800</pubDate><description><![CDATA[时间限制：1秒 空间限制：32768K 热度指数：109215
 算法知识视频讲解

题目描述

输入一个整数数组，判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路：数组的末尾肯定是 树的根  从头开始遍历数组  找到第一个比根节点大的值  也就是划分了左子树和右子树的界限，然后遍历右子树，如果右子树中出现了]]></description><category></category></item><item><title><![CDATA[concurrenthashmap 原理]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76549697</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76549697</guid><author>an327104</author><pubDate>Tue, 01 Aug 2017 18:36:47 +0800</pubDate><description><![CDATA[一.Java并发基础

当一个对象或变量可以被多个线程共享的时候，就有可能使得程序的逻辑出现问题。 在一个对象中有一个变量i=0，有两个线程A，B都想对i加1，这个时候便有问题显现出来，关键就是对i加1的这个过程不是原子操作。要想对i进行递增，第一步就是获取i的值，当A获取i的值为0，在A将新的值写入A之前，B也获取了A的值0，然后A写入，i变成1，然后B也写入i，i这个时候依然是1. 当然j]]></description><category></category></item><item><title><![CDATA[Java之CyclicBarrier使用]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76515982</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76515982</guid><author>an327104</author><pubDate>Tue, 01 Aug 2017 12:06:57 +0800</pubDate><description><![CDATA[1、类说明：

一个同步辅助类，它允许一组线程互相等待，直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中，这些线程必须不时地互相等待，此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用，所以称它为循环 的 barrier。

2、使用场景：

需要所有的子任务都完成时，才执行主任务，这个时候就]]></description><category></category></item><item><title><![CDATA[计算机网络基础知识]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76070355</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76070355</guid><author>an327104</author><pubDate>Tue, 25 Jul 2017 14:52:42 +0800</pubDate><description><![CDATA[一、什么是TCP/IP



网络和协议


1.     TCP/IP是一类协议系统，它是一套支持网络通信的协议集合。网络是计算机或类似计算机的设备之间通过常用的传输介质进行通信的集合。

2.    网络协议就是一套通用规则，用来帮助定义复杂数据传输的过程。数据传输从一台计算机上的应用程序开始，通过计算机网络硬件，经过传输介质到正确目的地，然后上传到目的地计算机网络硬件，最后]]></description><category></category></item><item><title><![CDATA[剑指offer 计算机网络基础]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76048032</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76048032</guid><author>an327104</author><pubDate>Tue, 25 Jul 2017 09:55:05 +0800</pubDate><description><![CDATA[剑指Offer——知识点储备-网络基础

计算机网络

http和https的区别

（1）http是http协议运行在tcp之上，所传输的内容都是明文，客户端和服务器端都无法验证对方的身份。（2）https是http协议运行在SSL/TLS之上，SSL/TLS运行在tcp之上。所有传输的内容都经过加密。加密采用对称加密，但对称加密的秘钥用服务器方的证书进行非对称加密，此外客户端可以验]]></description><category></category></item><item><title><![CDATA[剑指offer Java JVM基础]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76046478</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76046478</guid><author>an327104</author><pubDate>Tue, 25 Jul 2017 09:47:57 +0800</pubDate><description><![CDATA[1、java内存与内存溢出

1.1 JVM分为哪些区，每一个区干嘛的？（见java虚拟机38页）

（1）程序计数器（线程私有） 
当前线程执行字节码的信号指示器。（每个线程都会在程序计数器中存储其指令，从而实现线程切换后恢复到正确的执行位置）

（2）虚拟机栈（就是常说的栈，线程私有） 
每个方法执行（开始到结束就是这个方法的生命周期）都会创建一个栈帧，栈帧存储局部变量表、操作]]></description><category></category></item><item><title><![CDATA[数值的整数次方]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76038292</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76038292</guid><author>an327104</author><pubDate>Mon, 24 Jul 2017 21:29:04 +0800</pubDate><description><![CDATA[时间限制：1秒 空间限制：32768K 热度指数：117256
 算法知识视频讲解

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路：要考虑到指数为负数的情形！如果指数是负数，就先求其绝对值，求出n次方后再求倒数
public class Solution {
    double sum = 0.0;]]></description><category></category></item><item><title><![CDATA[二进制1的个数]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76037757</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76037757</guid><author>an327104</author><pubDate>Mon, 24 Jul 2017 20:44:09 +0800</pubDate><description><![CDATA[时间限制：1秒 空间限制：32768K 热度指数：111294
 算法知识视频讲解

题目描述

输入一个整数，输出该数二进制表示中1的个数。其中负数用补码表示。
在分析算法之前，我们先来分析把一个数减去1的情况。如果一个整数不等于0，那么该整数的二进制数表示中至少有一位是1.先假设这个最右边的一位是1，那么减去1时，最后一位变成0而其他所有位操作都保持不变。也就是最后一位相当于做了取]]></description><category></category></item><item><title><![CDATA[深入理解Java虚拟机体系结构]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76037284</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76037284</guid><author>an327104</author><pubDate>Mon, 24 Jul 2017 19:48:24 +0800</pubDate><description><![CDATA[1 概述
　　众所周知，Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成，它为纯Java程序提供了统一的编程接口，而不管下层操作系统是什么。正是得益于Java虚拟机，它号称的“一次编译，到处运行”才能有所保障。
1.1 Java程序执行流程
　　Java程序的执行依赖于编译环境和运行环境。源码代码转变成可执行的机器代码，由下面的流程完成：
]]></description><category></category></item><item><title><![CDATA[Java虚拟机工作原理详解]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/76034757</link><guid>https://blog.youkuaiyun.com/an327104/article/details/76034757</guid><author>an327104</author><pubDate>Mon, 24 Jul 2017 19:00:40 +0800</pubDate><description><![CDATA[一、类加载器

首先来看一下Java程序的执行过程。

                         


从这个框图很容易大体上了解java程序工作原理。首先，你写好java代码，保存到硬盘当中。然后你在命令行中输入





[java] view
 plain copy






javac YourClassName.java  


]]></description><category></category></item><item><title><![CDATA[Java中的栈和堆]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/49952117</link><guid>https://blog.youkuaiyun.com/an327104/article/details/49952117</guid><author>an327104</author><pubDate>Fri, 20 Nov 2015 21:18:47 +0800</pubDate><description><![CDATA[栈与堆都是Java用来在Ram中存放数据的地方。与C++不同，Java自动管理栈和堆，程序员不能直接地设置栈或堆。
     Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和 multianewarray等指令建立，它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的，堆的优势是可以动态地分配内存大小，生存期也不必事先告诉编译器，]]></description><category></category></item><item><title><![CDATA[Java中的向上转型和向下转型]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/49944121</link><guid>https://blog.youkuaiyun.com/an327104/article/details/49944121</guid><author>an327104</author><pubDate>Fri, 20 Nov 2015 10:55:55 +0800</pubDate><description><![CDATA[我感觉向上转型就是把小的东西放在大的东西里面，不会衣橱，当然是安全的，例如：Father  f = new Son();
父亲的体积小，儿子的体积大，现在把父亲放在一个容量更大的东西中，当然能放下；
向下转型就就是：大的东西放在小的东西里面，需要强转，例如：Father f = new Son();  Son  s = (Son) f;一句话说完就和doule ，int 类型相互转换的规则是一]]></description><category></category></item><item><title><![CDATA[字典树的妙用（求单词出现的次数）]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/49822775</link><guid>https://blog.youkuaiyun.com/an327104/article/details/49822775</guid><author>an327104</author><pubDate>Fri, 13 Nov 2015 20:35:11 +0800</pubDate><description><![CDATA[我是从http://blog.youkuaiyun.com/niushuai666/article/details/6695503这儿借鉴的，飘过的小牛我很崇拜他

字典树，顾名思义，就是一种对字母等字符串进行处理的一种特殊数据结构。说白了，就是二十六叉树。定义一个头指针，每次从头指针开始操作。

有两种常用的操作：

1.查询某个字符串的出现次数。

每个节点的count置为0，直到这个字符]]></description><category></category></item><item><title><![CDATA[各种排序总结]]></title><link>https://blog.youkuaiyun.com/an327104/article/details/49821877</link><guid>https://blog.youkuaiyun.com/an327104/article/details/49821877</guid><author>an327104</author><pubDate>Fri, 13 Nov 2015 18:52:47 +0800</pubDate><description><![CDATA[]]></description><category></category></item></channel></rss>