摘要: MySQL replace into 用法(insert into 的增强版)在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。 在 SQL Server 中可以这样处理: if not exists (select 1 fro 阅读全文
posted @ 2023-09-03 09:50 肆空界 阅读(23) 评论(0) 推荐(0) 编辑
摘要: left join(左关联)、right join(右关联)、inner join(自关联)的区别 用一张图说明三者的区别: 总结: left join(左联接) 返回包括左表中的所有记录和右表中关联字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中关联字段相等的记录 阅读全文
posted @ 2023-08-27 14:24 肆空界 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 静态库和动态库 静态库 将库打包到产品 》生成可执行文件 动态库 运行时才加载到可执行文件 静态库:可执行程序大,部署难度容易,升级难度大 动态库:可执行程序小,部署难度难,升级难度小 库文件的生成 静态库 生成目标文件 把目标文件打包成静态库 ar crsv libalgo.a a.o b.o c 阅读全文
posted @ 2023-08-22 15:47 肆空界 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 整体流程:.c和.h文件进行预处理,生成.i文件,.i文件经过编译,生成.s的汇编代码,.s文件经过汇编,生成.o的目标文件,多个.o文件与库文件,引导文件链接为可执行文件 阅读全文
posted @ 2023-08-22 15:20 肆空界 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 硬链接 多个文件名指向同一个物理内存地址 符号链接 类似于C的指针 阅读全文
posted @ 2023-08-22 15:09 肆空界 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 内核:管理硬件资源,对上层应用程序提供运行时环境 系统调用:内核给上层应用程序提供的接口 库函数:对系统调用进行包装,方便程序员使用(如printf,scanf,malloc,free) shell:命令解析器,一般,命令都是一些简单的可执行程序 注:脚本:命令的集合 应用程序(最上层) 给个图: 阅读全文
posted @ 2023-08-22 13:47 肆空界 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 局部静态变量的特点: 全局数据区 执行到函数内对象声明处首次初始化,若没有显示初始化,自动初始化为0,且只初始化一次 始终驻留在全局区,直到程序结束,作用域为局部作用域,在函数或语句块内,生命周期到程序结束 全局静态变量的特点: 全局区 在main函数执行前分配内存并初始化 注意:全局变量、文件域的 阅读全文
posted @ 2023-08-19 22:49 肆空界 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 委托的本质,是一个类,而事件,是一个委托类型的私有变量加上两个公有方法(事件的+=和-=),这是本质区别。打个比方,string 也是一个类,而string s = "a",这个s是string类型的一个变量(略有不恰当,为了方便直观理解)。public delegate void myDel(); 阅读全文
posted @ 2023-08-18 11:40 肆空界 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 如果大家细心的话应该知道c/c++语言函数参数入栈顺序为从右至左,那么为什么这样呢?来看看两个知识点:参数的计算顺序与压栈顺序。 参数入栈顺序 c/c++中规定了函数参数的压栈顺序是从右至左,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。 参数传递和命名约定 V 阅读全文
posted @ 2023-08-16 14:31 肆空界 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 一、深浅拷贝 如果希望将列表复制一份,通过列表的内置方法copy就可以实现: 1 s = [[1,2],3,4] 2 s1 = s.copy() 3 print(s) 4 print(s1) 拷贝出的列表s1与原列表s完全一致。 [[1, 2], 3, 4] [[1, 2], 3, 4] 对s1修改 阅读全文
posted @ 2023-08-06 17:15 肆空界 阅读(166) 评论(0) 推荐(0) 编辑