菜鸡的挣扎
码龄5年
关注
提问 私信
  • 博客:87,321
    动态:202
    87,523
    总访问量
  • 69
    原创
  • 2,307,870
    排名
  • 190
    粉丝
  • 0
    铁粉

个人简介:人生是公平的,得到了金钱必将失去烦恼

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2020-01-04
博客简介:

路的尽头在哪

博客描述:
大型线上菜鸡互啄、商业互吹论坛现场
查看详细资料
个人成就
  • 获得59次点赞
  • 内容获得16次评论
  • 获得244次收藏
  • 代码片获得209次分享
创作历程
  • 1篇
    2022年
  • 22篇
    2021年
  • 46篇
    2020年
成就勋章
TA的专栏
  • Spring 全家桶
    8篇
  • Java
    7篇
  • Collection & Map 集合知识体系
    10篇
  • 并发知识体系
    10篇
  • Java 虚拟机
    7篇
  • 运维/部署
    8篇
  • 数据库
    1篇
  • 中间件
    6篇
  • 架构设计
    3篇
  • 方法论
    4篇
  • 散记杂文
    8篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 服务器
    linux
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

JUC锁:核心类 AQS 原理图文详解

前言好久没打开CSDN 了(随便找点存货发一发)2021.12.02 说实话,AQS 确实没了解过 ,阅读 Java 版本为 1.8.0.25。源码:AbstractQueuedSynchronizer.java - Gitee.comReentrantLock.java - Gitee.comCountDownLatch.java - Gitee.com中文文档:Java 8 中文版 - 在线API中文手册 - 码工具 (matools.com)AbstractQueuedS
原创
发布博客 2022.04.01 ·
1038 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

【踩坑记录】jenkins 远程部署 publish over ssh

jar 包运行失败其他命令都能好好执行,单单 nohup java -jar & 运行无效。网上找了一圈,解决办法包括:执行命令前需要先 source /etc/profile 命令,同步环境java 、 jar包 和 日志文位置都用全路径。shell 命令加 #!/bin/bash反正都用上shell 命令执行超时现象是这样的:stack overflow 上的回答:然后就可以正常使用了。参考文章windows - Exception when publish
原创
发布博客 2021.10.20 ·
799 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

maven 分环境打包

1. 总体说明最近改 jenkins 部署,需要分 本地、测试、生产 三个环境。为了使用同一套 shell 脚本,得分环境继续 maven 打包。不同环境使用不同配置文件。2. Pom 配置在 pom.xml 中添加 profile 配置,按环境文件夹路径划分。<activeByDefault>true</activeByDefault> 将 dev 设置为默认环境,所以在本地就默认为开发环境。<profiles> <profile>
原创
发布博客 2021.10.19 ·
1750 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

jenkins 通过 SSH 远程部署

1. Jenkins 安装可以参考我以前的:Jenkins + Gitee 自动化构建实例jenkins dockerfile maven 自动打包、容器构建、发布2. 安装插件在 jenkins 插件管理中安装插件Publish Over SSH3. SSH 服务器拉到最底下,添加 SSH Server。可以在针对这个服务进行连接测试:4. 任务配置主要步骤:先 SSH 连接,删除原进程和文件maven 打包SSH 连接,发送文件执行 shell 命令
原创
发布博客 2021.10.16 ·
7345 阅读 ·
0 点赞 ·
0 评论 ·
8 收藏

重复读取 request 流数据

前言2021.10.15起因是在项目中,我自己习惯都是在拦截器中拿参数、打日志。但是一个接口对接方比较独特,参数都写在 request流 里面也是第一次遇到。但是问题是,request 流中的数据,只能被读取一次,现在日志打印读取了,后面 controller 里就没有了。问题复现接口接收数据对象:@Datapublic class QueryDTO { public String id; public Integer type;}接口方法:@RestCont
原创
发布博客 2021.10.16 ·
1523 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

Quartz - 任务调度框架整合使用

