zoukankan      html  css  js  c++  java
  • 各类技术学习笔记

    1、C#的执行是同步的

    2、JavaScript的执行是异步的

    3、C#多线程的使用需注意多线程的同步

    4、有数据的存储就涉及到数据的检索(例如:C#集合(Collection);数据库)

    5、同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。委托的同步调用通过Invoke方法来实现(C#)

    6、异步调用不阻塞线程,而是把调用塞到线程池中,程序主线程或UI线程可以继续执行。委托的异步调用通过BeginInvoke和EndInvoke来实现(C#)

    7、委托(Delegate)特别用于实现事件和回调方法。就是叫别人帮你做事

    8、.Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。

    9、C#获取应用进程的线程数

      1)打开任务管理器,查看---选择列----线程计数 勾起来后,就可以查看到每个程序的线程数了

      2)

    using System.Diagnostics;
    Process.GetCurrentProcess().Threads.Count;

      3)

    int n = 0;
    foreach (System.Diagnostics.ProcessThread th in System.Diagnostics.Process.GetCurrentProcess().Threads)
     {
      if (th.ThreadState == System.Diagnostics.ThreadState.Running)
      {
        n++;
      }
    }

     10、C#中实现异步调用流程:

      1)、创建一个异步处理函数,并针对其定义一个委托;

      2)、在调用函数的时候,使用委托的BeginInvoke方法,指定在函数处理完成时的回调函数(如果不需要对完成事件做处理,可以给null值),并指定所需的参数(如果没有参数,也可以给null值);

      3)、在回调函数中处理完成事件。

      注:EndInvoke会使得调用线程阻塞,直到异步函数处理完成。显然,紧接在BeginInvoke后面的EndInvoke使用方式与同步调用等价。

      .NET处理异步函数调用,事实上是通过线程来完成的。这个过程有以下几个特点:

    • 异步函数由线程完成,这个线程是.NET线程池中的线程
    • 通常情况下,.NET线程池拥有500个线程(当然这个数量可以设置),每当调用BeginInvoke开始异步处理时,异步处理函数就由线程池中的某个线程负责执行,而用户无法控制具体是由哪个线程负责执行
    • 由于线程池中线程数量有限,因此当池中线程被完全占用时,新的调用请求将使函数不得不等待空余线程的出现。此时,程序的效率会有所影响

      学习博文《C#基础:异步调用

    11、领域驱动设计(DDD)

    http://www.cnblogs.com/daxnet

    http://www.cnblogs.com/netfocus/

    12、CQRS模式:命令查询职责分离模式

    http://www.cnblogs.com/daxnet

    http://www.cnblogs.com/netfocus/

    13、C#中异步调用和多线程的相同点和异同点

      相同点:异步调用和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。

      异同点:

      1)异步和多线程的区别之异步调用的本质

        所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。 熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的。DMA就是直接内存访问的意思,也就是说,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消耗CPU资源。只要CPU在发起数据传输时发送一个指令,硬件就开始自己和内存交换数据,在传输完成之后硬件会触发一个中断来通知操作完成。这些无须消耗CPU时间的I/O操作正是异步操作的硬件基础。所以即使在DOS 这样的单进程(而且无线程概念)系统中也同样可以发起异步的DMA操作。

      2)异步和多线程的区别之线程的本质

        线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入CPU资源来运行和调度。

    13、C#接口

      1)、从接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束。

      2)、从设计的角度来看:一个项目中用若干个类需要去编写,由于这些类比较复杂,工作量比较大,这样每个类就需要占用一个工作人员进行编写。比如A程序员去定Dog类,B程序员去写Cat类。这两个类本来没什么联系的,可是由于用户需要他们都实现一个关于”叫”的方法。这就要对他们进行一种约束。让他们都继承于IBark接口,目的是方便统一管理。另一个是方便调用。

    ......

  • 相关阅读:
    我的博客园的博客开通啦
    设置cookie
    JavaScript自动提示
    补码
    vim快捷键
    JavaScript获取URL参数
    Linux根目录下子目录的功能
    JavaScript分页栏链接转变算法
    可输可选可自动提示,还可增加一个!
    VS2008启动调试,出现“ 已经找到网站 正在等待回应”
  • 原文地址:https://www.cnblogs.com/yuzhihui/p/5507685.html
Copyright © 2011-2022 走看看