nginx 安装、基本使用
CentOS 下安装 nginx国内CentOS用的比较多,大部份都是在CentOS下安装。使用的 nginx 版本nginx-1.15.10.tar.gz
官网上有三种版本:Mainline version、Stable version、Legacy versions网上推荐用 Stable 稳定版
安装依赖前提是已安装了主要三个依赖包: pcre、openssl、zlib
如果没有安装,使用下面的命令装一遍
1yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装 nginx先到官网上下选择自己需要的版本
我通常直接在这个页面选择下载 http://nginx.org/download/ ,这上面全是,找一个合适 wget 一下。
./configure --prefix=/usr/local/nginx 加不加前缀都在这个目录下
12345wget http://nginx.org/download/nginx-1.15.10.tar.gz tar -zxvf n ...
console 的一些常用命令
linux 的命令行用了这么久的 linux 才开始整理这部分的内容,该罚站
删除1234567ctrl + w #往回删除一个单词,光标放在最末尾ctl + u #删除光标以前的字符,其实这个是剪切ctl + k #删除光标以后的字符ctrl + y #粘贴由 ctrl+u 和 ctrl+w 剪走的单词ctrl + d #从当前位置开始,向右边删除字符
清屏12ctrl + l #清屏ctrl + c #另起一行
光标位置123456ctl + a #移动光标至的字符头ctl + e #移动光标至的字符尾ctrl + ? #撤消前一次输入ctrl + s 锁住终端 #实际上只是不显示字符而已,命令照样执行。ctrl + q 解锁终端
历史和命令12ctrl + r #输入单词搜索历史命令,超好用ctrl + o #重复执行命令
屏幕输出12Ctrl+S #暂停屏幕输出Ctrl+Q #继续屏幕输出
上下翻屏1234这个是找了N久才查到的命令shift + pageUp/p ...
冲突域
冲突域 collision domain
核心:冲突域是在同一个网络上两个比特同时进行传输则会产生冲突;
先说人话:多N台计算机使连接在同一个集线器设备中,并同时往集线器发送数据要通过这个设备出去,但是这个设备同一时间内只能发送一个计算机的数据,所以会产生冲突。(便宜货就是问题多)
1.简述冲突域是在同一个网络上两个比特同时进行传输则会产生冲突;在网路内部数据分组所产生与发生冲突的这样一个区域称为冲突域,
所有的共享介质环境都是一个冲突域,在共享介质环境中一定类型的冲突域是正常行为。总的来说,冲突域就是连接在同一导线上的所有工作站的集合,或者说是同一物理网段上所有节点的集合,或以太网上竞争同一带宽的节点集合.一个交换机的端口就是一个冲突域。交换机本身就是一个冲突域,只不过,能隔离广播包。物理原因:因为集线器这种设备比较低端,在交互机还没有出现的时候,使用集线器,集线器不具有路由选择功能,只是将接收到的数据以广播的形工发出,会产生广播风暴。
2.为什么会有冲突如果同一时刻有两台设备试图传输数据,将导致冲突,而这两台设备必须分别重传数据,因此效率不高!这种情形通常出现在使用集线器的网络环 ...
java反射03-查看方法修饰符
修饰符通过反射可以获取类的修饰符,主要方法: Class.getModifiers() 返回一个用于描述Field、Method和Constructor的修饰符的整形数值,该数值代表的含义可通过Modifier这个类分析。Modifier 类它提供了有关Field、Method和Constructor等的访问修饰符的信息,主要的方法有:toString(int modifiers);返回: 整形数值modifiers代表的修饰符的字符串;
查看类修饰符使用 String.class 来验证一下:
123456789101112131415161718import java.lang.reflect.Modifier;/** * 获取类的修改符 * * @author liu kai * @since 2015-11-23 14:48 */public class ModifierTest { public static void main(String[] args) { Class cl = String.class; Strin ...
计算机原理:数组下标为什么从0开始
为了记数方便注意这个红色的0,这里是从零开始。内存地址是从0开始,如果内存上装载一个数据如int类型。一个int类型是4个字节,那么假设一个int的 data_type_size=4。那么数据的内存是连续的,那初始化5个数组就是:int[] a = new int[5],到这都很清楚吧。
base_address = 1000
那么假设首地址从1000开始,连边开5个内存地址就是:int[5]公式
a[i]_address = base_address + i * data_type_size
那么来推一下:下标:i=0 数组[0]:
a[0]_address = base_address + 0 * data_type_size
下标:i=1 数组[1]:
a[1]_address = base_address + 1 * data_type_size
最络结果是这样
i=0 { a[0] } 1000-1003i=1 { a[1] } 1004-1007i=2 { a[2] } 1008-1011i=3 { a[3] } 1012-1016i=4 { a[4] } ...
java反射02-使用Class对象
简述使用反射万事第一步,获取 Class 类。获取Class对象的方式:
Class.forName()
Class.class
Class.getClass()
获取Class对象如何取得操作类的Class对象,常用的有三种方式:使用Class的静态方法来获取一个要被反射的对象。
1.调用Class.forName();
123public void test() { Class cls = Class.forName("com.test.Person");}
2.使用类的.class字节文件
123public void test() { Class<?> cls = String.class}
3.调用对象的getClass方法
1234public void test() { String str = "abc"; Class<?> cls = str.getClass();}
验证相同类型class是一个对象代码验证不同 class 获 ...
RocketMQ-NameServer原理
NameServer 名字服务
实际作就是就一个注册中心
NameServer 作用在系统中肯定是做命名服务,服务治理方面的工作,功能应该是和zookeeper差不多早期的版本中,使用的是 Zookeeper 做为配置中心,改名 RocketMQ 后使用了自己开发的 NameServer。是一个几乎无状态的节点,可集群部署,节点之间无任何信息同步
两个主要做用
NameServer维护BrokerNameServer 维护了一份 Broker 的地址列表和 Broker 在启动的时候会去 NameServer 进行注册,会维护 Broker 的存活状态。
NameServer 维护TopicNameServer 维护了一份 Topic 和 Topic 对应队列的地址列表,Broker 每次发送的心跳过来的时候会把 Topic 信息带上。
producer、consumer 发送消息会去 NameServer 去拉取路由信息
NameServer 维护 Broker1.维护 Broker 信息broker 启动后,会连接到 NameServer,定期上报自身信息,NameSer ...
RocketMQ-Broker
Broker作用:消息中转角色。负责存储消息,转发消息。一般也称为Server。在JMS规范中称为: Provider。
组成模式:两两一组,四个,两主两从。Master 干活,Slave 作为备节点,据说新版本会增加主备切换。
Broker 几个关键点:
负载均衡
可用性
1.负载均衡
一个topic分布在多个broker上,一个broker可以配置多个topic,它们是多对多的关系。
如果某个topic消息量很大,应该给它多配置几个队列,并且尽量多分布在不同broker上,减轻某个broker的压力。
topic消息量都比较均匀的情况下,如果某个broker上的队列越多,则该broker压力越大。
2.可用性由于消息分布在各个broker上,一旦某个broker宕机,则该broker上的消息读写都会受到影响。所以rocketmq提供了master/slave的结构,salve定时从master同步数据,如果master宕机,则slave提供消费服务,但是不能写入消息,此过程对应用透明,由rocketmq内部解决。
RocketMQ安装
安装装的多了,都是零碎的片段,需要重新整理一个这一块东西。
包推荐使用 git 直接拉下来。没装 git 就 wget 去拉。需要 maven 来编译 rocketmq,实际上只要装好 maven 即可,其他不用操作 maven。
步骤
安装 JDK,配置 JAVA_HOME,yum 方式安装的JDK也要配轩JAVA_HOME。
安装 maven。因为编译需要 maven,先配置MAVEN_HOME,否则执行 sh install.sh 不起作用
默认最少4G内存,需要最少2G SWAP 内存,内存不够则修改默认内存小于本机内存,不然一直报错
内存不够的话,直接看下面的修改内存
测试安装环境
centOS 6.5
1G 内存
RocketMQ 3.4.6
编译和安装1sh install.sh //在 mq 的根目录 下
说明:安装完成后,因为 install.sh 脚本中创建 devenv 符号链接写错了目录,需要在RocketMQ目录下执行如下命令:
1rm -rf devenv
删除错误的 devenv 目录ln -s target/alibaba-rocketmq-b ...
RocketMQ-架构设计
架构设计分为:1.技术架构,2.部署架构
整体架构
技术架构
部署架构
技术架构学习一个技术,从最开始建立概念开始,先看架构图怎么理解这个图?这个图画出4个重要解色 和 消息的发送、保存、消费的大流程。
整个消息流转的过程中,有4个重要的角色负责:
Producer
NameServer
BrokerServer
Consumer
Producer消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。
Consumer消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。
NameServerNameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。主要包括两个功能:Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后 ...