自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LuckyToMeet-Dian叶

望每个有追求的程序猿一起进步~

  • 博客(100)
  • 收藏
  • 关注

原创 杂记--IDEA安装破解jrebel实现项目热部署

前言:        开发web项目,最难受的事情就是不断的重启服务器,这个真让人心累。有时候改一个数值,就要重启一次,特别是单机项目大的时候,改一个数值只要1秒,重启就要30秒的时间,真让人吐血。有没有一个不用重启,改了就直接热部署的神器呢?还真有,springboot里面有一个热部署的组件,但是不推荐使用。          这里解释一个死贵的插件,但是真心好用——就是jrebel啦。...

2019-01-04 15:59:41 220

原创 聊聊JVM——类的加载(二)

前言:        本篇博客接续上一篇中未写到的部分,分为类的主动加载和被动加载,可能涉及到一些其他内容。依旧使用先思考做题后在看答案的策略。 阅读须知:        此次博客以启发性代码和解释进行学习。在阅读时,按照代码和提示进行思考分析为什么,请思考过后在看答案来验证自己的思考。(此博客为个人观点且本人水平有限,如有错,请批评指正)  小题测试:(先思考,并写出自己...

2018-07-29 19:34:26 263

原创 聊聊JVM——类的加载(一)

前言:        最近在看一本《深入理解java虚拟机》的书,在学类加载机制和结合众多大佬的表达并结合自己的理解写下这一篇博客,记录自己的困惑,以防以后忘记。 阅读须知:        此次博客以启发性代码和解释进行学习。在阅读时,按照代码和提示进行思考分析为什么,请思考过后在看答案来验证自己的思考。(此博客为个人观点且本人水平有限,如有错,请批评指正)  小题测试:(...

2018-07-27 22:42:12 1594 4

原创 shiro踏坑(一)——loginUrl不拦截问题

    想想大家应该也遇到过整合了ssm+shiro后,直接进入需要经过认证授权的页面,但是loginUrl居然不拦截,直接放行进来,虽然拿不到数据。但是这也是不能忍的。    下面是我的shiro整合spring的配置文件:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3...

2018-02-26 14:30:51 11286

原创 Netty入门学习笔记(三)-- 零拷贝

学前准备零拷贝入坑什么是零拷贝传统 IOmmap IO老版 sendFile 函数优化后 sendFile 函数

2020-06-02 17:15:15 108

原创 Netty入门学习笔记(二)--初尝IO

学前准备IO 模型介绍BIO(同步阻塞IO)BIO 介绍BIO 是 JDK 1.4 前使用的网络 IO 模型,但由于其每个客户端连接都为一个其分配一个线程的特性,并且每个连接并非都是在传输数据,造成服务器资源大量的消耗。改进点:在此基础上新增一个线程池,可以保证一定程度上减少资源消耗,但依旧无法解决无效连接问题。BIO 模型BIO使用场景BIO 由于其阻塞的特性,实际生产中使用场景较少。适合极少人用,但是每次使用都传输大量数据的场景。NIO(同步非阻塞IO)NIO 介绍NIO

2020-05-21 12:32:35 91

原创 基于starter-自定义缓存框架

浅谈编写目的学习一下 @EnableXXX 在 SpringBoot 中是如何做到可插拔的学习在 starter 中使用代理方式来解析自定义注解并进行方法增强网上 starter 案例千篇一律,感觉都是复制粘贴,没有找到一篇有价值的文章。只好逼迫自己看源码学习。带来收获了解@EnableXXX注解是如何起作用的了解 AOP 是如何做到方法增强了解如何基于 SpringBoot...

2020-04-22 14:04:23 103

原创 Arthas(阿尔萨斯) -- 阿里在线诊断神器(三)

前言:前面两篇文章介绍了 Arthas 诊断神器的一些操作命令,今天我们继续学习 Arthas 其他命令。开始学习monitor 命令该命令可以查看我们方法的调用,监控处方法成功,失败次数,以及 RT(响应时间)常用参数-c指定监控输出结果monitor *TestController abc -c 2监控项说明timestamp时间戳class...

2019-09-27 18:39:02 134 2

原创 Arthas(阿尔萨斯) -- 阿里在线诊断神器(二)

前言:上一篇文章 Arthas(阿尔萨斯) – 阿里在线诊断神器(一) 中介绍了 tt、sm、sc、jad 几个常用命令详解,今天我们继续学习其他命令。开始学习先来几个简单常见的命令dashboard当前系统的实时数据面板,可以显示 JVM 内存使用情况,java 版本信息,thread常见参数-i-n-bjvmtace 命令watch 命令stack 命令...

2019-09-26 12:31:09 127

原创 Arthas(阿尔萨斯) -- 阿里在线诊断神器(一)

Arthas 是啥?Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。(以上介绍来自官网)开始学习首先,我们随便来一个测试项目,代码如下:@R...

2019-09-25 19:26:00 351

原创 提权学习 -- 使用 mysql 拿到 webshell

注意如造成一切损失,与本人无关!工具准备scanPort端口扫描工具,用于扫描内网中开放的端口。dirBuster网站目录扫描工具,用于扫描网站的目录已经 URL,暴力破解方式,可能会把服务器弄崩(电脑不咋地的情况)。提权前提对方需要开启服务器,且需要知道服务器在宿主机上的绝对路径知道其 mysql 用户名和密码mysql 有读写权限,可以向服务器开放目录写木马文件。有上...

2019-06-14 17:05:01 471

原创 面试准备 -- Redis 跳跃表

看了一下面经,发现具有问了 redis 的跳跃表,惊呆了,赶紧学习顺便写下这一篇文章!

2019-06-10 15:40:26 1745

原创 面试准备 -- redis实现分布式锁

昨天,我们介绍了 zookeeper 实现分布式锁的原理和具体实现。今天,我们来学习使用 Redis 来做分布式锁。下面我们来简单实现一个分布式锁: public static void main(String[] args) { Jedis jedis = new Jedis("localhost"); //设置锁 Long result = ...

2019-06-01 13:56:56 3166

原创 面试准备-- zookeeper实现分布式锁

本章学习需要先安装 zookeeper。安装教程在另一篇博客:https://blog.csdn.net/weixin_41622183/article/details/90714190什么是分布式锁以前在项目较小时,单机即可处理很多业务。但随着用户增长,单机已经无法满足当今业务。解决方案可能是上集群,但是在多个 JVM 中都有同一个变量。假设多个请求分到不同的 JVM 中,都对变量进行修改...

2019-05-31 20:53:21 356

原创 docke实战篇(六)--docker-compose搭建zookeeper集群

前言:当我们准备学习 Dubbo 的时候,肯定会听说 zookeeper 这个中间件。zookeeper 很强大可以做服务注册和发现,也可以做分布式锁。今天我们就先来学习如何搭建 zookeeper 集群,由于电脑配置一般,所以暂时先搭建伪集群。开始搭建首先我们构建 /usr/local/docker/zookeeper/ 目录sudo mkdir -p /usr/local/dock...

2019-05-31 13:04:56 677 2

原创 Redis学习系列(一) -- 简单动态字符串概述

redis 为什么那么快!

2019-05-27 14:41:39 67

原创 Redis学习笔记(二) -- 持久化

以前学 Redis 只是停留在最简单的使用阶段,对其底层实现一点也不关心,甚至是配置文件的每个配置都不熟悉。o(︶︿︶)o 唉,近期开始恶补 Redis 的知识点,才发现不简单呀!今天先讲解一下 Redis 的持久化!为什么要持久化?我们知道 Redis 是内存数据库,单线程性能也超级强。但是在现在来说,数据才是一切,有数据的公司和没数据的公司是无法相比的。偏偏 Redis 是内存数据库,所...

2019-05-23 23:26:29 91

原创 面试准备 -- AQS 等待/通知机制

以前我们使用 Object 类提供的线程等待/通知机制,我们先来看看Condition 简介:Condition 接口可能在开发中很少遇到,但是这一点却十分重要,下面我们来看看 AQS 是如何实现等待/通知机制的根据上面代码,我们知道等待的方法是 await(),那我们先从该方法进行分析。await() 方法解析:public final void await() throws Inte...

2019-05-20 21:50:34 130

原创 微信开发系列 -- 微信支付与退款实现

这阵子由于项目需要,需要对公众号的点餐程序添加微信支付与退款功能!想起大二上学期第一次做微信支付时的绝望,现在还记忆犹新。这一次做微信支付相关的业务,是基于框架来做。如果有做过微信支付的同学,可能你会遇到各种各样懵逼的问题,最有趣的是返回的数据不告诉你大小还是小写,坑是多的吐血。开发之前,我们需要有企业资质才可以做。如果没有的同学自己想办法!pom.xml 文件需要在 pom.xml 加入...

2019-05-18 20:51:10 811

原创 微信开发系列 -- 微信网页授权(新)

在去年这个时候,根据视频完成了微信网页授权的案例,但是那时候使用原生的方式进行完成。本次案例是基于微信开发框架来编写。首先需要准备一些工具,工具在 https://blog.csdn.net/weixin_41622183/article/details/80267734 旧文中有提到。工具准备好后,我们来开始写代码application.yml 文件:weChat: mpAppI...

2019-05-18 19:37:30 111

原创 微信开发系列 -- 微信退款回调解密算法的坑

最近在做微信退款的接口,退款接口请求到微信是成功的,但是在退款回调到我们服务器时,出现了问题。为了快速快发,使用的是 weixin-java-pay 这个工具包。<!--微信支付--><dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-...

2019-05-16 17:31:31 2074 5

原创 错误总结 -- docker 内部网络崩后恢复

最近内网中服务器突然死机了,由于 ip 是自动分配的,重新开机后,IP 居然变了。原本搭建在内网服务器的 Redis 哨兵集群也不可用了。重启服务器后去重启 Redis 哨兵集群,结果执行如下命令是却出了问题:docker-compose up -d问题如下:ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rul...

2019-05-10 19:14:36 573

原创 面试准备 -- AQS 独占锁ReentrantLock详解

上篇文章简述了 AQS 的提供的几个支持。今天,我们来学习 AQS 是如何实现独占锁功能的。说到独占锁,我们就会想到 synchronized 关键字,既可以锁方法,也可以使用锁住某一块代码,简直就是个万能锁。当然今天我们肯定不是讲它,而是讲 AQS 提供的独占功能的类 – ReentrantLock。我们先来看看上篇文章的两个锁的对比图:锁synchronizerLock...

2019-05-10 10:33:09 149

原创 面试准备 -- AQS 简述

面试中最常见的面试题可以说是 JUC 包下最核心的一个点 – AQS(也叫队列同步器)。AQS 全称叫 AbstractQueuedSynchronizer,是 JUC 包下一个核心类,该框架提供了一整套通用并发管理模板,为线程的同步态,线程间通信,线程队列管理提供了支持。AQS 提供的模板框架:但我们点击进去 AbstractQueuedSynchronizer 类时,发现大部分的方法都是...

2019-05-07 20:44:57 377

原创 面试准备--原子类 LongAdder 详解

前面介绍了 AtomicInteger 后,就没有继续介绍 AtomicLong,因为这两个类基本是类似的,懂了第一个那第二个就不在话下了。根据前面学习过 AtomicInteger 代码,我们可以知道类内部有一个变量 value 专门保存当前得值。然后在增加或减少指定数值时,会不断 CAS 直到成功。那这样的话,value 作为一个热点值,会被频繁的修改。如果并发量低的情况下,CAS 失败的...

2019-04-24 19:32:37 123

原创 面试准备-- ABA问题解决方案

上一篇文章我们介绍了原子类 AtomicInteger 我们知道了该类留下的一个逻辑漏洞–ABA 问题。AtomicStampedReference/AtomicMarkableReference

2019-04-23 16:43:48 174

原创 面试准备--原子类 AtomicInteger 详解

原子类也是 java 并发编程学习中不可或缺的一个部分了。很久没有看原子类的源码代码了,今天翻开原子类源码看一下。Compare-and-Swap我们知道,CAS 操作涉及到操作系统本地的调用(简称:平台相关),也就是我们点进代码上有个 native 关键字修饰的方法。下面,我们自己来实现一个简单的 CAS 方法。/** * @author Gentle * @date 2019/04...

2019-04-21 15:59:51 311

原创 面试准备--线程池队列 PriorityBlockingQueue 详解

最后一个线程池的阻塞队列了,写完这个线程池篇应该算是结束了。PriorityBlockingQueue 队列是 JDK1.5 的时候出来的一个阻塞队列。

2019-04-15 22:15:14 852

原创 面试准备--线程池队列 SynchronousQueue 详解

今天介绍另一个线程池的阻塞队列–SynchronousQueue。该队列是在 jdk1.5 的时候出现,和前面写的 LinkedBlockingQueue 和 ArrayBlockingQueue 队列相比,SynchronousQueue 没有数据缓存的空间。我们先来看看类图:SynchronousQueue 特点:没有缓存数据,SynchronousQueue 队列中没有任何缓存的数...

2019-04-14 14:26:30 1955 1

原创 面试准备--线程池队列 ArrayBlockingQueue 详解

前面介绍已经介绍了线程池的三种队列了,剩下要学习的队列已经没多少了,今天我们继续来学习一下另一个队列 ArrayBlockingQueue ,这个队列很简单,下面我们来看一下类图。我们先来知道 ArrayBlockingQueue 是 BlockingQueue 的实现类,那我们需要先看看 BlockingQueue 提供了哪些方法。public interface BlockingQue...

2019-04-12 15:20:40 561

原创 面试准备 -- 线程池队列LinkedTransferQueue详解

今天解析的这个队列可能比之前学习的队列都要难,知识点涉及到锁自旋,源代码中出现 CAS 操作也会较难理解。老样子,我们先看看类相关结构:看到 BlockingQueue,条件反射下大致知道有哪些方法了。这里接不过多的介绍了,我们来看看 TransferQueue 接口提供了哪些方法://该方法放入元素后,一定要被消费者消费后,线程才释放,否则会一直堵塞void transfer(E e)...

2019-04-04 20:15:38 171

原创 面试准备 -- 线程池队列LinkedBlockingDeque详解

上一篇文章我们介绍了 LinkedBlockingQueue 队列,我们知道 LinkedBlockingQueue 是一个无界先进先出的队列。今天我们来学习一个双端队列 – LinkedBlockingDeque,该队列可以在队首和队尾插入元素。这两种队列的底层都是基于链表实现。下面我们来看看 LinkedBlockingDeque 类的关系图:上一篇文章我们的就说过是接口方法是不断抽象出...

2019-03-28 21:27:22 640

原创 面试准备 -- 线程池队列LinkedBlockingQueue详解

前面学了 Executor 框架,线程池参数,以及基本线程池的使用,今天来学学面试问的核心 – 线程池中的队列队列。在聊聊 java 线程池一文中,简单介绍了几种常用的阻塞队列,但都是一笔带过,接下来的文章会着重讲线程池中的队列。由于线程池中使用的队列有多种,接下来会分多篇文章进行学习。LinkedBlockingQueue队列:首先我们先看看下图从上图我们可以很清楚的看到 LinkedB...

2019-03-25 16:01:06 1640

原创 面试准备 -- 四种线程池基本用法与解析

说线程池队列之前,还需要先知道如何构建线程池。JDK 已经为我们提供了创建线程池的工具类了,只需要我们调用即可。下面我们看看这个工具类提供的几种线程池:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool构建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等...

2019-03-22 19:17:17 133

原创 面试准备 -- 学习 Executor 框架(上)

Executor框架还记得以前写线程的时候用如下代码://初级版中的战斗机new Thread(()-> System.out.println("12313")).start();//初级版new Thread(new Runnable() { @Override public void run() { System.out.println(""); }...

2019-03-20 19:49:55 103

原创 面试准备 -- 学习 java 线程池

java 线程池开发中我们经常使用的是各种框架,框架屏蔽了很多底层的东西,使得我们主要关注于业务。假设我们遇到一个业务:要返回图片和页面渲染后一起返回,如何优化?我们知道图片一般是很大的,而页面数据很小,而要等待两个组合后才返回,实在太慢了。这时我们会想到使用多线程进行优化。但是使用多线程也出现一个问题,假设并发量很大,我们频繁的创建和销毁线程,造成资源的消耗,不仅不能提高效率,还降低了。如何...

2019-03-16 19:22:09 74

原创 聊聊JVM -- java 中的线程安全

前言: java 线程安全方面在面试也经常面,特别是一些锁的问题,题目多多呀,这几篇写完,打算去研究一下线程池的问题,大厂面试基本都问呀,巨坑。在学习 java 中的锁之前,我们需要先知道一些基础。 本篇不做太多详细点,后面单独每篇博文会去细说 JUC 包包下源码实现。java 与线程: 线程的实现方式有两种:一种是基于内核线程实现,一...

2019-03-09 15:03:35 127

原创 聊聊JVM —— 理解java内存模型

前言: 这几天,请教了我的大神师兄,他和我说了在大厂面试的经过,四面面到他怀疑人生,最终他拿到了 sp 级别的 offer,很感谢师兄他把面试中各种知识点向我分享。接下来,笔者会针对该次面试所要求的知识点进行学习强化,并写成博客,与大家分享。师兄所在学校是三本(名气也一般般),和他同期面试的最低都是 985 211 好像还有硕士级别的。个人认为,有实力才是真的牛逼,学历只是敲门砖...

2019-03-05 23:17:21 115

原创 docke 实战篇(三)-- Dockerfile 常用指令入门

前言:     很抱歉,该篇文章拖延的时间有些长了。今天我们学入戏 docker 的 Dockerfile 指令详解,相信大家学完理论片后,对这个学习应该不会有太大的难度了。下面开始学习:     copy 指令,指令格式:copy 文件存放路径  目标路径     举例:将 home 目录下的 inde.html 文件复制到 /usr/local/tomcat/webap...

2019-01-30 19:31:08 279

原创 docke理论篇 --docker的基本概念

前言:    补充一下 docker 的理论部分,对容器有一个深入的了解。首先先看一个我们很常见的东西--云,例如:阿里云,腾讯云。他们提供给我们空间使用,让我们在本地远程云端的服务变得十分便捷。但是,按照以前我们在本地上用虚拟机可以实现一台电脑开多个操作系统。难道云端也是我们购买后给我们分配一台虚拟机,让我们玩?当然这是不可能的,那到底是什么来的,可以说是容器了。    先看如下图:...

2019-01-29 18:50:06 289

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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