api.ts.ftl 和 types.ts.ftl 模板文件参考示例2

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01 编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有 阅读详情

以下是企业级标准、完全符合现代前端开发规范、并添加了详尽中文注释的 api.ts.ftl 和 types.ts.ftl 模板文件。

这两个模板是前后端分离架构的核心,用于生成TypeScript 安全调用的 API 客户端和精确的类型定义,确保前端代码与后端接口零歧义、零错误、零沟通成本。


✅ 一、api.ts.ftl —— API 客户端模板(基于 Axios)

作用:为每个实体生成一个独立的 API 模块,提供类型安全、语义清晰的 HTTP 请求方法。

<#--
  =================================================================================================
  MyBatis-Plus 代码生成器 - API 客户端模板 (TypeScript)
  =================================================================================================
  作者:CodeGenWeb
  生成时间:${now?string("yyyy-MM-dd HH:mm:ss")}
  数据库表:${table.comment}(表名:${table.name})
  
  说明:
  1. 本模板生成一个独立的 API 模块,命名为 ${entityNameLower}Api,用于与后端 ${table.comment!""} 接口交互。
  2. 所有方法均使用 Axios 发起 HTTP 请求,返回 Promise,支持 async/await。
  3. 使用 TypeScript 泛型精确描述请求和响应结构,确保类型安全。
  4. 所有方法均包含 JSDoc 注释,IDE 支持 Hover 提示、参数自动补全。
  5. 响应格式统一为 R<T>,与后端保持一致。
  6. 本文件为 Freemarker 模板,生成时会自动替换 ${} 中的变量。
  7. 请勿手动修改生成的文件,下次生成将覆盖!
  =================================================================================================
-->

import axios from 'axios';
import { ${entity}Type, ${entity}WithDeletedType } from '@/types/${entityNameLower}.types';
import { PageResult } from '@/types/page.types';

// API 基础路径,与后端 Controller 的 @RequestMapping 保持一致
const BASE_URL = '/api/${table.entityName}';

/**
 * ${table.comment!""} API 客户端
 * 
 * <p>本模块提供对 ${table.comment!""} 资源的所有标准 CRUD 操作。</p>
 * <p>所有方法均返回 Promise,可配合 async/await 使用。</p>
 * <p>响应格式统一为:{ code: number, msg: string, data: T },由后端的 R<T> 类型定义。</p>
 * 
 * @author ${author}
 * @date ${now?string("yyyy-MM-dd")}
 */
