学习杂记

1.C#中调用C++函数的注意事项
第一步:定义DLL
[DllImport("JZTDevDll.dll", EntryPoint = "FPITemplate")]
public static extern int FPITemplate(int nPort,ref byte _psMB,ref int lpLength);
第二步:调用
byte[] _psMB = new byte[513];
int _lpLength = _psMB.Length - 1;
int i = FPITemplate(FPIDevDetect(),ref _psMB[0],ref _lpLength);
2.领域对象设计(参考CSDN)
又称,概念模型、领域对象模型、分析对象模型。
领域模型是对领域内的概念类或实现世界中对象的可视化表示。
其专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。
什么是领域模型?
其业务一般包括三个部分:
(1)、操作者(角色)
(2)、系统为操作者提供的行为
(3)、操作对象
其中的操作对象就是领域模型的来源。在进行需求分析时,领域模型来自于业务描述中的名词以及对名词的抽象。
当然描述业务的名词不都是模型,有可能是模型的一个属性,也可能是角色、或者是和业务无关紧要的描述。在业务描述中有些关联名词描述的则是模型之间的关系。
一个描述业务的名词成为领域模型,至少必背两点:
要么是业务中确实存在实体、要么是业务实体的提炼(抽象)
3.IOC
IOC, Inversion of Control 是一个重要的面向对象编程法则,用于消减计算机程序的耦合问题。
又被称为依赖注入——Dependency Injection 简称DI。
4.常量
常量分为静态常量、动态常量两种
静态常量:
静态常量是指编译器在编译时对常量进行解析,并将常量的值替换成初始化的那个值。
动态常量:
动态常量的值是在允许时才获取的,编译器编译期间将其标示为只读常量,而不用常量的值代替,这种常量不必再生命时就初始化,可以延迟到构造函数中进行初始化。
5.const和readonly的区别?
Const修饰的常量属于静态常量,必须在声明时初始化;Readonly修饰的常量为动态常量;
const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值。
Const修饰的常量可以声明在类中也可以在函数体内;Readonly修饰的常量只能声明在类本身;
Const修饰的常量默认为静态的;Readonly使用静态就必须显示声明;
6.string.Empty、””、null
string.Empty不分配存储空间
“”分配一个长度为空的存储空间
string.Empty、null都表示空字符串。
例如:
string str1 = string.Empty;
string str2=null;
str1,表示一个空字符串,但在内存中有准确的指向;
string str2=null;只是定义了一个string类的引用,str2没有任何指向(因此在使用前如果不实例化的话,将报错)。
因此一般建议优先使用string.Empty。

SOA
SOA, Service Oriented Architecture,简单的被理解为,面向服务的框架。
但是,更多的被认为,一整套新的分布式软件系统构造方法和环境,其包含:运行环境、编程模型、架构风格和相关方法论等。其涵盖服务的整个生命周期:建模—开发—整合—部署—运行—管理。
简介:
是一个组件模型,其将应用程序不同的功能单元(称为服务)通过这些服务之间定义良好的接口和契约组织联系起来。接口是采用中立的方式进行定义的,其应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种系统中的服务可以使用一种统一和通用的方式进行交互。
SO (Service-Oriented Architecture),面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML/Web Service技术之后的自然延伸。
SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
基本特征:
SOA的实施具有几个鲜明的基本特征。实施SOA的关键目标是实现企业IT资产的最大化作用。要实现这一目标,就要在实施SOA的过程中牢记以下特征:
可从企业外部访问
随时可用
粗粒度的服务接口分级
松散耦合
可重用的服务
服务接口设计管理
标准化的服务接口
支持各种消息模式
精确定义的服务契约 
SOA服务具有平台独立的自我描述XML文档。

10.Lambda表达式
Lambda表达式是一个匿名函数,其可以包含表达式和语句,并且可以用于创建
委托或表达式目录树类型。
所有的Lambda表达式都使用Lambda 运算符=>,该运算符读为“goes to”。
该Lambda运算符的左边是输入参数(如果有),右边包含表达式或语句块。
Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表
达式分配给委托类型,如下所示:
delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate⑸; //j = 25

