自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 为什么C是弱类型语言?

C是强类型语言,但是事实真是如此吗?首先关于强类型语言的定义“一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了”在《C专家编程》一书中,明确的表明C是排斥强类型的,因为C语言最初的类型系统是为了编译器的作者区分硬件机器的不同数据类型,而非保护程序员进行无效的操作,在C程序中,比如:#include<stdio.h>int main(void){char a='a';int b=10;int c=a+b;return 0;}在上述代码中,char类型和

2021-02-05 13:57:12 2278

原创 Linux进程与线程的概念和区别

一、进程1.1 进程的概念​ 是计算机系统进行资源分配和调度的基本单位。在现在的面向线程的计算机结构中,进程是线程的容器。程序是指令、数据及其组织关系形式的描述,进程是程序的实体​ 一个进程通常有三部分组成:进程控制块PCB、数据、程序1.2 进程的优势​ (1)每个进程相互独立,不影响主程序的稳定​ (2)通过增加CPU,可以扩充性能​ (3)可以尽量减少线程枷锁、解锁的影响1.3 进程的劣势​ (1)逻辑控制复杂,需要和主程序交互​ (2)需要跨进程边界二、线程​ 2.1 线程

2020-09-07 16:58:54 508

原创 Redhat图形界面安装

Linux-Redhat:图形界面安装一、Linux镜像安装二、开启虚拟机并挂载镜像mount /dev/sr0 /mnt#如果出现/dev/sr0未找到,查看CD/DVD设备是否连接三、配置yum仓库vim /etc/yum.repos.d/base.reponame=basebaseurl=file:///mntenable=1gpgcheck=0四、检查yum仓库yum repolist五、安装图形界面组yum groupinstall -y "Server with

2020-09-07 16:58:02 5148

原创 Python之集合类型(底层)细节

文章目录一、列表和元组二、字典三、集合四、其他高级集合类型---collections模块一、列表和元组列表是动态的,其大小可以改变的,元组是不可变得,一旦创建就不能修改,二者都表示对象序列。实现细节:列表实现是基于数组或是基于链表结构的。在CPython中,列表被实现为长度可以变化的数组。从细节上看,Python中列表是由其对象的引用组成的连续数组,指向这个数组的指针被保存在列表头结构中,在每次修改列表时,都需要重新分配。但是Python中创建引用数组时采用指数过分配,所以并不是每次分配都是改变

2020-09-07 16:56:44 939

原创 Python之数据类型声明

在Python中,数据的类型是不用声明的,这也是动态编程语言的一个特性,而java、c++作为静态语言,需要声明数据的类型,为什么动态编程语言不需要指定数据类型,而静态语言需要?编译型语言和解释性语言1、编译型语言需要通过编译器将源代码编译成机器码,之后才能执行。一般需要经过编译、链接两个步骤优点: 编译器一般会有预编译的过程对代码进行优化,因为只编译一次,运行时不需要编译,所以执行速度快。缺点: 如果对代码修改后,需要重新编译,编译依据机器的环境。2、解释性语言解释性语言不需要编译,在

2020-09-07 16:53:16 1663

原创 Python之可变序列和不可变序列

Python:可变序列和不可变序列​ 可变序列:列表、集合、字典​ 不可变序列:元组、字符串​ 可变和不可变是指:内存中存储的值是否是可变的案例一:列表和字符串s1 = "1234"ls = [1,2,3,4]#输出变量的地址print(id(s1),id(ls))#修改字符串和列表s1.replace("1","10")ls.append(10)#输出变量的地址print(id(s1),id(ls))#虽然变量的地址没有改变,但是输出变量#s1的内容没有改变,但是ls改变了

2020-09-07 16:51:56 5186 1

原创 sqli-labs(54-65)

文章目录第54关:第55关:第56关:第57关:第58关:第59关:第60关:第61关:第62关:第63关:第64关:第65关:第54关:根据这一关的提示,我们可以知道数据库的名字“chellenges”,我们需要知道“dump”的密码,才能通关,而且只有10次尝试机会因为只有10次机会,所以判断闭合时需要猜测最常见的,所以先判断单引号、然后双引号、整形、最后括号闭合方式:/Less-54/?id=-1' union select 1,2,3--+因为一直到库名,需要判断表名,注意语句要一次正

2020-08-26 18:59:03 615

原创 sqli-labs(38-53)

