当前位置: 首页 > 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 在近几年里已经展现出了惊人的能力,可以生成几乎无法区分与人类写作的文本,并在自然语言处理领域的各种任务中都表…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...