技术宅小伙:利用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行代码ÿ…...
【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、您在从事性能测试工作时,是否使用过一些测试工具?如果有࿰…...
聚观早报 | 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 在近几年里已经展现出了惊人的能力,可以生成几乎无法区分与人类写作的文本,并在自然语言处理领域的各种任务中都表…...
深入解析Cache工作原理与多核一致性机制
深入理解Cache工作原理与技术实现1. 计算机体系中的Cache基础1.1 Cache存在的必要性现代计算机系统中,处理器性能与存储器访问性能之间存在显著差距。从历史发展数据来看,CPU计算性能每18个月翻一番(遵循摩尔定律),而D…...
OpenClaw硬件选购指南:百川2-13B-4bits量化版在不同GPU上的表现
OpenClaw硬件选购指南:百川2-13B-4bits量化版在不同GPU上的表现 1. 为什么需要关注硬件配置 去年冬天,当我第一次尝试在本地部署OpenClaw对接百川2-13B模型时,我的旧显卡GTX 1660 Ti直接崩溃了。那次经历让我深刻认识到——选择合适的硬件对…...
Kazam vs OBS:Ubuntu 24.04 屏幕录制工具对比与选择指南
Kazam vs OBS:Ubuntu 24.04 屏幕录制工具深度评测与实战选择 在数字内容创作爆发的时代,屏幕录制已成为游戏实况、在线教学、产品演示的标配技能。对于Ubuntu 24.04用户而言,Kazam和OBS Studio这两款开源工具常被拿来比较——前者以轻量简洁著…...
MoveIt Config 配置文件完整一致性检查
检查范围(全部核对完毕)ros2_control xacro(硬件接口 / 关节)initial_positions.yaml(初始位置)srdf(运动组 / 关节)joint_limits.yaml(关节限制)kinematics.…...
STM32F103 LoRa物理层驱动库详解与工程实践
1. 项目概述LoRa_STM32 是一个面向 STM32F103CB 微控制器平台的 LoRa 通信库,本质是 sandeepmistry/arduino-LoRa 库在 STM32 平台上的适配分支。它并非独立开发的全新协议栈,而是通过 Arduino Core for STM32(rogerclarkmelbourne/Arduino_S…...
MicroOS:Arduino轻量级任务调度内核详解
1. MicroOS:面向Arduino的轻量级任务管理内核概述MicroOS是一个专为Arduino平台设计的极简型实时任务管理器,其核心定位并非替代FreeRTOS或Zephyr等完整RTOS,而是填补Arduino原生loop()单线程模型在多任务调度、精确定时与事件解耦方面的空白…...
【AI+教育】告别“硬啃”长文,它把文档直接变成你的专属视频课
在这个信息大爆炸的时代,我们最不缺的就是资料:网盘里屯满的行业报告、收藏了却从未打开的学术论文、买来盖泡面的大部头教材……知识就在那里,但“学进去”实在太难了。 秘塔推出的“今天学点啥”,就是为了解决这个痛点而生的。它的核心逻辑非常简单粗暴:你把看不进去的文…...
JetBrains推出AI智能体管理平台Central
为了帮助开发者控制日益增长的AI编程智能体队伍,JetBrains正在推出JetBrains Central,这是一个面向团队的智能体开发平台,用于管理和维持对这些智能体的监督。JetBrains Central的早期访问计划将于2026年第二季度开始,将有限量的设…...
经典概率题:飞机座位分配问题(LeetCode 1227)超详细解析
一、题目背景与描述这是一道非常经典的概率与逻辑推理面试题,也是 LeetCode 第 1227 题「飞机座位分配概率」。题目描述有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随机选一个座位坐下。剩下的乘客:如果自己…...
LWIP内存管理踩坑实录:从pbuf泄漏到pcb耗尽,我的嵌入式网络调试日记
LWIP内存管理踩坑实录:从pbuf泄漏到pcb耗尽,我的嵌入式网络调试日记 凌晨三点,调试器上的红色LED还在闪烁。这是我连续第三个通宵追踪LWIP的内存问题——设备在运行48小时后必然崩溃,日志里满是"pbuf_alloc failed"和&q…...
