2019.4.23
1.英语单词计划(177,178)
2.Oracle学习: ①使用help index可以列出保留字类型,help [类型] 可以查看具体的Oracle保留字
②创建表时可以使用default给列设置默认值
③ALTER TABLE table_name ADD (列名 类型) 增加列
ALTER TABLE table_name MODIFY (列名 类型) 修改列
ALTER TABLE table_name rename 原列名 to 新列名 修改列名
ALTER TABLE table_name drop (列名1 列名2) 删除列 (删除大表时会产生很大的IO流,影响性能)
ALTER TABLE table_name SET UNUSED COLUMN 列名 将列设置为不使用状态(此时甚至可以给表再增加一个相同名字的列,系统高峰期发出)
ALTER TABLE table_name DROP UNUSED COLUMNS; 删除所有未使用的列 (系统空闲的时候发出,删除列)
ALTER TABLE table_name [READ ONLY / READ WRITE] 设置表为只读/可读写
④创建注释: comment on column [表名.列名] is 'comments';
ps: select * from user_col_comments where table_name=‘tes1’;
select COLUMN_NAME,DATA_DEFAULT from user_tab_columns where table_name=‘tes1’;
这两种使用数据字典的查询方式我在调试的时候都没有正确查找出数据,情况待查
3.数据结构学习: ①键树的结构特点: (1)关键字中的各个符号分布在从根节点到叶的路径上,键树的深度和关键字集合的大小无关
(2)键树被约定为一颗有序树,即同一层中兄弟节点之间依所含符号从左到右有序,并且约定结束符’$'小于任何其他符号
(3)键树的孩子-兄弟链表作树存储结构(双链树),多重链表作树的表示结构(Tire树)
②设计一个关键字到地址映射的函数(哈希函数),使得ASL=0; (构造哈希函数的原则是尽量减小冲突的可能性)
|
--直接定址法: H(key) = key 或者 H(key) =a * key + b (仅限于地址集合大小等于关键字集合大小)
--数字分析法: 假设关键字都是由s位数字组成,分析关键字集合,从中提取分布均匀的若干位或者组合作为地址 (仅限于事先能预估出关键字每一位的频度)
--平方取中法: 把一个关键字平方之后取中间若干位
--折叠法: 将关键字分割成若干段,叠加
--除留余数法: H(key) = key MOD p ,其中p<=m(表长)
--随机数法: H(key) = Random(key)
③处理哈希函数生成地址冲突的方法
|
--开放地址法: 加上一个增量d (又分为线性探测再散列,平方探测再散列,随机探测再散列)
4.读《白帽子讲Web安全》: ①伪随机数算法存在的安全问题:
|
–(1)例如rand(),microtime()之类的函数随机的范围很小
–(2)伪随机数是由数学算法实现的,真正随机的地方在于"种子",但是种子一旦确定后,再通过同一个伪随机算法计算出来的随机数,是固定的,多次计算得到的结果的顺序也是固定的
–(3)注意到同一个进程的种子一般是不变的,通过发送keep-alive的HTTP头,迫使服务器使用同一PHP进程响应请求,则在该进程中,随机数在使用时只会在一开始播种一次
②伪随机数算法攻击方式: (1)通过一些方法猜测种子 (2)通过mt_srand()对种子进行播种 (3)还原程序逻辑,计算对应伪随机数的值
③使用安全的随机数: 如 Java.security.SecureRandom , Linux下的 /dev/random 和 /dev/urandom ,以及php中使用openssl_random_pseudo_bytes() //如果支持openssl的函数
④Web框架安全:
|
|--MVC(Model-View-Controller)框架安全 (提倡在框架下统一解决安全问题)
|
|--框架对XSS防御不足(没有根据不同的情况做对应的"输出编码") -- 解决方式可以是自定义filters或者宏来做对应的"输出编码"
|
|--框架对CSRF防御加固: --Session中绑定token,不能绑定则保存到Cookie中 --form表单自动填入token --Ajax请求自动添加token --Post提交参数的token与Session中绑定token的验证
至12.4前
ps:收到华为offer了,可以好好睡觉了!