01 2024 档案
摘要:【一】引入 【1】什么是HTML 超文本标记语言 如果想要让浏览器能够渲染出写的页面,都必须遵从HTML语法 我们浏览器看到的页面,内部其实都是HTML代码(所有的网站内部都是HTML代码) 【2】最基础的页面 <h1>hellow dream</h1> <a href="https://www.b
阅读全文
摘要:数据库的范式设计 【一】引言 MySQL的库表设计,在很多时候我们都是根据我们自己的个人喜好和习惯创建出来的,在前期的设计中总是会有考虑不到的地方,对于库表结构的划分也并不明确 这也就导致了我们在开发过程中,代码写着写着就会想去重构表的结构,甚至需要大面积的重构多张表结构 这种随心所欲的设计方式,无
阅读全文
摘要:【一】什么是锁机制 我们可以通过一个很简单的比喻来理解事务的锁机制。 比如同一个办公室的同事们 都想使用打印机打印文件 如果不加以控制 可能出现两个人同时打印不同的内容在一个文件里 就会引起内容混乱。 于是,我们就引入了锁的概念 当有并发的多个事务同时操作同一份数据时 只有“抢到”了锁的事务 才能真
阅读全文
摘要:【一】数据库读现象的本质 是数据库在高并发场景下 多个同时执行的事务带来的影响。 【二】数据库三大读现象 在数据库中,不同的事务隔离级别可能会导致脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻读(Phantom Read)等问题的出现。 【1】脏读 (1)概述
阅读全文
摘要:【一】索引的概念 索引(在MySQL中也叫做“键(key)”)是存储引擎用于快速找到记录的一种数据结构,这也是索引最基本的功能。 索引对于良好的性能非常关键。 数据量越大时,索引对性能的影响也越重要,好的索引可以将查询性能提高几个数量级。 在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明
阅读全文
摘要:各种语言中的流程控制语句 【1】Python if 条件: 子代码 elif 条件: 子代码 else: 子代码 【2】JavaScript if(条件){ 子代码 }else if(条件){ 子代码 }else{ 子代码 } 【3】MySQL if 语句 if 条件 then 子代码 elseif
阅读全文
摘要:MYSQL函数 【一】什么是函数 跟存储过程是有区别的,存储过程是自定义函数,函数就类似于内置函数 注意与存储过程的区别,mysql内置的函数只能在sql语句中使用! 【二】字符串函数 【1】介绍 CONCAT(str1, str2, ...): 将多个字符串连接成一个字符串。 SUBSTRING(
阅读全文
摘要:MySQL存储过程 【一】什么是存储过程 存储过程就类似于Python中的自定义函数 内部包含了一系列可以执行的SQL语句,存储过程存储在MySQL服务端中,可以通过调用存储过程触发内部的SQL句 存储过程是在关系型数据库中存储的一组预定义的SQL语句集合,可以接收参数并返回结果。 它们被封装在数据
阅读全文
摘要:MYSQL事务 【一】什么是事务 开启一个事务可以包含多条语句,这些语句要么同时成功,要么都不成功 事务是指一系列相关操作的集合,这些操作被视为一个不可分割的工作单元。 事务的目标是确保在多个操作中的每一个都要么全部成功执行,要么全部失败回滚。 即事务的原子性 【二】事务的四大特性(ACID) 【1
阅读全文
摘要:【一】触发器介绍 【1】什么是触发器 在满足对表数据进行增删改的情况下,自动触发的功能,称为触发器 触发器是数据库管理系统中的一个概念,它是一种在数据库中定义的特殊对象,用于在满足特定条件时触发自动化的操作或逻辑。 触发器主要用于监视数据库表的增删改操作,并在满足指定条件时触发相关的响应行为。 触发
阅读全文
摘要:SQL注入问题 写入数据的四种方式 第一种方式 sql = "insert into person(username,password) values ('hope','123') cursor.execute(sql) # # 需要二次确认 : 提交事务 conn.commit() 第二种方式:字
阅读全文
摘要:MYSQL视图 【1】什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次可以直接使用 视图也是一张表 在计算机科学中,视图(View)是一种虚拟表,其内容是一个或多个基本表的查询结果。 视图基于数据库中的数据,通过定义查询语句来构建,并在需要时动态地计算数据。 与基本表不同,视图不存储实
阅读全文
摘要:Pymysql模块的简单使用 【1】安装 pip install pymysql 【2】简单使用 (1)什么是游标: 游标。通俗的解释就是"游动的标志",当我们执行一条查询语句的时候,往往会得到N条返回结果,不会立马把结果打印到屏幕上,而是将这些结果存储起来,然后自己随意进行编程,得到我们最终想
阅读全文
摘要:筛选条件 【一】where公式 - 查询当前表中的全部数据 select * from 表名 where 筛选条件; -- 查询当前表中的指定字段的数据 select 字段名,字段名 from 表名 where 筛选条件; # 执行顺序 from where select select * from
阅读全文
摘要:【一】什么是约束条件 约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败! 约束条件在创建表时可以使用, 也可以修改表的时候添加约束条件 【二】概览 非空约束(not null) 唯一性约束(unique) 组合使用 not null 和 uniqu
阅读全文
摘要:MYSQL的基本数据类型 【一】基本数据类型之整型 【1】引入 整型默认情况下都是带有符号的 针对整型()内的符号到底是什么用? 针对整型,括号内的宽度是用来限制存储数据的范围的 特例:只有整型括号内的数字不是表示限制位数而是显示长度 【2】分类 TINYINT SAMLLINT MEDUIMINT
阅读全文
摘要:MySQL的使用 【一】启动MySQL net start mysql 【二】关闭MySQL net stop mysql 【三】进入MySQL mysql -uroot -p enter 密码 【四】修改密码 mysql -uroot -p临时密码 alter user 'root'@'local
阅读全文
摘要:IO模型简介 我们研究的 IO 都是基于网络 IO 的 Stevens在文章中一共比较了五种IO Model: blocking IO nonblocking IO IO multiplexing signal driven IO (忽略) asynchronous IO 由signal drive
阅读全文
摘要:协程 【一】并发的本质 基于单线程来实现并发 即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发 为此我们需要先回顾下并发的本质: 切换+保存状态 CPU正在运行一个任务 会在两种情况下切走去执行其他的任务(切换由操作系统强制控制) 一种情况是该任务发生了阻塞 另外一种情况是该任务计算的
阅读全文
摘要:进程池和线程池 【一】什么是池 池是用来保证计算机硬件安全的情况下最大限度的利用计算机 池降低了程序的运行效率,但是保证了计算机硬件的安全,从而保证程序的正常运行 【二】线程池与进程池案例 import time from concurrent.futures import ThreadPoolEx
阅读全文
摘要:死锁和递归锁 【一】死锁 【1】介绍 死锁是指两个或多个进程,在执行过程中,因争夺资源而造成了互相等待的一种现象。 即两个或多个进程持有各自的锁并试图获取对方持有的锁,从而导致被阻塞,不能向前执行,最终形成僵局。 在这种情况下,系统资源利用率极低,系统处于一种死循环状态。 【2】案例 from th
阅读全文
摘要:GIL锁 【一】解释 GIL锁是CPython解释器独有的一种锁,为了保证底层的数据的安全的 同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势 【二】使用 from threading import Thread,Lock import time money=100 lock=
阅读全文
摘要:生产者和消费者模型 【1】理论 (1)生产者模型 生产者模型和消费者模型是指通过利用队列解耦生产者和消费者的一种并发编程模型。 在生产者模型中,生产者负责将数据放入共享队列中,而消费者则从队列中取出数据进行处理。 生产者和消费者之间通过共享这个队列来进行信息的交流。 这种模型适用于生产者和消费者之间
阅读全文
摘要:多线程 【一】概念 进程:相当于一个车间 线程:相当于车间的流水线 进程是资源分配的最小单位 线程是执行的最先单位 【二】创建线程的开销大还是创建进程的开销大 进程的开销大,因为开设进程就要给进程开辟一块大的内存空间地址 线程开设在进程下的 这些线程是共享这块进程的资源的 【三】多线程创建的两种方式
阅读全文
摘要:进程通信和队列 【一】引入 【1】什么是进程间通信(Inter-Process Communication, IPC) 进程间通信(Inter-Process Communication, IPC)是指两个或多个进程之间进行信息交换的过程。 它是一种计算机编程技术,用于在不同进程之间共享数据和资源。
阅读全文
摘要:【一】什么是进程同步(互斥锁) 互斥锁(Mutex)是一种用于多线程编程中控制对共享资源访问的机制。 其作用是保证在同一时刻只有一个线程在访问共享资源,从而避免多个线程同时读写数据造成的问题。 互斥锁的基本原理是在对共享资源进行访问前加锁,使得其他线程无法访问该资源,当访问完成后再解锁,使得其他线程
阅读全文
摘要:僵尸进程和孤儿进程 【一】僵尸进程 对于子进程来说:子进程死亡的时候,但是他的这部分资源却没有被回收掉 这种现象对于这个死掉的子进程来说就是僵尸进程 【二】孤儿进程 子进程对于父进程来说:父进程死亡,子进程也应该跟这个死亡,父进程死了,但是子进程没死, init 进程 接收掉所有父进程死亡而子进程未
阅读全文
摘要:【一】Process对象的join方法 将并行转为串行 join:主进程等,等待子进程结束 (1)join方法 -- 串行 import multiprocessing import time def run_task(i): print(f"这是参数 {i} 开始!") # 模拟IO阻塞 time
阅读全文
摘要:并发编程 【一】并发串行并行 串行 按照顺序一个个的执行 并发 伪并行,感觉上是并行其实是串行 并行 同时运行 并行一定是并发,但是并发不一定是并行 【二】同步/异步/阻塞/非阻塞 【一】同步 所谓同步就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回。 按照这个定义,其实绝大多数函数都
阅读全文
摘要:粘包 【一】什么是粘包 须知:只有TCP有粘包现象,UDP永远不会粘包 【1】socket收发消息的原理 首先需要掌握一个socket收发消息的原理 发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据 也就是说,
阅读全文
摘要:Scoket网络编程 【一】Scoket层在哪 还是用图来说话,一目了然。 【二】什么是socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。 在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 对用户来说,一组
阅读全文
摘要:【1】什么是网络编程 网络编程是指通过编程语言在计算机之间建立通信的一种方式。 它是在互联网上进行数据传输的关键组成部分,使计算机能够相互通信、交换信息和共享资源。 网络编程涉及许多不同的技术和协议,包括TCP/IP(传输控制协议/因特网协议),HTTP(超文本传输协议),FTP(文件传输协议)等。
阅读全文
摘要:【一】引入 C/S和B/S都是互联网中常见的网络结构模型。 【一】什么是C/S模型 C是英文单词“Client”的首字母,即客户端的意思 C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。 例如:拼多多APP、PC上的有道云笔记等等 【二】什么是B/S模型 B是英文单词“Br
阅读全文