240 发简信
IP属地:江西
  • MyBatis Generator的使用

    问题 targetProject路径不存在 描述 配置的targetProject=supermarket-common/src/main/java在运行时错误:[WARNI...

  • 2.1.3 NIO非阻塞网络编程三大理念

    Java NIO 始于Java 1.4,提供了新的Java IO操作非阻塞APi。 用意是替代Java IO 和 Java Networking相关的API。 NIO中有三个...

  • 2.1.2 BIO阻塞式网络编程

    BIO - 阻塞IO的含义 阻塞(blocking) IO: 资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。 非阻塞(non-blocking) IO: 资源...

  • 120
    2.1.1 TCP/UDP协议

    OSI网络七层模型 分成七层的目的就是为了让每一层的开发人员或者说系统设计硬件也好软件也好不需要去关心整个网络层次 各层的主要功能 物理层:物理设备之间如何传递数据,比较原始...

  • 120
    1.3.2 并发编程Map

    HashMap HashMap 虽然Hashtable是一个线程安全的类,但性能不高,在高并发的场景下使用ConcurrentHashMap ConcuttentHashMa...

  • 1.3.1.2 信号量和栅栏和倒计数器

    Semaphore 又称“信号量”,控制多个线程争抢许可。 acquire: 获取一个许可,如果没有就等待。 release: 释放一个许可。 availablePermit...

  • 1.3.1 AQS抽象队列同步器详解

    什么是AQS AQS(AbstractQueuedSynchronizer),AQS是JDK下提供的一套用于实现基于FIFO等待队列的阻塞锁和相关的同步器的一个同步框架。这个...

  • 1.2.4 Lock锁接口实现 -- ReentrantLock和ReadWriteLock

    Lock的核心API 方法描述lock获取锁的方法,若锁被其他线程获取,则等待(阻塞)lockInterruptibly在锁的获取过程中可以中断当前线程tryLock尝试非阻...

  • 1.2.3 Java锁相关 - synchronized详解

    Java中锁的概念 自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直至成功。 悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始...

  • 1.2.2 线程安全之原子操作CAS

    竞态条件与临界区 多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。 临界区: incr 方法内部就是临界区域,关键部分代码的多线程并发执行,会对执行结果产...

  • 120
    1.2.1 线程安全之可见性问题

    多线程中的问题 所见非所得 无法内眼去检查程序的准确性 不同的运行平台有不同的表现 错误很难重现 工作内存缓存 内存模型的含义 内存模型描述程序的可能行为。 Java编程语言...

  • 120
    1.1.7 线程池原理

    为什么要用线程池 线程不是越多越好? 线程在Java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。如果创建时间+销毁时间> 执行任务时间就很不合算。 Java对象...

  • 1.1.6 线程封闭之ThreadLocal和栈封闭

    线程封闭概念 多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了。 数据都被封闭在各自的线程之中,就不需要同步...

  • 1.1.5 线程通信

    通信的方式 要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。涉及到线程之间相互通信,分为下面四类: 文件共享 网络共享 共享变量 jdk提供的线...

  • 1.1.4 CPU缓存和内存屏障

    CPU缓存 由于CPU的运算速度高出CPU和内存之间的数据传输速度一个级别,CPU厂商为了尽可能的利用CPU的性能,在CPU和内存之间添加了高速缓存,尽可能地避免处理器访问主...

  • 1.1.3 线程中止

    不正确的线程中止--Stop Stop: 中止线程,并且清除监控锁的信息,但是可能导致线程安全问题,JDK不建议使用。 Destroy: JDK未实现该方法。 理想输出:i ...

  • 120
    1.1.2 线程状态

    6个状态的定义:java.lang.Thread.State New: 尚未启动的线程的线程状态。 Runnable: 可运行线程的线程状态,等待CPU的调度。 Blocke...

  • 1.1.1 Java程序运行原理的分析

    首先需要了解JVM运行时数据区,里面分 线程共享区域:所有线程能访问这块内存数据,随虚拟机或GC而创建或销毁。方法区:JVM用来存储加载的类信息、静态变量、常量和编译后的代码...