<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ailunlee的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ailunlee</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ailunlee]]></copyright><item><title><![CDATA[集群启动脚本]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/119361902</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/119361902</guid><author>ailunlee</author><pubDate>Tue, 03 Aug 2021 23:54:11 +0800</pubDate><description><![CDATA[#! /bin/bash

case $1 in
"start"){
	echo " -------- 启动 集群 -------"

	echo " -------- 启动 hadoop集群 -------"
	/opt/module/hadoop-2.7.2/sbin/start-dfs.sh 
	ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/start-yarn.sh"

	#启动 Zookeeper集群
	zk.sh start

sleep 4s;

.]]></description><category></category></item><item><title><![CDATA[虚拟机文件同步脚本]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/119361836</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/119361836</guid><author>ailunlee</author><pubDate>Tue, 03 Aug 2021 23:51:13 +0800</pubDate><description><![CDATA[#!/bin/bash

#1 获取输入参数个数，如果没有参数，直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for host.]]></description><category></category></item><item><title><![CDATA[JAVA集合实例]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/110413766</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/110413766</guid><author>ailunlee</author><pubDate>Tue, 01 Dec 2020 01:23:04 +0800</pubDate><description><![CDATA[1.ArrayList&amp;LinkedList


package com.allen.study;

import java.util.Iterator;
import java.util.LinkedList;

/**
 * 重点掌握：
 *  1.每个集合对象的创建
 *  2.向集合中添加元素
 *  3.从集合中取出某个元素
 *  4.遍历集合
 * @Author: allen
 * @Date: 2020/11/30 - 11 - 30 - 23:13
 * @Description]]></description><category></category></item><item><title><![CDATA[const关键字--常量指针和指针常量]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/108809394</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/108809394</guid><author>ailunlee</author><pubDate>Sat, 26 Sep 2020 11:01:03 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;
/*如果const读作常量 *读作指针，那么const在*左边就是常量指针，const在*右边就是指针常量*/
int main()
{
	/*常量指针是指针指向的内容是常量*/ 
	/*常量指针不能通过这个指针改变变量的值 ，但是还是可以通过其他引用来改变变量的值*/ 
	int a = 5;
	const int* n = &amp;a;
	printf("n = %d \n", *n);
	printf("a = %d \n", a);
	a = 6.]]></description><category></category></item><item><title><![CDATA[数据库之必知必会（二）]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/108574197</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/108574197</guid><author>ailunlee</author><pubDate>Mon, 14 Sep 2020 10:33:04 +0800</pubDate><description><![CDATA[数据过滤

4、过滤数据

4.1 使用WHERE子句

数据库表一般包含大量的数据，很少需要检索表中的所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要制定搜索条件（search criteria），搜索条件也称为过滤条件（filter condition）。

在SELECT语句中，数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名（FROM子句）之后给出。

输入：

SELECT prod_name, prod_price FROM Products WH]]></description><category></category></item><item><title><![CDATA[多进程多线程基础]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/108214442</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/108214442</guid><author>ailunlee</author><pubDate>Tue, 25 Aug 2020 10:03:11 +0800</pubDate><description><![CDATA[一、概念

1 概念

（1）进程

1）进程是操作系统资源分配的基本单位

2）一个进程可以有多个线程，但至少有一个线程

3）资源分配给进程，同一进程的所有线程共享该进程的所有资源

4）同一进程中的多个线程共享代码段（代码和常量），数据段（全局变量和静态变量），拓展段（堆存储）

5）进程有独立的地址空间

（2）线程

1）线程是任务调度和执行的基本单位

2）一个线程只能属于一个进程

3）每个线程拥有自己的栈段，栈段又叫运行时段，用来存放所有局部变量或临时变量

4）CPU分给线程，即真正在CP]]></description><category></category></item><item><title><![CDATA[数据库之必知必会（一）]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/107822958</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/107822958</guid><author>ailunlee</author><pubDate>Wed, 05 Aug 2020 19:17:36 +0800</pubDate><description><![CDATA[1、了解SQL

1.1 数据库基础

1.1.1 数据库 database

保存有组织的数据的容器（通常是一个文件或一组文件）

1.1.2 表 table

某种特定数据类型数据的结构化清单。

数据库中的每个表都有一个名字来标识自己。这个名字是唯一的，即数据库中没有其他表具有相同的名字。但在不同的数据库中完全可以使用相同的表名。

1.1.3 列和数据类型

表由列组成。列存储表中某部分的信息。

列 column

表中的一个字段。所有表都是由一个或多个列组成的。

数据类型

所允许的数据的类.]]></description><category></category></item><item><title><![CDATA[Linux启动过程]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/98677099</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/98677099</guid><author>ailunlee</author><pubDate>Tue, 06 Aug 2019 23:39:09 +0800</pubDate><description><![CDATA[Linux启动过程

1 加载BIOS的硬件信息与进行自我测试，并依据设置取得第一个可启动设备；

2 读取并执行第一个启动设备内MBR（主引导分区）的boot loader（即grub和lilo等程序）；boot loader是内核运行之前的一段程序，为内核运行做好准备，初始化硬件设备；

3 依据boot loader的设置加载内核(kernel)，kernel会开始检测硬件与加载驱动程序；
...]]></description><category></category></item><item><title><![CDATA[进程与线程]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/98673985</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/98673985</guid><author>ailunlee</author><pubDate>Tue, 06 Aug 2019 23:15:23 +0800</pubDate><description><![CDATA[进程与线程

1 进程

1.1 为什么引入进程

1.1.1 程序的顺序执行

（1）程序执行的顺序性

 程序在处理机上执行时，其操作只能严格地按照所规定的顺序执行，即后继操作只有在前一操作执行完毕之后才能进行。

（2）程序环境的封闭性

 程序执行时会独占系统的全部资源。

（3）程序执行结果的确定性

 程序执行的结果，只由初始条件和程序本身来确定，不...]]></description><category></category></item><item><title><![CDATA[死锁]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/98663677</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/98663677</guid><author>ailunlee</author><pubDate>Tue, 06 Aug 2019 21:33:31 +0800</pubDate><description><![CDATA[死锁

 死锁，是指多个进程在运行过程中因争夺资源而造成的一种僵局，若无外力作用，这些进程都将无法再向前推进。

1 产生死锁的原因

1.1 竞争资源

 当系统中供多个进程共享的资源不足时，将引起进程对资源的竞争而产生死锁。

 竞争资源引起的死锁，竞争的资源可以分为可剥夺性资源（某进程在获得这类资源后，该资源可以被其他进程或系统剥夺，如处理机和内存资源）和...]]></description><category></category></item><item><title><![CDATA[ELF可执行文件的理解]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/98636559</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/98636559</guid><author>ailunlee</author><pubDate>Tue, 06 Aug 2019 17:23:15 +0800</pubDate><description><![CDATA[ELF可执行文件的理解

 ELF(Executable and Linking Format)是一种对象文件的格式，用于定义不同类型的对象文件（object files）中都放了什么东西、以及都以什么样的格式去放这些东西。ELF是构成众多xNIX系统的基础之一。

1 对象文件的三个种类

1.1 可重定位的对象文件（Relocatable object file）

 ...]]></description><category></category></item><item><title><![CDATA[fork()与vfork()函数]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/98628831</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/98628831</guid><author>ailunlee</author><pubDate>Tue, 06 Aug 2019 16:37:54 +0800</pubDate><description><![CDATA[fork()与vfork()函数

1 fork()函数

 创建一个和当前进程映像一样的进程。


#include &lt;sys/types.h&gt;
#include &lt;unistd.h&gt;
pid_t fork(void);

   失败返回-1；成功返回：父进程返回子进程的进程ID（非负）；子进程返回0。

 fork会产生一个和父进程完全相...]]></description><category></category></item><item><title><![CDATA[wait和waitpid]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/98625729</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/98625729</guid><author>ailunlee</author><pubDate>Tue, 06 Aug 2019 15:59:17 +0800</pubDate><description><![CDATA[wait和waitpid

 一个进程在终止时会关闭所有文件描述符，释放在用户空间分配的内存，但它的PCB还保留着，内核在其中保存了一些信息：如果是正常终止则保存着退出状态，如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpid获取这些信息，然后彻底清除掉这个进程。

1 孤儿进程和僵尸进程

 （1）孤儿进程：父进程先于子进程结...]]></description><category></category></item><item><title><![CDATA[进程间通信方式]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/98042567</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/98042567</guid><author>ailunlee</author><pubDate>Thu, 01 Aug 2019 11:48:50 +0800</pubDate><description><![CDATA[进程间通信方式

 管道（pipe）：管道是一种半双工的通信方式，数据只能单向流动，而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常指父子进程关系。

 命名管道（FIFO）：有名管道也是半双工的通信方式，但是它允许无亲缘关系进程间的通信。

 消息队列（message queue）：消息队列是由消息的链表，存放在内核中并由消息队列标识符标识。消息队列克服...]]></description><category></category></item><item><title><![CDATA[HTTP1.0和HTTP1.1和HTTP2.0的区别]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/97831912</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/97831912</guid><author>ailunlee</author><pubDate>Tue, 30 Jul 2019 23:18:58 +0800</pubDate><description><![CDATA[HTTP1.0和HTTP1.1和HTTP2.0的区别

1 HTTP1.0和HTTP1.1的区别

1.1 长连接(Persistent Connection)

 HTTP1.1支持长连接和请求的流水线处理，在一个TCP连接上可以传送多个HTTP请求和响应，减少了建立和关闭连接的消耗和延迟，在HTTP1.1中默认开启长连接keep-alive，一定程度上弥补了HTTP1.0每次请求都...]]></description><category></category></item><item><title><![CDATA[XSS攻击]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/97830825</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/97830825</guid><author>ailunlee</author><pubDate>Tue, 30 Jul 2019 23:07:08 +0800</pubDate><description><![CDATA[XSS攻击

1 XSS简介

 XSS跨站脚本攻击（Cross Site Scripting），就是攻击者在web页面插入恶意的script代码，当用户浏览该页面之时，嵌入其中web里面的script代码会被执行，从而达到恶意攻击用户的特殊目的。

2 XSS的类型

2.1 反射型XSS

 反射型XSS只是简单的把用户输入的数据“反射”给浏览器。也就是说需要诱使用户“...]]></description><category></category></item><item><title><![CDATA[DDos攻击]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/97830267</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/97830267</guid><author>ailunlee</author><pubDate>Tue, 30 Jul 2019 23:02:19 +0800</pubDate><description><![CDATA[DDos攻击

1 概念

 传统的Dos攻击：利用合法的服务器请求去访问服务器，占用大量的服务器资源，导致其它用户无法合理访问服务器。

 DDos攻击：distributed denied of service分布式拒绝服务，利用大量的请求造成资源过载，导致服务器不可用。

2 DDos分类



2.1 网络层DDos攻击

（1）SYN flood攻击

...]]></description><category></category></item><item><title><![CDATA[CSRF跨站请求伪造]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/97829618</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/97829618</guid><author>ailunlee</author><pubDate>Tue, 30 Jul 2019 22:55:14 +0800</pubDate><description><![CDATA[CSRF跨站请求伪造

1 CSRF概念

 CSRF（Cross Site Request Forgery）跨站请求伪造。也被称为One Click Attack和Session Riding。攻击者（黑客、钓鱼网站）盗用你的身份，以你的名义发送恶意请求，这些请求包括发送邮件、发送消息、盗取账号、购买商品、银行转账，从而使你的个人隐私泄露和财产损失。

2 CSRF攻击实例

...]]></description><category></category></item><item><title><![CDATA[对称加密和非对称加密]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/97765739</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/97765739</guid><author>ailunlee</author><pubDate>Tue, 30 Jul 2019 11:38:56 +0800</pubDate><description><![CDATA[对称加密和非对称加密

1 对称加密

1.1概念

 加、解密使用的同是一串密钥，所以被称作对称加密。对称加密只有一个密钥作为私钥。常见的对称加密算法：DES、AES等。

1.2 优缺点

 对称加密相比非对称加密算法来说，加解密的效率要高得多、加密速度快。但是缺陷在于对于密钥的管理和分发上比较困难，不是非常安全，密钥管理负担很重。

2 非对称加密

2.1 概念

...]]></description><category></category></item><item><title><![CDATA[TCP粘包和拆包]]></title><link>https://blog.youkuaiyun.com/ailunlee/article/details/95944377</link><guid>https://blog.youkuaiyun.com/ailunlee/article/details/95944377</guid><author>ailunlee</author><pubDate>Mon, 15 Jul 2019 11:04:27 +0800</pubDate><description><![CDATA[TCP粘包和拆包

 TCP是个“流”协议，没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义，它会根据TCP缓冲区的实际情况进行包的划分，所以在业务上认为，一个完整的包可能会被TCP拆分成多个包进行发送，也有可能把多个小的包封装成一个大的数据包发送，这就是所谓的TCP粘包和拆包问题。



假设客户端分别发送了两个数据包D1和D2给服务端，由于服务端一次读取到的字节数是不确...]]></description><category></category></item></channel></rss>