当前位置: 首页 > news >正文

计算机网络安全 —— 对称加密算法 DES (一)

一、对称加密算法概念#

​ 我们通过计算机网络传输数据时,如果无法防止他人窃听, 可以利用密码学技术将发送的数据变换成对任何不知道如何做逆变换的人都不可理解的形式, 从而保证了数据的机密性。这种变换被称为加密( encryption),被加密的数据被称为密 文( ciphertext),而加密前的数据被称为明文( plaintext)。 接收方必须能通过某种逆变换将密文重新变换回原来的明文,该逆变换被称为解密( decryption)。加密和解密过程可以以一个密钥( key)为参数,并且加密和解密过程可以公开, 而只有密钥需要保密。 即只有知道密钥的人才能解密密文,而任何人,即使知道加密或解密算法也无法解密密文。

​ 加密密钥和解密密钥可以相同,也可以不同,取决于采用的是对称密钥密码体制还是公开密钥密码体制

​ 所谓对称密钥密码体制是一种加密密钥与解密密钥相同的密码体制。在这种加密系统中, 两个参与者共享同一个秘密密钥,如果用一个特定的密钥加密一条消息,也必须要使用相同的密钥来解密该消息。该系统又称为对称密钥系统。

​ 数据加密标准( Data Encryption Standard, DES)是对称密钥密码的典型代表,由IBM公司研制,于1977年被美国定为联邦信息标准 。其加密解密基本流程如下图:

img

二、.NET 使用 DES 加密#

​ DES使用的密钥为64 位( 实际密钥长度为56 位,有8位用于奇偶校验)。密码的字节长度不能低于64位(8个字节),下面是实现代码:

  1 using System;2 using System.IO;3 using System.Linq;4 using System.Security.Cryptography;5 using System.Text;6 7 namespace encryption.des8 {9     /// <summary>10     /// DES 加密与解密11     /// DES加密:https://www.zhihu.com/question/3676782912     /// 加密基本知识:https://www.biaodianfu.com/des.html13     /// </summary>14     public class DesAlgorithm15     {16         public Encoding Encoding { get; set; }17         public PaddingMode Padding { get; set; }18         public CipherMode Mode { get; set; }19         public string PassWord { get; private set; }20         private DESCryptoServiceProvider _des;21 22         #region .ctor23 24         public DesAlgorithm()25         {26             _des = new DESCryptoServiceProvider();27             PassWord = Convert.ToBase64String(_des.Key);28             Encoding = Encoding.UTF8;29             Padding = PaddingMode.PKCS7;30             Mode = CipherMode.CBC;31         }32         #endregion33 34 35         /// <summary>36         /// 通过字符串生成新的密钥37         /// </summary>38         /// <param name="password">密码</param>39         /// <returns></returns>40         public DESCryptoServiceProvider CreateNewkey(string password)41         {42             try43             {44                 byte[] buffer = Encoding.GetBytes(password).Skip(0).Take(8).ToArray();45                 _des = new DESCryptoServiceProvider()46                 {47                     Key = buffer,48                     IV=buffer,49                 };50                 PassWord = password;51                 return _des;52             }53             catch (Exception e)54             {55                Console.WriteLine($"Wrong Length:{e.Message},{e.InnerException}");56                return null;57             }58         }59 60         /// <summary>61         /// DES加密62         /// </summary>63         /// <param name="pToEncrypt">需要加密的字符串<see cref="string"/></param>64         /// <returns></returns>65         public string Encrypt(string pToEncrypt)66         {67             byte[] inputByteArray = Encoding.GetBytes(pToEncrypt);68             return Convert.ToBase64String(this.Encrypt(inputByteArray));69         }70 71         /// <summary>72         /// DES加密73         /// </summary>74         /// <param name="pToEncrypt">待加密的byte数组<see cref="byte"/></param>75         /// <returns></returns>76         public byte[] Encrypt(byte[] pToEncrypt)77         {78             byte[] base64 = null;79             using (var ms = new MemoryStream())80             {81                 using (var cs = new CryptoStream(ms, _des.CreateEncryptor(), CryptoStreamMode.Write))82                 {83                     cs.Write(pToEncrypt, 0, pToEncrypt.Length);84                     cs.FlushFinalBlock();85                 }86                 base64 = ms.ToArray();87             }88             return base64;89         }90 91         /// <summary>92         /// DES解密93         /// </summary>94         /// <param name="pToDecrypt">需要解密的字符串</param>95         /// <returns></returns>96         public  string Decrypt(string pToDecrypt)97         {98             byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);99             return Encoding.GetString(this.Decrypt(inputByteArray));
100         }
101 
102         /// <summary>
103         /// DES解密
104         /// </summary>
105         /// <param name="pToDecrypt">待解密的byte数组<see cref="byte"/></param>
106         /// <returns></returns>
107         public byte[] Decrypt(byte[] pToDecrypt)
108         {
109             byte[] data = null;
110             using (var ms = new MemoryStream())
111             {
112                 using (CryptoStream cs = new CryptoStream(ms, _des.CreateDecryptor(), CryptoStreamMode.Write))
113                 {
114                     cs.Write(pToDecrypt, 0, pToDecrypt.Length);
115                     cs.FlushFinalBlock();
116                 }
117                 data = ms.ToArray();
118             }
119             return data;
120         }
121     }
122 }

