安装Redis
下载安装
1 | [root@localhost src] wget http://download.redis.io/releases/redis-4.0.2.tar.gz |
坚守 无畏 宽容 进取
1 | [root@localhost src] wget http://download.redis.io/releases/redis-4.0.2.tar.gz |
涉及bonus dept emp salgrade几张表,可以作为SQL学习测试的Demo表.
1 | /* |
重放攻击(Replay attack)是一种网络攻击,它恶意的欺诈性的重复或拖延正常的数据传输。 —— [ Wikipedia ]
使用签名认证方式设计的RESTFul API,当请求信息被第三方拦截之后,由于其含有认证信息,当再次发起该请求时,如果没有相应的保护机制,请求会再次通过验证,造成重放攻击的风险。
为避免该问题,通常情况下的做法是:
每次发起HTTP请求,都需要加上timestamp参数,然后把timestamp和其他参数一起进行签名。服务端接收到HTTP请求后,将客户端timestamp与服务端当前时间比较,判断是否超过了请求有效期,比如60s,如果超过了则认为是非法的请求。
如此一来从第一次请求发起的时间算起,60s之后再访问时会被服务端拒绝,但是在60s有效期内,依然可以发起重放攻击。
解决方案:
需要保证的是有效期内并发请求生成随机数的唯一性。
1 | public static void main(String args[]) { |
结果:1
2true
false
解析:由于b的值确定且被final修饰,会被当做编译期常量使用,即编译期出现b变量的地方会被直接替换,
替换后,a和c都指向字符串常量池中的hello2地址,故a==c为true;而String e = d + 2;会被编译器转换为类似于 String e = new StringBuilder(d).append(“2”); 故 a==e为false.
1 | public static void main(String args[]) { |
解析:
1 | public class Example { |
运行结果:1
2Hello
ahc
解析:
1 | public class Person { |
1 | x = 10; //语句1 |
1 | x = 10; |
解析:注意y = x,需要读取和赋值,并非原子性操作。
1 | public class Example { |
解析:ouput和output2两个方法分别使用类对象和类实例对象的锁,两个线程不会竞争同一个锁资源,因而不会产生互斥,从而导致输出混乱。
员工表emp:
empno | ename | job | mgr | hiredate | sal | comm | deptno |
---|---|---|---|---|---|---|---|
7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 |
7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 |
7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 |
7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 |
7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 |
7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 |
7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 |
7788 | SCOTT | ANALYST | 7566 | 1987-07-13 | 3000.00 | NULL | 20 |
7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |
7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 |
7876 | ADAMS | CLERK | 7788 | 1987-07-13 | 1100.00 | NULL | 20 |
7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 |
7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 |
7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 |
部门表dept:
deptno | dname | loc |
---|---|---|
10 | ACCOUNTING | NEW YORK |
20 | RESEARCH | DALLAS |
30 | SALES | CHICAGO |
40 | OPERATIONS | BOSTON |
1 | SELECT d.deptno |
1 | SELECT e2.ename,e2.sal,e2.deptno,r1._avg |
1 | SELECT t0.deptno, t0.ename, t0.sal |
解析: 员工工资排名前3,可以转换为: 工资大于等于自己的人数(count)小于等于3