窗口函数
作用:根据分组以及排序规则进行排序,返回该行对应的排名
方法:<窗口函数> over (partition by <分组列名> order by <排序列名>)
例子:
select student_id,course_id,grade
from
(
select student_id,course_id,grade,
rank() over (partition by student_id order by grade desc, course_id) ranking
from Enrollments
) t
where t.ranking = 1
窗口函数间的区别:
- rank():如果存在相同大小的,大小相同的rank()一样,下一个的排名+2
- dense_rank():如果存在相同大小的,大小相同的dense_rank()一样,下一个的排名+1
- row_number():及时存在相同大小的,也依旧按照顺序排列,不会跨排名
线程池
- 处理流程
1.查看核心线程池是否已满,不满就创建一条线程执行任务,否则执行第二步。
2.查看任务队列是否已满(Blocking queue),不满就将任务存储在任务队列中,否则执行第三步。
3.查看线程池是否已满,即就是是否达到最大线程池数,不满就创建一条线程执行任务,否则就按照策略处理无法执行的任务。