首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

加密,编码三问

网络通信中最重要的就是数据部分,而保证数据的正确安全传输,就要牵扯到数据的编码和数据的加密问题,今天的三问就是关于编码和加密: 介绍对称加密和非对称加密 数字签名的原理 Base64算法是什么,是加密算法?...(上图非对称加密A和B代号互换即可) 所以我们用公钥进行加密后,再用私钥进行一次加密,那么私钥的这次加密就叫签名,也就是只有自己可以进行加密的操作。...Base64是一种将二进制数据转换成64种字符组成的字符串的编码算法,主要用于非文本数据的传输,比如图片。可以将图片这种二进制数据转换成具体的字符串,进行保存和传输。 严格来说,不算。...虽然确实一段二进制数据转换成另外一段数据,但是他的加密和解密是公开的,也就无秘密可言了。所以我更倾向于认为它是一种编码,每个人都可以用base64对二进制数据进行编码和解码。...面试加分项:为了减少混淆,方便复制,减少数据长度,就衍生出一种base58编码。

36710

HashMap的31连环炮,倒在第5个上

觉得其中有4个原因: HashMap在我们工作中使用频率相当高。 Java基础(可以通过此Java集合) 线程安全问题(可以通过这个问题引入多线程并发编程的相关问题) 大厂都在问,岂能不问?...10:请解释一下HashMap的参数loadFactor,的作用是什么 11:说说HashMap中put方法的过程 12:当链表长度 >= 8时,为什么要将链表转换成红黑树?...19:HashMap 中的 key 我们可以使用任何类作为 key ? 20:HashMap 的长度为什么是 2 的 N 次方呢?...12、当链表长度 >= 8时,为什么要将链表转换成红黑树?...因为红黑树的平均查找长度是log(n),长度为8的时候,平均查找长度为3,如果继续使用链表,平均查找长度为8/2=4,所以,当链表长度 >= 8时 ,有必要将链表转换成红黑树。