文章目录第38关:第39关:第40关:第41关:第42关:第43关:第44关:第45关:第46关:第47关:第48关:第49关:第50关:第51关:第52关:第53关:第38关:这一关挺简单的,就一个闭合判断,就可爆数据,但是,这一关的目的不是查询数据,而是通过堆叠注入,对数据库执行操作堆叠注入,就是利用sql中“;”是标志一句话结束,我们可以通过“;”将多个语句写入到sql语句中,这里的语句就不仅仅是指查询,还有增删查改闭合判断:/Less-38/?id=1' and 1=1 --+sql注

2020-08-26 18:58:17 912 1

原创 sqli-labs(23-37)

文章目录第23关:第24关:第25关:第26关:第27关:第28关:第29关:第30关:第31关:第32关:第33关:第34关:第35关:第36关:第37关:第23关:23关感觉和第1关一样,先用第一关的操作试一试,先判断闭合方式/Less-23/?id=1' and 1=2 --+判断所有的闭合方式都是无效,但是在报错信息里面,有关于“’ LIMIT 0,1’的提示,按理说不应该出现才对,因为我们注入的sql语句后面有注释符,这一部分应该是被注释的,所以应该是注释被屏蔽了,所以我们采用另一种构造

2020-08-26 18:56:46 685

原创 sqli-labs(11-22)

文章目录第11关:第12关:第13关:第14关:第15关:第16关:第17关:第18关:第19关:第20关:第21关:第22关:第11关:前面的都是关于get注入的方式,接下来将是post的注入post会以表单的形式提交后台闭合方式:在登录框内判断' or '1'='1' #判断表的列数:-1' union all select 1,2 #sql注入:采用第一关的注入方式使用sql函数查询系统数据数据库版本' union all select 1,version()

2020-08-26 18:55:55 143

原创 sqli-labs(1-10)

文章目录第一关:第二关:第三关:第四关:第五关:第六关:第七关:第八关:第九关:第十关:第一关:构造闭合:有数据显示只需构造闭合就可爆出数据构造闭合方式:“ ”、‘ ’、( )、(‘ ’)、(“ ”)、整形判断闭合的方法:and 1 =1 或 and 1 = 2判断闭合时,可以利用注释符 “–+”第一关注入点:/Less-1/?id=1' and 1=2 --+闭合方式判断成功就可以找到注入点注入sql语句、爆数据使用联合查询,判断列数(联合查询必须列数相等)/Le

2020-08-26 18:55:11 371

原创 SQL注入基础

一、SQL语言​ 1.1 结构化查询语言:SQL​ 特点:解释性语言​ 数据:计算机系统中,用二进制来描述信息的字符​ 数据库:按照数据结构来组织、存储和管理数据的仓库​ 数据库管理系统:一种操纵和管理数据的软件,用于建立和使用、维护数据库,它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性​ 结构化查询语言:用于存储数据及查询、更新和管理关系数据库​ 1.2 SQL语言​ SQL语言包含六大部分:​ 数据查询语句:DQL​ select​ 数据操纵语句:DML​

2020-08-26 18:54:19 161

原创 SQL注入方式

一、SQL注入的分类​ 1.1 基于服务器接收到的响应​ 报错的SQL注入​ 联合查询注入​ 堆查询注入​ SQL盲注​ 基于布尔SQL盲注​ 基于时间的SQL盲注​ 基于报错的SQL盲注​ 1.2 注入的数据类型​ 基于字符串​ 数字或整数​ 1.3 基于程度和顺序​ 一阶注入​ 注入的语句直接作用Web,然后产生结果,短暂的,结果显示后,攻击结束。​ 二阶注入​ 注入的语句存储于数据库,在对该数据操作时,会产生攻击,攻击是持久的。​

2020-08-26 18:53:43 826

原创 腾讯2020校园招聘-后台编程题

腾讯2020校园招聘-后台编程题题目:压缩算法题目描述:题目解析:代码实现:题目:逛街题目描述:题目解析:代码实现:题目:压缩算法题目描述:小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S,例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?输入描述:输入第一行包含一个字符串s,代表压缩后的字符串。S的

2020-08-25 16:29:24 530

原创 腾讯2017暑期实习生编程题

腾讯2017暑期实习生编程题题目:构造回文串题目描述:题目解析:代码实现:题目:字符移位题目描述:题目解析:代码实现:题目:有趣的数字题目描述:题目分析:代码实现:方法一:方法二:题目:构造回文串题目描述:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述:对于每组数据,输出一个整数,代表最少需要删除的