三、.NET 使用 3DES 加密#

​ DES使用的密钥为64 位,它是一个优秀的密码算法,目前还没有发现比蛮力攻击更好的破解方法。但随着计算机运算速度的快速提高,56位长的密钥已显得太短。56位长的密钥意味着共有256种可能的密钥,也就是说,共约有7. 6 × 1016 种密钥。假设一台计算机1 µ s可执行一次DES加密,同时假定平均只需搜索密钥空间的一半即可找到密钥,那么破译DES要超过1千年。但现在利用并行计算技术已经设计出搜索DES密钥的专用芯片。例如,在1999年有一批在因特网上合作的人借助于一台不到25万美元的专用计算机,在略大于22h的时间就破译了56 位密钥的DES。

​ 为解决DES密钥太短的问题,人们提出了三重DES(Triple DES, 3DES),并在1985年成为美国的一个商用加密标准[ RFC 2420]。3DES在加密时,用三个密钥,执行三次DES算法: 即 E运算 → D运算 → E运算。 解密时,按相反顺序使用这三个密钥,执行D运算 → E运算 → D运算。

​ 3DES目前正在被2001年发布的高级加密标准( Advanced Encryption Standard, AES)所替代。AES能够使用128位、192位和256位长的密钥,用硬件和软件都可以快速实现。它不需要太多内存,因此适用于小型移动设备。美国国家标准与技术研究所NIST估计,如果用1s破解56位DES的计算机来破解一个128位的AES密钥的话,要用大约149万亿年的时间才有可能。

img

