<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Seas.Su的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yichen97</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yichen97]]></copyright><item><title><![CDATA[LeetCode 83. 删除排序链表中的重复元素]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/106772410</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/106772410</guid><author>yichen97</author><pubDate>Mon, 15 Jun 2020 23:45:58 +0800</pubDate><description><![CDATA[一、题目分析 &amp;&amp; 整体思路

如题所述，原题中给定的是一个排序的链表，所以它重复的元素都一定是相邻的；

如果采用遍历的方式，那就可以：

1、把这个链表从头到尾遍历一遍，找到相邻的重复元素节点；

2、再把重复的元素节点删掉，只保留一个元素节点。



二、如何删除重复节点，或者说如何在相同节点中只保留一个

要保证连续多个元素相同的情况下都能适应，我们把这个题分成了两种情况：一种是连续两个元素相同的情况、另一种是连续三个元素相同的情况。

1、两个元素相同

当发现当前节点的值与...]]></description><category></category></item><item><title><![CDATA[LeetCode 203. 移除链表元素]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/106698738</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/106698738</guid><author>yichen97</author><pubDate>Sun, 14 Jun 2020 22:29:42 +0800</pubDate><description><![CDATA[一、题目分析与整体思路

在这个示例中，给定的val值是6，就将输入链表中的所有是6的节点给删除了。

整体思路：

1、将这个链表从头到尾遍历；

2、如果能找到值与val值相等的节点，就把该节点删除。



二、删除链表节点的操作

当我们遍历到需要删除的节点之后，这时候已经不能删除该节点了，所以，需要遍历到需要删除节点的前一个节点的时候，才能把这个节点删除。

因为想要删除该节点，就必须对该节点前面的指针进行操作，也只有current在被删除节点前一个的时候，才能对该指针进行操作。



删除...]]></description><category></category></item><item><title><![CDATA[Binder的基本原理]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/106483710</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/106483710</guid><author>yichen97</author><pubDate>Thu, 04 Jun 2020 23:34:27 +0800</pubDate><description><![CDATA[多进程有哪些优点？

多进程一般在webView、图片加载、推送、闹钟之类的比较常见，还有比如在使用getSystemService获取系统服务的时候，虽然在自己写的代码中没有发现多进程，其实在内部实现中也是多进程。

它们为什么需要被做成多进程的呢？

1、解决手机内存问题

虽然现在手机的运行内存是很大的，但是手机的APP是运行在独立的虚拟机中的，虚拟机会为每一个进程分配运行内存是有限的，一般只有32M、48M、64M，所以经常会发生一些内存不足的问题，就像加载一个大的图片，可能就直接OOM。

2、其]]></description><category></category></item><item><title><![CDATA[Handler中Looper死循环为什么不会导致应用卡死？]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/106367067</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/106367067</guid><author>yichen97</author><pubDate>Wed, 27 May 2020 23:50:44 +0800</pubDate><description><![CDATA[ANR所产生的原因？

1、5秒钟之内没有响应输入的事件，比如按键、屏幕触摸等。

2、广播接收器在10秒内没有执行完毕。


















]]></description><category></category></item><item><title><![CDATA[Handler往MessageQueue中添加数据，消息队列是怎样变化的？如何保证线程安全的？]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/106246123</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/106246123</guid><author>yichen97</author><pubDate>Mon, 25 May 2020 23:09:58 +0800</pubDate><description><![CDATA[多个Handler往MessageQueue中添加数据，其内部是如何保证线程安全的？

Handler是一个线程间通信的机制，很多消息都会从子线程发送至主线程，而主线程只有一个Looper，发送的消息都被放置在MessageQueue这个队列中来，如何保证队列的混乱（如何保证线程安全）？



看入队列的方法enqueueMessage：


    boolean enqueueMessage(Message msg, long when) {
        if (msg.target == null]]></description><category></category></item><item><title><![CDATA[子线程中：new Handler需要做哪些准备？消息队列中无消息的时候，Looper的处理方案是什么？]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/106107874</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/106107874</guid><author>yichen97</author><pubDate>Tue, 19 May 2020 00:00:59 +0800</pubDate><description><![CDATA[为什么主线程可以new Handler？

在ActivityThread.java里有一个main()函数，它是Android每一个应用最早执行的函数。


    public static void main(String[] args) {

        .....

        Looper.prepareMainLooper();

        ActivityThread thread = new ActivityThread();
        thread.attach(fa]]></description><category></category></item><item><title><![CDATA[Handler内存泄漏的原因是什么？为什么其他内部类没有这个问题？]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/106087701</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/106087701</guid><author>yichen97</author><pubDate>Tue, 12 May 2020 23:18:32 +0800</pubDate><description><![CDATA[Handler为什么会内存泄漏？

内部类持有了外部类的引用。


    Handler handler = new Handler() {
	
        @Override
        public void handleMessage(Message msg) {
            MainActivity.this.click();
            //click();
        }
    };
	
    public void click(){
    	...
]]></description><category></category></item><item><title><![CDATA[一个线程中有几个Handler？几个Looper？怎么保证？]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/105983672</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/105983672</guid><author>yichen97</author><pubDate>Sun, 10 May 2020 23:46:44 +0800</pubDate><description><![CDATA[一个线程中有几个Handler？

N个。

因为Handler可以在Activity可以new，在Service里面也可以new，而Activity全部都跑在了主线程里面，这就证明了主线程中可以有多个Handler。



一个线程中有几个Looper？

1个。

我们来到Looper初始化的地方Looper.prepare()。


     /** Initialize the curr...]]></description><category></category></item><item><title><![CDATA[Handler源码流程梳理]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/105801156</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/105801156</guid><author>yichen97</author><pubDate>Thu, 07 May 2020 22:38:01 +0800</pubDate><description><![CDATA[Handler的工作流程





需要搞明白Handler的流程，就是从sendMessage一直到handleMessage的过程。



Handler.sendMessage()

首先来看sendMessage，从图中就可以看出来，它就是把货物放到了这个传送带上来。

在Handler.java这个类里面，有很多函数用来发送消息。其中send开头的就有这些：



然后还有post开...]]></description><category></category></item><item><title><![CDATA[算法 中的 散列表（哈希表）]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/105012071</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/105012071</guid><author>yichen97</author><pubDate>Sun, 22 Mar 2020 00:07:53 +0800</pubDate><description><![CDATA[散列表又叫做哈希表（Hash Table），是一种提供了键（Key）值（Value）映射关系的一种数据结构。

只要给出一个Key值，就可以快速匹配出Value值。正是因为这个特性，比如有一本词典，它就可以给出一个单词，去快速找出它的解释。





什么是哈希函数？

首先，因为前面说过，数组的查询效率是最快的，数组可以根据数组的下标，直接对元素进行随机访问，所以，散列表想要查询快的话，其本质...]]></description><category></category></item><item><title><![CDATA[算法 中的 栈和队列]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/104879415</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/104879415</guid><author>yichen97</author><pubDate>Thu, 19 Mar 2020 23:03:55 +0800</pubDate><description><![CDATA[什么是栈？

栈是一种线性的数据结构，只能遵循“先入后出”的原则。“先入后出”也就是First In Last Out，简称FILO，也就是最先进入栈的原则需要最后出栈的元素，这个最早进入栈的元素存放位置叫栈底，最后进入的元素存放的位置叫做栈顶。





栈的基本操作

入栈

现有这样一个栈，需要将一个新元素入栈。



将新的元素入栈。



新的元素取代原来的栈顶，成为新的栈顶。



...]]></description><category></category></item><item><title><![CDATA[Android  服务概要]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/104737691</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/104737691</guid><author>yichen97</author><pubDate>Sun, 15 Mar 2020 12:37:27 +0800</pubDate><description><![CDATA[在Android Framework或应用开发主要API都是以系统服务的形式存在的。像读感应器的值、获取终端的位置，都是在Framework中以服务的形式存在的。



Android服务的种类





Android 应用程序服务

Android应用程序服务都是Android的一种应用程序组件。

开发者可以通过以下两种方法来使用这些服务：

1. 服务的启动和终止；

2. 通过服务绑...]]></description><category></category></item><item><title><![CDATA[算法 中的 链表]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/104661296</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/104661296</guid><author>yichen97</author><pubDate>Sun, 08 Mar 2020 00:16:09 +0800</pubDate><description><![CDATA[链表
]]></description><category></category></item><item><title><![CDATA[算法 中的 数组]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/104574075</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/104574075</guid><author>yichen97</author><pubDate>Wed, 04 Mar 2020 00:10:48 +0800</pubDate><description><![CDATA[什么是数组？




























]]></description><category></category></item><item><title><![CDATA[okhttp框架 同步请求流程和源码分析]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/104446732</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/104446732</guid><author>yichen97</author><pubDate>Sun, 23 Feb 2020 18:39:59 +0800</pubDate><description><![CDATA[创建Client的外部调用


OKHttpClient client = new OkHttpClient.Builder().readTimeOut(5,TimeUnit.SECONDS).build();

先来看下OkHttpClient的内部类Builder的构造方法：


    public Builder() {
      dispatcher = new Dispatcher(...]]></description><category></category></item><item><title><![CDATA[okhttp 同步/异步 请求方法]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/104241583</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/104241583</guid><author>yichen97</author><pubDate>Tue, 11 Feb 2020 21:36:51 +0800</pubDate><description><![CDATA[okhttp同步请求


请求步骤

1. 创建一个OkHttpClient类。代表着OKHttp请求的一个客户端类，在整个okhttp库中，这个OkHttpClient类是处于一个很核心的地位。很多功能需要通过这个客户端类进行转发，或者直接由这个客户端类进行实现。

它的创建方式有两种：

一、通过默认的，也就是直接通过new一个对象来实例OkHttpClient。

二、考虑到现实网络情况下...]]></description><category></category></item><item><title><![CDATA[网络安全基础]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/104026039</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/104026039</guid><author>yichen97</author><pubDate>Sat, 18 Jan 2020 12:03:38 +0800</pubDate><description><![CDATA[网络安全概述


一、网络安全的基本概念及属性

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护，不因偶然的或者恶意的原因而遭受到破坏、更改、泄漏，系统连续可靠正常地运行，网络服务不中断。

网络安全通信所需要的基本属性有：机密性、消息完整性、可访问与可用性、身份认证。



二、网络安全威胁

网络主要面临的安全威胁有以下几个方面：

（1）报文传输方面，主要包括窃听、插入、假冒、...]]></description><category></category></item><item><title><![CDATA[无线与移动网络]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/104012804</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/104012804</guid><author>yichen97</author><pubDate>Fri, 17 Jan 2020 23:38:56 +0800</pubDate><description><![CDATA[无线网络


一、无线网络基本结构

无线网络基本组成主要包括以下几个部分：

（1）无线主机。主机是运行应用程序的端系统设备。

（2）无线链路。主机通过无线通信链路连接到一个基站或者另一台无线主机，不同的无线链路技术具有不同的传输速率和不同的传输距离。

（3）基站。基站通常负责协调与之相关联的多个无线主机的传输。

（4）网络基础设施。通常是大规模有线网络，如Internet、公司网络或电...]]></description><category></category></item><item><title><![CDATA[物理层]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/103997537</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/103997537</guid><author>yichen97</author><pubDate>Fri, 17 Jan 2020 00:10:32 +0800</pubDate><description><![CDATA[数据通信基础


一、数据通信基本概念

1. 消息与信息

信息是对事物状态或存在方式的不确定性表述。将人类能够感知的描述称为消息。



2. 通信

通信的本质就是在一点精确或近似地再生另一点的信息。



3. 信号

在通信系统，特别是电通信系统中，传递信息需要有适合的载体在传输通道中传播，这样的载体称之为信号，通常以电磁或光的形式存在，并利用电压、电流、频率、相位等物理量的变化来...]]></description><category></category></item><item><title><![CDATA[数据链路层与局域网]]></title><link>https://blog.youkuaiyun.com/yichen97/article/details/103950247</link><guid>https://blog.youkuaiyun.com/yichen97/article/details/103950247</guid><author>yichen97</author><pubDate>Wed, 15 Jan 2020 23:27:21 +0800</pubDate><description><![CDATA[数据链路层服务


数据链路层功能

沿着通信链路连接的相邻结点的通信信道称为链路，数据链路层传输的数据单元称为帧。数据链路层通常提供的服务包括组帧、链路接入（物理链路可以分为点对点链路和广播链路两大类）、可靠交付、差错控制。




差错控制


一、差错控制基本概念

差错控制是指通过差错编码技术，实现对信息传输差错的检测，并基于某种机制进行差错纠正和处理，是计算机网络中实现可靠传输的重...]]></description><category></category></item></channel></rss>