前言项目中遇到一个,需要 客户自定任务启动时间 的需求。原来一直都是在项目里硬编码一些定时器,所以没有学习过。很多开源的项目管理框架都已经做了 Quartz 的集成。我们居然连这么常用得东西居然没有做成模块化,实在是不应该。Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能:持久性作业 - 就是保持调度定时的状态;作业管
原创
发布博客 2021.10.07 ·
3389 阅读 ·
3 点赞 ·
1 评论 ·
11 收藏

简单实现修改内容前后变动日志(注解+反射)

需求说明实现目标:把修改的具体字段名以及修改前后内容做日志记录实现效果:集装箱数量:【1】变更为【3】;集装箱型:【40 Dry High】变更为【40 Dry Standard】;起运时间:【2021-09-16】变更为【2021-09-30】;自动下单限额:【1200.00】变更为【1500.00】;实现思路为了做到尽量通用,先假设实体类都实现了序列化 Serializable 。在实体中添加自定义注解反射,获取到字段,扫描存在注解的字段将修改前后的字段值做对比存在修
原创
发布博客 2021.09.18 ·
1481 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

docker compose 基础使用方法

前言Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排讲人话就是, 一个 yml 文件定义和运行多个 docker 容器,同时指定启动顺序compose 安装可以去最简单的方法,直接敲两个命令:curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/dock
原创
发布博客 2021.09.17 ·
299 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

RabbitMQ 延迟队列、惰性队列 简介

这篇比较简单,基础内容前两篇已经说过了,可以看以前的:Springboot RabbitMQ 基础使用、消息发送确认、签收springboot、rabbitMQ 死信队列延迟队列使用场景:订单十分钟内未支付则自动取消:下单发送消息 TTL 十分钟,自动转入死信队列 DLX(消费取消订单)用户发起退款,如果三天内没有得到处理则通知相关运营人员:发送退款请求消息 TTL 3天,还没消费转入死信队列(人工接入)类似场景还蛮多的。基于死信实现基础的延迟队列就不写了,和死信队列一样。实现原理
原创
发布博客 2021.09.15 ·
690 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

springboot、rabbitMQ 死信队列

前言死信:无法被消费的消息,称为死信。如果死信一直留在队列中,会导致一直被消费,却从不消费成功。所以我们专门开辟了一个来存放死信的队列,叫死信队列(DLX,dead-letter-exchange)。死信的几种来源:消息 TTL 过期(time to live,存活时间,可以用在限时支付消息)队列达到最大长度(队列满了,无法路由到该队列)消息被拒绝( basic.reject / basic.nack ),并且 requeue = false环境准备配置准备 MQ 的队列和环境
原创
发布博客 2021.09.13 ·
3272 阅读 ·
8 点赞 ·
2 评论 ·
23 收藏

Springboot RabbitMQ 基础使用、消息发送确认、签收

概述rabbitMQ 会做一个系列,包括:安装、基础使用、高级队列、集群。使用环境: jdk 8 、springboot 2.4.10常见概念:AMQP:高级消息队列协议,这是一个消息应用的规范。Broker: 接收和分发消息的应用,RabbitMQ Server 就是 Message Broker。Channel:Channel 作为轻量级 Connection 极大减少了操作系统建立 TCP connection 的开销。Exchange:message 到达 broker 的第一站,根
原创
发布博客 2021.09.08 ·
1595 阅读 ·
2 点赞 ·
0 评论 ·
9 收藏

swagger 在线文档分组,分包形成文档

knife4j 是一个贼不错的swagger扩展工具,有一套很不错的UI。还带有离线文档下载,最让我喜欢的是每一行字段都直接动态对比说明。访问地址:http://localhost:8080/doc.html文档地址:knife4j (xiaominfo.com)依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2<
原创
发布博客 2021.09.03 ·
453 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

jenkins dockerfile maven 自动打包、容器构建、发布

概述想着在公司弄一套自动部署测试流程,jenkins + gitee 自动 build 已经测试成功了。下一步就是 docker + maven + jenkins + git 打包发布了。dockerfiledockerfile 可以根据命令定制镜像,用来构建 docker 容器。语法注意:dockerfile 命令都必须用大写FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。MAINTAINER:维护者,国际惯
原创
发布博客 2021.08.30 ·
2861 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

