摘要:
多线程与高并发 一、了解多线程 什么是进程? 我们打开电脑上的qq时,点击qq.exe,电脑就会运行一个qq的程序,这个程序就叫做进程。 什么是线程? 当qq运行后, 我们可能会使用qq来打开多个聊天窗口进行聊天,那么每一个聊天窗口就算是一个线程。所以说,进程可以包括很多的线程。 线程和进程的区别? 阅读全文
摘要:
1. redis 安装 redis是什么? redis是数据库的一种,我们常见的数据库可以分为关系型数据库和菲关系型数据库,redis就是菲关系型数据库的一种。并且redis是key-value型数据库。 从上面的解释引出新的问题:关系型数据库和非关系型数据库: 关系型数据库:使用关系模型来组织数据 阅读全文
摘要:
java基础 为什么java中只有值传递? java中基本类型是通过copy传递值的,引用类型是通过copy引用传递的,所以java中只有值传递。 java序列化 java不建议使用自带序列化 Serializable。缺点是: 只适用于java,无法跨语言;效率低,生成的字节数组较大;不安全。建议 阅读全文
摘要:
Zookeeper学习笔记 zookeeper是一个分布式协调框架,是分布是系统中的一个重要中间件。 安装 单机部署 zookeeper是完全使用java开发的,因此需要jdk运行环境。jdk运行环境准备此处不详细描述。 在官网下载最新版本的zookeeper安装包: ubuntu@node01:~ 阅读全文
摘要:
RocketMQ学习笔记 RocketMQ学习参考官网文档:https://github.com/apache/rocketmq/tree/master/docs/cn 。 由于RocketMQ是有国内阿里开发的MQ系统,因此RocketMQ的官网是有中文文档的,本文档也是参考官网文档整理的。 1. 阅读全文
摘要:
ES学习笔记-基础篇 ES简介 所有的应用程序都会有搜索功能,在此之前,回想我们如果想要在应用程序中实现搜索功能会如何做? select xxx from xxx where name like '%手机%' 大多数情况下,我们使用数据库存储数据,那么当需要实现搜索功能时,会使用sql语句的like 阅读全文
摘要:
Docker学习笔记 容器化技术介绍 历史演变 应用的部署演化主要有三个阶段: graph LR A[物理机时代]-->B[虚拟机时代]-->C[容器化时代] 物理机时代 在物理机时代,应用部署在物理机上。那么如果想要安装一个软件,需要准备一台物理机,并在这个物理机上安装操作系统,然后安装各种各样的 阅读全文
摘要:
MYSQL 调优 使用mysql版本5.7 msyql安装:https://www.cnblogs.com/Zs-book1/p/11573203.html 使用数据库信息,参考mysql官网 sakila库 一、 性能监控 mysql一条sql语句的执行过程如下: 通过连接器: 客户端与服务器建立 阅读全文
摘要:
集群负载均衡 随着现在互联网的发展,上网的人越来越多,而中国是一个人口大国,也因此中国的互联网是使用的最多的。随着现在网上购物的崛起,一个网站的访问量就会非常的大。那么我们如何保证一个网站可以支撑起高并发的网络请求?例如淘宝双十一时每秒几千万的并发,如何使服务器支撑起这么大的并发保证服务的可用性? 阅读全文
摘要:
IO学习笔记 一、IO前置知识--Linux系统 根据冯诺依曼计算机结构,计算机的组成为:运算器、控制器、存储器、输入输出设备。 在现代计算机中,运算器和控制器集成为了cpu,存储器按照功能可以拆分为内存和磁盘。而输入输出设备也就是键盘、显示器等,统称为IO。 而Linux系统其实也是一个普通的程序 阅读全文
摘要:
2.4 多路复用javaAPI 在上面我们简单java代码实现了多路复用,是一个单线程版的。讲上面的epoll代码复制到linux服务器中,使用strace追踪系统调用。 javaAPI会根据系统类型自动选择最优的多路复用器,因此在linux下默认就是使用epoll模型,也可以通过启动参数指定多路复 阅读全文
摘要:
2.3 多路复用 但是NIO仍有它的缺陷,因为服务端和客户端都在一个线程中,主线程遍历客户端集合去每一个客户端都问一遍:你有没有数据,这样的话,如果有10K个客户端,只有最后一个客户端才收到了信息,但是取数据时还是要去将前面的99999个客户端问一遍,但是前面的遍历其实都是无用功。所以还要继续优化, 阅读全文