​ 3DES 使用现有的DES算法,并且当三个密钥相同时,效果就和DES一样。这有利于逐步推广使用3DES。也可以仅使用两个密钥,即 K1= K3,相当于密钥长度112位,这对于多数商业应用也已经足够长了。下面代码我们采用密钥长度56*3=168位的3EDS算法:

  1 using System;2 using System.IO;3 using System.Linq;4 using System.Security.Cryptography;5 using System.Text;6 7 namespace encryption.des8 {9     /// <summary>10     /// 3DES加密与解密11     /// </summary>12     public class TripleDesAlgorithm13     {14         public Encoding Encoding { get; set; }15         public PaddingMode Padding { get; set; }16         public CipherMode Mode { get; set; }17         public string PassWord { get; private set; }18 19         private TripleDESCng _des;20 21         #region .ctor22 23         public TripleDesAlgorithm()24         {25             _des = new TripleDESCng();26             PassWord = Convert.ToBase64String(_des.Key);27             Encoding = Encoding.UTF8;28             Padding = PaddingMode.PKCS7;29             Mode = CipherMode.CBC;30         }31         #endregion32 33         /// <summary>34         /// 通过字符串生成新的密钥35         /// </summary>36         /// <param name="password">密码</param>37         /// <returns></returns>38         public TripleDESCng CreateNewkey(string password)39         {40             try41             {42                 byte[] key = Encoding.GetBytes(password).Skip(0).Take(24).ToArray();43                 byte[] iv = Encoding.GetBytes(password).Skip(0).Take(8).ToArray();44                 _des = new TripleDESCng()45                 {46                     Key = key,47                     IV = iv,48                 };49                 PassWord = password;50                 return _des;51             }52             catch (Exception e)53             {54                 Console.WriteLine($"Wrong Length:{e.Message},{e.InnerException}");55                 return null;56             }57         }58 59         /// <summary>60         /// 3DES加密61         /// </summary>62         /// <param name="pToEncrypt">需要加密的字符串<see cref="string"/></param>63         /// <returns></returns>64         public string Encrypt(string pToEncrypt)65         {66             byte[] inputByteArray = Encoding.GetBytes(pToEncrypt);67             return Convert.ToBase64String(this.Encrypt(inputByteArray));68         }69 70         /// <summary>71         /// 3DES加密72         /// </summary>73         /// <param name="pToEncrypt">需要加密的byte数组<see cref="byte"/></param>74         /// <returns></returns>75         public byte[] Encrypt(byte[] pToEncrypt)76         {77             byte[] base64 = null;78             using (var ms = new MemoryStream())79             {80                 using (var cs = new CryptoStream(ms, _des.CreateEncryptor(), CryptoStreamMode.Write))81                 {82                     cs.Write(pToEncrypt, 0, pToEncrypt.Length);83                     cs.FlushFinalBlock();84                 }85                 base64 = ms.ToArray();86             }87             return base64;88         }89 90         /// <summary>91         /// 3DES解密92         /// </summary>93         /// <param name="pToDecrypt">需要解密的字符串<see cref="string"/></param>94         /// <returns></returns>95         public string Decrypt(string pToDecrypt)96         {97             byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);98             return Encoding.GetString(this.Decrypt(inputByteArray));99         }
100 
101         /// <summary>
102         /// 3DES解密
103         /// </summary>
104         /// <param name="pToDecrypt">需要解密的byte数组<see cref="byte"/></param>
105         /// <returns></returns>
106         public byte[] Decrypt(byte[] pToDecrypt)
107         {
108             byte[] data = null;
109             using (var ms = new MemoryStream())
110             {
111                 using (CryptoStream cs = new CryptoStream(ms, _des.CreateDecryptor(), CryptoStreamMode.Write))
112                 {
113                     cs.Write(pToDecrypt, 0, pToDecrypt.Length);
114                     cs.FlushFinalBlock();
115                 }
116                 data = (ms.ToArray());
117             }
118             return data;
119         }
120     }
121 }

