自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 腾讯云大神亲码“redis深度笔记”,不讲一句废话,全是精华

前言作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要使用,可见精通Redis使用真的很有必要。所以,今天则分享出腾讯云大神亲自码出的“redis深度笔记”,笔记内容没有讲一句废话,全篇看下来都是精华!需要Redis深度笔记PDF版的,关注公众号【老男孩的架构路】即可免费领取。PART1:Redis深度笔记开篇

2021-10-20 16:12:42 126

原创 kafka查看Topic列表及消费状态等常用命令

  本文中的操作均基于kafka_1.3.3.0,且所有命令经过实际验证。2|0常用工具新建Topic./kafka-topics --zookeeper 166.188.xx.xx --create --topic flink_source --partitions 1 --replication-factor 1 replication-factor: 指定副本数量 partitions:指定分区 删除Topic./kafka-topics --zoo

2021-08-29 14:40:40 15130 2

原创 redis数据同步之redis-shake

redis-shake简介redis-shake是阿里开源的用于redis数据同步的工具,基本功能有:恢复restore:将RDB文件恢复到目的redis数据库。 备份dump:将源redis的全量数据通过RDB文件备份起来。 解析decode:对RDB文件进行读取,并以json格式解析存储。 同步sync:支持源redis和目的redis的数据同步,支持全量和增量数据的迁移,支持从云下到阿里云云上的同步,也支持云下到云下不同环境的同步,支持单节点、主从版、集群版之间的互相同步。需要注意的是,

2021-08-29 13:55:36 1254

原创 有了Swagger2,再也不用为写Api文档头疼了

1、为什么要写Api文档现在,前后端分离的开发模式已经非常流行,后端开发工程师只负责完成后端接口,前端页面的开发和渲染完全由前端工程师完成。问题来了,前端工程师怎么知道后端接口的具体定义呢?答案是由后端工程师撰写。2、写Api文档很头疼吗答案是一定的,这对后端工程师来说,是额外的工作,编码已经很耗费精力了,这时前端工程师来催文档,不头疼才怪:),当然这也不是前端工程师的问题,都是为项目的进度着急。3、Swagger2现在好了,一个自动撰写Api文档的神器出现了,他就是 Swagger

2021-08-29 13:52:33 118

原创 轻松让你的nginx服务器支持HTTP2协议

简介nginx是一个高效的web服务器,因为其独特的响应处理机制和低内存消耗,深得大家的喜爱,并且nginx可和多种协议配合使用,而HTTP2协议又是一个非常优秀的协议,如果将两者结合起来会产生意想不到的效果,今天我们将会讲解如何在nginx中配置HTTP2协议。HTTP1.1和HTTP2HTTP的全称是Hypertext Transfer Protocol,是在1989年World Wide Web发展起来之后出现的标准协议,用来在WWW上传输数据。HTTP/1.1是1997年在原始的HTTP

2021-08-29 13:49:14 783

原创 Kafka 与 RabbitMQ 如何选择使用哪个?

前言我们在工作中经常会用到异步消息,主要使用两种消息模式:消息队列 发布/订阅消息队列:多个生产者可以向同一个消息队列发送消息,但是一个消息只能被一个消费者消费。发布/订阅:一个消息可以被多个订阅者并发的获取和处理。Kafka和RabbitMQ都能满足如上的特性,那么我们应该如何选择使用哪一个?这两个 MQ 有什么差异性?在什么样的场景下适合使用Kafka,什么场景下适合使用RabbitMQ?你是否有这样的疑惑?希望这篇文章能够帮助到你。如何选择?开发语言Kafk...

2021-08-29 13:48:02 236

原创 SpringBoot 优雅配置跨域多种方式及Spring Security跨域访问配置的坑

