自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 JS异步编程进化史:从回调地狱到优雅同步的「生存指南」

*错误处理的抉择:**全局的try/catch很方便,但有时我们需要在某个特定请求失败后“降级”处理,比如读取缓存,这时就需要在单个await上进行catch,而不是让整个流程崩溃。Generator教会了我们一个理念:**异步的流程,可以用同步的写法来表达,**这直接为后来的语法王者铺平了道路。当时我最大的噩梦,就是在这一层层的回调里找一个偶然才会触发的Bug。**顶层await的限制:**很长一段时间,await只能在async函数内使用,不过现在模块顶层已经支持,处理初始化逻辑非常顺手。

2026-07-27 11:05:50 327

原创 条件构造器的正确打开方式与常见踩坑

本文总结了MyBatis-Plus条件构造器的使用经验和常见陷阱,重点包括: 推荐使用LambdaQueryWrapper避免字段名硬编码,提升重构安全性; 利用condition参数实现动态条件,避免if-else污染代码; 正确处理嵌套条件(and/or)的优先级,通过Consumer实现SQL括号效果; 警惕四大坑:空集合IN导致全表扫描、apply()的SQL注入风险、分页查询副作用、last方法滥用; 提出7条最佳实践,强调类型安全、参数校验和规范使用,建议通过代码审查工具确保团队统一遵守。

2026-07-16 11:42:30 279

原创 mybaits和mybaits-plus的区别

MyBatis-Plus(简称 MP)就像是MyBatis的一位“增强型助手”,它并不改变MyBatis的本质,而是让它变得更好用、更高效。MyBatis-Plus (自动辅助驾驶):它在手动档的基础上,帮你把重复的“换挡”动作(基础的增删改查)自动化了。构建快速迭代的MVP或原型系统:对于需要快速上线验证想法的项目,MP的代码生成器和强大的CRUD能力几乎是“开箱即用”的利器。已有成熟规范的存量项目:在一个已经建立良好开发规范的项目中,维持现有的MyBatis开发模式,可以保证风格的一致性。

2026-05-19 16:08:01 174

原创 Java注解列引

RetentionPolicy.CLASS:保留在 .class 文件中,但 JVM 不加载(默认)。RetentionPolicy.SOURCE:只保留在源码中,编译时丢弃(如 @Override)。含义:标记常量字段可以被本地代码(如 C)引用,仅供工具生成头文件使用。RetentionPolicy.RUNTIME:运行时可通过反射获取。二、元注解(用于自定义注解)元注解是用于定义注解的注解。一、内置注解(作用于代码)

2026-04-20 09:29:18 162

原创 分页数据的总结

可以考虑“键集分页”(Keyset Pagination)或“游标分页”,即基于上一页最后一条记录的 ID 来查询下一页,这对于大数据集更高效。通常 API 或 UI 不仅需要当前页的数据,还需要知道总记录数,以便计算总页数或显示“共xx条记录”。例如,一个包含1000条记录的列表,每页显示20条,那么一共有50页。用户交互:前端要考虑合理的每页大小,并提供跳页、上一页/下一页等控件,或采用无限滚动(通常对应键集分页)。分页几乎无处不在,只要涉及展示大量数据列表的场景,通常都需要分页。

2026-02-25 15:05:11 588

原创 java和C#的基本语法区别

Java和C#在语法上非常相似,因为它们都源于C/C++家族,但作为不同公司(Sun/Oracle vs. Microsoft)为解决不同侧重点而设计的语言,也存在许多关键区别。C# 设计之初在借鉴Java的同时,更注重与Windows平台的深度集成、开发效率和生产力的提升(如引入属性、委托、后期移除受检异常),并随着.NET Core的诞生成为全平台语言。C#: 通常更早引入新特性,如 LINQ、var、Lambda、异步(async/await)、属性模式、记录类型(record)、顶级语句等。

2026-01-30 11:57:47 615

原创 ABAP基本语法

