2022.09.05 学习笔记

Java内存模型

  • Java采用的是共享内存模型,线程之间的通信是隐式进行

  • 实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享;局部变量、方法定义参数和异常处理器参数不会在线程之间共享。

  • as-if-serial语义:不管怎么进行重排序,(单线程)程序的执行结果不能够被改变。没有数据依赖关系的语句才可以进行重排序,也即没有数据依赖的两条语句,编译器和处理器可能会改变执行顺序(多线程时要考虑到控制依赖)。也就是说我们实际写的代码,在真正执行的时候不一定是按照我们写的顺序来执行的。

  • 在单线程程序中,对存在控制依赖的操作重排序,不会改变执行结果(as-if-serial);在多线程中,对存在控制依赖的操作重排序,可能会改变程序的执行结果。

  • 顺序一致性模型:

    1. 一个线程中的所有操作必须按照程序的顺序来执行
    2. (不管程序是否同步)所有线程都只能看到一个单一的操作执行顺序,每个操作都必须原子执行并且立刻对所有线程可见

SQL

if(expression,value1,value2)

expressiontrue的时候返回value1,否则返回value2

select T.from_id person1,T.to_id person2,count(*) call_count,sum(T.duration) total_duration
from 
(
    select if(from_id>to_id,to_id,from_id) from_id,
           if(from_id>to_id,from_id,to_id) to_id,duration
    from Calls
) T
group by T.from_id,T.to_id

between A and B round()

会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期

左闭右闭,等价于使用>= <=

如果需要这个范围之外的数据,那么使用not between A and B

round()函数用于把数值字段舍入为指定的小数位数

select p.product_id,round(sum(price*units)/sum(units),2) average_price
from Prices p inner join UnitsSold u 
on p.product_id = u.product_id
where u.purchase_date between p.start_date and p.end_date
group by product_id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值