自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 MySQL--选择合适的数据类型

char与varcharchar属于固定长度类型,而varchar属于可变长度类型。由于char是固定长度类型,所以它的处理速度比varchar快,但是缺点是浪费存储空间,程序需要对行尾空格进行处理,所有对于长度变化不大且对查询速度又较高要求的数据可以考虑使用char类型来存储。InnoDB存储引擎:建议使用varchar类型。对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度(所有的数据行都使用指向数据列值的头指针)text与blobblob和text值会引起一些性能问题,

2021-08-21 12:32:17 114

原创 Starter快速集成机制详解

Starter介绍WEB开发实例自研Starter的步骤

2021-07-08 23:35:22 109

原创 系统配置自动装载机制

外部参数配置信息加载环境化配置–profile配置文件

2021-07-06 08:22:40 105

原创 BASE理论

数据一致性模型如果数据读取、写入、更新的结果时可预测的,我们说它遵循数据一致性模型严格一致性(强):不论在哪一个节点,看到的资源都是统一的结果顺序一致性(弱):节点的变动和操作的顺序保持一致最终一致性(弱):所有数据副本最终都会变得一致BASE理论BASE是Basically Available(基本可用)Soft state(软状态)和Eventual consistency(最终一致性)三个短语的缩写。基本可用:可用是部分功能不可用或者响应时间延长软状态:不同系统/节点之间,数据存

2021-05-24 23:23:44 68

原创 CAP定理

CAP定理最初提出时指分布式数据存储不可能同时提供以下三种保证中的两种以上一致性(Consistency):每次请求收到的信息都是最新的可用性(Availability):每个请求都会收到(非错误)响应分区容错(Partition tolerance):尽管节点之间的网络不通导致分区,系统任继续运行事实上,不仅仅是分布式数据存储应用,所有分布式系统都必须在CAP这三点之间进行权衡...

2021-05-23 23:32:26 85

原创 ZooKeeper集群

ZooKeeper集群可靠的ZooKeeper服务只要集群大多数都准备好了,就可以使用这项服务容错集群设置至少需要3个服务器,强烈建议使用基数个服务器建议每个服务运行在单独的服务器上ZooKeeper集群搭建配置tickTime=2000dataDir=D://tools/zookeeper-3.4.13/tmp/zookeeperclientPort=2181initLimit=10syncLimit=5server.1=zoo1.2888:3888server.2=zoo2

2021-05-23 22:04:23 235 11

原创 ZooKeeper经典应用场景

ZooKeeper实现配置中心znode能存储数据watch能监听数据变化ZooKeeper实现命名服务ZooKeeper实现Master选举ZooKeeper实现分布式队列有界队列与无界队列?ZooKeeper实现分布式锁方式一缺点:惊群效应方式二:原理:取号+最下号得+watch...

2021-05-18 23:04:30 70

原创 ZooKeeper核心概念

Session会话一个客户端连接一个会话,由zk分配唯一会话id客户端以指定的时间间隔发送心跳以保持会话的有效tickTime超过会话超时时间未收到客户端的心跳,则判断客户端死了(默认两倍tickTime)会话中的请求按照FIFO顺序执行数据模型层次名称空间:类似unix文件系统,以(/)为根区别:节点可以包含与之关联的数据以及子节点(即是文件也是文件夹)节点的路径总是表示为规范的、绝对的、斜杠分隔的路径zonde:名称唯一,命名规范节点类型:持久、顺序、临时、临时顺序

2021-05-18 22:03:03 65

原创 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 51

原创 ActiveMQ入门

ActiveMQ是什么:JMS是什么:JMS的对象模型:JMS的消息模型:JMS的消息结构:ActiveMQ的特性:

2020-04-12 17:33:34 91

原创 分布式消息中间间设计篇

消息中间件概述:消息中间件核心设计:协议是什么:常见协议:AMQP协议:MQTT协议:Open Message协议:Kafka协议:持久化是什么:常用持久化方式:为什么要有消息分发策略:常用消息中间件分发策略:高可用机制:Master-Slave主从共享数据的部署方式:Master-Slave主从同步部署方式:Broker-Cluster...

2020-04-06 11:21:41 101

原创 Tomcat参数调优

参数调优:

2020-03-29 19:28:40 106

原创 Tomcat网络处理线程模型

BIO+同步Servlet:APR+异步Servlet:NIO+异步Servlet:NIO处理流程:

2020-03-29 17:11:12 118

原创 JDK内置命令工具

jdk内置命令工具-javap:jps:jstat:jcmd:jinfo:jhat:jmap:jstack:jconsole:JvisualVM:

2020-03-29 00:35:30 115

原创 垃圾回收机制

自动垃圾收集:如何确定内存需要被回收:可达性分析算法:引用类型和可达性级别:垃圾收集算法:分代收集:垃圾收集器:

2020-03-26 23:12:56 129

原创 类加载机制

