Shiro简介
Shiro是一个开源的安全框架,可以进行身份认证、访问控制授权、会话管理以及加密等
- Authentication 身份验证
- Authorization 授权
- Session Management 用户session管理器
- Crytography 加密
当虚拟机发现某个方法或代码块的运行特别频繁时,会把这些代码认定为热点代码,为了提高热点代码的执行效率,在运行时虚拟机会将这些代码编译成与本地平台无关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler,简称JIT编译器)
在HotSpot中采用了解释器和编译器并存的架构,称为混合模式
先来介绍一下解释器和编译器
这个就要说一下什么是编译型语言?什么是解释型语言?
C++这种语言被称为编译型语言,因为它们的程序都以编译后的二进制形式交付先写程序,然后编译器静态生成二进制文件。
PHP这种语言是解释型语言,只要机器上有合适的解释器,相同的程序可以在任何CPU上运行,执行程序时,解释器会将相应的代码转换为二进制代码。其优点是程序可移植,相同的代码放到有适当解释器的机器上,就可以运行。其缺点就是运行起来会很慢,因为每次执行都会重新翻译一遍每一行代码
java想要将两种方式中合起来,所以提供了一个虚拟机,将java应用编译之后(此时编译出来的不是CPU所能识别的二进制代码,而是虚拟机可识别的汇编语言,也就是java字节码),然后java字节码可以使用java运行(这里就相当于php解释php脚本了),使得java成为一门平台独立的解释型语言,由于java程序运行时的是java字节码,这个是有规范的,所以可以在代码执行时将其编译成平台特定的二进制代码,这个编译的过程是在程序执行时进行的,所以被称为即时编译(JIT)
ipv4使用long类型进行存储即可
1 | public static long ipToLong(String ipString) throws NumberFormatException { |
为了避免网络慢或者拥塞,该参数可以适当调高,默认3s
1 | discovery.zen.ping_timeout: 30 |
在节点完成选举后,如果有新节点加入,会发送join请求到master节点,默认重试20次
1 | # 该配置为超时时长 |
如果master宕机,集群节点会再次进行ping过程,并选举出一个新的master(只有配置了node.master为true的才有资格进行master选举)
1 | # 用于控制选举行为发生的最小集群节点数量, 防止脑裂(一个es集群因网络原因或master节点负载过大,响应速度过慢,导致ping主节点超过超时时间,而引起的部分候选主节点进行重新选举,导致产生大于1个master节点,每一个master节点相当于一个独立的es集群),只有大于该值,才会进行master节点的选举,该参数必须大于等于集群中master候选节点的quorum数量,`quorum=master候选主节点数/2 + 1` |