自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 【Dubbo】org.apache.dubbo.remoting.RemotingException: message can not send, because channel is closed

记一笔,莫名其妙出现了报错,排查了半天,终于解决了,结果真是有些无语。解决方案1.排查Nacos服务列表中,provider和consumer是否正常注册。未注册,说明你的nacos server或者client的配置有问题2.检查一下自己有没有开代理。我是打开了Clashx, 它把我的本地网络代理掉了。

2022-08-24 15:18:54 2208 1

原创 查看Docker容器run参数

Runlike查看Docker容器run参数。

2022-08-24 11:45:23 1226

原创 正则表达式校验非0正数小数点后两位

正则表达式校验非0正数小数点后可保留两位

2022-08-04 16:46:17 1826 1

原创 Yapi神器EasyYapi和MybatisPlus工程整合使用附配置文件

EasyApi支持检索项目代码中的注释,注解等信息,自动生成接口文档。 本文主要介绍 EasyApi 的使用和 Mybatis-Plus 及其分页插件 Page 与 EasyApi 整合后,接口文档出现问题的解决方案。

2022-06-23 18:39:13 2016

原创 SpringKafka自动提交源码学习-Spring生态(二)

Spring Kafka 可以为我们提供非常简单易用的的上层 API 支持. 在一般处理无需幂等的数据场景下, 我们可以使用默认配置 enable-auto-commit 来使用消息队列. 这里有个疑问, auto-commit 究竟是怎么实现的, 具体在怎样的场景中适用 auto-commit 配置? 带着这些问题, 本节基于 spring-kafka2.7.0 跟踪源码, 观察自动提交的底层实现.依赖Spring Kafka 是对 kafka-client 的再封装, 这里列一下, 本文使用的 j

2021-08-23 18:30:25 1670

原创 CPU工作原理-操作系统(一)

CPU 和内存是一个计算机的核心. 本节以程序运行的角度来解释 CPU 的工作原理.操作系统Operate System: 计算机操作系统起到一个承上启下的作用, 上层对接应用层软件, 下层对接计算机硬件. 操作系统为开发者们提供了用户态、内核态的接口, 让计算机开发人员在这些基础上开发应用. JVM (Java 虚拟机: Java Virtual Machine) 本质上也是一种应用程序, 设计原理也跟操作系统很像, 编译器将 *.java 文件编译成 Byte Code, JVM 将二进制码翻译成

2021-07-27 19:26:03 1244 2

原创 SpringKafka原理解析及源码学习-Spring生态(一)

