- 博客(308)
- 收藏
- 关注
原创 Java常用工具算法-4--签名算法(RSA,ECDSA,HMAC等)
定义:通过密码学方法生成的字符串,用于验证数据来源、完整性及不可否认性。核心功能:身份验证:确认信息由签名者发送。数据完整性:确保信息未被篡改。不可否认性:签名者无法否认签名行为。不可伪造性:他人无法伪造签名。
2025-04-02 10:29:32
710
原创 Java常用工具算法-3--加密算法2--非对称加密算法(RSA常用,ECC,DSA)
定义:使用一对密钥(公钥与私钥)的加密算法,公钥公开,私钥保密。加密和解密使用不同密钥,且无法通过公钥推导出私钥。关键点:解决了对称加密的密钥分发问题,但计算开销相对较大。基本流程:(1)、密钥生成每个用户生成一对密钥:公钥(Public Key) 和 私钥(Private Key),二者数学关联但无法互相推导。(2)、加密与解密加密:发送方使用接收方的 公钥 对数据加密。解密:接收方使用自己的 私钥 对密文解密。(3)、数字签名签名:发送方用 私钥 对数据哈希值加密,生成签名。
2025-04-02 10:13:34
659
原创 Java常用工具算法-2--加密算法1--对称加密算法(推荐AES算法)
定义:加密和解密使用相同密钥的算法。工作流程:秘钥协商:双方需提前通过安全信道共享密钥。加密过程:发送方用密钥对明文加密,生成密文。解密过程:接收方用相同密钥对密文解密,还原明文。关键点:密钥的安全性是加密系统的核心,一旦密钥泄露,所有加密数据将暴露。
2025-04-01 17:58:59
740
原创 力扣经典算法篇-6-轮转数组
将数组整体反转后,对头前k个元素一定是目标转移的元素,不过顺序是反着的。给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]输出: [5,6,7,1,2,3,4]逆风翻盘,Dare To Be!
2025-04-01 17:51:42
352
原创 力扣经典算法篇-5-多数元素(哈希统计,排序,摩尔投票法)
推论二: 若数组的前 a 个数字的 票数和 =0 ,则 数组剩余 (n−a) 个数字的 票数和一定仍 >0 ,即后 (n−a) 个数字的 众数仍为 x。给定一个大小为 n 的数组 nums ,返回其中的多数元素。推论一: 若记 众数 的票数为 +1 ,非众数 的票数为 −1 ,则一定有所有数字的 票数和 >0。可以结合上面参考的几个示例,在有序和无序的情况下,自己思考一下。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:nums = [2,2,1,1,1,2,2]
2025-03-31 21:40:05
221
原创 Java常用工具算法-1--哈希算法(MD5,SHA家族,SHA-256,BLAKE2)
哈希算法(Hash Algorithm),又称散列算法,是一种将任意长度的输入数据(明文)转换为固定长度的输出(哈希值/摘要)的数学算法。哈希值通常被称为摘要(Digest)。其核心思想是通过单向函数将数据映射到一个较短的、固定长度的字符串,同时保证不同的输入生成不同的哈希值(理想情况下)。(1)、哈希算法的核心价值数据完整性:通过哈希值验证数据未被篡改。隐私保护:单向性确保密码等敏感信息安全存储。高效性:固定输出长度便于快速比较和存储。(2)、选择哈希算法的准则。
2025-03-31 20:22:19
781
原创 消息队列篇--通信协议篇--理解HTTP、TLS和TCP如何协同工作
TCP提供了底层的可靠传输服务,确保数据包按顺序到达且不丢失。TLS在TCP之上增加了加密和身份验证功能,确保数据的安全性和完整性。HTTP是应用层协议,负责定义客户端和服务器之间的请求和响应格式。通过这种分层结构,HTTP、TLS和TCP协同工作,确保了网络通信的可靠性、安全性和效率。如果你使用的是HTTPS,那么所有的HTTP请求和响应都会在TLS加密通道中传输,从而保护数据免受窃听和篡改。逆风翻盘,Dare To Be!!!
2025-03-30 15:18:26
1421
原创 力扣经典算法篇-4-删除有序数组中的重复项 II(中等)
解释:函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]输出:5, nums = [1,1,2,2,3]输入:nums = [1,1,1,2,2,3]逆风翻盘,Dare To Be!
2025-03-30 13:54:38
154
原创 力扣经典算法篇-3-删除有序数组中的重复项
可以采用双指针法(快慢指针法),快指针用于比遍历数组的元素,慢指针指向待比较的元素,当快指针和慢指针的值不相等时,将快指针位置的元素添加到慢指针的下一个位置,慢指针在右移,直到走到最后。给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。输入:nums = [0,0,1,1,1,2,2,3,3,4]输入:nums = [1,1,2]
2025-03-30 13:27:16
437
原创 消息队列篇--通信协议篇--SSL/TLS协议
SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是用于在网络通信中提供安全性的加密协议。TLS是SSL的后继版本,目前广泛使用的主要是TLS协议。它们的主要功能包括加密通信、身份验证和数据完整性检查,确保数据在传输过程中不被窃听、篡改或伪造。HTTPS就是基于SSL/TLS实现的加密传输。1、加密:确保数据在传输过程中不被窃听。2、身份验证:通过数字证书验证服务器的身份,防止中间人攻击。
2025-03-29 11:07:22
979
原创 力扣经典算法篇-2-移除元素
更改nums数组,使nums的前k个元素包含不等于val的元素。nums的其余元素和nums的大小并不重要。要求在数组nums中移除val值的元素,且最终的nums中所有的非val值的元素保存在前面的位置。解释:你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。解释:你的函数函数应该返回 k = 2, 并且 nums 中的前两个元素均为 2。输入:nums = [0,1,2,2,3,0,4,2], val = 2。输出:5, nums = [0,1,4,0,3,
2025-03-29 10:26:50
229
原创 消息队列篇--通信协议篇--HTTP和HTTPS
HTTP是一种无状态的应用层协议,用于在客户端和服务器之间传输超文本。它简单高效,但由于明文传输,安全性较低。HTTPS是HTTP的安全版本,通过SSL/TLS加密技术确保数据传输的安全性。它提供了加密传输、身份验证和完整性检查,适用于对安全性要求较高的场景。SSL/TLS是HTTPS的基础加密协议,通过握手过程生成会话密钥,确保通信的安全性。HTTP/2和HTTP/3是HTTP协议的最新版本,提供了多路复用、头部压缩和更快的连接建立等功能,进一步提升了性能和用户体验。
2025-03-28 11:50:31
1310
原创 力扣经典算法篇-1-合并两个有序数组
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。输入:nums1 = [1], m = 1, nums2 = [], n = 0。解释:需要合并 [1,2,3] 和 [2,5,6]。解释:需要合并的数组是 [] 和 [1]。输出:[1,2,2,3,5,6]
2025-03-28 11:33:47
283
原创 消息队列篇--通信协议篇--应用层协议和传输层协议理解
传输层协议(如TCP和UDP)确实负责创建和管理端到端的通信通道,并确保数据能够在发送方和接收方之间可靠或高效地传输。TCP提供了面向连接、可靠的传输服务,确保数据包按顺序到达且不丢失。它还提供了流量控制和拥塞控制,以防止网络拥塞和数据溢出。UDP提供了无连接、不可靠的传输服务,适合对实时性要求较高的应用,如视频流、语音通话等。它不保证数据包的顺序或可靠性,但传输速度更快。应用层协议(如HTTP、SMTP、DNS等)负责定义应用程序之间交换的数据的格式和语义。
2025-01-29 23:43:58
1010
原创 消息队列篇--通信协议篇--STOMP(STOMP特点、格式及示例,WebSocket上使用STOMP,消息队列上使用STOMP等)
STOMP是一种简单而强大的消息传递协议,特别适合于需要灵活消息路由的应用场景。通过运行在WebSocket或其他传输协议之上。易用性:基于文本的协议,易于实现和调试。灵活性:支持多种消息传递模式,适应不同的应用场景。跨平台:可以在多种编程语言和平台上使用,具有良好的互操作性。通过理解STOMP的基本概念、命令和工作流程,开发者可以有效地利用这一协议构建高效的消息传递系统。乘风破浪!Dare to Be!!!
2025-01-29 23:29:58
1578
原创 消息队列篇--通信协议篇--WebSocket(WebSocket特点,HTTP升级到WebSocket,STOMP协议使用,通信类型分类,全双工通信等)
客户端发送SYN。服务器响应SYN-ACK。客户端发送ACK,建立TCP连接。WebSocket提供底层的通信管道:WebSocket建立连接后,可以通过它发送任意类型的数据帧。STOMP 提供高层级的消息协议:在WebSocket之上使用STOMP,可以实现更结构化的消息传递机制。混合发送WebSocket和STOMP消息:WebSocket支持在同一连接上发送不同类型的消息,但实际应用中,一旦切换到STOMP协议,大多数消息将遵循STOMP格式。
2025-01-27 17:01:47
2085
1
原创 消息队列篇--通信协议篇--MQTT(通配式主题,消息服务质量Qos,EMQX的Broker,MqttClient示例,MQTT报文等)
MQTT是一种高效、可靠的轻量级消息协议,特别适用于物联网和移动应用领域。通过发布/订阅模型和 QoS 机制,MQTT 提供了灵活且强大的消息传递能力。无论是简单的设备状态监控还是复杂的分布式系统,MQTT 都能提供有效的解决方案。乘风破浪!Dare to Be!!!
2025-01-27 00:01:40
1310
原创 消息队列篇--扩展篇--码表及编码解码(理解字符字节和二进制,了解ASCII和Unicode,了解UTF-8和UTF-16,了解字符和二进制等具体转化过程等)
字符是文本的基本单位,通过编码标准(如ASCII、Unicode)映射为特定的数值(码点)。字符在计算机中通常存储为字符串的一部分,但也可以单独处理。int是一种基本数据类型,用于表示整数,占用4字节(32位),适用于数值计算、索引数组等场景。字符可以通过强制转换为int来获取其对应的Unicode码点。字节是计算机中最小的可寻址数据单位,由8位组成。字符在计算机中最终以字节形式存储,不同编码方式决定了如何将字符映射为字节序列。
2025-01-26 23:47:46
986
原创 消息队列篇--通信协议篇--AMOP(交换机,队列绑定,消息确认,AMOP实现实例,AMOP报文,帧,AMOP消息传递模式等)
AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一种开放的、跨平台的消息传递协议,旨在提供一种标准化的方式在不同的消息代理和客户端之间进行消息传递。AMQP不仅定义了消息格式和路由机制,还规定了如何建立连接、发送和接收消息等操作。它适用于多种编程语言和平台,并且支持复杂的路由机制。特点:消息是AMQP中传输的基本单位,通常包含两个部分:交换机(Exchange)是AMQP中的一个关键组件,是消息进入消息队列的入口点,负责接收消息并将它们路由到一个或多个队列中
2025-01-25 23:44:21
1184
原创 消息队列篇--通信协议篇--TCP和UDP(3次握手和4次挥手,与Socket和webSocket的概念区别等)
TCP(传输控制协议,Transmission Control Protocol)和UDP(用户数据报协议,User Datagram Protocol)都算是最底层的通信协议,它们位于OSI模型的传输层。*传输层的主要职责是确保数据能够在不同设备之间可靠地传输,并提供端到端的通信服务。*TCP和UDP是两种最常见的传输层协议,它们各自有不同的特点和适用场景。TCP是一种面向连接、可靠的传输协议,适用于需要高可靠性和顺序保证的应用。它提供了流量控制、拥塞控制和重传机制,确保数据的完整性和正确性。
2025-01-24 22:52:13
857
原创 消息队列篇--通信协议篇--网络通信模型(OSI7层参考模型,TCP/IP分层模型)
OSI参考模型将网络通信过程划分为七个层次,每一层都有特定的功能,并与相邻层进行交互。通过这种分层的方式,OSI模型不仅帮助我们理解网络通信的复杂性,还促进了不同网络设备和协议之间的互操作性和标准化。TCP/IP模型是一个用于实现现代互联网通信的实际网络模型,它简化了OSI模型的复杂性,并提供了更为实用的分层结构。TCP/IP模型通常分为四层(应用层、传输层、互联网层、网络接口层),有时也可以进一步细分为五层(增加数据链路层和物理层)。每一层都有特定的功能,并与相邻层进行交互,共同完成网络通信任务。
2025-01-24 22:21:29
1600
原创 消息队列篇--通信协议篇--HTTP(请求体格式,响应体格式,Request和Response对象,ServletContext,Cookie和Session技术等)
HTTP(超文本传输协议:Hyper Text Transfer Protocol)是一种应用层协议,主要用于在Web浏览器和服务器之间传输超文本(如HTML页面),也可以用于服务端与服务端之间的通信。它是一个无状态的请求-响应协议,客户端发送请求,服务器返回响应。
2025-01-23 22:39:11
1325
原创 消息队列篇--原理篇--常见消息队列总结(RabbitMQ,Kafka,ActiveMQ,RocketMQ,Pulsar)
Kafka、Pulsar、RabbitMQ、ActiveMQ和RocketMQ都是非常优秀的消息队列系统,选择哪一个取决于你的具体需求。Pulsar和Kafka在性能和扩展性方面表现出色,适合处理大规模数据流和实时分析;RabbitMQ和ActiveMQ更适合中小规模的应用和企业级需求;RocketMQ则在电商和金融领域表现出色,特别是在需要高可靠性和大规模消息传递的场景中。
2025-01-23 21:13:14
2543
原创 消息队列篇--原理篇--Pulsar和Kafka对比分析
如果你的应用需要:强一致性和多租户支持:Pulsar是更好的选择,特别是在需要跨多个分区的消息顺序保证和多租户支持的场景中,如金融交易、订单处理等。跨地域部署:Pulsar是更好的选择,特别是在需要在全球范围内分布的应用中,或者你需要跨多个数据中心的消息传递。云原生架构:Pulsar适合正在向云原生架构转型的企业,特别是那些已经使用容器化、微服务等现代技术栈的企业。
2025-01-22 22:34:02
1207
原创 消息队列篇--原理篇--RocketMQ和Kafka对比分析
如果你的应用需要:强一致性和事务支持:RocketMQ是更好的选择,特别是在需要严格顺序、事务消息和强一致性的场景中,如金融交易、订单处理等。大数据集成和流处理:Kafka是更好的选择,特别是在需要与Hadoop、Spark、Flink等大数据工具集成的场景中,或者你需要处理大规模数据流和实时分析。易用性和简单的运维:RocketMQ更适合中小规模的应用,尤其是在需要快速上手和简单配置的场景中。由于它不依赖ZooKeeper,运维复杂度较低。
2025-01-22 22:27:59
1562
原创 消息队列篇--原理篇--RabbitMQ和Kafka对比分析
如果你的应用需要:高吞吐量和低延迟:Kafka是更好的选择,特别是在处理大规模数据流和实时分析的场景中。复杂的路由和消息传递模式:RabbitMQ是更好的选择,特别是在需要灵活的消息路由和多种消息传递模式的场景中。易用性和简单的运维:RabbitMQ更适合中小规模的应用,尤其是在需要快速上手和简单配置的场景中。大数据集成:Kafka是更好的选择,特别是在需要与Hadoop、Spark、Flink等大数据工具集成的场景中。
2025-01-21 22:28:15
1531
1
原创 消息队列篇--原理篇--Pulsar(Namespace,BookKeeper,类似Kafka甚至更好的消息队列)
Apache Pulsar是一个功能强大、架构灵活的消息系统,特别适合大规模分布式系统的实时数据处理和异步通信。它的分层架构、多租户支持、持久化和一致性保障、灵活的消息模型等特点,使其在性能、可靠性和可扩展性方面表现出色。Pulsar还拥有丰富的生态系统,支持与其他工具和服务集成,适用于多种应用场景。乘风破浪会有时,直挂云帆济沧海!!!
2025-01-21 22:22:11
1448
原创 消息队列篇--原理篇--RocketMQ(NameServer,Broker,单机上每秒处理数百万条消息性能)
RocketMQ是阿里巴巴开源的一个分布式消息中间件,具有高吞吐量、低延迟和强一致性等特点。它特别适合大规模分布式系统的消息传递,广泛应用于电商、金融、物流等领域的实时数据处理和异步通信。RocketMQ是用Java语言实现,在设计时参考了Kafka,并做出了自己的一些改进,消息可靠性上比Kafka更好。RocketMQ在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理等。
2025-01-20 21:29:12
935
原创 消息队列篇--原理篇--RabbmitMQ(Exchange,消息转换器、docker部署,绑定和确认机制等)
RabbitMQ是一个基于AMQP协议的消息队列系统,支持多种消息传递模式,包括点对点(P2P)、发布/订阅(Pub/Sub)和路由模式。RabbitMQ 的设计目标是提供高可用性、可扩展性和可靠性,适用于企业级应用集成、任务调度、异步处理等场景。
2025-01-20 21:07:06
1063
原创 消息队列篇--基础篇(消息队列特点,应用场景、点对点和发布订阅工作模式,RabbmitMQ和Kafka代码示例等)
消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(MessageQueue,简称MQ)是一种异步通信机制,允许应用程序之间的数据交换通过“消息”进行。生产者将消息发送到消息队列中,无需关心谁来获取消息。消费者从消息队列中读取消息并处理,也无需关心消息的来源。消息队列的核心思想是解耦生产者和消费者,使得它们可以独立运行,而不需要直接交互。
2025-01-19 23:25:53
1155
原创 Mysql--实战篇--@Transactional失效场景及避免策略(@Transactional实现原理,失效场景,内部调用问题等)
在Spring框架中,@Transactional注解用于声明式事务管理,能够简化事务的处理逻辑。然而,在某些情况下,@Transactional可能会失效,导致事务无法按预期工作。了解这些失效场景及其原因,可以帮助你更好地管理和调试事务问题。
2025-01-19 22:57:28
1245
原创 Mysql--实战篇--连接池(连接池原理,HikariCP、C3P0、Druid和DBCP等)
连接池是Java应用程序中与数据库交互的重要组件,能够显著提升性能和资源利用率。通过合理配置连接池的参数,启用连接泄漏检测,使用合适的连接验证策略,并监控连接池的状态,可以确保连接池的高效运行和稳定性。在选择连接池实现时,建议根据你的应用场景和性能需求选择合适的连接池。HikariCP以其高性能和低延迟著称,适合大多数高并发场景;Druid提供了强大的监控和统计功能,适合对数据库性能有较高要求的场景;C3P0和DBCP则适合小型项目或对性能要求不高的场景。乘风破浪会有时,直挂云帆济沧海!!!
2025-01-18 22:28:21
1997
原创 Mysql--实战篇--连接泄漏问题(什么是连接泄漏,未关闭SqlSession,长事务处理,连接池管理等)
连接泄漏是指应用程序未能正确关闭数据库连接,导致连接池中的可用连接逐渐减少,最终耗尽所有连接。连接泄漏可能会导致新的请求无法获得连接,进而引发服务中断。应用程序打开了数据库连接,但没有在使用完毕后正确关闭连接。异常处理不当,导致在发生异常时连接未被关闭。使用了长连接(如事务管理不当),导致连接长时间占用而无法释放。当发生连接泄漏后,连接池中的可用连接数会逐渐减少,最终可能导致所有连接都被占用,新的请求无法获取到连接,从而引发系统故障或性能下降。
2025-01-18 22:12:53
1005
原创 Mysql--实战篇--mybatis cache(一级缓存,二级缓存,子查询主键主查询全部,查询条件加索引,覆盖索引等)
二级缓存是跨多个SqlSession的缓存机制,适用于多个线程或请求之间的数据共享。每个线程请求相同ID时,如果二级缓存中已经存在相应的数据,MyBatis会优先从二级缓存中获取数据,而不是再次查询数据库。多个select语句会共享同一个二级缓存,但MyBatis会根据查询的参数和SQL语句的不同,生成不同的CacheKey,以确保不同的查询不会互相干扰。二级缓存适合用于只读数据,对于频繁更新的数据,使用二级缓存可能会导致数据不一致的问题。
2025-01-17 21:25:39
995
原创 Mysql--实战篇--SELECT * 与SELECT全部字段的区别
虽然SELECT * 和显式列出所有字段在功能上相似,但在实际使用中,显式列出字段具有以下优势:(1)、性能更好:可以通过覆盖索引优化查询,减少I/O操作和网络传输开销。(2)、可维护性更强:代码更清晰,易于理解和调试,且不受表结构变化的影响。(3)、避免潜在问题:减少隐式类型转换的风险,提高缓存命中率,确保查询结果符合预期。因此,除非有特殊需求,否则建议尽量避免使用SELECT *,而是显式列出你需要的字段。这不仅可以提高查询性能,还可以使代码更具可读性和可维护性。
2025-01-17 20:52:06
974
原创 Mysql--实战篇--大数据量表的分页优化(自增长主键,子查询主键主查询全部,查询条件加索引,覆盖索引等)
当Mysql数据表存储大量数据时(百万级别数据),分页查询的性能问题是一个常见的挑战。特别是当使用LIMIT和OFFSET时,随着OFFSET的增加,查询性能会显著下降。原因在于MySQL需要扫描并跳过前面的行,这会导致I/O操作和CPU使用率增加。OFFSET是导致分页查询变慢的主要原因之一。随着OFFSET的增大,MySQL需要扫描并跳过越来越多的行,这会导致查询时间线性增长。因此,应该尽量避免使用OFFSET。
2025-01-16 21:35:23
1289
原创 Mysql--实战篇--读写分离(动态数据源配置,AbstractRoutingDataSource接口,自定义读写注解和AOP切换,ThreadLocal防止多线程问题等)
创建两个自定义注解,分别用于标识读操作和写操作。
2025-01-16 21:05:35
713
原创 Mysql--实战篇--SQL优化(查询优化器,常用的SQL优化方法,执行计划EXPLAIN,Mysql性能调优,慢日志开启和分析等)
SQL查询优化是一个多方面的过程,涉及到索引设计、查询语句编写、表结构调整、数据库配置等多个方面。通过合理使用索引、优化查询语句、调整表结构和数据库配置,可以显著提高查询性能,减少资源消耗,并最终提升系统的响应速度。1、创建合适的索引:使用覆盖索引、组合索引、前缀索引等,确保查询能够高效地使用索引。2、优化查询语句:避免使用SELECT ,使用EXISTS替代IN,使用JOIN替代子查询,避免隐式类型转换,优化分页查询。3、优化表结构:选择合适的数据类型,使用分区表、垂直拆分表、水平拆分表等技术。
2025-01-15 22:28:19
2753
1
原创 Mysql--实战篇--数据库设计(范式和反范式,数据表设计原则)
通过逐步应用范式化的原则,我们可以有效地减少数据冗余、提高数据一致性和可维护性。每个范式级别都解决了特定类型的数据冗余问题。1NF:确保每个字段都是不可再分的基本数据项,并且每个表都有唯一的主键。(即:每个字段仅存储1个值,不能存多个值)2NF:消除非主属性对部分主键的依赖,确保所有非主属性完全依赖于整个主键。(即:组合主键的情况时会出现,一般较少)3NF:消除传递依赖,确保所有非主属性只依赖于主键。(即:间接通过非主键属性才能和主键产生关联的情况)
2025-01-15 21:00:44
1041
原创 Mysql--运维篇--安全性(数据库访问控制,最小权限原则,表空间加密,TLS加密,证书签发,SQL注入及防范等)
MySQL的访问控制是确保数据库安全的重要机制。通过合理的用户权限管理、网络配置和强密码策略,可以有效防止未经授权的访问、篡改和泄露。遵循最小权限原则,为每个用户分配仅限于完成其任务所需的最小权限。定期审查和清理用户权限,确保系统中没有不必要的用户或权限。使用强密码策略,启用密码强度检查并定期更改密码。限制MySQL端口的访问,使用防火墙和SSL/TLS加密保护网络通信。启用日志审计,定期检查日志,及时发现并响应潜在的安全威胁。
2025-01-14 23:12:18
1493
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人