<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[androdi__LT的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/androdi__LT</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; androdi__LT]]></copyright><item><title><![CDATA[Java中的网络协议]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/121954450</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/121954450</guid><author>androdi__LT</author><pubDate>Tue, 01 Mar 2022 10:53:25 +0800</pubDate><description><![CDATA[OSI七层模型  TCP/IP四层模型
HTTP协议
HttpClient HttpURLConnection
TCP协议 UDP协议
Socket实现TCP通信
Socket实现UDP通信
为了使不通类型的计算机之间可以相互通信，国际化标准组织提出了OSI七层网络模型，从下到上分别是：物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。但是OSI七层网络模型仅仅用于实验室，并没有真正的使用它，实际的环境中用的是TCP/IP四层模型，TCP/IP四层网络模型包括：链路层、网络层、传输层、应用层。
链]]></description><category></category></item><item><title><![CDATA[Java中的多线程与高并发]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/121476143</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/121476143</guid><author>androdi__LT</author><pubDate>Fri, 03 Dec 2021 18:04:57 +0800</pubDate><description><![CDATA[进程和线程
进程是系统进行资源调度和分配的基本单元，是操作系统的基础。线程是系统调度的最小单元，是线程的运算单元，一个进程可以包括一个或多个线程。
线程的三种创建方式：
一、继承Thread类
    class MyThread extends Thread {
        @Override
        public void run() {
            Log.i(TAG, "MyThread--&gt;" + Thread.currentThread());
        }
]]></description><category></category></item><item><title><![CDATA[Java中的垃圾回收和GC]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/117521560</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/117521560</guid><author>androdi__LT</author><pubDate>Wed, 23 Jun 2021 16:31:32 +0800</pubDate><description><![CDATA[Java中垃圾回收主要在堆中，Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭；栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的（尽管在运行期会由 JIT 编译器进行一些优化），因此这几个区域的内存分配和回收都具备确定性，不需要过多考虑回收的问题，因为方法结束或者线程结束时，内存自然就跟随着回收了。而 Java 堆不一样，一个接口中的多个实现类需要的内存可能不一样，一个方法中的多个分支需要的内存也可能不一样，我]]></description><category></category></item><item><title><![CDATA[Java中的I/O]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/114884066</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/114884066</guid><author>androdi__LT</author><pubDate>Tue, 23 Mar 2021 17:22:05 +0800</pubDate><description><![CDATA[IO流是Java中数据传输的通道，根据传输数据的不同可以分为：字节流(InputStream、OutputStream)和字符流(Reader、Writer)，根据流向的不同可以分为：输入流(InputStream、Reader)和输出流(OutputStream、Writer)，此外还有缓冲流（Buffre+流）和转换流(InputStreamReader、OutputStreamWriter)。输入流只能读，输出流只能写。
字节输入流的基类是InputStream，我们不能直接使用它，FileInput]]></description><category></category></item><item><title><![CDATA[Java中的代理模式]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/114396250</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/114396250</guid><author>androdi__LT</author><pubDate>Fri, 05 Mar 2021 15:38:06 +0800</pubDate><description><![CDATA[为某个对象提供一个代理以控制对该对象的访问，这种模式称之为代理模式。代理模式有三个主要的角色，分别为：抽象主题、具体主题和代理类。同时根据代理创建时机的不同，又有静态代理和动态代理之分。
静态代理：由程序员手动创建代理类或特定工具自动生成源代码再对其编译，在程序运行前代理类的.class文件已经存在。静态代理中代理类和委托类都实现了同一个接口，同时代理类中持有委托类对象，代理类主要作用就是调用触发委托类的方法。具体代码实现如下：
抽象主题：
public interface ISubject {
    v]]></description><category></category></item><item><title><![CDATA[Java中的反射]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/113584559</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/113584559</guid><author>androdi__LT</author><pubDate>Thu, 04 Feb 2021 10:11:20 +0800</pubDate><description><![CDATA[反射用得最多的地方是在框架的开发中，平时项目中用得比较少。反射机制允许程序在运行时获取一个已知名称的类的内部信息，包括属性(Field)、方法(Method)、构造函数（Constructor）等，并且可以在运行时改变属性和调用方法。Java文件被编译后生成.class文件，Java虚拟机（JVM）会去解读.class文件，当某个类被使用时JVM会通过加载、连接和初始化三个步骤把.class文件解析为一个对象，这个对象就是java.lang.Class。每一个Java源文件最终都会有一个唯一的类对象（Cla]]></description><category></category></item><item><title><![CDATA[Android中的工厂模式]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/109161877</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/109161877</guid><author>androdi__LT</author><pubDate>Fri, 06 Nov 2020 11:34:00 +0800</pubDate><description><![CDATA[工厂模式具体有三类，分别是简单工厂模式、工厂方法模式和抽象工厂模式。
工厂，顾名思义，就是生产东西的地方。在代码开发中生产的“东西”指的是对象，所以通俗来讲工厂模式就是生产对象。使用工厂模式可以把对象的具体创建和使用分开，使用者不必了解对象是如何创建的，只管使用。

...]]></description><category></category></item><item><title><![CDATA[Android中的观察者模式]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/108198405</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/108198405</guid><author>androdi__LT</author><pubDate>Tue, 25 Aug 2020 09:53:56 +0800</pubDate><description><![CDATA[Android中的观察者模式是对象间的一种一对多的依赖关系，当一个对象发生改变时，所有依赖于它的对象都会得到通知并且做出相应的更新。
观察者模式的实现比较简单，主要就是定义并维护以下几个角色：
1、观察者接口：这个接口中一般会定义一个接收通知的方法。
2、具体的观察者：观察者接口的具体实现类，在收到通知时做具体的响应操作。
3、被观察者接口：这个接口中定义了被观察者需要做的事情，通常这些事情包括：注册观察者、解注册观察者、消息通知。
4、具体的被观察者：被观察者接口的具体实现类，这个实现类中一般会有一个观察]]></description><category></category></item><item><title><![CDATA[Android中的Builder模式]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/108093207</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/108093207</guid><author>androdi__LT</author><pubDate>Thu, 20 Aug 2020 15:07:53 +0800</pubDate><description><![CDATA[Builder模式：将一个复杂对象的构建和它的表示分离，使得同样的构建过程可以创建不同的表示。
什么时候可以使用builder模式：
1、一个类中有很多个属性，并且很多属性都有可能在创建对象的时候初始化。
2、相同的方法，不同的执行顺序，产生不同的事件结果时
3、多个部件或零件，都可以装配到一个对象中，但是产生的运行效果又不相同时
4、产品类非常复杂，或者产品类中的调用顺序不同产生了不同的作用，这个时候使用建造者模式非常合适
Android builder模式的特点：
1、Android builder模式]]></description><category></category></item><item><title><![CDATA[Android中的单例模式]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/107979896</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/107979896</guid><author>androdi__LT</author><pubDate>Fri, 14 Aug 2020 11:48:25 +0800</pubDate><description><![CDATA[单例模式是我们在项目开发中用得最多的一种设计模式。单例模式要求：1、单例模式的类在整个应用中只有一个实例对象。2、单例模式的类有一个对外方法提供类的实例。为此我们设计单例模式需要满足以下几点：
1、构造函数私有化：使用private私有化构造函数，使外部程序不能创建对象。
2、通过静态方法或者枚举返回一个单例对象。
3、确保单例类的对象有且只有一个，特别是在多线程模式下。
4、确保单例类对象在反序列化时不会重新创建对象
Android中实现单例主要有以下几种方式：
饿汉式：
public class Sin]]></description><category></category></item><item><title><![CDATA[Java中的抽象类和接口]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/107952050</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/107952050</guid><author>androdi__LT</author><pubDate>Wed, 12 Aug 2020 11:20:45 +0800</pubDate><description><![CDATA[在Java中抽象类和接口是实现面向对象抽象的两种方式。
抽象类
被abstract修饰的类我们称为抽象类，抽象类有如下几点特点：
1、抽象类只能被子类继承，没有自己的对象。
2、抽象类中可以有普通方法和抽象方法，抽象方法用abstract修饰。
3、抽象类中可以有各种权限的成员变量。
4、含有抽象方法的类一定是抽象类，但是抽象类不一定有抽象方法。
接口
Java中接口用interface定义，接口用于描述行为，只管定义，不管实现，实现流程由实现接口的类来做。接口有如下几点特点：
1、接口中只有抽象方法，默认]]></description><category></category></item><item><title><![CDATA[Java中的内部类]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/107911486</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/107911486</guid><author>androdi__LT</author><pubDate>Tue, 11 Aug 2020 11:31:03 +0800</pubDate><description><![CDATA[在Java中类可以定义在另一个类的内部或者某一个方法中，这样的类称之为内部类。而包含了内部类的类我们称为外部内。根据定义的位置和定义方式的不同，内部类可以归纳为四类：成员内部类、静态内部类、局部内部类以及匿名内部类。
成员内部类：
定义在类内部，并且非static修饰。
成员内部类定义的位置与一般成员变量一致，相当于是一个特殊的成员变量。成员内部类有如下特点：
1、成员内部类可以访问外部类的成员变量或者成员方法（不管是否是私有的或者是静态的成员变量或者方法）。
2、成员内部类如果是用private修饰的，那]]></description><category></category></item><item><title><![CDATA[Java中this、super、final关键字详解]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/107811819</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/107811819</guid><author>androdi__LT</author><pubDate>Thu, 06 Aug 2020 11:47:38 +0800</pubDate><description><![CDATA[Java中this、super和final关键字详解]]></description><category></category></item><item><title><![CDATA[Java中的构造函数]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/107782086</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/107782086</guid><author>androdi__LT</author><pubDate>Tue, 04 Aug 2020 12:01:22 +0800</pubDate><description><![CDATA[构造函数是Java面向对象设计的直接体现，构造函数又叫构造方法、构造器。那么Java中设计构造函数来干什么呢？我们在前面章节中讲过面向对象（面向对象），对象是类的具体实列，当我们用new方法创建这个类的具体实列时就会调用一次构造函数，并且可以在这个构造函数中做一些初始化工作。
构造函数必须和类名一致，并且没有返回值。构造函数是一种特殊的函数，也有重载，同一个类中可以拥有多个重载的构造函数，普通的函数不能调用构造函数，但是构造函数之间可以互相调用，构造函数调用其他构造函数时必须注意：
1、只能用this关键字]]></description><category></category></item><item><title><![CDATA[面向对象]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/107762969</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/107762969</guid><author>androdi__LT</author><pubDate>Mon, 03 Aug 2020 16:56:13 +0800</pubDate><description><![CDATA[面向对象是一种抽象的编程思想，类是这种思想的具体实现。对象是类的具体实列。
面向对象有三大特征：封装、继承、多态
封装：
封装指隐藏类的内部实现，不允许外部程序直接访问，外部程序只能通过对外提供的方法访问和操作隐藏的信息。
通过权限操作符private来实现类的封装，被private修饰的属性或方法仅归本类所有，在任何其他类中不能直接访问。




修饰符
本类
同包
子类
其他




private
true
false
false
false


默认
true
true
false
false


]]></description><category></category></item><item><title><![CDATA[HTML中的属性]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/105044040</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/105044040</guid><author>androdi__LT</author><pubDate>Tue, 24 Mar 2020 14:49:27 +0800</pubDate><description><![CDATA[HTML标签都拥有属性，比如class属性、id属性等。属性定义在HTML标签的开始标签中：
&lt;div id="div1"&gt;&lt;/div&gt;

HTML中的属性总是以属性/值的形式出现，值都有引号：当属性值本身带有双引号时就用单引号包围，反之则用双引号：
name = "this 'demo' is";
name = 'this "demo" is''

HTML标签的属性有很...]]></description><category></category></item><item><title><![CDATA[HTML中的基础标签]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/104983298</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/104983298</guid><author>androdi__LT</author><pubDate>Fri, 20 Mar 2020 14:30:43 +0800</pubDate><description><![CDATA[&lt;!DOCTYPE&gt;：
&lt;!DOCTYPE&gt;是一个声明而不是一个标签，&lt;!DOCTYPE&gt;声明的作用是告诉web浏览器当前HTML文档使用的编写版本。我们在编写HTML文档的时候需要始终加上&lt;!DOCTYPE&gt;声明以便浏览器知道文档的HTML版本。&lt;!DOCTYPE&gt;声明始终在HTML文档的第一个位置，在&lt;html&gt;标签之前。...]]></description><category></category></item><item><title><![CDATA[HTML简介]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/104892471</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/104892471</guid><author>androdi__LT</author><pubDate>Mon, 16 Mar 2020 10:36:00 +0800</pubDate><description><![CDATA[HTML（Hyper Text Markup Language）是一种用来描述网页的超文本标记语言。特别注意的是HTML并不是一种编程语言，而是一种标记语言，使用标记标签来描述网页，比如：a标签，p标签等。
HTML等价于网页，web浏览器通过读取HTML文档内容然后以网页的形式显示他们，当然浏览器并不是直接显示HTML标签，而是使用标签来解释页面内容。接触过Android的朋友应该会发现HTML...]]></description><category></category></item><item><title><![CDATA[JavaScript中的!!运算符]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/103310523</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/103310523</guid><author>androdi__LT</author><pubDate>Fri, 29 Nov 2019 15:09:24 +0800</pubDate><description><![CDATA[JavaScript中的运算符大体分为：算术运算符、比较运算符、布尔运算符、二进制运算符。运算符都比较基础，今天只讲布尔运算符中的!!运算符。
!!运算符用语言描述就是：取反再取反。单看一个！就是对一个值做取反运算。在所有的JavaScript值中除了以下六个值做 ! 运算后是true外其他所有的值做 ! 运算后都是false：
1、undefined
2、null
3、Nan
4、0
5、fal...]]></description><category></category></item><item><title><![CDATA[JavaScript中函数的自调用（自执行函数）]]></title><link>https://blog.youkuaiyun.com/androdi__LT/article/details/103240512</link><guid>https://blog.youkuaiyun.com/androdi__LT/article/details/103240512</guid><author>androdi__LT</author><pubDate>Mon, 25 Nov 2019 17:32:43 +0800</pubDate><description><![CDATA[JavaScript中的函数可以自调用也就是可以自己执行，当执行环境执行到该函数时该函数自己就运行。要了解自执行函数首先要了解函数的几种定义方式，前面的章节讲过函数的三种定义方式，但是最常用的就两种：函数申明和函数表达式。
//函数申明
function f(a,b){
	console.log(a+b);
}
//函数表达式
var fn = function(a,b){
	console.lo...]]></description><category></category></item></channel></rss>