- 博客(41)
- 收藏
- 关注
原创 MySQL--选择合适的数据类型
char与varchar char属于固定长度类型,而varchar属于可变长度类型。 由于char是固定长度类型,所以它的处理速度比varchar快,但是缺点是浪费存储空间,程序需要对行尾空格进行处理,所有对于长度变化不大且对查询速度又较高要求的数据可以考虑使用char类型来存储。 InnoDB存储引擎:建议使用varchar类型。对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度(所有的数据行都使用指向数据列值的头指针) text与blob blob和text值会引起一些性能问题,
2021-08-21 12:32:17
209
原创 BASE理论
数据一致性模型 如果数据读取、写入、更新的结果时可预测的,我们说它遵循数据一致性模型 严格一致性(强):不论在哪一个节点,看到的资源都是统一的结果 顺序一致性(弱):节点的变动和操作的顺序保持一致 最终一致性(弱):所有数据副本最终都会变得一致 BASE理论 BASE是Basically Available(基本可用)Soft state(软状态)和Eventual consistency(最终一致性)三个短语的缩写。 基本可用:可用是部分功能不可用或者响应时间延长 软状态:不同系统/节点之间,数据存
2021-05-24 23:23:44
142
原创 CAP定理
CAP定理 最初提出时指分布式数据存储不可能同时提供以下三种保证中的两种以上 一致性(Consistency):每次请求收到的信息都是最新的 可用性(Availability):每个请求都会收到(非错误)响应 分区容错(Partition tolerance):尽管节点之间的网络不通导致分区,系统任继续运行 事实上,不仅仅是分布式数据存储应用,所有分布式系统都必须在CAP这三点之间进行权衡 ...
2021-05-23 23:32:26
141
原创 ZooKeeper集群
ZooKeeper集群 可靠的ZooKeeper服务 只要集群大多数都准备好了,就可以使用这项服务 容错集群设置至少需要3个服务器,强烈建议使用基数个服务器 建议每个服务运行在单独的服务器上 ZooKeeper集群搭建 配置 tickTime=2000 dataDir=D://tools/zookeeper-3.4.13/tmp/zookeeper clientPort=2181 initLimit=10 syncLimit=5 server.1=zoo1.2888:3888 server.2=zoo2
2021-05-23 22:04:23
411
11
原创 ZooKeeper经典应用场景
ZooKeeper实现配置中心 znode能存储数据 watch能监听数据变化 ZooKeeper实现命名服务 ZooKeeper实现Master选举 ZooKeeper实现分布式队列 有界队列与无界队列? ZooKeeper实现分布式锁 方式一 缺点:惊群效应 方式二: 原理:取号+最下号得+watch ...
2021-05-18 23:04:30
123
原创 ZooKeeper核心概念
Session会话 一个客户端连接一个会话,由zk分配唯一会话id 客户端以指定的时间间隔发送心跳以保持会话的有效tickTime 超过会话超时时间未收到客户端的心跳,则判断客户端死了(默认两倍tickTime) 会话中的请求按照FIFO顺序执行 数据模型 层次名称空间: 类似unix文件系统,以(/)为根 区别:节点可以包含与之关联的数据以及子节点(即是文件也是文件夹) 节点的路径总是表示为规范的、绝对的、斜杠分隔的路径 zonde: 名称唯一,命名规范 节点类型:持久、顺序、临时、临时顺序
2021-05-18 22:03:03
154
原创 Zookeeper入门
什么是Zookeeper 简介:Apache Zookeeper是一种用于分布式应用程序的高性能协调服务,提供一种集中式信息存储服务。 特点:数据存在内存中,类型文件系统的树形结构(文件和目录),高吞吐量和低延迟。集群高可靠。 作用:基于ZooKeeper可以实现分布式统一配置中心,服务注册中心,分布式锁等功能 单机版安装 下载:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz 解压
2021-05-16 20:09:53
109
原创 ActiveMQ入门
ActiveMQ是什么: JMS是什么: JMS的对象模型: JMS的消息模型: JMS的消息结构: ActiveMQ的特性:
2020-04-12 17:33:34
143
原创 分布式消息中间间设计篇
消息中间件概述: 消息中间件核心设计: 协议是什么: 常见协议: AMQP协议: MQTT协议: Open Message协议: Kafka协议: 持久化是什么: 常用持久化方式: 为什么要有消息分发策略: 常用消息中间件分发策略: 高可用机制: Master-Slave主从共享数据的部署方式: Master-Slave主从同步部署方式: Broker-Cluster...
2020-04-06 11:21:41
158
原创 JDK内置命令工具
jdk内置命令工具-javap: jps: jstat: jcmd: jinfo: jhat: jmap: jstack: jconsole: JvisualVM:
2020-03-29 00:35:30
178
原创 类加载机制
类生命周期: 类加载器: 查看类对应的加载器: package com.study.classLoader; public class ClassLoaderView { public static void main(String[] args) throws Exception { // 加载核心类库的 BootStrap ClassLoader ...
2020-03-22 12:28:40
104
原创 Netty线程模型
Netty简介: Netty整体结构图: Netty线程模型: EventLoopGroup初始化过程: EventLoop的启动: Bind榜单端口过程: Channel概念:
2020-03-22 00:05:29
124
原创 NIO非阻塞网络编程三大核心理念
JAVA NIO: 始于Java1.4,提供了新的JAVA IO操作非阻塞API。 NIO中有三个核心组件: Buffer缓冲区 Channel通道 Selector选择器 Buffer缓冲区: 缓冲区本质上是一个可以写入数据的内存块(类似数组),然后可以再去读取。此内存块包含在NIO Buffer对象中,该对象提供了一组方法,可以更轻松地使用内存块。 使用Buffer进行读取数据写入与读取,需要...
2020-03-15 19:11:54
173
原创 TCP/UDP协议
OSI网络七层模型: 各层主要功能: 传输控制协议TCP: TCP握手机制: 用户数据报协议UDP: UDP和TCP比较: 使用UDP的场景:语音聊天,视频等,物联网系统开发 Socket编程: ...
2020-03-02 23:12:38
127
原创 并发容器类
ConcurrentHashMap在JDK1.7与JDK1.8中数据结构不一样,JDK1.8的锁的粒度会比JDK1.7中小。 ConcurrentSkipListMap跳表,
2020-03-01 20:19:48
134
原创 AQS抽象队列同步器详解
ReadWirteLock: AbstractQueuedSynchronizer: ReentrantReadWriteLock与ReentrantLock有太多地方相似了,用AQS模板封装大多数公共的业务逻辑。
2020-02-16 22:46:41
169
原创 Oracle SQL优化
SQL语句执行过程: 校验 - 查询 - 查询优化 如何获取语句的执行计划: 1.直接解析SQL语句 Explain plan for XXX; Select * from table(dbms_xplan.display); 2.根据SQL_ID查询 select * from table(dbms_xplan.display_cursor(’&sql_id’,0,‘allstats l...
2020-02-03 23:25:48
417
原创 Lock接口及其实现
Locks包层次结构: Lock接口: 总结: 1.lock()最常用 2.lockInterruptibly()方法一般更加昂贵,有的impl可能没有实现lockInterruptibly(),只有真的需要效应中断时才使用,使用之前看看impl对该方法的描述。 Condition: ReentrantLock: 重入 count!=0 说明锁被占用 判断owner是否时当前线程,如果不是...
2020-01-27 15:29:41
479
原创 JAVA锁相关
JAVA中锁的概念 自旋锁: 是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不断的判断锁是否能被成功的获取,直到获取到锁才会退出循环。 乐观锁: 假设没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读取最新数据,修改后重试修改。 悲观锁: 假设会发生并发冲突,同步所有对数据 的相关操作,从读数据就开始上锁。 独享锁(写): 给资源加上写锁,线程可以修改资...
2020-01-26 21:50:35
142
原创 线程安全之原子性
原子操作 package ThreadDemo; public class Thread9{ volatile int i=0; public void count(){ i++; } } public void count(); descriptor: ()V flags: ACC_PUBLIC Code: ...
2020-01-22 01:13:03
154
1
原创 线程池原理
为什么要使用线程池 线程是不是越多越好? 1.线程在java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。如果创建时间+销毁时间?执行任务时间 就很不划算。 2.java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小为1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多内存。 3。操作系统需要频繁切换线程上下文,影响性能。 线程池的推出就是为...
2020-01-14 23:27:36
166
原创 线程通信
通信方式 要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。涉及到线程之间互相通信,分为下面四类: 1.文件共享 2.网络共享 3.共享变量 4.jdk提供的线程协调API 细分为:suspend/resume、wait/notify、park/unpark 线程协作–JDK API: JDK中对于需要多线程协作完成某一任务的场景,提供了对于API支持多线程协作的经典场...
2020-01-13 00:30:12
101
原创 线程封闭
线程封闭概念: 多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了。 数据被封闭在各自的数据线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称之为线程封闭。 线程封闭具体的实现由:ThreadLocal、局部变量 ThreadLocal: ThreadLocal是Java里一种特殊的变量。 它是一个线程级别的变量...
2020-01-08 00:37:32
150
原创 CPU缓存和内存屏障
CPU性能优化手段-缓存 为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。 例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。 多级缓存 L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32-4096KB。 L2 由于L1高速缓存容量的限制,为了提高CPU的运...
2020-01-07 00:16:08
198
原创 线程中止
不正确的线程中止 Stop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。 Destory:JDK未实现该方法。 package ThreadDemo; public class Demo3 { public static void main(String[] args) throws InterruptedException { Thr...
2020-01-01 15:53:02
96
原创 线程状态
线程状态 6个状态定义:Java.lang.Thread.State 1.New:尚未启动的线程的线程状态。 2.Runnable:可运行线程的线程状态,等待CPU的调度。 3.Blocked:线程阻塞等待监视器锁定的线程状态。处于synchronized同步代码块或者方法中被阻塞。 4.Waiting:等待线程的线程状态。下列不带超时的返回方式:Object.wait、Thread.join、L...
2019-12-30 22:12:24
127
原创 JAVA程序运行原理分析
class文件内容 class文件包含JAVA程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。class文件是复杂格式,专门给JVM读里面的内容,人类阅读可以借助工具查看。 JVM运行时数据区 方法区: JVM用来存储数据加载的类信息、常量、静态变量、编译后代码等数据。虚拟机规范中这是一个逻辑...
2019-12-29 17:21:51
245
原创 JDK1.8新特性(接口实现方法)
一:简介 我们通常所说的接口的作用是用于定义一套标准、约束、规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现。 在JDK1.8中打破了这样的认识,接口中的方法可以有方法体,但需要关键字static或者default来修饰,使用static来修饰的称之为静态方法,静态方法通过接口名来调用,使用default来修饰的称之为默认方法,默认方法通过实例对象来调用。 静态...
2019-09-22 23:35:58
934
原创 public、protected、default、private作用域
** public、protected、default、private作用域 ** java中修饰符 public protected 默认 (frinedly) private 访问权限 作用域 当前类 同一package 子孙类 其它package public true true true true protected true true true false fr...
2019-09-22 23:06:23
329
原创 360面试题(字符+字节+补码)
public class Test1 { public static void main(String[] args){ byte a = 127; byte b = 127; a+=b; System.out.println(a); System.out.println(b); } } 结果: -...
2019-09-02 23:07:54
182
原创 定时器Timer
TimerTask是以队列的方式一个一个被顺序行地执行,所以执行的时间有可能和预期的时间不一致,因为前面的任务有可能消耗时间较长,则后面的任务运行时间也被延后。 方法schedule和方法scheduleAtFixedRate都会按顺序执行,所以不要考虑非线程安全的情况。 方法schedule不具有任务追赶性,即使任务预计执行时间早于当前时间,那么当前时间之前的任务就会被取消,不会执行了。而方法s...
2018-11-16 10:22:17
126
原创 RxJava相关操作符
import rx.Observable; import rx.Subscriber; import rx.functions.Func0; import java.util.ArrayList; public class HelloWorld { public static void main(String args[]) { create(); ju...
2018-10-23 23:50:22
138
原创 RxJava打印Hello World!
import rx.Observable; import rx.Subscriber; public class HelloWorld { public static void main(String args[]) { //第一步创建被观察者 Observable myObservable = Observable.create(new Observab...
2018-10-23 23:09:30
171
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