自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【消息队列MQ】系列面试题一:如何进行技术选型

消息中间件选型;引入消息队列的优点;引入消息队列的缺点;

2020-08-10 16:07:35 732

转载 01-025 【jvm】九种OOM常见原因及解决方案

1. java.lang.OutOfMemory:java heap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出java.lang.OutOfMemoryError:Javaheap space 错误(根据实际生产经验,可以对程序日志中的 OutOfMemoryError 配置关键字告警,一经发现,立即处理)。原因分析Javaheap space 错误...

2020-02-22 12:23:03 462

转载 redis的 rdb 和 aof 持久化的区别

redis持久化的两种方式rdb和aof,优缺点,方式,性能,如何选择,数据备份等

2020-02-18 22:38:36 332

原创 01-024 【jvm】垃圾收集器之G1垃圾收集器

以前收集器特点年轻代和老年代是各自独立且连续的内存块;年轻代收集使用单eden+s0+s1进行复制算法;老年代收集必须扫描整个老年代区域;都是以尽可能少而快速地执行GC为设计原则G1是什么G1(Garbage First)收集器,是一款面向服务端应用的收集器,应用在多处理器和大容量内存环境中,在实现高吞吐量的同时,尽可能的满足垃圾收集器暂停时间的要求。具有以下特性:向CMS一...

2020-02-15 17:38:35 428

原创 01-023 【JVM】七大垃圾收集器及相关问题

Serial/Parallel/Cms/G1

2020-02-15 17:37:36 230

转载 MySQL索引底层实现原理

MySQL索引底层实现原理:B树、B+树

2020-02-13 21:10:06 187

原创 Nginx基础入门(非常基础)

Nginx基础入门:安装、常用命令和配置文件/反向代理/负载均衡/动静分离/高可用集群

2020-02-09 21:49:44 864

转载 Java线程的6种状态及切换(透彻讲解)【基础题目】

java线程的六种状态初始(NEW):新创建了一个线程对象,但还没有调用start()方法。运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就...

2020-02-02 16:09:32 188

转载 127.0.0.1和localhost和本机IP三者的区别

什么是环回地址??与127.0.0.1的区别呢??环回地址是主机用于向自身发送通信的一个特殊地址(也就是一个特殊的目的地址)。可以这么说:同一台主机上的两项服务若使用环回地址而非分配的主机地址,就可以绕开TCP/IP协议栈的下层。(也就是说:不用再通过什么链路层,物理层,以太网传出去了,而是可以直接在自己的网络层,运输层进行处理了)IPv4的环回地址为:127.0.0.0到127.255...

2020-02-02 15:31:43 188

原创 07-001 【java8】Lambda表达式、四大内置核心函数式接口(Consumer/Supplier/Function/Predicate)、方法引用与构造器引用

Lambda表达式的基本语法;四大核心函数式接口(Consumer/Supplier/Function/Predicate);方法引用、构造器引用、数组引用;

2020-02-01 22:26:42 504

原创 01-022【jvm】CAS与原子类ABA问题

CAS/ABA

2020-01-30 14:37:44 323

原创 01-021【jvm】聊聊volatile

volatile/JMM/DCL/可见性/指令重排

2020-01-30 01:03:07 169

原创 06-012 【JUC】synchronized和Lock的区别

原始构成:synchronized是关键字属于JVM层面,monitorenter(底层通过monitor对象来完成,其wait/notify等方法也依赖于monitor对象,只有在同步块或方法中才能调用wait/notify等方法)需要monitorexit退出使用方法synchronized不需要用户去手动释放锁,当synchronized代码执行完后系统会自动让线程释放对锁的占用;...

2020-01-29 22:49:57 209

原创 06-011 【JUC】死锁编码及定位分析

死锁是什么死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因为争夺有限的资源而陷入死锁。代码举例package com.magic.juc0117;class HoldLockThread implements Runnabl...

2020-01-29 22:01:13 166

原创 06-010 【JUC】公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自旋锁

1.公平锁和非公平锁是什么?公平锁:是指多个线程按照申请锁的顺序来获取锁,先来后到。非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比现申请的线程优先获得锁,在高并发的情况下,有可能会造成优先级反战或者饥饿现象两者区别公平锁:就是很公平,在并发环境中,每个线程获取锁时会查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则加入等...

2020-01-29 21:48:24 258

原创 06-009 【JUC】读写锁ReadWriteLock接口的实现ReentrantReadWriteLock

独占锁(写锁)/共享锁(读锁)是什么独占:该锁一次只能被一个线程持有,ReentrantLock和synchronized都是独占锁共享:该锁可以被多个线程持有举例:ReentrantReadWriteLock其读锁是共享锁,其写锁是独占锁。读锁的共享锁可保证并发读是非常高效的,读写、写读、写写过程是互斥的代码实现package com.magic.juc0117;impor...

2020-01-29 21:47:57 135

原创 06-008 【JUC】CountDownLatch/CyclicBarrier/Semaphore的相关使用举例

