摘要:Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。 1. 第1篇:mysql基础知识 2. 第2篇:详解mysql数据类型(重点) 3. 第3篇:管理员必备技能(必须掌握) 4. 第4篇:DDL常见 阅读全文
posted @ 2019-10-13 21:22 路人甲Java 阅读 (75) 评论 (0) 编辑
摘要:1. 第1天:必须知道的几个概念 2. 第2天:并发级别 3. 第3天:有关并行的两个重要定律 4. 第4天:JMM相关的一些概念 5. 第5天:深入理解进程和线程 6. 第6天:线程的基本操作 7. 第7天:volatile与Java内存模型 8. 第8天:线程组 9. 第9天:用户线程和守护线程 阅读全文
posted @ 2019-07-26 09:32 路人甲Java 阅读 (487) 评论 (2) 编辑
摘要:包含了深入理解Java虚拟机笔记、java命令行工具系列、java可视化工具系列,共31篇文章。 阅读全文
posted @ 2019-06-04 14:24 路人甲Java 阅读 (430) 评论 (0) 编辑
摘要:java开发,月薪3万,实现也不算是太难,需要花一些时间掌握一些技术,了解其原理,高薪就是顺其自然的事情了。 学java技术,最好能按照系列一个个学,能有一套非常好的学习资料,反复看,最终效果都是非常好的。尽量避免看很多套教程、每套只看其中一点,很难做到对技术的深入了解。 自己整理了一套java学习的教程,课程前后是有依赖的,所以请按顺序学习掌握,废话不多说了,直接上干货。 阅读全文
posted @ 2019-05-10 13:43 路人甲Java 阅读 (661) 评论 (5) 编辑
摘要:数据存储在数据库中,为了加快业务访问的速度,我们将数据库中的一些数据放在缓存中,那么问题来了,如何确保db和缓存中数据的一致性呢?我们列出了5种方法,大家都了解一下,然后根据业务自己选择。 方案1 获取缓存逻辑 使用过定时器,定时刷新redis中的缓存。 db更新数据逻辑 更新数据不用考虑缓存中的数 阅读全文
posted @ 2019-10-22 10:06 路人甲Java 阅读 (350) 评论 (2) 编辑
摘要:这是Mysql系列第24篇。学习索引,主要是写出更快的sql,当我们写sql的时候,需要明确的知道sql为什么会走索引?为什么有些sql不走索引?sql会走那些索引,为什么会这么走?我们需要了解其原理,了解内部具体过程,这样使用起来才能更顺手,才可以写出更高效的sql。本篇我们就是搞懂这些问题。 阅读全文
posted @ 2019-10-16 14:35 路人甲Java 阅读 (601) 评论 (0) 编辑
摘要:Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。 1. 第1篇:mysql基础知识 2. 第2篇:详解mysql数据类型(重点) 3. 第3篇:管理员必备技能(必须掌握) 4. 第4篇:DDL常见 阅读全文
posted @ 2019-10-13 21:22 路人甲Java 阅读 (75) 评论 (0) 编辑
摘要:Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。 这是Mysql系列第22篇。 背景 使用mysql最多的就是查询,我们迫切的希望mysql能查询的更快一些,我们经常用到的查询有: 1. 按照id 阅读全文
posted @ 2019-10-12 10:35 路人甲Java 阅读 (291) 评论 (0) 编辑
摘要:Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 这是Mysql系列第20篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 需求背景 我们在写存储过程的时候,可能会出现下列一些情况: 1. 插入的数据 阅读全文
posted @ 2019-10-10 09:46 路人甲Java 阅读 (340) 评论 (0) 编辑
摘要:Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 这是Mysql系列第19篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 需求背景 当我们需要对一个select的查询结果进行遍历处理的时候,如何实现 阅读全文
posted @ 2019-10-09 16:21 路人甲Java 阅读 (301) 评论 (0) 编辑
摘要:Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 这是Mysql系列第18篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 上一篇 "存储过程&自定义函数" ,对存储过程和自定义函数做了一个简单的介绍 阅读全文
posted @ 2019-10-09 10:17 路人甲Java 阅读 (355) 评论 (2) 编辑
摘要:Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 这是Mysql系列第21篇。 本文开始连续3篇详解mysql索引: 1. 第1篇来说说什么是索引? 2. 第2篇详解Mysql中索引的原理 3. 第3篇结合索引详解关键字explain 本文为索引第一篇:我们来了解一 阅读全文
posted @ 2019-10-08 16:17 路人甲Java 阅读 (413) 评论 (4) 编辑
摘要:这是Mysql系列第14篇。 环境:mysql5.7.25,cmd命令中进行演示。 开发过程中,会经常用到数据库事务,所以本章非常重要。 本篇内容 1. 什么是事务,它有什么用? 2. 事务的几个特性 3. 事务常见操作指令详解 4. 事务的隔离级别详解 5. 脏读、不可重复读、可重复读、幻读详解 阅读全文
posted @ 2019-09-27 10:00 路人甲Java 阅读 (322) 评论 (0) 编辑
摘要:这是Mysql系列第13篇。 环境:mysql5.7.25,cmd命令中进行演示。 当数据的值为NULL的时候,可能出现各种意想不到的效果,让人防不胜防,我们来看看NULL导致的各种神坑,如何避免? 比较运算符中使用NULL 认真看下面的效果 结论:任何值和NULL使用运算符( 、=、)或者(in、 阅读全文
posted @ 2019-09-25 09:57 路人甲Java 阅读 (349) 评论 (0) 编辑
摘要:这是Mysql系列第12篇。 环境:mysql5.7.25,cmd命令中进行演示。 本章节非常重要。 子查询 出现在select语句中的select语句,称为子查询或内查询。 外部的select查询语句,称为主查询或外查询。 子查询分类 按结果集的行列数不同分为4种 标量子查询(结果集只有一行一列) 阅读全文
posted @ 2019-09-24 13:23 路人甲Java 阅读 (370) 评论 (0) 编辑
摘要:这是Mysql系列第10篇。 环境:mysql5.7.25,cmd命令中进行演示。 MySQL 数值型函数 | 函数名称 | 作 用 | | | | | abs | 求绝对值 | | sqrt | 求二次方根 | | mod | 求余数 | | ceil 和 ceiling | 两个函数功能相同,都 阅读全文
posted @ 2019-09-20 14:56 路人甲Java 阅读 (380) 评论 (0) 编辑
摘要:这是Mysql系列第11篇。 环境:mysql5.7.25,cmd命令中进行演示。 当我们查询的数据来源于多张表的时候,我们需要用到连接查询,连接查询使用率非常高,希望大家都务必掌握。 本文内容 1. 笛卡尔积 2. 内连接 3. 外连接 4. 左连接 5. 右连接 6. 表连接的原理 7. 使用j 阅读全文
posted @ 2019-09-19 16:28 路人甲Java 阅读 (281) 评论 (1) 编辑
摘要:这是Mysql系列第9篇。 环境:mysql5.7.25,cmd命令中进行演示。 本篇内容 1. 分组查询语法 2. 聚合函数 3. 单字段分组 4. 多字段分组 5. 分组前筛选数据 6. 分组后筛选数据 7. where和having的区别 8. 分组后排序 9. where & group b 阅读全文
posted @ 2019-09-16 16:37 路人甲Java 阅读 (481) 评论 (4) 编辑
摘要:这是Mysql系列第8篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 本章内容 1. 详解排序查询 2. 详解limit 3. limit存在的坑 4. 分页查询中的坑 排序查询(order by) 电商中:我们想查看今天所有成交的 阅读全文
posted @ 2019-09-12 16:18 路人甲Java 阅读 (277) 评论 (0) 编辑
摘要:sql查询算是基础的技能,里面也有一些坑,需要去避开。 阅读全文
posted @ 2019-09-10 16:37 路人甲Java 阅读 (390) 评论 (0) 编辑
摘要:这是Mysql系列第5篇。 环境:mysql5.7.25,cmd命令中进行演示。 DML(Data Manipulation Language)数据操作语言,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除, 是必须要掌握的指令 ,DML和SQL中的select熟称 阅读全文
posted @ 2019-09-06 16:15 路人甲Java 阅读 (227) 评论 (0) 编辑
摘要:这是Mysql系列第4篇。 环境:mysql5.7.25,cmd命令中进行演示。 DDL:Data Define Language数据定义语言,主要用来对数据库、表进行一些管理操作。 如:建库、删库、建表、修改表、删除表、对列的增删改等等。 文中涉及到的语法用[]包含的内容属于可选项,下面做详细说明 阅读全文
posted @ 2019-09-04 17:24 路人甲Java 阅读 (382) 评论 (0) 编辑
摘要:这是mysql系列第3篇文章。 环境:mysql5.7.25,cmd命令中进行演示。 在玩mysql的过程中,经常遇到有很多朋友在云上面玩mysql的时候,说我创建了一个用户为什么不能登录?为什么没有权限?等等各种问题,本文看完之后,这些都不是问题了。 本文主要内容 1. 介绍Mysql权限工作原理 阅读全文
posted @ 2019-09-02 15:59 路人甲Java 阅读 (427) 评论 (0) 编辑
摘要:这是java高并发系列第32篇文章。 java环境:jdk1.8。 本文主要内容 1. 4种方式实现计数器功能,对比其性能 2. 介绍LongAdder 3. 介绍LongAccumulator 需求:一个jvm中实现一个计数器功能,需保证多线程情况下数据正确性。 我们来模拟50个线程,每个线程对计 阅读全文
posted @ 2019-08-28 15:43 路人甲Java 阅读 (411) 评论 (0) 编辑
摘要:在一个线程中需要获取其他线程的执行结果,能想到几种方式?结合这个需求,我们使用6种方式,来对之前学过的知识点做一个回顾,加深记忆。 阅读全文
posted @ 2019-08-26 15:25 路人甲Java 阅读 (308) 评论 (0) 编辑
摘要:这是java高并发系列第29篇。 环境:jdk1.8。 本文内容 1. 介绍常见的限流算法 2. 通过控制最大并发数来进行限流 3. 通过漏桶算法来进行限流 4. 通过令牌桶算法来进行限流 5. 限流工具类RateLimiter 常见的限流的场景 1. 秒杀活动,数量有限,访问量巨大,为了防止系统宕 阅读全文
posted @ 2019-08-20 16:23 路人甲Java 阅读 (533) 评论 (2) 编辑
摘要:这是java高并发系列第28篇文章。 环境:jdk1.8。 本文内容 1. 日志有什么用? 2. 日志存在的痛点? 3. 构建日志系统 日志有什么用? 1. 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复业务 2. 提取有用数据,做数据分析使用 本文主要讨论通过日志来快速定位并解 阅读全文
posted @ 2019-08-19 16:07 路人甲Java 阅读 (310) 评论 (0) 编辑
摘要:这是java高并发系列第26篇文章。 环境:jdk1.8。 本文内容 1. 了解JUC常见集合,学会使用 3. ConcurrentHashMap 4. ConcurrentSkipListMap 5. ConcurrentSkipListSet 6. CopyOnWriteArraySet 7. 阅读全文
posted @ 2019-08-16 15:10 路人甲Java 阅读 (118) 评论 (0) 编辑
摘要:这是java高并发系列第27篇文章。 开发环境:jdk1.8。 案例讲解 电商app都有用过吧,商品详情页,需要给他们提供一个接口获取商品相关信息: 1. 商品基本信息(名称、价格、库存、会员价格等) 2. 商品图片列表 3. 商品描述信息(描述信息一般是由富文本编辑的大文本信息) 数据库中我们用了 阅读全文
posted @ 2019-08-16 15:09 路人甲Java 阅读 (465) 评论 (2) 编辑
摘要:这是java高并发系列第25篇文章。 环境:jdk1.8。 本文内容 1. 掌握Queue、BlockingQueue接口中常用的方法 2. 介绍6中阻塞队列,及相关场景示例 3. 重点掌握4种常用的阻塞队列 Queue接口 队列是一种先进先出(FIFO)的数据结构,java中用 接口来表示队列。 阅读全文
posted @ 2019-08-15 16:26 路人甲Java 阅读 (248) 评论 (0) 编辑
摘要:java高并发系列第24篇文章。 环境:jdk1.8。 本文内容 1. 需要解决的问题 2. 介绍ThreadLocal 3. 介绍InheritableThreadLocal 需要解决的问题 我们还是以解决问题的方式来引出 、`InheritableThreadLocal`,这样印象会深刻一些。 阅读全文
posted @ 2019-08-13 14:49 路人甲Java 阅读 (481) 评论 (1) 编辑
摘要:这是java高并发系列第23篇文章,环境:jdk1.8。 本文主要内容 1. JUC中的原子类介绍 2. 介绍基本类型原子类 3. 介绍数组类型原子类 4. 介绍引用类型原子类 5. 介绍对象属性修改相关原子类 预备知识 JUC中的原子类都是都是依靠 volatile 、 CAS 、 Unsafe 阅读全文
posted @ 2019-08-07 15:13 路人甲Java 阅读 (383) 评论 (0) 编辑
摘要:这是java高并发系列第22篇文章,文章基于jdk1.8环境。 本文主要内容 1. 基本介绍 2. 通过反射获取Unsafe实例 3. Unsafe中的CAS操作 4. Unsafe中原子操作相关方法介绍 5. Unsafe中线程调度相关方法 6. park和unpark示例 7. Unsafe锁示 阅读全文
posted @ 2019-08-06 14:51 路人甲Java 阅读 (414) 评论 (0) 编辑
摘要:这是java高并发系列第21篇文章。 本文主要内容 1. 从网站计数器实现中一步步引出CAS操作 2. 介绍java中的CAS及CAS可能存在的问题 3. 悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例 4. 使用java中的原子操作实现网站计数器功能 我们需要解决的问题 需求:我们开发了一个 阅读全文
posted @ 2019-08-05 15:00 路人甲Java 阅读 (294) 评论 (0) 编辑
摘要:这是java高并发系列第20篇文章。 本文内容 1. ExecutorCompletionService出现的背景 2. 介绍CompletionService接口及常用的方法 3. 介绍ExecutorCompletionService类及其原理 4. 示例:执行一批任务,然后消费执行结果 5. 阅读全文
posted @ 2019-08-02 09:08 路人甲Java 阅读 (145) 评论 (0) 编辑
摘要:这是java高并发系列第19篇文章。 本文主要内容 1. 介绍Executor框架相关内容 2. 介绍Executor 3. 介绍ExecutorService 4. 介绍线程池ThreadPoolExecutor及案例 5. 介绍定时器ScheduledExecutorService及案例 6. 阅读全文
posted @ 2019-08-01 09:17 路人甲Java 阅读 (319) 评论 (1) 编辑
摘要:本文主要内容 1. 什么是线程池 2. 线程池实现原理 3. 线程池中常见的各种队列 4. 自定义线程创建的工厂 5. 常见的饱和策略 6. 自定义饱和策略 7. 线程池中两种关闭方法有何不同 8. 扩展线程池 9. 合理地配置线程池 10. 线程池中线程数量的配置 阅读全文
posted @ 2019-07-29 08:59 路人甲Java 阅读 (1862) 评论 (5) 编辑
摘要:1. 第1天:必须知道的几个概念 2. 第2天:并发级别 3. 第3天:有关并行的两个重要定律 4. 第4天:JMM相关的一些概念 5. 第5天:深入理解进程和线程 6. 第6天:线程的基本操作 7. 第7天:volatile与Java内存模型 8. 第8天:线程组 9. 第9天:用户线程和守护线程 阅读全文
posted @ 2019-07-26 09:32 路人甲Java 阅读 (487) 评论 (2) 编辑
摘要:这是java高并发系列第17篇。 本文主要内容: 1. 介绍CyclicBarrier 2. 6个示例介绍CyclicBarrier的使用 3. 对比CyclicBarrier和CountDownLatch CyclicBarrier简介 CyclicBarrier通常称为循环屏障。它和CountD 阅读全文
posted @ 2019-07-25 09:20 路人甲Java 阅读 (352) 评论 (0) 编辑
摘要:这是java高并发系列第16篇文章。 本篇内容 1. 介绍CountDownLatch及使用场景 2. 提供几个示例介绍CountDownLatch的使用 3. 手写一个并行处理任务的工具类 假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一 阅读全文
posted @ 2019-07-22 15:08 路人甲Java 阅读 (327) 评论 (0) 编辑
摘要:这是java高并发系列第15篇文章 Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能允许一个线程访问一个资源,而信号量可以控制有多少个线程可以 同时访问 特定的资源。 Semaphor 阅读全文
posted @ 2019-07-22 09:02 路人甲Java 阅读 (326) 评论 (0) 编辑
摘要:这是java高并发系列第14篇文章。 本文主要内容: 1. 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例 2. 介绍LockSupport主要用法 3. 对比3种方式,了解他们之间的区别 LockSupport 位于 java.util.concurrent ( 简称juc )包中,算是j 阅读全文
posted @ 2019-07-20 17:17 路人甲Java 阅读 (278) 评论 (1) 编辑
摘要:本文目标: 1. synchronized中实现线程等待和唤醒 2. Condition简介及常用方法介绍及相关示例 3. 使用Condition实现生产者消费者 4. 使用Condition实现同步阻塞队列 Object对象中的wait(),notify()方法,用于线程等待和唤醒等待中的线程,大 阅读全文
posted @ 2019-07-20 17:14 路人甲Java 阅读 (153) 评论 (0) 编辑
摘要:java高并发系列 第12天JUC:ReentrantLock重入锁 本篇文章开始将juc中常用的一些类,估计会有十来篇。 synchronized的局限性 synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由jvm实现,用户不需要显示 阅读全文
posted @ 2019-07-17 19:17 路人甲Java 阅读 (462) 评论 (4) 编辑