Redis系列(八):发布与订阅

Redis的发布与订阅,有点类似于消息队列,发送者往频道发送消息,频道的订阅者接收消息。 1. 发布与订阅示例 首先,在本机开启第1个Redis客户端,执行如下命令订阅blog.redis频道: SUBSCRIBE "blog.redis" 然后,在本机开启第2个Redis客户端,执行相同的命令订阅 ...

申城异乡人 @ 2020/06/30

【深度思考】JDK8中日期类型该如何使用?

在JDK8之前,处理日期时间,我们主要使用3个类,Date、SimpleDateFormat和Calendar。 这3个类在使用时都或多或少的存在一些问题,比如SimpleDateFormat不是线程安全的, 比如Date和Calendar获取到的月份是0到11,而不是现实生活中的1到12,关于这一 ...

申城异乡人 @ 2020/06/13

【Redis面试题】如何使用Redis实现微信步数排行榜?

1. 前言 之前写过一篇博客,讲解的是Redis的5种数据结构及其常用命令,当时有读者评论,说希望了解下这5种数据结构各自的使用场景,不过一直也没来得及写。 碰巧,在3月份找工作面试时,有个面试官先问了我Redis有哪几种数据结构,在我讲完后,面试官又问了我以下问题: 如何用Redis实现微信步数排 ...

申城异乡人 @ 2020/06/05

Nacos系列(一):Nacos环境安装及Hello World示例

现在微服务架构越来越火,微服务架构中比较重要的一项就是 配置中心 , Nacos是阿里巴巴的一个开源项目,它的其中一个功能就是可以作为配置中心,实现配置的动态变更、历史版本对比、配置回滚等功能。 更多的描述细节请查看官网: "https://nacos.io/zh cn/" 。 本篇博客主要讲解以下 ...

申城异乡人 @ 2020/05/11

Redis系列(六):设置/移除键的过期时间

本篇博客是Redis系列的第6篇,主要讲解以下内容: 1. 数据库数量 2. 切换目标数据库 3. 设置键的过期时间 4. 移除键的过期时间 本系列的前5篇可以点击以下链接查看: "Redis系列(一):Redis简介及环境安装" "Redis系列(二):Redis的5种数据结构及其常用命令" "R ...

申城异乡人 @ 2020/05/07

Redis系列(五):Redis的过期键删除策略

本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略。 本系列的前4篇可以点击以下链接查看: "Redis系列(一):Redis简介及环境安装" "Redis系列(二):Redis的5种数据结构及其常用命令" "Redis系列(三):Redis的持久化机制(RDB、AOF)" "R ...

申城异乡人 @ 2020/04/13

Redis系列(四):Redis的复制机制(主从复制)

本篇博客是Redis系列的第4篇,主要讲解下Redis的主从复制机制。 本系列的前3篇可以点击以下链接查看: "Redis系列(一):Redis简介及环境安装" "Redis系列(二):Redis的5种数据结构及其常用命令" "Redis系列(三):Redis的持久化机制(RDB、AOF)" Red ...

申城异乡人 @ 2020/04/07

【Java面试题】List如何一边遍历,一边删除?

这是最近面试时被问到的1道面试题,本篇博客对此问题进行总结分享。 1. 新手常犯的错误 可能很多新手(包括当年的我,哈哈)第一时间想到的写法是下面这样的: 然后满怀信心的去运行,结果竟然抛 异常了,翻译成中文就是:并发修改异常。 是不是很懵,心想这是为什么呢? 让我们首先看下上面这段代码生成的字节码 ...

申城异乡人 @ 2020/03/20

【Java面试题】关于String,最近被问到了这2道面试题

1. 前言 最近面试了几家公司,体验了一下 电话面试 和今年刚火起来的 视频面试 , 虽然之前就有一些公司会先通过 电话面试 的形式先评估下候选人的能力水平,但好像不多,至少我以前的面试形式100%都是 现场面试 。 面试过程中,不可避免的被问到了很多面试题,本篇博客就总结下面试过程中被问到的关于S ...