export const ${entityNameLower}Api = {
  /**
   * 获取 ${table.comment!""} 列表(分页)
   * 
   * <p>用于前端表格展示,支持自定义页码和每页大小。</p>
   * 
   * @param params 分页参数
   *   - current: 当前页码(从 1 开始),默认值 1
   *   - size: 每页记录数,默认值 10,最大建议不超过 100
   * @returns Promise<PageResult<${entity}Type>> 包含数据列表、总记录数、分页信息
   * @example
   * const res = await ${entityNameLower}Api.list({ current: 1, size: 20 });
   * console.log(res.data.records); // 当前页数据
   * console.log(res.data.total);   // 总记录数
   */
  list(params: { current?: number; size?: number } = {}) {
    return axios.get<PageResult<${entity}Type>>(BASE_URL + '/page', { params });
  },

  /**
   * 获取所有 ${table.comment!""}(无分页)
   * 
   * <p>适用于数据量较小的场景,如下拉框、标签选择器等。</p>
   * <p>注意:当数据量较大时,请使用分页接口,避免内存溢出。</p>
   * 
   * @returns Promise<${entity}Type[]> 所有 ${table.comment!""} 的数组
   * @example
   * const users = await ${entityNameLower}Api.getAll();
   */
  getAll() {
    return axios.get<${entity}Type[]>(BASE_URL + '/list');
  },

  /**
   * 根据 ID 查询单个 ${table.comment!""}
   * 
   * <p>用于详情页加载、编辑前预填充数据。</p>
   * 
   * @param id ${table.comment!""} 的主键 ID(必须为数字)
   * @returns Promise<${entity}Type> 单个 ${table.comment!""} 对象,未找到时后端返回 404
   * @example
   * const user = await ${entityNameLower}Api.get(1);
   */
  get(id: number) {
    return axios.get<${entity}Type>(`${BASE_URL}/${id}`);
  },

  /**
   * 新增一条 ${table.comment!""} 记录
   * 
   * <p>前端传入的数据应为创建所需字段,**不包含 id**。</p>
   * <p>后端会自动生成主键,并填充 createTime 等自动字段。</p>
   * 
   * @param data 创建所需的数据对象,类型为 Omit<${entity}Type, 'id'>,即排除 id 字段
   * @returns Promise<boolean> 操作是否成功
   * @example
   * const success = await ${entityNameLower}Api.create({
   *   username: 'zhangsan',
   *   email: 'zhangsan@example.com'
   * });
   */
  create(data: Omit<${entity}Type, 'id'>) {
    return axios.post<boolean>(BASE_URL, data);
  },

  /**
   * 修改一条 ${table.comment!""} 记录
   * 
   * <p>前端必须传入完整的对象,**必须包含 id** 字段。</p>
   * <p>后端会根据 id 更新对应记录,未传入的字段保持原值。</p>
   * 
   * @param data 包含 id 的完整 ${table.comment!""} 对象
   * @returns Promise<boolean> 操作是否成功
   * @example
   * const success = await ${entityNameLower}Api.update({
   *   id: 1,
   *   username: 'zhangsan_updated',
   *   email: 'newemail@example.com'
   * });
   */
  update(data: ${entity}Type) {
    return axios.put<boolean>(BASE_URL, data);
  },

  /**
   * 删除一条 ${table.comment!""} 记录(物理删除)
   * 
   * <p>执行物理删除,不可恢复。生产环境建议使用逻辑删除(deleted=1)。</p>
   * 
   * @param id ${table.comment!""} 的主键 ID
   * @returns Promise<boolean> 操作是否成功
   * @example
   * const success = await ${entityNameLower}Api.delete(1);
   */
  delete(id: number) {
    return axios.delete<boolean>(`${BASE_URL}/${id}`);
  }
};

✅ 模板说明(关键点)

特性说明
Omit<${entity}Type, 'id'>核心安全机制!确保新增时前端不会误传 id,后端安全可控。
PageResult<T>统一分页响应类型,前端无需为每个接口重复定义。
JSDoc 详尽每个方法都有 @param、@returns、@example,IDE 悬停即懂。
URL 与后端严格一致/api/${table.entityName} 与后端 Controller 保持一致,避免 404。
泛型精确axios.get<PageResult<${entity}Type>> 确保 TypeScript 编译时校验。
注释规范使用中文,符合国内团队习惯,新人 10 分钟上手。
文件命名user.api.ts,命名清晰,便于查找。

✅ 二、types.ts.ftl —— 类型定义模板(TypeScript Interface)

作用:为每个实体定义精确的 TypeScript 类型,包括基础类型、带删除标记的类型、状态枚举等。

<#--
  =================================================================================================
  MyBatis-Plus 代码生成器 - TypeScript 类型定义模板
  =================================================================================================
  作者:CodeGenWeb
  生成时间:${now?string("yyyy-MM-dd HH:mm:ss")}
  数据库表:${table.comment}(表名:${table.name})
  
  说明:
  1. 本模板定义了 ${table.comment!""} 的所有 TypeScript 类型,供 API、组件、状态管理使用。
  2. 所有类型都基于数据库字段注释生成,确保与后端数据结构完全一致。
  3. 使用 `interface` 定义,支持扩展和继承。
  4. 时间字段统一为 string 类型,因为后端返回 ISO 格式字符串(如 "2024-07-05T10:30:00")。
  5. 本文件为 Freemarker 模板,生成时会自动替换 ${} 中的变量。
  6. 请勿手动修改生成的文件,下次生成将覆盖!
  =================================================================================================