常用操作包括 SELECT(查询)、INSERT(插入)、UPDATE(更新)和 DELETE(删除)。常见基本类型包括:整数(I)、字符(C)、字符串(STRING)、日期(D)、时间(T)。内表是ABAP中非常重要的一种数据结构,类似于其他编程语言中的数组,用于处理从数据库查询的多条数据。注释有两种方式:行首的星号(*)表示全行注释,双引号(")后为行内注释。包括常见的算术(+, -, *, /)、比较(=, <>, >, <)运算符。下面这个表格汇总了它的基本语法要素,可以帮助你快速建立整体印象。

2026-01-10 08:52:49 365

原创 C#中控制权限的逻辑写法

该代码实现了基于角色的数据行级权限控制。首先查询用户在指定模块的角色-用户映射关系,超级管理员(RoleUserCode=-1)可查看所有数据。普通用户的权限列表包含同角色用户、自己及虚拟管理员"001"。最终生成SQL条件,限制只能查看权限列表中用户创建的数据。通过缓存角色关系提升性能,实现了灵活的数据访问控制。

2025-11-27 14:48:12 315

原创 LigerUI下frm与grid的交互

如果找到了这样的行,我们就将表单中的BPFEmployee设置为该行的FEmployee值,同时更新BPFEmpName(因为表单中BPFEmployee对应的文本字段是BPFEmpName,但注意我们表单中存储的是工号,显示的是姓名,所以这里需要根据实际情况处理)。但是,在汇入数据的回调中,我们添加行后,可能还没有立即更新到grid的数据源,所以我们可以直接遍历刚刚添加的数据(即event.data)来找到第一个非空的FEmployee。如果后端没有返回,那么我们需要调整后端接口。

2025-10-27 10:27:32 447

原创 WinForm中,原生CombBox的数据源导入的方法

如果变量 responsibleWarehouse不为空(比如从服务器返回的当前用户负责的仓库编号),则设置 cbbWarehouse的选中值为该编号。返回的数据是一个 List,其中 NameValue可能是一个自定义类,包含 id和 text两个属性(比如仓库编号和名称)。遍历原始仓库列表,把每个项的 text改为 "id - text"的格式(比如 “001 - 原料仓库”)。​​设置 cbbWarehouse数据源的具体步骤​​。✅ ​​第四步:如果有默认仓库,则选中它​。

2025-09-25 09:50:23 277

原创 WinForm删除文件的基本逻辑

使用 Directory.Delete(fullPath2, true) 的第二个参数 true 表示递归删除,即删除文件夹及其所有内容。这个逻辑的核心是:在所有前置操作都成功的情况下,清理两个指定的文件夹,然后通知用户操作完成。即使删除操作失败,仍然显示"所有附件上传成功"的消息,这可能误导用户。如果这些文件夹可能包含正在被其他进程使用的文件,删除操作可能会失败。只有当所有操作都成功(所有元素为 true)时,才会执行删除操作。如果存在,先删除文件夹内的所有文件,然后再删除文件夹本身。

2025-08-27 14:59:02 399

原创 WinForm事件中如何拿出DataGridView的数据

本文介绍了通过C#实现从DataGridView中提取选中行数据的方法。代码演示了btnSign_Click事件处理程序,主要功能包括:1)获取原始DataTable数据源;2)创建结构相同的新表;3)遍历DataGridView行,检查"Check"列的勾选状态(支持bool、int等多种数据类型);4)将选中行数据深拷贝到新表;5)检查是否有选中数据。该方法可跳过未提交的新增行,确保数据独立性,为后续签名、存储等操作提供基础。文中还标注了实际应用中需补充的后续处理逻辑。

2025-07-28 08:56:48 349

原创 一些LINQ的普遍写法

我们假设FindEntity方法只能用于简单的条件,如果我们需要更复杂的查询(如排序、投影等),可能需要使用Where、Select等标准LINQ方法。但是,请注意原始代码中使用的FindEntity方法,如果它被用于从缓存中查找(而不是数据库),那么上述使用GetQueryable的查询可能会直接查询数据库。这里假设PMDal.FindEntity方法可以接受更复杂的条件(通过一个lambda表达式),但它可能只适用于简单条件,并且只返回单个实体(可能是第一个匹配的,如果没有排序则可能是任意的)。

2025-06-30 16:09:53 656

原创 VUE中created() 和 mounted()俩种生命周期钩子函数的区别

操作 DOM 元素(如初始化第三方库:图表、地图等)访问 $refs 获取子组件或 DOM 节点。执行依赖 DOM 渲染的逻辑。

2025-05-30 09:03:16 958

原创 C#中分组循环的做法

在我们平时的开发需求中,一定遇到过这样的场景,你需要对一个datatable数据进行分组循环,像这一类的需求应该如何完成呢?这段代码中核心点在于groupedData 的赋值问题,在这里我们借助LINQ对dt进行分组数据的转换,ToList(): 立即执行查询并将分组结果转换为内存中的List<IGrouping<…WERKS: 字符串类型的WERKS列值(通常是SAP系统中的工厂代码)那么就会转换为类List的分组数据,进行foreach即可完成需求。KOorder: 字符串类型的KOorder列值。

2025-04-28 09:30:25 417

原创 云之家开发者模式下接口值的抓取

通过以上代码,您可以准确提取云之家审批流表格中的数据,并根据实际需求进行扩展(如计算、存储或返回给前端)。注意:Dd_1、Nu_3、Te_35 必须是表单设计时定义的控件 ID,需通过云之家设计器(F12检查结构)确认。首先非常重要的一点是找出H5结构中的data-codeid的属性值,这是控件ID的具体命名。​遍历行:逐行提取 Nu_3 和 Te_35 的值。​接收请求:云之家审批流提交表单时触发此接口。​解析数据:将表单数据解析为 JSON 对象。​定位表格:通过 Dd_1 找到表格控件。

2025-03-31 17:06:20 466

原创 ligerUI在前端层面对于数据的验证拦截

关键校验逻辑:检查当前行的实际用量(ERFMG)是否大于已领料数量(ENMNG)通过ligerUI框架获取ID为"edit_Mtl"的表格/表单组件。调用getData()方法获取其中所有行数据(返回一个数组)如果校验不通过,使用ligerUI的对话框组件弹出错误提示。显示中文提示:“实际用量不能大于已领料数量,请检查!使用for循环逐个处理rows数组中的元素。将数据存储在rows变量中。获取当前遍历到的行数据对象。

2025-02-24 11:48:48 264

原创 LigerUI在MVC模式下的响应原则

通过这样,我们就可以将数据从View层传递到Controller层,至于Model层通过搭设现成的模型浏览器将表作为现成的对象,那么就可以将Model,View,Controller的数据链接串通起来。

2025-01-25 15:22:15 551

原创 WinForm事件遇到异步方法的处理方式

Lambda表达式() =>表示一个没有参数的方法。GetComputerInfoTable()是要异步执行的方法的调用。我们在WinForm开发的过程中,如果我们遇到异步的需求是无法直接处理的,因为WinForm的大部分事件其实是同步事件,他没有完善的机制去等待异步的响应(当然部分事件除外,比如shown);这样我们就可以放入Load事件去执行一些异步线程,但是这种情况也只能适用于无需窗体UI响应的情况,因为这种情况实际上是跳过了异步的响应对象,如果对于UI的异步等待响应的话,则需要进一步的处理。

2024-12-30 09:23:16 409

原创 Oracle与SQL Server的语法区别

不过需要注意的是,CONVERT函数在Oracle 12c及以上版本中已经被弃用,建议使用其等价函数NLS_CONVERT来替代。其中,link_to_source是链接的名称,source_user和source_password是源数据库的用户名和密码,source_database是源数据库的连接字符串。在Oracle中执行跨数据库查询可以通过数据库链接(Database Link)来实现。其中,table_name是源数据库中的表名,link_to_source是之前创建的数据库链接。

2024-11-01 09:23:33 743 1

原创 SQL Server中关于个性化需求批量删除表的做法

不过,请注意,LIKE 子句在 SQL Server 中是区分大小写的,但表名在内部存储时通常是不区分大小写的(这取决于数据库和服务器配置)。如果你只想删除那些以数字或特殊字符结尾(而不是空格或其他非字母非数字字符),你可能需要更复杂的模式匹配,或者使用正则表达式(但 SQL Server 的 LIKE 子句不支持正则表达式)。尽量增加监察环境,一昧直接执行,可能会对表结构造成不可逆的伤害,通过PRINT的检查,我们再执行PRINT中的语句会更好。打印生成的 SQL 语句:使用 PRINT @sql;

2024-10-02 15:12:05 1392

原创 C#开发中如何在不破坏封装性下调用控件

在C#开发中,我们知道每个设计文件在完成后都会存在封装性,如果是方法,对象的调用,我们可以采取public方法来允许外部的访问,但是对于控件来说,封装性是与生俱来的,强行破环封装既复杂,也不安全,所以,通常不建议将UI控件公开为公共成员,因为这可能会破坏封装性并增加类之间的耦合度,更好的做法是通过提供公共方法来间接访问或操作该控件。但笔者建议,尽可能不要使用这样的开发路线,这样通过new新的文件对象,需要考虑的因素远远不止这些,包括对象的实例化,初始化,等等等等。

2024-09-30 08:29:22 517

原创 C#开发中ImageComboBox控件数据源实时变换

通过实例化时引发的值变化,我们就可以完成类似实时变化值而需要引发的操作。

2024-08-26 10:42:54 420

原创 SQL在已知列名的情况下寻找所有包含列名的表名解决办法

请注意,由于数据库名和表名在不同的数据库系统中可能有不同的命名规则(例如,大小写敏感性),因此在实际使用中,可能需要根据你所使用的数据库系统的具体规则来调整列名(‘StandMakeQty’)的大小写或添加引号等。然而,在这个特定的查询中,由于我们只关心列名(而不是数据库名或表名),因此通常不需要担心这个问题,除非列名本身包含特殊字符或保留字。换句话说,它过滤掉了不包含名为StandMakeQty的列的表的信息。在这个例子中,它指定了只选择TABLE_NAME列,即包含指定列的表的名称。

2024-07-17 10:32:44 954 1

原创 通过焦点行事件对行值抓取改变当行状态值

用这个方法,我们可以实现对于不同的行,其按钮状态不尽相同。

2024-06-24 13:50:47 237

原创 Devexpress中GridControl控件中的表格遍历逻辑问题

当我们在执行其他事件时,常常需要对GridControl控件里的表内容进行一个遍历逻辑判断,该文以确认2列中的值是否为空为例;这样我们就可以完成表值的逻辑锁定。

2024-05-27 14:07:54 512

原创 C#开发中关于业务类与窗口文件以及数据库的大体连接流程(业务类的写法)

通过基类继承,我们可以获得查询的权限,在实际开发中,我们甚至可以忽略base中的表名,而通过储存数据库语句的string值来进行具体的from定义。属性可忽略这并不是我们需要的,这样我们通过窗口文件中写入public VarianceStorageClass Manager可以形成连接;所有的开发在基准上,都是数据的交互,在VS中基于WinFrm的C#开发可以采用业务类与窗口类分开,以形成模块,接下来简述大体开发流程。

2024-04-25 14:35:54 296

原创 sqlsever中向表插入数据(sql插入语句)

哪怕有对应数据没有写入都好,只要没有不为空操作,我们都可以指定相关数据,其他数据不进行写入会按默认值处理。

2024-03-25 17:48:32 916

原创 C#对于文件中的文件名判断问题

C#中对于文件名的判断问题,我们使用bool值进行值的传递,首先我们使用内置方法进行文件字符串匹配的bool值回传,我们打印出文件名以及相对应的bool,即可知道文件名是否真正生效。当然,我们在外层需要配套循环对文件名进行遍历,将上述语句放入循环,即可完成文件名判断。

2024-03-21 14:57:43 648

原创 C#中文件操作打印当前目录下的所有文件名

首先,我们采取字符串保存我们当前目录,并且通过创建类来获取这个路径下的所有文件(类下引用方法记得用小灯泡点亮),将文本数据导入数组。我们将数组内容传入我们的泛型集合,对泛型集合进行遍历。

2024-03-21 13:14:32 466

原创 C#开发中方法使用的问题注意

C#开发中,我们在进行方法内嵌时,需要注意方法回传带值时,我们需要对方法回传的值进行一个赋值传递。同时在方法进行嵌套的同时,注意方法回传时,所嵌套的方法要完成类型值设定,如图所示。

2024-03-18 22:19:41 513

原创 项目代码层面端口设置+拦截器中白名单判断条件

不管是何种拦截器设置模板,我们都需要进行白名单的判断来作为能否访问的依据,白名单通常是放置于AuthInterceptor文件中。同样,白名单路径我们在yml文件中先行完成配置,如图所示。2,拦截器中白名单判断条件。1,项目代码层面端口设置。

2023-12-01 04:33:39 209

原创 docker环境安装+maven依赖继承问题

需要将admin文件下的父maven依赖粘贴到子maven中去。2,maven依赖继承问题。1,docker环境安装。

2023-10-31 17:56:11 426

原创 网页标签在html中的显示+单标记换行操作

我们在html的编写过程,经常会遇到设置网页title标签的问题,例如百度标签;html的书写过程中,设计文本换行的操作,我们通过单标记来操作换行。1,网页标签在html中的显示。我们使用title来满足要求;

2023-09-26 21:54:01 662

原创 系统错误码指示确立+日志模块手动配置

我们在设立的resources文件下设立yml文件,通过快捷填入name选择spring.application.name即可实现快速填入日志模板;通过不同的代码指示,我们可以明确运行问题的具体情况,通常我们放入api文件下的resultCode位置;对于前后端分离的系统设计中,后端建立错误码指示对于前端非常重要可以指示错误存在地方;我们再分出测试环境以及生产环境,即可完成日志配置;1,系统错误码指示确立。2,日志模块手动配置。

2023-09-04 22:46:35 1299

原创 maven本地仓库地址修改+maven国内镜像设置+maven运行所需pos.xml文件配置基本写法

首先,在项目架构上我们需要建立一个project->project-java->scr,pos.xml(同层目录),scr->java,resources(同层目录),java和resources目录下即是作为java项目来进行管理,那么在建立好框架之后,我们对相关配置文件pos.xml进行书写,首先我们在scr同级目录下创建pos.xml文件;选择第一个pos.xml即可;因为其中央仓库默认位置位于境外,故我们设置国内镜像位置更利于我们相关项目下载;把之前的依赖给删除,换上我们自己的依赖,保存即可。

2023-07-26 16:03:22 4657

原创 vue属性中的数据绑定v-text与响应式操作v-html+vue中鼠标悬停显示效果+布尔值在vue中引用属性中的操作

这样我们可以对于属性中的isred的布尔值来进行颜色的显示效果,当然前提是我们提前在属性中定义isred的值。1,vue属性中的数据绑定v-text与响应式操作v-html。在该情况下,我们可以输出对应属性的文本;3,布尔值在vue中引用属性中的操作。2,vue中鼠标悬停显示效果。即可完成响应式操作;

2023-06-27 21:52:17 1146

原创 IDEA内操作框文件地址生成+IDEA数组传参处理+springboot缺少依赖问题

当springboot未能正常运行时,应该考虑是否是依赖文件问题。我们在对应的moven文件下写入依赖。当结果是以数组形式被输出时,我们可以getJSONArray方法来将参数传出;通过for循环我们可以将数组内字符全部单独输出并且排列出来,形成新的输出。这样我们即可进行文件浏览与进入文件等操作。pwd即可生成该文件目录下的文件地址。3,springboot缺少依赖问题。所有运行正常,端口正常,说明问题解决。1,IDEA内查询文件本地所属位置。写入依赖后尝试看问题是否解决。2,IDEA数组传参处理。

2023-06-01 00:44:20 529

原创 商城管理系统的数据表从属关系+navicat建表操作+数据库文件转储并入代码操作

当我们进行完表的输入之后,我们对demo进行右键存储,选择“结构和数据”,我们选定好位置,保存成功之后,这时我们哪怕删除数据库,我们也会在我们保存文件的位置发现保存的sql文件。在navaicat新建连接之后,右击新建数据库,记得选定字符集为utf-8;在商城管理系统中,我们会面临属性分组的问题,商品表与分类表需要建立链接;在控制类中我们将分类表中属性类传过来,与商品值params建立链接。双击demo,其绿色标志表面处于连接状态,点击进入新建表;在service类中,我们写入判断key的语句;

2023-04-29 02:20:54 1336

原创 api引入方法+统计用户访问数逻辑+验证码发送前端模块

之后我们使用Math.random()方法定义其传输速率即可,但是如果是form表单提交的结果类型,就需要将span标签换成input标签框,因为span标签内容不会被提交,后端没有办法进行验证。在redies数据库中,我们实现,只要有用户访问网站,就会生成一个key,然后整理时间段的key,就可以统计一段时间内的人数,如图所示。首先api的引入我们应该在导入maven项目时,在pom.xml中进行导入,我们已导入百度的包为例,首先在抬头写入。通过这样的方式,即可完成开发目标。2,统计用户访问数逻辑。

2023-03-31 19:32:38 328

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除