1.volatile影响可读性吗
不影响,防止编译器对代码进行优化
某个属性被多个线程共享,其中有一个线程修改了此属性,其他线程可以立即得到修改后的值;或者作为状态变量,如 flag = ture,实现轻量级同步
volatile 属性的读写操作都是无锁的,它不能替代 synchronized,因为它没有提供原子性和互斥性。因为无锁,不需要花费时间在获取锁和释放锁上,所以说它是低成本的
volatile 只能作用于属性,我们用 volatile 修饰属性,这样编译器就不会对这个属性做指令重排序。
volatile 提供了可见性,任何一个线程对其的修改将立马对其他线程可见。
2.hashmap怎么会变慢,怎么解决?
hashmap 底层是数组和链表组合,当hashcode都等于0时存放的数据都放在第一个位置的链表上,那么hashmap结构的好处没有用出来,造成速度变慢,
解决他用
利用hashmap的entryset内部类的迭代器去处理map里面的值
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
3.innodb支持全文索引吗?
最近看到不少网友喷一些文章,提到mysql的innodb不支持全文索引是错的。事实是,不完全对。
原因是innodb 从1.2.x 开始才增加了全文索引支持。而MySQL5.6版本中innodb的版本才升级到 1.2.x。
所以,mysql5.5版本的innodb不支持全文索引
4.编写NIO启动程序
mSelector = Selector.open();
mSSC = ServerSocketChannel.open();
mSSC.configureBlocking(false);
mKey = mSSC.register(mSelector,0);
mSSC.socket.bind(addr);
mKey.intersetOps(OP_ACCEPT);
表结构
Student(sid,sname,sage,sex)
SC(sid,cid,score)
Course(cid,cname,T#)
Teacher(tid,tname)
1.找出课程编号“001”比“002”高分的学生的学号,姓名。
select a.sid,a.sname from score a ,score b where a.sid=b.sid and a.cid=‘001’ and b.cid=‘002’ and a.score>b.score
2.select sid,avg(score) avgScore from sc group by sid having avg(score)>60;
3.select sc.sid,s.sname,count(sc.cid) cidNum,sum(sc.score) scoreSum from sc join student s on sc.sid=s.stid group by sc.sid;
4.找出没有选修“叶凡”老师课程的学生的学号和姓名
select s.sid,s.sname from s join sc on s.sno = sc.sno where sc.cno not in (select c.cno from c join sc on c.cno = sc.cno and cteacher =‘叶凡’);
select tid from t where tname=“叶凡”;
select cid from c where tid =();
select distinct sid from sc where cid =();
select sid,sname from s where sid not in ();
select c.cno from c join sc on c.cno = sc.cno and cteacher =‘叶凡’;
select * from s left join sc on s.sno=sc.sno;