当前位置: 首页 > news >正文

技术宅小伙:利用JAVA开发个常用的编辑接口

大家好,今天的任务是创建一个常用的编辑接口。实际上,这个接口是在大约十点半时给我的,他说要在下午上线。我在7号接口完成之后,通过代码和预言室来实现这个业务。

首先,这是一个评论编辑接口,编辑的内容是一个拼音码。拼音码是什么呢?你可以这样理解:如果你的名称是苹果,那么它的拼音码就是大写的“PG”,即苹果的第一个字母是P,第二个字母是G。这个拼音码是由后端生成的,通过你的名称去生成的。

我的任务是尽可能地编辑与品名相对应的拼音码。

这个功能已经有相应的API了,所以我只需要调用即可。这个接口实际上可以分批处理,但是我们的要求不是这样。我们在其中加入了很多技术,其中包括Redis分布式锁和多线程。虽然我不知道为什么要这样做,但是我按照领导的要求操作。

我们公司有两个项目,另一个项目已经实现了这个功能,而我现在负责的项目还没有。我的领导让我参考那个项目并复制它的代码。但是这个代码不完全相同,有很多地方需要修改。我发现原来的逻辑会发生死锁,因为他采用了一个Redis分布式锁和一个云集类。我还没有理解这个云集类是什么,但是它对我的代码有很大影响,所以我先不管它。在调试这个代码的时候,我第一次遇到了死锁。因为在执行的过程中发生了异常,所以发生了死锁。

他的代码显得有点奇怪,没有真正做到回滚或者说没有揣揣cash。我直接把那个问题住掉了,然后可以继续往下执行了。但是这引发了一个问题,即原来的逻辑是直接把那个k删掉,但是后来我们这个系统里面是把那个k设置为过期。这两种方式有什么区别呢?我还没有搞清楚。

最后,我想说,所有涉及到数据库的逻辑一定要try catch,最后在finally里面释放,否则会很难受。

谢谢大家。 接下来我会详细说明这个编辑接口的实现逻辑。首先,我们需要通过API获取品名和相应的名称。然后,我们需要将名称转换为拼音码。这里需要注意的是,我们需要将品名和名称与拼音码进行一一对应。这个过程可能会比较耗时,所以我们需要将任务分批处理。

我们使用Redis分布式锁来确保同一时间只有一个任务在运行。这个锁的实现需要注意一些问题,例如锁的粒度、锁的超时时间等等。我们还使用了多线程来提高任务的处理效率。

在实现这个编辑接口时,我们还遇到了一些问题。例如,我们发现原来的逻辑会发生死锁,所以我们不得不修改一些代码。此外,我们还发现原来的代码没有做到回滚或者说没有揣揣cash,这可能会在数据处理过程中引发一些问题。

最后,我想强调一下,所有涉及到数据库的逻辑一定要try catch,最后在finally里面释放,否则会很难受。同时,我们还需要做好日志的记录,方便出现问题时进行排查。

今天的任务是创建一个常用的编辑接口。实际上,这个接口是在大约十点半时给我的,他说要在下午上线。我在7号接口完成之后,通过代码和预言室来实现这个业务。

首先,这是一个评论编辑接口,编辑的内容是一个拼音码。拼音码是什么呢?你可以这样理解:如果你的名称是苹果,那么它的拼音码就是大写的“PG”,即苹果的第一个字母是P,第二个字母是G。这个拼音码是由后端生成的,通过你的名称去生成的。

我的任务是尽可能地编辑与品名相对应的拼音码。

这个功能已经有相应的API了,所以我只需要调用即可。这个接口实际上可以分批处理,但是我们的要求不是这样。我们在其中加入了很多技术,其中包括Redis分布式锁和多线程。虽然我不知道为什么要这样做,但是我按照领导的要求操作。

