首页 > 其他分享 >获取当天剩余时间

获取当天剩余时间

时间:2024-02-23 17:57:47浏览次数:17  
标签:剩余时间 interval switch timenow 获取 当天 tm time

 

概述

业务测试的过程中,本来有一个时间函数“获取当天剩余时间”,其中使用了localtime()和mktime(),但是在压力测试的过程中发现,两个time函数都不是线程安全的,多线程并发的时候会产生一些随机的错误,结果就是获得的interval时间错误,进而影响到业务流程。

环境

centos:CentOS  release 7.0 (Final)或以上版本

GCC:4.8.5

需求

原始需求:根据当前时间点,计算到今天结束还有多少秒,设置数据过期时间。

需求分析,获取当前时间点,转换格式,根据小时、分钟、秒的数据计算当天剩余时间。

代码实现

源代码主要部分。其中switch_time_exp_lt()和switch_time_now()函数是fs内部函数,可以使用time()和localtime()替换。

unsigned int getExpireTime()

{

    switch_time_exp_t timenow;

   

    unsigned int interval = 0;

    if(SWITCH_STATUS_SUCCESS == switch_time_exp_lt(&timenow, switch_time_now()))

    {

        interval = ((24 - timenow.tm_hour)*3600) + ((60 - timenow.tm_min)*60) + (60 - timenow.tm_sec);

    }

 

    return interval;

}

总结

fs是多线程架构,对于大并发场景下的压力测试要特别注意线程安全的问题。

为了尽可能的提高性能,也有很多技术手段可以不使用加锁的方式解决。

 

空空如常

求真得真

 

标签:剩余时间,interval,switch,timenow,获取,当天,tm,time
From: https://www.cnblogs.com/qiuzhendezhen/p/18030085

相关文章

  • 异步线程处理request,导致参数获取为null
    原文链接:千万不要把Request传递到异步线程里面!有坑!一、post接口接口参数: 后端代码:@PostMapping("/postTest")publicStringpostTest(HttpServletRequestrequest,HttpServletResponseresponse){//AsyncContextasyncContext=request.startAsync(request,re......
  • Modbus RTU通过从站地址获取校验码的代码
    主要方法拆分高低位计算校验码完整通过从站地址获取校验码的代码usingSystem;classProgram{staticvoidMain(){Console.Write("请输入从站地址(十六进制):");stringslaveAddressInput=Console.ReadLine();bytesl......
  • 获取当前时间,前一天和后一天
    //创建日期格式化对象SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");//创建Calendar对象Calendarcalendar=Calendar.getInstance();//将日期设置为当前日期calendar.setTimeInMillis(System.currentTimeMillis());//添加一天calendar.add(Ca......
  • vue3 ref 获取单个Dom及多个Dom
    获取单个Dom<inputtype="text"ref="inputRef"/>setup(){constinputRef=ref(null)onMounted(()=>{console.log(inputRef.value);})}获取多个Dom<divv-for="(item,index)instate.list":key=&quo......
  • burp 下载(永远获取最新的破解版)
    https://github.com/h3110w0r1d-y/BurpLoaderKeygen这里下载最新的破解机(官方github指向)破解机提供官方链接(最上面一行字),从官方下载到最新的burp.jar。然后你就可以永远获取最新的破解版了。就是这么简单。......
  • 从C#接口的属性获取多个实现类中字段的值
    privateList<string>GetImplName(){List<string>ls=newList<string>();vartypes=AppDomain.CurrentDomain.GetAssemblies().SelectMany(a=>a.GetTypes().Where(t=>......
  • 【APP逆向15】通过adb获取手机上已安装应用的apk文件
    逆向过程中,当手机上安装对应的apk后,我们需要反编译该apk。但是pc端下载的apk版本又与手机上不一致。这个时候就需要将手机上的apk文件导出到pc进行反编译分析了。1.通过frida获取包名2.根据包名找到apk文件的存放路径,通过命令adbshellpmpath应用包名来获取其apk文件......
  • 智慧安防/视频监控汇聚平台EasyCVR如何通过接口调用获取设备录像回看流地址?
    视频云存储/视频融合/安防监控EasyCVR视频汇聚系统可兼容各品牌的IPC、NVR、移动单兵、智能手持终端、移动执法仪、无人机、布控球等设备的接入,支持的接入协议包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云s......
  • selenium搜索标签,获取标签属性
    搜索标签1By.ID#根据id号查找标签bro.find_element(By.ID,'id内容')2By.NAME#根据name属性查找标签3By.TAG_NAME#根据标签名查找标签a_list=bro.find_elements(By.TAG_NAME,'a')4By.CLASS_NAME#按类名找dig=bro.find_element(By.CLASS_NAME,'diggit')......
  • element-ui级联选择器获取label值
    element-ui的级联选择器默认获得的是value的数值,获取label的值需要使用getCheckedNodes这个方法。我使用级联选择器用于进行地区的选择,如下:template内:<el-cascaderv-model="regionCodeList"ref="city"placeholder="请选择生产地区"clearable:props="props"@change="......