类生命周期:类加载器:查看类对应的加载器:package com.study.classLoader;public class ClassLoaderView { public static void main(String[] args) throws Exception { // 加载核心类库的 BootStrap ClassLoader ...

2020-03-22 12:28:40 63

原创 Netty线程模型

Netty简介:Netty整体结构图:Netty线程模型:EventLoopGroup初始化过程:EventLoop的启动:Bind榜单端口过程:Channel概念:

2020-03-22 00:05:29 75

原创 NIO非阻塞网络编程三大核心理念

JAVA NIO:始于Java1.4,提供了新的JAVA IO操作非阻塞API。NIO中有三个核心组件:Buffer缓冲区Channel通道Selector选择器Buffer缓冲区:缓冲区本质上是一个可以写入数据的内存块(类似数组),然后可以再去读取。此内存块包含在NIO Buffer对象中,该对象提供了一组方法,可以更轻松地使用内存块。使用Buffer进行读取数据写入与读取,需要...

2020-03-15 19:11:54 117

原创 TCP/UDP协议

OSI网络七层模型:各层主要功能:传输控制协议TCP:TCP握手机制:用户数据报协议UDP:UDP和TCP比较:使用UDP的场景:语音聊天,视频等,物联网系统开发Socket编程:...

2020-03-02 23:12:38 84

原创 并发容器类

ConcurrentHashMap在JDK1.7与JDK1.8中数据结构不一样,JDK1.8的锁的粒度会比JDK1.7中小。ConcurrentSkipListMap跳表,

2020-03-01 20:19:48 71

原创 AQS抽象队列同步器详解

ReadWirteLock:AbstractQueuedSynchronizer:ReentrantReadWriteLock与ReentrantLock有太多地方相似了,用AQS模板封装大多数公共的业务逻辑。

2020-02-16 22:46:41 104

原创 Java内存模型详解

Java内存模型 vs JVM运行时数据区:多线程中的问题:

2020-02-07 23:10:06 55

原创 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 363

原创 Lock接口及其实现

Locks包层次结构:Lock接口:总结:1.lock()最常用2.lockInterruptibly()方法一般更加昂贵,有的impl可能没有实现lockInterruptibly(),只有真的需要效应中断时才使用,使用之前看看impl对该方法的描述。Condition:ReentrantLock:重入count!=0 说明锁被占用判断owner是否时当前线程,如果不是...

2020-01-27 15:29:41 400

原创 JAVA锁相关

JAVA中锁的概念自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不断的判断锁是否能被成功的获取,直到获取到锁才会退出循环。乐观锁:假设没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读取最新数据,修改后重试修改。悲观锁:假设会发生并发冲突,同步所有对数据 的相关操作,从读数据就开始上锁。独享锁(写):给资源加上写锁,线程可以修改资...

2020-01-26 21:50:35 93

原创 线程安全之原子性

原子操作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 102 1

原创 线程池原理

为什么要使用线程池线程是不是越多越好?1.线程在java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。如果创建时间+销毁时间?执行任务时间 就很不划算。2.java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小为1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多内存。3。操作系统需要频繁切换线程上下文,影响性能。线程池的推出就是为...

2020-01-14 23:27:36 93

原创 线程通信

通信方式要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。涉及到线程之间互相通信,分为下面四类:1.文件共享2.网络共享3.共享变量4.jdk提供的线程协调API细分为:suspend/resume、wait/notify、park/unpark线程协作–JDK API:JDK中对于需要多线程协作完成某一任务的场景,提供了对于API支持多线程协作的经典场...

2020-01-13 00:30:12 64

原创 线程封闭

线程封闭概念:多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了。数据被封闭在各自的数据线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称之为线程封闭。线程封闭具体的实现由:ThreadLocal、局部变量ThreadLocal:ThreadLocal是Java里一种特殊的变量。它是一个线程级别的变量...

2020-01-08 00:37:32 104

原创 CPU缓存和内存屏障

CPU性能优化手段-缓存为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。多级缓存L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32-4096KB。L2 由于L1高速缓存容量的限制,为了提高CPU的运...

2020-01-07 00:16:08 134

原创 线程中止

不正确的线程中止Stop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。Destory:JDK未实现该方法。package ThreadDemo;public class Demo3 { public static void main(String[] args) throws InterruptedException { Thr...

2020-01-01 15:53:02 59

原创 线程状态

线程状态6个状态定义:Java.lang.Thread.State1.New:尚未启动的线程的线程状态。2.Runnable:可运行线程的线程状态,等待CPU的调度。3.Blocked:线程阻塞等待监视器锁定的线程状态。处于synchronized同步代码块或者方法中被阻塞。4.Waiting:等待线程的线程状态。下列不带超时的返回方式:Object.wait、Thread.join、L...

2019-12-30 22:12:24 81

原创 JAVA程序运行原理分析

class文件内容class文件包含JAVA程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。class文件是复杂格式,专门给JVM读里面的内容,人类阅读可以借助工具查看。JVM运行时数据区方法区:JVM用来存储数据加载的类信息、常量、静态变量、编译后代码等数据。虚拟机规范中这是一个逻辑...

2019-12-29 17:21:51 174

原创 JDK1.8新特性(接口实现方法)

一:简介我们通常所说的接口的作用是用于定义一套标准、约束、规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现。在JDK1.8中打破了这样的认识,接口中的方法可以有方法体,但需要关键字static或者default来修饰,使用static来修饰的称之为静态方法,静态方法通过接口名来调用,使用default来修饰的称之为默认方法,默认方法通过实例对象来调用。静态...

2019-09-22 23:35:58 828

原创 public、protected、default、private作用域

**public、protected、default、private作用域**java中修饰符 public protected 默认 (frinedly) private 访问权限作用域当前类同一package子孙类其它packagepublictruetruetruetrueprotectedtruetruetruefalsefr...

2019-09-22 23:06:23 232

原创 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 126

原创 定时器Timer

TimerTask是以队列的方式一个一个被顺序行地执行,所以执行的时间有可能和预期的时间不一致,因为前面的任务有可能消耗时间较长,则后面的任务运行时间也被延后。方法schedule和方法scheduleAtFixedRate都会按顺序执行,所以不要考虑非线程安全的情况。方法schedule不具有任务追赶性,即使任务预计执行时间早于当前时间,那么当前时间之前的任务就会被取消,不会执行了。而方法s...

2018-11-16 10:22:17 84

原创 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 100

原创 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 134

原创 raft实现分区一致性

raft协议简易动画(转)

2018-10-23 12:04:21 558

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除