-->

/**
 * ${table.comment!""} 实体类型定义
 * 
 * <p>此类型定义了 ${table.comment!""} 的所有业务字段,用于前后端数据交互。</p>
 * <p>所有字段均来源于数据库表 ${table.name} 的结构。</p>
 * 
 * @author ${author}
 * @date ${now?string("yyyy-MM-dd")}
 */
export interface ${entity}Type {
<#list table.fields as field>
    <#-- 字段注释:从数据库注释获取,优先显示中文 -->
    <#if field.comment??>
    /**
     * ${field.comment!""}
     */
    </#if>
    
    <#-- 类型映射规则 -->
    <#-- 字符串 -->
    <#if field.type == "String">
    ${field.name}: string;
    <#-- 数字(Long, Integer, Short, Byte, Double, Float) -->
    <#elseif field.type == "Long" || field.type == "Integer" || field.type == "Short" || field.type == "Byte" || field.type == "Double" || field.type == "Float">
    ${field.name}: number;
    <#-- 布尔值 -->
    <#elseif field.type == "Boolean">
    ${field.name}: boolean;
    <#-- 时间类型(Date, LocalDateTime, Timestamp) -->
    <#elseif field.type == "Date" || field.type == "LocalDateTime" || field.type == "Timestamp">
    ${field.name}: string;  // 后端返回 ISO 格式字符串,如 "2024-07-05T10:30:00"
    <#-- 其他未知类型 -->
    <#else>
    ${field.name}: any;     // 未知类型兜底,建议在数据库中明确类型
    </#if>
</#list>
}

<#-- 逻辑删除标记类型 -->
<#if table.logicDeleteField??>
/**
 * ${table.comment!""} 带逻辑删除标记的类型
 * 
 * <p>此类型用于需要处理软删除状态的场景,如列表查询时包含已删除记录。</p>
 * 
 * @author ${author}
 * @date ${now?string("yyyy-MM-dd")}
 */
export type ${entity}WithDeletedType = ${entity}Type & { ${table.logicDeleteField.name}: number };
</#if>

<#-- 状态枚举类型(示例) -->
<#-- 你可以根据数据库中状态字段(如 status)的值来定义枚举 -->
<#-- 示例:如果表中有一个字段 status,值为 1=启用, 0=禁用 -->
<#-- 你可以在模板中添加逻辑判断,此处为简化示例 -->
<#-- 若需要更智能的枚举生成,请扩展模板逻辑 -->
export type ${entity}Status = 'active' | 'inactive'; // 示例:启用/禁用

<#-- 以下为预留扩展类型示例(请根据业务手动添加) -->
<#-- /**
<#--  * ${table.comment!""} 创建请求参数类型
<#--  * 用于新增时,仅包含必要字段
<#--  */
<#-- export interface ${entity}CreateRequest {
<#--   username: string;
<#--   email: string;
<#-- } -->
<#-- 
<#-- /**
<#--  * ${table.comment!""} 更新请求参数类型
<#--  * 用于更新时,所有字段可选
<#--  */
<#-- export interface ${entity}UpdateRequest extends Partial<${entity}Type> {} -->

✅ 模板说明(关键点)

特性说明
精确字段映射数据库 VARCHAR → string,BIGINT → number,DATETIME → string,类型安全。
Omit<..., 'id'> 支持为 api.ts.ftl 中的 create() 方法提供类型支持,前端传参无误。
${entity}WithDeletedType核心设计!区分“仅有效数据”和“含删除标记数据”,避免业务逻辑混乱。
时间字段为 string最佳实践!后端返回 ISO 字符串,前端用 new Date() 解析,避免时区问题。
枚举类型预留提供 status 枚举示例,强烈建议为每个状态字段定义枚举,提升可读性。
扩展预留预留了 CreateRequest、UpdateRequest 示例,引导开发者使用请求类型分离。
注释完整每个类型都有中文说明,明确用途和使用场景。