51020
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手机响应式网站设计_如何做响应式网页设计

    宽度自适应做到了但是高度呢,高度也用百分比?难道元素的高度写死。这种做法就是jquery mobile页面的做法了,大屏手机显示效果不好看。 用Bootstrap做栅格化。...如何跟设计图对接 设计图上的单位是px,我们如何转换成em呢,难道用计算器? 这里有个单位换算小工具,它是换算em的,但是你也可以用它来换算rem,只要把基础像素设置成根节点字号就行了。...长度转换成em、rem单位了!...我们配合CSS预编译来做呢,less、sass、stylus,不是可以让css有运算能力。 之后发现了百度EFE团队开发的基于less的est框架里面就包含了这功能。...推荐下自己的 第一次用了est,就发现了bug,@margin-rem()方法用不了,然后打开的less源文件想去修改一下的,发现的实现方式一点都不优雅!主要因为less语言能力太弱了。

    1.3K10

    什么是树状数组?让这个12岁年轻人为你讲解

    比如说a = {0, 1, 5, 3, 2, 4} 第一次求[1, 3],得到1 + 5 + 3 = 9 第二次求[2, 4],得到5 + 3 + 2 = 10 第三次,这时候a[2] += 2 第四次求...这就要请出我们的主角了——树状数组 Part 2 lowbit 树状数组的结构十分精妙,其中离不开一个基本运算——lowbit lowbit(i) 可以解释为:i中最低位的1以及后面的0;或者你可以理解成...bit[i] = 在数组a中从 i - lowbit(i) + 1 到 i 求和 更改单个数值 首先,更改数据可以转换成加法,我们这里讨论加法,和更改是一样的。...是这么理解的:加上一个当前块后会把局部的空缺补上,合并成了一块,而这块也许也补了更大的空缺,这样就一次跳了好几级 上文定义规定了第i个块长度 = lowbit(i),拿来用即可。...对[l, r]求和,可以写成sum(r) - sum(l - 1) 先把大区域[1, r]求出来,然后扣掉[1, l - 1]的部分,不就是[l, r]

    57110

    JavaScript数据结构与算法-Array

    可以不使用额外空间来实现? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 主要运用的就是异或运算和交换定律。...找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现?...的解法是判断数组的长度,遍历长度短的数组,因为两个数组的交集不可能超出最短的数组,然后用indexOf判断是否是交集,再删除长数组中重复的这一项,进行下一次循环,因为indexOf只能找出第一个出现的位置...位运算 NOT 是三步的处理过程: 运算数转换成 32 位数字 二进制数转换成的二进制反码(0->1, 1->0) 二进制数转换成浮点数 简单的理解,对任一数值 x 进行按位非操作的结果为...输入的数组长度范围为 [1, 20000]。 n 是非负整数,且不会超过输入数组的大小。 思路:[0,0,0] 前后都是0,就可以插入一个,然后数组下标加2,再判断。

    59220

    万字长文,38 图爆肝 Redis 基础!

    00 前言 Redis 在互联网技术存储方面的使用可以说是非常广泛了,只要是接触过 Java 开发的朋友就算你没用过,都会听过。在面试也是非常高频的一个知识点。...最近,的的小弟小胖和老王就对 Redis 非常感兴趣;推荐一本书《Redis 设计与实现》。谁知这货说看不下去,非要来总结一波。所以本文算是给小胖和老王的学习资料,也是自己的学习笔记。...如此,就可以从哈希表 1 切换到哈希表 2,用增大的哈希表 2 保存更多数据,而原来的哈希表 1 留作下一次 rehash 扩容备用。 你肯定以为这样就完美了?...只有在操作字典的时候才进行复制数据?如果客户端只操作一次字段是不是就完不成 rehash 了?...raw 分配内存和释放内存的次数是两次,embstr 是一次 embstr 编码的数据保存在一块连续的内存里面 3.0.1 编码的转换 int 类型的字符串,当保存的不再是整数值,将转换成 raw 类型

    53970

    【Python】字符串

    索引获取字符 索引在前面当中的Python系列当中博主有说过不知道你还想的起来(●'◡'●)想不起来那就赶紧回去看看吧不会告诉你是列表那一篇的(ノ*・ω・)ノ,在有些编程语言当中会把索引称之为下标,...find() find()方法来检索字符串中是否包含指定元素,如果包含该元素则返回该元素第一次出现的索引位置,如果不存在该字符则返回-1,的语法结构如下↓ my_str.find(x) my_str...str = "yysy.Pythonshizhendehaoyong" # 所有字符中的小写字母转换成大写字母 print("转换成大写字母:",str.upper()) # 所有字符中的大写字母转换成小写字母...print("转换成小写字母:",str.lower()) # 第一个字母转化为大写字母,其余小写 print("第一个字母转换成大写,其它小写:",str.capitalize(...返回值如下↓ 返回分割后的字符串列表 功能说明:可以一个大的字符串拆分成一个字符串的列表。

    15310

    干货 | 国外大神总结的10个Java编程技巧!

    这是毫无疑问的,一种表达式转换成另一种更好的表达式,并不会失去什么。只要我们的Options是真实存在的(Java 8中 Optional是对可以为空的对象进行的封装),不是?...3 不要相信“-1” 知道这很偏执,Javadoc中关于 String.indexOf() 的早期描述是这样的: “字符在字符序列中第一次出现的位置将作为结果[被返回],如果字符不存在则返回-1。”...所以,-1 就可以理所当然被拿来用,对说不对,看看这个: ? 谁知道呢。...5 检查 null和长度 不管什么时候你有一个集合、数组或者其他的,确保存在并且不为空。 ? 你不知道这些数组来自哪儿,也许是早期的JDK API呢?...事实上,你甚至可以case语句和 惊人的FORTRAN77项声明 类比,对于FORTRAN,的神秘已经超越了的功能。

    62310

    Java集合、数组与泛型中的几个陷阱,你掉进了几个?

    下面总结了集合、泛型、数组转集合等一些常见的陷进,认真看完,相信你绝对有所收获。 1、List ,List 与 List 有区别?...super T> a ,可以 a 及其 a 的父类赋给 a,从 a 里取的元素都会被强制转换为 Object 类型,不过需要注意的是,可以向 a 添加元素,但添加的只能是 T 及其子类元素。...3、泛型与重载 我们先来看一道题,你觉得下面这道题能够编译通过?...所以,我们向 list 添加元素肯定失败,因为 arr 数组的长度了 3 ,本来就有 3 个元素了,你在向里面添加第四个元素,肯定是不行的。 所以,在数组转换为集合的过程中,需要特别注意。...0, size); if (a.length > size) a[size] = null; return a; } 以上这些陷进相信有不少人是不知道了,总结整理了出来

    82020

    Rust学习笔记Day19 你真的了解集合容器

    (这是指双向链表?) 这些集合容器的共性: 可以遍历 可以进行 map-reduce操作。 可以从一种类型转换成另一种类型。 我们选切片和哈希进行着重学习。...作者说在VS Code里可以发现这一奥秘: 不过好想没有发现呢!,哪位发现了,可否告知一下?...这其中貌似也包括。。。 和刚才提到的&Vec和&[T]是一样的。 String 在解引用时,会转换成 &str。那字符的列表和字符串有什么关系和区别呢?...字符列表可以通过迭代器转换成 String, String 也可以通过 chars() 函数转换成字符列表。 不转就不能比较。...此外,当我们构建自己的数据结构时,如果内部也有连续排列的等长的数据结构,可以考虑 AsRef 或者 Deref 到切片。 我们继续学习哈希表。

    50920

    小小的 float,藏着大大的学问

    但是,并不是所有小数都可以用二进制表示,前面提到的 0.625 小数是一个特例,刚好通过乘 2 取整法的方式完整的转换成二进制,如果我们用相同的方式,来 0.1 转换成二进制,过程如下: ?...既然提到了科学计数法,再帮大家复习一下,比如有个很大的十进制数 1230000,我们可以可以表示成 1.23 x 10^6,这种方式就称为科学记数法,该方法在小数点左边只有一个数字,而且这种整数部分没有前导...那么,对于我们在从 float 的二进制浮点数转换成十进制时,要考虑到这个隐含的 1,转换公式如下: ? 举个例子,我们下图这个 float 的数据转换成十进制,过程如下: ?...偷个懒,就不自己手动算了,可以使用 binaryconvert 这个工具,将十进制 0.1 小数转换成 float 浮点数: ?...0.1 + 0.2 == 0.3

    1.8K20

    信息论II:最优二叉树与Huffman编码

    话说16XX年春天,伦敦地区也爆发了一场惨绝人寰的鼠疫,然后牛顿大神在家隔离时宅出了包括二项式定理和微积分在内的一系列顶级学术成果,进而导致了人类第一次理论物理大爆发......研究的方向是香农的信息论(是从B站上进化论专区上过来的,据说进化论基于信息论?)...序列化是一种将多维度的数据无损地转换成一维的线性数据,是一种编码手段,之所以要转换成一维是为了更好地存储和传输,关于序列化的知识参考这篇文章。...再仔细找还能发现json许多多余的数据,可以一直不断的被压缩,但这个压缩的极限在哪里?一定是有极限的,json不可能被无限压缩。 02 — 数据压缩有极限?...如图,用定长编码设计5种字符至少需要3bit的编码长度,图中的深度为3的满二叉树的每一片叶子都是一个字符,但剩下3个叶子因没用到而浪费了。 这时候可以将使用频率最高的一个字符的长度从3压缩至1。

    86420

    一文搞定HashMap的实现原理和面试

    我们也可以设置大于1的负载因子,这样数组就不会扩充,牺牲性能,节省内存。 为了解决碰撞,数组中的元素是单向链表类型。当链表长度到达一个阈值时(7或8),会将链表转换成红黑树提高性能。...所以上面也说了链表长度的阈值是7或8,因为会有一次放弃转换的操作。 4....所以就需要通过算法将我们给定的数值转换成2的次方。 // 这个方法可以将任意一个整数转换成2的次方。...总结 (面试相关) 1、你用过HashMap?” “什么是HashMap?你为什么用到? 呃.. 2、我们能否让HashMap同步?...答:当然可以,只要遵守了equals和hashCode方法定义规则,并且当对象插入到Map中之后将不会再改变。)

    67040

    一文搞定HashMap的实现原理和面试

    我们也可以设置大于1的负载因子,这样数组就不会扩充,牺牲性能,节省内存。 为了解决碰撞,数组中的元素是单向链表类型。当链表长度到达一个阈值时(7或8),会将链表转换成红黑树提高性能。...所以上面也说了链表长度的阈值是7或8,因为会有一次放弃转换的操作。 4....所以就需要通过算法将我们给定的数值转换成2的次方。 // 这个方法可以将任意一个整数转换成2的次方。...总结 (面试相关) 1、你用过HashMap?” “什么是HashMap?你为什么用到? 呃.. 2、我们能否让HashMap同步?...答:当然可以,只要遵守了equals和hashCode方法定义规则,并且当对象插入到Map中之后将不会再改变。)

    57520

    一文搞定HashMap的实现原理和面试

    我们也可以设置大于1的负载因子,这样数组就不会扩充,牺牲性能,节省内存。 为了解决碰撞,数组中的元素是单向链表类型。当链表长度到达一个阈值时(7或8),会将链表转换成红黑树提高性能。...所以上面也说了链表长度的阈值是7或8,因为会有一次放弃转换的操作。 4....所以就需要通过算法将我们给定的数值转换成2的次方。 // 这个方法可以将任意一个整数转换成2的次方。...总结 (面试相关) 1、你用过HashMap?” “什么是HashMap?你为什么用到? 呃.. 2、我们能否让HashMap同步?...答:当然可以,只要遵守了equals和hashCode方法定义规则,并且当对象插入到Map中之后将不会再改变。)

    73910

    高效编程之hashmap你必须要懂的知识点

    >7的时候,链表转换为红黑树提高查询的效率; 代码有注释,这里再分析一次;首先通过key.hashcode()出哈希码,哈希码拿去做hash运算算出一个散列值,散列值(hash)跟数组的长度做indexFor...数组的长度设计成为2的n次方,加载因子设计为0.75,会极大的优化冲突,使每个数组的链表都差不多长(也不一定,概率问题); 至于为什么?...如果你有更好的回答,可以留言给我一起探讨,谢谢啦~ 最好是需要的,因为我们知道hashmap的数组长度超过了他的域值会扩容,扩容的时候会把hashmap中所有的entry对象再计算一次他们在新数组中的下标...hashmap数组长度应该给1W吧,这样我们就可以hashmap的初始大小定义为2的14次方 16384,这样数组的长度我们就定义了1.6W,就算用了1W个,也不会扩容,也没浪费更多的资源;如果你觉得...7、我们可以用自定义的对象作为hashmap的key?如果可以,你会自定义对象当做key?如果不行说明原因。

    1.1K71

    安全的数据库图形管理工具(4):SQL语句(2)

    -128~127(-2(1*8-1) ~ 2(1*8-1)-1)之间,为什么是这样,我们先看一下0这个数,如果真的是-127~127,那么+0和-0都是一个数值,一个数值有两种形式的表示不是太好,因为完全可以其中一个...0的表示放到边界,让它可以多表示一个数,这里放到了负数的边界,为什么是负数的边界?...因为计算机中的数都是二进制格式,十进制数0.5转换成二进制是0.1,十进制数0.25转换成二进制就是0.01,十进制的0.1转换成二进制是什么大家可以自己算一下,可能算一天都算不到这个二进制数。...如果没有设置主键约束,默认就是全部字段作为一个联合主键,这样可以确保数据唯一。但一般情况下都要设置主键,如果联合主键字段太多就会导致性能下降。...下面来演示一下,如图所示。 ? 这里只是简单的密码为234的用户的密码更改成了432。

    76820

    代码+剖析 | 感知机原理剖析及实现

    对于目前手里的这些点,要是能找到一条直线它们分开就好了,这样拿到一个新的零件,知道了的质量和重量,可以判断它在线的哪一侧,就可以知道它可能属于好的或坏的零件了。...总之四维中wx+b可以表示为一个相对于四维来说是个平面的东西,然后四维空间一切为二,我们给它取名叫超平面。由此引申,在高维空间中,wx+b是一个划分超平面,这也就是正式的名字。...很简单啊,不用去努力减少分错点的距离和,w和b等比例缩小就好啦,比如说w改为0.5w,b改为0.5b,线还是那条线,但是值缩小两倍啦!你还不满意?可以接着缩!缩到0去!...就是w不管怎么样,要除以的单位长度。如果w和b等比例缩小,那||w||也会等比例缩小,值一动不动,很稳。...上图最后说不考虑除以模长,就变成了函数间隔,为什么可以这么做呢?不考虑w和b等比例缩小这件事了吗?上文说的是错的

    65631

    面试必问之HashMap

    链表长度如果是小于等于6,6/2=3,虽然速度也很快的,但是转化为树结构和生成树的时间并不会太短。 还有选择6和8,中间有个差值7可以有效防止链表和树频繁转换。...假设一下,如果设计成链表个数超过8则链表转换成树结构,链表个数小于8则树结构转换成链表,如果一个HashMap不停的插入、删除元素,链表个数在8左右徘徊,就会频繁的发生树转链表、链表转树,效率会很低。...问题1.4 能说一下什么是红黑树? 红黑树是一种特定类型的二叉树,它是在计算机科学中用来组织数据比如数字的块的一种结构。若一棵二叉查找树是红黑树,则的任一子树必为红黑树....红黑树通过3种操作来维持自身的平衡(插入或删除节点后) —变色,左旋,右旋 问题1.5 还有其他集合的数据结构是红黑树? treemap、hashset 问题1.6 红黑树能替换为二叉查找树?...HashMap为了存取高效,要尽量较少碰撞,就是要尽量数据分配均匀,每个链表长度大致相同,这个实现就在数据存到哪个链表中的算法 这个算法实际就是取模,hash%length。

    55311
    领券