0%

Netty模型

  • Netty抽象出两组线程池: BossGroup专门负责接受客户端连接, WorkerGroup专门负责网络读写操作
  • NioEventLoop表示一个不断循环执行处理任务的线程, 每个NioEventLoop都有一个selector, 用于监听绑定在其上的socket网络通道
  • NioEventLoop内部采用串行化设计, 从消息的读取和处理以及发送始终由IO线程NioEventLoop负责

NioEventLoopGroup下包含多个NioEventLoop

每个NioEventLoop中包含一个Selector 一个taskQueue

每个NioEventLoop的Selector上可以注册监听多个NioChannel

每个NioChannel 只会绑定在唯一的NioEventLoop上

每个NioChannel都绑定有一个自己的ChannelPipeline

阅读全文 »

[TOC]

面试题集合

解决高并发要关注线程和I/O模型、数据库选型、缓存优化、缓冲区设计、解耦和消息队分布式服务设计等等方面的设计

LinkedHashMap是一个元素间用链表相连的哈希表

HashMap就是哈希表实现的Map; TreeMap就是用树实现的Map, Map是一种映射关系

AQS解决了Java语言没有实现同步原语底层框架的问题

B+树是一颗支持区间查找的B树

DNS是一个经典的分布式设计

BigTable是另一个

元编程是程序改写程序

阅读全文 »

目录

[TOC]

安装配置mongodb

centos7.x

1
2
3
4
5
6
# 下载
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.3-rc0.tgz /opt
# 解压
tar -zxvf mongodb-linux-x86_64-rhel70-5.0.3-rc0.tgz -C /usr/local
# 重命名
mv mongodb-linux-x86_64-rhel70-5.0.3-rc0 mongodb
阅读全文 »

FastDFS

安装教程

centos 7.x
libfastcommon FastDFS分离出的一些公用函数包
FastDFS FastDFS本体
fastdfs-nginx-module FastDFS和nginx的关联模块
nginx nginx1.15.4
阅读全文 »

RocketMQ

[TOC]

安装(阿里云Centos7.x环境)

1
2
unzip rocketmq-all-4.7.1-bin-release.zip
cd rocketmq-all-4.7.1-bin-release.zip

修改配置文件(修改 JVM 内存设置)

1
2
3
cd bin
vim runserver.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
阅读全文 »

Deep understanding of the Java Virtual Machine

[TOC]

1 类加载器

1.1 类的加载过程

  • 加载
1
2
3
1: 通过一个类的全限定名称获取此类的二进制字节流
2: 将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构
3: 在内存中生成一个代表这个类的java.lang.Class对象, 作为方法区这个类的各种数据的访问入口
  • 链接
    • 验证
      • 文件格式的验证(openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp)
      • 元数据验证
      • 字节码验证
      • 符号引用验证
    • 准备
    • 解析
  • 初始化
阅读全文 »

JSON

[TOC]

什么是JSON

  • JSON是一种数据交换格式

  • JSON独立于编程语言

  • JSON全称是JavaScript Object Notation(JavaScript对象表示法)

  • JSON源于JavasSript的一个子集

数据交换格式就是用于在不同的平台或系统间交换数据的文本,而表示法(专业术语)就是一个用于表示诸如数字或者单词等数据的字符系统,而且json具有可移植性,即以一种双方系统都兼容的方式在平台间传递信息

阅读全文 »

目录

[TOC]

SpringBoot(v2.3.2.RELEASE)

SpringBoot配置

场景启动器

spring-boot-start

1
2
3
4
5
6
7
8
9
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

@SpringBootApplication注解

@SpringBootConfiguration

阅读全文 »

[TOC]

MySQL主从复制

主机(window)修改my.ini配置文件 (当window作为主机)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# The TCP/IP Port the MySQL Server will listen on
port=3306
# 主服务器唯一ID
server-id=1
# 启用二进制日志
log-bin="E:\mysql\log\mysql-bin"
# Error Logging.
log-error="E:\mysql\error\mysql-err"
# 主机可读可写
read-only=0
# 设置不需要复制的数据库
binlog-ignore-db=mysql
# 设置需要复制的数据库
binlog-do-db=xxx
阅读全文 »