1.CountDownLatchpackage com.magic.juc0117;import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { ...

2020-01-29 21:47:29 201

原创 06-007【JUC】阻塞队列BlockingQueue与生产者消费者阻塞队列版

1.什么是阻塞队列当阻塞队列为空时,从队列中获取元素的操作将会被阻塞;当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。2.为什么用阻塞队列?有什么好处?在多线程领域,所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒为什么需要BlockingQueue?好处是我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为这一切BlockingQue...

2020-01-29 19:42:47 222

原创 06-006【JUC】java实现多线程的四种方式之四:线程池

1.为什么用线程池及其优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后再线程创建后启动这些任务,**如果线程数量超过了最大数量,超出数量的线程排队等候,**等其他线程执行完毕,再从队列中取出任务来执行。主要特点:线程复用;控制最大并发数;管理线程。优势:降低资源消耗。通过重复利用已经创建的线程降低线程创建和销毁造成的损耗。提高响应速度。当任务到达时,任务可以...

2020-01-29 18:25:33 193

原创 01-020 【jvm】JMM --Java Memory Model Java内存模型

JMM定义了一套在多线程读写共享数据时(成员变量,数组),对数据的可见性,原子性,有序性的规则和保障1.保证原子性原子性:要么全部执行,要么全不执行。Java中有两种方式实现原子性一种是使用锁机制,锁具有排他性,也就是说它能够保证一个共享变量在任意一个时刻仅仅被一个线程访问,这就消除了竞争;另一种CAS指令。怎么保证原子性?加锁:synhronized、Lock在java中提供了...

2020-01-23 14:53:28 218 1

原创 01-019 【jvm】语法糖概览

1.默认构造器public class Candy1{}编译成class的代码:public class Candy1{ //这个无参构造器是编译器帮我们加上的 public Candy1(){ super();//调用父类Object无参构造方法 }}2.自动拆装箱public class Candy2{ public static voi...

2020-01-23 01:45:04 135

原创 05-009 【Linux】进程管理

1.进程的基本介绍在Linux中,每个执行的程序(代码)都称为一个进程。每个进程都分配一个ID号。每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。一般系统的服务都是以后台进程的方式存在,...

2020-01-21 20:43:36 104

原创 05-008 【Linux】磁盘分区与挂载

1.分区基础知识分区的方式:1)mbr分区最多支持4个主分区系统只能安装在主分区扩展分区要占一个主分区MBR最大只支持2TB,但拥有最好的兼容性2)gtp分区支持无限多个主分区(但操作系统可能限制,比如Windows下最多128个分区)最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)Windows7 64位后支持gtpWindows下的...

2020-01-20 18:28:52 246

原创 05-007 【Linux】crond任务调度

1. 概述任务调度:是指系统在某个时间执行特定的命令或程序任务调度分类:1.系统工作:有些重要工作需要周而复始的进行,比如病毒扫描;2.个别用户工作:个别用户可能希望执行某些程序,比如mysql备份。2. 语法crontab 【选项】选项含义-e编辑crontab定时任务-l查询crontab任务-r删除当前用户所有的crontab3.快速入...

2020-01-20 17:29:47 151

原创 05-006 【Linux】组管理和权限管理

1.Linux组基本介绍在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其他组的概念。除文件的所有者和所有组的用户外,系统的其他用户都是文件的其他组。2.文件/目录所有者一般为文件的创建者,谁创建就会自然的成为该文件的所有者。ls -ahl(查看文件所有者)实例:创建组police,再创建一个用户tom,将tom放在police组,然后...

2020-01-20 15:30:09 180

原创 05-005 【Linux】实用命令

1.指定运行级别运行级别说明:0:关机1:单用户2:多用户状态没有网络服务3:多用户状态有网络服务4:系统未使用保留给用户5:图形界面6:重启系统常用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的 id:5:initdefault 这行中的数据2.切换到指定运行级别的指令int [0123456]题目:如何找回root密码,如果我们不小心,忘记...

2020-01-20 13:38:03 210

原创 05-004 【Linux】常用命令开机、重启、登录、注销与用户、用户组

1.开机、重启和用户登录注销1.1 关机&重启shutdown -h now:表示立即关机shutdown -h 1 :表示1分钟后关机shutdown -r now :立即重启halt:就是直接使用,相当于关机reboot:就是重启系统sync:把内存的数据同步到磁盘上,当我们关机或者重启时,都应该先执行一下sync,防止数据丢失。1.2 用户登录或者注销登录时尽量少...

2020-01-19 22:57:05 204

原创 05-003 【Linux】vi 和 vim 编辑器

1.vi 和 vim 的基本介绍所有的 Linux 系统都会内建 vi 文本编辑器。Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。2.vi 和 vim常见的三种模式2.1 正常模式可以使用快捷键,以vim打开一个档案直接进入正常模式。2.2 插入/编辑...

2020-01-19 18:50:31 147

原创 05-002 【Linux】目录结构介绍及远程操作工具:Xshell、Xftp、WinSCP等