前言#最近在做项目的时候,基于前后端分离的权限管理系统,后台使用 Spring Security 作为权限控制管理, 然后在前端接口访问时候涉及到跨域,但我怎么配置跨域也没有生效,这里有一个坑,在使用Spring Security时候单独配置,SpringBoot 跨越还不行,还需要配置Security 跨域才行。什么是跨域#跨域是一种浏览器同源安全策略,即浏览器单方面限制脚本的跨域访问在 HTML 中,<a>, <form>, <img>, <sc

2021-08-29 13:40:34 330

原创 Spring Data JPA:解析CriteriaBuilder

源码在Spring Data JPA相关的文章[地址]中提到了有哪几种方式可以构建Specification的实例,该处需要借助CriteriaBuilder,回顾一下Specification中toPredicate方法的定义,代码如下: /** * Creates a WHERE clause for a query of the referenced entity in form of a {@link Predicate} for the given * {@li

2021-08-29 13:38:04 1619

原创 springboot:嵌套使用异步注解@Async还会异步执行吗

一、引言在前边的文章《[springboot:使用异步注解@Async的那些坑》中介绍了使用@Async注解获取任务执行结果的错误用法,今天来分享下另外一种常见的错误。二、代码演示下面是我的controller的代码,package com.atssg.controller;import com.atssg.service.MyAsyncService;import lombok.extern.slf4j.Slf4j;import org.springframework.beans

2021-08-29 13:36:47 1213 2

原创 Redis应用场景及缓存问题

1.应用场景(1) 缓存缓存机制几乎在所有的大型网站都有使用,合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。Redis 提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航。(2) 排行榜系统排行榜系统几乎存在于所有的网站,例如按照热度排名的排行榜,按照发布时间的排行榜,按照各种复杂维度计算出的排行榜, Redis 提供了列表和有序集合数据结构,合理地使用这些数据结构可以...

2021-08-24 17:07:02 138

原创 从一次netty 内存泄露问题来看netty对POST请求的解析

背景最近生产环境一个基于 netty 的网关服务频繁 full gc观察内存占用,并把时间维度拉的比较长,可以看到可用内存有明显的下降趋势出现这种情况,按往常的经验,多半是内存泄露了问题定位找运维在生产环境 dump 了快照文件,一分析,果然不出所料,在一个 LinkedHashSet 里面, 放入 N 多的临时文件路径可以看到,该 LinkedHashSet 是被类 DeleteOnExitHook 所引用。DeleteOnExitHookDeleteOnExitHoo

2021-08-24 14:45:31 698 1

原创 Are You OK?主键、聚集索引、辅助索引

每张表都一定存在主键吗?关于这个问题,各位小伙伴们不妨先自己想一想,再往下寻找答案。首先公布结论:对于 InnoDB 存储引擎来说,每张表都一定有个主键(Primary Key)!让人非常遗憾的是,网络上至今仍然有非常多的文章是这样的描述:“一张表中必须有聚集索引,但不一定需要主键”。前半句是正确的,后半句是大错特错!对于 InnoDB 存储引擎来说,表采用的存储方式称为索引组织表(index organizedtable),也即表都是根据主键的顺序来进行组织存放的。如果主键都没有,

2021-08-23 14:40:00 74

原创 利用注解+反射消除重复代码,你学会了吗?

我们工作一定年限(3-5年),很多同学抱怨,业务开发没有什么技术含量,用不到设计模式,平时写代码都是CRUD,要么就是API调用,平常最多写一个单例模式,其他高级特性和设计模式根本没有用武之地今天举一个在工作中很常用的例子,假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串按照银行提供的 API 文档的顺序,把所有参数构成定长的数据,然后拼接在一起作为整个字符串。因为每一种参数都有固定长度,未达到长度时需要做填充处理字符

2021-08-20 19:56:49 164

原创 如何做一个逆波兰计算器

这是我参与8月更文挑战的第十三天,活动详情查看:8月更文挑战一、什么是逆波兰式(后缀表达式)逆波兰表达式又叫后缀表达式,中学时候学的那种表达式叫中缀表达式。例如,5×(6+3)÷3-1 , 3×(4÷(2+1)×2)-3例子中的这两个式子,就是中缀表达式。下面这两个就是后缀表达式:563+×3÷1- , 3421+÷2××3-二、要求1)输入一个逆波兰表达式(后缀表达式),使用栈(Stack),计算其结果2)支持小括号和多位数整数,因为这里我们主要讲的是数据结构,因此计算器进

2021-08-19 21:19:22 87

原创 使用Byte Buddy轻松实现Java Agent

Java agent是在另一个Java应用程序(“目标”应用程序)启动之前执行的Java程序,为该agent提供修改目标应用程序或其运行环境的机会。在本文中,我们将从基础知识开始,使用字节码操作工具Byte Buddy实现高级代理。在最基本的用例中,Java agent设置应用程序属性或配置特定的环境状态,从而使代理能够充当可重用和可插入的组件。下面的示例描述了这样一个代理agent,它设置了可供实际程序使用的系统属性:public class Agent { public static vo

2021-08-19 21:18:24 1598

原创 程序员都应该知道的开源在线表格应用

今天要和大家推荐一个强大的线上表格——Airtable。Airtable 是一个易于使用的在线平台,用于创建和共享关系数据库。用户界面简单、色彩丰富、友好,任何人都可以在几分钟内构建一个数据库。你可以存储、组织和协作处理任何信息,例如员工名录、产品清单等,有的人不会使用SQL和任何脚本,Airtable就非常适合。那么电子表格和数据库之间有什么区别呢?乍一看,数据库看起来很像电子表格,带有网格线和标签页。你可以像在电子表格中一样按行和组织数据。这就是相似之处,在电子表格中,你将使用诸如=SU

2021-08-19 21:12:41 819

原创 Let‘s Encrypt泛域名使用和Nginx配置拆分

本来 Let's Encrypt 泛域名使用、Nginx 配置拆分是准备分成两篇文章来写的,可是两篇文章又感觉篇幅过短和冗余。所以最后决定写在一篇里面吧,同时把整个流程写明白,之前有人问有了证书怎么搭配 Nginx 来配置,这篇从域名映射到Nginx配置完成的保姆级教程,小二求个点赞不过分吧。一、SSL证书获取写在最前面,使用过程中如有问题参考acme官方文档,文档有中文说明,如果有报错可以查看 Issuse,当然也可以留言你碰到的问题。如果你已经有证书了,直接访问第二步 域名映射配置 ..

2021-08-19 20:35:01 325

原创 SpringBoot - 集成Auth0 JWT

前言说说JWT,先说下互联网服务常见的两种用户认证方式:session认证与Token认证session认证传统的Session认证的大体流程可以表示为用户提供用户名和密码登录后由服务器存储一份用户登录信息并传递给浏览器保存为Cookie,并在下次请求中根据Cookie来识别用户,但这种方式缺陷明显:Session都是保存在内存中,随着认证用户的增多,服务端的开销明显增大 保存在内存中的Session限制了分布式的应用 Cookie容易被截获伪造Token认证Token 泛

2021-08-19 20:33:26 2067

原创 基于AOP和HashMap原理学习,开发Mysql分库分表路由组件!

作者:小傅哥 博客:https://bugstack.cn>沉淀、分享、成长,让自己和他人都能有所收获!:smile:一、前言什么?Java 面试就像造火箭:rocket:单纯了!以前我也一直想 Java 面试就好好面试呗,嘎哈么总考一些工作中也用不到的玩意,会用Spring、MyBatis、Dubbo、MQ,把业务需求实现了不就行了!但当工作几年后,需要提升自己(要加钱)的时候,竟然开始觉得自己只是一个调用 API 攒接口的工具人。没有知识宽度...

2021-08-18 16:40:53 131

原创 作为有经验的程序员如果不懂Lambda表达式就说不过去了吧,建议收藏!!!

最近刚好有空给大家整理下JDK8的特性,这个在实际开发中的作用也是越来越重了,本文重点讲解下Lambda表达式Lambda表达式Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。1. 需求分析创建一个新的线程,指定线程要执行的任务public static void main(String[] args) {

2021-08-18 14:56:09 105

原创 基于微服务架构开发在线教育网站

项目介绍 本项目采用前后端分离开发,其中后端技术栈SpringBoot作为快速开发框架;SpringCloud作为微服务架构框架;Nacos-服务发现、分布式配置;Feign-服务调用;Hystrx-熔断器;GateWay-服务网关;Redis作为非关系型数据库为短信验证码、主页数据缓存等提供数据存储;MyBatis-Plus作为持久层框架。前端技术栈Vue作为前端开发框架;Element-ui作为后台管理系统模板框架;nodejs作为JavaSc..

2021-08-18 14:34:48 948 1

原创 不懂Ribbon原理的可以进来看看哦,分析SpringBoot自动装配完成了Ribbon哪些核心操作

  前面详细的给大家介绍了SpringBoot的核心内容,有了这部分的基础支持的话,我们再来分析SpringCloud中的相关组件就很容易了,本文我们来给大家开始介绍Ribbon的相关内容,首先来介绍下Ribbon项目在启动的时候完成了哪些操作。一、项目案例准备  首先我们搭建案例环境,通过【RestTemplate】来实现服务调用,通过【Ribbon】实现客户端负载均衡操作。1.Order服务  我们的Order服务作为服务提供者。创建SpringBoot项目,并添加相关依赖..

2021-08-18 13:55:26 152

原创 教你快速从SQL过度到Elasticsearch的DSL查询

前言Elasticsearch太强大了,强大到跟python一样,一种查询能好几种语法。其实我们用到的可能只是其中的一部分,比如:全文搜索。我们一般是会将mysql的部分字段导入到es,再查询出相应的ID,再根据这些ID去数据库找出来。问题来了:数据导入到es后,很多人都要面对这个es的json查询语法,也叫DSL,如下于是一堆新词来了,比如:filter、match、multi_match、query、term、range,容易让没学过的人抵触。如果正常开发业务的程序员,只关心原先

2021-08-18 13:48:34 440

原创 深入理解Https如何保证通信安全

作为一名ABC搬运工,我相信很多人都知道Https,也都知道它是用来保证通信安全的,但是如果你没有深入了解过Https,可能并不知道它是如何保证通信安全的。我也是借着这次机会,和大家分享下我深入了解的一个过程。本文主要带着以下几个问题进行探讨:1、什么是Https?2、Https和Http有什么区别?3、Https是如何保证通信安全的,它解决了哪些问题?1.离不开的Https基础理论HTTPS是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的

2021-08-13 19:45:37 429

原创 神奇的 SQL 之别样的写法 → 行行比较

开心一刻  昨晚我和我爸聊天  我:“爸,你怎么把烟戒了,也不出去喝酒了,是因为我妈不让,还是自己醒悟,开始爱惜自己啦?”  爸:“儿子啊,你说的都不对,是彩礼又涨价了。”  我:“你不是有媳妇了吗?”  爸:“我有,可你没有啊!”  我:“爸,我长大了不娶媳妇,好好孝敬您!”  爸:“臭小子,你想的美,我一定要给你娶媳妇,让你的孩子也好好折腾你,让你也体会一下有一个不争气的儿子是什么感受!”  我:“......”环境准备  数据库版本:MySQL 5.7.2.

2021-08-13 13:30:23 157

原创 给我一首歌的时间,彻底搞懂Kafka!

1、为什么有消息系统1、解耦合2、异步处理例如电商平台,秒杀活动。一般流程会分为:风险控制 库存锁定 生成订单 短信通知 更新数据通过消息系统将秒杀活动业务拆分开,将不急需处理的业务放在后面慢慢处理;流程改为:风险控制 库存锁定 消息系统 生成订单 短信通知 更新数据3、流量的控制3.1 网关在接受到请求后,就把请求放入到消息队列里面3.2 后端的服务从消息队列里面获取到请求,完成后续的秒杀处理流程。然后再给用户返回结果。优点:控制了流量 缺点

2021-08-13 13:25:23 164

原创 动态规划你学会了吗?

动态规划一直被认为是最难理解的一种算法思想,什么重叠子问题、动态转移方程、最优子结构等等,一听就高深莫测,没有往下学习下去的动力。接下了我会更新一系列的文章来把动态规划这个算法思想尽量去讲明白,希望对你在以后的学习生活中提供一些帮助。没有关注的同学先点个关注吧。一、初识动态规划废话不多说,我们直接先上一个经典的例子。那就是耳熟能详的斐波那契数列问题。我们先来看一下问题的定义。斐波那契数列的定义如下: 斐波那契数列指的是这样一个数列 0,1, 1, 2, 3, 5, 8, 13, 21,

2021-08-13 13:23:50 171

原创 程序员在小公司捞钱,还是去大公司卷?

经常有很多读者问我大公司和小公司的程序员差别在哪?程序员能去小公司吗?大公司、小公司我都待过,今天就和大家说说我的经历,先从小公司说起。之前文章说过,我的第一份工作是在一家北京的小公司做程序员,全公司一共 6、7 个人,最开始大家都挤在一间十几平米的屋子里,到我两年后离职的时候,条件改善了,搬到了一个两居室里。公司里算上我一共 3 个程序员,其他人都是销售。销售出去接项目,程序员负责开发项目。小公司做项目,要求你啥都得干,我在公司的两年多里,我参与的几个项目都是我一个人完成的。比

2021-08-12 15:04:43 304

原创 Java 14 新功能介绍(细节狂魔)

Java 14 早在 2019 年 9 月就已经发布,虽然不是长久支持版本,但是也带来了不少新功能。Java 14 官方下载:https://jdk.java.net/archive/Java 14 官方文档:https://openjdk.java.net/projects/jdk/14/Java 14 新功能:305: instanceof 类型判断(预览) 343: 打包工具(孵化) 345: G1 支持 NUMA(非统一内存访问) 358: 更有用的 NullPointer..

2021-08-12 14:36:19 131

原创 这个 Redis 连接池的新监控方式针不戳~我再加一点佐料

Lettuce 是一个 Redis 连接池,和 Jedis 不一样的是,Lettuce 是主要基于 Netty 以及 ProjectReactor 实现的异步连接池。由于基于 ProjectReactor,所以可以直接用于 spring-webflux 的异步项目,当然,也提供了同步接口。在我们的微服务项目中,使用了Spring Boot 以及 Spring Cloud。并且使用了 spring-data-redis 作为连接 Redis 的库。并且连接池使用的是 Lettuce。同时,我们线上的...

2021-08-12 14:13:26 276

原创 获取异常信息里再出异常就找不到日志了,我TM人傻了

最近组里用第三方给的 SDK 搞了点开发,最近线上突然开始报错,并且发现一个特别奇怪的问题,组员和我说,代码运行到一半不走了,跳过了一段(这代码是刚参加东奥会参加跳远么???)。代码如下,逻辑非常简单:try { log.info("initiate client with conf: {}", conf); SDKClient client = new SDKClient(conf); client.init(); log.info("client init.

2021-08-12 14:00:05 441

原创 SpringBoot 如何进行参数校验,老油条都这么玩的

来聊聊在SprinBoot中如何集成参数校验Validator,以及参数校验的高阶技巧(自定义校验,分组校验)。此文是依赖于前文的代码基础,已经在项目中加入了全局异常校验器。(代码仓库在文末)首先我们来看看什么是Validator参数校验器,为什么需要参数校验?为什么需要参数校验在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,例如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。靠代码对接口参数一个个校验的话就...

2021-08-12 13:58:18 266

空空如也

空空如也

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

TA关注的人

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