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

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

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

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

 5802 |  17 |  65 开发者客栈

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

炫技Groovy!SpringBoot中的动态编程实战

Groovy简介 Groovy 是增强 Java 平台的唯一的脚本语言。它提供了类似于 Java 的语法,内置映射(Map)、列表(List)、方法、类、闭包(closure)以及生成器。脚本语言不会替代系统编程语言,两者是相互补充的。 大名鼎鼎的 Gradle,背后是 Groovy。Spring 的未来越来越多的使用 Groovy,甚至在用 Jira 跟踪项目时,背后也有 Groovy。 实际上,就应用场景而言,Java 开发已经有越来越多的 Groovy 出现在后台了。而对于一般的应用开发,只要能用 Java 就都能用到 Groovy,唯一的难点只在于能不能招到足够的人员。 应用场景 连接已有的组件 处理经常变化的多种类型的实体 具有图形化用户界面 拥有快速变化的功能 “注:今天我们分享的就是利用Groovy脚本在SpringBoot项目中实现动态编程,使业务逻辑的动态化,极大地提升了开发效率和灵活性。 集成与使用 那么接下来介绍SpringBoot如何集成Groovy脚本,并应用到实际开发中。 第一步、与Sprin...

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

观云 | 5小时前 | JavaScript前端相关

Threejs多场景切换的过渡效果

在上一篇文章全景预览中,我们通过 Threejs 使用多种方式实现了全景预览的效果,以及俯瞰效果的场景动画,但是这都是在单个场景中实现的;也有读者评论说讲一下多场景下的场景过渡效果是如何实现的,那么本文我们就来学习一下多场景的过渡效果。 在实现多场景前,我们先来了解three.js中一个重要的概念: 离屏渲染 ;只有理解了这个概念,我们才能够在后续实现多场景的过渡效果。 ❝本文的全景过渡效果可以点击https://gallery.xieyufei.com/case/panorama/multi查看 ❞ 离屏渲染 离屏渲染指的是将渲染结果暂时存在GPU内部的帧缓存中,而不是直接显示在画布上,这样做的好处是可以对渲染结果进行后期处理,如添加滤镜、反射折射、当成纹理应用在几何体等等。 在three.js中,一共有3种离屏渲染的类: WebGLMultisampleRenderTarget WebGLCubeRenderTarget WebGLRenderTarget 在普通的渲染中,我们把scene场景保存到canvas画布的默认帧缓冲区,也就...

 4 |  0 |  0 JavaScript前端相关

大牛猫 | 5小时前 | JavaScript

框架中的类型编程(三):ElysiaJS 的链式调用与错误处理