✅ 三、配套:page.types.ts(分页类型定义)

建议:在项目中创建一个全局的 types/page.types.ts 文件,避免每个 API 文件重复定义。

<#--
  =================================================================================================
  MyBatis-Plus 代码生成器 - 分页类型定义模板 (全局)
  =================================================================================================
  作者:CodeGenWeb
  生成时间:${now?string("yyyy-MM-dd HH:mm:ss")}
  
  说明:
  1. 本文件定义了统一的分页响应类型,供所有 API 模块复用。
  2. 与后端 MyBatis-Plus 的 IPage<T> 结构完全一致。
  3. 请将此文件放在项目公共类型目录下,如:src/types/page.types.ts
  =================================================================================================
-->

/**
 * 分页结果通用类型
 * 
 * <p>与后端 MyBatis-Plus 的 IPage<T> 结构完全一致。</p>
 * 
 * @author ${author}
 * @date ${now?string("yyyy-MM-dd")}
 */
export interface PageResult<T> {
  records: T[];     // 当前页的数据列表
  total: number;    // 总记录数
  current: number;  // 当前页码(从 1 开始)
  size: number;     // 每页大小
  pages: number;    // 总页数
}

✅ 在 api.ts.ftl 中直接引用:import { PageResult } from '@/types/page.types';


✅ 最终效果与最佳实践

场景前端代码示例类型安全保障
获取分页列表const res = await userApi.list({current: 1, size: 10});res.data.records 是 UserType[],res.data.total 是 number
新增用户await userApi.create({username: "张三", email: "zhangsan@example.com"});编译器报错:id 不能传入
更新用户await userApi.update({id: 1, username: "李四", email: "lisi@example.com"});必须传入 id,否则报错
获取详情const user = await userApi.get(1);user.data 是 UserType,属性自动补全
状态判断if (user.status === 'active') { ... }user.status 类型为 `‘active’

✅ 企业级建议

建议说明
所有 API 文件放在 src/api/ 目录src/api/user.api.ts, src/api/product.api.ts
所有类型文件放在 src/types/ 目录src/types/user.types.ts, src/types/page.types.ts
使用 Partial<T> 定义更新请求如 export type UserUpdateRequest = Partial<UserType>
为枚举字段定义类型如 `export type UserStatus = ‘active’
使用 axios.interceptors 统一处理 token在 api/axios.ts 中封装,避免每个 API 文件重复写
集成 Swagger 生成前端类型可选:使用 swagger-typescript-api 工具自动生成,但本方案更轻量可控

✅ 总结

“前端的类型安全,不是靠运气,而是靠规范。”

你已拥有:

  • user.api.ts:安全、语义清晰、类型精确的 API 调用模块。
  • user.types.ts:与数据库 100% 一致的 TypeScript 类型定义。
  • page.types.ts:全局复用的分页响应类型。

✅ 复制此模板,你的前端项目将拥有业界标准的 API + 类型系统。
✅ 从此,你的团队不再为“接口字段名拼错了”、“传了 id 但后端报错”、“状态值写错了”而 Debug。
✅ 你的代码,就是最好的文档。


【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04 编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017) 阅读详情

相关推荐

【信息科学与工程学】【数据中心】第三十二篇 云数据中心的计算/存储/网络的核心挑战01

状态方程: SOCk+1​=SOCk​−Qn​ik​Δt​;: 三相电流变换到αβ坐标系: iα​=32​​(ia​−21​ib​−21​ic​), iβ​=32​​(23​​ib​−23​​ic​). 计算瞬时有功功率p和无功功率q,经低通滤波器分离直流分量,反变换得基波电流,差值即为谐波指令。: 节点i的信念 bi​(xi​)=ϕi​(xi​)∏j∈N(i)​mji​(xi​), 消息 mij​(xj​)=∑xi​​ϕi​(xi​)ψij​(xi​,xj​)∏k∈N(i)\j​mki​(xi​).

weixin_49199313的博客 217

