1. 使用 AsNoTracking 提高查询性能
基本用法
// 常规查询(会跟踪实体变更) var products = context.Products.Where(p => p.Price > 100).ToList();// 使用 AsNoTracking(不跟踪实体变更,性能更好) var products = context.Products.AsNoTracking().Where(p => p.Price > 100).ToList();
应用场景
-
只读查询操作
-
数据展示场景
-
报表生成
-
大数据量查询
全局配置
// 在DbContext中配置全局不跟踪 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {optionsBuilder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)).UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); }// 或者针对特定查询启用跟踪 var products = context.Products.AsTracking() // 显式启用跟踪.Where(p => p.Price > 100).ToList();
2. 使用 Include 和 ThenInclude 进行贪婪加载
基本用法
// 加载单个关联实体 var blogs = context.Blogs.Include(b => b.Posts) // 加载Posts集合 .ToList();// 加载多层关联实体 var blogs = context.Blogs.Include(b => b.Posts).ThenInclude(p => p.Comments) // 加载Posts下的Comments.Include(b => b.Author) // 加载单个Author .ToList();// 加载多个关联实体 var blogs = context.Blogs.Include(b => b.Posts).Include(b => b.Tags).ToList();
过滤包含的关联数据
// 只加载符合条件的关联数据(EF Core 5.0+) var blogs = context.Blogs.Include(b => b.Posts.Where(p => p.IsPublished)).Include(b => b.Tags.OrderBy(t => t.Name).Take(5)).ToList();// 使用字符串方式包含(动态查询场景) var blogs = context.Blogs.Include("Posts.Comments").ToList();
性能考虑
// 避免过度包含(N+1查询问题) // 错误方式:会产生N+1查询 var blogs = context.Blogs.ToList(); foreach (var blog in blogs) {var posts = context.Posts.Where(p => p.BlogId == blog.Id).ToList();// 处理posts... }// 正确方式:使用Include一次性加载所有关联数据 var blogs = context.Blogs.Include(b => b.Posts).ToList(); foreach (var blog in blogs) {// 直接访问blog.Posts,不会产生额外查询 }
3. 使用 Select 进行投影查询
基本投影
// 只选择需要的字段 var productInfo = context.Products.Where(p => p.Price > 100).Select(p => new {p.Id,p.Name,p.Price,CategoryName = p.Category.Name // 关联实体字段 }).ToList();// 转换为DTO对象 var productDtos = context.Products.Select(p => new ProductDto{Id = p.Id,Name = p.Name,Price = p.Price,CategoryName = p.Category.Name}).ToList();
条件投影
var products = context.Products.Select(p => new {p.Id,p.Name,PriceCategory = p.Price > 100 ? "Expensive" : "Affordable",HasStock = p.Stock > 0}).ToList();
集合投影
var blogSummaries = context.Blogs.Select(b => new {b.Id,b.Title,PostCount = b.Posts.Count(),LatestPost = b.Posts.OrderByDescending(p => p.CreatedDate).Select(p => new { p.Title, p.CreatedDate }).FirstOrDefault()}).ToList();
4. 原始 SQL 查询
基本查询
// 使用FromSqlRaw执行原始SQL查询 var products = context.Products.FromSqlRaw("SELECT * FROM Products WHERE Price > {0} AND Stock > {1}", 100, 0).ToList();// 使用参数化查询防止SQL注入 var minPrice = 100; var minStock = 0; var products = context.Products.FromSqlInterpolated($"SELECT * FROM Products WHERE Price > {minPrice} AND Stock > {minStock}").ToList();
与LINQ结合使用
// 原始SQL查询后继续使用LINQ var expensiveProducts = context.Products.FromSqlRaw("SELECT * FROM Products WHERE Price > 100").Where(p => p.Stock > 0).OrderByDescending(p => p.Price).ToList();
执行非查询SQL
// 执行更新、删除等操作 var affectedRows = context.Database.ExecuteSqlRaw("UPDATE Products SET Price = Price * 1.1 WHERE CategoryId = {0}", categoryId);// 使用存储过程 var products = context.Products.FromSqlRaw("EXEC GetExpensiveProducts @minPrice = {0}", 100).ToList();
5. 使用索引优化查询
在模型中定义索引
protected override void OnModelCreating(ModelBuilder modelBuilder) {// 创建单列索引modelBuilder.Entity<Product>().HasIndex(p => p.Name);// 创建唯一索引modelBuilder.Entity<Product>().HasIndex(p => p.Sku).IsUnique();// 创建复合索引modelBuilder.Entity<Product>().HasIndex(p => new { p.CategoryId, p.Price });// 创建筛选索引(MySQL 8.0+)modelBuilder.Entity<Product>().HasIndex(p => p.Price).HasFilter("[Price] > 100"); }
在迁移中创建索引
// 创建迁移后,可以自定义索引 migrationBuilder.CreateIndex(name: "IX_Products_CategoryId_Price",table: "Products",columns: new[] { "CategoryId", "Price" },filter: "Price > 100");
使用索引提示(MySQL 8.0+)
// 强制使用特定索引 var products = context.Products.FromSqlRaw("SELECT * FROM Products USE INDEX (IX_Products_Price) WHERE Price > 100").ToList();
监控查询性能
// 启用MySQL慢查询日志 // 在my.cnf或my.ini中添加: // slow_query_log = 1 // slow_query_log_file = /var/log/mysql/mysql-slow.log // long_query_time = 2// 使用EXPLAIN分析查询 var explainResult = context.Database.ExecuteSqlRaw("EXPLAIN SELECT * FROM Products WHERE Price > 100");
6. 其他优化技巧
分页优化
// 使用Keyset分页(基于值的分页) var lastPrice = 100; var lastId = 50; var products = context.Products.Where(p => p.Price > lastPrice || (p.Price == lastPrice && p.Id > lastId)).OrderBy(p => p.Price).ThenBy(p => p.Id).Take(20).ToList();// 传统分页(适用于小数据集) var pageNumber = 2; var pageSize = 20; var products = context.Products.OrderBy(p => p.Name).Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
批量操作优化
// 使用AddRange批量添加 var products = new List<Product>(); // 添加多个产品到列表 context.Products.AddRange(products); context.SaveChanges();// 使用ExecuteUpdate批量更新(EF Core 7.0+) context.Products.Where(p => p.CategoryId == 1).ExecuteUpdate(p => p.SetProperty(x => x.Price, x => x.Price * 1.1m));// 使用ExecuteDelete批量删除(EF Core 7.0+) context.Products.Where(p => p.Stock == 0).ExecuteDelete();
查询编译优化
// 使用编译查询(适用于频繁执行的查询) private static readonly Func<ApplicationDbContext, int, IEnumerable<Product>> GetProductsByCategory = EF.CompileQuery((ApplicationDbContext context, int categoryId) => context.Products.Where(p => p.CategoryId == categoryId));// 使用编译查询 var products = GetProductsByCategory(context, 1).ToList();
连接池优化
// 在连接字符串中配置连接池 var connectionString = "server=localhost;database=efcoredb;user=root;password=yourpassword;Pooling=true;MinimumPoolSize=5;MaximumPoolSize=100;ConnectionTimeout=30;";
7. 性能监控和诊断
启用EF Core日志
// 在DbContext配置中启用敏感数据日志记录和详细错误 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {optionsBuilder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)).EnableSensitiveDataLogging() // 仅开发环境.EnableDetailedErrors() // 仅开发环境.LogTo(Console.WriteLine, LogLevel.Information); // 记录SQL查询 }
使用MiniProfiler监控性能
// 安装MiniProfiler.EntityFrameworkCore services.AddMiniProfiler(options => {options.RouteBasePath = "/profiler";options.ColorScheme = StackExchange.Profiling.ColorScheme.Auto; }).AddEntityFramework();
分析查询性能
// 使用MySQL的EXPLAIN分析查询 var query = context.Products.Where(p => p.Price > 100); var sql = query.ToQueryString(); // 获取生成的SQL Console.WriteLine(sql);// 或者在数据库直接执行EXPLAIN var explainResult = context.Database.ExecuteSqlRaw("EXPLAIN SELECT * FROM Products WHERE Price > 100");
总结
本教程详细介绍了EF Core与MySQL的查询优化技巧,包括:
-
使用AsNoTracking提高只读查询性能
-
使用Include和ThenInclude正确加载关联数据,避免N+1查询问题
-
使用Select投影查询减少数据传输量
-
使用原始SQL查询处理复杂场景
-
使用索引优化查询性能
-
其他优化技巧如分页、批量操作和查询编译
-
性能监控和诊断工具的使用
优化查询性能是一个持续的过程,需要结合实际应用场景和数据库特性进行调整。建议定期分析慢查询日志,使用EXPLAIN分析查询计划,并根据结果调整索引和查询方式。
记住,最好的优化往往是基于实际性能分析而不是盲目猜测。在生产环境中,始终使用性能监控工具来识别和解决瓶颈问题。
相关文章:
EF Core 与 MySQL:查询优化详解
EF Core 与 MySQL:查询优化详解 1. 使用 AsNoTracking 提高查询性能 基本用法// 常规查询(会跟踪实体变更) var products = context.Products.Where(p => p.Price > 100).ToList();// 使用 AsNoTracking(不跟踪实体变更,性能更好) var products = context.Product…...
短视频营销运营资深导师张伽赫,东莞绳木传媒创始人
东莞绳木传媒创始人张伽赫,短视频营销运营领域的资深导师。凭借其对行业趋势的敏锐洞察与实战经验,已成为企业数字化转型中短视频营销领域的标杆人物。他深耕短视频赛道多年,不仅构建了从账号定位、内容创作到流量转化的完整方法论,更通过绳木传媒为企业提供“AI+短视频”全…...
20250913
T4。T1 查询被包含的区间 将区间视为平面上的点 \((l, r)\),则每次询问的合法范围容易表示,是一个三角形。可以通过两步容斥转化为一个一维偏序和三个二维偏序。直接做就好了。代码 #include <iostream> #include <algorithm> #define lowbit(x) ((x) & (-(…...
9.13日总结
整体总结: 1.在自己的大样例出问题时要及时找老师考大样例 不要对着不对的大样例虚空调试 2.在考场上要自己造大样例 要造极限数据 这样可以防止数组越界 3.在数据不超过5e6的情况下 单log都是可以过的 只要极限数据跑的不是很慢就不用担心常数问题 4.在考场上要留一个小时以上…...
哇哇哇下雨了!——2025 . 9 . 16
哇哇哇下雨了! 感觉我从小就不喜欢晴天,反而钟爱雨天,其实每次下雨我心里就在想“哇哇哇又下雨了”。 可能跟打小的性格有关,也可能跟那个人有关。 当时我写了好多关于雨的小诗,无论是给她的还是给我自己的,内容也想不起来几句了。那会儿虽然每天的生活是无味的严苛的,但…...
奇思妙想(胡思乱想)
前言: 作为一个想象力 丰富 夸张的人,总有一些奇思怪想,浅浅记录一下呀~~ 可能会很奇怪以及不符合实际,毕竟是想象的【逃】 正文:圈养的猪会不会觉得人类的是自己的奴隶(因为一直好吃好喝的供着它们) 睡觉会不会就是脑电波以第一视角或第三视角的方式观察到平行宇宙的自…...
AI Compass前沿速览:GPT-5-Codex 、宇树科技世界模型、InfiniteTalk美团数字人、ROMA多智能体框架、混元3D 3.0
AI Compass前沿速览:GPT-5-Codex 、宇树科技世界模型、InfiniteTalk美团数字人、ROMA多智能体框架、混元3D 3.0AI Compass前沿速览:GPT-5-Codex 、宇树科技世界模型、InfiniteTalk美团数字人、ROMA多智能体框架、混元3D 3.0 AI-Compass 致力于构建最全面、最实用、最前沿的AI…...
C++中set与map的自定义排序方法详解
在C++标准模板库(STL)中,set和map是两种常用的关联容器,它们默认按照键的升序进行排序。但在实际开发中,我们经常需要根据特定需求对元素进行自定义排序。本文将详细介绍如何为set和map实现自定义排序。 默认排序行为 在深入了解自定义排序之前,我们先看一下set和map的默认…...
id
卷姬神经瓦特 2025.09.16本文来自博客园,作者:transformert,转载请注明原文链接:https://www.cnblogs.com/ac-network/p/19095883...
【汇总】Qt常用模块头文件
一、变量、命令、参数排序 项目.pro文件 模块导入 include 文件 中文说明 备注、示例ABCDEFGHIJKLM#include <QMessageBox> 信息提示窗口QMessageBox::about(this, "关于",“关于说明”);NOPQRSQT += serialport #include <QSerialPort> 串口控制类#inc…...
Advanced Algorithm —— Hashing and Sketching
Birthday Problem \(m\) 个人,\(n\) 天,没有两个人生日相同的概率为: \[\displaystyle{ \begin{align*} \Pr[\mathcal{E}]=\left(1-\frac{1}{n}\right)\cdot \left(1-\frac{2}{n}\right)\cdots \left(1-\frac{m-1}{n}\right) &= \prod_{k=1}^{m-1}\left(1-\frac{k}{n}\r…...
CF2136 Codeforces Round 1046 (Div. 2) 补题
题目标签B笛卡尔树的应用C有思维难度的 dp / 递推D交互题 利用曼哈顿距离反过来解坐标:二元线性方程组 考虑“问最值/极限情况”E二分图,边双连通分量 两条路径 -> 环 异或运算的性质 (见题解)题解:E. By the Assignment观察1:对于本题,每个边双连通分量内部的点权可…...
【IEEE出版、EI检索稳定】第四届云计算、大数据应用与软件工程国际学术会议(CBASE 2025)
第四届云计算、大数据应用与软件工程国际学术会议(CBASE 2025) 2025 4th International Conference on Cloud Computing, Big Data Application and Software Engineering 在这里看会议官网详情 2025年10月24-26日丨中国-成都(线上同步举办) 截稿日期:看官网 检索类型:IE…...
缺省源
自用,你不见得会用。 快读:点击查看代码 #define getc() getchar_unlocked() #define putc(a) putchar_unlocked(a) #define en_ putc(\n) #define e_ putc( )template<class T> inline T in() { T n = 0; char p = getc();while (p < -) p = getc();bool f = p == …...
97. 交错字符串
题目链接:97. 交错字符串 - 力扣(LeetCode)‘解析:二维dp dp[i][j]代表s1前i个和s2前j个是否能组成s3的i+j个 状态转移方程就很简单了, 但这一题要求空间限制,可以观察到dp其实只记录一维就可以,因为用到了i-1或者j-1class Solution { public:bool isInterleave(string …...
MODint(自动取模)
主要来自here,我就只是补充了点东西,修改了一点东西,改了点 re 判断。 建议和我的快读一同使用,兼容的。 in,out兼容,不过建议in(a.val),快一些。同理,建议out(a.val) 不行的话也有流输入输出的兼容。 除法是 \(O(\log mod)\) 的,嫌慢可以自行修改 inv() 函数内容。 t…...
BFD实验
动态bfd+OSPF: bfd q ospf 1 bfd all-interfaces enable net .... net .......
2025.9.16——卷1阅读程序1、2
阅读程序2 vector容量与大小 容量表示在不申请内存的情况下vector还可以添加多少元素,通常超过限制之后容量会增加>=1,具体看算法实现 大小表示vector中有多少元素 .assign(n,val) 将vector的内容替换为n个val值的元素...
25/9/15(补)
来的比较晚,把ABC题改了,随机跳了一道贪心+数学题,学习了一下题解思路。然后做了下2020csps单选,错了2道。不知道今年没有小学生s分数线会不会巨高,后面几天就练练第一轮。...
[Paper Reading] DINOv3
目录DINOv3TL;DRMethodDataArchitectureLearning ObjectiveGram Anchoring ObjectiveLeveraging Higher-Resolution Featurespost-hoc strategiesExperiment相关链接 DINOv3 link 时间:25.08 单位:Meta 相关领域:Self Supervised Learning 作者相关工作: 被引次数:7 项目主…...
25/9/16
作业比较多,来的时候就剩25分钟了,于是补了一下博客,复习了一下之前写的题。然后又研究了一下昨天的P11205(贪心+数学),稍微参悟到了一些。...
JavaDay5
增强for循环 Java增强for循环语法格式如下: for(声明语句:表达式) {//代码句子 }声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在环语句块,其值与此时数组元素的值相等。 表达式:表达式是要访问的数组名,或者是返回值为数组的方法 packag…...
揭秘Mobile Me数据挖掘:从WebDAV探测到隐藏文件发现
本文详细分析了Mobile Me服务的公开文件访问机制,通过WebDAV协议和XML解析技术实现目录遍历,发现用户代理字符串影响隐藏文件显示,并开发了自动化探测工具Me Finder进行数据收集。我最近发布了Bucket Finder脚本,Darren在Hak5节目中进行了专题报道。有反馈指出Mobile Me采用…...
25/9/14(补)
下午: 随机跳题做了p2926 就是一个每个数字为a[i]的环,对于每个a[i]统计a[i]是aj的因数的a[j]个数。 做法:首先是否是环对答案无影响,因为每个数都要走一遍,所以开一个桶b,记录每个数字的出现次数,外层1-1000000枚举i,判断b[i]是否有值,如果有内层1-1000000/i枚举判断b…...
【IEEE出版、往届会后4个月EI检索】第二届计算机视觉、图像处理与计算摄影国际学术会议(CVIP 2025)
第二届计算机视觉、图像处理与计算摄影国际学术会议(CVIP 2025) 2025 2nd International Conference on Computer Vision, Image Processing and Computational Photography *IEEE出版 | 往届会后4个月EI检索,非常稳定!收录范围广 重要信息 在这里看会议官网详情 时间地点:…...
VSCode + Python 开发踩坑:虚拟环境不在项目根目录导致包无法识别该怎么办
最近在学习Dify ,尝试自己使用源码启动项目并进行二次开发。 我按照Dify的官方文档说明使用uv在项目的api目录下安装了Python虚拟环境,但是在VSCode右下角的Python解释器选择中却无法像conda管理的虚拟环境一样直接找到并选中,需要手动选择解释器存在,而且我在手动设置之后…...
洛谷 P10936 导弹防御塔 题解
题目描述请移步 https://www.luogu.com.cn/problem/P10936题目简述有n个防御塔,每个防御塔都有充足的导弹 导弹需要一定时间发出,又需要一定时间冷却 导弹有确定的速度,发出后会沿最短路径攻击任意一个入侵者 有m个入侵者,给定防御塔和入侵者的坐标,求至少多久才能击退所有…...
Python爬虫实战:研究Pandas,构建地理信息资料采集和分析便捷的系统
Python爬虫实战:研究Pandas,构建地理信息资料采集和分析便捷的系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier Ne…...
初赛复习
重要知识点 存储单位卡特兰数 以下是一些卡特兰数 \(C_n\) 的应用:二叉树计数\(n\) 个结点的不同形态的二叉树的数量是卡特兰数 \(C_n\)。括号匹配\(n\) 对括号的有效组合数。栈操作序列(出栈顺序)\(n\) 个元素的出栈顺序数。凸多边形的三角划分\(n + 2\) 条边的凸多边形划分…...
用户帐户控制(UAC)
您拥有标准用户的用户名和密码。可在 中查看lusrmgr.msc 。...
fg/bg/jobs/kill命令--linux
[转载](https://www.cnblogs.com/machangwei-8/p/10391440.html) 目录一、命令详解二、进程的终止三、进程的挂起(暂停) 基础命令学习目录首页原文链接:http://www.cnblogs.com/chjbbs/p/6307333.html linux提供的fg和bg命令,可以让我们轻松调度正在运行的任务假如你发现…...
【OC】单例模式 - 教程
【OC】单例模式 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 1…...
ios电脑系统和windows系统
iOS电脑系统与Windows系统的对比与选择指南 一、引言 随着科技的快速发展,个人计算机已经成为了我们日常生活中不可或缺的一部分。操作系统作为连接硬件与应用程序之间的桥梁,其重要性不言而喻。在众多操作系统中,iOS(实际上,这里应当指的是macOS,因为iOS是苹果公司为移动…...
HCIP-VRRP
...
JSON Schema 校验是什么?面试时怎么说?
JSON Schema 校验,其实就是 对接口返回的数据结构做自动化校验,确保它符合预期格式。 比如下单接口返回的数据是这样的: { "orderId": 12345, "status": "paid", "amount": 58.5, "items": [ { "productId": 1…...
【征文启动】IvorySQL PostgreSQL 迁移实战经验征集:分享你的技术沉淀,赢取专属好礼!
在数据库技术选型与迭代的浪潮中,迁移始终是企业与开发者绕不开的核心课题——从旧数据库升级到 PostgreSQL 社区版,从其他数据库(Oracle)迁移至 IvorySQL/PostgreSQL,每一步都藏着技术决策的智慧与实战踩坑的经验。 为汇聚更多迁移场景下的实战方案,助力开发者少走弯路,…...
MCP的天气预报的使用
`{{ formatTime(message.timestamp) }}<!-- 输入区域 --><div class="input-area"><el-input v-model="inputMessage" placeholder="请输入您的问题..."@keydown.enter.exact.prevent="sendMessage" /><el-butto…...
6款超好用的AI换脸软件,一键视频直播换脸(附下载链接)
随着AIGC的火爆,AI换脸技术也被广泛应用于娱乐、广告、电影制作等领域,本期文章系统介绍了市面上超火的6款AI软件 换脸整合包收录了全部6款AI工具,请按照需要选择下载: 百度网盘:https://pan.baidu.com/s/1LWMp7mvGc_76PDueFBv3tQ?pwd=fwu41.Roop 作为AI换脸领域的鼻祖,…...
lc1029-两地调度
难度:中等(后期巅峰)题目描述给定一个数组,长度为 2n,表示 2n 个人 每个元素都是一个二元组,前一个数表示去 a 的路费,后一个数表示去 b 的路费 需要让 n 个人去 a,另 n 个人去 b,求最小总花费示例 输入:costs = [[10,20],[30,200],[400,50],[30,20]] 输出:110 解释…...
pyAutoGUI 模块主要效果介绍-(2)键盘功能
pyAutoGUI 模块主要效果介绍-(2)键盘功能pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !import…...
(简记)时间复杂度分析 $\Omicron,\Theta,\Omega$ 的区别
严谨定义请前往OI-wiki渐进符号定义介绍 备考初赛。为了方便记忆,给出如下定义:对于 \(f(n)=\Theta(g(n))\),我们恰可以用 \(g(n)\) 乘上两个非 \(0\) 常数分别拟合出 \(f(n)\) 的上下界(可以取等号)。对于 \(f(n)=\Omicron(g(n))\),我们仅可以用 \(g(n)\) 乘上一非 \(0\…...
Java的运算符
java的二元运算符 package com.zhong.operator;public class Demo01 {public static void main(String[] args) {//二元运算符//Ctrl+D 复制当前行到下一行int a = 10;int b = 20;int c = 25;int d = 25;System.out.println(a+b);System.out.println(a-b);System.out.println(…...
2025年最强API安全解决方案:以智能风险监测重塑企业数据防护体系
2025年最强API安全解决方案:以智能风险监测重塑企业数据防护体系在数字化浪潮席卷全球的今天,应用程序编程接口(API)已成为企业数字化转型的核心枢纽。随着API调用量呈现指数级增长,其安全风险也日益凸显。数据泄露、未授权访问、业务逻辑滥用等安全事件频发,使得API安全…...
HTML打包EXE工具中的WebView2内核更新指南
在HTML一键打包工具推出了免费的WebView2内核后, 有很多朋友都开始使用它来发布自己的HTML项目。无论是一个内部管理系统的小工具,还是一个要分发给客户的桌面应用,只要原本是基于网页的,就能轻松地一键打包成一个 Windows 可执行程序。WebView2内核占用空间小, 而且免费, 深…...
Javadoc生成文档方法
javadoc文档生成 package com.zhong.operator;/*** @author zcx* @version 1.0* @since 1.8*/ public class Doc {String name;/*** @* @param name* @return* @throws Exception*/public String test(String name) throws Exception{return name;} }1.在命令行中输入javadoc 文…...
HTML一键打包EXE工具中使用Websocket
你是否曾好奇微信网页版为何能即时收到消息?为何在线游戏能实时同步玩家操作?这一切都要归功于一种名为WebSocket的技术。今天,我们就来聊聊这项让网页活起来的技术, 并且会附上示例代码,可以方便的通过html一键打包exe工具打包成一个桌面程序。 网址一键转成桌面程序HTML…...
KUKA程序中DEF 与 DEFFCT 的区别
程序/ 子程序DEF 在SRC 声明程序使用DEF,生成的DAT 文件使用DEFDAT,SRC 文件中最多可由255 个局部子程序组成,局部子程序允许多次调用 局部程序名称需要使用括号,运行完毕局部子程序后,跳回到调出子程序后面的第一个指令,最多可相互嵌人20 个子程序。 函数编程DEFFCT 函数…...
第一天作业
大家好,我是23数据科学与大数据技术一班的黄敏,目前还在编程学习的入门阶段。 平时喜欢看看电视剧,打打游戏,还有散步。 说到优势,可能是耐心比较好。之前为了弄懂 Excel 的 VLOOKUP 函数,对着教程反复练习了三天,直到能熟练用它处理班级的成绩表。虽然只是简单的办公技…...
EXE一机一码打包加密大师 - 打包加壳原理
软件开发的世界里,我们倾注心血写下的每一行代码,编译生成的EXE文件,都如同亲手打造的艺术品。然而,在互联网的“丛林”中,这款艺术品却时刻面临着被破解、盗用、恶意篡改的风险。如何保护我们的劳动成果?今天,我们就来聊聊一项核心的保护技术——加壳,并探讨如何从零…...
力扣62题 不同路径
1.确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。 2.确定递推公式 想要求dp[i][j],只能有两个方向来推导出来,即dp[i - 1][j] 和 dp[i][j - 1]。 此时在回顾一下 dp[i - 1][j] 表示啥,是从(0, 0)的位置到(i - 1,…...