1. Redis有哪些数据结构? 字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。 如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。 如果你说还玩过Redis Module,像BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。 2. 使用过Redis分布式锁么,它是什么回事? 先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。 这时候对方会告诉…

2019年08月26日 0条评论 1点热度 0人点赞 阅读全文

Dubbo的底层实现原理和机制 官方图示 [crayon-5eff2ea4c3b15460537170/] 服务提供者能实现失效踢出是什么原理? 基于zookeeper的临时节点原理 zookeeper中节点是有生命周期的.具体的生命周期取决于节点的类型. 节点主要分为持久节点(Persistent)和临时节点(Ephemeral),但是更详细的话还可以加上时序节点(Sequential),创建节点中往往组合使用 - 持久节点 所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点,也就是说不…

2019年08月26日 0条评论 1点热度 0人点赞 阅读全文

title: java并发之小抄集(持续更新) date: 2019-08-18 22:34:43 tags: [面试] categories: 面试 本文主要是收集一些关于java并发小知识点,持续更新 1. run()、start()方法的区别 当你调用 start() 方法时,它会新建一个线程然后执行 run() 方法中的代码。如果直接调用 run() 方法,并不会创建新线程,方法中的代码会在当前调用者的线程中执行 实现并启动线程有两种方法 1、写一个类继承自Thread类,重写run方法。用start方法启…

2019年08月18日 0条评论 2点热度 0人点赞 阅读全文

简介 Serializable在java语言中的作用就是用来序列化,通过查看源码,发现只是一个空的接口,竟然能够实现对象的序列化和反序列化?其接口定义如下: [crayon-5eff2ea4c574e936989514/] 实践 先来创建一个类用于序列化和反序列化 [crayon-5eff2ea4c5757473544054/] 在创建一个测试类,通过ObjectOutputStream和ObjectInputStream进行序列化和反序列化,代码如下: [crayon-5eff2ea4c575a161763424…

2019年08月16日 0条评论 1点热度 0人点赞 阅读全文

问题描述 最近公司把项目都开源至公司内部的gitlab上面,所有的单元测试都是通过gitlab中的CI脚本来运行的,可是在CI上面跑单元测试时产生如下图错误: 当时纳闷了,为什么本地环境没问题,代码在GitLab上的服务器就有问题了? 问题解决 仔细看了下错误信息,发现就是Jedis里面报错,查看源码也找到了报错的地方,如下代码: [crayon-5eff2ea4c5e17196132838/] 简单的分析了下,此处报错就是为获取到服务器上localhost address 于是登陆CI服务器,查看hostname…

2019年08月14日 0条评论 2点热度 0人点赞 阅读全文

今天来介绍下设计模式中的单例模式,那么何为单例模式了: 简介 单例模式(Singleton Pattern):确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。 从上面的定义中,可以概括出几个重点: 1. 某个类只能有一个实例 2. 必须自行创建这个实例 3. 必须像整个系统提供这个实例 饿汉式单例 所谓饿汉式单例,是指在定义静态变量的时候实例化单例类,见代码: [crayon-5eff2ea4c610e602663826/] 懒汉…

2019年08月13日 0条评论 1点热度 0人点赞 阅读全文

简介 CountDownLatch是一个同步工具类,在完成一组正在其他线程中执行的操作之前,它允许一个或者多个线程一直等待。 与CyclicBarrier区别: 1. CountDownLatch允许一个或者N个线程等待其他线程完成执行;而CyclicBarrier允许N个线程相互等待。 2. CountDownLatch计算器无法重置;而CyclicBarrier计数器允许重置后使用,因此它被称为是循环的barrier。 实现 函数列表 [crayon-5eff2ea4c64d3295414334/] 内部类Sy…

2019年08月11日 0条评论 1点热度 0人点赞 阅读全文

简介 CyclicBarrier也是java并发包中的一个工具类,也被称为同步屏障,作用是可以让一组线程达到一个屏障时阻塞,直到最后一个线程到达屏障时,所有被阻塞的线程才能继续执行。 示意图如下: 下面将从源码的角度来看看CyclicBarrier并发类,如无特殊说明,本文JDK版本为1.8 构造方法 该类中有2个构造方法,分别来看下: 参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier已经到达屏障位置,线程被阻塞 [crayon-5eff2ea4c6ab2965066447/] …

2019年08月08日 0条评论 1点热度 0人点赞 阅读全文

本文主要总结了在工作用到idea的一些技巧,主要是根据自己的喜好总结,一些基本操作就不列了,持续更新 快捷键 常用 快捷键 说明 Ctrl + Shift + Backspace 跳转到上次编辑的地方 CTRL + ALT + left/right 前后导航编辑过的地方 ALT + F7 找到你的函数或者变量或者类的所有引用到的地方 F3 向下查找关键字出现位置 Ctrl + F3 调转到所选中的词的下一个引用位置 SHIFT + F3 向上一个关键字出现位置 F4 编辑源 Ctrl + W 选中代码,连续按会有其…

2019年07月30日 0条评论 2点热度 0人点赞 阅读全文

最近看了lanyu大佬的文章,在自己的服务器上搭建了反代工具激活Jrebel,当然也可以本地搭建,这里就不写了, 不废话了,直接看吧 工具以及环境: 1. 反代工具,下载地址,点这里 2. CentOS7 安装步骤: 下载完成后上传至vps,我这里上传的tmp目录,记得修改权限哦,权限直接修改为777 [crayon-5eff2ea4c7359531614374/] 使用nohup命令,不挂起放后台运行,并且将输出写到当前目录下的ReverseProxy.log文件中: [crayon-5eff2ea4c735f3…

2019年07月12日 0条评论 1点热度 0人点赞 阅读全文
123458