Kafka 作为老牌消息中间件, 高吞吐是它的拿手好戏. Spring 的生态中也有官方提供的 spring-kafka.jar. 本文主要学习 Spring 官方提供的 spring-kafka.jar 是怎么实现的.环境下面将本文用到的一些环境版本贴出来, Spring Kafka 在 1.X 版本和 2.X 源码上区别还是挺大的. 本文拉取的是当时的最新版.linux kafka server: kafka_2.13-2.7.0(注: 2.13 是 scala version, 2.7.0

2021-07-21 10:24:10 5690 2

原创 线程池实现原理及源码阅读-Java多线程(十一)

Java 的线程对应着操作系统的线程, 众所周知线程在创建和销毁时都会开销一部分的系统资源, 在高并发的场景下, 将资源浪费在频繁的创建销毁线程显然是不理智的, 在 Java1.5 推出了线程池的概念. 本节为大家介绍线程池实现的基本原理及底层源码阅读.线程池运行机制在学习前需要了解线程池的运行机制, 也就是一个新的线程想要被线程池执行需要经过哪些处理:有空闲的核心线程, 直接交给核心线程处理核心线程数量满了, 则放入阻塞队列期间新来的 task 都会放入阻塞队列, 核心线程监听阻塞队列消费

2021-07-16 11:14:38 131 2

原创 使用Hexo-asset-image插件导致静态图片路径出错-Hexo采坑(二)

介绍Hexo 官方提供的静态资源管理功能十分的鸡肋, 并且推荐我们通过安装 hexo-asset-image 来管理自己的静态图片.故障描述使用 Hexo-asset-image 插件静态图片路径会变成一个错误的路径.我们可以看到错误的 URL 中, 在 host:port 后, 明显多了一个 .cn 的资源目录, 这在使用域名部署的时候, 明显是不正确的错误: http://blog.diswares.cn/.cn/java-multithreading-thread-pool/juc-thr

2021-07-16 11:11:04 2257 4

原创 线程池参数及六种实现-Java多线程(十)

当我们使用 new Thread() 创建线程时, 阿里巴巴编程规约强制约束我们放弃这种创建线程的方式, 并推荐我们使用线程池. 本节主要介绍创建线程池的几个参数, 及 Executors 中提供的六种线程池实现.介绍线程池其实只是一种线程使用的模式, 底层还是使用 new Thread() 实现的. 创建了过多的线程会产生严重的调度开销, 进而影响缓存局部性和整体性能. 线程池不仅能够保证内核的充分利用, 还能防止过分调度.线程池参数创建一个自定义线程池需要创建 ThreadPoolExecut

2021-07-07 21:05:29 159 1

原创 AQS等待队列源码学习-Java多线程(九)

AQS (AbstractQueuedSynchronizer) 是由两大核心隐式队列: 阻塞队列和等待队列组成的. 本章就等待队列的源码展开学习讨论.抽象概念等待队列, 又称条件队列(因为 Condition 可以直译为条件). 在 AQS 中等待队列是由内部类 ConditionObject 实现的. 由于 ConditionObject 中许多核心方法, 都是通过调用 AQS 的基础方法来实现的, 所以设计成内部类的形式也比较合理.主要功能等待队列主要功能是: 将竞争到独占资源的线程 A,

2021-06-27 19:43:02 255 1

原创 AQS阻塞队列源码学习-Java多线程(八)

AQS (AbstractQueuedSynchronizer) 是由两大核心隐式队列: 阻塞队列和等待队列组成的. 本章就阻塞队列的源码实现进行讨论.概念入队出队流程阻塞队列, 又称同步队列. 是基于静态内部类 Node 实现的一种 CLH 变体队列. 网上很多入队出队流程描述的并不清晰, 正确的流程如下:现有新节点 A (节点与线程一一对应, 可以理解为是一个意思)想要获取资源时, 通过 tryAcquire()/tryAcquireShared() 直接尝试获取, 如果可以, 则立即执行

2021-06-26 21:33:45 392 1

原创 AQS核心原理介绍-Java多线程(七)

AQS (AbstractQueuedSynchronizer) 抽象的队列同步器是 JUC 中的重要实现. AQS 定义了一套多线程访问共享资源的同步器框架, JUC 中许多经典的同步器实现都是基于 AQS 实现. AQS 内部维护了两种隐式的队列: 阻塞队列和条件队列.由于 AQS 实现较为复杂, 这里打算分成三个章节(核心原理, 阻塞队列, 条件队列)为大家介绍, 以便吃透 AQS 的底层原理. 本章为大家介绍的是第一部分核心原理介绍.前置知识AQS 的实现较为复杂, 在学习前希望大家先理解多

2021-06-20 21:54:20 252 1

原创 Jenkins离线解决插件兼容性-Jenkins(二)

最近笔者公司在大势所趋下, 终于将代码管理工具从 Subversion 换成了 Git. 代码仓库选用的是 Gitlab, 由于原先项目就使用 Jenkins 做编译服务器, 版本为 2.2204.0. 与现在 Jenkins Release 最新的稳定版本 2.289.1 还是有一定时间差距的, 那么大部分最新的插件都无法直接集成.背景介绍笔者需要完成开发者将代码提交到 Gitlab 的指定分支后, 通过 webhook 将事件主动推送给 Jenkins服务器. 对如何推送感兴趣的同学请移步博文 G

2021-06-13 15:18:51 2306

原创 Jenkins结合Docker实现持续集成-Jenkins(一)

Jenkins作为火了十来年的持续集成(Continuous Integration)工具, 拥有很多优势: 易安装、易配置、完善的测试报告、分布式构建。最值得一提的是它强大完善的第三方插件库,插件库中基本涵盖了你能想到的大部分功能比如RSS/Email/IM集成等等.本节主要为大家介绍在 CenterOS 下使用 docker 将 Jenkins 成功部署. 并实现 docker in docker 为我们的 Jenkins Image 体积减负, 与宿主机共享一套 docker 环境我的 Jenk

2021-06-12 15:57:43 563

原创 优雅的实现计算机容量Bit Byte KB等互相转换-Java工具类

日常工作中, 偶尔会遇到计算机容量之间的相互转换. 众所周知计算机的基本存储单位有Bit, Byte, KB, MB, GB, TB等. 这里参考 TimeUnit 实现一套优雅的计算机容量互相转换工具, 并提供一个支持自动升级容量单位的方法.工具类源码https://gitee.com/zture/spring-test/blob/master/demo/src/main/java/cn/diswares/blog/demo/util/StoreUnit.java实现思路创建枚举类 Stor

2021-05-28 10:51:18 1037

原创 Interrupt中断线程-Java多线程(五)

Interrupt 的其作用是"中断"线程, 但实际上线程仍会继续运行, 这是一个非常容易混淆的概念. Interrupt 的真正作用是给线程对象设置一个中断标记, 并不会影响线程的正常运行测试代码https://gitee.com/zture/spring-test/blob/master/multithreading/src/test/java/cn/diswares/blog/InterruptTests.java测试为了方便理解简介中 interrupt 的概念, 写个 DEMO 测试

2021-05-17 21:47:53 255 3

原创 Volatile保证可见性的原理-Java多线程(四)

volatile可以保证线程可见性且提供了一定的有序性, 但是无法保证原子性. 在 JVM 规定 volatile 关键字执行的前后必须加上 内存屏障. 而真正的底层实现是 LOCK addl 指令锁总线小实验测试项目地址:https://gitee.com/zture/spring-test/tree/master/multithreading/src/test/java/cn/diswares/blog首先做一个小实验.小实验1在一个类声明一个成员变量 a线程 A 死循环读取读取

2021-04-30 10:08:28 278

原创 Synchronized锁升级原理-Java多线程(三)

Synchronized 是 Java 中的关键字, 是利用锁的机制来实现同步的. 是Java内置的机制, 是JVM层面的. JDK 1.6 以前synchronized 关键字只表示重量级锁.在 JDK 1.6 开始 ,对锁的实现引入了大量的优化, 如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销锁升级流程原图出自水印前置知识锁的特性原子性锁是通过互斥保障原子性的. 所谓互斥, 就是指一个锁一次只能被一个线程持有可见性锁的获得会隐含地包含刷新处理器缓存

2021-04-27 00:31:39 236

原创 Java对象的内存布局-Java基础(一)

今天来讲些抽象的东西对象头,JDK 中的 synchronized 锁优化和 JVM 中对象年龄升级等等。要深入理解这些知识的原理,了解对象头的概念很有必要对象内存构成Java 中通过 new 关键字创建一个类的实例对象,对象存于内存的堆中并给其分配一个内存地址在 JVM 中,Java 对象保存在堆中时,由以下三部分组成:对象头(object header): 包括了关于堆对象的布局、类型、GC状态、同步状态和标识哈希码的基本信息。Java 对象和 JVM 内部对象都有一个共同的对象头格式实

2021-04-26 01:12:22 270

原创 SpringBoot 集成 Logback-Logback(一)

Spring Boot 家族中核心 Spring Boot Starter 中集成了 Logback 日志框架.Logback 的作者说: Logback 的目的是成为目前流行的 Log4j 项目的继承者, 填补 Log4j 的空白.让我们一起看看 Logback 到底有什么过人之处.测试项目地址: https://gitee.com/zture/spring-test/tree/master/logbackLogback 的介绍Logback是由log4j创始人设计的另一个开源日志组件.

2021-04-25 15:14:51 552

原创 Logback 实战之关键日志快照回溯-Logback(二)

这一节笔者为大家分享一个我在公司项目中遇到的实际案例, 也是对日志使用的一个小拓展.由于笔者所在的公司环境复杂, 有开发环境、测试环境、生产环境等, 且各环境间通信隔离. 而这个项目中某核心算法模块内部实现复杂, 很难直接通过观察 LOG 定位问题所在(源码约5000行, 并且还在开发阶段). 那么就需要解决测试、生产环境环境中算法发生故障后, 可以通过一个简单有效的方案来恢复当时的环境. 将环境在开发环境中可以跑起来, 那这样就可以本地 DEBUG 定位问题项目源码https://gitee.co

2021-04-25 15:13:37 352

原创 跟踪JVM源码了解AtomicInteger的底层实现-Java多线程(二)

本节主要讲解在跟踪 JVM 源码. 了解 AtomicInteger 的底层实现.上文提过 AtomicInteger 的实现中关键是调用了 Unsafe.class.compareAndSwapInt() 方法. 在 JDK .class文件反编译后的 Unsafe.class 中能看到 compareAndSwapInt 是用 native 关键字修饰的. 那我们要了解它的实现就必须阅读 JVM 的源码JVMJVM 是一种规范. 在这个规范下有许多实现, 例如:OpenJDKHotspot

2021-04-25 15:09:28 143

原创 CAS、ABA 问题讲解-Java多线程(一)

Java 面试中必然会问到有关多线程方面的知识. 本文主要讲解多线程中的基础知识 CAS(Compare And Swap)机制和 ABA 问题.CAS介绍CAS 全称 Compare And Swap, 顾名思义就是比较和改变的意思. 在 Java 中比较常用的实现有 synchronize 的轻量级锁(有的地方也称为无锁、自旋锁可重入锁)、java.util.concurrent.atomic 包下的 Atomic 家族. 这些实现之间有一个共性: 经常配合循环操作,直到完成为止.过程所谓的

2021-04-25 15:07:14 167

原创 Java8 Hotspot 源码下载

title: Java8 Hotspot 源码下载tags: Java Hotspot Code Downloaddate: 2021/2/16categories:JavaHotspotkeywords: [Java,Hotspot]description: Java8 Hotspot 源码下载想看 Hotspot 源码的同学. 先去找到 Hotspot源码版本. 比如jdk8u262-ga ,最右边可以找到它的id,就是1c6e1f187fdc,下载地址:http://hg..

2021-04-25 15:04:41 596

原创 Hexo Next主题中文锚点失效-Hexo采坑(一)

问题描述Hexo 5 安装 Next 主题后, 侧边栏目录中中文目录锚点点击后无法正常跳转故障描述点击后无法正常跳转.伴随控制台报错问题定位知道是 ‘post-details.js’ 文件报错后就简单了. 阅读源码后我们发现是 targetSelector 解析 UTF8 有问题 // TOC item animation navigate & prevent #item selector in adress bar. $('.post-toc a').on

2021-04-25 15:00:54 1063 5

原创 Hexo 安装 Next 主题-Hexo建站(四)

安装条件生产环境(Linux服务器):hexo未安装 hexo 的同学可以参考前两节的内容. 将 hexo 部署起来安装步骤注意: 以下工作空间根目录为 Linux 服务器 hexo 安装路径根目录下载 Next 主题这里我选择的是最后一次发布的主线版本.cd <your_hexo_path>mkdir themes/nextcurl -L https://api.github.com/repos/theme-next/hexo-theme-next/tarball

2021-04-25 14:47:26 157

原创 nginx 代理 hexo 及域名配置-Hexo建站(三)

先前我们将 Hexo 通过 docker-compose 成功将 hexo 部署进了我们的服务器, 拥有域名的同学一定不希望他人在访问 Hexo 时还使用http://<host>:4000这种形式. 这一节, 主要演示使用阿里云控制台购买的域名并配置 nginx 代理实现域名访问 Hexo Blog 的实战安装条件生产环境(Linux服务器):dockerdocker-compose其他:阿里云账号域名以上条件缺一不可. 请自行安装后再进行后续步骤阿里云域名设置注

2021-04-25 11:49:58 1022

原创 docker-compose管理Hexo急速建站-Hexo建站(二)

上回介绍了如何在 Linux 服务器上急速建站本节主要介绍使用 docker 作为容器 docker-compose 进行容器编排达到快速建站的目的.以下是这套建站方案带来的其它优点:docker 容器优秀的隔离性, 能让我们的服务器环境更加整洁docker-compose 方便在服务器迁移、硬盘损坏等意外情况发生后, 可以再次快速将 hexo 极速启动起来.docker-compose 能将不健康状态的应用自动拉起, 在 hexo 由于各种意外情况导致奔溃后, 可以自动重启将 hexo 所

2021-04-25 11:40:12 1312

原创 在 Linux 服务器上快速建站-Hexo建站(一)

在 Linux 服务器上快速建站安装条件安装 Node.js安装Hexo 作为一款快速、简洁且高效的博客框架火了起来. Hexo 使用 Markdown(或其他渲染引擎)解析文章, 在几秒内, 即可利用靓丽的主题生成静态网页.本文主要是记录 Hexo 在 linux服务器 上部署的流程, 当然本站也是由 Hexo 搭建起来的.安装条件安装 Hexo 相当简单,只需要先安装下列软件即可安装 Node.jsNode.js (Node.js 版本需不低于 10.13,建议使用 Node.js 12.

2021-04-25 11:32:05 218 1

原创 maven配置私服后Cannot download sources, 无法下载源码

方法一: 执行shell命令(不推荐, 需要每次记录命令)项目根目录下运行以下命令mvn dependency:resolve -Dclassifier=sources方法二: 修改maven配置文件setting.xml私服配置mirrorOf=*的时候, 会优先走这个配置, 导致ali、中央仓库等镜像均不生效<!-- 私服 --><mirror> ...

2020-04-26 15:36:27 2107

转载 zookeeper kafka安装

1、下载镜像这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka在命令中运行docker images验证两个镜像已经安装完毕2.启动启动zookeeper容器docker run -d --name...

2019-11-27 11:47:59 240

原创 Linux中好用不常用的命令

远程连接记住密码配置后,再进行ssh, sftp等连接命令都无需再次输入密码只需使用一次ssh-keygen -t rsa记住密码ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.4.1.206

2019-11-26 16:44:17 169

原创 tar压缩打包命令实用

#压缩tar -czvf ***.tar.gz dir1tar -cjvf ***.tar.bz2 dir1#解压缩tar -xzvf ***.tar.gztar -xjvf ***.tar.bz2

2019-11-25 01:39:51 127

原创 git从命令行推送现有存储库

修改仓库地址git remote add origin https://github.com/RookieEngineerG/htv_workflow.gitpush到远端 git push -u origin master

2019-07-10 16:38:54 670

原创 Spring-Cloud RestTemplate 服务间调用

这是一篇非常简单的笔记, 有用的只是第三种实现方式RestTemplate 的三种实现方式第一种方式 这不重要直接使用 new 一个RestTemplate出来, URL直接写死: RestTemplate restTemplate = new RestTemplate(); String resp = restTemplate.getForObject("http://localho...

2019-02-21 13:34:45 351

原创 Spring-Cloud Eureka 配置

Eureka启动: nohup java -jar eureka-0.0.1-SNAPSHOT.jar &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;

2019-02-16 00:53:57 104

原创 Spring boot -- starter pom

2018-10-11 12:39:24 136

转载 git 的使用方法

https://blog.csdn.net/chenxueshanBlog/article/details/78915338这篇文章完美

2018-10-09 10:51:51 117

转载 vue-awesome-swiper API以及其回调函数 on的使用方法

原文地址: https://segmentfault.com/a/1190000014609379一、先说一个看关于vue-awesome-swiper的一个坑vue项目的package.json中显示的&amp;quot;vue-awesome-swiper&amp;quot;: “^2.5.4”,用npm install自动安装依赖时装的版本为&amp;quot;version&amp;quot;: “2.6.7”,而单独安装(npm install vue-..

2018-09-25 16:07:33 11528

空空如也

空空如也

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

TA关注的人

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