即墨网站设计wordpress 添加登录按钮

web/2025/10/5 20:27:01/文章来源:
即墨网站设计,wordpress 添加登录按钮,网页搭建服务平台,网站建设实训报告doc工作业务中#xff0c;有大量分布式加锁的重复代码#xff0c;存在两个问题#xff0c;一是代码重复率高#xff0c;二是容易产生霰弹式修改#xff0c;使用注解和AOP可以实现代码复用#xff0c;简化分布式锁加锁和解锁流程。 around注解是AspectJ框架提供的#xff0c…工作业务中有大量分布式加锁的重复代码存在两个问题一是代码重复率高二是容易产生霰弹式修改使用注解和AOP可以实现代码复用简化分布式锁加锁和解锁流程。 around注解是AspectJ框架提供的允许我们在目标方法的执行前后进行代码增强。下面通过一个示例来介绍如何使用around注解以及自定义注解实现加解锁ReenTrantLock简化。 改造前原代码 很经典的桥段初始化10个线程每个线程分别执行m1000次若想得到10000的结果则必须加锁同步加锁则需要在执行m前进行加锁在finally语句块中执行解锁操作因此可以通过around注解实现简化。 Service Slf4j public class HelloService {private int m 0;private static int nums 0;public ReentrantLock lock;// spel表达式private static final String LOCK_KEY asset_tenant_lock_prefix: T(org.example.Common.ContextHelper).getTenantInfo().getOrgId();AutowiredHelloService helloService;public String doSomeSum() throws InterruptedException {nums;log.info(调用次数{}, nums);m 0;CountDownLatch countDownLatch new CountDownLatch(10);lock new ReentrantLock();for (int i 0; i 10; i) {Thread thread new Thread(() - {for (int j 0; j 1000; j) {helloService.increM();}countDownLatch.countDown();});thread.start();}countDownLatch.await();return String.valueOf(m);}DistributeLock(key LOCK_KEY)public void increM() {lock.lock();try {m;} finally {lock.unlock();}} }2. 改造第一步创建一个注解 注解名为DistributeLock有一个熟悉key这个例子是为了模仿使用Redis分布式锁 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface DistributeLock {String key(); }3.改造第二步定义一个切面类 切面类中定义一个增强方法useDistributeLock参数joinPoint是切入点distributeLock是切入点形参用于传入key。这里我们key使用的是Spel表达式使用SpelExpressionParser可以求得最终的key值joinPoint.proceed()执行的则是上文提到的原方法的执行内容m。 Component Slf4j public class DistributeLockAspect {private static ReentrantLock lock new ReentrantLock();Around(annotation(distributeLock))public Object useDistributeLock(ProceedingJoinPoint joinPoint, DistributeLock distributeLock) throws Throwable {lock.lock();org.springframework.expression.ExpressionParser parser new SpelExpressionParser();String lockKey (String) parser.parseExpression(distributeLock.key()).getValue();log.info(lockKey);try {return joinPoint.proceed();} finally {lock.unlock();}} }4.改造第三步使用 使用很简单只需要在需要增强的方法上加上我们创建的注解并且给注解的属性Key一个字符串形式的Spel表达式即可实现加解锁操作。代码行数大大减少。 public class HelloService {private int m 0;private static int nums 0;public ReentrantLock lock;// spel表达式private static final String LOCK_KEY asset_tenant_lock_prefix: T(org.example.Common.ContextHelper).getTenantInfo().getOrgId();AutowiredHelloService helloService;public String doSomeSum() throws InterruptedException {nums;log.info(调用次数{}, nums);m 0;CountDownLatch countDownLatch new CountDownLatch(10);lock new ReentrantLock();for (int i 0; i 10; i) {Thread thread new Thread(() - {for (int j 0; j 1000; j) {helloService.increM();}countDownLatch.countDown();});thread.start();}countDownLatch.await();return String.valueOf(m);}DistributeLock(key LOCK_KEY)public void increM() {m;} }5.最终测试结果 最终的测试结果是10000说明加锁成功 来看看我们日志打印的Lock_key值是否符合预期符合预期

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何进行企业营销型网站建设规划东莞市建设工程网站

目录 基于JDE算法的实时多目标车辆跟踪方法 4.1引言 4.2 JDE多目标跟踪算法

龙港网站建设seo工作职责

[TOC] #说明 该文章仅科普下各方法是如何降低流片失败的可能性的。 #1. UVM方法学 1. uvm方法学的主要思想是通过用其它高级语言(python、c等)编写参考模型(REF)实现DUT设计相同功能。再使用uvm的一系列验证组件将相同的激励给…

网站备案 照片寻找在山西运城专业做网站推广的

1 概述: 在这篇文章中,我们将看到Angular 10中的APP_BASE_HREF是什么以及如何使用它。 APP_BASE_HREF为当前页面的基础href返回一个预定义的DI标记。 APP_BASE_HREF是应该被保留的URL前缀。 2 语法: provide: APP_BASE_HREF, useValue: /gfgapp3 步骤: 在app.m…

怎么建小说网站怎么样开发小程序

主题: 优先队列是一种非常有用的数据结构,它让你能够管理一组数据,使得每次访问或移除数据时,总是得到当前集合中优先级最高(或最低)的那个元素。这个特性让优先队列非常适用于需要快速访问集合中最重要元…

