• 经验和教训


    Q1. 程序中,Memcached失效,读取出来为null。而其他同事可以正常使用?

    可能原因:1.本地时间和服务器时间有差异,而设置缓存过期时间时,对于服务器来说始终是过期的,如:本地时间是14:55,服务器时间是15:00,而设置缓存时保存为14:55+3min,则无论怎么调试,都发现获取出来的缓存为null!

    Q2. 站点都用自己写的BaseResult,别用lib4net.IResult
    原因:第三方不便于扩展,局限性很大,一旦发现不满足现状时,将面临大批量的修改

    Q2. 调用翼支付的webservice接口时抛出异常
    原因:xml中的格式必须与原测试DEMO中的格式一致,一般都是由请求参数引起的。遇到最逼的一个问题是,他的金额因为是分为单位,结尾不能有小数点。

    Q3. 泛型方法的示例

     1 protected T Exec<T>(string websvcode, string xml, string summary = "")
     2 where T : Guxue.YZF.Response.BaseResponse // 约束一共有好几种
     3 {
     4 this.Prepare(websvcode, summary);
     5 
     6 WsHelper ws = new WsHelper(this, xml);
     7 Response.ResponseResult r = ws.Request();
     8 T obj = (T)Activator.CreateInstance(typeof(T), r); // r是构造参数,那么T必须有一个带有参数的构造函数
     9 return obj;
    10 }
    View Code

     泛型方法需要系统的学习一下

    Q4. 什么时候应该用类属性?
    答:如果外部不需要使用这个属性,只是内部类使用,则不要声明属性(避免暴露在外);直接声明变量即可。当需要在外部使用属性或者使用属性的名字时,方可声明。

    Q5. 利用反射,将属性值注入到已定义好的实体中

     1 private void RegisterSignInEntity()
     2 { 
     3 plain_text = 123;
     4 PropertyInfo prop = GetSignProperty();
     5 if (prop == null) throw new Exception("实体必须要有Sign属性(不区分大小写)");
     6 prop.SetValue(entity, plain_text, null);
     7 }
     8 private PropertyInfo GetSignProperty()
     9 {
    10 Type t = entity.GetType();
    11 PropertyInfo[] pis = t.GetProperties();
    12 for (int i = 0; i < pis.Length; i++)
    13 {
    14 string name = pis[i].Name.ToLower();
    15 if (name == "sign") return pis[i];
    16 }
    17 return null;
    18 }
    View Code

     Q6. 利用反射,遍历属性和属性值

     1 private string SetPlainText(string plain_text, object entity, string sign=null)
     2 {
     3 string result = plain_text;
     4 Type t = entity.GetType();
     5 PropertyInfo[] pis = t.GetProperties();
     6 
     7 for (int i = 0; i < pis.Length; i++)
     8 {
     9 string name = pis[i].Name.ToLower();
    10 object value = pis[i].GetValue(entity, null);
    11 if (CommFun.IsNullOrEmpty(value)) continue;
    12 
    13 string strValue;
    14 if (value is decimal) // YZF的接口decimal类型的参数不能包含.00(因为它以分为单位)
    15 strValue = ((Decimal)value).ToString("#");
    16 else
    17 strValue = value.ToString();
    18 
    19 result = result.Replace("{" + pis[i].Name.ToLower() + "}", strValue);
    20 }
    21 return result;
    22 }
    View Code

      Q7. MAC绑定失败,登录验证失败,没有确诊原因就猜测以为是DLL证书过期的问题,导致的弯路!

    这个问题还蛮严重的,因为自己没有去查明登录出错的原因,便自认为是证书的问题,就导致了一直花时间去研究证书的问题去了!后来,因康老师要我截图爆出来的错误,才发现,错误消息是我自己的程序爆出来的,最终才发现还是同Q1的问题,两台虚拟机时间不一致,导致验证MAC的随机数种子缓存一出来就过期了!!郁闷~~最终解决了,也算是好事!出一事,长一智。

    Q8. 对于firefox显示Flash时提示的: 插件 adobe flash 已崩溃?
    答:采用禁用 Flash 沙箱特性(还有其他解决方案,但感觉这个简单直接)

    32位、64位系统分别用记事本打开

    C:windowssystem32macromedflashmms.cfg
    C:windowssyswow64macromedflashmms.cfg

    加上下面这行,保存(不能保存则用管理员身份运行记事本)。

    ProtectedMode=0

  • 相关阅读:
    华为云DevCloud为开发者提供高效智能的可信开发环境
    【HC资料合集】2019华为全联接大会主题资料一站式汇总,免费下载!
    在modelarts上部署mask-rcnn模型
    独立物理机和虚拟机比较有什么优势?
    .Net Core下使用MQTT协议直连IoT平台
    解惑Python模块学习,该如何着手操作...
    sar命令,linux中最为全面的性能分析工具之一
    窥探日志的秘密
    Debian 如何使用测试版更新软件包到最新的版本
    如何使用vsphere client 克隆虚拟机
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/3790969.html
Copyright © 2020-2023  润新知