安卓线程
Handler mHandler=new Handler();
mHandler.post(new Runnable(){
@Override public void run()
{ // TODO Auto-generated method stub
}
});
我们可以通过调用handler的post方法,把Runnable对象(一般是Runnable的子类)传过去;handler会在looper中调用这个Runnable的Run方法执行。
Runnable是一个接口,不是一个线程,一般线程会实现Runnable。所以如果我们使用匿名内部类是运行在UI主线程的,如果我们使用实现这个Runnable接口的线程类,则是运行在对应线程的。
这个函数的工作原理如下:
View.post(Runnable)方法。在post(Runnable action)方法里,View获得当前线程(即UI线程)的Handler,然后将action对象post到Handler里。在Handler里,它将传递过来的action对象包装成一个Message(Message的callback为action),然后将其投入UI线程的消息循环中。在Handler再次处理该Message时,有一条分支(未解释的那条)就是为它所设,直接调用runnable的run方法。而此时,已经路由到UI线程里,因此,我们可以毫无顾虑的来更新UI。
数据库触发器
一个控制字符数量的触发器
create trigger in_c
on Course
after insert
as
begin
if(select len(Cno) from inserted) not in (6,6)
rollback transaction
end
VS code
配置C/C++环境时,文件夹名字不能是中文并且不能有空格
数组
对于定义数组时,如果数组较大(大概10^6级别),则需要将其定义在主函数外面,否则会使程序异常退出。原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大。
#include<iostream>
using namespace std;
int a[1000010];
int main(){
for(int i=0;i<1000010;i++) a[i]=i;
return 0;
}