四、测试代码与效果#

 1         static void Main(string[] args)2         {3             // DES字符串加密与解密4             {5                 Console.WriteLine("-----------------------------------------------------DES字符串加密与解密--------------------------------------------------");6                 var input = "数据加密标准( Data Encryption Standard, DES)是对称密钥密码的典型代表,由IBM公司研制,于1977年被美国定为联邦信息标准 。";7                 Console.Write($"加密内容:\r\n{input}\r\n");8                 var des = new DesAlgorithm();9                 // TEST:可使用该方法通过字符串生成新的密钥
10                 //des.CreateNewkey("https://www.cnblogs.com/dongweian");
11                 Console.WriteLine($"DES密钥:\r\n{des.PassWord}\r\n");
12                 var encrypt = des.Encrypt(input);
13                 Console.WriteLine($"DES加密后内容:\r\n{encrypt}\r\n");
14                 var decrypt = des.Decrypt(encrypt);
15                 Console.WriteLine($"DES解密后内容:\r\n{decrypt}\r\n");
16             }
17 
18             // DES文件加密与解密
19             {
20                 Console.WriteLine("---------------------------------------------------DES文件加密与解密--------------------------------------------------");
21                 var input = System.IO.File.ReadAllBytes(@"C:\Users\97460\Desktop\1.rar");
22                 Console.Write($"加密内容:\r\n{Convert.ToBase64String(input)}\r\n");
23                 var des = new DesAlgorithm();
24                 // TEST:可使用该方法通过字符串生成新的密钥
25                 //des.CreateNewkey("https://www.cnblogs.com/dongweian");
26                 Console.WriteLine($"DES密钥:\r\n{des.PassWord}\r\n");
27                 var encrypt = des.Encrypt(input);
28                 Console.WriteLine($"DES加密后内容:\r\n{Convert.ToBase64String(encrypt)}\r\n");
29                 var decrypt = des.Decrypt(encrypt);
30                 Console.WriteLine($"DES解密后内容:\r\n{Convert.ToBase64String(decrypt)}\r\n");
31                 System.IO.File.WriteAllBytes("1.rar", decrypt);
32             }
33 
34 
35 
36             // 3DES字符串加密与解密
37             {
38                 Console.WriteLine("---------------------------------------------------3DES字符串加密与解密--------------------------------------------------");
39                 var input = "数据加密标准( Data Encryption Standard, DES)是对称密钥密码的典型代表,由IBM公司研制,于1977年被美国定为联邦信息标准 。";
40                 Console.Write($"加密内容:\r\n{input}\r\n");
41                 var des = new TripleDesAlgorithm();
42                 // TEST:可使用该方法通过字符串生成新的密钥
43                 //des.CreateNewkey("https://www.cnblogs.com/dongweian");
44                 Console.WriteLine($"3DES密钥:\r\n{des.PassWord}\r\n");
45                 var encrypt = des.Encrypt(input);
46                 Console.WriteLine($"3DES加密后内容:\r\n{encrypt}\r\n");
47                 var decrypt = des.Decrypt(encrypt);
48                 Console.WriteLine($"DES解密后内容:\r\n{decrypt}\r\n");
49             }
50 
51             // 3DES文件加密与解密
52             {
53                 Console.WriteLine("---------------------------------------------------3DES文件加密与解密--------------------------------------------------");
54                 var input = System.IO.File.ReadAllBytes(@"C:\Users\97460\Desktop\1.rar");
55                 Console.Write($"加密内容:\r\n{Convert.ToBase64String(input)}\r\n");
56                 var des = new TripleDesAlgorithm();
57                 // TEST:可使用该方法通过字符串生成新的密钥
58                 //des.CreateNewkey("https://www.cnblogs.com/dongweian");
59                 Console.WriteLine($"3DES密钥:\r\n{des.PassWord}\r\n");
60                 var encrypt = des.Encrypt(input);
61                 Console.WriteLine($"3DES加密后内容:\r\n{Convert.ToBase64String(encrypt)}\r\n");
62                 var decrypt = des.Decrypt(encrypt);
63                 Console.WriteLine($"3DES解密后内容:\r\n{Convert.ToBase64String(decrypt)}\r\n");
64                 System.IO.File.WriteAllBytes("1.rar", decrypt);
65             }
66             Console.ReadKey();
67         }

img

相关内容:计算机网络安全 —— 非对称加密算法 RSA 和数字签名(二)、计算机网络安全 —— 报文摘要算法 ME5 (三)、计算机网络安全 —— 实体鉴别与生成大随机数(四)

相关文章:

计算机网络安全 —— 对称加密算法 DES (一)