申城异乡人 @ 2020/03/10

Redis系列(三):Redis的持久化机制(RDB、AOF)

本篇博客是Redis系列的第3篇,主要讲解下Redis的2种持久化机制:RDB和AOF。 本系列的前2篇可以点击以下链接查看: "Redis系列(一):Redis简介及环境安装" 。 "Redis系列(二):Redis的5种数据结构及其常用命令" 1. 为什么需要持久化? 因为Redis是内存数据库 ...

申城异乡人 @ 2020/03/05

Spring入门(七):Spring Profile使用讲解

1. 使用场景 在日常的开发工作中,我们经常需要将程序部署到不同的环境,比如Dev开发环境,QA测试环境,Prod生产环境,这些环境下的一些配置肯定是不一样的,比如数据库配置,Redis配置,RabbitMQ配置。 如果每次切换发布环境,都需要修改配置重新构建的话,那对程序员来说将是噩梦,针对这种场 ...

申城异乡人 @ 2019/08/14

Spring入门(六):条件化的bean

1. 概念 默认情况下,Spring中定义的bean在应用程序启动时会全部装配,不管当前运行的是哪个环境(Dev,QA或者Prod),也不管当前运行的是什么系统(Windows或者Linux),但有些使用场景下,我们可能需要条件化的装配某些bean,即当满足某一条件时,装配某些bean,当不满足某一 ...

申城异乡人 @ 2019/08/13

Java集合系列(四):HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法及区别

本篇博客主要讲解Map接口的4个实现类HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法以及三者之间的区别。 注意:本文中代码使用的JDK版本为1.8.0_191 值得注意的是,Map接口是独立的接口,并没有继承Collection接口(这里是重点,面试常问): ...

申城异乡人 @ 2019/08/06

Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及区别

本篇博客主要讲解Set接口的三个实现类HashSet、LinkedHashSet、TreeSet的使用方法以及三者之间的区别。 注意:本文中代码使用的JDK版本为1.8.0_191 1. HashSet使用 HashSet是Set接口最常用的实现类,底层数据结构是哈希表,HashSet不保证元素的顺 ...

申城异乡人 @ 2019/08/01

Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及区别

本篇博客主要讲解List接口的三个实现类ArrayList、LinkedList、Vector的使用方法以及三者之间的区别。 1. ArrayList使用 ArrayList是List接口最常用的实现类,内部通过数组来实现,因此它的优点是适合随机查找和遍历,缺点是不适合插入和删除。 ArrayLis ...

申城异乡人 @ 2019/07/29

Java集合系列(一):集合的定义及分类

1. 集合的定义 什么是集合呢? 定义:集合是一个存放对象的引用的容器。 在Java中,集合位于java.util包下。 2. 集合和数组的区别(面试常问) 提到容器,就会想起数组,那么 集合和数组的区别是什么呢? (这里是重点,面试可能问的比较多) 1. 数组和集合都是Java中的容器 2. 数组 ...

申城异乡人 @ 2019/07/27

MyBatis从入门到精通(十四):在MyBatis中使用类型处理器

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解在MyBatis中如何使用类型处理器。 1. 明确需求 在设计之初,sys_role表的enabled字段有2个可选值,其中0 代表禁 ...

申城异乡人 @ 2019/07/25

MyBatis从入门到精通(九):MyBatis高级结果映射之一对一映射

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中实现查询结果一对一映射的3种方式: 1. 使用别名实现自动映射 2. 使用resultMap配置 3. 使用resul ...

申城异乡人 @ 2019/07/11

MyBatis从入门到精通(八):MyBatis动态Sql之foreach标签的用法

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用foreach标签生成动态的Sql,主要包含以下3个场景: 1. foreach 实现in集合 2. foreach 实现批量 ...

申城异乡人 @ 2019/07/10

MyBatis从入门到精通(七):MyBatis动态Sql之choose,where,set标签的用法

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用choose,where,set标签生成动态的Sql。 1. choose 用法 假设有这样1个需求:当参数id有值时优先使用 ...

申城异乡人 @ 2019/07/09