我们公司有两个项目,另一个项目已经实现了这个功能,而我现在负责的项目还没有。我的领导让我参考那个项目并复制它的代码。但是这个代码不完全相同,有很多地方需要修改。我发现原来的逻辑会发生死锁,因为他采用了一个Redis分布式锁和一个云集类。我还没有理解这个云集类是什么,但是它对我的代码有很大影响,所以我先不管它。在调试这个代码的时候,我第一次遇到了死锁。因为在执行的过程中发生了异常,所以发生了死锁。

他的代码显得有点奇怪,没有真正做到回滚或者说没有揣揣cash。我直接把那个问题住掉了,然后可以继续往下执行了。但是这引发了一个问题,即原来的逻辑是直接把那个k删掉,但是后来我们这个系统里面是把那个k设置为过期。这两种方式有什么区别呢?我还没有搞清楚。

最后,我想说,所有涉及到数据库的逻辑一定要try catch,最后在finally里面释放,否则会很难受。

谢谢大家。

接下来我会详细说明这个编辑接口的实现逻辑。首先,我们需要通过API获取品名和相应的名称。然后,我们需要将名称转换为拼音码。这里需要注意的是,我们需要将品名和名称与拼音码进行一一对应。这个过程可能会比较耗时,所以我们需要将任务分批处理。

我们使用Redis分布式锁来确保同一时间只有一个任务在运行。这个锁的实现需要注意一些问题,例如锁的粒度、锁的超时时间等等。我们还使用了多线程来提高任务的处理效率。

在实现这个编辑接口时,我们还遇到了一些问题。例如,我们发现原来的逻辑会发生死锁,所以我们不得不修改一些代码。此外,我们还发现原来的代码没有做到回滚或者说没有揣揣cash,这可能会在数据处理过程中引发一些问题。

最后,我想强调一下,所有涉及到数据库的逻辑一定要try catch,最后在finally里面释放,否则会很难受。同时,我们还需要做好日志的记录,方便出现问题时进行排查。

谢谢大家!

相关文章:

技术宅小伙:利用JAVA开发个常用的编辑接口

大家好,今天的任务是创建一个常用的编辑接口。实际上,这个接口是在大约十点半时给我的,他说要在下午上线。我在7号接口完成之后,通过代码和预言室来实现这个业务。 首先,这是一个评论编辑接口,编辑的内容是…...

Image as set points【ICLR 2023 notable top 5%】

Code:https://github.com/ma-xu/Context-Cluster OpenReview:https://openreview.net/forum?idawnvqZja69 前置知识: 1)归纳偏置是否有用? 答:有效,但存在一定的限制。强inductive bias的架构…...

10个超级实用的Python技巧

人生苦短,我学Python。离不开它自带的“buff”。 - 简单好用Python的优势很多,最明显的便是简单、易上手。Python的语法非常简单,比如敲“Hello World”,用其他编程语言要敲6-7行代码,用Python只需要1行代码&#xff…...

【Java语法糖】泛型与源码角度分析静态问题

概念 首先聊聊泛型,泛型是JDK5的新特性。泛型是用来指定不同类型来控制形参具体限制的类型。泛型这种语法机制,只在程序编译阶段起作用,只是给编译器参考的(运行阶段泛型没用)。写了这么多代码应该能知道泛型的优点就是…...

App 抓包提示网络异常怎么破?

背景 当你测试App的时候,想要通过Fiddler/Charles等工具抓包看下https请求的数据情况,发现大部分的App都提示网络异常/无数据等等信息。以“贝壳找房”为例: Fiddler中看到的请求是这样的: 你可能开始找证书的问题:是…...

操作系统-文件系统

一、总论 1.1 直观感受 这一章虽然名义上很简单,但是我个人觉得真的很难,其难度是要远超于 lab3 和 lab4 的。对于 lab3 和 lab4,其难度主要集中于复杂的函数调用关系上,如果理清了函数调用关系,会发现难度就很容易弄…...

虚拟机无法访问外网的问题

