全部后端前端产品运维设计测试开发者客栈
最新 最热 官方 加精

Qbian | 2022-11-09 | 开发者客栈

TODO(待办)新功能上线啦 !!! 🎉🎉🎉

地址:[https://www.developers.pub/todo/doing](https://www.developers.pub/todo/doing) 使用场景 生活中 帮忙取快递提醒:下班路过小区快递点,帮家人取个快递,家人可以分配个任务给你,在你快到家的时间定时提醒不要忘记; 重要日期提醒:生活中重要的时刻(生日、纪念日等),可以提前创建好任务,做好定时提醒别错过; 待办事项提醒:生活中看到的一些好看的电影,记录下来周末找个完整的时间刷一刷; 记录想法:生活中随时冒出来的一些奇思妙想,可能过会就会忘掉,可以快速记录下来,事后回顾; 工作中 自动生成日报并推送:工作中每天都需要写日报,可以把当天的工作罗列出来,当天工作内容更明确,效率更高,下班点还会自动生成并推送日报; 自动生成周报并推送:工作中每周都需要写周报,本周完成的工作,在本周结束后,自动生成周报并推送,高效快捷,还不会遗忘; 工作内容定期回顾总结:自定义时间范围,项目标签等统计任务,做工作复盘总结,不断反思进步; 功能列表 个人使

 5687 |  17 |  65 开发者客栈

青木 | 19小时前 | 后端相关Spring 全家桶

SpringBoot整合新版Spring Security:Lambda表达式配置更优雅

Spring Security 是保障Spring应用程序安全的强大框架,而新版的Spring Security引入了lambda表达式来配置,使得安全配置更加简洁、优雅。本文将介绍如何在Spring Boot项目中整合新版Spring Security,并通过lambda表达式进行安全配置,提供更好的开发体验。 1. 引言 Spring Security是一个用于身份验证和授权的框架,它提供了一套全面的安全服务,可轻松集成到Spring应用程序中。新版Spring Security引入了lambda表达式的配置方式,取代了之前的繁琐XML配置和方法调用链式配置,使得配置更加清晰、简洁。 2. 项目依赖配置 首先,确保你的Spring Boot项目中包含了Spring Security的依赖。在pom.xml中添加以下依赖: <!-- Spring Security - <dependency     <

 16 |  0 |  0 后端相关Spring 全家桶

OOM | 19小时前 | Java

实现一款高可用的 TCP 数据传输服务器(Java版)

1.netty能做什么 首先netty是一款高性能、封装性良好且灵活、基于NIO(真·非阻塞IO)的开源框架。可以用来手写web服务器、TCP服务器等,支持的协议丰富,如:常用的HTTP/HTTPS/WEBSOCKET,并且提供的大量的方法,十分灵活,可以根据自己的需求量身DIV一款服务器。 用netty编写TCP的服务器/客户端 1.可以自己设计数据传输协议如下面这样: 图片 2.可以自定义编码规则和解码规则 3.可以自定义客户端与服务端的数据交互细节,处理socket流攻击、TCP的粘包和拆包问题 2.Quick Start 创建一个普通的maven项目,不依赖任何的三方web服务器,用main方法执行即可。 图片 加入POM依赖 <!--net

 5 |  0 |  0 Java

女王范 | 19小时前 | Vue前端相关

VUE中常用的4种高级特性!

1. provide/inject provide/inject 是 Vue.js 中用于跨组件传递数据的一种高级技术,它可以将数据注入到一个组件中,然后让它的所有子孙组件都可以访问到这个数据。通常情况下,我们在父组件中使用 provide 来提供数据,然后在子孙组件中使用 inject 来注入这个数据。 使用 provide/inject 的好处是可以让我们在父组件和子孙组件之间传递数据,而无需手动进行繁琐的 props 传递。它可以让代码更加简洁和易于维护。 但需要注意的是,provide/inject 的数据是非响应式的,这是因为provide/inject是一种更加底层的 API,它是基于依赖注入的方式来传递数据,而不是通过响应式系统来实现数据的更新和同步。 具体来说,provide方法提供的数据会被注入到子组件中的inject属性中,但是这些数据不会自动触发子组件的重新渲染,如果provide提供的数据发生了变化,子组件不会自动感知到这些变化并更新。 如果需要在子组件中使用provide/inject提供的数据,并且希望这些数据能够响应式地更新,可以考虑使用V...

 15 |  0 |  0 Vue前端相关

念旧。 | 1天前 | JavaScript前端相关

JavaScript 最新动态:2024 年新功能

前言 随着 Web 技术的日新月异,JavaScript 也在不断地吸收新的特性和技术,以满足日益复杂和多样化的开发需求。在 2024 年,JavaScript 迎来了一系列令人瞩目的新功能,这些功能不仅提升了开发者的效率,也极大地丰富了 Web 应用的表现力和交互性。 在接下来的内容中,我们将逐一介绍这些新功能,并探讨它们如何在实际开发中发挥作用,以及它们如何继续引领前端开发的未来。 Object.groupBy ❝它是一个新的 JavaScript 方法,它可以根据提供的回调函数返回的字符串值对给定可迭代对象中的元素进行分组。返回的对象具有每个组的单独属性,其中包含组中的元素的数组。 当我们想要根据数组中对象的一个或多个属性的名称对数组元素进行分类时,此方法非常有用。 语法 Object.groupBy(items, callbackFn) 参数 items :一个将进行元素分组的可迭代对象 callbackFn :对可迭代对象中的每个元素执行的函数。它应该返回一个值,可以被强制转换成属性键(字符串或 s

 21 |  1 |  0 JavaScript前端相关

奈我何 | 1天前 | 前端相关

前端接口防止重复请求实现方案

前言 前段时间老板心血来潮,要我们前端组对整个的项目都做一下接口防止重复请求的处理(似乎是有用户通过一些快速点击薅到了一些优惠券啥的)。。。听到这个需求,第一反应就是,防止薅羊毛最保险的方案不还是在服务端加限制吗?前端加限制能够拦截的毕竟有限。可老板就是执意要前端搞一下子,行吧,搞就搞吧, you happy jiu ok 。 虽然大部分的接口处理我们都是加了 loading 的,但又不能确保真的是每个接口都加了的,可是如果要一个接口一个接口的排查,那这维护了四五年的系统,成百上千的接口肯定要耗费非常多的精力,根本就是不现实的,所以就只能去做 全局处理 。下面就来总结一下这次的防重复请求的实现方案: 方案一 这个方案是最容易想到也是最 朴实无华 的一个方案:通过使用axios拦截器,在 请求拦截器 中开启全屏Loading,然后在 响应拦截器 中将Loading关闭。 这个方案固然已经可以满足...

 17 |  0 |  0 前端相关

流苏 | 1天前 | JavaScript前端相关

这些强大的 JS 操作符,你都知道吗?

JavaScript 为我们提供了很多操作符,用于操作表达式。下面就来盘点一下 JavaScript 中那些强大的操作符! 一、一元操作符 操作符可以根据他们期待的操作符个数来分类,多数的JavaScript操作符都是二元操作符,二元操作符可以将两个表达式合成一个更复杂的表达式。JavaScript也支持一元操作符,这些操作符可以将一个表达式转化为另一个更复杂的表达式。同时,JavaScript中也有一个三元操作符,就是条件操作符(?:),它用于将三个表达式组成一个表达式。下面就先来看看一元操作符。 一元操作符具有以下特点: 最简单的操作符,用来操作一个表达式; 具有高优先级和右结合性; 在必要时将操作数自动转化为数值。 1. 递增和递减操作符( --) 递增操作符顾名思义就是递增其操作数,递减操作符就是递减其操作数。它们都有两个版本: 前缀版( i):操作符位于变量的前面,表示先递增(递减),后

 13 |  0 |  0 JavaScript前端相关

柚香 | 2天前 | 后端相关Java

Java服务优雅上下线

在项目升级的时候,需要干掉旧的项目,然后启动一个新的项目。在这个过程中往往会出现服务的不可用,那么我们如何最大限度的做到发布的优雅,尽可能让我们升级的这个过程不影响到线上正在运行的业务?下面我将介绍几种不同的架构模式下Java项目的优雅上下线。 1. 背景 在项目升级的时候,需要干掉旧的项目,然后启动一个新的项目。在这个过程中往往会出现服务的不可用,那么我们如何最大限度的做到发布的优雅,尽可能让我们升级的这个过程不影响到线上正在运行的业务?这时我们就需要实现服务的优雅上下线。 2. 名词解释 服务的优雅上下线就是保证服务的稳定可用,避免流量中断,导致业务不可用。 优雅上线其实就是等服务启动完全就绪后,对外提供服务,也叫无损发布,延迟暴露,服务预热。 优雅下线其实就是在服务收到停机指令(kill -15 pid 或 kill -2 pid 或 kill -1 pid)后,要先到注册中心注销,拒绝新的请求后,将旧的业务处理完成。 3. 实现 3.1 单体项目 对于单体项目而言,优雅上下线比较容易,涉及不到服务间错综复杂的调用,我们只需要保证入口...

 22 |  0 |  0 后端相关Java

iron Man | 2天前 | 后端相关Java

从Java到json:探索 Jackson 的魔力

引言 Jackson简介 Jackson是一个用于处理JSON数据的开源Java库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于计算机解析和生成。在Java领域,Jackson已经成为处理JSON数据的事实标准库。它提供了丰富的功能,包括将Java对象转换为JSON字符串(序列化)以及将JSON字符串转换为Java对象(反序列化)。 Jackson主要由三个核心包组成: 1. jackson-databind:提供了通用的数据绑定功能(将Java对象与JSON数据相互转换) 2. jackson-core:提供了核心的低级JSON处理API(例如JsonParser和JsonGenerator) 3. jackson-annotations:提供了用于配置数据绑定的注解 为什么选择Jackson 尽管Java生态系统中有其他处理JSON数据的库(如Gson和JSON-java),但Jackson仍然是许多开发者的首选,原因包括: 1. 性能:Jackson性能优越,对内存和CPU的...

 19 |  0 |  0 后端相关Java

花小染 | 2天前 | 后端相关Redis

Redis缓存预热,该如何实现?

什么是缓存预热? 缓存预热是一种在程序启动或缓存失效之后,主动将热点数据加载到缓存中的策略。 这样,在实际请求到达程序时,热点数据已经存在于缓存中,从而减少了缓存穿透和缓存击穿的情况,也缓解了 SQL服务器 的压力。 实现 缓存抽象类 首先我们先来实现一个缓存抽象类,这个抽象类的作用就是在将来我们需要将某个模块的数据需要提前加载到缓存中的时候,我们可以创建一个它的实现类,来进行数据的缓存与加载,具体使用方式请看后边我写的例子。 public abstract class AbstractCache {     /        缓存       /     protected abstract void init();     /        获取缓存              @param <T        @return       /     public abstract <T  T get();     /        清理缓存       /     public abstract void clear

 22 |  0 |  0 后端相关Redis

孤音 | 5天前 | 后端相关Spring 全家桶

玩转 Spring 状态机:更优雅的实现订单状态流转

说起 Spring 状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring 状态机就是状态模式的一种实现,在介绍 Spring 状态机之前,让我们来看看设计模式中的状态模式。 1. 状态模式 状态模式的定义如下: “状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态发生变化时改变其行为。在状态模式中,一个对象的行为取决于其当前状态,而且可以随时改变这个状态。状态模式将对象的状态封装在不同的状态类中,从而使代码更加清晰和易于维护。当一个对象的状态改变时,状态模式会自动更新该对象的行为,而不需要在代码中手动进行判断和处理。 通常业务系统中会存在一些拥有状态的对象,而且这些状态之间可以进行转换,并且在不同的状态下会表现出不同的行为或者不同的功能,比如交通灯控制系统中会存在红灯、绿灯和黄灯,再比如订单系统中的订单会存在已下单、待支付、待发货、待收货等状态,这些状态会通过不同的行为进行相互转换,这时候在系统设计时就可以使用状态模式。 下面是状态模式的类图: ![图片](https://static.develo...

 36 |  0 |  0 后端相关Spring 全家桶

孤音 | 5天前 | 数据库MySQL

不引入ES,如何利用MySQL实现模糊匹配?

1. 业务场景概述 目标是实现一个公司的申请审批流程,整个业务流程涉及到两种角色,分别为 商务 角色与 管理员 角色。整个流程如下图所示: 流程图 核心流程总结为一句话: 商务角色申请添加公司后由管理员进行审批 。 商务在添加公司时,可能为了方便,直接填写公司简称,而公司全称可能之前已经被添加过了, 为了防止添加重复的公司 ,所以管理员在针对公司信息审批之前,需要查看以往添加的公司信息里有无同一个公司。 2. 实现思路 以上是一个业务场景的大概介绍。从技术层面需要考虑实现的功能点: 分词 与库里已有数据进行匹配 按照匹配度对结果进行排序 分词功能有现成的分词器,所以整个需求的核心重点在于 如何与数据库中的数据匹配并按照匹配度排序 。 3. 模糊匹配技术选型 方案一: 引入ES 方案二: 利用MySQL实现 本系统规模较小,单纯...

 31 |  0 |  0 数据库MySQL

观云 | 5天前 | 后端相关前端相关

为什么前后端都需要进行数据校验?

一、引言 在现代的 Web 应用开发中,前后端数据校验是确保系统安全、 数据完整性 和用户体验的关键步骤。 通过在前后端各个环节对数据进行验证,我们可以有效地防止恶意攻击、保证数据的准确性,并提高用户满意度。 本文将从以下方面详细介绍为什么前后端都需要进行 数据校验 ,以及他们都应该做什么内容。 二、前端校验的内容 在前端开发中,以下是一些必要的校验,以确保数据的有效性和安全性♘: 1、 必填字段校验 :对于必填的字段,需确保用户输入了有效的数据。可以检查字段是否为空或仅包含空格等无效字符。 2、 数据格式校验 :根据字段的预期格式,验证用户输入的数据是否符合要求。例如,对于邮箱字段,可以使用正则表达式验证邮箱格式的正确性。 3、 数字范围校验 ...

 35 |  0 |  0 后端相关前端相关

大牛猫 | 6天前 | 后端相关Spring 全家桶

SpringBoot 实现 PDF 添加水印,这五种方案送上!

简介 PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。 “本文将介绍如何使用 Spring Boot 来实现 PDF 添加水印的方式。PS:当然,只是笔者使用Spring Boot 测试,Java代码均可实现,并不是非要在 spring Boot 上实现哦! 方式一:使用 Apache PDFBox 库 PDFBox 是一个流行的、免费的、用 Java 编写的库,它可以用来创建、修改和提取 PDF 内容。PDFBox 提供了许多 API,包括添加文本水印的功能。 1. 添加 PDFBox 依赖 首先,在 pom.xml 文件中添加 PDFBox 的依赖: <dependency     <groupId org.apache.pdfbox</groupId     <artifactId pdfbox</artifactId     <version 2.0.

 33 |  0 |  0 后端相关Spring 全家桶

蔡文姬 | 6天前 | 后端相关Java

强烈建议你不要再使用Date类了!!!

一、有什么问题吗java.util.Date? java.util.Date (Date从现在开始)是一个糟糕的类型,这解释了为什么它的大部分内容在 Java 1.1 中被弃用(但不幸的是仍在使用)。 设计缺陷包括: 它的名称具有误导性: 它并不代表一个日期,而是代表时间的一个瞬间。所以它应该被称为Instant——正如它的 java.time 等价物一样。 它是非最终的: 这鼓励了对继承的不良使用,例如 java.sql.Date (这意味着代表一个日期,并且由于具有相同的短名称而也令人困惑) 它是可变的: 日期/时间类型是自然值,可以通过不可变类型有效地建模。可变的事实Date(例如通过setTime方法)意味着勤奋的开发人员最终会在各处创建防御性副本。 它在许多地方(包括)隐式使用系统本地时区, toString() 这让许多开发人员感到困惑。有关此内容的更多信息,请参阅“什么是即时”部分 它的月份编号是从 0 开始的,是从 C 语言复制的。这导致了很多很多相差一的错误。 它的年份编号是基于 1900 年...

 41 |  0 |  0 后端相关Java

布朗熊 | 6天前 | 后端相关Spring 全家桶Redis

SpringBoot+Redis自定义注解实现发布订阅

前言 最近开发了一个内部消息组件,逻辑大体是通过定义注解 @MessageHub ,在启动时扫描全部bean中有使用了该注解的方法后台创建一个常驻线程代理消费数据,当线程消费到数据就回写到对应加了注解的方法里。 @Slf4j @Service public class RedisConsumerDemo {     @MessageHub(topic = "${uptown.topic}", type = "REDIS_PUBSUB")     public void consumer(Object message) {         log.info("pubsub info {} ", message);     }    } 实现redis的队列、stream方式实现都很简单,唯独发布订阅方式,网上的demo全都是一个固定套路,通过redis容器注入监听器,而且回写非常死板。那么如何将这块的逻辑统一呢。 之前总结过消息组件的代码设计,这里贴一下链接: “https://juejin.cn/post/7204113113699729463

 34 |  0 |  0 后端相关Spring 全家桶

追风少年 | 1周前 | 后端相关Spring 全家桶

SpringBoot+ElasticSearch实现文档内容抽取、高亮分词、全文检索

需求 产品希望我们这边能够实现用户上传PDF、WORD、TXT之内得文本内容,然后用户可以根据附件名称或文件内容模糊查询文件信息,并可以在线查看文件内容。 一、环境 项目开发环境: 后台管理系统springboot+mybatis_plus+mysql+es 搜索引擎:elasticsearch7.9.3 +kibana图形化界面 二、功能实现 1.搭建环境 es+kibana的搭建这里就不介绍了,网上多的是 后台程序搭建也不介绍,这里有一点很重要,Java使用的连接es的包的版本一定要和es的版本对应上,不然你会有各种问题 2.文件内容识别 第一步: 要用es实现文本附件内容的识别,需要先给es安装一个插件: Ingest Attachment Processor Plugin 这知识一个内容识别的插件,还有其它的例如OCR之类的其它插件,有兴趣的可以去搜一下了解一下 Ingest Attachment Processor Plugin 是一个文本抽取插件,本质上是利用了Elasticsearch的ing...

 40 |  0 |  0 后端相关Spring 全家桶

渣渣辉 | 1周前 | CSS前端相关

CSS 实现居左到居右过渡变化的一些思路

介绍一些看似简单又不是那么容易的过渡小技巧。 很多 CSS 属性其实是不支持过渡变化的,例如 flex 中的对齐 <pre data-line="7" <section <span </span <span </span <span </span </section <code data-line="7" <span <span justify-content</span <span :</span start | center | end<br/ </span </code </pre 或者是文本对齐 <pre data-line="13" <section <span </span <span </span <span </span </section <code data-line="13" <span <span text-align</span <span :</span left | center | right<br/ </span </code </pre 这样属性在变化时是没有过渡动画的,但有时又需要这样的动效,比如下面这个效果 ![图片](h...

 38 |  0 |  0 CSS前端相关

雨馨 | 1周前 | 后端相关Spring 全家桶

实现 SpringBoot 程序加密,禁止 jadx 反编译

背景 toB 的本地化 java 应用程序,通常是部署在客户机器上,为了保护知识产权,我们需要将核心代码(例如 Lience,Billing,Pay 等)进行加密或混淆,防止使用 jadx 等工具轻易反编译。同时,为了更深层的保护程序,也要防止三方依赖细节被窥探; 业界方案 1.ProGuard^[1]^ 简介:开源社区有名的免费混淆工具,相较于字节码加密,对性能基本无影响; 优势:打包阶段混淆字节码,各种变量方法名都变成了abcdefg 等等无意义的符号,字节码可被反编译,但几乎无法阅读,通常被 Android App 用来防止逆向; 不足1:只能混淆部分代码,打包阶段较为耗时,对于三方包混淆,并没有什么好办法。 不足2:混淆后的代码,会影响 arthas 工具的使用,导致排查问题变慢。 不足3:配置比较复杂,曾经在我司 T 项目上用过,令人眼花缭乱。 不足4:无法加密三方依赖所有信息; 2.jar-protect^[2]^ 简介:一款国人开发的 springboot jar 加密工具;需要配合 javaagent 解密; 优...

 35 |  0 |  0 后端相关Spring 全家桶

一纸荒年 | 1周前 | 后端相关Spring 全家桶

在 SpringBoot 中设计一个订单号生成系统

在Spring Boot中设计一个订单号生成系统,主要考虑到生成的订单号需要满足的几个要求:唯一性、可扩展性、以及可能的业务相关性。以下是几种常见的解决方案及相应的示例代码: 1. UUID 最简单的方法是使用UUID生成唯一的订单号。UUID(Universally Unique Identifier)是一种广泛使用的标识符,由128位组成,通常以32个十六进制数字表示,分为五组,形式为8-4-4-4-12的字符串,例如 123e4567-e89b-12d3-a456-426614174000 。 UUID全球唯一,实现简单,但缺点是UUID较长,不易记忆和存储。 实例代码 Java中生成UUID的示例代码如下: import java.util.UUID; public class UUIDGenerator {     public static String generateUUID() {         // 生成一个UUID         UUID uuid = UUID.randomUUID();                

 48 |  0 |  0 后端相关Spring 全家桶

推荐标签 🏷️

后端相关 前端相关 Java JavaScript Spring 全家桶 算法 数据库 Redis