自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(34)
  • 收藏
  • 关注

转载 HashMap的理解

(1)HashMap的实现原理?此题可以组成如下连环炮来问你看过HashMap源码嘛,知道原理嘛?为什么用数组+链表?hash冲突你还知道哪些解决办法?我用LinkedList代替数组结构可以么?既然是可以的,为什么HashMap不用LinkedList,而选用数组?你看过HashMap源码嘛...

2019-09-28 16:53:00 222

转载 Mysql 学习篇

基本操作/* Windows服务 */-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格)/* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 ...

2019-09-25 10:14:00 152

转载 设计模式-单例模式(Singleton Pattern)

1、介绍:   单例模式(Singleton Pattern):所谓单例,就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。 场景:频繁创建对象、管理对象是一件耗费资源的事,可以使用单例模式。2、特点类构造器私有持有自己类型的属性对外提供获取实例的静态方法3、实现方式 编写单例模式的代码其实很...

2019-09-19 08:16:00 135

转载 分布式数据库中间件对比

原文出自:https://blog.csdn.net/jornada_/article/details/82947677一般对于业务记录类随时间会不断增加的数据,当数据量增加到一定量(一般认为整型值为主的表达到千万级,字符串为主的表达到五百万)的时候,性能将遇到瓶颈,同时调整表结构也会变得非常困难。为了避免生产遇到这样的问题,在做系统设计时需要预估可能产生的数据量:预估记录主体个数...

2019-09-11 08:43:00 159

转载 Nginx+Lua+Redis 实现高性能缓存数据读取

本文摘自:https://segmentfault.com/p/1210000011625271/read不采用lua之前,我们从redis获取数据的路径与采用lua之后获取数据的路径对比,明显可以看出效率的提升。安装OpenResty参考官方给出的yum安装步骤,各种系统均有支持,也可采用源码安装的形式,安装完成后默认路径是/usr/local/op...

2019-09-11 08:25:00 923

转载 乐观锁和悲观锁

1、悲观锁(Pessimistic Concurrency Control),第一眼看到它,相信每个人都会想到这是一个悲观的锁。没错,它就是一个悲观的锁。那这个悲观体现在什么地方呢?悲观是我们人类一种消极的情绪,对应到锁的悲观情绪,悲观锁认为被它保护的数据是极其不安全的,每时每刻都有可能变动,一个事务拿到悲观锁后(可以理解为一个用户),其他任何事务都不能对该数据进行修改,只能等待锁被...

2019-09-03 08:23:00 114

转载 Tomcat源码分析篇(转载)

说明:仅供学习,原文出自https://www.cnblogs.com/Jtianlin/p/5041703.htmlTomcat源码分析(一)--服务启动1.Tomcat主要有两个组件,连接器和容器,所谓连接器就是一个http请求过来了,连接器负责接收这个请求,然后转发给容器。容器即servlet容器,容器有很多层,分别是Engine, Host,Context,...

2019-09-02 12:28:00 92

转载 SpringBoot之启动@SpringBootApplication原理分析

1、SpringBoot 启动main()1 @SpringBootApplication2 public class TomcatdebugApplication {3 4 public static void main(String[] args) {5 SpringApplication.run(TomcatdebugApplicat...

2019-09-02 12:04:00 564

转载 分布式锁的实现

本文摘自网上,仅作学习使用!用一web应用集群,负载均衡部署实现:在上图可以看到,变量A在JVM1、JVM2、JVM3三个JVM内存中(这个变量A主要体现是在一个类中的一个成员变量,是一个有状态的对象),如果我们不加任何控制的话,变量A同进都会在JVM分配一块内存,三个请求发过来同时对这个变量进行操作,显然结果不是我们想要的。如果我们业务中存在这样的场景的话,就...

2019-08-27 09:06:00 68

转载 synchronized和lock的区别

原文摘自: https://www.eyesmoons.com/article/751,原始构成synchronized是关键字,属于JVM层面,通过wait,notify和notifyAll来调度线程。Lock是具体类,是api层面的锁。2,使用方法synchronized不需要用户手动去释放锁, 当synchronized代码执行完后,系统会自动释放锁。Loc...

2019-08-17 12:48:00 97

转载 分布式系统架构常识之CAP和BASE理论

什么是CAP理论?2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后麻省理工学院的Seth Gilbert和NancyLynch从理论上证明了CAP,之后CAP理论正式成为分布式计算领域的公认定理。CAP是一个已经经过证实的理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availabilit...

2019-08-16 13:38:00 196

转载 Mysql中的行级锁、表级锁、页级锁

在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。行级锁行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁和排他锁。特点开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最...

2019-08-16 08:39:00 119

转载 MySQL数据库的锁机制

在并发访问情况下,很有可能出现不可重复读等等读现象。为了更好的应对高并发,封锁、时间戳、乐观并发控制(乐观锁)、悲观并发控制(悲观锁)都是并发控制采用的主要技术方式。锁分类①、按操作划分:DML锁,DDL锁②、按锁的粒度划分:表级锁、行级锁、页级锁③、按锁级别划分:共享锁、排他锁④、按加锁方式划分:自动锁、显示锁⑤、按使用方式划分:乐观锁、悲观锁乐观锁和悲...

2019-08-16 08:18:00 78

转载 sso单点登录系统

说明: 本文知识网摘,仅限自己加深学习,原文出处点击一、准备  1、了解http请求及特点  2、了解cookie和session  3、了解用户登录和注销流程二、单机用户登录流程总体流程图实现:1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,...

2019-08-15 08:49:00 186

转载 集合学习篇之-fail-fast和fail-safe

1、fail-fast  我们通常说的Java中的fail-fast机制,默认指的是Java集合的一种错误检测机制。当多个线程对部分集合进行结构上的改变的操作时,有可能会产生fail-fast机制,这个时候就会抛出ConcurrentModificationException(后文用CMException代替)。  例如:在Java中, 如果在foreach /iterator循...

2019-08-14 16:36:00 151

转载 线程状态

1、“锁” 的生活实例  比如,你今天要去银行办业务,你到了银行之后,要先取一个号,然后你坐在休息区等待叫号,过段时间,广播叫到你的号码之后,会告诉你去哪个柜台办理业务,这时,你拿着你手里的号码,去到对应的柜台,找相应的柜员开始办理业务。当你办理业务的时候,这个柜台和柜台后面的柜员只能为你自己服务。当你办完业务离开之后,广播再喊其他的顾客前来办理业务。  在这个例子中,每个顾...

2019-08-14 15:40:00 80

转载 JMM学习篇

并发编程,为了保证数据的安全,需要满足以下三个特性:原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度,既不被中断操作,要不执行完成,要不就不执行。可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。有序性即程序执行的顺序按照代码的先后顺序执行。有没有发现,缓存一致性问题其实就是可见性问题。而处理器优化是可以导致原...

2019-08-14 13:58:00 198

转载 JVM学习篇之-性能调优

1、JVM内存模型总结:可以发现最明显的一个变化是元空间从虚拟机转移到了本地内存。默认情况下,元数据空间大小仅受限于本地内存, 这意味着以后不会因为永久代大小不够而抛出OOM异常了。 jdk1.8以前,HotSpot VM将class和类的jar包数据存储在PermGen里, PermGen大小是固定的,而且项目之间无法公用公有的class,所以很容易碰到OOM异常。改成M...

2019-08-13 15:53:00 342

转载 JVM学习篇之-GC

原文转自:https://blog.csdn.net/Strong997/article/details/800337871、GC垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随...

2019-08-13 15:47:00 80

转载 JVM学习篇之-类运行机制

1.一段java程序是如何运行起来的呢?Java源文件,通过编译器,产生.Class字节码文件,字节码文件通过Java虚拟机中的解释器,编译成特定及其上的机器码,那Java虚拟机又是怎样加载java程序并执行起来的呢?简单来说:通过类加载器加载字节码文件,被分配到JVM的运行时数据区的字节码会被执行引擎执行。(1)类加载器,加载.class文件(2)运行数据区:栈区、堆区、...

2019-08-13 14:32:00 98

转载 JVM学习篇之-创建对象的过程

本文转自:https://www.jianshu.com/p/d2d806ca78591.对象的创建虚拟机接收到new指令时,检查这个指令能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化。如果都没有,先执行类加载过程。在类加载通过后,虚拟机为新对象分配内存(把一块确定大小的内存从Java堆中划分出来),内存大小在类加载完...

2019-08-13 13:00:00 88

转载 JVM学习篇之-运行时数据区域

1、什么是jvm?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。2、jvm 运行时数据区域堆和方法区是所有线程共有的。虚拟机栈,本地方法栈和程序计数器则是线程私有的。2.1 程序计数器:一块较小的内...

2019-08-13 12:56:00 79

转载 LevelDB-初始篇

简介:LevelDB是一个基于本地文件的存储引擎,非分布式存储引擎,原理基于BigTable(LSM文件树),无索引机制,存储条目为Key-value。适用于保存数据缓存、日志存储、高速缓存等应用,主要是避免RPC请求带来的延迟问题。在存取模型上,顺序读取性能极高,但是对于随机读取的情况延迟较大(但性能也不是特别低),比较适合顺序写入(key),随机的key写入也不会带来问题。数据存...

2019-08-07 08:46:00 100

转载 Mybatis 分页PageHelper插件

具体步骤如下1、pom.xml添加jar包:<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.4</v...

2019-08-05 14:52:00 57

转载 XXL-JOB 轻量级分布式任务调度平台

简述:XXL-JOB是一个轻量级分布式任务调度平台,分布式任务调度中心。GitHub:https://github.com/xuxueli/xxl-job/1.1 源码目录介绍- /doc :文档资料- /db :“调度数据库”建表脚本- /xxl-job-admin :调度中心,项目源码- /xxl-job-core :公共Jar依赖- /xxl-job-...

2019-08-01 19:16:00 148

转载 POI 3.17 导出样式(与3.9方式不同)

HSSFWorkbook workbook = new HSSFWorkbook(); //创建工作簿 HSSFSheet sheet = workbook.createSheet(“Test”); //创建SHEET页 HSSFRow row = sheet.createRow(0); //创建行,从0开始 HSSFCell cell = row.createCell(0);//创建列...

2019-08-01 18:47:00 996

转载 HashMap、ConcurrentHashMap、HashTable的区别

注:hashtable:使用一把锁处理并发问题,当有多个线程访问时,需要多个线程竞争一把锁,导致阻塞。concurrentHashMap则使用分段,相当于把一个hashmap分成多个,然后每个部分分配一把锁,这样就可以支持多线程访问。1、HashMap与hashtable继承关系图:2、hashmap支持:支持null的key和value值,在hashtab...

2019-08-01 14:15:00 74

转载 Mysql 事务特性和级别

一、什么是事务?   数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。二、事务的四大属性分别是原子性、一致性、隔离性、持久性。1、原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2、一致性(...

2019-07-30 08:24:00 62

转载 多线程-生命周期

本文转载——https://www.cnblogs.com/marsitman/p/11228684.html线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。新建:就是刚使用new方法,new出来的线程;就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;运行:当就绪的...

2019-07-23 08:48:00 312

转载 mybatis 批量提交

简介:mybatis的批量操作减少数据库连接次数一、mapper 使用foreach 遍历  批量insert:  <insert id="addEmpsBatch"> INSERT INTO emp(ename,gender,email,did) VALUES <foreach collec...

2019-07-22 15:57:00 294

转载 十大Intellij IDEA快捷键

活不多说,进入正题1 智能提示:Intellij首当其冲的当然就是Intelligence智能!基本的代码提示用Ctrl+Space,还有更智能地按类型信息提示Ctrl+Shift+Space,但因为Intellij总是随着我们敲击而自动提示,所以很多时候都不会手动敲这两个快捷键(除非提示框消失了)。用F2/ Shift+F2移动到有错误的代码,Alt+Enter快速...

2019-07-18 10:51:00 95

转载 IDEA 快捷键

自动代码      fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码    例如:Date birthday = user.getBirthday() --》输入user.getBirthday().var+Tab自动补全快捷键Ctrl+Alt+O 优化导入的类和...

2019-07-18 10:49:00 63

转载 Redis客户端之Lettuce

简介:基于Netty框架的事件驱动的通信层,Redis 客户端,线程安全同步。异步调用。lettuce 官网地址:https://lettuce.io/lettuce git项目地址:https://github.com/lettuce-io/lettuce-core使用:1、在pom.xml 中加入依赖io.lettucelettuce-core5.1.7.RELEAS...

2019-07-16 09:09:00 233

转载 IDEA 搭建maven项目

简介: 使用idea搭建maven项目demo步骤:1、选择File->New->Project->Maven -> 右栏第二个“webapp”2、点击“Next”,填写坐标3、点击“Finish”,项目结构如下:转载于:https://www.cnblogs.com/123-shen/p/11174328.html...

2019-07-12 09:58:00 64

空空如也

空空如也

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

TA关注的人

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