Jenkins + Gitee 自动化构建实例

概述因为本次项目涉及接口调试过多,所以弄个持续集成(CI)测试环境。本次测试使用 Gitee + jenkins 。打包部分先用 npm 做个 build 测试。预备环境:JDK 、node、git先说一个坑,原本图省事,直接通过 docker 安装了 jenkinsci/blueocean 镜像来安装。刚开始确实美滋滋,后来到拉代码打包发现,在容器里还怎么打包测试。所以重新开始。jenkins 安装完整手册看:Jenkins 用户手册jenkins 下载目录选择自己需要的 war 包
原创
发布博客 2021.08.28 ·
2703 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Docker Gitea Mysql 快速搭建企业代码服务器

概述搭建一个企业代码仓库,网上对比一圈,发现 gitea 比较受欢迎。选用 docker 作为 gitea 容器主服务器装 mysql ,团队5人以下用 SQLite 3 也够用 。 mysql 安装MySQL 安装wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-community-release-el7-10.noarch.r
原创
发布博客 2021.08.27 ·
578 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

SpringBoot - activeMQ 消息队列

前言环境: jdk 8、springboot 2.4.9、activemq 5.15.15JMS术语:Provider/MessageProvider:生产者Consumer/MessageConsumer:消费者PTP:Point To Point,点对点通信消息模型Pub/Sub:Publish/Subscribe,发布订阅消息模型Queue:队列,目标类型之一,和PTP结合Topic:主题,目标类型之一,和Pub/Sub结合ConnectionFactory:连接工厂,JMS用
原创
发布博客 2021.08.17 ·
385 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Mybatis-Plus 多数据源

前言环境: jdk 8、springboot 2.4.9、mybatis-plus 3.4.3.1、dynamic-datasource 3.3.2使用文档: dynamic-datasource · 看云 在分布式事务比较困难的情况下,做读写分离还是蛮好用的。1. 依赖配置加入依赖:<dependencies> <dependency> <groupId>org.springframework.boot</groupId&
原创
发布博客 2021.08.17 ·
649 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

阿里云OSS上传图片、PDF设置链接预览

去年的OSS还是链接可预览,今年可能是阿里云OSS升级了,变成直接下载了。所以重新改回预览,其他全部不变,上传添加 contentType 配置//文件名String originalFilename = file.getOriginalFilename();//拿到.后缀String type = originalFilename.substring(originalFilename.lastIndexOf("."));ObjectMetadata metadata = new Object
原创
发布博客 2021.08.12 ·
6360 阅读 ·
4 点赞 ·
0 评论 ·
13 收藏

水一篇 CountDownLatch

概述CountDownLatch 是 JUC 中一个比较常用的工具类,使用也很简单。。。而且大佬们的博客确实写得很好。。。尽量少些废话,尽快结束。因为源码确实不长,带上注解也才200行,就直接贴在最后了。总的就是:CountDownLatch 是 JDK 提供的一个同步工具,它可以让一个或多个线程等待,一直等到其他线程中执行完成一组操作。常用的方法有 countDown 方法和 await 方法,CountDownLatch 在初始化时,需要指定用给定一个整数作为计数器。当调用 countD
原创
发布博客 2021.06.19 ·
436 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

CAS、Unsafe、Atomic原子类,一波带走

原子类概述JUC 中多数类是通过 volatile 和 CAS 来实现的,CAS本质上提供的是一种无锁方案,而 Synchronized 和 Lock 是互斥锁方案。java 原子类本质上使用的是 CAS,而 CAS 底层是通过 Unsafe 类实现的。线程安全的实现方法包含:互斥同步:synchronized 和 ReentrantLock非阻塞同步:CAS 、 原子类AtomicXXXX无同步方案::栈封闭 、Thread Local 、可重入代码本篇主要讲述原子类,以及它所依赖的
原创
发布博客 2021.06.06 ·
271 阅读 ·
0 点赞 ·
2 评论 ·
0 收藏
加载更多