0%

Netty-NIO-案例

NIO非阻塞网络编程原理分析图

阅读全文 »

Netty-NIO与零拷贝

零拷贝基本介绍

  1. 零拷贝是网络编程的关键,很多性能优化都离不开
  2. 在Java程序中,常用的零拷贝有mmap(内存映射)和sendFile
  3. 零拷贝并非是不拷贝,而是没有CPU拷贝
  4. 所说的零拷贝,是从操作系统的角度来说的。因为内核缓冲区之间,没有数据是重复的(只有kernel buffer有一份数据)
  5. 零拷贝不仅带来更少的数据复制,还能带来其它的性能优势,例如更少的上下文切换,更少的CPU缓存伪共享以及无CPU校验和计算
阅读全文 »

Netty-NIO-Buffer&Channel&Selector

基本介绍

  1. Java NIO全称Java non-blocking IO,是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即New IO),是同步非阻塞

  2. NIO相关类都被放在java.nio包及子包下,并对原java.io包中的很多类进行改写

  3. NIO有三大核心部分:Channel(通道)Buffer(缓冲区)Selector(选择器)

    NIO-detail)

  4. NIO是面向缓冲区的,或者说是面向 块 编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络

  5. Java NIO的非阻塞模式,使一个线程从某通道发送请求或读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直到数据变的可以读取之前,该线程可以继续做其它的事情。非阻塞写也是如此,一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情

  6. 通俗理解:NIO是可以做到用一个线程来处理多个操作的。假设有10000个请求过来,根据实际情况,可以分配50或100个线程来处理。不像之前的阻塞IO那样,必须分配10000个

  7. HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个不,而且并发请求的数量比HTTP1.1大了好几个数量级

阅读全文 »

Netty-NIO-Buffer&Channel&Selector

基本介绍

  1. Java NIO全称Java non-blocking IO,是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即New IO),是同步非阻塞

  2. NIO相关类都被放在java.nio包及子包下,并对原java.io包中的很多类进行改写

  3. NIO有三大核心部分:Channel(通道)Buffer(缓冲区)Selector(选择器)

    NIO-detail)

  4. NIO是面向缓冲区的,或者说是面向 块 编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络

  5. Java NIO的非阻塞模式,使一个线程从某通道发送请求或读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直到数据变的可以读取之前,该线程可以继续做其它的事情。非阻塞写也是如此,一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情

  6. 通俗理解:NIO是可以做到用一个线程来处理多个操作的。假设有10000个请求过来,根据实际情况,可以分配50或100个线程来处理。不像之前的阻塞IO那样,必须分配10000个

  7. HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个不,而且并发请求的数量比HTTP1.1大了好几个数量级

阅读全文 »

Netty-BIO

I/O模型

基本说明

阅读全文 »

Nginx入门

基本概念

Nginx是什么,能做什么

阅读全文 »

数据库-事务

数据库并发问题

  1. 脏读

    事务1:将某条记录的Age值从20修改为30

    事务2:读取了事务1更新后的值:30

    事务1:回滚,Age值恢复到20

    事务2:读取的30就是一个无效值

  2. 不可重复读

    事务1:读取Age值为20

    事务2:将Age修改为30

    事务1:两次读取Age值为30,和第一次值读取不一致

  3. 幻读

    事务1:读取了Stu表中一部分数据

    事务2:向Stu表中插入了新的行

    事务1:读取Stu表时,多出了一些行

阅读全文 »

项目中的问题

项目地址

https://github.com/Zephon-H/vue-ssm-traveller-manage

阅读全文 »

SpringBoot-任务

1、异步任务

  1. 在Application上

    1
    2
    3
    4
    /**
    * @EnableAsync:开启异步注解
    */
    @EnableAsync
  2. 异步处理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @Service
    public class AsyncService {
    /**
    * 告诉Spring这是一个异步的
    */
    @Async
    public void hello(){
    try{
    Thread.sleep(3000);
    }catch (InterruptedException e){
    e.printStackTrace();
    }
    System.out.println("处理数据中");
    }
    }
阅读全文 »