当前位置: 首页 > 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里面释放,否则会很难受。同时,我们还需要做好日志的记录,方便出现问题时进行排查。

谢谢大家!

http://www.lryc.cn/news/56520.html

相关文章:

  • Image as set points【ICLR 2023 notable top 5%】
  • 10个超级实用的Python技巧
  • 【Java语法糖】泛型与源码角度分析静态问题
  • App 抓包提示网络异常怎么破?
  • 操作系统-文件系统
  • 虚拟机无法访问外网的问题
  • 软件测试【常见】62 道面试题,不背完这些你还想去面试?
  • 聚观早报 | ChatGPT 停止 Plus 付费;李子柒油管广告收益登顶热搜
  • 对接多个 Neuron 实例,实现多网关协同分析与设备联动
  • windows下 Jenkins 主从节点通过SSH连接
  • JAVA练习101-任务调度器
  • 华为OD机试-匿名信-2022Q4 A卷-Py/Java/JS
  • muduo源码剖析--Inetaddress/Socket/Acceptor
  • 域名过户操作流程及常见问题
  • 多国拟发ChatGPT禁令 关“野兽”的笼子要来了?
  • 深度学习中,Params参数量和FLOPs计算量分别指什么
  • 1分钟快速制作思维导图「ChatGPT+XMind」—— 跟上时代的脚步,这辈子就起飞了 - 第5篇
  • 生成与获取token
  • 【人工智能】ChatGTP从入门到精通
  • 电脑桌面图标间距突然变大怎么恢复
  • 详解各版本Web服务器限制请求体大小的方法
  • 二叉树_详解
  • LOTO示波器电源环路增益分析客户实测
  • Netty主要组件
  • Linux系统【centos7】常用基础命令教程
  • 【Redis学习】Redis入门概述
  • nodejs微服务:Consul集群
  • spring事务处理
  • 2023 年博客之星的入围规则
  • 【新2023Q2押题JAVA】华为OD机试 - 查找树中的元素 or 查找二叉树节点