开发备忘录

代码摘录册

这是一个用于整理个人常用代码段、学习笔记与开发备忘的静态网页, 主要展示前端、脚本与日常开发中常见的代码写法,便于个人复习和查阅。

HTML / CSS 记录页面结构与样式片段
JavaScript 整理常用逻辑与实用函数
Python 保存日常脚本与数据处理示例
Java 归档后端开发中的常用代码写法

常用代码段展示

页面中的代码主要用于整理日常开发中常见的写法、工具函数和练习示例,方便按主题快速查阅。

JavaScript / 格式化时间
function formatDate(date) {
  const d = new Date(date);
  const y = d.getFullYear();
  const m = String(d.getMonth() + 1).padStart(2, "0");
  const day = String(d.getDate()).padStart(2, "0");
  return `${y}-${m}-${day}`;
}
Java / 列表转映射
public static Map<Long, User> toUserMap(List<User> users) {
    return users.stream()
        .collect(Collectors.toMap(
            User::getId,
            item -> item,
            (left, right) -> left,
            LinkedHashMap::new
        ));
}
Java / 简单结果封装
public class Result<T> {
    private final boolean success;
    private final String message;
    private final T data;

    private Result(boolean success, String message, T data) {
        this.success = success;
        this.message = message;
        this.data = data;
    }

    public static <T> Result<T> ok(T data) {
        return new Result<>(true, "success", data);
    }
}
Java / Stream 分组统计
public Map<String, Long> countSuccessByType(List<OrderLog> logs) {
    return logs.stream()
        .filter(Objects::nonNull)
        .filter(log -> log.getType() != null)
        .collect(Collectors.groupingBy(
            OrderLog::getType,
            LinkedHashMap::new,
            Collectors.filtering(
                log -> Boolean.TRUE.equals(log.getSuccess()),
                Collectors.counting()
            )
        ));
}
Java / 异步批量查询
public CompletableFuture<Map<Long, UserProfile>> loadProfilesAsync(
        List<Long> userIds, Executor executor) {
    List<CompletableFuture<UserProfile>> tasks = userIds.stream()
        .distinct()
        .map(id -> CompletableFuture.supplyAsync(() -> profileService.load(id), executor))
        .toList();

    return CompletableFuture.allOf(tasks.toArray(CompletableFuture[]::new))
        .thenApply(ignored -> tasks.stream()
            .map(CompletableFuture::join)
            .filter(Objects::nonNull)
            .collect(Collectors.toMap(
                UserProfile::getUserId,
                profile -> profile,
                (left, right) -> right
            )));
}
JavaScript / 请求重试封装
async function requestWithRetry(requestFn, retries = 3, delay = 500) {
  let lastError;

  for (let index = 0; index < retries; index += 1) {
    try {
      return await requestFn();
    } catch (error) {
      lastError = error;
      if (index === retries - 1) {
        break;
      }

      await new Promise(resolve => setTimeout(resolve, delay * (index + 1)));
    }
  }

  throw lastError;
}