各类技术学习笔记

Posted yuzhihui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各类技术学习笔记相关的知识,希望对你有一定的参考价值。

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接口,目的是方便统一管理。另一个是方便调用。

......

以上是关于各类技术学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

c# 异步编程学习笔记

c# 异步编程学习笔记

c# 异步编程学习笔记

c# 异步编程学习笔记

C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

异步电路设计基础学习笔记