2020-08-25 16:27:53 373

原创 字节跳动2017后端实习生编程题

字节跳动2017后端实习生编程题题目:最大映射题目描述:题目解析:代码实现:题目:木棒拼图题目描述:题目解析:代码实现:题目:魔法权值题目描述:题目解析:代码实现:题目:或与加题目描述:题目解析:代码实现:题目:最大映射题目描述:有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看做一个整数,唯一的要求是这些整数必须是正整数且它们的字符串不能有前导零。现在问你怎样映射字符才能使得这些字符串表示的整数之和

2020-08-25 16:24:22 491

原创 字节跳动2019春招研发编程题

字节跳动2019春招研发编程题题目:万万没想到之聪明编辑题目描述:题目解析:实现代码:方法一:方法二:方法三:题目:万万没想到之抓捕孔连顺题目描述:题目解析:代码实现:方法二:题目:雀魂启动题目描述:题目解析:代码实现:题目:特征提取题目描述:题目解析:题目:毕业旅行问题题目描述:题目解析:代码实现:题目:找零题目解析:代码实现:方法一:方法二:题目:机器人跳跃问题题目描述:题目分析:代码实现:题目:万万没想到之聪明编辑题目描述:我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常

2020-08-25 16:22:17 998

原创 python之type、object、class关系(一切皆对象)

在python中一切皆对象,但是对象是什么?是类的实例化,既然一切皆对象,那么对象的模版,类也是对象,那不就成了对象创建了对象了吗?下面看这样一个例子a = 1print(type(a))print(type(int))print(type(type))运行结果<class 'int'><class 'type'><class 'type'>分析:首先,a 是一个整型的变量对象,是类int创建的,类int也是对象(python一切皆对象),创建类i

2020-06-20 11:39:30 428

原创 BGP属性总结

文章目录概述公认必尊公认任意可选过度可选非过度属性OriginPrefValAS_PathNext_HopLocal_PrefMEDcommunity概述公认必尊所有的BGP路由器必须识别,且必须存在于Update消息中如果缺少这种属性,路由信息就会报错Origin属性AS_Path属性Next_Hop属性公认任意所有的BGP路由器必须识别,不必必须存在Update报文中如果缺少这种属性,路由信息不会报错oLocal_pref属性可选过度在BGP邻居之间具有传递性的属性BGP路由

2020-06-15 19:56:59 2552 1

原创 Python之数据库操作

Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。Python DB-API使用流程:引入 API 模块获取与数据库的连接执行SQL语句和存储过程关闭数据库连接文章目录MySQLdb创建数据库及表创建数据库:创建数据库表:修改数据库的访问权限(1)修改root的登录限制(2)创建新用户pymysql使用导入pymysql模块连接到数据库创建数据库表数据库查询操作(1)fetchone()(2)fetchall()(3

2020-06-08 18:27:21 710

原创 OSPF复习总结

一、OSPF基础概念1.1 协议特点适用范围:IGP类型:链路状态型动态路由协议算法:i-SPF算法-SPF-dijkstra(对SPF算法的改进,使其更适合路由协议)封装:基于IP封装,协议号为89—跨层封装在IP数据包中版本:OSPFV2—IPV4、OSPFV3—IPV6更新方式:组播或单播—224.0.0.5/224.0.0.6​ 触发更新/周期更新—周期更新时间是30min区域划分:OSPF需要合理规划IP地址和区域划分​ —目的:减少lsa数量、减少lsa传播范围、减少对资源的

2020-06-07 10:54:15 1101

原创 Python之双向链表

双向链表是除头和尾以外,头指针指向前一节点,尾指针指向后一节点python实现#定义双向链表class ListNode(): def __init__(self,data): self.head = None self.data = data self.next = None#判断是否为空def isempty(self): return self.data == None#尾部插入元素def nodes_tail(self

2020-06-07 10:42:22 372

原创 python之LeetCode练习【三】

问题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度实例:示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。代

2020-06-06 22:11:51 192

原创 Python之循环链表

循环链表是在单单链表的基础上,将链表的头和尾链接起来,组成一个循环。使用python实现class ListNode(): def __init__(self,data): self.head = data self.next = None#判断列表是否为空def isempty(self): return self.head == None#在头部添加元素def nodes_head(self,data): if isempty(self

2020-06-06 22:10:46 1414

原创 python之单向链表

在大学学习数据结构的时候,都是用c语言实现的,c语言对于指针的管理非常灵活,实现数据结构非常清晰直观,那么如何用Python实现那,一起来学习吧!链表的结构这里就不介绍了,可以查看数据结构首先编写一个链表类#定义链表class ListNode(): def __init__(self,data): self.data = data self.next = None创建两个节点,并输出节点地址node1 = ListNode(1)node2 = Lis

2020-06-05 21:56:50 518

原创 python之LeetCode练习【二】

问题:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。代码:#定义链表class ListNode(): def __init__(self,data): #链表初始化为空 self.head = data self.next = No

2020-06-05 21:55:58 1432

原创 sql语句小练习

一 )学生表:Student (Sno, Sname, Ssex , Sage, Sdept)学号,姓名,性别,年龄,所在系 Sno为主键课程表:Course (Cno, Cname,)课程号,课程名 Cno为主键学生选课表:SC (Sno, Cno, Score)学号,课程号,成绩 Sno,Cno为主键1.用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。MariaDB [test]> cr

