源码分析:ReentrantLock、Semaphore以及CountDownLatch源码以及对应的设计模式

  • Post author:
  • Post category:其他

最近懵懵懂懂的看完了AQS的源码(源码分析:AQS源码),还是有很多不懂的地方,感觉还是要多来几遍的,为了更深入的理解AQS框架,看一下使用AQS的ReentrantLock、Semaphore以及CountDownLatch,直接上代码吧,解释都在注释里 /** * 这里是重入锁,我们需要关注一下重入锁是怎么实现的,两个条件: * 1. 在线程获取锁的时候,如果已经获取锁的线程是当前线程的话则直…

继续阅读 源码分析:ReentrantLock、Semaphore以及CountDownLatch源码以及对应的设计模式

布隆过滤器核心原理&redisBitMap 分布式实现

  • Post author:
  • Post category:其他

Data structures are nothing different. They are like the bookshelves of your application where you can organize your data. Different data structures will give you different facility and benefits. To p…

继续阅读 布隆过滤器核心原理&redisBitMap 分布式实现

C++ map的三种不同插入元素方法

  • Post author:
  • Post category:其他

Talk is cheap. Show you the code! #include <iostream> #include <map> using namespace std; int main(){ map<int,string> student; student.insert(map<int,string>::value_type(1,"liM…

继续阅读 C++ map的三种不同插入元素方法

mybatis中@Results,@ResultMap注解使用

  • Post author:
  • Post category:其他

一、Results的用法 用法一: 当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来。column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键 @Select("select id, name, class_id from student”) @Results({ //column为数据库字段名,por…

继续阅读 mybatis中@Results,@ResultMap注解使用

Java中遍历Map的五种方式

  • Post author:
  • Post category:java

方法一:在for循环中遍历value Map<String, String> map = new HashMap(); map.put("开发", "开发"); map.put("测试", "测试"); for (Object value : map.values()) { System.out.println("第一种:" + value); } 方法二::通过key遍历 for (…

继续阅读 Java中遍历Map的五种方式