对称加密和非对称加密的区别
对称加密: 有一个秘钥,两边通过秘钥加密信息,例如a 传递加密内容,b接收,b拿到秘钥可以解密。 有一个问题是,一旦有人拿到这个秘钥,就可以解密所有用户的加密信息。
eg:DES、3DES
非对称加密:用户拥有公钥私钥,公钥可以暴露出去,对应的私钥才能解密。 这样不用担心别人拿了密钥就能解密所有用户的担心。
eg:ssh https tls等
https 比http安全的原因:
其实用户在发送请求的时候,中间并不是直接到达的,而是经过了很多的运行商的拦截。
如果有的运行商这时候想抓到你的数据,然后篡改部分,就会影响到用户。
http就是这样的
而https是经过加密的,中间的运营商是可以抓到数据,可是问题是都已经被加密过了,看不懂,就不好篡改了。
sql注入:sql注入的原因主要在于拼接sql上。为什么这么说呢?
举个例子 String sql = “select * from user where name=’” +name +”’ and pass=’”+pass+”’ ”
如果有人这样子,将name 搞成 bob’# 或者bob’– 都是注释后边的语句的意思
那么久变成了select * from user where name=’bob’
这样就会被注入了
那么为什么preparedstatement 可以防止sql注入呢?因为起有预编译作用,实际上,是将’转译为了\’
xss就同sql注入类似,是在输入里利用’ 加上其他的东西,生成js,然后去获取用户的session、cookie
html.incolde 将那些特殊字符来转换为编码了
key和index的区别:
key是键,当建立一个key的时候,其实就是建立了一个约束+索引(index)
index就是最普通的索引 唯一索引
索引其实就像字典中的页码,数据库使用1024个字节的单位存储单元,来存储数据,是放在MyISAM中
索引不要随便建立,因为索引是占内存的,存的那一列,有多少数据,占了多少个存储单元,就有多少的索引
如果是查这个列的限制值,那么这一列一定要用索引。
tps:每秒事务处理过程
qps: 每秒查询次数
乐观锁和悲观锁
悲观锁:每次拿数据都会认为别人会上锁。用户在读数据之后就已经将数据锁定了,知道整个事务操作完成后才将锁交给别人。此期间不能读。
乐观锁:每次拿数据都会认为别人不会上锁,但是会在读数据时,给数据加上一个version或者是时间戳,只有version是第一次拿出或者时间戳最早的最终才能够匹配。(适用于秒杀活动)
Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,一款非常优秀的分布式搜索程序
动态规划:有点类似于分治法,但是实际上又不是。动态规划的最大的一个特点就是将以前有过的解决方案以一种二维数组的方式记录下来,为以后的操作做成准备。最终筛选最优。
常见问题,背包问题,硬币问题,字符串求公共子串等。