当前位置: 首页> 游戏> 攻略 > 企业网站优秀案例_外贸建站模板免费_网络营销推广策略有哪些_百度账户托管运营

企业网站优秀案例_外贸建站模板免费_网络营销推广策略有哪些_百度账户托管运营

时间:2025/7/10 1:56:45来源:https://blog.csdn.net/m0_61261153/article/details/146423883 浏览次数:1次
企业网站优秀案例_外贸建站模板免费_网络营销推广策略有哪些_百度账户托管运营

 1 TCP与UDP的区别:

1.1 连接方面

TCP:属于面向连接的协议。在进行数据传输前,通信双方要先通过三次握手建立连接,以此保障数据传输的路径通畅。数据传输结束后,再通过四次挥手释放连接。例如,在进行文件下载时,客户端和服务器首先要建立连接,之后才开始传输文件,传输完成后断开连接。

UDP:是无连接的协议。在发送数据前,无需建立连接,发送方直接把数据发送出去,接收方在合适的时候接收数据。像在线视频直播,主播端不断发送视频数据,观众端直接接收,无需事先建立连接。

1.2 可靠性方面

TCP:提供可靠的数据传输。它运用序列号、确认应答机制,接收方收到数据后会返回确认信息给发送方。要是发送方在规定时间内未收到确认信息,就会重传数据。同时,TCP还具备校验和机制,能够检测数据在传输过程中是否发生错误。例如,在进行电子邮件发送时,邮件内容会完整无误地到达收件方邮箱。

UDP:不保证数据的可靠传输。它没有确认应答、重传机制,数据一旦发出,发送方就不会管数据是否能正确、完整地到达接收方。在网络状况不佳时,可能会出现数据丢失、损坏的情况。例如,在玩网络游戏时,可能会出现短暂的卡顿或画面闪烁,这可能是由于UDP数据包丢失造成的。

1.3 数据顺序方面

TCP:保证数据按序到达。它为每个数据包分配序列号,接收方会根据序列号对数据包进行排序,然后按顺序交付给应用层。例如,在网页浏览时,网页的各个元素(如文字、图片)会按照正确的顺序显示在浏览器中。

UDP:不保证数据的顺序。数据包可能会乱序到达接收方,接收方直接将收到的数据交付给应用层,不会进行排序处理。例如,在视频会议中,偶尔会出现声音和画面不同步的情况,这可能是由于UDP数据包乱序到达造成的。

1.4 传输效率方面

TCP:由于要建立连接、保证可靠性和顺序,需要进行大量的控制信息交互,因此传输效率相对较低,开销较大。建立连接和断开连接的过程会消耗一定的时间和资源,而且重传机制也会增加传输时间。例如,在传输大文件时,TCP的传输速度可能会比UDP慢一些。

UDP:无需建立连接和进行复杂的控制,传输效率高,开销小。它只负责将数据快速发送出去,不进行额外的处理。例如,在实时音频传输中,UDP能够快速地将音频数据发送出去,保证声音的实时性。

1.5 流量控制和拥塞控制方面

TCP:具备流量控制和拥塞控制机制。流量控制是根据接收方的缓冲区大小来调整发送方的发送速度,防止接收方缓冲区溢出。拥塞控制则是根据网络的拥塞状况来调整发送方的发送速度,避免网络拥塞。例如,在网络拥堵时,TCP会自动降低发送速度,以缓解网络压力。

UDP:没有流量控制和拥塞控制机制。发送方以固定的速度发送数据,不会根据接收方的处理能力和网络状况进行调整。这可能会导致在网络拥塞时,数据包丢失率增加。例如,在网络带宽不足时,UDP可能会导致大量数据包丢失。

1.6 应用场景方面

TCP:适用于对数据准确性和顺序要求较高的场景,如文件传输(FTP)、电子邮件(SMTPPOP3)、网页浏览(HTTPHTTPS)、远程登录(SSH)等。

UDP:适用于对实时性要求较高、对数据准确性要求相对较低的场景,如视频会议、实时音频播放、在线游戏、DNS查询等。

2 池化思想

池化思想是一种在计算机领域广泛应用的设计理念,它的核心在于预先创建并管理一组资源,以避免频繁地创建和销毁资源所带来的开销,从而提高系统的性能和效率。以下从原理、常见应用场景和优缺点等方面详细介绍池化思想。

2.1 原理

池化思想的基本原理是在系统初始化时,预先创建一定数量的资源对象并将它们存储在一个中。当有使用资源的需求时,系统直接从池中获取可用资源,使用完毕后再将资源归还给池,而不是直接销毁。如果池中的资源都在使用中,系统可以选择等待资源释放或者根据配置创建新的资源。

