一些零散知识点汇总

背景


  决定正式从简书迁移到掘金了,一开始接触的是简书,喜欢上了简书的Markdown的编辑模式,也因此学会了md语法,所见即所得的理念真的很不错。但是现在简书首页内容推送太垃圾了,同时掘金的程序员氛围要浓厚的很多,利于提升自己的技术能力。这篇文章也算是将简书上的文章开始进行了一次大的整理。
  之前在学习和阅读中,偶然想到某个东西,觉得很有意思或者是很能解释一些东西。但是不成系统,只是零散的点,对于这种知识,需要暂时记录下来。有待于后续将其补充进系统化的知识体系中。

目录


  1. Hash算法
  2. 字节(Byte)与位(bit)
  3. 冲突域与广播域
  4. 交换机、路由、网关的区别
  5. sql注入攻击

正文


Hash算法

  首先哈希算法是一类算法的统称,具体有MD5,SHA1,SHA256等。哈希算法又叫摘要算法,散列算法。摘要算法更能表达其含义,摘要算法通过一个函数f(),把任意长度的数据转换成一个长度固定的数据串(通常采用16进制的字符串表示)。
  这里有个理解上的坑,那就是它把任意长度的数据转化成固定长度的数据,是有损失的,并不是全部转化,如果是的话,那就是「压缩」了,还是特别厉害的压缩。举例子,你写了一篇文章“七月初六晚八点,村口杨树下我们私奔”,并附上这篇文章的摘要是‘2d73d4f15c0db7f5ecb321b6a65e5d6d’。如果被人篡改了你的文章,只要有丁点改动,根据你文章计算出来的摘要也完全不同,相互比较就知道你的文章是否被人改动。
  总结:摘要算法Hash就是通过一个函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。还要注意的是:摘要算法是单向的,计算f(data)很容易,但是通过digest反推data非常困难,所以不能用于加密解密。
  参考文章:廖雪峰的Python教程—hashlib

字节(Byte)与位(bit)

  数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

冲突域与广播域

  域的意思是集合,也就是多个主机组成的一个物理集合。开始我认为广播域和冲突域是相互独立,隔离开来的。看了一篇文章,发现这两者是可以同时存在于一个主题上面的。他们的区分,在于角度的不同。

总线型以太网

  传统共享式以太网的典型代表是总线型以太网。在这种类型的以太网中,通信信道只有一个,采用介质共享(介质争用)的访问方法)。每个站点在发送数据之前首先要侦听网络是否空闲,如果空闲就发送数据。否则,继续侦听直到网络空闲。如果两个站点同时检测到介质空闲并同时发送出一帧数据,则会导致数据帧的冲突,双方的数据帧均被破坏。这时,两个站点将采用”二进制指数退避”的方法各自等待一段随机的时间再侦听、发送。
  在图1中,主机A只是想要发送一个单播数据包给主机B。但由于传统共享式以太网的广播性质,接入到总线上的所有主机都将收到此单播数据包。同时,此时如果任何第二方,包括主机B也要发送数据到总线上都将冲突,导致双方数据发送失败。我们称连接在总线上的所有主机共同构成了一个冲突域。当主机A发送一个目标是所有主机的广播类型数据包时,总线上的所有主机都要接收该广播数据包,并检查广播数据包的内容,如果需要的话加以进一步的处理。我们称连接在总线上的所有主机共同构成了一个广播域。
  参考文章:冲突域和广播域的区分

交换机、路由、网关的区别

  刚开始想要弄清楚交换机和路由的区别,google发现还有中继器(Repeater)和集线器(HUB)等,所以一把弄清楚。结合广播域和冲突域理解。
  参考文章:1. 集线器、网桥、交换机、路由器、网关大解析
2. 车小胖的回答

sql注入攻击

  这里说一下我对于学习的看法,在看到一个新名词,或者一种新东西。首先要学会从自己的角度去看这个东西,因为从新手外行的角度看待事情,结合以后入门再看,两者结合,看问题的层次就更为丰富,也能加深自己的理解,不容易遗忘。同时,一个新事情的发展,也是从简单到复杂,粗犷到精巧。而简单的初始化状态,也正是大多数新手对于该事物的初始看法。sql注入,字面上看,一定是与sql(结构化查询语言)有关,难点在于注入,我是不知道啥意思。
  所谓SQL注入式攻击,就是输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。以上这段话来源于百度百科。
  我的理解就是,例如你在登录你的邮箱的时候,你需要输入账号与密码,也就是提交一个表单。后端程序需要根据你提交的表单,去数据库中查询是否有匹配的账号。这个过程,一般是直接将用户输入的内容,构成一个动态SQL命令,如果有人将一段sql命令,混入输入的内容中,这段sql命令,与程序内置的动态sql命令,相结合,构成了新的sql命令,可以绕开到数据库中查询。而且也产生了第三方直接接触业务数据库的风险。

https://juejin.im/post/5e37721451882526b832041a

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论