自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis集群

一、主从模式1. 概念1)主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)2)主机数据更新后根据配置和策略,自动同步到备机的masterslaver机制,master以写为主,slave以读为主2. 作用1)读写分离2)容灾恢复 3. 特点1)主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据...

2020-01-03 17:46:45 529

原创 redis原理篇以及性能优化

一、redis单线程为什么性能好1. 解释1)完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)2)数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的3)采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问...

2020-01-03 17:30:04 1039

原创 redis数据类型以应用场景

一、数据类型1. 字符串(string)1)概念 (1)Redis中的字符串是一个字节序列。Redis中的字符串是二进制安全的,这意味着它们的长度不由任何特殊的终止字符决定。因此,可以在一个字符串中存储高达512兆字节的任何内容 (2)String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisOb...

2020-01-03 17:21:36 289

原创 mybatis缓存以及插件开发

一、Mybatis缓存1. 一级缓存1)概念 (1)Mybatis的一级缓存是指Session缓存。一级缓存的作用域默认是一个SqlSession (2)Mybatis默认开启一级缓存 (3)也就是在同一个SqlSession中,执行相同的查询SQL,第一次会去数据库进行查询,并写到缓存中;第二次以后是直接去缓存中取 (4)当执行SQL查询中间发生了增删改的操作,MyBatis会把Sq...

2019-12-19 20:55:29 333

原创 mybatis入门及配置解析

一、快速入门1. 引入pom<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version></dependency>...

2019-12-19 20:54:08 233

原创 mybatis的原理

一、mybatis的主要成员1. Configuration MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中2. SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能3. Executor MyBatis执行...

2019-12-19 20:52:40 215

原创 mybatis简介及框架设计

一、基本概念1. MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射2. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集3. MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录二、优缺点1...

2019-12-19 20:50:36 500

原创 Mysql体系架构以及执行过程

一、基本概念1. MySQL是一个单进程多线程架构的数据库。也就是说MySQL数据库实例在系统中表现形式就是一个进程2. 与Oracle的区别(1)Oracle没有offet,limit(2)oracle建表时,没有auto_increment,所有要想让表的一个字段自增,要自己添加序列。插入时,把序列的值插入进去(3)Oracle是大型数据库收费而Mysql是中小型数据库免费(4)M...

2019-12-16 20:36:47 225

原创 10. 定时调度

一、spring task1. XML配置方式(1)配置定时器 :<task:scheduler id="scheduler" pool-size="5" />(2)配置定时任务: <task:scheduled-tasks scheduler="scheduler" > <task:scheduled ref="profitScheduler" ...

2019-12-14 22:05:49 205

原创 spring的线程安全

一、有状态和无状态1. 有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的2. 无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象,不能保存数据,是不变类,是线程安全的二、Spring中的有状态(Stateful)和无状态(Stateless)1. 无状态1)无状态的B...

2019-11-14 10:41:35 249

原创 多线程并发最佳实践

1. 使用本地变量1) 尽量使用本地变量,而不是创建一个类或实例的变量2. 使用不可变类1)不可变类比如String Integer等一旦创建,不再改变,不可变类可以降低代码中需要的同步数量3. 最小化锁的作用域范围:1)任何在锁中的代码将不能被并发执行,如果你有5%代码在锁中,那么根据Amdahl's law,你的应用形象就不可能提高超过20倍,因为锁中这些代码只能顺序执行,降低锁...

2019-11-14 10:40:44 315

原创 线程池

一、基本概念1. Thread的弊端1)每次 new Thread() 新建对象,性能差2)线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM3)缺少更多的功能,如更多执行、定期执行、线程中断2. 线程池的好处1)重用存在的线程,减少对象创建、消亡的开销,性能佳,降低资源消耗2)可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过...

2019-11-14 10:36:34 222

原创 JUC组件拓展

一、FutureTask1. 概述1)FutureTask这个组件是J.U.C里面的,但不是AQS的子类,但是这个类对线程处理的结果很值得我们学习和在项目中使用2)在Java中一般通过继承Thread类或者实现Runnable接口这两种方式来创建多线程,但是这两种方式都有个缺陷,就是不能在执行完成后获取执行的结果,在Java 1.5之后提供了Callable和Future接口,通过它们就可...

2019-11-14 10:33:54 170

原创 JUC之AQS

一、基本概念1. AbStractQueuedSynchronizer类,简称AQS,一个用来构建锁和同步器的框架,定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch2. 从JDK1.5开始,引入了并发包,也就是J.U.C,大大提高了JAVA程序的并发性能,而AQS则是J.U.C的核心,是并发...