配置: 1、虚拟机采用NAT模式进行配置 2、虚拟机IP:192.168.109.101,掩码:255.255.255.0,网关:192.168.109.2 3、虚拟机网络编辑器:网关192.168.109.2,网段192.168.109.0,…...

软件测试【常见】62 道面试题,不背完这些你还想去面试?

01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 02、您认为做好测试用例设计工作的关键是什么? 03、您在从事性能测试工作时,是否使用过一些测试工具?如果有&#xff0…...

聚观早报 | ChatGPT 停止 Plus 付费;李子柒油管广告收益登顶热搜

今日要闻:ChatGPT 停止 Plus 付费;李子柒油管广告收益登顶热搜;亚马逊游戏部门百名员工被裁;国内一公司推出太空葬;苹果将在印度国金融中心开设零售店ChatGPT 停止 Plus 付费 4 月 5 日消息,ChatGPT 目前已…...

对接多个 Neuron 实例,实现多网关协同分析与设备联动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxTiQ9Lw-1680846960656)(C:\Users\DELL\Desktop\0407技术号四\0407技术号四图片\对接多个 Neuron 实例,实现多网关协同分析与设备联动 图1.png)] 3 月份,eKuiper 团队主要进行…...

windows下 Jenkins 主从节点通过SSH连接

之前已经介绍了在windows下,Jenkins通过启动agent.jar文件来进行主从节点配置(传送门:Jenkins 主从节点配置教程(windows10)_jenkins windows节点_町棠棠的博客-CSDN博客https://blog.csdn.net/naturly/article/details/129819780…...

JAVA练习101-任务调度器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-任务调度器 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 4月7日练习…...

华为OD机试-匿名信-2022Q4 A卷-Py/Java/JS

电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。 现在又一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。 但为了增加文章的混淆…...

muduo源码剖析--Inetaddress/Socket/Acceptor

InetAddress类 实际上封装了传入socket地址类,包括ip、端口以及具体的协议簇 // 封装socket地址类型 class InetAddress { public:explicit InetAddress(uint16_t port 0, std::string ip "127.0.0.1");explicit InetAddress(const sockaddr_in &…...

域名过户操作流程及常见问题

模板添加及模板过户操作流程: 一、添加模板操作流程: 1.在业务管理-域名管理-模板管理中找到“添加模板” 2.选择所有者类型(个人或是企业/组织),填写新的域名所有者资料,填写无误后点击“确定”。 目前…...

多国拟发ChatGPT禁令 关“野兽”的笼子要来了?

“人工智能想越狱“、”AI产生自我意识”、“AI终将杀死人类”、“硅基生命的进化”.......曾经只在在赛博朋克等科技幻想中出现的剧情,在今年走向现实,生成式自然语言模型正在遭受前所未有的质疑。 聚光灯下最瞩目的那个是ChatGPT,3月底到4…...

深度学习中,Params参数量和FLOPs计算量分别指什么

在深度学习中,参数量和计算量是两个重要的概念。 参数量: 参数量指的是深度神经网络中需要学习的参数数量。在深度学习中,每个神经元都有一个权重,这些权重是需要通过训练来确定的。深度神经网络中的参数量是指所有权重的数量之…...

1分钟快速制作思维导图「ChatGPT+XMind」—— 跟上时代的脚步,这辈子就起飞了 - 第5篇

历史文章(文章累计460) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 S…...

生成与获取token

public class JwtUtils {// TOKEN的有效期1小时(S)private static final int TOKEN_TIME_OUT 1 * 3600;// 加密KEYprivate static final String TOKEN_SECRET "itcast";// 生成Tokenpublic static String getToken(Map params){long current…...

【人工智能】ChatGTP从入门到精通

当谈论自然语言处理和文本生成技术时,Chat GPT 是一个备受瞩目的话题。作为一种基于深度学习的语言模型,Chat GPT 在近几年里已经展现出了惊人的能力,可以生成几乎无法区分与人类写作的文本,并在自然语言处理领域的各种任务中都表…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...