SQL学习笔记(二)
SQL学习笔记(二)
数据库安全性
授权与收回
GRANT
1 | GRANT <权限>[,<权限>]... |
1 | GRANT <权限>[,<权限>]... |
Sno | Sname | Ssex | Sage | Sdept |
---|---|---|---|---|
201215121 | 李勇 | 男 | 20 | CS |
201215122 | 刘晨 | 女 | 19 | CS |
201215123 | 张敏 | 女 | 18 | MA |
201215125 | 张立 | 男 | 19 | IS |
选择supercube主要是i3的y轴在底板的有时可能会不稳,框架式的后期加装亚克力板整体也会好看一些,而且会有拓展性(例如挤出头换笔或者激光头)
um2看着也很好,但是我还算是新手,难度有点大,预算也稍高一点
在C++中,类的对象创建有两种形式,一是静态创建,如A a;另一种是动态创建,如A *p=new A;
静态创建一个类对象,是由编译器为对象在栈空间中分配内存。
动态创建对象,是使用new运算符将对象创建在堆空间中。
动态创建又分为两步:
operate new()函数在堆空间找到合适内存并分配
调用构造函数构造对象,初始化内存空间
在说创建对象前,先聊一下operate new()的重载。
如果不想使用系统原始的内存分配方式时,可以自定义内存分配方式。
1 | #include <iostream> |
单例模式简单来说就是整个程序运行时只能创建出一个对象。
核心办法:构造函数私有化
单例模式还分为两种:饿汉模式和饱汉模式
饿汉模式:程序运行直接创建对象(线程安全)
饱汉模式:使用对象时,若不存在创建对象(线程不安全)
双检测锁:解决饱汉模式线程不安全问题
1 | class Singleton |
lambda表达式其实就是匿名函数,即没有函数名的函数
1 | [capture list](parpmeter list)->return type{funcition body} |
1 | double x = 2.333; |
旧式类型转换不明了,查找错误较为困难,C++中建议使用C++风格的类型转换
cast-name<type>(expression)
1 | typedef char* PCHAR; |
1 | //c中不能用是struct [类名]来定义,不能只用类名,typedef可以简化代码 |