这是专栏「框架中的类型编程」的第三篇内容,你可以在 Framework Typings 或 笔者的个人博客 找到前两篇内容,在之前的内容里我们介绍了 Prisma 、tRPC 以及 Hono 中的类型编程,还顺便对 TypeScript 中的「模板字符串类型」进行了展开介绍。如果你已经理解了此前介绍的类型编程,那么在阅读本篇对 ElysiaJS 的介绍时,也不会理解得更快(摊手,毕竟本篇我们简化过的类型编程代码仍然有100+ 行,比之前三个框架的实现加起来都多。 简单介绍下 ElysiaJS ,它是一个基于 Bun 的服务端框架,号称比 Express 快 21 倍,同时还提供了非常棒的类型安全,你可以在 ElysiaJS 上同时找到 Hono 的路由参数提取(从 /user/:id 分析出参数类型为 { id: number } )与 tRPC 的 Schema Validation(使用 z.object() 创建输入输出类型 ),还有一些将在这篇文章里介绍的新的东西。 来看一张官网的宣传图片,揣摩揣摩图里都有哪些神奇的黑科技? ![图片](https://...

 4 |  0 |  0 JavaScript

蔡文姬 | 1天前 | CSS前端相关

借助CSS has实现打开弹窗时自动锁定滚动

分享一个 CSS 小技巧 在平时开发中,经常会遇到这样一种问题:当打开一个弹窗时,后面的页面是可以滚动的,演示如下 那么,该如何锁定页面的滚动呢? 一、传统的实现方式 传统的方式其实也不复杂,就是在打开弹窗时阻止滚动就行了,通常是改变 overflow 属性 <pre data-line="21" <section <span </span <span </span <span </span </section <code data-line="21" <span <span const</span <span openModal</span <span =</span <span (</span <span )</span <span = </span <span {</span <br/ </span <span <span document</span <span .</span <span body<...

 13 |  0 |  0 CSS前端相关

布朗熊 | 1天前 | Linux

我为什么使用 Linux 做开发?

系统选择 目前市面上主流的桌面操作系统在大多数人眼里只有Windows和MacOS,那为什么我没选择它们两呢? 首先,不选MacOS的原因,就是太贵。当然这是我的原因不是苹果的原因,我最早使用Linux写代码的时候是2018年,那时候刚毕业上班不久,根本买不起Mac(虽然现在也觉得有点贵)。 在没有接触Linux之前,我也是使用Winows的。众所周知,其实Windows也是收费的,那时候用的基本是破解版本的Windows系统。虽然当时买笔记本电脑会预装Windows系统,但是预装的基本都是家庭版。 依稀记得当时Windows家庭版无法开启某些Windows功能(没记错的话当时是无法开启Windows的虚拟化功能),所以就算我买了预装Windows系统的笔记本电脑,依然还是需要自行重装Windows专业版系统,那时候就是使用激活软件破解Windows专业版。 但是作为程序员,我个人是不喜欢去破解软件的,因为我不想以后我写的软件也被别人破解。然后在某些机缘巧合之下,我加入了一些Linux爱好者社区,慢慢开始接触 Linux桌面 。 重新认识Linux 我第...

 11 |  0 |  0 Linux

追风少年 | 1天前 | Java后端相关

常见 Java 代码缺陷及规避方式

问题列表 空指针异常 NPE 或许是编程语言中最常见的问题,被 Null 的发明者托尼·霍尔(Tony Hoare)称之为十亿美元的错误。在 Java 中并没有内置的处理 Null 值的语法,但仍然存在一些相对优雅的方式能够帮助我们的规避 NPE。 使用 JSR-305/jetbrain 等注解 1. NotNull 2. Nullable 通过在方法参数、返回值、字段等位置显式标记值是否可能为 Null,配合代码检查工具,能够在编码阶段规避绝大部分的 NPE 问题,建议至少在常用方法或者对外 API 中使用该注解,能够对调用方提供显著的帮助。 用 Optional 处理链式调用 Optional 源于 Guava 中的 Optional 类,后 Java 8 内置到 JDK 中。Optional 一般作为函数的返回值,强制提醒调用者返回值可能不存在,并且能够通过链式调用优雅的处理...

 13 |  0 |  0 Java后端相关

渣渣辉 | 4天前 | 数据库MySQL

MySQL 模糊查询再也不用like+%了

前言 我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多。 例如,搜索引擎需要根基用户数据的关键字进行全文查找,电子商务网站需要根据用户的查询条件,在可能需要在商品的详细介绍中进行查找,这些都不是 B+ 树索引能很好完成的工作。 通过数值比较,范围过滤等就可以完成绝大多数我们需要的查询了。但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较,全文索引就是为这种场景设计的。 全文索引(Full-Text Search)是将存储于数据库中的整本书或整篇文章中的任意信息查找出来的技术。它可以根据需要获得全文中有关章、节、段、句、词等信息,也可以进行各种统计和分析。 在早期的 MySQL 中,InnoDB 并不支持全文检索技术,从 MySQL 5.6 开始,InnoDB 开始支持全文检索 倒排索引 全文检索通常使用倒排索引(inverted index)来实现,倒排索引同 B+Tree 一样,也是一种索引结构。它在辅助表中存储了单词与单词...

 32 |  0 |  0 数据库MySQL

雨馨 | 4天前 | JavaScript浏览器前端相关

京东一面:浏览器跨标签页通信的方式都有什么?

跨标签通信也有很多实际的应用场景,比如: 1. 共享登录状态:当用户在一个标签页中登录后,其他打开的标签页需要及时获取到登录状态,以保持一致的用户体验。在这种情况下,可以使用浏览器的localStorage或sessionStorage来存储登录状态,并通过监听storage事件来实现不同标签页之间的状态同步。 2. 实时通知和消息推送:如果用户在一个标签页上收到了新消息或通知,可以通过跨标签页通信将该消息或通知传递给其他标签页。一种常见的处理方式是使用浏览器的localStorage或IndexedDB来存储未读消息或通知,然后通过监听storage事件或定时轮询来检查新消息或通知的变化。 3. 跨标签页数据共享:有时候需要在不同的标签页之间共享一些数据,例如购物车数据、选项设置等。这可以通过在localStorage或IndexedDB中存储数据,并借助storage事件或定时轮询来实现数据的同步更新。 4. 标签页之间的导航同步:当用户在一个标签页中进行导航操作(例如点击链接或提交表单)时,其他标签页可能也需要跟随导航到相应的页面。这可以通过在标签页之间发送消息或共享状态来实...

 30 |  0 |  0 JavaScript浏览器

一纸荒年 | 4天前 | 后端相关Spring 全家桶

史上最全,全方位阐述 SpringBoot 中的日志是怎么工作(珍藏版)

前言 日志,是开发中熟悉又陌生的伙伴,熟悉是因为我们经常会在各种场合打印日志,陌生是因为大部分时候我们都不太关心日志是怎么打印出来的,因为打印一条日志,在我们看来是一件太平常不过的事情了,特别是在宇宙第一框架Springboot的加持下,日志打印是怎么工作的就更没人关注了。 但是了解日志框架怎么工作,以及学会Springboot怎么和Log4j2或 Logback 等日志框架集成,对我们扩展日志功能以及优雅打印日志大有好处,甚至在有些场景,还能通过调整日志的打印策略来提升我们的系统吞吐量。 所以本文将以Springboot集成Log4j2为例,详细说明Springboot框架下Log4j2是如何工作的,你可能会担心,如果是使用Logback日志框架该怎么办呢,其实Log4j2和Logback极其相似,Springboot在启动时处理Log4j2和处理Logback也几乎是一样的套路,所以学会Springboot框架下Log4j2如何工作,切换成Logback也是轻轻松松的。 本文遵循一个该深则深,该浅则浅的整体指导方针,全方位的阐述Springboot中日志怎么工作...

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

雪千寻 | 5天前 | 后端相关Kafka

注意:Kafka 的这 6 个场景会丢失消息!

我们使用 Kafka 的时候,怎样能保证不丢失消息呢?今天来聊一聊这个话题。 首先我们看一下 Kafka 的架构图, 场景一:异步发送 Producer 异步发送是丢失消息比较多的场景,Kafka 异步发送的代码如下: ProducerRecord<byte[],byte[]  record = new ProducerRecord<byte[],byte[] ("the-topic", key, value); RecordMetadata metadata = producer.send(record).get(); Producer 发送消息后,不用等待发送结果,就可以继续执行后面的逻辑。如果发送失败,就会丢失消息。 Kafka 提供了回调方法,可以同步等待发送结果,这样降低了发送效率,但可以对发送失败的场景进行处理,比如重新发送。 ProducerRecord<byte[],byte[]

 29 |  0 |  0 后端相关Kafka

心如止水 | 5天前 | 数据库MySQL

MySQL 上亿大表,如何深度优化?

背景 XX实例(一主一从)xxx告警中每天凌晨在报 SLA 报警,该报警的意思是存在一定的主从延迟(若在此时发生主从切换,需要长时间才可以完成切换,要追延迟来保证主从数据的一致性) XX实例的慢查询数量最多(执行时间超过1s的sql会被记录),XX应用那方每天晚上在做删除一个月前数据的任务 分析 使用pt-query-digest工具分析最近一周的mysql-slow.log pt-query-digest --since=148h mysql-slow.log | less 结果第一部分 最近一个星期内,总共记录的慢查询执行花费时间为25403s,最大的慢sql执行时间为266s,平均每个慢sql执行时间5s,平均扫描的行数为1766万 结果第二部分 ![图片](https://static.developers.pub/78a1c6d207814450b73978f

 34 |  0 |  0 数据库MySQL

温酒 | 5天前 | Linux

这些 Linux 脚本很有用,赶紧收藏起来!

这些 Linux 脚本很有用,赶紧收藏起来! Linux 脚本?准确的说叫 Linux Shell 脚本,Shell 脚本是一种被设计用来运行命令行解释器,他是 Linux 系统的一大特色之一。 命令行是 Linux 系统中一种非常重要的交互方式,而它的实现基于 Linux 内核和 Shell 程序,为用户提供了强大和灵活的操作方式。 使用 Linux 系统会点 Linux 脚本非常有用,它可以让你的工作即轻松又高效! 下面是收集整理的部分 Linux 脚本,欢迎收藏! 1、列出排名前10的内存占用进程 ps aux | sort -rk 4,4 | head -n 10 2、iptables 自动屏蔽访问网站频繁的IP 使用场景:针对恶意访问网站情况 根据访问日志(以 nginx 的 logs 中记录访问的 access.log 日志文件为例,检测短期访问大于100的IP,并使用iptables命令进行屏蔽,同时将禁用的IP放到/tmp/deny_ip.log文件中) !/bin/bash DATE=$(date +%

 33 |  0 |  0 Linux

晚风 | 6天前 | Http

HTTP 方法和使用场景大全

HTTP(超文本传输协议)方法,也称为 HTTP 动词,定义了可以对资源执行的操作。理解这些方法的使用对于 Web 开发至关重要,因为它们促进了客户端和服务器之间的交互。以下是最常用HTTP方法的概述: 01 GET 用途:GET 方法请求特定资源的表示。它只检索数据而不改变资源的状态,使其成为一个安全且 幂等 的方法。它主要用于获取文档或查询数据。示例:浏览网站,平台上搜索。 02 POST 用途:POST 方法提交要处理的数据到指定的资源,通常会导致状态的改变。它用于创建资源或提交表单数据。示例:提交Web表单,创建一个新的用户账户。 03 PUT 用途:PUT 方法用于更新现有资源。与POST不同,PUT是 幂等 的,意味着后续的相同请求应产生相同的结果。示例:更新用户资料,更改设置。 04 DELETE 用途:DELETE 方法删除指定的资源。它也是 幂等 的,这意味着单个成功操作的效果无...

 38 |  0 |  0 Http

石昊 | 6天前 | 后端相关Spring 全家桶

SpringBoot集成支付宝,看这一篇就够了

前 言 在开始集成支付宝支付之前,我们需要准备一个支付宝商家账户,如果是个人开发者,可以通过注册公司或者让有公司资质的单位进行授权,后续在集成相关API的时候需要提供这些信息。 下面我以电脑网页端在线支付为例,介绍整个从集成、测试到上线的具体流程。 1.预期效果展示 在开始之前我们先看下我们要达到的最后效果,具体如下: 前端点击支付跳转到支付宝界面 支付宝界面展示付款二维码 用户手机端支付 完成支付,支付宝回调开发者指定的url 2.开发流程 2.1 沙盒调试 支付宝为我们准备了完善的沙盒开发环境,我们可以先在沙盒环境调试好程序,后续新建好应用并成功上线后,把程序中对应的参数替换为线上参数即可。 1. 创建沙盒应用 直接进入 https://open.alipay.com/develop/sandbox/ap

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

晴天 | 6天前 | 后端相关

流程引擎的架构设计方案全解

1 什么是流程引擎 流程引擎是一个底层支撑平台,是为提供流程处理而开发设计的。流程引擎和流程应用,以及应用程序的关系如下图所示。 常见的支撑场景有:Workflow、 BPM 、流程编排等。本次分享,主要从 BPM 流程引擎切入,介绍流程引擎的架构设计方法。 1.1 什么是流程 简单来说,流程就是一系列活动的组合。比如,用于企业办公的 OA 系统中,就存在大量的申请审批类的流程。在生产制造业,有大量的从销售端的订单,到生产制造,再到签收回款的生产销售流程。在机器学习领域,有亚马逊 AWS Sagemaker 的大数据处理、机器学习的应用。综上,流程是一个概念,在和具体实现结合时,就产生了不同的流程产品,如 DevOps、Spring Data Stream 等。 在流程实现方面,主要可以分为 2 种实现方式,一种是用代码实现,比如:用代码实现一个加班申请,那么就要自己对接 SSO 进行 单点登录 ,通过接口拿到发...

 37 |  1 |  0 后端相关

青木 | 1周前 | 数据库MySQL

MySQL 用 limit 为什么会影响性能?有什么优化方案?

Limit 是一种常用的分页查询语句,它可以指定返回记录行的偏移量和最大数目。例如,下面的语句表示从 test 表中查询 val 等于4的记录,并返回第300001到第300005条记录: select   from test where val=4 limit 300000,5; 这样的语句看起来很简单,但是在实际使用中,可能会出现性能问题。为什么呢?我们需要从 Mysql 的索引结构和查询过程来分析。 Mysql 的索引结构 Mysql 支持多种类型的索引,其中最常用的是 B+ 树索引。B+ 树索引是一种平衡多路查找树,它有以下特点: 树中的每个节点最多包含 m 个子节点,m 被称为 B+ 树的阶。 树中的每个节点最少包含 m/2(向上取整)个子节点,除了根节点和叶子节点。 树中的所有叶子节点都位于同一层,并且通过指针相连。 树中的所有非叶子节点只存储键值(索引列)和指向子节点的指针。 树中的所有叶子节点存储键值(索引列)和指向数据记录(聚簇索引)或者数据记录地址( 非聚簇索引 )的指针。 下图是一个 B+ 树索引的示例:

 41 |  0 |  0 数据库MySQL

OOM | 1周前 | CSS前端相关

图解 CSS Grid 布局

Grid(网格)布局是最强大的 CSS 布局方案,用于构建二维布局。Grid 布局将页面划分成一个个网格,可以任意组合不同的网格,实现各种各样的布局。下面就来看看 CSS Grid 布局是如何使用的! 1. Grid 布局概述 在解释 CSS Grid 布局之前,我们先来看看 Grid 布局中一些重要概念。 (1)网格容器 网格容器是所有网格项的父元素,网格容器会定义 display:grid 。下面例子中,类名为 container 的 div 元素就是网格容器: .container {  display: grid; } <div class="container"   <div class="item" 1</div   <div class="item" 2</div   <div class="item" 3</div   <div class="item" 4</div </div

 37 |  0 |  0 CSS前端相关

女王范 | 1周前 | Java后端相关

聊聊Java中代码优化的30个小技巧

前言 我之前写过两篇关于优化相关的问题:《[聊聊sql优化的15个小技巧](https://mp.weixin.qq.com/s?__biz=MzkwNjMwMTgzMQ &mid=2247490473&idx=1&sn=ba07d64aa8c89054bd263efd660d3a3f&chksm=c0ebc341f79c4a579a6f41465df0459a696ab8ef0499a5f6fd76269af1064fde0286afdb027d&token=751314179&lang=zh_CN&scene=21 wechat_redirect)》和《[聊聊接口性能优化的11个小技巧](https://mp.weixin.qq.com/s?__biz=MzkwNjMwMTgzMQ &mid=2247490731&idx=1&sn=29ed0295c7990157a3a56ba33cf7f8be&chksm=c0ebc443f79c4d55a2bac81744992c96f97737e5d0717ec99231f4d08f57a7f0220eafdac9c9&token

 39 |  0 |  0 Java后端相关

念旧。 | 1周前 | 数据库MySQL

MySQL 主从 AUTO_INCREMENT 不一致问题分析

本文介绍了 MySQL5.7 中常见的replace into 操作造成的主从auto_increment不一致现象,一旦触发了主从切换,业务的正常插入操作会触发主键冲突的报错提示。 一、问题描述 1.1 问题现象 在 MySQL 5.7 版本中,REPLACE INTO 操作在表存在自增主键的情况下,可能会出现表的auto_increment值主从不一致现象,如果在此期间发生主从故障切换,当原来的slave节点变成了新的master节点,由于表的auto_increment值是小于原主库的,当业务继续写入时,就会收到主键冲突的报错提示。 相关报错信息如下: ! 报错提示 ERROR 1062 (23000): Duplicate entry 'XXX' for key 'PRIMARY' 1.2 影响评估 在业务逻辑中使用了Replace into,或者INSERT...ON DUPLICATE KEY UPDATE。 一旦出现了表的auto_increment值主从不一致现象,在出现MySQL主从故障切换后,业务的正常写入会报主键冲...

 35 |  0 |  0 数据库MySQL

推荐标签 🏷️

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