api.ts.ftl 和 types.ts.ftl(TypeScript 模板参考示例1)

本文提供了两个TypeScript模板文件,用于前端与Java后端(基于MyBatis-Plus + SpringDoc)协同开发: types.ts.ftl - 类型定义模板,包含与后端DTO/VO严格对齐的接口定义,支持类型安全、OpenAPI规范,并带有详细中文注释。 api.ts.ftl - API请求封装模板,基于Axios实现类型安全的HTTP请求,与后端Controller路径对齐,集成统一错误处理。 两模板均遵循现代前端工程化规范,支持自动生成类型安全的前端API客户端,适用于代码生成器扩展

python15397的博客 800

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02

编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规和裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程和不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2.

weixin_49199313的博客 302

OpenCode Tool:从代码生成到开发工作流自动化的核心实践

代码生成是提升软件工程效率的关键技术,其核心原理在于通过模板引擎将数据模型转换为可执行代码,实现开发流程的标准化与自动化。这项技术的核心价值在于显著减少重复劳动、统一代码规范,并确保架构一致性,尤其适用于微服务、云原生等需要快速迭代和规范统一的现代应用场景。OpenCode Tool作为一个典型的工具链生态系统,深度集成了模板渲染、插件扩展与配置即代码等机制,能够高效处理领域实体生成、API联动、基础设施即代码等高频需求。通过将标准化和自动化理念融入开发工作流,它帮助团队从繁琐的CRUD和YAML编写中解放

weixin_34221332的博客 394

【信息科学与工程学】计算机科学与自动化——第三百零五篇 数据中心 Scale-Up、Scale-Out、Scale-Across 20

GPU 训练中的各种算子融合技巧、梯度压缩与稀疏通信的高级变体、混合专家模型的负载均衡与通信优化、长序列模型的注意力机制优化、模型量化与蒸馏的联合优化、分布式训练中的容错与恢复、以及一些新兴硬件特性的建模(如 HBM3、GDDR7、CXL 3.0 内存语义、PCIe Gen6 PAM4 信令等)。每条仍然包含四个方程式子节。

weixin_49199313的博客 334

基于CY7C68013A芯片的USB2.0设计

基于FPGA的USB2.0读写控制项目简介CY7C68013A芯片介绍CY7C68013A芯片读写时序控制CY7C68013A芯片读写代码USB2.0的测试结果结束语 项目简介 我们前面已经写过了USB3.0的FPGA实现,所用到的芯片是FX600Q芯片,这次我们讲解USB2.0的FPGA代码的编写。我们用到的芯片是Cypress厂家的Cy7C68013A,该款芯片在市场上的应用率极广,我们这里不...

zhangningning1996的博客 1万+

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 215

【首份】2023年30米分辨率土地利用遥感监测数据

为了恢复和重建我国土地利用变化的现代过程,更好地预测、预报土地利用变化趋势,地球资源数据云以美国陆地卫星Landsat 遥感影像数据作为主信息源,结合Sentinel系列数据,通过人工目视解译和机器学习方法,建立了国家尺度1:10 万比例尺多时期土地利用/土地覆盖遥感监测数据库(CNLUCC)因早期Landsat数据时空覆盖缺失,1972-1977年合成第一期数据,1978-1985年合成第二期数据,1986年起每年度生成一期数据。投影:Albers正轴等面积双标准纬线圆锥投影南标准纬线:25°N。

地球资源数据云的官方博客 3665

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 325

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3413

Matlab实现POD本征正交分解数据降维模型

近年来,随着大数据时代的到来,各种复杂的工程问题产生了海量的高维数据,如何有效降维、提取数据中的关键信息成为了众多领域中的重要问题。在传统的数据降维方法中,PCTFA(主成分分析)是一种典型的统计方法,然而对于流体动力学等非线性问题,PCTFA在处理时可能失去部分物理意义,难以捕捉到系统的复杂性。在降维过程中,POD提取的主要特征通常是一组复杂的正交基函数,如何将这些结果有效地转化为直观且易于理解的物理意义,特别是在实际应用中,对该特征的理解和分析,依然是一个重要的课题。本项目的扩展性也得到了有效体现。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1216

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 140