2.2 常见应用场景

数据库连接池

在数据库操作中,建立和断开数据库连接是比较耗时的操作。数据库连接池预先创建一定数量的数据库连接并存储在池中。当应用程序需要访问数据库时,从连接池中获取一个可用的连接,使用完毕后将连接归还给连接池。例如,Java 中的 DruidHikariCP 等都是常用的数据库连接池。

python
# Python 使用 PyMySQL 和连接池示例
import pymysql
from DBUtils.PooledDB import PooledDB# 创建连接池
pool = PooledDB(creator=pymysql,  # 使用 pymysql 作为数据库连接驱动host='localhost',user='root',password='password',database='test',autocommit=True,charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor,mincached=2,  # 连接池中空闲连接的初始数量maxcached=5,  # 连接池中空闲连接的最大数量maxconnections=6  # 连接池允许的最大连接数
)# 从连接池获取连接
conn = pool.connection()
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
print(results)
# 释放连接,归还给连接池
cursor.close()
conn.close()

线程池

在多线程编程中,创建和销毁线程也会消耗大量的系统资源。线程池预先创建一定数量的线程并管理它们。当有任务需要执行时,从线程池中获取一个空闲线程来执行任务,任务完成后线程不会被销毁,而是继续等待下一个任务。例如,Java 中的ExecutorService就是线程池的实现。

python
import concurrent.futures# 创建线程池
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:# 定义任务函数def task(n):return n * n# 提交任务futures = [executor.submit(task, i) for i in range(5)]# 获取任务结果for future in concurrent.futures.as_completed(futures):print(future.result())

对象池

在一些需要频繁创建和销毁对象的场景中,可以使用对象池来管理对象。对象池预先创建一定数量的对象并存储在池中,当需要使用对象时,从池中获取,使用完毕后将对象归还给池。例如,在游戏开发中,子弹、敌人等对象可以使用对象池来管理。

优缺点

优点

  • 提高性能:避免了频繁创建和销毁资源的开销,减少了系统的响应时间,提高了系统的处理速度。
  • 资源管理:可以更好地控制资源的使用,避免资源的过度使用导致系统崩溃。例如,通过设置数据库连接池的最大连接数,可以防止过多的连接同时访问数据库,导致数据库性能下降。
  • 可复用性:资源可以被多次复用,提高了资源的利用率。

缺点

  • 初始成本:需要预先创建一定数量的资源,可能会占用一定的系统资源。
  • 复杂性:池化管理需要额外的代码来实现,增加了系统的复杂性。例如,需要处理资源的分配、回收、超时等问题。
  • 资源泄漏风险:如果资源在使用完毕后没有正确归还给池,可能会导致资源泄漏,影响系统的性能。

池化思想就好比一个资源管理的小仓库。比如说,你家里经常会来客人,每次有客人来你都要去买新的椅子给他们坐,买完用完又扔掉,这样既浪费钱又麻烦。后来你想到一个办法,买了一堆椅子放在家里的一个角落(这就是),有客人来就从这个角落拿椅子给他们坐,客人走了就把椅子放回去,下次再有客人来就不用再去买新椅子了,直接从角落里拿就行。

在计算机里也是类似的道理。像数据库连接池,建立数据库连接就像是买椅子,很费时间和精力。有了数据库连接池,就可以先准备好一些连接放在里,程序要访问数据库时,直接从里拿一个连接用,用完再放回去,这样就不用每次都花时间去建立新连接了。

线程池也是一样,创建线程很(消耗资源),线程池就提前创建好一些线程放在那里,有任务要处理了,就找个空闲的线程来做,做完了这个线程也不下班,等着做下一个任务。

还有对象池,比如游戏里的子弹,每次发射一颗子弹都去创建一个新的,太麻烦了。用对象池的话,就先准备一堆子弹放在里,需要发射子弹时从里拿一颗,子弹打完了再放回里,下次还能接着用。

这样做的好处就是能让程序运行得更快,因为不用每次都花时间去创建新的资源了,而且也能更好地管理资源,不会让资源用得太乱。不过也有一些小缺点,比如一开始要准备这些资源会占一些空间,管理这个小仓库也需要一些额外的工作,要是不小心把资源弄丢了(没有正确放回里),就可能会出问题。

3 InnoDBMyISAM区别

3.1 数据存储结构

InnoDB:采用聚簇索引,将数据和索引存储在一起。表数据按照主键的顺序存储在B - Tree结构的索引中,叶子节点包含了完整的数据记录。如果没有显式定义主键,InnoDB会选择一个唯一的非空索引列作为聚簇索引键,如果没有这样的列,InnoDB会自动生成一个隐藏的主键列来构建聚簇索引。

