Java
技术小菜jishuxiaocai.com
这个作者很懒,什么都没留下…
展开
-
MDC 优雅的追踪日志方案
通过什么方式,可以在logger的输出结果上自动附加一个标识? 日常开发中,为了能够快速定位问题,通常需要在日志中记录请求url,请求方法,用户ID,请求ID等等等等。硬编码的形式log.info("requestUrl:{}, userId: {}......", requestUrl, userId);显然是无法满足要求的,这样实现工作量大,易出错,改动也极其不便。 解决方案 使用MDC只需要几行代码就能轻松应对上述需求。实现一个Filter,使用MDC.put(key, val)写入需要打印的参数。原创 2020-05-23 02:10:31 · 339 阅读 · 0 评论 -
Java集合之ArrayList
文章目录底层数据结构构造函数add(E e)add(int index, E e)remove(int index)ConcurrentModificationExceptionsubList()小结 底层数据结构 ArrayList的底层数据结构是数组 transient Object[] elementData;//底层数据结构,数组 private int size;//已存放数量 这里先说一下ArrayList中大量使用的复制数组的方法,该方法是一个native方法,jvm进行了特殊的优化,比J原创 2020-05-22 02:46:38 · 317 阅读 · 0 评论 -
抽奖小程序设计开发
功能设计 每次抽奖可设一二三等奖,没中大奖中个安慰奖也能提高用户对抽奖活动的信任度和参与感。 分享砍价、分享增加中奖概率,驱动用户更多地分享裂变,获取更多流量。 奖品可设置指定人数开奖、指定时间开奖两种类型。 每日推送订阅消息,召回用户,提高留存。 表结构 微信用户表 t_user_info 管理员表 t_admin_user 抽奖奖项表 t_lottery 用户抽奖记录表 t_user_lottery 用户抽奖码 t_lucky_code 中奖记录表 t_user_prize 砍价商品表 t_gi原创 2020-05-21 23:13:45 · 1053 阅读 · 0 评论 -
【面试题】多线程交替打印
这两天在知乎上看到不同的人都问了这个问题,回想起当年找实习的时候也写过这个问题,觉得还蛮有意思的,就在这里记录一下。 最常见的是使用 notify() wait() public class Demo { public static void main(String[] args) { Object lock = new Object(); new Printer("线程 A", lock).start(); new Printer("线程 B", l原创 2020-05-21 00:27:37 · 189 阅读 · 0 评论