2019-10-29 16:39:35 196

原创 线程安全策略

一、不可变对象创建后状态不能被修改的对象叫作不可变对象。不可变对象天生就是线程安全的。它们的常量(变量)是在构造函数中创建的,既然它们的状态无法被修改,那么这些常量永远不会被改变——不可变对象永远是线程安全的1. 不可变对象需要满足的条件1)对象创建以后其状态就不能修改2)对象所有域都是final类型3)对象是正确创建的(在对象创建期间,this引用没有逸出)2. finalf...

2019-10-29 16:36:22 247 1

原创 并发编程与线程安全

一、基本概念1. 线程安全:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协调,这个类都能表现出正确的行为,那么就称这个类是线程安全的2. 线程安全性体现:1)原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作2)可见性:一个线程对主内存的修改可以及时的被其他线程观察到3)有序性:一个线程观察其他线程...

2019-10-29 16:25:08 183

原创 并发相关知识

一、并发与高并发理解1. 并发1)同时拥有两个或者多个线程,如果程序在单核处理器上运行多个线程将交替地换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行2)多个线程操作相同的资源,保证线程安全,合理使用资源2. 并行1)系统中有多个任务同时存在可称之为“并发”,系统内...

2019-10-29 16:22:43 143

原创 JVM性能调优

一、原则1. 多数的Java应用不需要在服务器上进行GC优化2. 多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码问题3. 在应用上线之前,先考虑将机器的JVM参数设置到最优(最适合)4. 减少创建对象的数量5. 减少使用全局变量和大对象6. GC优化是到最后不得已才采用的手段7. 在实际使用中,分析GC情况优化代码比优化GC参数要多得多二、目的...

2019-09-26 17:11:04 210

原创 JVM参数设置

一、参数表示方法1. 标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容2. 非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容3. 非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用(但是,这些参数往往是非常有用的)二、标准参数其实标准参数是用过Java的人都最熟悉的,...

2019-09-25 17:54:55 327

原创 类加载机制

一、Class文件结构(具体参考 Class文件结构 [外链图片转存失败(img-sTbKn9BB-1569308088016)(DB209DEA96874288BD986E9FFAC4950B)]注:工具1. 看原始class文件(16进制)用 :winhex2. 看class文件结构:java原生指令 javap -verbose class文件名3. ...

2019-09-24 14:55:57 134

原创 jvm的垃圾回收机制

一、基本概念1. Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理2. 由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存3. Java语言规范没有明确地说明JVM使用哪种垃圾回收算法,但是任何...

2019-09-24 09:03:22 292

原创 jvm内存模型

[外链图片转存失败(img-p1erXW5H-1569230249357)(8585855ABE934E89B07AC0179E500A51)]一、内存模型1. 程序计数器1)每个线程拥有一个程序计数器,在线程创建时创建,指向下一条指令的地址,执行本地native方法时,其值为undefined2)Java是支持多线程的,程序先去执行A线程,执行到一半,然后就去执行B线程,然后又跑回来接...

2019-09-23 17:18:10 128

原创 linux下安装redis

1. 下载redis的tar.gz包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz2. 解压 tar -zxvf redis-5.0.5.tar.gz3. 进入解压后的目录,并执行编译操作 cd redis-5.0.5 make4. 完成之后执行安装 cd src make ...

2019-08-15 16:44:17 109

原创 linux下安装tomcat

1. 官网下载tomcat8 https://tomcat.apache.org2. rz 本地文件上传到linux服务器上3. 解压文件 tar -zxvf apache-tomcat-8.5.43.tar.gz4. 进入bin目录,启动tomcat ./startup.sh5. 检查是否启动成功 ps -ef | grep tomca...

2019-08-15 16:43:35 106

原创 linux下安装jdk8

1. 在oracle官网找到jdk1.8下载到本地 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html2. 服务器上创建java目录,rz 本地文件上传到linux服务器上3. 解压jdk包 tar -zxvf jdk-8u221-linux-x64.t...

2019-08-15 16:42:50 117

原创 linux下安装mysql

1. 官网下载 linux 的tar包 https://dev.mysql.com/downloads/mysql/2. rz 本地文件上传到linux服务器上3. 解压 tar -zxvf mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz4. 重命名目录 mv mysql-5.6.44-linux...

2019-08-15 16:41:34 150

原创 java静态代理和动态代理

