55 Matching Annotations
  1. Dec 2022
  2. Aug 2022
    1. 并发查询余额

      查询余额和扣减不是两个操作,不是原子性的

    1. 了解了雪花算法的主键 ID 组成后不难发现,这是一种严重依赖于服务器时间的算法,而依赖服务器时间的就会遇到一个棘手的问题:时钟回拨。
    1. fst是什么?FST fast-serialization 是重新实现的 Java 快速对象序列化的开发包。序列化速度更快(2-10倍)、体积更小,而且兼容 JDK 原生的序列化。要求 JDK 1.7 支持。
    1. 如果希望 Value 以 JSON 保存并带上类型信息,更简单的方式是,直接使用 RedisSerializer.json() 快捷方法来获取序列化器。
    2. 它内部使用的 GenericJackson2JsonRedisSerializer 直接设置了把类型作为属性保存到 Value 中
    3. 没有用户态到核心态的拷贝
    4. 使用 try 来包裹 Stream 即可
    1. 网站地址,加密公钥,以及证书的颁发机构等信息

      和证书一起,把公钥发送过来

    1. JVM加载class文件读取时候使用Unicode编码方式正确读取class文件,那么原来定义的String s="汉字";在内存中的表现形式是Unicode编码
    1. 方法重载: 方法名 + 参数列表 -> 实际调用哪一个方法

      返回类型并不能决定一个方法调用

    1. 由于最高位计算结果为1,因此,加法结果变成了一个负数
    1. 查询sys.schema_table_lock_waits这张表,我们就可以直接找出造成阻塞的process id,把这个连接用kill 命令断开即可
    1. 调用 remove 方法删除元素,往往会遇到 ConcurrentModificationException 异常,原因是什么,修复方式又是什么呢

      遍历时,iterable会检测modCount

    2. 先通过循环获取到那个节点的 Node,然后再执行插入操作

      add末尾就没什么问题

    3. 可能需要在异常后转入分支业务流程
    4. 使用 =NULL 并没有查询到 id=1 的记录,查询条件失效
    5. List.subList 返回的子 List 不是一个普通的 ArrayList。这个子 List 可以认为是原始 List 的视图,会和原始 List 相互影响
    1. HashSet 基于 HashMap,数据结构是哈希表。所以,HashSet 的 contains 方法,其实就是根据 hashcode 和 equals 去判断相等的

      现在也有红黑树

    1. 比较更新要使用的实体类中的字段值与从数据库中查询出来的字段值,判断其是否有修改
    1. 如果我们希望只比较 BigDecimal 的 value,可以使用 compareTo 方法
    2. BigDecimal 有 scale 和 precision 的概念,scale 表示小数点右边的位数,而 precision 表示精度,也就是有效数字的长度
    3. 使用 BigDecimal 表示和计算浮点数,且务必使用字符串的构造方法来初始化 BigDecimal

      或者用valueOf

    1. 对于自定义的类型,如果要实现 Comparable,请记得 equals、hashCode、compareTo 三者逻辑一致。
    2. 那么查询索引本身已经“覆盖”了需要的数据,不再需要回表查询。因此,这种情况也叫作索引覆盖

      extra中显示:use index,不是user index condition,也不是null

    3. Controller 里出现了一个 UnexpectedRollbackException,异常描述提示最终这个事务回滚了,而且是静默回滚的异常描述提示最终这个事务回滚了,而且是静默回滚的
    4. 也是坑点二,如果要配置 Feign 的读取超时,就必须同时配置连接超时,才能生效

      有可能已经修复

    5. 否则由定时任务调用外部查询接口查询交易结果,然后根据查到的结果补偿本地状态

      外部接口一般可以回调

    6. 发送数据到服务端,因此写入操作可以任务是自己本地的操作,本地操作是不需要什么超时时间的,如果真的有什么异常,那也是连接(TCP)不上,或者超时的问题,连接超时和读取超时就能覆盖这种场景
    7. 等到count个任务全部执行完毕
    8. 是服务端处理业务逻辑的时间
    9. 只要服务端收到了请求,网络层面的超时和断开便不会影响服务端的执行
    1. select还是旧值
    2. 事务B是当前读,必须要读最新版本,而且必须加锁,因此就被锁住了,必须等到事务C’释放这个锁,才能继续它的当前读。
    1. I came across the same error when trying to deploy a Spring Boot 2 application to Wildfly 13. This is the only Stack Overflow question that came up when I was searching for answers, so I thought I'd leave my findings here in case anyone else has the same issue, because my solution was very different from the only other answer here right now.
    1. 它的核心就是通过一个 ThreadLocal 来将 Proxy 和线程绑定起来,这样就可以随时拿出当前线程绑定的 Proxy

      当前proxy必然是所调用方法所对应的对象实例(代理)

    2. @Autowired

      需要lazy注解

    1. 事务中的MDL锁,在语句执行开始时申请,但是语句结束后并不会马上释放,而会等到整个事务提交后再释放。

      mdl只有在事务之后才会释放

    1. 实例设置到静态变量中,在多线程情况下重用呢?

      不能,这样除了主线程,其他线程的seed都是同一个值

    2. 会根据用每个线程的 thread 的一个实例字段 threadLocalRandomProbe 是否为 0 来判断是否当前线程实例是否为第一次调用随机数生成方法,从而决定是否要给当前线程初始化一个随机的 threadLocalRandomSeed 种子值

      current()会初始化一个随机的种子,而跳过了,就只能用一个固定的值

    1. 可从队列删除 Message A,以避免一旦取出消息隐藏时长过期后该消息被再次接受并处理

      需要主动删除消息

    1. 最好不要自定义输入输出在同一个类里面。这样,如果我们只调用生产者发送消息。会导致提示Dispatcher has no subscribers for channel