精华内容
下载资源
问答
  • 同样的环境不同的结果
    千次阅读
    2018-10-11 11:42:00

      场景:

      开发环境(windows下)调用第三方接口验签通过,发测试环境(linux下)后死活验签通过不了

      原因:

      md5是一项成熟的加密技术,问题应该在代码里,查了查感觉可能是字符编码的问题,导致加签没通过,这样的话只能是环境导致的字符编码出现问题,就我所知的有getBytes()方法是得到一个操作系统默认的编码格式的字节数组,发现公共代码里进行md5加密是要进行转字节的

        /**
         * md5加密
         */
        public static String MD5Encode(String origin) {
            String resultString = null;
            try {
                resultString = new String(origin);
                MessageDigest md = MessageDigest.getInstance("MD5");
                resultString = byteArrayToHexString(md.digest(resultString
                    .getBytes()));
            } catch (NoSuchAlgorithmException e) {
            }
            return resultString;
        }

      所以这里的getBytes()不确定性太大,需要指定编码方式来降低耦合(代码与环境的耦合)。

      解决方法:

      将getBytes()方法指定具体的编码方式,如:getBytes("UTF-8")

        /**
         * md5加密
         */
        public static String MD5Encode(String origin) {
            String resultString = null;
            try {
                resultString = new String(origin);
                MessageDigest md = MessageDigest.getInstance("MD5");
                resultString = byteArrayToHexString(md.digest(resultString
                    .getBytes("UTF-8")));
            } catch (NoSuchAlgorithmException e) {
            }
            return resultString;
        }

     

      

    转载于:https://www.cnblogs.com/lfalex0831/p/9771567.html

    更多相关内容
  • 但是,我在树莓派centOS(也是Python 2.7版本)环境里面运行则会出现不一样的结果:第一次开始运行,正常发送一个邮件。断掉光猫电源重启,程序出错。再次运行,首次邮件发送就出错,提示内容如下: [root@...

     

    下面一段代码用来实现在家里宽带外网IP地址改变后,向指定邮箱发送最新的外网IP地址,5分钟检查一次,如果发生变化,则发送邮件:
    #! /usr/bin/python
    # -*- coding: UTF-8 -*-
    import smtplib
    import time
    from email.mime.text import MIMEText
    from json import load
    from urllib2 import urlopen

    mailto_list=['702730136@qq.com']    #收件人(列表)
    mail_host="smtp.sohu.com"                    #使用的邮箱的smtp服务器地址,这里是163的smtp地址
    mail_user="XXXX"                                #用户名
    mail_pass="XXXXXX"                            #密码
    mail_postfix="sohu.com"                        #邮箱的后缀,搜狐sohu.com
    def send_mail(to_list,sub,content):
        me="hello"+"<"+mail_user+"@"+mail_postfix+">"
        msg = MIMEText(content,_subtype='plain')
        msg['Subject'] = sub
        msg['From'] = me
        msg['To'] = ";".join(to_list)    #将收件人列表以‘;’分隔
        try:
            server = smtplib.SMTP()
            server.connect(mail_host)    #连接服务器
            server.login(mail_user,mail_pass)    #登录操作
            server.sendmail(me, to_list, msg.as_string())
            server.close()
            return True
        except Exception, e:
            print str(e)
            return False

    #下面开始获取外网IP地址
    url = load(urlopen('https://jsonip.com'))
    a1=url['ip']
    a2=a1
    send_mail(mailto_list,"最新外网地址",a1)

    while True:
        time.sleep(300)
        url = load(urlopen('https://jsonip.com'))
        a1=url['ip']
        if a1!=a2:
            if send_mail(mailto_list,"最新外网地址",a1):
                a2=a1
                print "IP地址变更,OK已经成功发送邮件!"
            else:
                print "IP地址变更,ERROR发送邮件不成功!"

    代码在Python 2.7 win7环境下运行正常,开始运行发送一个邮件,然后我断掉光猫电源重启,5分钟内会发送邮件,内容为新外网IP地址。但是,我在树莓派centOS(也是Python 2.7版本)环境里面运行则会出现不一样的结果:第一次开始运行,正常发送一个邮件。断掉光猫电源重启,程序出错。再次运行,首次邮件发送就出错,提示内容如下:
    [root@localhost ~]# python /root/sendmail.py
    Traceback (most recent call last):
      File "/root/sendmail.py", line 32, in <module>
        url = load(urlopen('https://jsonip.com'))
      File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
        return opener.open(url, data, timeout)
      File "/usr/lib/python2.7/urllib2.py", line 431, in open
        response = self._open(req, data)
      File "/usr/lib/python2.7/urllib2.py", line 449, in _open
        '_open', req)
      File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
        result = func(*args)
      File "/usr/lib/python2.7/urllib2.py", line 1258, in https_open
        context=self._context, check_hostname=self._check_hostname)
      File "/usr/lib/python2.7/urllib2.py", line 1214, in do_open
        raise URLError(err)
    urllib2.URLError: <urlopen error [Errno 22] Invalid argument>
    [root@localhost ~]#

    我看了一下,问题都出在这里url = load(urlopen('https://jsonip.com')),但是我不知道为什么在树莓派centOS里面运行的时候,第一次执行这一句正常,第二次执行的时候出错。请大家帮忙看看,发送邮件的用户名和密码我都隐藏了,但是发送邮件的操作是正常的。

    展开全文
  • 但是最后的结果确不是。问题的最终原因就是生产环境中每次执行该sql都是从磁盘中读取(这个可以从Innodb_data_read监控看到迹象),而压测环境执行过一次后该表数据基本都能被缓存不被换出。 关于Innodb_data_read详情...

    1.数据库版本

    8.0.13

    2.问题描述

    研发兄弟跑来咨询一个问题。他们一个sql在压测环境跑,居然比生产环境高效10倍。(压测环境8C32G,生产环境16C128G)。

    申明下,这个sql确实存在优化空间,但是优化sql和本文的问题是两个问题,这里不讨论如何优化这条sql

    拿到他的sql我做了测试,确实如他所说,在压测环境执行时间基本稳定在2-4s左右,但是在生产环境基本需要稳定在50s左右(为了排除数据不在buffer_pool中,每个环境我都进行对sql进行了连续多次执行。但是最后还是因为缓存的问题,坑)

    压测和生产环境相关信息如下:

     #从上面两个图中,我们可以看出两个环境的表记录数量基本一致,压测环境记录稍微多些,两个环境sql执行计划也都是全表扫描,但是压测环境执行时间就比生产环境高效很多。最开始我想是不是生产环境表碎片太大,导致全表扫描需要读取更多的页,检查发现两个环境中该表都没有什么碎片。

    3.问题分析

        说实话问题分析到这边的时候,被卡了好长时间,思维定式导致我认为我在两个环境中都是连续多次执行该sql,可以排除 buffer_pool的影响。但是最后的结果确不是。问题的最终原因就是生产环境中每次执行该sql都是从磁盘中读取(这个可以从Innodb_data_read监控看到迹象),而压测环境执行过一次后该表数据基本都能被缓存不被换出。

    关于Innodb_data_read详情请见:

    Innodb Read IO 相关参数源代码解析

    最后给一张生产环境执行该sql时,关于innodb_data_read 的监控图:

    #从图中可以看出该sql执行时innodb_data_read 变量值上升明显,sql执行完成后又恢复正常

    展开全文
  • 还有系统或主机配置也可能导致oj和本地测出结果不同,举个例子,sizeof(int*)在64位电脑测试的话是8,而在oj上就不一定了。因为我们不知道oj他用的什么服务器判题。如果是32位的那就是4。 综上所述,如果你也遇到...

    1.11在做codevs1014装箱问题的时候,由于我编程水平不够,发生了一件令当时的我匪夷所思的事。特此记录,防止今后在出现类似问题。

    题目描述 Description:
    有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

    输入描述 Input Description:
    一个整数v,表示箱子容量

    一个整数n,表示有n个物品

    接下来n个整数,分别表示这n 个物品的各自体积

    输出描述 Output Description
    一个整数,表示箱子剩余空间。

    样例输入 Sample Input
    24

    6

    8

    3

    12

    7

    9

    7

    样例输出 Sample Output
    0

    一开始我的代码是这样的:

    #include <iostream>
    #include<bits/stdc++.h>
    using namespace std;
    
    int** arr;
    int v=0, n=0;
    int* w;
    
    void initial(int v, int n)
    {
        arr = new int*[v + 1];
        for (int i = 0; i <= v; i++)
        {
            arr[i] = new int[n + 1];
            for (int j = 0; j <= n; j++)
                arr[i][j] = -1;
        }
    }
    
    int fun(int i, int j)
    {
        if (j == 0)
            return 0;
        if (arr[i][j] != -1)
            return arr[i][j];
    
        if (w[j]>i)
            arr[i][j] = fun(i, j - 1);
        else
            arr[i][j] = max(fun(i, j - 1), fun(i - w[j], j - 1) + w[j]);
    
    }
    
    int main()
    {
        cin >> v >> n;
        w = new int[n + 1];
        for (int i = 1; i <= n; i++)
            cin >> w[i];
        initial(v, n);
        cout << v - fun(v, n) << endl;
        return 0;
    }

    但是提交到oj上第一个数据就wa了。
    还好codevs给了测试数据,出错的数据是这样的:
    10
    3
    4
    8
    5
    oj上测出来的结果是这样的:

    我的devcpp测出来的结果:

    换了VS2017后测出来的结果和devcpp一样。
    由于我是第一次遇到这种情况,感觉非常匪夷所思,甚至一度以为是自己的眼睛出了毛病。后来开始怀疑是oj的bug,于是乎疏忽了对自己代码的检查。
    第一天没有找出来原因。但是我怎么能就这样放弃呢,于是不甘心的我在今天重写了一份代码,这次用的是递推的方法:

    #include <iostream>
    #include<bits/stdc++.h>
    using namespace std;
    
    #define maxv 20000+10
    #define maxn 30+10
    int dp[maxn][maxv];
    int v=0, n=0;
    int vv[maxn];
    
    
    void fun()
    {
        for(int i=0;i<=n;i++)
        memset(dp[i],0,sizeof(dp[i]));
    
        for(int i=n;i>=1;i--)
        {
            for(int j=0;j<=v;j++)
            {
                dp[i][j]=(i==n?0:dp[i+1][j]);
                if(vv[i]<=j)dp[i][j]=max(dp[i][j],dp[i+1][j-vv[i]]+vv[i]);
            }
        }
        printf("%d\n",v-dp[1][v]);
    }
    
    int main()
    {
        cin >> v >> n;
        for (int i = 1; i <= n; i++)
            cin >> vv[i];
        fun();
    
        return 0;
    }

    这份代码一次就AC了,这就彻底打消了我一开始觉得oj有bug的疑虑。那到底是哪里出错了呢?于是我开始细心检查自己的代码,终于发现

    int fun(int i, int j)           //代码一 
    {
        if (j == 0)
            return 0;
    
        if (arr[i][j] != -1)
            return arr[i][j];
    
        if (w[j]>i)
            arr[i][j] = fun(i, j - 1);
        else
            arr[i][j] = max(fun(i, j - 1), fun(i - w[j], j - 1) + w[j]);
    
    }

    我居然少了一句return arr[i][j]!!!
    加上这句后,一开始的那份代码就终于AC了。
    好了,错误找到了,那么疑问又来了,为什么我本地能测出来结果呢?
    原因在于运行平台的差别遮盖了代码的逻辑错误。
    我不知道codevs它用的什么判的题。但是devcpp或者vs里有返回值的函数缺少return可能不会影响程序结果。这个和运行的ide和主机有关了。但是稍微严格一点的数据可能就会把错误检查出来了。比如:
    如果把代码一中两个return注释掉:
    msvc环境下的vs会告诉我这样的代码有问题
    这里写图片描述
    但同样的代码在devcpp里还可以运行。

    如果只留下一个return
    这里写图片描述
    vs又不报错了。由此可见ide的不同对程序的运行有很大影响。
    事实上,有返回值的函数,每个条件下都应该对应一个return语句的,但是如果少了,编译器也不一定能检查出来这种错误。程序运行时,不确定在运行阶段会出现什么问题。

    将数组arr输出:
    这里写图片描述
    注意arr[5][2]处,根据输出结果可知先计算的arr[5][2]后计算的arr[5][1] ,计算arr[5][2]是这样的:arr[5][2]=fun(5,1);由于这时候还没有计算过arr[5][1],fun函数必定不会返回arr[5][1],而是在下面的语句中对arr[5][1]进行计算,这时候问题来了。arr[5][1]计算之后并没有返回他的值,那我是怎么得到的arr[5][2]???

    事实上,fun(5,1)的值实际上就是eax寄存器的值,如果函数确实return了某个值,则会将该值放入eax寄存器并返回,但是fun(5,1)函数并没有执行到return语句。所以eax寄存器的值在执行函数时保持不变,直接返回,所以调用fun(5,1)之前寄存器里是什么值,返回的就是什么值。是一个不确定的值。vs和devcpp上正确真的只是凑巧而已,再来一组数据估计就GG。但是oj不见得就有这样的作用。由于运行环境的不同,就出现了本地和oj同样数据测出不同结果的原因。

    还有系统或主机配置也可能导致oj和本地测出结果不同,举个例子,sizeof(int*)在64位电脑测试的话是8,而在oj上就不一定了。因为我们不知道oj他用的什么服务器判题。如果是32位的那就是4。

    综上所述,如果你也遇到这样的情况,多半都是你的运行环境遮盖了你代码中的错误,第二种可能不是没有,但很少。还是好好琢磨一下代码哪里出错了吧。

    展开全文
  • 我在dev-c++下和VC6.0分别都是输入同样的代码(VC6.0下在retnrn 0;前有加上getch();) 为什么dev-cpp下没结果显示出来(不是窗口一闪而过,而是黑窗口,但没结果输出),而VC6.0下则输出 11 30 ?请大神指导,谢谢 ...
  • 一、虚拟环境1:torch环境的cuda配置 1.先安装Torch 进入pytorch官网,https://pytorch.org/get-started/locally/找到想要安装的torch及对应的cuda,(比如我要下载cuda10.2的torch),选中cuda10.2对应的torch...
  • 第一个sql explain执行结果如下图:![图片说明](https://img-ask.csdn.net/upload/201804/27/1524818255_974872.png)explain结果如上,效率特别慢,库里数据量还不大, 第二 个sql explain执行结果如下图:![图片...
  • 今天在用RSA加密的时候发现一个奇怪的问题,我用main方法调用加密方法得到的结果和部署到tomcat后从页面请求得到的结果不一样,进一步测试发现是 str.getBytes();在两种环境下返回的值不一样. 原来getBytes()方法...
  • 今天需要用base64加密数据,在java工程中测试...同样的代码输出的结果不一样,参数json是相同的字符串,以为是包的问题,一直在查包,查半天没查到区别,在排查项目编码也相同,想了半天,最后搜到了,还是参数jso...
  • 问题:搭建好的交叉编译宿主机,传入文件到开发板,运行段错误,但是之前同样的程序编译出来传送是没问题的。      经过排插,是因为filezllla使用了文本传输,而不是二进制传输。 ...
  • Anaconda不同环境之间pip install的路径问题

    万次阅读 多人点赞 2020-02-21 11:29:53
    Anaconda3不同环境之间pip install的路径问题1. 如果是只想修改pip install的路径,可以直接看此链接2. Anaconda3修改不同环境下的pip install路径 1. 如果是只想修改pip install的路径,可以直接看此链接 Anaconda...
  • 关于相同代码在vs2017和Dev-c++中结果不同的原因初探索:UB(undefined behaviour) 今天一个学长拉着我研究了好一会儿一个简单的代码,因为它居然在不同软件中运行结果不同。这让我们有些费解,于是做了一些探究。...
  • 同样的字符串 在运行项目里面加密的密文是:bfeb426b460a4969593bc6681e34134d 在main方法里面加密的密文是:bcdd1e5c917dcb818196b2004d0f90f9 导致MD5加密相同字符串,密文却不一样的问题 查找MD5的加密方法 然后...
  • 什么是VPAVPA,全称Variance Partitioning Analysis,中文成为方差分解分析,该分析的目的是确定指定的环境因子对群落结构变化的解释比例。我们使用CCA/RD...
  • 我cmd连接数据库进行了更新, 但是没有commit cmd执行sql返回2, 因为sql结尾没有加分号
  • 最近把项目部署到服务器进行测试,结果MD5验证总是通不过,服务器在请求过来的加密32位串和本地加密32位串作对比时,总是返回false,那么问题来了,加密之前的明文是相同的,为何同样的加密方法却得到了不同结果?...
  • 神经网络算法利用了随机性,比如初始化随机权重,因此用同样的数据训练同一个网络会得到不同结果。 初学者可能会有些懵圈,因为算法表现得不太稳定。但实际上它们就是这么设计的。随机初始化可以让网
  • 用深度学习每次得到的结果都不一样,怎么办?

    万次阅读 多人点赞 2019-11-04 23:20:46
    神经网络算法利用了随机性,比如初始化随机权重,因此用同样的数据训练同一个网络会得到不同结果。 初学者可能会有些懵圈,因为算法表现得不太稳定。但实际上它们就是这么设计的。随机初始化可以让网络通过学习,...
  • 今天发现sprintf函数的一个问题,不同环境同样语句执行结果是不一样的。一个时间字符串,要求是6位,不足6位时前面补0,用下面语句实现:  strcpy(tt,"2345"); printf("==%s==",tt); sprintf(t1,"%06s",tt); ...
  • vue 不同环境打包配置

    千次阅读 2019-03-17 00:23:06
    可是在实际工作中可能有生产环境,测试环境甚至更多,每个环境的请求地址都是不同的,如果我们每次都手动修改请求地址并打包,将非常繁琐,所以我们需要稍微配置一下,可以实现项目不同环境的打包配置: 1、首先...
  • 背景环境:希望将不同环境的需要修改的配置文件放到不同的文件夹中,打包的时候根据环境选择不同的文件夹作为配置文件。 maven-war-plugin插件用于将汇集的Java类文件、依赖的jar文件和资源文件等一起打包以构建...
  • OpenAI Gym 经典控制环境介绍——CartPole(倒立摆)

    万次阅读 多人点赞 2019-04-28 19:32:02
    OpenAI Gym是一款用于研发和比较强化学习算法的工具包,本文主要介绍Gym仿真环境的功能和工具包的使用方法,并详细介绍其中的经典控制问题中的倒立摆(CartPole-v0/1)问题。最后针对倒立摆问题如何建立控制模型并...
  • 当我们安装完golang后,我们在windows的cmd命令下就可以直接查看和使用go命令和环境变量了,同样的在linux下可以在控制台使用,如下图所示: 我们也可以直接输入go,查看go支持的命令 GOPROXY 从字面意思就能看出,GO...
  • 图形结果:图形结果监听器生成一个简单的图形,绘制所有采样时间, 聚合报告:聚合报告为测试中的每个不同命名的请求创建一个表行, 在表中查看结果:此可视化工具为每个样本结果创建一行。与查看结果树一样,此...
  • yolov5 训练结果不稳定结果无法复现

    千次阅读 2021-12-03 20:37:42
    首先说明一下环境: ...最近用yolov5跑项目,但是发现多次实验结果无法复现(同一个机器,同一份代码,同样超参数,但是验证集结果不同),在测试集上跑的结果准确率可以偏差20%,其中认为可能的问题是出在以下几点: 1
  • 不少GISer,尤其是初学者,对栅格数据的操作,主要是栅格插值无法进行,或者是插值后的栅格结果无法导出,或者导出结果为空,或者是栅格格式无法转换,今天刘一哥GIS就帮您排忧解难吧。 其实,关于栅格问题,我们只...
  • Anaconda 环境变量的配置

    千次阅读 2022-03-11 21:05:29
    谨以此文记录我在进行 Anaconda 环境变量配置的时候遇见的问题,希望可以对遇到同样问题的人予以帮助或启发 一、什么是环境变量 环境变量 – 操作系统中指定运行环境的参数 环境变量一般是指操作系统中用来指定操作...
  • 在 windows 操作系统下加解密正常,但部署到 linux 环境中相同的输入加密结果不正确,并且每次运行返回的结果不同。 修改后的代码:  KeyGenerator kgen = KeyGenerator.getInstance("AES");  //需手动指定 ...
  • Linux 环境下安装jdk1.8并配置环境变量

    万次阅读 多人点赞 2019-06-03 15:44:42
    Linux 环境下配置jdk1.8环境
  • 摘要:本文详细介绍了在Ubuntu 18.04下如何配置深度学习GPU(显卡)环境,包括了显卡驱动下载安装,环境配置等。按照本教程的步骤在多台服务器上安装都取得了成功,是在多种方法的比较之下个人整理的认为最新的简洁...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 635,416
精华内容 254,166
关键字:

同样的环境不同的结果