一、基本概念1. 作用1)Java动态代理的优势是实现无侵入式的代码扩展,也就是方法的增强;让你可以在不用修改源码的情况下,增强一些方法;在方法的前后你可以做你任何想做的事情(甚至不去执行这个方法就可以)2)为其他对象提供一种代理以控制对这个对象的访问2. 优点与缺点1)优点 (1)通过在原有调用的逻辑过程中,再抽一个代理类的方式,使调用逻辑的变化尽可能的封装在代理内部中,...

2019-08-13 17:21:46 173

原创 分布式事务常见解决方案

分布式事务的目的是保障分布式存储中数据一致性,而跨库事务会遇到各种不可控制的问题,如个别节点宕机,像单机事务一样的ACID是无法奢望的一、 二阶段提交(2PC)(XA Transactions)在分布式系统中,每个节点虽然可以知晓自己的操作是成功或者失败,却无法知道其他节点的操作的成功或失败。当一个事务跨越多个节点时,为了保持事务的ACID特性,需要引入一个作为协调者的组件来统一掌控所有节点...

2019-07-13 15:45:58 5844

原创 分布式事务基础知识

一、基本概念1. 概念:分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2. 分布式系统特点:1)分布性 布式系...

2019-07-13 15:41:40 285

原创 生成分布式id的几种实现方法

生成分布式id的核心就是:1. 全局唯一 2. 顺序递增一、使用数据库的 auto_increment 来生成全局唯一递增ID1. 优点1)简单,使用数据库已有的功能2)能够保证唯一性3)能够保证递增性4)步长固定2. 缺点1)可用性难以保证:数据库常见架构是一主多从+读写分离,生成自增ID是写请求,主库挂了就玩不转了2)扩展性差,性能有上限:因为写入是单点,数据库主库...

2019-07-13 15:37:09 547 2

原创 分布式锁

一、什么是分布式锁1. 当在分布式模型下,数据只有一份(或有限制),此时需要利用锁的技术控制某一时刻修改数据的进程数2. 与单机模式下的锁不仅需要保证进程可见,还需要考虑进程与锁之间的网络问题。(分布式情况下之所以问题变得复杂,主要就是需要考虑到网络的延时和不可靠)3. 分布式锁还是可以将标记存在内存,只是该内存不是某个进程分配的内存而是公共内存如 Redis、Memcache。至于利用...

2019-07-13 15:36:01 175

原创 分布式缓存

一、基本概念1. 分布式缓存的发展1)本地缓存:数据存储在应用代码所在内存空间.优点是可以提供快速的数据访问;缺点是数据无法分布式共享,无容错处理.典型的,如Cache4j;2)分布式缓存系统:数据在固定数目的集群节点间分布存储.优点是缓存容量可扩展(静态扩展);缺点是扩展过程中需要大量配置,无容错机制.典型的,如 Memcached;3)弹性缓存平台:数据在集群节点间分布存储,基于冗...

2019-07-13 15:34:39 1889 1

原创 shell学习

一、概念1. Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。2.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务3.确切地说,Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动...

2019-06-12 16:35:47 497

原创 linux常用命令(下)

1. 文件的查找1)find [path] [选项] [action] 在系统中搜索符合条件的文件名,如果需要模糊査询,则使用通配符进行匹配 (1)-type 查找文件的类型为type的, 例如 find / -type s (2)-size 查找比size要大(+)还是小(-)的文件, 例如 find / -size +...

2019-06-12 16:35:02 522

原创 linux常用命令(上)

1. 目录的相关操作1)ls 查看文件与目录 (1)-a 全部的文件,包括隐藏文件 (2)-h 将文件容量以人类易读的方式(例如GB,KB)列出来 (3)-l 列出长数据串,包括文件的属性与权限等数据 (4)-r 将排序结果反向输出 (5)-S ...

2019-06-12 16:29:44 738

原创 linux简介

一、简介1.概述1)Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统2)Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统3) 在 Linux 或 Unix 操作系统中,所有的文件和目...

2019-06-12 16:28:56 825

原创 行为型模式(下)

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配一、观察者模式1. 概念1)观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式2. ...

2019-05-24 16:53:46 247

原创 行为型模式(上)

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配一、模板方法模式1. 概念1)模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式2. 优缺点...

2019-05-24 16:51:22 240

原创 结构型模式

结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象一、代理模式1. 概念1)代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介2. 优缺点1)优点 (1)代理模式在客户端与目...

2019-05-24 16:49:22 243

原创 创建型模式

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成一、单例模式1. 概念1)在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式2)单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例...

2019-05-24 16:46:26 228

空空如也

空空如也

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

TA关注的人

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