zoukankan      html  css  js  c++  java
  • 总结 乱

    C# 参考之方法参数关键字:paramsrefout

    如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。

    来自 <http://www.cnblogs.com/hunts/archive/2007/01/13/619620.html>

     

    C#() =>lambda表达式,表示一个匿名函数,=>前面的是参数,后面的是函数体。

    可以把它当作一个函数。

    举例:

    Func<int, int, int> Add = (x, y) => x + y;

    Console.WriteLine(Add(2, 3)); // 5

    Server.HtmlEncode 顾名思义 html编码

    Server.HtmlDecode 顾名思义 html反编码

    1)保存数据库之前就进行HTML编码(Server.HtmlEncode),读取显示时直接输出

    2)保存数据库之前未进行HTML编码,读取显示前(Server.HtmlEncode)

    C#<summary>的用途

    在一个类,方法或属性定义的上一行输入///就会出现<summary>. 调用这个类或方法时写在<summary>里的东西就会以提示的方式出现..

    例如:  /// <summary>

            /// 功能:完成消费交易的撤销,其处理流程是根据原交易终端流水号,找到原交易,并把该交易撤销,系统只支持当日撤销。

            /// </summary>

            /// <param name="p_Track2">2磁道信息,37bytes,右补空格</param>

            /// <param name="Track3">3磁道信息,104bytes,右补空格</param>

            /// <param name="Amount">原交易金额,单位:分</param>

            /// <param name="termstan">原交易终端流水号,6bytes</param>

            /// <param name="OperNo">操作员号,不定长</param>

            /// <param name="bitmap58">保留参数1,不定长</param>

            /// <param name="bitmap59">保留参数2,不定长</param>

            /// <returns></returns>

            [DllImport(@"C:WINDOWSicbcMposCore.dll")]

            [return: MarshalAs(UnmanagedType.BStr)]

            public static extern string DoRefund(StringBuilder p_Track2, StringBuilder Track3, int Amount, StringBuilder termstan, StringBuilder OperNo, StringBuilder bitmap58, StringBuilder bitmap59);

    5.HTTP GET

    POST

    public Response Invoke(Request request, string body)

            {

                var httpResponse = string.Empty;

                var url = request.GenerateUrl(BaseUrl);

                log.Info("RequestUrl: " + url);

                try

                {

                    var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

                    httpWebRequest.Method = "POST";

                    httpWebRequest.ContentType = "application/json";

                    httpWebRequest.Accept = "*/*";

                    httpWebRequest.Connection = "Keep-Alive";

                    httpWebRequest.KeepAlive = true;

                    httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)";

                    httpWebRequest.Timeout = 15000;

     

                    byte[] btBodys = Encoding.UTF8.GetBytes(body);

                    httpWebRequest.ContentLength = btBodys.Length;

                    httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);

     

                    using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())

                    {

                        using (var streamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.UTF8))

                        {

                            httpResponse = streamReader.ReadToEnd();

                        }

                        httpWebRequest.Abort();

                        httpWebResponse.Close();

                    }

     

                    log.Info("ResponseRaw: " + httpResponse);

                }

                catch (Exception e)

                {

                    log.ErrorFormat("调用WebApi失败,{0},url:{1}", e.Message, url);

                    return Response.NoResponse;

                }

                var response = new Response(request.Method, httpResponse);

                log.Debug("ResponseContent: " + response.reBased);

                return response;

            }

    介绍 日志 概念

           • 日志是一种 调试 和 追踪 手段. (调试手段还有 断点,单步执行,断言,内存快照,alert 等)

           • 日志的优点: 无须人工干预,能长期记录,对程序的侵入性小,能灵活配置

           • log4net 的配置和使用:

           1. 引用log4net.dll

           2. 添加 log4net 配置

           3. 在程序开始的地方启动配置 log4net.Config.XmlConfigurator.Configure();

           4. 在需要添加日志功能的类加上log字段 private static readonly log4net.ILog log = log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    1.引用log4net.dll

    2/添加log4net配置

    <?xml version="1.0" encoding="utf-8"?>

    <configuration>

      <configSections>

        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

      </configSections>

      <appSettings>

      </appSettings>

      <startup>

        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>

      </startup>

      <log4net>

        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">

          <layout type="log4net.Layout.PatternLayout">

            <conversionPattern value="%date [%thread] %-5level %logger [%ndc] &lt;%property{auth}&gt; - %message%newline" />

          </layout>

        </appender>

        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">

          <file value="logslog.txt" />

          <appendToFile value="true" />

          <maxSizeRollBackups value="50" />

          <maximumFileSize value="1MB" />

          <rollingStyle value="Size" />

          <staticLogFileName value="true" />

          <layout type="log4net.Layout.PatternLayout">

            <header value="[Header]&#13;&#10;" />

            <footer value="[Footer]&#13;&#10;" />

            <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />

          </layout>

        </appender>

        <root>

          <level value="DEBUG" />    ----------------------------------默认为DEBUG(对应用法log.DEBUG/log.ERROR等)

          <appender-ref ref="RollingLogFileAppender" />

          <appender-ref ref="ConsoleAppender" />

        </root>

      </log4net>

    </configuration>

     3/在程序开始的地方启动配置

    namespace ServiceSelf

    {

        public partial class frmMain : FormBase

        {

    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(

                System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            public frmMain()

            {

                log4net.Config.XmlConfigurator.Configure();

                log.Debug("程序启动");

    4/在需要添加日志功能的类加上log字段

     public class BankCard : GLib.IBankCardPayfor

        {

            private static readonly log4net.ILog log = log4net.LogManager.GetLogger(

                System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            public string ProviderName

            {

                get { return "银联卡"; }

            }

            private bool m_Inited = false;

            public bool Init()

            {

                try

                {

                    //初始化读卡器

                    int i_appType = 1;//01

                    int nResult = API.UMS_Init(i_appType);

                    log.Debug("银联卡收银初始化");

                    if (nResult != 0)

                    {

                        FrontEnd.SaveLog("银联卡收银", "API.UMS_Init返回值:" + nResult.ToString());

                        log.Debug("初始化UMS_Init返回值:" + nResult.ToString());

                        return false;

                    }

     C#中的Action<>和Func<>

    http://blog.csdn.net/jcx5083761/article/details/8552627

    利用wsdl.exe 生成 webservice 代理类

    来自 <http://blog.csdn.net/leapenemc0907/article/details/6067243>

    管理员身份运行CMD

    "C:Program Files (x86)Microsoft SDKsWindowsv7.0AinWSDL" /l:CS /n:Dadi.Service.SmClients /o:ErbanSmProxy.cs "http://sms.2office.net/WebService/services/SmsService?wsdl"

    wsdl /l:CS /n:InsuranceLib /o:EcooperationWebServiceService.cs http://test.mypicc.com.cn/ecooperation/webservice/insure?wsdl

    wsdl /l:CS /n:F2FPay /o:FrontAlipayService.cs http://localhost:8081/FrontAlipayService.asmx

    常用的调用WebService的方法有哪些?

    答:1.使用WSDL.exe命令行工具。

        2.使用VS.NET中的Add Web Reference菜单选项

    来自 http://www.cnblogs.com/fan0136/archive/2009/09/21/1571238.html

    Fiddle

    在会话列表中默认的文本的颜色从HTTP的响应的状态继承而来(红色代表错误,黄色代表需要授权)CONNECT类型为灰色,

    还有返回类型(CSS文件为紫色,HTML文件为蓝色,JS脚本为绿色,图片为灰色)你可以通过使用ui-color 标志位来改变和重写列表的默认颜色。

    (提示:ui-colorFiddler的脚本配置文件中,需要安装FiddlerScript

     

    来自 <http://www.cnblogs.com/kingwolf_JavaScript/archive/2012/11/07/FiddlerUI.html>

    DllImport

    /// <summary>

            /// 初始化密码键盘,检查冲正

            /// </summary>

            /// <param name="appType">应用类型 1:传统银行卡应用2:全民付应用3:预付卡</param>

            /// <returns></returns>

            [DllImport("\umsips\umsapi.dll")]

            public static extern int UMS_Init(int appType);

    /// <summary>

            /// 初始化密码键盘,检查冲正

            /// </summary>

            /// <param name="appType">应用类型 1:传统银行卡应用2:全民付应用3:预付卡</param>

            /// <returns></returns>

            [DllImport(@"C:umsipsumsapi.dll")]

    public static extern int UMS_Init(int appType);

     #region 创自读卡器API

            /// <summary>

            /// 打开串口

            /// </summary>

            /// <param name="port">串口号</param>

            /// <returns>0:成功 2:串口已打开 其它:失败</returns>

            [DllImport("CRT310.dll")]

            public static extern int OpenDevice(int port);

    app.config 文件:

          它是标准的 XML 格式文件, Settings.settings 所设置的所有属性,都在 app.config 有所体现,也就是你可以通过配置到 app.config 文件中写入你想要的

    来自 <http://blog.sina.com.cn/s/blog_6e5c92860100mnm6.html>

    Program.cs文件:

    整个应用程序的入口,Application.Run(new main.main());语句标记了你启动的窗口,你可以通过改变参数来设置你的启示界面。

    来自 <http://blog.sina.com.cn/s/blog_6e5c92860100mnm6.html>

    Failed to access IIS metabase解决方案:

    原因:IIS没有注册

    解决办法:在CMD中进入目录C:WINDOWSMicrosoft.NETFrameworkv2.0.50727,运行aspnet_regiis

    1、aspnet_regiis -ga administrator(administrator为当前用户)

    C:Documents and SettingsAdministrator>cd c:\windows\microsoft.net\framework\v2.0.50727

    2、aspnet_regiis -i (注册IIS)

    来自 <http://www.cnblogs.com/skylaugh/archive/2011/06/22/2086759.html>

    raiserror 是用于抛出一个错误

    来自 <http://www.cnblogs.com/xugang/archive/2011/04/09/2010216.html>

    -- =============================================

    -- Description:        一证一票实名制购票时,是否重复

    -- =============================================

    CREATE PROCEDURE self_IsSameOfRealNameSchem

    @StationNo INT,                                --隶属站编号

    @DriveDate DATETIME,                --发车日期

    @SchemNo INT,                                --车次号

    @IDCardNoList NVARCHAR(MAX),--证件号码列表,中间用半角逗号分开

    @TicketNum INT                                --购票数量

    AS

    BEGIN

    SET NOCOUNT ON;

    --查询班次信息

    DECLARE @TagStr NVARCHAR(50),@RealNameNeed BIT

    SELECT @TagStr=识别号,@RealNameNeed=售票实名制

    FROM dbo.可售班次 WITH(NOLOCK)

    WHERE 发车日期=@DriveDate AND 隶属站编号=@StationNo AND 车次号=@SchemNo

    IF @TagStr IS NULL

    BEGIN

    RAISERROR('查询班次信息失败',16,1)

    RETURN 1

    END

    IF @RealNameNeed=0--不要求实名制直接返回

    RETURN 0

    DECLARE @Error NVARCHAR(4000),@InputNum INT

    SELECT 子串 INTO #IDCardNoList

    FROM dbo.SpitStringToTable(@IDCardNoList,',')

    SELECT @InputNum=@@ROWCOUNT

    IF dbo.GetPublicSetInfo('实名制购票一票一证','0')='1' AND @InputNum<@TicketNum

    BEGIN

    RAISERROR('证件数量不得少于购票数量',16,1)

    RETURN 1

    END

    --检查有没有重复的

    SELECT 子串,COUNT(*) AS 数量

    INTO #OnlyOne

    FROM #IDCardNoList

    GROUP BY 子串

    SELECT @Error=''

    SELECT @Error=@Error+子串

    FROM #OnlyOne

    WHERE 数量>1

    IF LEN(@Error)>1

    BEGIN

    SELECT @Error='传入的证件号参数重复:'+@Error

    RAISERROR(@Error,16,1)

    RETURN 1

    end

    if dbo.GetPublicSetInfo('同证件号实名制售票','1')='0'

    BEGIN

    SELECT @Error=''

    SELECT DISTINCT @Error=@Error+证件号码+','

    FROM #IDCardNoList A INNER JOIN dbo.售票记录 B WITH(NOLOCK)

    ON B.班次识别号=@TagStr AND A.子串=B.证件号码 AND B.当前状态='已售'

    IF LEN(@Error)>1

    BEGIN

    SELECT @Error='下列证件号已有同班次售票记录:'+@Error

    RAISERROR(@Error,16,1)

    RETURN 1

    end

    END

    END

    GO

    public static bool ExecSql(string p_strSql, string p_ConnectString, SqlParaValueInfo[] p_Paras)

            {

                ClearErrors();

                bool bResult = false;

                using (SqlConnection connection = new SqlConnection(p_ConnectString))

                {

                    try

                    {

                        connection.Open();

                        using (SqlCommand command = new SqlCommand(p_strSql, connection))

                        {

                            foreach (SqlParameter para in GetSqlParams(p_Paras))

                                command.Parameters.Add(para);

                            command.CommandTimeout = DB.TimeOutTime;

                            command.ExecuteNonQuery();

                            bResult = true;

                        }

                    }

                    catch (Exception ee)

                    {

                        m_ErrMsg = ee.Message;

                        WriteSqlError(p_strSql, ee.Message);

                    }

                    finally

                    {

                        connection.Close();

                    }

                }

                return bResult;

            }

    EXEC  [dbo].[self_IsSameOfRealNameSchem]

    @StationNo=9992,

    @DriveDate='2016-07-07',

    @SchemNo=7613,

    @IDCardNoList=130423198906274027,

    @TicketNum=1

    65 (self_IsSameOfRealNameSchem)        下列证件号已有同班次售票记录:130423198906274027, Severity 16

    EXEC  [dbo].[self_IsSameOfRealNameSchem]

    @StationNo=9992,

    @DriveDate='2016-07-07',

    @SchemNo=5328,

    @IDCardNoList=',42098419810607101X',

    @TicketNum=1

    异步

     control.begininvoke(参数delegate)方法:在创建控件的基础句柄所在线程上异步执行指定委托。

    invoke(同步)和begininvoke(异步)的概念,其实它们所说的意思是相对于子线程而言的,其实对于控件的调用总是由主线程来执行的

    来自 <http://blog.csdn.net/thebesttome/article/details/7589856>

    Web API来管理联系人

             说明:为了方便数据不使用真正的数据库,而是通过内存数据模拟

    来自 <http://www.cnblogs.com/qingyuan/archive/2012/10/16/2725378.html>

    XML---对象系列化与反系列化

    来自 <http://blog.csdn.net/hdhai9451/article/details/12129579>

       public static string ObjectToXml(object obj, bool toBeIndented, Type type)

            {

                if (obj == null)

                {

                    throw new ArgumentNullException("obj");

                }

     

                //Create our own namespaces for the output

                XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

                //Add an empty namespace and empty value

                ns.Add("", "");

     

                Encoding gb2312 = Encoding.GetEncoding("GB2312");

                XmlSerializer serializer = new XmlSerializer(type);

                MemoryStream stream = new MemoryStream();

                XmlTextWriter writer = new XmlTextWriter(stream, gb2312);

                writer.Formatting = (toBeIndented ? Formatting.Indented : Formatting.None);

                serializer.Serialize(writer, obj, ns);

                string xml = gb2312.GetString(stream.ToArray());

                writer.Close();

                return xml;

            }

     

            public static string EndorseXML(GeneralInfo Head, List<EndorseInfo> lEndorse)

            {

                PolicyEndorsement pe = new PolicyEndorsement();

                pe.Head = Head;

                pe.EndorseInfos = lEndorse;

     

                StringBuilder sb = new StringBuilder();

                sb.Append(ObjectToXml(pe, false, typeof(PolicyEndorsement)));

                return sb.ToString();

            }

     

            //xml转行为实体类

            /// <summary>

            /// xml文件转化为实体类列表

            /// </summary>

            /// <typeparam name="T">实体名称</typeparam>

            /// <param name="xml">xml文件</param>

            /// <param name="headtag">xml头文件</param>

            /// <returns>实体列表</returns>

            public static List<T> XmlToObjectList<T>(string xml, string headtag) where T : new()

            {

                List<T> list = new List<T>();

                XmlDocument doc = new XmlDocument();

                PropertyInfo[] propinfos = null;

                doc.LoadXml(xml);

                //XmlNodeList nodelist = doc.SelectNodes(headtag);

                XmlNodeList nodelist = doc.GetElementsByTagName(headtag);

                foreach (XmlNode node in nodelist)

                {

                    T entity = new T();

                    //初始化propertyinfo

                    if (propinfos == null)

                    {

                        Type objtype = entity.GetType();

                        propinfos = objtype.GetProperties();

                    }

                    //填充entity类的属性

                    foreach (PropertyInfo propinfo in propinfos)

                    {

                        //实体类字段首字母变成小写的

                        string name = propinfo.Name.Substring(0, 1) + propinfo.Name.Substring(1, propinfo.Name.Length - 1);

                        XmlNode cnode = node.SelectSingleNode(name);

                        string v = cnode.InnerText;

                        if (!string.IsNullOrEmpty(v))

                        {

                            propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);

                        }

                    }

                    list.Add(entity);

     

                }

                return list;

            }

    请求:

                GeneralInfo gi = new GeneralInfo();

                gi.UUID = Settings.UnitID + DateTime.Now.ToString("yyyyMMddHHmmssfff");

                gi.PlateformCode = Settings.PartnerID;

                List<EndorseInfo> lEndorse = new List<EndorseInfo>();

                StringBuilder sb = new StringBuilder(2000);

                EndorseInfo ei = new EndorseInfo();

                for (int i = 0; i < PolicyNoList.Count; i++)

                {

                    ei = new EndorseInfo();

                    ei.EndorseDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

                    ei.PolicyNo = PolicyNoList[i];

                    lEndorse.Add(ei);

                    sb.Append(ei.PolicyNo);

                }

                gi.Md5Value = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(gi.UUID + sb.ToString().Trim(), "MD5").ToLower();

     

                string res = XmlDispose.EndorseXML(gi, lEndorse);

    执行:

    string resp = pr.insuranceRequest("001005", res);

     

    返回:

                        List<PolicyInfoReturn> lsReturn = pr.PolicyResultXML(resp);

    处理方法:

    public List<PolicyInfoReturn> PolicyResultXML(string xml)

            {

                if (xml.Length > 0)

                {

                    try

                    {

                        List<GeneralInfoReturn> gReturn = XmlDispose.XmlToObjectList<GeneralInfoReturn>(xml, "GeneralInfoReturn");

                        log.Debug("投保G" + gReturn[0].ErrorCode);

                        if (gReturn[0].ErrorCode == "00")

                        {

                            List<PolicyInfoReturn> lsReturn = XmlDispose.XmlToObjectList<PolicyInfoReturn>(xml, "PolicyInfoReturn");

                            if (lsReturn != null)

                            {

                                log.Debug("lsReturn数量:" + lsReturn.Count);

                                List<InsuredReturn> lsReturnd = XmlDispose.XmlToObjectList<InsuredReturn>(xml, "InsuredReturn");

                                if (lsReturnd != null)

                                {

                                    log.Debug("lsReturnd数量:" + lsReturn.Count);

                                    for (int i = 0; i < lsReturnd.Count; i++)

                                    {

                                        if (lsReturnd[i].CheckResult != "00")

                                        {

                                            FrontEnd.SaveHardWareLog("保险投保", "保险人返回值有误" + lsReturnd[i].CheckMessage, "软件故障");

                                            return null;

                                        }

                                    }

                                    return lsReturn;

                                }

                                else

                                {

                                    FrontEnd.SaveHardWareLog("保险投保", "保险人返回值为空", "软件故障");

                                    return null;

                                }

                            }

                            else

                            {

                                FrontEnd.SaveHardWareLog("保险投保", "投保返回值为空", "软件故障");

                                return null;

                            }

                        }

                        else

                        {

                            FrontEnd.SaveHardWareLog("保险投保", gReturn[0].ErrorCode.Trim(), "软件故障");

                            return null;

                        }

                    }

                    catch (Exception ex)

                    {

                        return null;

                    }

                }

                else

                {

                    log.Debug("返回值信息:" + xml.Length.ToString());

                    FrontEnd.SaveHardWareLog("保险投保", "返回值为空", "软件故障");

                    return null;

                }

            }

    C# Dictionary通过value获取对应的key

    来自 <http://www.cnblogs.com/mingmingruyuedlut/archive/2013/05/23/3067227.html>

    Data Source=61.153.65.30,3001;Initial Catalog=FrontEnd;Integrated Security=False;User ID=sa;Password=********;Application Name=GLibApplication

    C#使用SqlBulkCopy批量更新数据

    来自 <http://blog.csdn.net/ltolll/article/details/10213761>

    浅谈OracleBulkCopy的使用

    来自 <http://blog.csdn.net/msdnchina/article/details/50237609>

    DataView.ToTable 方法 (String, Boolean, String[])

    Visual Studio 2010

    根据现有 DataView 中的行,创建并返回一个新的 DataTable

    来自 <https://msdn.microsoft.com/zh-cn/library/h2b6ehaa(v=vs.100).aspx>

    未能为 SSL/TLS 安全通道建立信任的解决办法

    2016年8月26日

    10:31

    远程服务器返回错误 (401) 未经授权解决方案

    没有权限 设置权限

    WebClient client=new WebClient();

    //NetworkCredential credentials = new NetworkCredential("名字", "密码");

    //client.Credentials = credentials;

    未能为 SSL/TLS 安全通道建立信任的解决办法

    最简单的办法是:

    1,先加入命名空间:

    using System.Net.Security;

    using System.Security.Authentication;

    using System.Security.Cryptography.X509Certificates;

    2,再重载CheckValidationResult方法,返回true

    public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)

    { // 总是接受

         return true;

    }

    3,然后在HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);前面加上如下一行代码:

    ServicePointManager.ServerCertificatidationCallback = new System.Net.Security.RemoteCertificatidationCallback(CheckValidationResult);//验证服务器证书回调自动验证

    //ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

    来自 <http://www.cnblogs.com/Jin-1007/archive/2012/04/13/2445596.html>

     

    HTML5 LocalStorage 本地存储

    来自 <http://www.cnblogs.com/xiaowei0705/archive/2011/04/19/2021372.html>

     

     

    清空select标签中option

    document.formName.selectName.options.length = 0;

    来自 <http://www.jb51.net/web/90901.html>

     

    Windows服务

    Ztree

     

     

     

     

  • 相关阅读:
    IntelliJ IDEA-快捷键
    12-String类、static关键字、Arrays类、Math类
    11-API之Scanner类、Random类、ArrayList类
    C语言二叉树中序遍历——递归思想
    解决SQL Server数据库不同版本不能兼容使用的问题
    绿色版,免安装版和安装版的区别
    ScreenToGif 动图发送到手机上打开模糊
    eclipse中更改jsp默认编码
    sql重新不允许保存修改问题
    SQL因为重复行导致的问题
  • 原文地址:https://www.cnblogs.com/songyulan/p/5978088.html
Copyright © 2011-2022 走看看