自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 Mysql高手系列 - 第14篇:详解事务

这是Mysql系列第14篇。 环境:mysql5.7.25,cmd命令中进行演示。 开发过程中,会经常用到数据库事务,所以本章非常重要。 本篇内容 什么是事务,它有什么用? 事务的几个特性 事务常见操作指令详解 事务的隔离级别详解 脏读、不可重复读、可重复读、幻读详解 演示各种隔离级别产生的现象...

2019-09-27 10:00:00 25 0

转载 Mysql高手系列 - 第13篇:细说NULL导致的神坑,让人防不胜防

这是Mysql系列第13篇。 环境:mysql5.7.25,cmd命令中进行演示。 当数据的值为NULL的时候,可能出现各种意想不到的效果,让人防不胜防,我们来看看NULL导致的各种神坑,如何避免? 比较运算符中使用NULL 认真看下面的效果 mysql> select 1>NUL...

2019-09-25 09:57:00 20 0

转载 Mysql高手系列 - 第12篇:子查询详解

这是Mysql系列第12篇。 环境:mysql5.7.25,cmd命令中进行演示。 本章节非常重要。 子查询 出现在select语句中的select语句,称为子查询或内查询。 外部的select查询语句,称为主查询或外查询。 子查询分类 按结果集的行列数不同分为4种 标量子查询(结果集只有一行一...

2019-09-24 13:23:00 19 0

转载 Mysql高手系列 - 第10篇:常用的几十个函数详解,收藏慢慢看

这是Mysql系列第10篇。 环境:mysql5.7.25,cmd命令中进行演示。 MySQL 数值型函数 函数名称 作 用 abs 求绝对值 sqrt 求二次方根 mod 求余数 ceil 和 ceiling 两个函数功能相同,都是返回不小于参数的最小整数,即向上取整 ...

2019-09-20 14:56:00 25 0

转载 Mysql高手系列 - 第11篇:深入了解连接查询及原理

这是Mysql系列第11篇。 环境:mysql5.7.25,cmd命令中进行演示。 当我们查询的数据来源于多张表的时候,我们需要用到连接查询,连接查询使用率非常高,希望大家都务必掌握。 本文内容 笛卡尔积 内连接 外连接 左连接 右连接 表连接的原理 使用java实现连接查询,加深理解 准备数...

2019-09-19 16:28:00 29 0

转载 Mysql高手系列 - 第9篇:详解分组查询,mysql分组有大坑!

这是Mysql系列第9篇。 环境:mysql5.7.25,cmd命令中进行演示。 本篇内容 分组查询语法 聚合函数 单字段分组 多字段分组 分组前筛选数据 分组后筛选数据 where和having的区别 分组后排序 where & group by & having & ...

2019-09-16 16:37:00 58 0

转载 Mysql高手系列 - 第8篇:详解排序和分页(order by & limit),及存在的坑

这是Mysql系列第8篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 本章内容 详解排序查询 详解limit limit存在的坑 分页查询中的坑 排序查询(order by) 电商中:我们想查看今天所有成交的订单,按照交易额从...

2019-09-12 16:18:00 15 0

转载 Mysql高手系列 - 第7篇:玩转select条件查询,避免踩坑

这是Mysql系列第7篇。 环境:mysql5.7.25,cmd命令中进行演示。 电商中:我们想查看某个用户所有的订单,或者想查看某个用户在某个时间段内所有的订单,此时我们需要对订单表数据进行筛选,按照用户、时间进行过滤,得到我们期望的结果。 此时我们需要使用条件查询来对指定表进行操作,我们需要了...

2019-09-10 16:37:00 19 0

转载 Mysql高手系列 - 第5天:DML操作汇总,确定你都会?

这是Mysql系列第5篇。 环境:mysql5.7.25,cmd命令中进行演示。 DML(Data Manipulation Language)数据操作语言,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是必须要掌握的指令,DML和SQL中的select熟称C...

2019-09-06 16:15:00 11 0

转载 Mysql高手系列 - 第4天:DDL常见操作汇总

这是Mysql系列第4篇。 环境:mysql5.7.25,cmd命令中进行演示。 DDL:Data Define Language数据定义语言,主要用来对数据库、表进行一些管理操作。 如:建库、删库、建表、修改表、删除表、对列的增删改等等。 文中涉及到的语法用[]包含的内容属于可选项,下面做详细说...

2019-09-04 17:24:00 28 0

转载 Mysql系列 - 第3天:管理员必备技能(必须掌握)

这是mysql系列第3篇文章。 环境:mysql5.7.25,cmd命令中进行演示。 在玩mysql的过程中,经常遇到有很多朋友在云上面玩mysql的时候,说我创建了一个用户为什么不能登录?为什么没有权限?等等各种问题,本文看完之后,这些都不是问题了。 本文主要内容 介绍Mysql权限工作原理 ...

2019-09-02 15:59:00 12 0

转载 java高并发系列 - 第32天:高并发中计数器的实现方式有哪些?

这是java高并发系列第32篇文章。 java环境:jdk1.8。 本文主要内容 4种方式实现计数器功能,对比其性能 介绍LongAdder 介绍LongAccumulator 需求:一个jvm中实现一个计数器功能,需保证多线程情况下数据正确性。 我们来模拟50个线程,每个线程对计数器递增10...

2019-08-28 15:43:00 16 0

转载 java高并发系列 - 第31天:获取线程执行结果,这6种方法你都知道?

这是java高并发系列第31篇。 环境:jdk1.8。 java高并发系列已经学了不少东西了,本篇文章,我们用前面学的知识来实现一个需求: 在一个线程中需要获取其他线程的执行结果,能想到几种方式?各有什么优缺点? 结合这个需求,我们使用6种方式,来对之前学过的知识点做一个回顾,加深记忆。 方式1:...

2019-08-26 15:25:00 10 0

转载 java并发系列 - 第29天:高并发中常见的限流方式

这是java高并发系列第29篇。 环境:jdk1.8。 本文内容 介绍常见的限流算法 通过控制最大并发数来进行限流 通过漏桶算法来进行限流 通过令牌桶算法来进行限流 限流工具类RateLimiter 常见的限流的场景 秒杀活动,数量有限,访问量巨大,为了防止系统宕机,需要做限流处理 国庆期间...

2019-08-20 16:23:00 18 0

转载 java并发系列 - 第28天:实战篇,微服务日志的伤痛,一并帮你解决掉

这是java高并发系列第28篇文章。 环境:jdk1.8。 本文内容 日志有什么用? 日志存在的痛点? 构建日志系统 日志有什么用? 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复业务 提取有用数据,做数据分析使用 本文主要讨论通过日志来快速定位并解决问题。 日志存在的...

2019-08-19 16:07:00 55 0

转载 java高并发系列 - 第26篇:学会使用JUC中常见的集合,常看看!

这是java高并发系列第26篇文章。 环境:jdk1.8。 本文内容 了解JUC常见集合,学会使用 ConcurrentHashMap ConcurrentSkipListMap ConcurrentSkipListSet CopyOnWriteArraySet 介绍Queue接口 Concur...

2019-08-16 15:10:00 32 0

转载 java高并发系列 - 第27天:实战篇,接口性能成倍提升,让同事刮目相看,现学现用...

这是java高并发系列第27篇文章。 开发环境:jdk1.8。 案例讲解 电商app都有用过吧,商品详情页,需要给他们提供一个接口获取商品相关信息: 商品基本信息(名称、价格、库存、会员价格等) 商品图片列表 商品描述信息(描述信息一般是由富文本编辑的大文本信息) 数据库中我们用了3张表存储上...

2019-08-16 15:09:00 21 0

转载 java高并发系列 - 第25天:掌握JUC中的阻塞队列

这是java高并发系列第25篇文章。 环境:jdk1.8。 本文内容 掌握Queue、BlockingQueue接口中常用的方法 介绍6中阻塞队列,及相关场景示例 重点掌握4种常用的阻塞队列 Queue接口 队列是一种先进先出(FIFO)的数据结构,java中用Queue接口来表示队列。 Qu...

2019-08-15 16:26:00 12 0

转载 java高并发系列 - 第24天:ThreadLocal、InheritableThreadLocal(通俗易懂)

java高并发系列第24篇文章。 环境:jdk1.8。 本文内容 需要解决的问题 介绍ThreadLocal 介绍InheritableThreadLocal 需要解决的问题 我们还是以解决问题的方式来引出ThreadLocal、InheritableThreadLocal,这样印象会深刻一...

2019-08-13 14:49:00 9 0

转载 java高并发系列 - 第23天:JUC中原子类,一篇就够了

这是java高并发系列第23篇文章,环境:jdk1.8。 本文主要内容 JUC中的原子类介绍 介绍基本类型原子类 介绍数组类型原子类 介绍引用类型原子类 介绍对象属性修改相关原子类 预备知识 JUC中的原子类都是都是依靠volatile、CAS、Unsafe类配合来实现的,需要了解的请移步: ...

2019-08-07 15:13:00 646 0

转载 java高并发系列 - 第22天:java中底层工具类Unsafe,高手必须要了解

这是java高并发系列第22篇文章,文章基于jdk1.8环境。 本文主要内容 基本介绍 通过反射获取Unsafe实例 Unsafe中的CAS操作 Unsafe中原子操作相关方法介绍 Unsafe中线程调度相关方法 park和unpark示例 Unsafe锁示例 Unsafe中保证变量的可见性 U...

2019-08-06 14:51:00 43 0

转载 java高并发系列 - 第21天:java中的CAS操作,java并发的基石

这是java高并发系列第21篇文章。 本文主要内容 从网站计数器实现中一步步引出CAS操作 介绍java中的CAS及CAS可能存在的问题 悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例 使用java中的原子操作实现网站计数器功能 我们需要解决的问题 需求:我们开发了一个网站,需要对访问量...

2019-08-05 15:00:00 11 0

转载 java高并发系列 - 第20天:JUC中的Executor框架详解2之ExecutorCompletionService

这是java高并发系列第20篇文章。 本文内容 ExecutorCompletionService出现的背景 介绍CompletionService接口及常用的方法 介绍ExecutorCompletionService类及其原理 示例:执行一批任务,然后消费执行结果 示例【2种方式】:异步执行...

2019-08-02 09:08:00 13 0

转载 java高并发系列 - 第19天:JUC中的Executor框架详解1,全面掌握java并发核心技术

这是java高并发系列第19篇文章。 本文主要内容 介绍Executor框架相关内容 介绍Executor 介绍ExecutorService 介绍线程池ThreadPoolExecutor及案例 介绍定时器ScheduledExecutorService及案例 介绍Excecutors类的使用...

2019-08-01 09:17:00 16 0

转载 java高并发系列 - 第18天:玩转java线程池,这一篇就够了

阿里p7一枚,可以关注公众号:路人甲Java,咱们一起同行! 这是java高并发系列第18篇文章。 本文主要内容 什么是线程池 线程池实现原理 线程池中常见的各种队列 自定义线程创建的工厂 常见的饱和策略 自定义饱和策略 线程池中两种关闭方法有何不同 扩展线程池 合理地配置线程池 线程池中线程数...

2019-07-29 08:59:00 14 0

转载 (必备技能)玩转java高并发系列,估计有50篇,已连载17篇

java高并发系列 java高并发系列 - 第1天:必须知道的几个概念 java高并发系列 - 第2天:并发级别 java高并发系列 - 第3天:有关并行的两个重要定律 java高并发系列 - 第4天:JMM相关的一些概念 java高并发系列 - 第5天:深入理解进程和线程 java高并发系列 ...

2019-07-26 09:32:00 114 0

转载 java高并发系列 - 第17天:JUC中的循环栅栏CyclicBarrier常见的6种使用场景及代码示例...

这是java高并发系列第17篇。 本文主要内容: 介绍CyclicBarrier 6个示例介绍CyclicBarrier的使用 对比CyclicBarrier和CountDownLatch CyclicBarrier简介 CyclicBarrier通常称为循环屏障。它和CountDownLat...

2019-07-25 09:20:00 32 0

转载 java高并发系列 - 第16天:JUC中等待多线程完成的工具类CountDownLatch,必备技能...

这是java高并发系列第16篇文章。 本篇内容 介绍CountDownLatch及使用场景 提供几个示例介绍CountDownLatch的使用 手写一个并行处理任务的工具类 假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet...

2019-07-22 15:08:00 30 0

转载 java高并发系列 - 第15天:JUC中的Semaphore,最简单的限流工具类,必备技能

这是java高并发系列第15篇文章 Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能允许一个线程访问一个资源,而信号量可以控制有多少个线程可以同时访问特定的资源。 Semaphor...

2019-07-22 09:02:00 15 0

转载 java高并发系列 - 第14天:JUC中的LockSupport工具类,必备技能

这是java高并发系列第14篇文章。 本文主要内容: 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例 介绍LockSupport主要用法 对比3种方式,了解他们之间的区别 LockSupport位于java.util.concurrent(简称juc)包中,算是juc中一个基础类,ju...

2019-07-20 17:17:00 17 0

转载 java高并发系列 - 第13天:JUC中的Condition对象

本文目标: synchronized中实现线程等待和唤醒 Condition简介及常用方法介绍及相关示例 使用Condition实现生产者消费者 使用Condition实现同步阻塞队列 Object对象中的wait(),notify()方法,用于线程等待和唤醒等待中的线程,大家应该比较熟悉,想...

2019-07-20 17:14:00 13 0

转载 java高并发系列 - 第12天JUC:ReentrantLock重入锁

java高并发系列 - 第12天JUC:ReentrantLock重入锁 本篇文章开始将juc中常用的一些类,估计会有十来篇。 synchronized的局限性 synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由jvm实现,用户不需...

2019-07-17 19:17:00 22 0

转载 java高并发系列 - 第11天:线程中断的几种方式

java高并发系列第11篇文章。 本文主要探讨一下中断线程的几种方式。 通过一个变量控制线程中断 代码: package com.itsoku.chat05; import java.util.concurrent.TimeUnit; /** * 微信公众号:路人甲Java,专注于java技...

2019-07-17 09:55:00 26 0

转载 java高并发系列 - 第10天:线程安全和synchronized关键字

这是并发系列第10篇文章。 什么是线程安全? 当多个线程去访问同一个类(对象或方法)的时候,该类都能表现出正常的行为(与自己预想的结果一致),那我们就可以所这个类是线程安全的。 看一段代码: package com.itsoku.chat04; /** * 微信公众号:路人甲Java,专注于j...

2019-07-17 09:45:00 21 0

转载 java高并发系列 - 第9天:用户线程和守护线程

守护线程是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程、JIT线程都是守护线程。与之对应的是用户线程,用户线程可以理解为是系统的工作线程,它会完成这个程序需要完成的业务操作。如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了。所以当系统只剩下守护进...

2019-07-15 17:48:00 16 0

转载 java高并发系列 - 第8天:线程组

线程组 我们可以把线程归属到某个线程组中,线程组可以包含多个线程以及线程组,线程和线程组组成了父子关系,是个树形结构,如下图: 使用线程组可以方便管理线程,线程组提供了一些方法方便方便我们管理线程。 创建线程关联线程组 创建线程的时候,可以给线程指定一个线程组,代码如下: package com...

2019-07-15 17:46:00 11 0

转载 java高并发系列 - 第7天:volatile与Java内存模型

public class Demo09 { public static boolean flag = true; public static class T1 extends Thread { public T1(String name) { ...

2019-07-15 17:44:00 17 0

转载 java高并发系列 - 第6天:线程的基本操作

新建线程 新建线程很简单。只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可。 Thread thread1 = new Thread1(); t1.start(); 那么线程start()之后,会干什么呢?线程有个run()方法,start()会创建一个新的线程并让这...

2019-07-15 17:38:00 17 0

转载 java高并发系列 - 第5天:深入理解进程和线程

进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。 进程具有的特征: 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的 并发性:...

2019-07-15 17:35:00 19 0

转载 java高并发系列 - 第4天:JMM相关的一些概念

JMM(java内存模型),由于并发程序要比串行程序复杂很多,其中一个重要原因是并发程序中数据访问一致性和安全性将会受到严重挑战。如何保证一个线程可以看到正确的数据呢?这个问题看起来很白痴。对于串行程序来说,根本就是小菜一碟,如果你读取一个变量,这个变量的值是1,那么你读取到的一定是1,就是这么简...

2019-07-15 17:24:00 9 0

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