一、对称加密算法概念# ​ 我们通过计算机网络传输数据时&#xff0c;如果无法防止他人窃听&#xff0c; 可以利用密码学技术将发送的数据变换成对任何不知道如何做逆变换的人都不可理解的形式&#xff0c; 从而保证了数据的机密性。这种变换被称为加密&#xff08; encryptio…...

5. ARM_指令集

概述 分类 汇编中的符号&#xff1a; 指令&#xff1a;能够编译生成一条32位机器码&#xff0c;并且能被处理器识别和执行伪指令&#xff1a;本身不是指令&#xff0c;编译器可以将其替换成若干条指令伪操作&#xff1a;不会生成指令&#xff0c;只是在编译阶段告诉编译器怎…...

Jenkins的pipeline Script的 每个组件的详细讲解

在Jenkins的Pipeline脚本中&#xff0c;各个组件的配置和Groovy的一些常用函数起到了决定性的作用&#xff0c;帮助开发人员控制自动化流程的执行。以下是对Jenkins Pipeline的主要组件和Groovy常用函数的详细讲解&#xff1a; 1. Jenkins Pipeline主要组件 1.1 agent 功能&…...

Tomcat 和 Netty 的区别及应用场景分析

在 Java Web 开发中&#xff0c;Tomcat 和 Netty 都是常见的网络框架&#xff0c;它们各自有着不同的设计理念和适用场景。本文将通过详细的对比和实际场景示例&#xff0c;帮助你理解 Tomcat 和 Netty 在功能、性能、架构等方面的差异&#xff0c;帮助你在实际开发中做出更合理…...

6.C操作符详解,深入探索操作符与字符串处理

C操作符详解&#xff0c;深入探索操作符与字符串处理 C语言往期系列文章目录 往期回顾&#xff1a; C语言是什么&#xff1f;编程界的‘常青树’&#xff0c;它的辉煌你不可不知VS 2022 社区版C语言的安装教程&#xff0c;不要再卡在下载0B/s啦C语言入门&#xff1a;解锁基础…...

生数科技发布 Vidu 1.5 新版本,引领视频大模型新潮流

在国内视频大模型领域&#xff0c;生数科技一直以创新和突破而备受瞩目。近日&#xff0c;生数科技再度发力&#xff0c;发布了 Vidu 1.5 新版本&#xff0c;为视频创作带来了全新的变革与机遇。 Vidu 1.5 新版本在多个方面展现出了卓越的性能和创新的特点。首先&#xff0c;它…...

CentOS 7 aarch64停止更新后安装gcc8 —— 筑梦之路

CentOS 7.9非X86架构系统生命周期结束后&#xff08;2024-6-30&#xff09;配置在线可用yum源 —— 筑梦之路_centos7.9 arm-CSDN博客 以前的做法 sudo yum install centos-release-scl-rh sudo yum install devtoolset-8-buildsudo yum install devtoolset-8-gdb sudo yum i…...

WPF下 DataGrid加入序号列

先上代码&#xff1a; <DataGrid Name"DGV" AutoGenerateColumns"False" Grid.Row"0" Grid.Column"0" HorizontalGridLinesBrush"RoyalBlue" VerticalGridLinesBrush"Tomato" CanUserAddRows"False&qu…...

iOS UI 自动化 手势右滑退出当前页面

1、TouchAction from appium.webdriver.common.touch_action import TouchAction# 获取屏幕的宽度和高度 screen_width driver.get_window_size()["width"] screen_height driver.get_window_size()["height"]# 定义滑动的起点和终点坐标 start_x 0 en…...

《MySQL 实战教程:从零开始到高手进阶》

当然可以。下面是一篇关于MySQL的学习指南&#xff0c;它适合初学者到中级用户&#xff0c;涵盖了MySQL的基础知识、安装步骤、基本命令以及一些高级功能。 MySQL 学习指南 1. 了解 MySQL MySQL 是一个关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典…...

第27天 安全开发-PHP应用TP 框架路由访问对象操作内置过滤绕过核心漏洞