2020-06-04 19:47:50 948

原创 python之LeetCode练习【一】

问题:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。方法一:nums = list(map(int,input().split()))target = int(input())for i in range(0,len(nums)): for j in range(0,len(nums)): if i !=j and nums[

2020-06-04 16:52:40 304

原创 mysql基础语句小练习

Sutdent 表的定义字段名 字段描述 数据类型 (主键 外键 非空 唯一 自增)Id 学号 INT(10) 是否是是是Name 姓名 VARCHAR(20) 否否是否否Sex 性别 VARCHAR(4) 否否否否否Birth 出生年份 YEAR 否否否否否Department 院系 VARCHAR(20) 否否是否否Address 家庭住址 VARCHAR(50) 否否否否否MariaDB [db1]> desc student;±-----------±------------

2020-06-03 16:00:55 443

原创 TCP/IP协议总结

文章目录TCP/IP协议簇IP地址和MAC地址的作用DNS:域名解析系统域名解析过程TCP传输控制协议报文格式TCP三次握手TCP四次挥手TCP的滑动窗口协议流量控制拥塞避免TCP的定时器UDP报文格式UDP特点IPV4协议报文格式IPV4地址VLSMCIDRTCP/IP协议簇应用层-----------定义网络应用软件接口,人机交互Telnet FTP TFTP SNMPHTTP SMTP NFS DHCP传输层-----------用于提供端到端的通信,使用端口

2020-06-02 10:29:10 273

原创 TCP协议的总结及面试题和SCTP协议的介绍

TCP总结及CSTP协议介绍TCP是在OSI七层模型的传输层,用于为网络应用服务提供端到端的通信,与UDP一同作为传输层最长用的两个协议,两个协议各有特点,各自适用于不同的场景。文章目录TCP的特点TCP报文TCP三次握手四次挥手三报文握手四报文挥手滑动窗口协议流量控制拥塞控制关于TCP的面试题SCTP协议特性TCP的特点面向连接—TCP在传输数据之前需要通过三次握手,建立一条虚拟的链路可靠传输服务—TCP有ACK机制,对所以的数据包要进行响应确认机制,要确保对方收到数据包,而且根据滑动窗口协议,

2020-05-30 18:44:44 372

原创 python之子进程input问题及解决方法

python子进程中不能input的问题在python中,子进程是不能使用input操作的,但是有时候需要在子进程中输入数据,下面将介绍一种方法,解决这个问题fn=sys.stdin.fileno()fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。在主进程中使用该代码,返回文件的描述符sys.stdin=os.fdopen(fn)在子进程中打开标椎的输入,然后就可以执行input操作了其他输入: sys.s

2020-05-28 17:15:52 4261 3

原创 Linux运维基础面试题

文章目录1、系统启动的过程2、Web的工作原理3、DHCP工作原理4、DNS解析原理5、nfs的作用6、ftp的主动模式和被动模式7、pxe+kickstart安装系统原理1、系统启动的过程BIOS自检 系统引导 启动内核 初始化系统计算机开启后,会载入可读存储器ROM中的BIOS程序,BIOS程序会读取CMOS中的内容识别硬件的配置,进行自检,如果设备都没有问题,满足操作系统的运行,就会将系统启动的控制权交给主引导扇区MBR,主引导扇区会将内核从硬盘中加载带内存中,内核启动后,就会检查硬件并加

2020-05-28 10:01:44 568

原创 基于Mininet平台的SDN拓扑实现

使用mininet创建网络拓扑基于可视化基于命令行基于python环境搭建1、虚拟机Vmware2、虚拟机镜像下载链接:https://pan.baidu.com/s/1qYN_MtUboPmruHda1DgrTA 提取码:mhfimininet介绍Mininet 是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络 仿真器,是一个轻量级软件定义网络和测试平台Mininet 可以很方便地创建一个支持 SDN 的网络:host 就像真实的电脑一样工作,可以 使用

2020-05-27 12:13:35 3078

原创 SDN的产生和基本原理概述

文章目录一、SDN的产生网络系统的生命周期传统网络面对的问题产生原因解决方法SDN三层架构二、基本原理SDN的主流技术架构ONF定义的基于OpenFlow的三层架构IETF提出的技术架构NICIRA提出的overlay技术架构ONF定义的基于OpenFlow的三层架构四个平面两个接口三、SDN的设计思想解耦抽象可编程一、SDN的产生网络系统的生命周期应用需求 - 规划设计 - 部署实施 - 运行维护传统网络面对的问题多元、多变的网络上层服务应用于业务和相对稳定的网络架构和系统运维之间的矛盾网络规

2020-05-27 12:06:16 2514

原创 Linux文件系统结构及常用基础命令总结

Linux常用基础命令总结文章目录一、文件系统结构二、常用基础命令系统维护类文件管理压缩与解压缩磁盘管理网络设置用户管理软件管理一、文件系统结构经典树形目录结构将文件目录抽象化为一棵树,根目录“/”为树的根,其它目录或文件为树的节点/ 根目录,所有节点的总根/bin 可执行文件/sbin 可执行文件(root命令)/boot 开机启动的文件,包括linux内核以及开机菜单与开机所需配置文件等/dev

2020-05-27 09:21:38 411

原创 OSPF路由协议总结

OSPF(open shortest path Fist0)是IETF组织开发的一个基于链路状态的内部网关协议,具有收敛快、路由无环、可扩展等优点。文章目录一、OSPF基础概念1.1 协议特点1.2 OSPF概念【一】Router-id【二】cost【三】Link-State(LSA)【四】OSPF区域【五】路由器的角色【六】虚电路【七】DR/BDR选举【八】网络类型二、OSPF报文及工作方式2.1 OSPF报文及作用2.2 OSPF工作方式【一】OSPF邻接状态建立【二】OSPF的三张表【三】OSPF邻

2020-05-25 11:45:44 1789

原创 RIP路由协议的总结

动态路由协议:取未知的路由信息,然后根据不同的路由选择算法,计算到达未知网段的最佳路径,并将其加载到路由表中。一、RIP基本概念路由信息协议RIP-距离矢量型1.1 RIP特点1、距离矢量型-以TTL跳数作为选路度量2、路由优先级:1003、收敛方式:异步周期更新30s+触发更新+老化时间180s4、RIP没有确认包,所以需要在一定时间间隔内重新收敛5、使用UDP520端口1.2 RIP防环机制1、水平分割:直线拓扑防环2、最大条数:15跳,16跳不可达3、毒性逆转水平分割4、机制

2020-05-25 11:07:49 1235

原创 反序列化原理与实例讲解

博客地址:soliym.top序列化与反序列化序列化:把变量转换为课存储或课传输文本结构的过程反序列化:在合适的时候把序列化后的文本结构转化为原来的变量将变量对象持久化操作,让其离开内存保存在硬盘中,等到需要的时候,在从硬盘中加载变量对象到内存中,这样就可以大大节约内存地址意义:序列化和反序列的结合可以轻松的存储和传输数据,我们可以把对象序列化为不同的格式,json、XML、二进制、SOAP等使用序列化1、将内存中的类写入文件或者数据库中2、递归保存对象引用的每一个对象数据3、分布式对象

2020-05-18 16:15:37 875 1

原创 使用XSS漏洞获取用户cookie并免密登录实验

使用XSS漏洞盗取cookie,并绕过密码登录首先环境的搭建,使用DVWA平台的XSS漏洞,这个DVWA的XSS漏洞在前面都讲过,所以我们直接使用LOW等级获取cookie,并保存在Web服务器上,这里使用LOW等级是为了方便,其他等级都是一样的做法,只是构造的脚本不同使用脚本获取cookie<script>alert(document.cookie)</script>这是一个很简单的XSS漏洞,可以弹出用户的cookie,但是现在我们不是要将cookie弹出,而是将其保存

2020-05-17 16:47:14 3355

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除