zoukankan      html  css  js  c++  java
  • 编程学习杂烩

    1. 面向过程编程方法 ~ 面向对象编程方法 ~ 函数式编程

    软件设计思想:函数--对象--组件-服务
    [1]. 面向过程编程:编程范式,结构化开发方法,面向功能的程序设计、面向数据流的处理方式,按功能分析系统需求,自顶向下、逐步求精、模块化,结构化分析、结构化设计、结构化编程,最小的程序单元是函数,一切以函数为中心、函数最大;
    [2]. 面向对象编程:编程范式,Object-Oreinted Programming,基于代码重用的需要,最小的程序单元是类,类定义=成员变量(状态数据)+方法(行为),一切以对象为中心、对象最大,面向对象分析、面向对象设计、结构化面向对象编程,高内聚、低耦合,封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism),消息是对象之间相互通信的机制、继承是类之间共享属性和操作的机制;
    [3]. 基于组件开发:Component-Based Development,软件工程实践,组件是对功能的抽象,设计时通常要求组件之间高内聚松耦合。关注系统层次、子系统边界和子系统间通讯的的设计,处于代码层面。  
    [4]. 面向服务架构:SOA, Service-Oriented Architecture,基于组件的模型,粒度最大,模块化系统结构一组可互操作的服务的原则或方法论,是创建面向服务应用程序的最佳实践,通常在考虑系统架构时才会触及SOA。作为一种进行系统开发的新的体系架构,具体应用程序的功能由松耦合并且具有统一接口定义方式的组件(也就是Service)通过服务之间定义良好的接口和契约组合构建。SOA主要用于分布式系统的构建,设计者只需要通过集成各种服务即可完成系统的构建。
    [5]. 函数式编程:下一个主流编程范式(programming paradigm),"结构化编程"的一种,函数是"第一等公民"(first class functions),函数相对独立、没有"副作用",模块化、自由度高、易于理解,易于部署"并发编程"(concurrency)。函数式编程 - sqh;  

    2.  预处理

    预处理指令 PreProcessor Directive 指示编译器如何处理源代码。

    条件编译指令:#if, #else, #elif, #endif
    诊断指令:#warning, #error
    行号指令:#line
    区域指令:#region, #endregion
    #pragma warning disable/restore:关闭或重新开启警告信息 
    

    3.  数组 Array - 链表 List 等集合类的输出方法总结

    Java

    arr = lst.Where(过滤条件).ToArray();
    Array.ForEach(arr, val => Console.Write(val+" "));
    
    lst = arr.Where(过滤条件).ToList();
    lst.ForEach(val => Console.Write(val+" "));

    Java

    遍历 Collection 对象 Collection c = new 派生类();的方法:
      [1].System.out.println(c);
      [2].利用"foreach"循环:for(Object obj : c)
      [3].利用对象的实例方法 forEach():c.forEach(Lambda表达式) 或 c.forEach(System.out::println);
      [4].利用 Iterator 接口的 forEachRemaining() 方法:it.forEachRemaining(Lambda表达式);

    4. 转义字符: 和

    •  换行, 回车(把光标移动到该行的首位置)
    • 在 win 系统中操作文件时,换行需要   同时用才会生效(Environment.NewLine)

    5. 关于字典集新增键值对

    (1)Dictionary        
    var dic = new Dictionary<string, Object>();

    // 若_key不存在,则新增键值对<_key, _value>
    // 若_key存在,则System.ArgumentException: Dictionary<TKey,TValue> 中已存在具有相同键的元素
    dic.Add(_key, _value);
    // 若_key不存在,则新增键值对<_key, _value>
    // 若_key存在,则更新键_key对应的值为_value
    dic[_key] = _value;
    

    (2)ConcurrentDictionary
    var dic = new ConcurrentDictionary<string, Object>();

    // 键值对成功添加,返回值则为true,否则为false
    // 即:若_key不存在,返回true;若_key存在,返回false
    dic.TryAdd(_key, _value);
    // 功能同Dictionary
    dic[_key] = _value; 
    

    附带参考字典集索引功能的源定义

    public class Dictionary/ConcurrentDictionary<TKey, TValue> : XXX
    {
         // 摘要: 获取或设置与指定的键相关联的值
         // 参数key: 要获取或设置的值的键
         // 返回结果: 与指定的键相关联的值,如果找不到指定的键
         //   get操作会引发System.Collections.Generic.KeyNotFoundException
         //   set操作会创建一个具有指定键的新元素
         // 异常:
         //  System.ArgumentNullException: key为null
         //  System.Collections.Generic.KeyNotFoundException: 已检索该属性,并且集合中不存在key
         public TValue this[TKey key] { get; set; }
    }
    

    6. 关于Distinct去重

    核心是提供通用比较类,实现 IEqualityComparer<T> 接口:

    public class CommonEqualityComparer<T, V> : IEqualityComparer<T>
    {
        private Func<T, V> keySelector;
    
        public CommonEqualityComparer(Func<T, V> keySelector)
        {
            this.keySelector = keySelector;
        }
    
        public bool Equals(T x, T y)
        {
            return EqualityComparer<V>.Default.Equals(keySelector(x), keySelector(y));
        }
    
        public int GetHashCode(T obj)
        {
            return EqualityComparer<V>.Default.GetHashCode(keySelector(obj));
        }
    }
    

    然后再应用扩展方法,新增Distinct方法(此处注意理解扩展方法的原理)

    public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector)
        {
            return source.Distinct(new CommonEqualityComparer<T, V>(keySelector));
        }
    

    然后可以优雅地使用:

    list = list.Distinct(p => p.Name).ToList();
    

    具体参见:奇思妙用:Distinct 扩展

  • 相关阅读:
    开学第二周java作业暨动手动脑p1
    开学第一周
    暑假第九周
    暑假第八周
    bzoj4033:[HAOI2015]树上染色
    bzoj4472:[Jsoi2015]salesman
    dp专题复习
    bzoj1864:[Zjoi2006]三色二叉树
    bzoj1190:[HNOI2007]梦幻岛宝珠
    bzoj2794:[Poi2012]Cloakroom
  • 原文地址:https://www.cnblogs.com/wjcx-sqh/p/5929890.html
Copyright © 2011-2022 走看看