1.目录结构1.1 基本介绍Linux的文件系统是采用级层式的树状目录结构,最上层根目录“/”然后再此目录下再创建其他目录。在Linux的世界里,一切皆文件。1.2 具体结构(加粗的为重点)/bin(/usr/bin、/usr/local/bin)是binary的缩写,这个目录存放着最常使用的命令;/sbin(/usr/sbin 、/usr/local/sbin)s就是Super ...

2020-01-19 18:19:45 680

原创 05-001 【Linux】 准备工作:安装vmware 、 CentOS 、vmtools

安装VMware参考 windows10安装vmware14教程.我装的12.再安装 Linux (CentOS 6.10)可参考视频、可参考文档vmtools安装进入 centos点击 vm 菜单的->install vmware tools会出现一个 vm 的安装包点击右键解压, 得到一个安装文件进入该 vm 解压的目录 ,该文件在 /root/桌面/vmware...

2020-01-19 17:06:23 145

原创 06-005【JUC】java实现多线程的四种方式之三:实现Callable接口

实现Callable接口package com.magic.juc0117;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * @Description * 与Runnable...

2020-01-19 14:39:55 540

原创 06 004【JUC】java多线程之八锁案例

八锁案例个人感觉需要判断是否加锁,加的是否为同一把锁,同一把锁需要等待,不同的锁不用等待。package com.magic.juc0117;import java.util.concurrent.TimeUnit;/** * 1.标准访问,先打印邮件还是短信? * 绝不会同时进去,只要在一个资源类里面,不管他有多少同步方法,只要一个线程先访问了资源类里 * 的任何一个同步方法,...

2020-01-19 14:00:29 120

原创 06 003【JUC】多线程的生产者消费者及Condition介绍

生产者消费者举例:现在两个线程,可以操作初始值为零的一个变量,实现一个线程对该变量+1,一个线程对该变量-1,实现交替,来10轮,变量初始值最终为零,下面每句都很干package com.magic.juc0117;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;imp...

2020-01-19 13:21:24 146

原创 06 002【JUC】怎样将线程不安全的集合类替换为线程安全的类?主要涉及写时复制(CopyOnWrite)

由ArrayList引发的一系列问题写在前面:务必牢牢记忆java.util.ConcurrentModificationException、CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMapnew ArrayList()底层new了什么?数组底层什么类型?Object 想想list.add 能装什么 啥都能装以Ja...

2020-01-19 12:52:50 364

原创 06 001 【JUC】以售票案例演示多线程、lambda表达式、函数式接口(@FunctionalInterface)

三个线程并发(三个售票员 卖出 30张票)大量重复代码可以设置到模板里,参见IDEA.package com.magic.juc0117;import java.util.ArrayList;import java.util.List;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks...

2020-01-19 12:18:34 225

原创 01-018 jvm 本地接口/本地方法栈/Native

nativepublic class NativeT2 { public static void main(String[] args) { Thread t1 = new Thread(); t1.start(); t1.start(); //多次start报异常java.lang.IllegalThreadStateEx...

2020-01-18 16:54:56 273

原创 01-017 jvm类加载器、双亲委派与沙箱安全

ClassLoader负责加载class文件,class文件在文件开头有特定的文件标示(cafe babe,后面符合Java的语法规定),将class文件字节码内容加载到内存中,并将这些内容转换成方法区中运行时数据结构并且ClassLoader只负责class文件加载,置于它是否可以运行,则由Execution Engine决定ps.大Class装进方法区,一个类的模板,按照模板生成实例N个...

2020-01-18 16:14:31 307

原创 04-002 springboot的配置

1、配置文件springboot使用一个全局配置文件application.propertiesapplication.yml作用:修改springboot的自动配置的默认值,springboot底层配置好的可以在此修改。YAML(YAML Ain’t Makeup Language)YAML A Makeup Language:是一个标记语言YAML isn’t Mak...

2020-01-12 18:11:04 106

原创 05-010 【Linux】升级glibc后升级CentOS内核版本

首先升级glibc由1.2到2.17版glibc-2.17.tar.gz下载地址.[root@hadoop1 ~]# tar -xf glibc-2.17.tar.gz[root@hadoop1 ~]# cd glibc-2.17[root@hadoop1 ~]# mkdir build; cd build[root@hadoop1 ~]# ../configure --prefix=/...

2020-01-12 18:09:26 287

原创 04-001 springboot 入门

1、springboot简介简化spring应用开发的一个框架整个spring技术栈的一个大集合J2EE开发的一站式解决方案2、微服务2014 Martin Fowler 提出微服务的设计思想与理念微服务:一种架构风格,一个应用应该是一组小型服务,每个服务都有自己的进程,通过HTTP的方式进行互通;功能元素拆分开,然后动态组合,节省调用资源,每一个功能元素都是可以独立替换、升级的...

2020-01-10 16:41:01 154

空空如也

空空如也

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

TA关注的人

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