Day6笔记

一些代码注解

List<String> tagList = gson.fromJson(tags, new TypeToken<List<String>>(){}.getType());
  • ``Gson` 是 Google 提供的用于转换 Java 对象和 JSON 表示之间的一个简单轻量级库。
  • new TypeToken<List>(){}.getType()创建了一个匿名内部类的实例来捕获泛型类型信息List,然后通过 getType()获取该类型的Type对象。这是因为 Java 的泛型在运行时会擦除类型信息(即类型擦除),所以需要这样的方法来保留实际的泛型类型信息,以便Gson` 可以正确地反序列化数据。
 List<Pair<User, Long>> topUserPairList = list.stream()
                .sorted((a, b) -> (int) (a.getValue() - b.getValue()))
                .limit(num)
                .collect(Collectors.toList());

其中sorted((a, b) -> (int) (a.getValue() - b.getValue()))内部小于0是升序和写排序方法一致

方法引用 vs. Lambda 表达式

  • 方法引用 (TeamUserVO::getId):这是一种更为简洁的写法,当你要调用的方法已经存在并且符合函数式接口的要求时可以使用。它直接引用了类的静态方法、实例方法或构造器。
  • Lambda 表达式 (team -> team.getId()):提供了更大的灵活性,允许你编写更复杂的逻辑。在这个例子中,lambda 表达式接收一个 team 参数并调用它的 getId() 方法。
final List<Long> teamIdList = teamList.stream().map(team -> team.getId()) // 使用Lambda表达式    .collect(Collectors.toList());

final List<Long> teamIdList = teamList.stream().map(TeamUserVO::getId) // 使用方法引用    .collect(Collectors.toList());

重复加入队伍的问题

只要我们点的足够快,就可以在同一时间内往数据库插入多条同样的数据,所以这里我们使用分布式锁(推荐)使用两把锁,一把锁锁队伍,一把锁锁用户(实现较难,不推荐)

posted @ 2024-12-30 23:47  Sha11ow  阅读(11)  评论(0)    收藏  举报