网站的开发公司倒闭对网站使用seosem顾问

红黑树 引言红黑树的介绍实现结点类insert搜索插入位置插入调整当parent为gparent的左子结点当parent为gparent的右子结点 参考源码测试红黑树是否合格总结 引言 在上一篇文章中我们认识了高度平衡的平衡二叉树AVL树:戳我看AVL树详解哦 (关于旋转调整的…

网站改版后seo该怎么做江苏网站建设yijuce

目录 1.数据流图 2.变换型设计和事务型设计 3.程序流程图 4.NS图和PAD图: 5.UML图 1.用例图 2.类图 3.顺序图 4.协作图 本文为个人复习资料,包含个人复习思路,多引用,也想和大家分享一下,希望大家不要介意~ …

手机上网站用建设工具h5制作平台排名

接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识。 Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的Mono运行时还未升级。 新编译器仍针对C# 4,是旧的编译器也支持的版本。 …

承德网站建设流程网站流量如何来

如何通过adb获取root权限(安卓电视盒和智能电视通用)?Android 系统rom里面最主要的就3个文件:boot.img、system.img、userdata.img其中boot.img 存放着内核以及Android系统的配置信息,比如android系统各文件夹的读写权限,adb 的权限。所以如…

银川市做网站的公司seo百家论坛

JAVA数组与类的定义-java实验报告JAVA数组与类的定义-java实验报告、实验目的与要求1、 熟悉Java类、对象和方法的一般操作练习等。2、 熟悉数组等的定义和使用。二、实验内容及步骤(包括源程序和运行结果截图)1. 编写Java小应用程序,程序中自定义一个方法&#xff…

网站建设是怎么建的wordpress自动播放音乐

一、安装node.js 1、在官网中安装nodejs最新版本。地址:https://nodejs.org/en/download/,根据自己环境,进行下载安装。 2、安装完成后,进行nodejs版本及npm版本查看。 打开cmd命令行,输入 node -v 和 npm -v&#…

网站开发工具 哪个好网站域名续费怎么续费

用java语言可以实现人民币小写转换为大写吗?如何实现呢?下面常见的用java实现人民币小写变大写的方法可以说是最精简的了,希望大家可以学习下。这里介绍一个通过取余的办法来实现将人民币小写转换为大写形式,个人认为比TTS上面的答…

安徽常青建设集团网站网站后台上传文件

在ROS导航中,激光雷达(Laser Scanner)通常被用于感知机器人周围的环境,进行障碍物检测和建图,以支持导航。下面是激光雷达的详细介绍以及一个示例: 激光雷达简介: 激光雷达是一种传感器&#…

已认证网站服务费怎么做网页托管平台

来源 计算机器人 transformation matrix 相关内容时,对于关节角度进行离散,循环计算很慢,随着角度划分越来越细,怎么提高速度是一个问题。 最优解决方法 fun_handle matlabFunction(T_t2b_RPY_tmp);T_t2b_RPY_tmp是 transform…

中山市规划建设局网站seo排名赚能赚钱吗

VR虚拟现实原型制作 利用VR虚拟现实软件进行原型制作可以用于增强原型测试期间的沉浸感,减少产品设计迭代次数,并将与产品原型制作相关的成本降低40-65%。 VR虚拟现实原型制作市场规模 用于原型制作的虚拟现实 (VR) 市场在 2017 年估计为 2.104 亿美元…

网站开启速度变慢了腾讯企业邮箱如何注册

首先我们做技术,尤其是java开发人员,应该对Spring、SpringBoot、SpringCloud 三个家伙一点不陌生。 结合发展史Spring出现的最早,后面为了可以让开发人员偷懒,简化配置,就是约定犹于配置或者说大于,进而出…

手机微网站怎么做的惠州做网站

StorageFile.ContentType 属性,是 string 类型,用来表示文件内容的 MIME 类型。例如,音乐文件可能有 "audio/mpeg" MIME 类型。(MSDN) MIME 类型的定义可以下面的链接找到: MIME Types - http://blogs.msdn.com/b/jaime…

阿里云网站备案要多久怎么做网站关键字

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 定时任务模块APScheduler 一、安装及基本概念 1.1、APScheduler的安装 1.2、涉及概念 1.3、APScheduler的工作流程​编辑 二、配置调度器 …

网站备案 公司网站建设和优化排名

接上一篇补充 git config --global user.name " " git config --global user.email 邮箱地址 配置用户名和邮箱 git commit 使其处于交互区,没有使用 -m,默认用vim 来编辑和提交信息 输入要提交的内容,然后按ESC建回到命令…

微网站功能列表彩票网站开发的

继续是机器学习课程的笔记,这节课会介绍逻辑回归。 分类问题 这节课会介绍的是分类问题,其结果是离散值。分类问题的例子有判断电子邮件是否是垃圾邮件;判断肿瘤是良性还是恶性;判断一次金融交易是否是欺诈等等。 首先从二元的…

哈尔滨大型网站建设电话策划运营

ThreeJS的动画系列分为:基础动画、相机控制、变形动画、用骨骼和蒙皮制作动画以及使用外部模型创建动画。用骨骼和蒙皮制作动画用骨骼来做动画时,移动一下骨骼,Three.js必须决定如何相应地迁移附着在骨骼上的皮肤,一起来看吧~~~举…