MyISAM:数据和索引是分开存储的。MyISAM表有一个数据文件和一个索引文件,数据文件中存储了表的记录,索引文件则存储了索引信息,索引文件中的叶子节点存储的是数据记录的物理地址。

3.2 事务支持

InnoDB:支持事务,遵循ACID(原子性、一致性、隔离性、持久性)原则,能够确保数据的完整性和一致性。通过使用事务,可以将多个数据库操作组合成一个逻辑单元,要么全部成功执行,要么全部回滚,避免数据出现不一致的情况。

MyISAM:不支持事务。这意味着在MyISAM表中执行的操作是相互独立的,没有事务的概念,无法保证一组操作的原子性和一致性。如果在执行多个操作时出现错误,无法自动回滚到之前的状态。

3.3 锁机制

nnoDB:支持行级锁和表级锁。默认情况下,InnoDB使用行级锁,这意味着在并发访问时,可以精确地锁定正在被修改的行,而不会影响其他行的访问,从而提高了并发性能。只有在必要时,例如对整个表进行大规模的更新操作时,才会使用表级锁。

MyISAM:只支持表级锁。当对MyISAM表进行操作时,会锁定整个表,这在并发访问较高的情况下,可能会导致大量的锁等待,降低系统的并发性能。例如,当一个查询正在读取表中的数据时,其他任何对该表的写入操作都必须等待,直到查询完成并释放锁。

3.4 外键支持

InnoDB:支持外键约束。外键用于建立表与表之间的关联关系,确保数据的一致性和完整性。通过外键约束,可以限制在子表中插入或更新的数据必须在父表中有对应的记录,从而防止数据的不一致性。

MyISAM:不支持外键约束。在MyISAM表中,如果需要实现类似外键的功能,需要在应用程序层面进行额外的逻辑处理来确保数据的一致性。

3.5 性能特点

InnoDB:适合处理大量的并发读写操作,特别是在事务处理和数据一致性要求较高的场景下表现出色。由于支持行级锁和事务,能够有效地减少锁冲突,提高并发性能。但是,由于需要维护事务日志和索引结构,写入性能相对MyISAM可能会稍低一些。

MyISAM:查询性能较高,特别是对于只读操作。因为MyISAM的索引和数据分开存储,并且索引结构相对简单,所以在读取数据时能够快速定位到索引位置,然后获取数据。但是,由于不支持事务和行级锁,在并发写入操作较多的情况下,性能会受到限制。

3.6 适用场景

InnoDB:适用于对数据一致性和事务处理要求高的应用,如电商系统、银行系统、企业资源规划(ERP)系统等。这些系统需要确保数据的准确性和完整性,支持并发的读写操作,并且能够处理大量的事务。

MyISAM:适用于以读操作为主,对数据一致性要求不高,且并发写入较少的场景,如一些简单的博客系统、内容管理系统(CMS)等。在这些场景中,查询操作频繁,而写入操作相对较少,MyISAM的简单结构和高效的查询性能能够满足需求。

4 MySQL删除表的三种方式

drop table

drop 是直接删除表信息,速度最快,但是无法找回数据

例如删除 user 表:

drop table user;

truncate (table)

truncate 是删除表数据,不删除表的结构,速度排第二,但不能与where一起使用

例如删除 user 表:

truncate table user;

delete from

delete 是删除表中的数据,不删除表结构,速度最慢,但可以与where连用,可以删除指定的行

删除user表的指定记录

delete from user where user_id = 1;

三种方式的区别
相同点

truncate和不带where子句的delete,drop都会删除表内的数据;

drop,truncate都是DDL语句(数据定义语言),执行后会自动提交;

不同点

语句类型:delete语句是数据库操作语言(DML),truncate,drop是数据库定义语言(DDL);
效率:一般来说 drop > truncate> delete;
是否删除表结构:truncate和delete 只删除数据不删除表结构,truncate 删除后将重建索引(新插入数据后id从0开始记起),而 delete不会删除索引 (新插入的数据将在删除数据的索引后继续增加),drop语句将删除表的结构包括依赖的约束,触发器,索引等;
安全性:drop和truncate删除时不记录MySQL日志,不能回滚,delete删除会记录MySQL日志,可以回滚;
返回值:delete 操作后返回删除的记录数,而 truncate 返回的是0或者-1(成功则返回0,失败返回-1);

关键字:企业网站优秀案例_外贸建站模板免费_网络营销推广策略有哪些_百度账户托管运营

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: