diff --git "a/\345\202\205\344\277\212\346\235\260/20241115-\347\254\224\350\256\260\344\273\245\345\217\212\344\275\234\344\270\232.md" "b/\345\202\205\344\277\212\346\235\260/20241115-\347\254\224\350\256\260\344\273\245\345\217\212\344\275\234\344\270\232.md"
index 3cdef41254058255722175de249b07236cf5a772..c8896dca51a19b6c1bf03b3ee2d4c5d8f8f9fcac 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241115-\347\254\224\350\256\260\344\273\245\345\217\212\344\275\234\344\270\232.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241115-\347\254\224\350\256\260\344\273\245\345\217\212\344\275\234\344\270\232.md"
@@ -1,9 +1,9 @@
-#### 笔记
-
-* 1、dotnet new mvc -o 名 cd 名 Views->Home->项目名.cshtml Controllers引用项目方法名
-* 2、wwwroot->css->建项目名.css->写样式
-* 3、.cshtml里用link引用样式 href="~/css/项目名.css"
-* 4、dotnet run --project 名
-* 5、ctrl+c 结束任务
-#### 作业
+#### 笔记
+
+* 1、dotnet new mvc -o 名 cd 名 Views->Home->项目名.cshtml Controllers引用项目方法名
+* 2、wwwroot->css->建项目名.css->写样式
+* 3、.cshtml里用link引用样式 href="~/css/项目名.css"
+* 4、dotnet run --project 名
+* 5、ctrl+c 结束任务
+#### 作业

\ No newline at end of file
diff --git "a/\345\202\205\344\277\212\346\235\260/20241119-MVC\347\273\203\344\271\240.md" "b/\345\202\205\344\277\212\346\235\260/20241119-MVC\347\273\203\344\271\240.md"
index 8e0ba12818d58b6772ee44698400a3268c9b0768..8c107ec2f1a34ebec86110abd8649a1448d146d0 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241119-MVC\347\273\203\344\271\240.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241119-MVC\347\273\203\344\271\240.md"
@@ -1,86 +1,86 @@
-#### 笔记
-使用[FromBody]属性来接收数据
-```cs
-[HttpPost]
-public IActionResult Create([FromBody] Item item)
-{
- return View();
-}
-```
-#### MVC练习
-1. 创建一个控制台项目,没有任何选项,体会项目名称和什么有关系
- * 项目名称 MyConsoleApp 是项目的唯一标识符,它决定了生成的程序集名称、命名空间以及输出的可执行文件的名称。
- * dotnet new console -n Blog
-2. 创建一个控制项目,项目名称Blog
- * dotnet new console -n Blog
-3. 创建一个控制台项目,输出到Blog目录
- * dotnet new console -o Blog
-4. 创建一个MVC项目,指定项目名称
- * dotnet new mvc -n Blog
-5. 创建一个MVC项目,指定输出目录
- * dotnet new mvc -o Blog
-6. 创建一个带解决方案,其下有一个MVC项目,3个类库项目的“综合项目”
- * dotnet new sln -n Blog
- * dotnet new mvc -n Blog
- * dotnet new classlib -n Bg1
- * dotnet new classlib -n Bg2
- * dotnet new classlib -n Bg3
-7. 创建一个项目,在默认控制器(Home)下,新增一个Action方法,名为Ok,同时为其创建对应视图以显示这个视图
-```cs
-public IActionResult Ok()
- {
- return View();
- }
-```
-8. 创建一个项目,创建一个新的控制器,名为Blogs,新的控制器拥有一个名为Index的Action,该方法返回一个视图,视图显示“神级预判”
-```cs
-using Microsoft.AspNetCore.Mvc;
-namespace Blog.Controllers;
-public class BlogsController : Controller
-{
- public IActionResult Index()
- {
- return Content("神级预判");
- }
-}
-```
-9. 给第8题的新控制,添加一个新的Action,名为Music,不接受任何参数,并返回对应的视图,视图显示“顶级打野”
-```cs
-public IActionResult Index()
- {
- return Content("顶级打野");
- }
-```
-10. 给第8题的新控制器,新增一个Action,名为List,不接受任何参数,并返回对应视图,视图显示一个经典CRUD界面
-```cs
- public IActionResult List()
- {
- return View();
- }
-
经典CRUD界面
-```
-11. 新增一个控制器,名为Products,该控制器具有一个名为Edit的Action,这个Action接受一个int类型的参数id,显示这个id
-```cs
-using Microsoft.AspNetCore.Mvc;
-namespace Blog.Controllers;
-public class ProductsController : Controller
-{
- public IActionResult Edit(int id)
- {
- return Content($`ID:{id}`);
- }
-}
-```
-12. 在11题的新控制器中,新增一个名为Create的Action,该Action接受一个类型为Students(有姓名、年龄、体长属性)的参数,并展示该参数的姓名属性
-```cs
- public IActionResult Create([FromBody] Students stu)
- {
- return Content(stu.Name)
- }
- public class Students
- {
- public string Name { get; set; } = null!;
- public int Age { get; set; } = null!;
- public string Witch { get; set; } = null!;
- }
+#### 笔记
+使用[FromBody]属性来接收数据
+```cs
+[HttpPost]
+public IActionResult Create([FromBody] Item item)
+{
+ return View();
+}
+```
+#### MVC练习
+1. 创建一个控制台项目,没有任何选项,体会项目名称和什么有关系
+ * 项目名称 MyConsoleApp 是项目的唯一标识符,它决定了生成的程序集名称、命名空间以及输出的可执行文件的名称。
+ * dotnet new console -n Blog
+2. 创建一个控制项目,项目名称Blog
+ * dotnet new console -n Blog
+3. 创建一个控制台项目,输出到Blog目录
+ * dotnet new console -o Blog
+4. 创建一个MVC项目,指定项目名称
+ * dotnet new mvc -n Blog
+5. 创建一个MVC项目,指定输出目录
+ * dotnet new mvc -o Blog
+6. 创建一个带解决方案,其下有一个MVC项目,3个类库项目的“综合项目”
+ * dotnet new sln -n Blog
+ * dotnet new mvc -n Blog
+ * dotnet new classlib -n Bg1
+ * dotnet new classlib -n Bg2
+ * dotnet new classlib -n Bg3
+7. 创建一个项目,在默认控制器(Home)下,新增一个Action方法,名为Ok,同时为其创建对应视图以显示这个视图
+```cs
+public IActionResult Ok()
+ {
+ return View();
+ }
+```
+8. 创建一个项目,创建一个新的控制器,名为Blogs,新的控制器拥有一个名为Index的Action,该方法返回一个视图,视图显示“神级预判”
+```cs
+using Microsoft.AspNetCore.Mvc;
+namespace Blog.Controllers;
+public class BlogsController : Controller
+{
+ public IActionResult Index()
+ {
+ return Content("神级预判");
+ }
+}
+```
+9. 给第8题的新控制,添加一个新的Action,名为Music,不接受任何参数,并返回对应的视图,视图显示“顶级打野”
+```cs
+public IActionResult Index()
+ {
+ return Content("顶级打野");
+ }
+```
+10. 给第8题的新控制器,新增一个Action,名为List,不接受任何参数,并返回对应视图,视图显示一个经典CRUD界面
+```cs
+ public IActionResult List()
+ {
+ return View();
+ }
+ 经典CRUD界面
+```
+11. 新增一个控制器,名为Products,该控制器具有一个名为Edit的Action,这个Action接受一个int类型的参数id,显示这个id
+```cs
+using Microsoft.AspNetCore.Mvc;
+namespace Blog.Controllers;
+public class ProductsController : Controller
+{
+ public IActionResult Edit(int id)
+ {
+ return Content($`ID:{id}`);
+ }
+}
+```
+12. 在11题的新控制器中,新增一个名为Create的Action,该Action接受一个类型为Students(有姓名、年龄、体长属性)的参数,并展示该参数的姓名属性
+```cs
+ public IActionResult Create([FromBody] Students stu)
+ {
+ return Content(stu.Name)
+ }
+ public class Students
+ {
+ public string Name { get; set; } = null!;
+ public int Age { get; set; } = null!;
+ public string Witch { get; set; } = null!;
+ }
```
\ No newline at end of file
diff --git "a/\345\202\205\344\277\212\346\235\260/20241119-linux\347\273\203\344\271\240.md" "b/\345\202\205\344\277\212\346\235\260/20241119-linux\347\273\203\344\271\240.md"
index de50b068d7ad46a7649759c567e5e7a556c7cb82..6e7f84a18f2651f34962f9c0a78839a58160d721 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241119-linux\347\273\203\344\271\240.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241119-linux\347\273\203\344\271\240.md"
@@ -1,130 +1,130 @@
-### Linux练习
-
-
-1. 任务:尝试使用以下几种方式分别登录服务器,说明它们分别的注意事项,并说明它们之间的区别
-
- - ssh客户端
- 1. 确保拥有服务器的SSH IP地址和端口号。
- 2. 输入正确的用户名和密码。
- 3. 根据个人喜好设置字符集、字体样式及大小、窗口保存的内容行数等。
- 4. 设置自动保持连接,以免服务器长时间没有收到数据包而自动断开SSH连接。
-
- - tabby应用
- 1. Tabby支持多平台,确保下载适合自己操作系统的版本。
- 2. Tabby自带SFTP功能,可以用于文件传输。
- 3. 在设置SSH连接时,需要填写终端名称、IP地址、端口号、账号密码等信息。
- 4. Tabby支持插件,可以根据需要安装和配置插件以增强功能。
-
- - xShell
- 1. XShell主要支持Windows系统。
- 2. 设置不间断连接,以防止服务器因长时间无操作而断开连接。
- 3. 关闭响铃和X11,特别是在免费版本中,以避免提示购买Xmanager。
- 4. 可以调整视图设置和主题设置,以适应个人偏好。
-
- - putty
- 1. PuTTY支持WIN和MAC系统,确保下载适合自己操作系统的版本。
- 2. 修改字符集解决中文乱码问题。
- 3. 修改字体样式及大小,以及窗口保存的内容行数。
- 4. 设置自动保持连接,以维持SSH连接的稳定性。
-
-2. 任务:更新软件源,命令:apt update,并了解这一步的实际用处和意义
-
-3. 任务:更新软件和补丁,命令:apt upgrade -y,并了解这一步的实际用处意义
-
-4. 任务:熟悉并完成以下练习
-
- ```
- 1.查看当前目录下的文件和文件夹
- 命令:ls
-
- 2.查看当前路径
-
- 命令:pwd
-
- 3.创建一个新的文件夹
-
- 命令:mkdir [文件夹名]
-
- 4.删除一个文件夹
-
- 命令:rmdir [文件夹名](注意:只能删除空文件夹)
-
- 5.移动或重命名文件/文件夹
-
- 命令:mv [原路径] [新路径]
-
- 6.复制文件
-
- 命令:cp [源文件] [目标路径]
-
- 7.删除文件
-
- 命令:rm [文件名]
-
- 8.查看文件内容
-
- 命令:cat [文件名]
-
- 9.分页查看文件内容
-
- 命令:less [文件名]
-
- 10.查找文件
-
- 命令:find / -name [文件名]
-
- 11.查看文件权限
-
- 命令:ls -l [文件或目录名]
-
- 12.改变文件权限
-
- 命令:chmod [权限] [文件或目录名]
-
- 13.改变文件所有者
-
- 命令:chown [新所有者] [文件或目录名]
-
- 14.查看当前登录用户
-
- 命令:whoami
-
- 15.查看系统运行时间和平均负载
-
- 命令:uptime
-
- 16.查看磁盘使用情况
-
- 命令:df -h
-
- 17.查看当前路径下的隐藏文件
-
- 命令:ls -a
-
- 18.创建一个空文件
-
- 命令:touch [文件名]
-
- 19.查看当前系统的内核版本
-
- 命令:uname -r
-
- 20.查看网络连接状态
-
- 命令:ifconfig 或 ip addr
-
- 21.安装一个软件包
-
- 命令:sudo apt-get install [软件包名]
-
- 22.卸载一个软件包
-
- 命令:sudo apt-get remove [软件包名]
-
- 23.更新软件包列表
-
- 命令:sudo apt-get update
- ```
-
-5. 在服务器上安装SDK环境
-
+### Linux练习
+
+
+1. 任务:尝试使用以下几种方式分别登录服务器,说明它们分别的注意事项,并说明它们之间的区别
+
+ - ssh客户端
+ 1. 确保拥有服务器的SSH IP地址和端口号。
+ 2. 输入正确的用户名和密码。
+ 3. 根据个人喜好设置字符集、字体样式及大小、窗口保存的内容行数等。
+ 4. 设置自动保持连接,以免服务器长时间没有收到数据包而自动断开SSH连接。
+
+ - tabby应用
+ 1. Tabby支持多平台,确保下载适合自己操作系统的版本。
+ 2. Tabby自带SFTP功能,可以用于文件传输。
+ 3. 在设置SSH连接时,需要填写终端名称、IP地址、端口号、账号密码等信息。
+ 4. Tabby支持插件,可以根据需要安装和配置插件以增强功能。
+
+ - xShell
+ 1. XShell主要支持Windows系统。
+ 2. 设置不间断连接,以防止服务器因长时间无操作而断开连接。
+ 3. 关闭响铃和X11,特别是在免费版本中,以避免提示购买Xmanager。
+ 4. 可以调整视图设置和主题设置,以适应个人偏好。
+
+ - putty
+ 1. PuTTY支持WIN和MAC系统,确保下载适合自己操作系统的版本。
+ 2. 修改字符集解决中文乱码问题。
+ 3. 修改字体样式及大小,以及窗口保存的内容行数。
+ 4. 设置自动保持连接,以维持SSH连接的稳定性。
+
+2. 任务:更新软件源,命令:apt update,并了解这一步的实际用处和意义
+
+3. 任务:更新软件和补丁,命令:apt upgrade -y,并了解这一步的实际用处意义
+
+4. 任务:熟悉并完成以下练习
+
+ ```
+ 1.查看当前目录下的文件和文件夹
+ 命令:ls
+
+ 2.查看当前路径
+
+ 命令:pwd
+
+ 3.创建一个新的文件夹
+
+ 命令:mkdir [文件夹名]
+
+ 4.删除一个文件夹
+
+ 命令:rmdir [文件夹名](注意:只能删除空文件夹)
+
+ 5.移动或重命名文件/文件夹
+
+ 命令:mv [原路径] [新路径]
+
+ 6.复制文件
+
+ 命令:cp [源文件] [目标路径]
+
+ 7.删除文件
+
+ 命令:rm [文件名]
+
+ 8.查看文件内容
+
+ 命令:cat [文件名]
+
+ 9.分页查看文件内容
+
+ 命令:less [文件名]
+
+ 10.查找文件
+
+ 命令:find / -name [文件名]
+
+ 11.查看文件权限
+
+ 命令:ls -l [文件或目录名]
+
+ 12.改变文件权限
+
+ 命令:chmod [权限] [文件或目录名]
+
+ 13.改变文件所有者
+
+ 命令:chown [新所有者] [文件或目录名]
+
+ 14.查看当前登录用户
+
+ 命令:whoami
+
+ 15.查看系统运行时间和平均负载
+
+ 命令:uptime
+
+ 16.查看磁盘使用情况
+
+ 命令:df -h
+
+ 17.查看当前路径下的隐藏文件
+
+ 命令:ls -a
+
+ 18.创建一个空文件
+
+ 命令:touch [文件名]
+
+ 19.查看当前系统的内核版本
+
+ 命令:uname -r
+
+ 20.查看网络连接状态
+
+ 命令:ifconfig 或 ip addr
+
+ 21.安装一个软件包
+
+ 命令:sudo apt-get install [软件包名]
+
+ 22.卸载一个软件包
+
+ 命令:sudo apt-get remove [软件包名]
+
+ 23.更新软件包列表
+
+ 命令:sudo apt-get update
+ ```
+
+5. 在服务器上安装SDK环境
+
diff --git "a/\345\202\205\344\277\212\346\235\260/20241121-mvc\347\254\224\350\256\260.md" "b/\345\202\205\344\277\212\346\235\260/20241121-mvc\347\254\224\350\256\260.md"
index eb531c15a36f6c304b81b80cab8e73c55f6e3fa3..beff352ff03115091dbee1a5020077430ac4349f 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241121-mvc\347\254\224\350\256\260.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241121-mvc\347\254\224\350\256\260.md"
@@ -1,9 +1,9 @@
-#### 笔记
-使用[FromBody]属性来接收数据
-```cs
-[HttpPost]
-public IActionResult Create([FromBody] Item item)
-{
- return View();
-}
+#### 笔记
+使用[FromBody]属性来接收数据
+```cs
+[HttpPost]
+public IActionResult Create([FromBody] Item item)
+{
+ return View();
+}
```
\ No newline at end of file
diff --git "a/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\345\237\272\347\241\200\350\203\275\345\212\233.md" "b/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\345\237\272\347\241\200\350\203\275\345\212\233.md"
index 6023f429998c4a06b9bae9d0c8d93eef3c52065d..8d39f8ffed0802fe55c2b3f9dfd9659fb7580d19 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\345\237\272\347\241\200\350\203\275\345\212\233.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\345\237\272\347\241\200\350\203\275\345\212\233.md"
@@ -1,110 +1,110 @@
-#### 专项练习-基础能力
-
-1. 生成一个随机整数,范围[0,100],注意是否包含
-```cs
-public IActionResult Number()
- {
- int number =new Random.Next(0, 101);//[0,100]
- return Contene($"随机数:{number}");
- }
-```
-2. 生成一个随机整数,范围(0,100],注意是否包含
-```cs
-public IActionResult Number_2()
- {
- int number2 =new Random.Next(1, 101);//(0,100]
- return Contene($"随机数:{number2}");
- }
-```
-3. 生成10个随机整数,范围[5,80],注意是否包含
-```cs
-public IActionResult Number_3()
- {
- List number3 = new List();
- for (int i = 0; i < 10; i++)
- {
- number3.Add(new Random().Next(5, 81));
- }
- return View(number3);
- }
-```
-4. 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串
-```cs
-public IActionResult Number_4()
- {
- string cn = "阳光灿烂大地暖绿草如茵花娇艳山河壮丽美如画蓝天白云映水面飞鸟翱翔鱼欢跃春夏秋冬四季转日月星辰耀九天男女老少笑开颜手脚并用勤劳作口耳相传智慧添红黄蓝绿色彩艳大小高低各不同多少长短有分别快慢动静皆自然风雨雷电显神奇木石水火有妙用衣食住行不可少喜怒哀乐情万千诗词歌赋韵味长琴棋书画雅趣生仁义礼智信为本忠孝廉耻心中存团结友爱力量大互帮互助共前行努力奋斗创未来幸福生活乐无边";
- int ch = new Random().Next(0, cn.Length);
- return Content($"随机字符:{cn[ch].ToString()}");
- }
-```
-5. 定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符
-```cs
-public IActionResult Number_5()
- {
- string cn = "阳光灿烂大地暖绿草如茵花娇艳山河壮丽美如画蓝天白云映水面飞鸟翱翔鱼欢跃春夏秋冬四季转日月星辰耀九天男女老少笑开颜手脚并用勤劳作口耳相传智慧添红黄蓝绿色彩艳大小高低各不同多少长短有分别快慢动静皆自然风雨雷电显神奇木石水火有妙用衣食住行不可少喜怒哀乐情万千诗词歌赋韵味长琴棋书画雅趣生仁义礼智信为本忠孝廉耻心中存团结友爱力量大互帮互助共前行努力奋斗创未来幸福生活乐无边";
- int len = new Random().Next(5, 51);
- string str = new string(cn.OrderBy(x => new Random().Next()).Take(len).ToArray());
-
- return Content($"随机字符:{str}");
- }
-```
-6. 定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名
-```cs
-public class Program
-{
- private static readonly string[] Surnames = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈" }; // 示例姓氏
- private static readonly string[] ChineseCharacters = { "伟", "刚", "勇", "毅", "俊", "峰", "强", "军", "平", "保" }; // 示例中文字符
-
- public static void Main()
- {
- Random random = new Random();
- string surname = Surnames[random.Next(Surnames.Length)];
- int nameLength = random.Next(1, 3); // 随机生成1或2个字符
- string name = string.Concat(Enumerable.Range(0, nameLength).Select(_ => ChineseCharacters[random.Next(ChineseCharacters.Length)]));
- string fullName = surname + name;
-
- Console.WriteLine($"随机生成的姓名: {fullName}");
- }
-}
-```
-7. 利用以上方法,随机生成100个BlogCreateDto类型(有Title、Author、Content属性)的对象,其中的内容都是随机生成且长度不定,并将其渲染到视图
-```cs
- public class BlogCreateDto
-{
- public string Title { get; set; }
- public string Author { get; set; }
- public string Content { get; set; }
-}
-
- private static readonly string[] Surnames = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈" }; // 示例姓氏
- private static readonly string[] ChineseCharacters = { "伟", "刚", "勇", "毅", "俊", "峰", "强", "军", "平", "保" }; // 示例中文字符
- private static readonly string[] SampleTitles = { "如何学习编程", "ASP.NET MVC教程", "C#高级特性", "前端开发技巧", "数据库优化" }; // 示例标题
- private static readonly string[] SampleContents = { "本文介绍了如何学习编程...", "ASP.NET MVC是一个强大的框架...", "C#语言有许多高级特性...", "前端开发需要掌握多种技术...", "数据库优化可以提高性能..." }; // 示例内容
-
- private static readonly Random random = new Random();
-
- public ActionResult Index()
- {
- List blogs = new List();
- for (int i = 0; i < 100; i++)
- {
- blogs.Add(GenerateRandomBlog());
- }
- return View(blogs);
- }
-
- private BlogCreateDto GenerateRandomBlog()
- {
- string surname = Surnames[Random.Next(Surnames.Length)];
- int nameLength = Random.Next(1, 3); // 随机生成1或2个字符
- string name = string.Concat(Enumerable.Range(0, nameLength).Select(_ => ChineseCharacters[random.Next(ChineseCharacters.Length)]));
- string fullName = surname + name;
-
- return new BlogCreateDto
- {
- Title = SampleTitles[Random.Next(SampleTitles.Length)],
- Author = fullName,
- Content = SampleContents[Random.Next(SampleContents.Length)]
- };
- }
+#### 专项练习-基础能力
+
+1. 生成一个随机整数,范围[0,100],注意是否包含
+```cs
+public IActionResult Number()
+ {
+ int number =new Random.Next(0, 101);//[0,100]
+ return Contene($"随机数:{number}");
+ }
+```
+2. 生成一个随机整数,范围(0,100],注意是否包含
+```cs
+public IActionResult Number_2()
+ {
+ int number2 =new Random.Next(1, 101);//(0,100]
+ return Contene($"随机数:{number2}");
+ }
+```
+3. 生成10个随机整数,范围[5,80],注意是否包含
+```cs
+public IActionResult Number_3()
+ {
+ List number3 = new List();
+ for (int i = 0; i < 10; i++)
+ {
+ number3.Add(new Random().Next(5, 81));
+ }
+ return View(number3);
+ }
+```
+4. 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串
+```cs
+public IActionResult Number_4()
+ {
+ string cn = "阳光灿烂大地暖绿草如茵花娇艳山河壮丽美如画蓝天白云映水面飞鸟翱翔鱼欢跃春夏秋冬四季转日月星辰耀九天男女老少笑开颜手脚并用勤劳作口耳相传智慧添红黄蓝绿色彩艳大小高低各不同多少长短有分别快慢动静皆自然风雨雷电显神奇木石水火有妙用衣食住行不可少喜怒哀乐情万千诗词歌赋韵味长琴棋书画雅趣生仁义礼智信为本忠孝廉耻心中存团结友爱力量大互帮互助共前行努力奋斗创未来幸福生活乐无边";
+ int ch = new Random().Next(0, cn.Length);
+ return Content($"随机字符:{cn[ch].ToString()}");
+ }
+```
+5. 定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符
+```cs
+public IActionResult Number_5()
+ {
+ string cn = "阳光灿烂大地暖绿草如茵花娇艳山河壮丽美如画蓝天白云映水面飞鸟翱翔鱼欢跃春夏秋冬四季转日月星辰耀九天男女老少笑开颜手脚并用勤劳作口耳相传智慧添红黄蓝绿色彩艳大小高低各不同多少长短有分别快慢动静皆自然风雨雷电显神奇木石水火有妙用衣食住行不可少喜怒哀乐情万千诗词歌赋韵味长琴棋书画雅趣生仁义礼智信为本忠孝廉耻心中存团结友爱力量大互帮互助共前行努力奋斗创未来幸福生活乐无边";
+ int len = new Random().Next(5, 51);
+ string str = new string(cn.OrderBy(x => new Random().Next()).Take(len).ToArray());
+
+ return Content($"随机字符:{str}");
+ }
+```
+6. 定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名
+```cs
+public class Program
+{
+ private static readonly string[] Surnames = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈" }; // 示例姓氏
+ private static readonly string[] ChineseCharacters = { "伟", "刚", "勇", "毅", "俊", "峰", "强", "军", "平", "保" }; // 示例中文字符
+
+ public static void Main()
+ {
+ Random random = new Random();
+ string surname = Surnames[random.Next(Surnames.Length)];
+ int nameLength = random.Next(1, 3); // 随机生成1或2个字符
+ string name = string.Concat(Enumerable.Range(0, nameLength).Select(_ => ChineseCharacters[random.Next(ChineseCharacters.Length)]));
+ string fullName = surname + name;
+
+ Console.WriteLine($"随机生成的姓名: {fullName}");
+ }
+}
+```
+7. 利用以上方法,随机生成100个BlogCreateDto类型(有Title、Author、Content属性)的对象,其中的内容都是随机生成且长度不定,并将其渲染到视图
+```cs
+ public class BlogCreateDto
+{
+ public string Title { get; set; }
+ public string Author { get; set; }
+ public string Content { get; set; }
+}
+
+ private static readonly string[] Surnames = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈" }; // 示例姓氏
+ private static readonly string[] ChineseCharacters = { "伟", "刚", "勇", "毅", "俊", "峰", "强", "军", "平", "保" }; // 示例中文字符
+ private static readonly string[] SampleTitles = { "如何学习编程", "ASP.NET MVC教程", "C#高级特性", "前端开发技巧", "数据库优化" }; // 示例标题
+ private static readonly string[] SampleContents = { "本文介绍了如何学习编程...", "ASP.NET MVC是一个强大的框架...", "C#语言有许多高级特性...", "前端开发需要掌握多种技术...", "数据库优化可以提高性能..." }; // 示例内容
+
+ private static readonly Random random = new Random();
+
+ public ActionResult Index()
+ {
+ List blogs = new List();
+ for (int i = 0; i < 100; i++)
+ {
+ blogs.Add(GenerateRandomBlog());
+ }
+ return View(blogs);
+ }
+
+ private BlogCreateDto GenerateRandomBlog()
+ {
+ string surname = Surnames[Random.Next(Surnames.Length)];
+ int nameLength = Random.Next(1, 3); // 随机生成1或2个字符
+ string name = string.Concat(Enumerable.Range(0, nameLength).Select(_ => ChineseCharacters[random.Next(ChineseCharacters.Length)]));
+ string fullName = surname + name;
+
+ return new BlogCreateDto
+ {
+ Title = SampleTitles[Random.Next(SampleTitles.Length)],
+ Author = fullName,
+ Content = SampleContents[Random.Next(SampleContents.Length)]
+ };
+ }
```
\ No newline at end of file
diff --git "a/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" "b/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md"
index 21693b3dd829c89ebd8846505c2aa1671a6ebe09..b5d3a5296c2e1d955583fd6e4c21bcb17ad6bbf4 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md"
@@ -1,88 +1,88 @@
-#### 笔记
-渲染视图
-```csharp
-public IActionResult Index()
-{
- return View();
-}
-```
-#### 专项练习-控制器传参
-
-1. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名
-
-```cs
-public IActionResult Index(int id)
- {
- return View();
- }
-```
-
-2. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名
-
-```cs
-public string Index_2(int id)
- {
- return id.ToString();
- }
-```
-
-3. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名
-
-```cs
-public IActionResult Index_3([FromBody]Student stu)
- {
- return Content(stu.Name);
- }
- public class Student
- {
- public string Name { get; set; } = null!;
- }
-```
-
-4. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名
- > PS BlogCreateDto类型具有Title、Author、Content自动属性
- >
-```cs
-public IActionResult Create([FromBody] BlogCreateDto blogCreateDto)
- {
- return View();
- }
- public class BlogCreateDto
- {
- public string Title { get; set; } = null!;
- public string Author { get; set; } = null!;
- public string Content { get; set; } = null!;
- }
-```
-
-5. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action,并且传递一个Products类型的值,productCreateDto为变量名
- > PS Products类型具有Name、Price、Stock自动属性
- >
-```cs
-public IActionResult Create([FromBody] Products productCreateDto)
- {
- return View();
- }
- public class Products
- {
- public string Name { get; set; } = null!;
- public string Price { get; set; } = null!;
- public string Stock { get; set; } = null!;
- }
-```
-
-6. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action,并且传递一个Students类型的值,studentCreateDto为变量名
- > PS Students类型具有StudentName、Sex、Age自动属性
- >
-```cs
-public IActionResult Create([FromBody] Students studentCreateDto)
- {
- return View();
- }
- public class Students
- {
- public string StudentName { get; set; } = null!;
- public string Sex { get; set; } = null!;
- public string Age { get; set; } = null!;
- }
-```
+#### 笔记
+渲染视图
+```csharp
+public IActionResult Index()
+{
+ return View();
+}
+```
+#### 专项练习-控制器传参
+
+1. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名
+
+```cs
+public IActionResult Index(int id)
+ {
+ return View();
+ }
+```
+
+2. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名
+
+```cs
+public string Index_2(int id)
+ {
+ return id.ToString();
+ }
+```
+
+3. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名
+
+```cs
+public IActionResult Index_3([FromBody]Student stu)
+ {
+ return Content(stu.Name);
+ }
+ public class Student
+ {
+ public string Name { get; set; } = null!;
+ }
+```
+
+4. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名
+ > PS BlogCreateDto类型具有Title、Author、Content自动属性
+ >
+```cs
+public IActionResult Create([FromBody] BlogCreateDto blogCreateDto)
+ {
+ return View();
+ }
+ public class BlogCreateDto
+ {
+ public string Title { get; set; } = null!;
+ public string Author { get; set; } = null!;
+ public string Content { get; set; } = null!;
+ }
+```
+
+5. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action,并且传递一个Products类型的值,productCreateDto为变量名
+ > PS Products类型具有Name、Price、Stock自动属性
+ >
+```cs
+public IActionResult Create([FromBody] Products productCreateDto)
+ {
+ return View();
+ }
+ public class Products
+ {
+ public string Name { get; set; } = null!;
+ public string Price { get; set; } = null!;
+ public string Stock { get; set; } = null!;
+ }
+```
+
+6. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action,并且传递一个Students类型的值,studentCreateDto为变量名
+ > PS Students类型具有StudentName、Sex、Age自动属性
+ >
+```cs
+public IActionResult Create([FromBody] Students studentCreateDto)
+ {
+ return View();
+ }
+ public class Students
+ {
+ public string StudentName { get; set; } = null!;
+ public string Sex { get; set; } = null!;
+ public string Age { get; set; } = null!;
+ }
+```
diff --git "a/\345\202\205\344\277\212\346\235\260/20241126-\347\254\224\350\256\260.md" "b/\345\202\205\344\277\212\346\235\260/20241126-\347\254\224\350\256\260.md"
index 9fceeada8a903890182573e15b031f1245dcf530..eb0b6b9978adaa48ad180ba9146cb0cc9ab74bf1 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241126-\347\254\224\350\256\260.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241126-\347\254\224\350\256\260.md"
@@ -1,9 +1,9 @@
-### 笔记
-## 正向代理
-
-
-pc 通过找一个代理服务器 让代理服务器去访问 web服务器
-
-## 反向代理
-
+### 笔记
+## 正向代理
+
+
+pc 通过找一个代理服务器 让代理服务器去访问 web服务器
+
+## 反向代理
+
web服务器设置一个代理服务器让pc端 通过访问 代理服务器 访问 web服务器
\ No newline at end of file
diff --git "a/\345\202\205\344\277\212\346\235\260/20241128-\344\275\234\344\270\232\345\217\212\347\254\224\350\256\260.md" "b/\345\202\205\344\277\212\346\235\260/20241128-\344\275\234\344\270\232\345\217\212\347\254\224\350\256\260.md"
index a1768fa84a78340743724b9c846cbbd75184a167..64e2bfb8ce46786677e243e9206569dfb8c51946 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241128-\344\275\234\344\270\232\345\217\212\347\254\224\350\256\260.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241128-\344\275\234\344\270\232\345\217\212\347\254\224\350\256\260.md"
@@ -1,25 +1,25 @@
-#### 笔记
-接收view
-@model 命名空间.类名 @Model.键
-
-定位点
-```
-
-```
-#### 专业项练习-视图及其模板引擎
-
-1. 渲染(展示)简单数据类型到视图
-
-
-2. 渲染(展示)对象数据到视图
-
-
-3. 渲染(展示)集合数据到视图
-
-
-4. 渲染(展示)包含集合数据的对象数据到视图
-
-
-5. 尝试构建如下图所示的经典CRUD列表
-
+#### 笔记
+接收view
+@model 命名空间.类名 @Model.键
+
+定位点
+```
+
+```
+#### 专业项练习-视图及其模板引擎
+
+1. 渲染(展示)简单数据类型到视图
+
+
+2. 渲染(展示)对象数据到视图
+
+
+3. 渲染(展示)集合数据到视图
+
+
+4. 渲染(展示)包含集合数据的对象数据到视图
+
+
+5. 尝试构建如下图所示的经典CRUD列表
+

\ No newline at end of file
diff --git "a/\345\202\205\344\277\212\346\235\260/20241203-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" "b/\345\202\205\344\277\212\346\235\260/20241203-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md"
index 5d3744cc29d5fe4e40ebae14b7dc843d25b59b79..ced92f57311a3adf3a7a3adeaac7423b0c1ce2db 100644
--- "a/\345\202\205\344\277\212\346\235\260/20241203-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md"
+++ "b/\345\202\205\344\277\212\346\235\260/20241203-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md"
@@ -1,19 +1,19 @@
-#### 笔记
-基本表单结构:
-```cs
-