zoukankan      html  css  js  c++  java
  • 近几日工作笔记整理

     一、C#中如何让两个timer控件同时运行

    Timer,其实是使用了线程异步调用,既然线程可以并发,那么Timer是可以同时调用Start()的。

    二、静态函数与非静态函数

    查不同贴子,找到 下面不同解说,我认为,不同方面各有道理:

    解说一:在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别
    如果一个方法与他所在类的实例对象无关,那么它就应该是静态的,而不应该把它写成实例方法。
    静态方法和实例化方式的区分是为了解决模式的问题。

    解说二:静态只是少了一次构造而已 没有什么谁高谁低

    只是有些类 这个类他在世界上不具备很多实体对象,那就是这么一个类 

    比如数学方面的计算,你需要创建多个对象吗? 不需要 他就在那 所以静态。

    而人 则需要动态创建 很多人 每个人都不一样

    解说三:静态就象做烧饼,先做好了卖的时候直接卖,卖的时候省事。非静态有点像做煎饼,做一个买一个,不糟践。

    解说四:有点差别  是实例方法的第一个参数是 this指针,静态方法没有this指针参数

    解说五:对象的实例化指的是对象数据的实例化,而不是对象本身的实例化
    也就是创建一个对象,需要实例化的是对象的数据,而不是对象的成员方法
    不管什么对象在内存都是通过代码段和数据段来分开存储的,这两个东西是分开的,所谓的面向对象只是对用户的展现形式,并不是系统底层的真是情况,对cpu来说没有任何的对象,只有代码和数据。
    所以对象的方法本身在内存中只有一个副本,不管是否创建对象的实例始终存在与程序的代码空间
    静态方法不需要创建类的实例即可直接调用
    实例方法需要依赖类的实例才能调用,调用前增加了创建实例的开销,如果不考虑对象的创建(比如对象只创建一次),则调用静态方法和实例方法的速度是一样的。

    三、类静态变量

    在类中定义公共静态变量,在内存中固定地址,不会变,不用实例化。可以一次赋值后长时间保存。值供不同类间使用都可以。

    若在类中定义普通公共变更,则用的时候需要实例化此类,这些每一次实例化都会在内存中开辟一个新地址和空间以供使用,每次实例化就相当于新的变量,需要新赋值。

    四、Oracle批量入库

    用update 或blukcopy。

    update示例:

    DataTable dt2 = new DataTable();
    OracleDataAdapter da = new OracleDataAdapter();
    da.SelectCommand = new OracleCommand();
    da.SelectCommand.Connection = DbService.GetOracleConn();
    da.SelectCommand.CommandType = CommandType.Text;
    da.SelectCommand.CommandText = "select * from cmn_t_position_history where 1=2";
    try
    {
    da.Fill(dt2);
    foreach (DataRow dr in dt.Rows)
    {
    dt2.Rows.Add();
    int count = dt2.Rows.Count;
    dt2.Rows[count - 1]["device_type"] = dr["device_type"].ToString();
    dt2.Rows[count - 1]["device_id"] = dr["device_id"].ToString();
    dt2.Rows[count - 1]["location_time"] = Convert.ToDateTime(dr["location_time"].ToString());
    dt2.Rows[count - 1]["location_x"] = dr["location_x"].ToString();
    dt2.Rows[count - 1]["location_y"] = dr["location_y"].ToString();
    dt2.Rows[count - 1]["def_location_x"] = dr["def_location_x"].ToString();
    dt2.Rows[count - 1]["def_location_y"] = dr["def_location_y"].ToString();
    }
    OracleCommandBuilder ocb = new OracleCommandBuilder(da);
    try
    {
    num = da.Update(dt2);
    if (num > 0)
    {
    sb.Clear();
    sb.AppendFormat("update cmn_position_info set s_flag='{0}' where s_flag='{1}'", "1", "0");
    msg = DbService.ExecuteSqliteSql(sb.ToString());
    }
    }
    catch (SQLiteException ex)
    {
    LogHelper.LogHelper.RecordLog(0, ex.Message);
    return ex.Message;
    }

    blukcopy示例:

    OracleBulkCopy bulkCopy = new OracleBulkCopy(connstr, OracleBulkCopyOptions.Default);
    bulkCopy.DestinationTableName = "CMN_T_POSITION_HISTORY";
    bulkCopy.BatchSize = dt_cj_zflocation.Rows.Count;

    try
    {
    if (dt_cj_zflocation != null && dt_cj_zflocation.Rows.Count != 0)
    bulkCopy.WriteToServer(dt_cj_zflocation);
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }
    finally
    {
    if (bulkCopy != null)
    bulkCopy.Close();
    }

  • 相关阅读:
    2017 ICPC beijing E
    1629 B君的圆锥
    1298 圆与三角形
    通过String获取字符数组
    Java中的代码点与代码单元
    数据库事务隔离级别
    oracle修改密码、添加用户及授权
    Python起航
    软件测试常见概念
    TestNG--@Factory
  • 原文地址:https://www.cnblogs.com/lxxhome/p/6908223.html
Copyright © 2011-2022 走看看