用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
char *pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, 和一个字符变量;
用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
char *pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, 和一个字符变量;
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):
1.JDBC(Java Database Connectivity):
JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具有平台无关性。
2.JNDI(Java Name and Directory Interface):
JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。
3.EJB(Enterprise JavaBean):
MySQL SELECT ... FOR UPDATE 的 Row Lock 与 Table Lock
上面介绍过SELECT ... FOR UPDATE 的用法,不过锁定(Lock)的数据是判别就得要注意一下了。由于InnoDB 预设是Row-Level Lock,所以只有「明确」地指定主键,MySQL 才会执行 Row lock (只锁住被选取的数据) ,否则MySQL 将会执行 Table Lock (将整个数据表单给锁住)。
在修改/增加表字段的时候,发现很慢,
show processlist; 时, Waiting for table metadata lock 能一直锁很久。
alter table的语句是很危险的,在操作之前最好确认对要操作的表没有任何进行中的操作、没有未提交事务、也没有显式事务中的报错语句。如果有alter table的维护任务,在无人监管的时候运行,最好通过lock_wait_timeout设置好超时时间,避免长时间的metedata锁等待。
对 复合类型(数组、切片、字典、结构体)变量的初始化是,有一些语法限制:
1、初始化表达式必须包含类型标签;
2、左花括号必须在类型尾部,不能另起一行;
3、多个成员初始值以逗号分隔;
4、允许多行,但每行须以逗号 或 右花括号结束;
main 函数形式:
int main(int argc, char *argv[])
main函数是有参数的,而且有返回值
argc:参数的个数
argv[]:指针数组,存放是具体的参数列表
系统定义的头文件:
/usr/include
/usr/local/include
/usr/target/include
自己定义的头文件路径,默认在执行这个程序的路径,即当前
库文件:
/lib (是别人已经开发好的函数编译的目标文件,可重定位的。)
C函数库。
gcc编译C语言需要经历四个步骤:
使用 Deepin 过程中,发现当点击“任务栏”上面的按钮,尤其是右键单击,选择菜单时,界面很容易卡顿,再也动弹不了。
好吧,,,就不使用自带的“任务栏”了,换成一个轻量级的“任务栏tint2”,