时间轴 演示案例 TP 框架-开发-配置架构&路由&MVC 模型 TP 框架-安全-不安全写法&版本过滤绕过 TP 框架-开发-配置架构&路由&MVC 模型 参考&#xff1a; https://www.kancloud.cn/manual/thinkphp5_1 1、配置架构-导入使用 去thinkphp官网可以看到&…...

应用系统开发(12) Zync中实现数字相敏检波

在 Xilinx Zynq 系列(如 Zynq-7000 或 Zynq UltraScale+)中实现数字相敏检波(DSP,Digital Synchronous Detection)可以通过硬件(PL部分,FPGA逻辑)和软件(PS部分,ARM Cortex-A 处理器)的协同工作来实现。以下是一个详细的设计方法,包括基本原理和 Zynq 的实现步骤。…...

栈Stack和队列Queue

目录 一、栈 &#xff08;1&#xff09;用数组实现 &#xff08;2&#xff09;用单链表实现 &#xff08;3&#xff09;用标注尾结点的单链表实现 &#xff08;4&#xff09;用双向链表实现 2、栈的实际应用 &#xff08;1&#xff09;改变元素的序列 &#xff08;2&am…...

uniapp 微信小程序地图标记点、聚合点/根据缩放重合点,根据缩放登记显示气泡marik标点

如图&#xff0c;如果要实现上方的效果&#xff1a; 上方两个效果根据经纬度标记点缩放后有重复点会添加数量 用到的文档地址https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.addMarkers.htmlMapContext.addMarkers(Object object) 添加标记点Ma…...

Percona XtraBackup备份docker版本mysql 5.7

my.cnf配置文件 [client] default_character_setutf8[mysqld] # 数据存储目录&#xff08;必须手动指定&#xff09; datadir/var/lib/mysql/data# 字符集 collation_server utf8_general_ci character_set_server utf8 # 二进制日志 server-id1 log_bin/var/log/mysql/binl…...

C++:关联式容器的介绍及map与set的使用

我们之前已经学习过string,vector,list,queue,priority_queue等容器&#xff0c;这些容器我们统称为序列式容器&#xff0c;因为它们的数据的逻辑结构呈线性。因为这些容器中存储的数据即便二者之间发生交换&#xff0c;也不会对原有的容器结构造成太大影响。 但上篇文章我们介…...

一文说清:Linux下C++静态库的封装和调用

一 引言 《一文说清&#xff1a;windows下C静态库的封装和调用》中说了&#xff1a; 静态库允许开发者在多个项目中复用代码&#xff0c;减少重复劳动&#xff0c;并增强程序的可维护性。并讲述了windows环境下创建、封装以及调用C静态库的过程。 本文则描述了&#xff0c;如…...

【Java 学习】数据类型、变量、运算符、条件控制语句

Java基础语法 1. 打印 Hello World !2. 变量类和数据类型2.1 什么是变量&#xff1f;什么是数据类型&#xff1f;2.2 常用的数据类型2.3 使用变量2.4 String 类数据类型2.4.1 String 类基本概念2.4.2 String 类的使用 3. 运算符3.1 算数运算符3.2 关系运算符3.3 逻辑运算符3.4 …...

【软考】系统架构设计师-数据库设计基础

数据库核心考点 三级模式-两级映射 外模式--视图 概念模式--表&#xff08;模式、基本表&#xff09; 内模式--物理文件 数据库设计 概念结构设计&#xff1a;属性冲突、命名冲突、结构冲突 逻辑结构设计&#xff1a;关系模式&#xff08;层次模型、网络模型&#xff09…...

【Jmeter相关】

Jmeter 可以作为接口测试问题&#xff0c;也会涉及到性能相关的问题 一、JMeter中用户定义的变量(User Defined Variables&#xff09;和用户参 数&#xff08;User Parameters&#xff09;的区别是什么? 在JMeter中都是用于定义和存储测试数据的方法&#xff0c;但它们有一…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...