- 博客(190)
- 资源 (1)
- 收藏
- 关注
原创 针对特定项目使用git查看自己的代码提交量
该命令用于统计指定开发者在Git项目中的代码提交情况。通过git log --author筛选特定账号的提交记录,结合--numstat参数输出增删行数统计。使用awk命令计算总添加行数(add)、删除行数(subs)及净增行数(loc=add-subs),最终输出汇总结果。将"wangzhen"替换为实际Git账号即可查看该开发者在当前项目中的代码贡献量统计,包括:新增代码行数、删除代码行数以及净增代码行数。
2026-01-27 09:25:56
101
原创 java中重写和重载的区别
摘要:重写(Override)和重载(Overload)是Java方法处理的两种方式。重写发生在父子类间,要求方法签名完全一致,用于实现多态和功能扩展;重载发生在同一类中,通过不同参数列表实现方法名复用。核心区别:重写关注方法实现覆盖,重载关注参数适配。易错点包括static方法不能重写、仅改返回值不算重载等。记忆口诀:重写看父子参数同,重载看同类参数异。
2026-01-21 15:38:03
669
原创 java面向对象(附代码详解)
本文系统讲解了Java面向对象编程(OOP)的核心概念。首先对比面向过程与面向对象的思想差异,强调OOP将问题拆分为对象交互。详细解析了OOP四大特性:封装(隐藏细节)、继承(代码复用)、多态(灵活扩展)和抽象(定义规范),通过代码示例展示了类与对象、构造方法、this/super关键字等核心概念。文章指出OOP的价值在于提高代码的可维护性、扩展性和复用性,特别适合大型项目开发。最后提到可深入探讨接口与抽象类的区别等具体知识点。
2026-01-19 11:39:34
810
原创 软件的设计模式
设计模式的核心是 “解耦”:创建型解耦 “对象创建”,结构型解耦 “类 / 对象组合”,行为型解耦 “对象交互”,最终目标是代码可维护、可扩展。选择模式的关键是场景需控制对象创建:单例、工厂、建造者;需适配 / 扩展对象功能:适配器、装饰器、代理;需规范对象交互:策略、观察者、模板方法;避免过度设计:设计模式是 “工具”,不是 “教条”,简单场景用简单代码,只有当代码出现耦合、难以扩展时,再引入设计模式。
2026-01-19 11:08:15
976
原创 vue3中前端正在开发中的过渡组件
摘要:该页面展示了一个正在开发中的"导航位置管理"功能,包含开发状态提示和进度跟踪。页面采用居中布局,显示"页面开发中"的提示图标和文字说明,并通过进度条直观展示当前开发阶段:功能设计已完成(100%)、前端开发进行中(60%)、后端接口待开始(10%)。底部标注预计完成时间为"待定",整体采用蓝色为主色调,界面简洁清晰。
2026-01-12 11:03:08
85
原创 jeecgboot中的常见注解
日志记录@AutoLog通过 AOP 实现无侵入式日志。文档生成@Operation帮助生成清晰的 API 文档。权限控制确保只有授权用户能调用。HTTP 语义明确接口行为为删除操作。
2026-01-09 11:19:30
304
原创 jeecgboot 关于新增接口添加默认值失败处理方式
摘要:针对jeecgboot的online代码导入后默认值同步问题,研究发现虽然online表单能设置默认值,但本地运行时数据库无法同步。解决方案是在controller中手动设置默认值,如通过@PostMapping方法在保存前对实体类属性赋值(如delFlag="0"),确保数据入库时携带默认值。该方法有效解决了默认值不同步问题,示例代码展示了在add接口中设置多个字段默认值的实现方式。
2026-01-09 11:10:50
191
原创 react没有双向数据绑定是怎么实现数据实时变更的
摘要:React通过受控组件和状态管理实现类似双向绑定的效果。核心机制包括:1)受控组件将表单值绑定到state,通过onChange事件更新;2)状态提升实现组件间数据共享。对于复杂场景,可使用Context+useReducer或Redux等状态管理库。相比Vue的双向绑定,React的单向数据流更灵活可控,适合大型应用,但需手动管理状态更新。优化策略包括React.memo缓存、批量更新和虚拟化列表。根据项目复杂度选择React(精细控制)或Vue(快速开发)。
2026-01-09 10:21:40
397
原创 jeecgboot建表规范
本文总结了数据库建表规范,主要包括:1.表设计规范,如主键用Id字段,外键按"关联表名_字段名"命名,状态字段加注释;2.表命名需加业务前缀,包含标准字段如创建时间、更新人等;3.字段类型建议用string而非数字类型,大文本慎用blob;4.强调字段注释和索引命名规范;5.要求SQL编写考虑多数据库兼容性。规范旨在统一表结构设计,确保数据一致性和跨平台兼容性。
2025-12-30 16:16:35
249
原创 RustFs 前端开发
本文档详细介绍了如何在Node.js环境中使用AWS S3 JavaScript SDK(v3)连接RustFS对象存储系统。主要内容包括:SDK安装和初始化配置;基础操作(创建Bucket、上传/下载/删除/列举对象);高级功能(生成预签名URL、分片上传);常见问题解决方法。文档提供了完整的代码示例,特别强调需要启用forcePathStyle以兼容RustFS,并展示了如何在前端通过预签名URL实现安全上传。适用于开发者快速实现与RustFS的集成。
2025-12-25 14:29:18
431
原创 Eureka笔记(黑马)
摘要:Eureka微服务架构包含服务注册与发现两大功能。EurekaServer作为注册中心记录服务信息并监控心跳,EurekaClient分为Provider(服务提供者)和Consumer(服务消费者)。Provider向Eureka注册服务并定期发送心跳,Consumer从Eureka获取服务列表并进行负载均衡调用。实现步骤包括:搭建EurekaServer、服务注册(配置eureka-client)和服务发现(配置eureka-client)。该架构通过服务注册与发现机制实现了微服务间的动态调用。
2025-12-22 17:23:18
189
原创 在Spring Cloud中,服务间中HTTP请求方式
SpringCloud中服务间HTTP调用的主要方式包括:1)RestTemplate(同步阻塞,逐步被取代);2)WebClient(推荐异步方式,支持响应式编程);3)FeignClient(声明式REST客户端,代码简洁)。所有方式都支持服务发现和负载均衡,需配合注册中心使用。关键区别在于同步/异步特性和编码风格,开发者可根据项目需求选择合适方案。
2025-12-22 16:48:57
536
原创 认识微服务-微服务技术对比
微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。使用spring cloudalibaba技术栈。使用springcloudalibaba技术栈。使用springcloud技术栈。服务接口采用restful风格。服务接口采用restful风格。服务接口采用dubbo协议标准。服务接口采用dubbo协议标准。认识微服务-微服务技术对比。服务调用采用feign方式。服务调用采用fegin方式。服务调用采用dubbo方式。服务调用采用dubbo方式。
2025-12-22 13:26:52
236
原创 认识微服务-服务架构演变(黑马笔记)
1、单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。2、分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。1、单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。4、隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题。3、自治:团队独立、技术独立、数据独立、部署独立。2、面向服务:微服务对外暴露业务接口。3、服务之间如何实现远程调试?2、服务集群地址如何维护?4、服务健康状态如何感知?1、服务拆分粒度如何?
2025-12-22 12:00:32
281
原创 分享一个vscode的todo插件(todo Tree 包含使用
TodoTree插件是一款高效的任务管理工具,用户可通过插件商店下载安装。该插件以树状结构展示文件列表,支持使用Ctrl+/快捷键快速添加注释,输入"TODO"即可标记待办事项。安装后能直观查看和管理代码中的任务标记,提升开发效率。
2025-12-15 14:40:30
391
原创 数据库表设计的流程(包含设计流程、建立数据库模型以及使用dbword导出数据库文档)
数据库表设计标准化流程包含六个关键阶段:1.需求分析(明确业务目标、数据实体与约束)→2.概念设计(ER图绘制与规范化检查)→3.逻辑设计(表结构定义与范式处理)→4.物理设计(索引优化与分区分表)→5.验证优化(完整性测试与性能调优)→6.模型建立(使用Navicat等工具生成文档)。流程强调从业务需求到技术实现的闭环设计,需平衡范式规范与性能优化,最终形成可执行的SQL方案及设计文档。
2025-12-10 13:20:50
562
原创 react中的函数组件和类组件(快捷指令和区别)
VSCode插件通过快捷指令(rfc/rcc等)极大提升React开发效率。文章对比了函数组件与类组件:函数组件语法简洁,使用Hooks管理状态和副作用;类组件采用传统OOP语法,提供完整生命周期方法。Hooks的引入使函数组件成为主流选择,其轻量特性更优性能,但类组件在复杂场景仍有优势。总体而言,函数组件凭借简洁语法和Hooks优势更受推荐,而类组件适合特定需求场景。
2025-12-10 11:57:13
926
原创 与十年全栈工程师沟通后了解到的项目流程(笔记)
7、现场调研(仔细)怎么调研,有谁配合调研,让调研的人提前准备。10、需求分析说明书。14、上线试运行计划。
2025-12-10 11:19:19
110
原创 MySQL 错误 1005 (errno: 150) 深度解析与解决方案
MySQL外键约束创建失败(错误1005)常见原因及解决方法:1.数据类型不匹配(需检查字段类型、长度、字符集);2.被引用列非主键/唯一键(需添加唯一索引);3.存储引擎不支持(需改用InnoDB);4.数据不一致(需清理无效数据或补充缺失记录);5.表/列不存在(需确认表结构)。建议通过SHOW CREATE TABLE和SHOW INDEX等命令排查具体问题。
2025-12-08 16:30:44
375
原创 commitlint ~git comiit提交报错
标准Git提交格式示例:使用type(scope):description格式,如feat:合并代码或fix:解决合并冲突。若遇到提交报错,可能是启用了commitlint插件,需按指定格式规范提交信息。常见类型包括feat(新功能)、fix(修复)、refactor(重构)等。
2025-11-28 15:11:09
106
原创 前端学后端学习路线
根据你的技术背景(C语言基础、精通Vue/React、Node.js服务端经验),以下是为你定制的Java Spring Boot学习路线。
2025-05-02 00:15:09
843
原创 后端开发三层架构
在后端开发中,三层架构是一种经典且广泛应用的分层设计模式,其核心思想是将业务逻辑、数据访问和用户界面分离,以提升系统的可维护性、可扩展性和复用性。
2025-04-26 01:52:07
1184
原创 在前端中常见的冒泡和捕获
2、那么捕获是指我们事件触发时,从祖先元素逐级传递到子元素上,在开发的过程中可以通过将监听器绑定到祖先元素中来进行事件传递之前对于全局的一个处理。1、冒泡是指我们当前事件触发时的,该事件会进行逐级向上传递到祖先元素上,一直达到我们文档流中的根节点上。这个事件流的模型的执行顺序是先通过捕获阶段,后通过目标阶段,再执行冒泡阶段。常用于事事件委托,在父元素上监听子元素的事件,从而减少事件监听的数量,提高性能。那么在事件传播的过程中会触发每一个经过的元素上绑定的监听器。冒泡是默认的事件传播方式,除非特别的指定。
2025-02-21 15:32:27
162
原创 关于css中bfc的理解
那么块级格式化上下文意味着我们在bfc的区域内生成了一块独立于当前文本流的样式、它不受外界样式的影响、有着专属于自己的样式。那么bfc是在什么特定情况下生成呢,或者换句话说开发的过程中需要怎么操作,可以借助我们的bfc从容面对我们复杂的布局呢。与bfc对应的是我们的ifc布局即内联式样式布局,以垂直竖列进行布局,不会生成新的块级容器。基于这样的定义我们可以避免一些样式冲突、在我们开发者面对复杂布局时可以更加从容的应对,这边除了none block inline。以上是对于bfc的理解。
2025-02-21 14:47:09
493
原创 后台管理-动态路由配置以及用户权限管理(vue3+element plus+koa+Sequelize )
之前在校期间开发了一个校园二手物品交易网站前端采用Vue2结合Element UI后端采用了koa 、Sequelize 、Mysql在工作了一年多之后,突然想针对工作所学来完善一下自己手里的项目想要做一个针对于该平台或多个平台,来进行路由配置和角色集中管理的平台,其中涉及到的功能点有路由管理,账号的角色管理,以及用户账号密码之类等功能点。
2024-11-27 10:14:18
1156
原创 js代码把时间精确到毫秒
对象,该对象表示当前的日期和时间。然后,它提取并格式化年、月、日、小时、分钟、秒和毫秒。最后,它将所有这些部分组合成一个字符串,并使用。方法返回的月份是从 0 开始的(即 0 表示 1 月,11 表示 12 月),因此在格式化月份时,我们需要将其加 1。方法用于确保月份、日期、小时、分钟、秒和毫秒始终有两位或三位数字(根据需要)。当您想要获取当前时间并精确到毫秒时,可以使用 JavaScript 的。这段代码首先创建一个。
2024-05-22 10:12:05
2979
原创 给我一段js代码把时间转换成时间戳
方法后,将返回自1970年1月1日00:00:00 UTC以来的毫秒数,这个值被存储在。这个方法返回自1970年1月1日00:00:00 UTC以来的毫秒数。如果您有一个特定的日期和时间字符串,并希望将其转换为时间戳,您可以先使用。对象)转换为时间戳(毫秒为单位),您可以直接使用。是一个ISO 8601格式的日期字符串。要将JavaScript中的时间(构造函数或其他日期解析方法(如。是一个包含当前日期和时间的。方法获取对应的时间戳。
2024-05-22 10:10:49
560
原创 前端 控制台提示invalid date
确保您的时间戳字符串只包含数字,并且是一个有效的、表示自1970年1月1日以来的毫秒数的数字。如果时间戳是从其他地方获取的,可能需要检查它的来源以确保其有效性。构造函数的字符串或数值无法被解析为一个有效的日期。对于时间戳来说,确保它是一个有效的数字(表示自1970年1月1日00:00:00 UTC以来的毫秒数)。如果您的时间戳确实是一个无效值,那么您需要找到正确的时间戳来源,或者使用其他日期字符串格式与。如果转换失败,我们会打印出一个错误消息。以下是一个确保时间戳有效,并将其转换为。
2024-05-22 10:09:58
2140
原创 js代码把时间戳的年月日提取出来
方法分别提取年份、月份和日期。最后,我们将这些值格式化为一个字符串,并使用。返回的月份是从0开始的,所以您需要加1来获取常规的月份。构造函数将时间戳转换为日期对象,然后使用。要从时间戳中提取出年月日,您可以首先使用。来表示时间戳对应的日期。方法被用来确保月份和日期始终为两位数。方法分别获取年份、月份和日期。在这段代码中,我们首先创建了一个。
2024-05-22 10:07:40
1492
原创 js代码来判断时间戳和时间对象
通过这两个函数,你可以轻松地判断一个变量是时间戳还是时间对象。在示例用法中,我们分别检查了一个时间戳和一个时间对象,并打印了结果。同时,你可以通过检查一个变量是否为数字来判断它是否可能是时间戳。满足这些条件的变量可以被认为是时间戳。在JavaScript中,你可以使用。函数检查传入的变量是否为数字(函数则检查传入的变量是否为。运算符来判断一个变量是否是。),并且其时间戳是否有效(对象的时间戳,如果它返回。),以及是否为整数(
2024-05-22 10:07:07
1342
原创 js代码匹配两个对象数组看哪个属性发生了变化(亲测好用)
要匹配两个对象数组并找出哪个属性发生了变化,你可以遍历这两个数组,然后比较每个对象的相应属性。以下是一个简单的示例,假设我们有两个数组。,值是另一个对象,描述了哪个属性发生了变化以及它的新旧值。注意,这个示例假设数组是按。函数接受两个数组作为参数,并返回一个对象,该对象的键是发生变化的对象的。如果你的数据结构不同,你可能需要调整这个逻辑以适应你的需求。排序的,并且两个数组中的对象在相同索引处具有相同的。,并且每个对象都有一个。
2024-05-22 10:05:31
798
原创 Object.assign
是 JavaScript 中的一个方法,用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
2024-05-22 10:04:20
546
原创 cherry-pick的强大之处在于哪里
你可以将某个提交直接引入目标分支,而无需在目标分支上创建一个新的合并提交。:有时在合并分支时可能会遇到冲突,解决冲突后可能希望保留解决冲突后的状态,但撤销其他不必要的合并更改。的强大之处在于它提供了一种灵活的方式来应用特定的提交到不同的分支上,而无需合并整个分支或拉取其他不需要的提交。时要小心处理可能出现的重复提交或历史不一致的情况,以避免引入不必要的问题。,你可以轻松地将这个有价值的提交应用到其他分支,而无需合并整个分支。来逐个应用你想要的提交,从而避免不必要的合并提交和混乱。
2024-05-22 09:52:43
906
原创 判断对象数组中的任意一个对象中,判断是否有obj.a=“2“
方法来确保对象确实具有该属性,然后再比较属性的值。这是为了确保不会因为对象继承自原型链的属性而产生误判。方法会测试数组中的元素是否至少有一个通过由提供的函数实现的测试。如果有任何一个元素通过测试,则返回。要判断对象数组中的任意一个对象是否包含属性。中的每个对象,并使用箭头函数。在这个例子中,我们使用了。如果至少有一个对象的。
2024-05-22 09:51:11
383
原创 window快捷锁屏
打开“开始菜单”,点击“设置”按钮,进入“Windows设置”对话框后选择“系统”选项,再点击“电源和睡眠”选项。在“电源和睡眠”设置页面中,点击“从不”下拉菜单,选择合适的时间间隔,例如设置为5分钟。这样,当电脑闲置达到设定的时间后,就会自动锁屏。在Windows系统桌面空白处点击右键,选择“新建/新建快捷键”菜单项,然后在弹出窗口的文本框中输入锁屏命令,并命名为“一键锁屏”。你可以点击Windows左下角的“开始”按钮,在打开的“开始菜单”中点击你的账户名称,然后在弹出来的列表中选择“锁定”即可。
2024-05-22 09:44:52
3157
原创 状态码502和503的区别
这通常是由于服务器过载、维护、临时故障或其他短暂性问题引起的。虽然服务器可能暂时无法处理请求,但这个问题通常是暂时性的,服务器可能会在一段时间后变得可用。HTTP状态码502 Bad Gateway意味着服务器作为网关或代理,从上游服务器(例如,应用程序服务器或另一台代理服务器)接收到了无效的响应。这可能是由于上游服务器的问题,或者网关/代理服务器与上游服务器之间的通信问题。综上所述,502状态码主要关注于网关或代理与上游服务器之间的通信问题,而503状态码则更侧重于服务器本身暂时无法处理请求的情况。
2024-05-22 09:08:58
2704
原创 js中数组的filtter方法
方法是 JavaScript 中数组对象的一个内置方法,用于创建一个新数组,新数组中的元素是通过检查指定函数而得出的所有元素。方法会遍历数组中的每个元素,并对每个元素执行提供的函数。如果该函数对某元素返回。假设我们有一个包含数字的数组,我们想要创建一个新数组,其中只包含偶数。(即该元素是否为偶数)。满足条件的元素被收集到新的。数组中的每个元素,并检查每个元素是否满足条件。方法不会改变原数组,而是返回一个新数组。,则该元素会被包含在新数组中。
2024-05-22 09:07:06
393
原创 js给数组前插
在JavaScript中,如果你想在数组的开头插入一个或多个元素,你可以使用数组的。在这个例子中,我们首先创建了一个包含四个元素的数组。方法将一个或多个元素添加到数组的开头,并返回新数组的长度。方法后,我们都会打印数组以查看其当前状态。方法在数组的开头插入了一个元素。,之后我们又插入了两个元素。
2024-05-22 09:04:48
3408
数据库,使用软件链接好数据库后导出数据库设计
2025-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