7月27日总结
C语言:函数指针
函数指针
typedef定义新的数据类型
通过函数指针模拟多态
指针函数
指针函数定义
指针函数练习:写一个比较2个/n个字符串长短的函数
回调函数
回调函数的定义 原理
两种用回调函数给一个空数组添加元素的函数写法 ,各自有什么特点?哪个更好?
mysql
多表查询练习
7月28日总结
C语言 :函数收尾 结构体
函数说明符:static extern
内部函数 外部函数
全局变量 局部变量
静态存储 动态存储
C语言中每一个变量都有两个属性:数据类型和存储类别
实际开发原则"非必要不全局,全局必static"
结构体的六种声明方法
结构体(嵌套)变量赋值的多种写法
结构体是可以直接赋值给另一个结构体的,且这种赋值是一种深拷贝
mysql
多表查询练习
我的一些想法和回答:
内连接能干的事左连接一定能干且更稳,因为左连接是内连接的超级模式或者全集
只要在左连接的where子句里加上条件把没匹配上(NULL)的数据过滤掉,左连接就瞬间变成了内连接。
左连接是以牺牲性能为代价的;内连接只找交集最快
左连接的左表应该如何选择:左表即主表要选择你必须保留的那张表。故绝对不能是关系表而得是业务表。因为有的数据不和其他表数据产生关系(客观没有或者主观还没写),如果以关系表为准就遗漏了数据
不完全对应客户的原始要求,但能完美解决底层需求的做法在实际业务中非常常见。这叫"抽象与解耦",或者叫"面向接口/逻辑编程"
使用代理键--内部所有表之间的JOIN和关联,绝对只用代理主键,只有最后一步把数据展示给老板看(或者给外部系统对接)时,才把"代理主键"翻译成"业务主键"(比如身份证)
关系型数据库设计从来没有绝对最优解,只有适合当前场景业务的权衡。表设计是一门妥协的艺术。例如:空间和时间的权衡(反范式化添加冗余字段以提升读取首页速度)/读与写的权衡(读写分离:在频繁读的场合设计冗余表甚至快照表提升读速度代价是降低写速度)/一致性与可用性权衡(CAP)