11.多线程调用带参数的方法
*****************调用一个参数的函数****************
#region 执行带一个参数的多线程
Thread mythread = new Thread(new ParameterizedThreadStart(Calculate));
mythread.IsBackground = true;
mythread.Start(500);
#endregion

//带一个参数的委托函数
private void Calculate(object Max)
{
int max = (int)Max;
Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = 0; i < max; i++)
{
Thread.Sleep(5);
}
stopwatch.Stop();
long lSearchTime = stopwatch.ElapsedMilliseconds;
MessageBox.Show(lSearchTime.ToString() + "毫秒");
}

*****************调用多个参数的函数****************
方式一:类对象法
定义一个类,将要传的参数设置为类的属性,然后将参数值赋值给类的属性
将类作为一个参数进行传达。
EG:
class MyClass
{
public int Max { get; set; }
public int Min { get; set; }
}
#region 第一种方式:执行带多个参数的多线程
MyClass model = new MyClass();
model.Max = 500;
model.Min = 0;
Thread mythread1 = new Thread(new ParameterizedThreadStart(CalculateTwo));
mythread1.IsBackground = true;
mythread1.Start(model);
#endregion
private void CalculateTwo(object Myclass) //带多个参数的委托函数
{
MyClass model = (MyClass)Myclass;
Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = model.Min; i < model.Max; i++)
{
Thread.Sleep(5);
}
stopwatch.Stop();
long lSearchTime = stopwatch.ElapsedMilliseconds;
MessageBox.Show(lSearchTime.ToString() + "毫秒");
}

方式二:lambda表达式的方式,简单方便
EG:
#region 第二种方式:执行带多个参数的多线程
Thread mythread2 = new Thread(() => CalculateThree(500, 0));
mythread2.IsBackground = true; //設置為後臺線程,程式關閉后進程也關閉,如果不設置true,則程式關閉,此線程還在內存,不會關閉
mythread2.Start();
#endregion
private void CalculateThree(int Max,int Min) //带多个参数的委托函数
{
Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = Min; i < Max; i++)
{
Thread.Sleep(5);
}
stopwatch.Stop();
long lSearchTime = stopwatch.ElapsedMilliseconds;
MessageBox.Show(lSearchTime.ToString() + "毫秒");
}
12.引用类型、值类型
NET Framework 中的所有类型不是值类型就是引用类型
值类型是使用对象实际值来表示对象的数据类型。如果向一个变量分配值类型的实例,则该变量将被赋以该值的全新副本。
引用类型是使用对对象实际值的引用(类似于指针)来表示对象的数据类型。如果为某个变量分配一个引用类型,则该变量将引用(或指向)原始值。不创建任何副本

时间: 2024-10-07 03:04:36

学习杂记的相关文章

[Flask]学习杂记--模板

这个学习杂记主要不是分享经验,更多是记录下falsk的体验过程,以后做东西在深入研究,因为django之前用的时间比较长,所以很多概念都是一看而过,做个试验了解下flask的功能. flask中使用是jinja2 模板,和django自带的模板很类似,但又比django的模板强大,提供了更多有用的工具,基本使用上基本都是一致的. 写了一个小案例,把模板渲染的基本步骤和变量传递的基本使用练习了下. jinjia2 模板文档 http://jinja.pocoo.org/docs/dev/ flas

emacs学习杂记

1.下载emacs源码编译安装后,安装路径在:/usr/local/bin 也可在emacs源码下生产的Makefile查看安装的路径:prefix=/usr/local bindir=${exec_prefix}/bin 2.emacs学习:Emacs 编辑环境,第 1 部分: 学习 Emacs 的基础知识 替代sourceinsight 用emacs 让emacs强于sourceinsight 3.cscope在emacs的配置与使用

学习杂记之root密码的更改