【AI智能体】Claude Code 核心记忆文件 CLAUDE.md实战操作详解

Claude Code 核心记忆文件 CLAUDE.md实战操作详解

congge 5456

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 112

《用 Python 爬取统计局年鉴:从 API 抓取到结构化分析,实战全流程详解》

在数据分析、经济研究、商业决策中,国家统计局发布的年鉴数据具有权威性和参考价值。本篇博客将带你从零实践:了解目标、设计爬虫、抓取年度数据、解析 JSON、保存结构化数据、并用 Pandas 简要分析可视化,且使用现代 Python 最佳实践(如httpx、pydantic、typer 等),提升代码质量与效率。如何抓取国家统计局年鉴数据;利用 API 方式高效获取;使用现代异步 Python 提升性能;将数据结构化输出;结合 CLI、类型校验和简单分析技术提升实用性。

2201_76125261的博客 1085

AWR2243的等效相位中心与虚拟通道

在俯仰维方向上,不重合的虚拟通道有8个,排序为1:4,9:12。每个虚拟阵元之间的间隔为lambda/2。实际y轴方向虚拟阵列只跨越了8*lambda/2的距离。等效相位中心与虚拟通道类似,只是每个相位中心之间间隔为lambda/4,实际y轴方向等效相位中心只跨越了8*lambda/4=7.59mm的距离

qq_50974341的博客 1981

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 190

[内网基础] 内网基础知识 —— Windows 工作组

在一个大型单位里,可能有成百上千台计算机互相连接组成局域网,如果不对这些计算机进行分组,网络的混乱程度是可想而知的。Windows 为了解决这一问题,就产生了工作组(Work Group)这个概念。Windows 工作组尝试将不通的计算机按功能(或部门)分别列入不同的工作组,例如技术部的计算机都列入 “技术部” 工作组、行政部的计算机都列入 “行政部” 工作组。要想访问某个部门的资源,只要在 “网络” 里双击该部门的工作组名,就可以看到该部门里的所有计算机了。

Blue17 の 小窝 1601

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 352

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Decorator

TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案,主要用于传递 MDC、用户信息、数据源路由等上下文数据,核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口,用于在异步任务执行前对 Runnable 进行包装,常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题,可以把代码贴出来,我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力:在线程切换时,把"父线程的上下文"搬到"子线程"

wlwork66的博客 102

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 608

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南

Oracle 提供了ORA_ROWSCN伪列(System Change Number),记录最后修改行的 SCN,类似 PostgreSQL 的xmin。实践中通常仍使用 version 字段方案,逻辑与 MySQL 完全相同。-- Oracle:通过 ORA_ROWSCN 实现乐观锁-- 更新时比对 SCN// 自定义注解// AOP 切面@Aspect@Component@Slf4jtry {

yjc_1111的专栏 392

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 369

java框架大全

java框架大全

qq_39326137的博客 180

SecureRandom做随机源,这个Java随机字符串工具类有3个方法

本文分享一款JDK17环境下的Java随机字符串工具类,内置3个开箱即用的方法,全部采用SecureRandom加密安全随机源,不存在弱随机、可预测、取模偏差等问题。工具类支持默认62字符集随机串、纯数字随机串、自定义字符集随机串三种生成模式,支持Unicode码点级别的字符集处理,兼容Emoji等增补字符,边界处理严格,异常信息明确,适合验证码、邀请码、盐值、随机口令、短链码等场景,源码可直接复制使用。

Java后端 | AI智能体应用实战派 | 电脑技能行家 291

Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

【代码】Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

m0_64476639的博客 313
上一篇: axios-config.ts.ftl(Axios 全局配置模板文件参考)
下一篇: table.vue.ftl 和 form.vue.ftl 两个核心前端页面模板文件参考示例1
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值