1  在学习linux过程中总会出现忘记root密码的时候,这是要在开机启动的系统选项中按上下键.使得它的页面停留在你要更改密码的选项后按e,之后会进入一个文本,在他的最后第2行会有这样的字眼ro  rd.XXXX  这是你将光标移到到对应位置,将原有的ro  rd.  更改为rw  rd.break 然后按ctrl+r这时系统会进入一个假root,输入chroot sysroot 可以变成真的root 然后passwd  改密码即可,如果系统的selinux 是开的话 要touch /.aut

Linux学习杂记

最近一口气看完了韩顺平老师讲的Linux视频教程,自己也在学习的过程中做了些笔记,记载如下,希望帮助到一些喜欢研究Linux的同学,也算是在云端备份一下笔记吧,以免电脑出现不可控的因素而遗失自己的心血. 首先声明,这篇笔记不是按照韩老师讲的顺序来写的,可能有些凌乱,但我相信,你总能找到你想要的信息: Linux必看书籍: 鸟哥的私房菜 Linux编程从入门到精通 Linux内核安全剖析 命令: shutdown -h now  立刻关机 shutdown -r now   重启 reboot  

学习杂记1:c#,顺序泛型栈,泛型委托,Lambda,拓展方法

最近又重新回过头来学习C#,才发现之前学习的知识有多么的浅显,有些东西还是挺难懂的,但是比较有意思,例如协变,逆变,不变就挺有意思,但是也挺绕,下面是学习过程中写的一些代码,有点乱,就当日记记叙一下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Genericity泛型 { //泛型委托 p

Disruptor学习杂记

慎入,有点乱,只是学习记录,disruptor_2.10.4 1.Disruptor对象有一个EventProcessorRepository对象 2.EventProcessorRepository里储存的是EventProcessorInfo和EventHandler(既创建Disruptor对象时设置的EventHandler)的映射关系, 及EventProcessorInfo和EventProcessor(实际为BatchEventProcessor)的映射关系 2.1 首先看看Bat

Python学习杂记_4_分支和循环

分支 和 循环 分支和循环这俩结构在各语言中都有着很重要的地位,当然我之前都没有学好,这里总结一下在Python学习中对这俩结构的认识. 分支结构 # 单分支 if 条件判断: 执行语句- # 双分支 if 条件判断: 执行语句- else: 执行语句- #多分支 if 条件判断: 执行语句- elif: 执行语句- else: 执行语句- 循环结构 1. while循环 ,需要定义循环变量来控制循环. i = 0初始化一个控制循环的变量 while 有关循环变量的条件判断: 执行循环语句 -

go语言学习杂记

go语言在windows下下载安装 推荐在golang中国下载 http://www.golangtc.com/download 安装.... go环境变量与工作目录 根据约定GOPATH需要建立3个目录 bin(存放编译后生成的可执行文件) pkg(存放编译后生成的包文件 .a) src(存放项目源码 比如:.go .c .h .s等)使用go env查看环境 常用命令 go get:获取远程包(git或hg(google code)) go run :直接运行程序 go bulid :测试编

【Obj-C】学习杂记

之前大学学过C++,忘得差不多了,前阵子看了些<[中文版]C语言编程:一本全面的C语言入门教程(第3版)>,觉得可以直接开始看<Objective-C基础教程(第2版)>pdf版. 恩,#import就是#include啦,#import<Foundation/foundation.h>就包含默认所有的头文件,很方便,唯一的不会重复. Obj-C的Bool不同于C的,是一个八位带符号的字符类型,其实只看末位,是0就NO,是1就YES(有别于TRUE&FALSE)

C/C++学习杂记

1.win32控制台程序中经常会出现该提示: 该提示在我们测试代码时,可以用来避免cmd窗口在输出完最终结果后立刻自动退出(基本看不到最终的结果是什么),无法判断代码是否存在问题的尴尬情况. 在vs2011编译器,C++项目中实现只要两行代码: 首先是要包含的头文件 :#include <stdlib.h> 之后只要在合适位置调用函数即可 : system(PAUSE);