07 2020 档案
摘要:前言 一般来说.NET程序员是不用担心内存分配释放问题的,因为有垃圾收集器(GC)会自动帮你处理。但是GC只能收集那些不再使用的内存(根据对象是否被其它活动的对象所引用)来确定。所以如果代码编写不当的话,仍然会出现内存泄漏的问题,常见的情况有:一个静态变量引用了一个应该被释放的对象,事件注册后不解除
阅读全文
posted @ 2020-07-28 11:00
Linybo2008
摘要:1|0REST(一种软件架构风格) 1|1全称:Representational State Transfer 1|2含义:(表述性 状态 转移) 是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。 在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simpl
阅读全文
posted @ 2020-07-28 09:30
Linybo2008
摘要:网上有很多很多的人在问各IoC框架的对比,也有很多人做了各种各样的测试,下面这个,是包括的框架最多的,当然这种小测试测得都比较片面,但至少能在某一确定的方面反映问题。同样,你们可以把测试代码下载回去,略作修改测试你们感兴趣的方面。 来源网站和测试代码见:http://www.palmmedia.de
阅读全文
posted @ 2020-07-28 09:18
Linybo2008
摘要:重构是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程。 一、何时需要重构 1、代码中存在重复的代码; 如果类中有重复的代码块,需将其提炼出一个新的独立方法,如果是不同类中具有相同的代码,将其提炼成一个新类。 2、过大的类和过长的方法; 过大的类往往是类抽象不合理的结
阅读全文
posted @ 2020-07-27 11:19
Linybo2008
摘要:原文:http://blog.sojingle.net/programming/csharp/csharp-collections-dictionaries-using-foreach 对于.net Framework中内置的几种集合类,foreach是一种很方便的遍历方式: 1.非泛型&弱类型的C
阅读全文
posted @ 2020-07-27 10:06
Linybo2008
摘要:CSS响应式布局 媒体查询 媒体查询是响应式布局中非常常用的一种手段,在学习媒体查询之前要先了解什么是响应式。 所谓响应式即在不同尺寸屏幕设备上响应的内容不同 相信在之前你写的页面在PC端看非常华丽工整,但是一拿到移动端全部乱了套,这就是因为没有对页面做响应式处理。 Media Queries能在不
阅读全文
posted @ 2020-07-24 15:21
Linybo2008
摘要:从下面目录中可以看到,本系列有16篇文章,外加两篇后补的,一共18篇文章。写了半个月,从9月17号开始写的。每篇文章更新时,读者的反馈还是可以的,虽然不至于上头条,但是也算是中规中矩,有看的人,也有评论的人。特别是在后期讲闭包的时候。 我从来都不做基础入门教程,因为基础入门的教程,要想讲的和别人不一
阅读全文
posted @ 2020-07-24 10:17
Linybo2008
摘要:阅读目录 关闭 什么是鸭子类型 javascript的面向对象 封装 继承 多态 原型 this指向 call apply band js中的闭包 什么是高阶函数 在写面向对象编程思想-设计模式中的js部分的时候发现很多基础知识不了解的话,是很难真正理解和读懂js面向对象的代码。为此,在这里先快速补
阅读全文
posted @ 2020-07-24 10:12
Linybo2008
摘要:阅读目录 关闭 定义 C#实现 JS实现 我们大多时候用着面向对象的语言,写着面向过程的代码。 学习设计模式不是死搬硬套,更不是为了模式而模式。 我们学习设计模式是要学习其中的编程思想,面向对象的的思想。 设计模式就像是拳法一样,拳法只是用来练习的。你实战的时候一定不会打完上一个动作再打下一个动作。
阅读全文
posted @ 2020-07-24 10:10
Linybo2008
摘要:一:讲故事 上一篇介绍的 6 个特性从园子里的反馈来看效果不错,那这一篇就再带来 6 个特性同大家一起欣赏。 二:特性分析 1. 像弱类型语言一样解析 json 大家都知道弱类型的语言有很多,如: nodejs,python,php,它们有一个🐮👃的地方就是处理json,不需要像 强类型语言 那
阅读全文
posted @ 2020-07-24 10:00
Linybo2008
摘要:一:讲故事 看完官方文档,阅读了一些 Newtonsoft 源码,对它有了新的认识,先总结 六个超经典又实用的特性,同大家一起分享,废话不多说,快来一起看看吧~~~ 二:特性分析 1. 代码格式化 如果你直接使用 JsonConvert.SerializeObject的话,默认情况下所有的json是
阅读全文
posted @ 2020-07-24 09:59
Linybo2008
摘要:一:背景 1. 讲故事 在开始本文之前,真的好想做个问卷调查,到底有多少人和我一样,对 JsonConvert 的认识只局限在 SerializeObject 和 DeserializeObject 这两个方法上(┬_┬), 这样我也好结伴同行,不再孤单落魄😁😁😁,或许是这两个方法基本上能够解
阅读全文
posted @ 2020-07-24 09:58
Linybo2008
摘要:阅读目录 关闭 单点登录(SSO)原理 手撸一个SSO IdentityServer4实现SSO 源码地址(demo可配置数据库连接后直接运行) 推荐阅读 什么是单点登录? 我想肯定有一部分人“望文生义”的认为单点登录就是一个用户只能在一处登录,其实这是错误的理解(我记得我第一次也是这么理解的)。
阅读全文
posted @ 2020-07-24 09:56
Linybo2008
摘要:阅读目录 关闭 前言 安装和基本使用 开始抓包 显示过滤器 捕获过滤器 着色规则 抓取localhost(环回地址) 抓取移动设备流量 TCP/IP四层协议 TCP三次握手 TCP四次挥手 HTTPS的抓包 UDP协议 ModBusTcp协议 结束 前言 关于抓包我们平时使用的最多的可能就是Chro
阅读全文
posted @ 2020-07-24 09:54
Linybo2008
摘要:阅读目录 关闭 推荐MiniProfiler插件 数据准备 foreach循环的陷进 AutoMapper工具 联表查询统计 性能提升之AsNonUnicode 性能提升之AsNoTracking 多字段组合排序(字符串) lamdba条件组合 EF的预热 count(*)被你用坏了吗(Any的用法
阅读全文
posted @ 2020-07-24 09:52
Linybo2008
摘要:一:背景 1. 讲故事 最近因为各方面原因换了一份工作,去了一家主营物联柜的公司,有意思的是物联柜上的终端是用 wpf 写的,代码也算是年久失修,感觉技术债还是蛮重的,前几天在调试一个bug的时候,看到了一段类似这样的代码: var dt = new DataTable(); SqlDataAdap
阅读全文
posted @ 2020-07-24 09:50
Linybo2008
摘要:天天写,不一定就明白。 又及,前两天看了一个关于同步方法中调用异步方法的文章,里面有些概念不太正确,所以整理了这个文章。 一、同步和异步。 先说同步。 同步概念大家都很熟悉。在异步概念出来之前,我们的代码都是按同步的方式写的。简单来说,就是程序严格按照代码的逻辑次序,一行一行执行。 看一段代码: p
阅读全文
posted @ 2020-07-23 09:43
Linybo2008
摘要:先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象。HttpRuntime.Cache:获取当前应用程序的Cache。 我们再用.NET Reflector工具看看HttpContext.Cache和HttpRuntime.Cache
阅读全文
posted @ 2020-07-22 17:29
Linybo2008
摘要:HTTP是一个无状态的协议。每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况。 而实际上,我们的系统往往要支持用户在客户端浏览器和服务端之间的多次请求共用相同的数据(状态),比如用户的登陆账号信息。于
阅读全文
posted @ 2020-07-22 17:19
Linybo2008
摘要:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.CodeDom.Compiler; using System.Reflection; namespac
阅读全文
posted @ 2020-07-22 16:47
Linybo2008
摘要:一.工具介绍 1. ILSpy.exe(点击下载):用来查看IL代码; 2. ILDasm(点击下载):看.net Framework中的程序集中方法的源码(通过反编译),即BCL中的代码; 工具在开发工具中有,也可以从上面的连接链接中下载。 二.C#程序的编译过程 1. 预编译:从C#代码编译为M
阅读全文
posted @ 2020-07-22 14:18
Linybo2008
摘要:C# 编写的代码通过VS编译器生成 dll 或 exe ,很容易被一些反编译工具查看到源码或对源码进行修改。为防止代码被反编译或被篡改,我们可以进行一定的防范措施。但不能杜绝,因为DotNet编写代码运行必须编译成IL 中间语言,IL是很规则,同时也很好反编译。 反编译防范措施: 设置项目代码反汇编
阅读全文
posted @ 2020-07-22 09:32
Linybo2008
摘要:我们有时在使用一些小工具软件时,会提示购买License(注册码之类的东东)后才能正常使用。在这里我们来尝试直接绕过License验证直接使用软件,实现简单的软件破解。 主要实现方式: 通过反编译工具,反编译出软件源码。 分析源码,找到License验证位置。 修改反编译代码。 重现编译生成修改后软
阅读全文
posted @ 2020-07-22 09:31
Linybo2008
摘要:IL DASM反编译工具 使用C#的猿人或多或少都会对微软的IL反编译工具(ildasm.exe)有所认识。我最早接触到这工具是公司同事使用他反编译exe程序,进行研读和修改。感觉他还是很强大。 IL是微软平台上的一门中间语言,我们常写的C#代码在编译器中都会自动转换成IL,然后在由即时编译器(JI
阅读全文
posted @ 2020-07-21 16:57
Linybo2008
摘要:一、C#方法中参数类型 有4种参数类型,有时候很难记住它们的不同特征,下图对它们做一个总结,使之更容易比较和对照。 二、C#方法中的参数 1、值参数 使用值参数,通过复制实参的值到形参的方式把数据传递到方法。方法调用时,系统做如下操作: · 在栈中为形参分配空间 · 复制实参到形参 注:栈(先进后出
阅读全文
posted @ 2020-07-21 15:08
Linybo2008
摘要:///会被编译,//不会所以使用///会减慢编译的速度(但不会影响执行速度)///会在其它的人调用你的代码时提供智能感知也是一种注释,但是这种注释主要有两种作用:1.这些注释能够生成一个XML文件。这样呢,看起来会对程序的内容一目了然。2.以这种方式对你的类,属性,方法等等加上注释之后,当你在其他地
阅读全文
posted @ 2020-07-21 14:54
Linybo2008
摘要:1.delegate MSDN:一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。委托的类型由委托的名称定义。 class Program { const int num = 100; delegate bool del
阅读全文
posted @ 2020-07-21 10:15
Linybo2008
摘要:Lambda表达式可分为表达式lambda和语句lambda 表达式lambda:表达式位于 => 运算符右侧的lambda表达式称为表达式lambda (input parameters) => expression //表达式lambda 例如 (x, y) => x == y 语句lambda
阅读全文
posted @ 2020-07-21 10:13
Linybo2008
摘要:前言 公司有一个 Web 管理系统,使用 Tomcat 进行部署。由于是后台管理系统,所有的网页都需要登录授权之后才能进行相应的操作。 起初这个系统的用的人也不多,为了节省资源,这个系统仅仅只是单机部署。后来随着用的人越来越多,单机已经有点扛不住了,于是我决定再部署了一台机器。 这时后端系统有两台服
阅读全文
posted @ 2020-07-20 09:50
Linybo2008
摘要:在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果当前程序指针指向一个函数) F10 步过函数(如果当前程序指针指向一个函数) Shift+F11 步
阅读全文
posted @ 2020-07-20 09:47
Linybo2008
摘要:随Visual Studio 2010 CTP亮相的C#4和VB10,虽然在支持语言新特性方面走了相当不一样的两条路:C#着重增加后期绑定和与动态语言相容的若干特性,VB10着重简化语言和提高抽象能力;但是两者都增加了一项功能:泛型类型的协变(covariant)和抗变(contravariant)
阅读全文
posted @ 2020-07-19 16:54
Linybo2008
摘要:在.net4之前,泛型接口是不变的。.net4通过协变和抗变为泛型接口和泛型委托添加了一个重要的扩展。 1、协变:如果泛型类型用out关键字标注,泛型接口就是协变的。这也意味着返回类型只能是T。 实例: 1 static void Main(string[] args) 2 { 3 IIndex<R
阅读全文
posted @ 2020-07-19 16:03
Linybo2008
摘要:六种类型的约束: where T:stuct 类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可空类型(C# 编程指南)。 where T:class 类型参数必须是引用类型,包括任何类、接口、委托或数组类型。 where T:new() 类型参数必须具
阅读全文
posted @ 2020-07-19 15:31
Linybo2008
摘要:default 关键字有两类用法 switch语句中指定默认标签 默认值表达式 switch 语句# int caseSwitch = 1; switch (caseSwitch) { case 1: Console.WriteLine("Case 1"); break; case 2: Conso
阅读全文
posted @ 2020-07-19 15:21
Linybo2008
摘要:一、using指令 在文件顶部引用命名空间,如:using System; 二、using别名 为命名空间或类型定义别名,这种做法有个好处就是当同一个cs文件引用了两个不同的命名空间,但是两个命名空间都包括了一个相同名字的类型的时候,就会为此类型命名空间创建别名。 using System; usi
阅读全文
posted @ 2020-07-19 14:51
Linybo2008
摘要:在我们程序中,经常有这样一些需求: 1. 需要一个临时方法,这个方法只会使用一次,或者使用的很少。 2. 这个方法的方法体很短,以至于比方法声明都短,写起来实在没劲(我将其称之为“一句话方法”)。 没办法,这样的方法写起来真是吃力不讨好,比如一些按钮事件处理中,有些按钮点击就是弹出一个对话框,或者调
阅读全文
posted @ 2020-07-19 14:23
Linybo2008
摘要:一、Action泛型委托 和之前委托最大区别在于不用定义委托,直接实例化委托(申明就可以),泛型其实就是选择数据类型,进行使得程序更加安全,并且也实现了委托的重载,最多选择16个参数。 namespace 自定义委托 { class Program { Action<string> actHandl
阅读全文
posted @ 2020-07-19 14:19
Linybo2008
摘要:一、一般委托方式 Func<int, int, int> AddMethodHander; public unName() { AddMethodHander += AddMethod; } public int AddMethod(int num1, int num2) { int result
阅读全文
posted @ 2020-07-19 14:18
Linybo2008
摘要:ExpandoObject:表示一个对象,该对象包含可在运行时动态添加和移除的成员。 dynamic dynEO = new ExpandoObject(); //初始化一个不包含任何成员的ExpandoObject dynEO.number = 10; dynEO.Increment = new
阅读全文
posted @ 2020-07-17 16:19
Linybo2008
摘要:介绍 Visual C# 2010 引入了一个新类型 dynamic。 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查。 大多数情况下,该对象就像具有类型 object 一样。 在编译时,将假定类型化为 dynamic 的元素支持任何操作。 因此,您不必考虑对象是从 COM
阅读全文
posted @ 2020-07-17 16:16
Linybo2008
摘要:本来准备直接进入Dapper的, 但是昨天初步看了一下, 内容不少, Dapper不愧是一款成熟的框架, 里面对各种情况的考虑, 很实用, 不过这也使得我短时间内看不完, 所以得等几天了. 那就先来看看循环和异常吧, 看IL跳转的时候, 有一个标签, 跳来跳去的, 在OpCodes里面, 也是有对应
阅读全文
posted @ 2020-07-17 15:30
Linybo2008
摘要:上一篇介绍了 IL 的部分, 基础的部分, 暂时就介绍到那里了, 接下来要进入代码编写阶段了. 今天的主题是 在代码运行的过程中, 去动态的创建类, 属性, 方法. 来源:http://www.cnblogs.com/yingql/archive/2009/03/22/1419149.html 废话
阅读全文
posted @ 2020-07-17 15:29
Linybo2008
摘要:上周末回家去享受生活了, 工作是为了更好的生活嘛, 所以我把生活, 工作分的比较开. 这几天不是很忙, 在学习工作技能的同时, 发点博文, 也算是做一个学习笔记 上篇中, 贴出的地址里面那位哥, 也有一篇值类型和引用类型的文章 来源:http://www.cnblogs.com/yingql/arc
阅读全文
posted @ 2020-07-17 15:22
Linybo2008
摘要:之前看过Dapper(使用到了Emit), CYQ.Data(另一种思路,没有使用Emit)类的框架之后, 也想自己做一个小框架玩一下, 不过此时能力太过欠缺, 做不了Cyq.Data或者PDF.Net此类的框架, 所以开始了学习之路. 先制定一个能达到的小目标吧, 从Emit开始. 可能很多人还不
阅读全文
posted @ 2020-07-17 15:03
Linybo2008
摘要:先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用。到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西。最重要的理由就是一个:当面试官看你简历上写着精通C#时,问你一句: "懂不懂IL?" 怎么回答? "不好意思,那东西没什
阅读全文
posted @ 2020-07-17 14:57
Linybo2008
摘要:名称 说明 Add 将两个值相加并将结果推送到计算堆栈上。 Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上。 Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算堆栈上。 And 计算两个值的按位“与”并将结果推送到计算堆栈上。 Arglist
阅读全文
posted @ 2020-07-17 14:55
Linybo2008
摘要:一、发展由来 POP OOP AOP DDD POP:(面向过程编程) 描述:考虑问题是1234步骤 特点:简单,无法应对复杂需求 举例子:把食物放冰箱 第一步:打开冰箱 第二步:塞进去食物 第三步:关冰箱 OOP:面向对象编程 特点:把事物作为对象考虑 特性:封装、继承、多态 描述:对象交互,完成
阅读全文
posted @ 2020-07-17 09:20
Linybo2008
摘要:不知不觉,在开发这条道路上摸爬打滚也有些年头了,偶尔回头看看以前写的代码,真可谓粗糙至极。当然了,那时候还是小白,代码写得难看些情有可原,不过现在可不能再用以前的标准去衡量自己了,因此掌握一些高级架构技巧是必须的,设计模式正是一个很好的敲门砖。 在我看来,设计模式不仅仅只是一套模板,要想掌握设计模式
阅读全文
posted @ 2020-07-17 09:19
Linybo2008
摘要:通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象。但是,第二篇中的例子旨在展示面向接口编程的实现方法,比较简单,不能体现出面向接口编程的优势和这种思想的内涵。那么,这一篇作为本系列的终结篇,将通过分析几个比较有深度的模式或架构,解析隐藏其背后的
阅读全文
posted @ 2020-07-16 17:38
Linybo2008
摘要:通过上一篇文章的讨论,我想各位朋友对“面接接口编程”有了一个大致的了解。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象。为充分考虑到初学者,所以这个例子非常简单,望各位高手见谅。 问题的提出 定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动
阅读全文
posted @ 2020-07-16 17:37
Linybo2008
摘要:我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答
阅读全文
posted @ 2020-07-16 17:36
Linybo2008
摘要:02第一次需求 玩家有很多属性,例如:身高,性别 blalalala ,玩家可以攻击其他玩家。产品狗 YY妹子写程序也是很利索,一天就把程序搞定了,而且还抽象出一个palyer的基类出来,堪称高级程序员必备技能 //玩家的基础抽象类 abstract class Player { public st
阅读全文
posted @ 2020-07-16 17:33
Linybo2008
摘要:添加System.ComponentModel.DataAnnotations命名空间的using语句 EF 支持的完整注释列表为: KeyAttribute StringLengthAttribute MaxLengthAttribute ConcurrencyCheckAttribute Req
阅读全文
posted @ 2020-07-16 16:03
Linybo2008
摘要:数据库初始化 上图,这个图解释了,数据库初始化的流程,是基于我们在上下文类中的构造函数中传递的参数。 在上面的图中,context类中的base构造器中,可以填入下面的参数: 无参数(No Parameter) 数据库的名字(Database Name) 连接字符串的名字(Connection St
阅读全文
posted @ 2020-07-16 16:00
Linybo2008
摘要:写这篇博客的时候,听闻EF7都发布半年了,吐糟下巨硬,同时对自己老处在追赶者的角色深感不满。 言归正传,提起DbContext就不得不提ObjectContext,在EF第一个版本发布以来,其中最重要的组件就是ObjectContext,ObjectContext提供了概念上的模型来让我们与数据库交
阅读全文
posted @ 2020-07-16 15:58
Linybo2008
摘要:第一章: 函数式编程主要基于数学函数和它的思想。 1.1 函数与js方法: 函数是一段可以通过其名称被调用的代码,可以传递参数并返回值。 方法是一段必须通过其名称及其关联对象的名称被调用的代码。 //函数 var func = (a)=>{return a} func(5) //用其名称调用 //方
阅读全文
posted @ 2020-07-16 14:22
Linybo2008
摘要:特点 1.函数是一等公民 2.只用表达式不用语句 3.没有副作用(side effect) 4.不修改状态 5.引用透明 优势 1. 代码简洁,开发快速 2. 接近自然语言,易于理解 3. 更方便的代码管理 4. 易于"并发编程" 5. 代码的热升级 范畴与容器 我们可以把"范畴"想象成是一个容器,
阅读全文
posted @ 2020-07-16 14:21
Linybo2008
摘要:一,前言: 刚加的css怎么没有渲染出来?浏览器中查看,发现是被其他的css给覆盖了,相信我们都曾遇到过这样的问题。那么浏览器是如何选择css标签的渲染顺序的呢?换句话说,css选择器的优先级是怎么规定的? 二、正文: 先上一个例子 <div id = "outerId" class = "oute
阅读全文
posted @ 2020-07-16 13:55
Linybo2008
摘要:深拷贝和浅拷贝都是针对的引用类型, JS中的变量类型分为值类型(基本类型)和引用类型; 对值类型进行复制操作会对值进行一份拷贝,而对引用类型赋值,则会对地址进行拷贝,最终两个变量指向同一份数据 一、先来看看JS中的数据类型 let x = 1; //number类型 let x = 0.1; //n
阅读全文
posted @ 2020-07-16 13:53
Linybo2008
摘要:一、前言 要说readonly和disabled的区别,就需要先说说两者的联系; 两个属性都可以作用于input等表单元素上,都使得元素成为“不可用”的状态; 两者的字面意义先介绍一下: readonly表示“只读”,一般表示对于文字内容只读,即不可更改内容,对于非文字的表单“只读”与“不只读”似乎
阅读全文
posted @ 2020-07-16 13:52
Linybo2008
摘要:单页面应用(SPA),通俗一点说就是指只有一个主页面的应用,浏览器一开始要加载所有必须的 html, js, css。所有的页面内容都包含在这个所谓的主页面中。但在写的时候,还是会分开写(页面片段),然后在交互的时候由路由程序动态载入,单页面的页面跳转,仅刷新局部资源。多应用于pc端。 多页面(MP
阅读全文
posted @ 2020-07-16 13:47
Linybo2008
摘要:一、前言 前端部分的搭建,需要考虑使用哪种模式进行页面之间的跳转交互, 而项目内的页面交互,不可避免的需要相互之间的数据共享。 这就引出了本篇博客的目的,一起来谈谈:项目前端部分的构建方式以及数据共享方式。 二、正文 (一)、搭建前端部分所需要注意的问题 1)方便性 结合开发的时间需求和方便性选择适
阅读全文
posted @ 2020-07-16 13:46
Linybo2008
摘要:目录 工厂模式 构造函数模式 原型模式 组合使用构造函数模式和原型模式 动态原型模式 其它模式 工厂模式 function createPerson(name, age){ var o = new Object(); // 创建一个对象 o.name = name; o.age = age; o.s
阅读全文
posted @ 2020-07-16 09:53
Linybo2008
摘要:目录 理解原型 理解原型对象 实例属性与原型属性的关系 更简单的原型语法 原型的动态性 原型链 理解原型 我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。看如下例子: function Pe
阅读全文
posted @ 2020-07-16 09:51
Linybo2008
摘要:理解WCF中的并发机制 在对WCF并发机制进行理解时,必须对WCF初探-27:WCF中的实例化进行理解,因为WCF中的并发特点是伴随着服务实例上下文实现的。WCF的实例上下文模型可以通过InstanceContext的属性来进行设置,WCF中的并发就是指一个实例上下文处理请求消息的能力,当需要在一个
阅读全文
posted @ 2020-07-15 16:49
Linybo2008
摘要:理解WCF中的实例化机制 “实例化”是指对用户定义的服务对象以及与其相关的 InstanceContext 对象的生存期的控制。也就是说我们的客户端程序在调用服务端方法时,需要实例化一个服务端代理类对象,实例化就是对这个对象的生命周期的管理(比如:代理服务对象的创建,对象调用服务端方法后需要对其进行
阅读全文
posted @ 2020-07-15 16:47
Linybo2008
摘要:理解WCF中的会话机制 在WCF应用程序中,会话将一组消息相互关联,从而形成对话。会话”是在两个终结点之间发送的所有消息的一种相互关系。当某个服务协定指定它需要会话时,该协定会指定所有调用(即,支持调用的基础消息交换)必须是同一对话的一部分。如果某个协定指定它允许使用会话但不要求使用会话,则客户端可
阅读全文
posted @ 2020-07-15 16:45
Linybo2008
摘要:前言 在上一篇WCF序列化和反序列化中,文章介绍了WCF序列化和反序列化的机制,虽然WCF针对序列化提供了默认的DataContractSerializer序列化引擎,但是WCF还支持其他的序列化引擎,那就是XmlSerializer序列化引擎。本文将详细介绍XmlSerializer类在WCF中具
阅读全文
posted @ 2020-07-15 16:44
Linybo2008
摘要:前言 WCF包含很多封装的内部机制,这些是我们在编写程序时不会经常看到的。比如上一篇讲解的Message。这一篇我将讲解WCF的另一种内部机制,WCF的序列化和反序列化。通常我们在编写WCF服务程序的时候,我们并没有手动对WCF的数据传递做序列化和反序列化的操作,这是因为WCF默认通过序列化引擎Da
阅读全文
posted @ 2020-07-15 16:42
Linybo2008
摘要:前言 在上一篇WCF中使用Message类(上)中,文章介绍了WCF中使用Message类的基本知识和怎样创建消息,本文是承接上一篇文章,如果想要更好的阅读本文,请先阅读上一篇文章。在这篇文章中,我将介绍怎样来操作消息。 从WCF中使用Message类(上)中,我们知道了消息的基本结构,针对不同的情
阅读全文
posted @ 2020-07-15 16:41
Linybo2008
摘要:前言 从我们学习WCF以来,就一直强调WCF是基于消息的通信机制。但是由于WCF给我们做了高级封装,以至于我们在使用WCF的时候很少了解到消息的内部机制。由于WCF的架构的可扩展性,针对一些特殊情况,WCF为我们提供了Message类来深度定制消息结构,以便我们拓展WCF的通信机制。 在之前的文章中
阅读全文
posted @ 2020-07-15 16:40
Linybo2008
摘要:WCF终结点概述 在之前文章的示例中,我们都是通过配置服务的终结点(endpoint)发布的服务,供客户端调用,这是因为WCF服务的所有通信都是通过该服务的终结点进行的。每个终结点(endpoint)包含四个属性。 一个指示可以查找终结点的位置的地址。 一个指定客户端如何与终结点进行通信的绑定。 一
阅读全文
posted @ 2020-07-15 16:39
Linybo2008
摘要:WCF错误协定概述 在所有托管应用程序中,处理错误由 Exception 对象表示。 在基于 SOAP 的应用程序(如 WCF 应用程序)中,服务方法使用 SOAP 错误消息来传递处理错误信息。 SOAP 错误是包括在服务操作元数据中的消息类型,因此会创建一个错误协定,客户端可使用该协定来使操作更加
阅读全文
posted @ 2020-07-15 16:38
Linybo2008
摘要:WCF消息协定概述 在生成 WCF应用程序时,开发人员通常会密切关注数据结构和序列化问题,而不必关心携带数据的消息结构。 对于这些应用程序,为参数或返回值创建数据协定的过程很简单。但是,有时完全控制 SOAP 消息的结构与控制其内容一样重要。 当必须提供互操作性或需要在消息或消息部分级别特别控制安全
阅读全文
posted @ 2020-07-15 16:37
Linybo2008
摘要:KnownTypeAttribute 类概述 在数据到达接收终结点时,WCF 运行库尝试将数据反序列化为公共语言运行库 (CLR) 类型的实例。通过首先检查传入消息选择为反序列化而实例化的类型,以确定消息内容遵循的数据协定。然后反序列化引擎尝试查找实现与消息内容兼容的数据协定的 CLR 类型。反序列
阅读全文
posted @ 2020-07-15 16:35
Linybo2008
摘要:数据协定等效性特点概述 对于客户端要将某种类型的数据成功发送到服务,或者服务要将数据成功发送到客户端的情况,接收端上并不一定必须存在此发送数据类型。 唯一的要求是两种类型的数据协定应该等效。 要使数据协定等效,其命名空间和名称必须相同。 此外,某一端上的每个数据成员还必须在另一端上具有等效的数据成员
阅读全文
posted @ 2020-07-15 16:34
Linybo2008
摘要:数据协定概念 “数据协定”是在服务与客户端之间达成的正式协议,用于以抽象方式描述要交换的数据。 也就是说,为了进行通信,客户端和服务不必共享相同的类型,而只需共享相同的数据协定。 数据协定为每一个做数据交换时需要被序列化的参数或者返回值做了精确定义。 数据协定特点 默认情况下, WCF使用称为数据协
阅读全文
posted @ 2020-07-15 16:32
Linybo2008
摘要:前言: 在前面的文章中,我们定义服务协定时,在它的操作方法上都会加上OperationContract特性,此特性属于OperationContractAttribute 类,将OperationContract应用于方法,以指示该方法实现作为服务协定(由 ServiceContractAttrib
阅读全文
posted @ 2020-07-15 16:30
Linybo2008
摘要:前言: 在前面的文章中,我们定义的服务协定上都会有一个ServiceContract的特性来修饰,这是因为服务契约的实现要靠ServiceContractAttribute 属性定义,然后使用一个或多个类(或接口)方法中的 OperationContractAttribute 属性定义协定的服务操作
阅读全文
posted @ 2020-07-15 16:02
Linybo2008
摘要:前言: 在WCF初探-5:WCF消息交换模式之双工通讯(Duplex)博文中,我讲解了双工通信服务的一个应用场景,即订阅和发布模式,这一篇,我将通过一个消息发送的例子讲解一下WCF客户端如何为双工服务创建回调对象。 双工服务指定一个回调协定,客户端应用程序必须实现该协定以便提供一个该服务能够根据协定
阅读全文
posted @ 2020-07-15 15:59
Linybo2008
摘要:前言: 当我们打开WCF基础客户端通道(无论是通过显式打开还是通过调用操作自动打开)、使用客户端或通道对象调用操作,或关闭基础客户端通道时,都会在客户端应用程序中出现异常。而我们知道WCF是基于网络的通讯服务,错误异常也是要基于消息传递的,在WCF中提供了一个错误消息处理的类FaultExcepti
阅读全文
posted @ 2020-07-15 15:57
Linybo2008
摘要:前言: 在上一篇WCF初探-10:WCF客户端调用服务 中,我详细介绍了WCF客户端调用服务的方法,但是,这些操作都是同步进行的。有时我们需要长时间处理应用程序并得到返回结果,但又不想影响程序后面代码部分的执行,这时我们就需要考虑使用异步的方式来调用服务。注意这里的异步是完全针对客户端而言的,与WC
阅读全文
posted @ 2020-07-15 15:46
Linybo2008
摘要:创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定、绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: 服务和客户端使用托管属性、接口和方法对协定进行建模。 若要连接客户端应用程序中的服务,则需要获取该服
阅读全文
posted @ 2020-07-15 15:42
Linybo2008
摘要:在WCF初探-8:WCF服务承载 (上)中,我们对宿主的概念、环境、特点做了文字性的介绍和概括,接下来我们将通过实例对这几种寄宿方式进行介绍。为了更好的说明各寄宿环境特点,本实例采用Http和net.tcp两种服务通讯方式,同时寄宿在不同的宿主中。程序结构如下: 服务契约的接口和实现代码如下: us
阅读全文
posted @ 2020-07-15 15:40
Linybo2008
摘要:前言 任何一个程序的运行都需要依赖一个确定的进程中,WCF服务也不例外。如果使用WCF服务,我们就必须将服务承载于创建它并控制它的上下文和生存期的运行时环境中,承载服务环境的程序,我们称之为宿主。WCF服务可以在支持托管代码的任意Windows进程中运行。WCF 提供了统一编程模型,用于生成面向服务
阅读全文
posted @ 2020-07-15 15:39
Linybo2008
摘要:在上一篇WCF服务配置中,文章讲解了WCF的配置所需要的基本节点和属性构造,但是对于初学者的我们在编写程序的时候,往往对这些节点的位置和属性不是特别清楚,所以就导致我们的因配置文件错误而不能运行服务程序。Visual studio 针对服务配置提供了一个可视化的配置界面(Microsoft Serv
阅读全文
posted @ 2020-07-15 15:38
Linybo2008
摘要:WCF服务配置是WCF服务编程的主要部分。WCF作为分布式开发的基础框架,在定义服务以及定义消费服务的客户端时,都使用了配置文件的方法。虽然WCF也提供硬编程的方式,通过在代码中直接设置相关对象的属性来完成服务端与客户端的配置,然而这种方式并不利于后期程序的更改和扩展。因此,配置文件给WCF程序编程
阅读全文
posted @ 2020-07-15 15:28
Linybo2008
摘要:双工通讯Duplex具有以下特点: 1它可以在处理完请求之后,通过请求客户端中的回调进行响应操作 2.消息交换过程中,服务端和客户端角色会发生调换 3.服务端处理完请求后,返回给客户端的不是reply,而是callback请求。 4.Duplex模式对Bindding有特殊的要求,它要求支持Dupl
阅读全文
posted @ 2020-07-15 15:26
Linybo2008
摘要:请求与答复模式( Request/Reply) 这种交换模式是使用最多的一中,它有如下特征: 调用服务方法后需要等待服务的消息返回,即便该方法返回 void 类型 相比Duplex来讲,这种模式强调的是客户端的被动接受,也就是说客户端接受到响应后,消息交换就结束了。 在这种模式下,服务端永远是服务端
阅读全文
posted @ 2020-07-15 15:25
Linybo2008
摘要:单向模式(One-Way Calls): 在这种交换模式中,存在着如下的特征: 只有客户端发起请求,服务端并不会对请求进行回复 不能包含ref或者out类型的参数 没有返回值,返回类型只能为void 通过设置OperationContract的IsOneWay=True可以将满足要求的方法设置为这种
阅读全文
posted @ 2020-07-15 15:22
Linybo2008
摘要:1.前言 上一篇,我们通过VS自带的模板引擎自动生成了一个wcf程序,接下来我们将手动实现一个wcf程序。由于应用程序开发中一般都会涉及到大量的增删改查业务,所以这个程序将简单演示如何在wcf中构建简单的增删改查服务。我们知道WCF是一组通讯服务框架,我将解决方案按大范围划分为服务端,客户端通过服务
阅读全文
posted @ 2020-07-15 15:18
Linybo2008
摘要:1.WCF是什么? WindowsCommunication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,由.NET Framework 3.0开始引入,与Windows Presentation Foundation及 Windows Wo
阅读全文
posted @ 2020-07-15 15:16
Linybo2008
摘要:1.什么是redis? Redis 是一个基于内存的高性能key-value数据库。 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作
阅读全文
posted @ 2020-07-15 13:52
Linybo2008
摘要:写在前面 公司有个项目,需要和sharepoint集成,用到了restful,在网上查了一下,wcf方式来实现,还是很方便的,就采用了这种方式,至于web api,没研究过,由于接口急着用,就采用wcf了,用起来也比较顺手。 概念 什么是rest? REST 描述了一个架构样式的互联系统(如 Web
阅读全文
posted @ 2020-07-15 13:37
Linybo2008
摘要:静态类: 在类(class)上加入static修饰, 表示该类无法被实例化,并且该类中,无法实例化变量或函数。 那么如果要在此静态类中添加函数、变量、属性,则必须都是静态的。 静态类的主要特性: 1:仅包含静态成员。 2:无法实例化。 3:静态类的本质,是一个抽象的密封类,所以不能被继承,也不能被实
阅读全文
posted @ 2020-07-14 16:09
Linybo2008
摘要:静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。 静态类是自C# 2.0才引入的,C# 1
阅读全文
posted @ 2020-07-14 16:05
Linybo2008
摘要:看到网上的一篇讲C#对象生命周期(Object Lifetime)的文章,通俗易懂,而且有图,很适合初学者学习,就翻译过来了。后来发现这是Pro C# 2010 and the .NET 4 Platform的第八章中的一部分。(感谢 大乖乖 提醒)。文中的专业名词第一次出现时,括号里会标注对应的英
阅读全文
posted @ 2020-07-14 13:36
Linybo2008
摘要:无论是值类型的变量或是类类型的变量,其存储单元都是在栈中分配的,唯一不同的是类类型的变量实际上存储的是该类对象的指针,相当于vc6中的CType*,只是在.net平台的语言中将指针的概念屏蔽掉了。我们都知道栈的一大特点就是LIFO(后进先出),这恰好与作用域的特点相对应(在作用域的嵌套层次中,越深层
阅读全文
posted @ 2020-07-14 13:32
Linybo2008
摘要:介绍 Castle最早在2003年诞生于Apache Avalon项目,目的是为了创建一个IOC(控制反转)框架。发展到现在已经有四个组件了,分别是ActiveRecord(ORM组件),Windsor(IOC组件),DynamicProxy(动态代理组件),MonoRail(Web MVC组件)。
阅读全文
posted @ 2020-07-13 14:21
Linybo2008
摘要:上一节给大家介绍了 .Net GC的运行机制,下面来讲下与GC相关的重要方法。 第二节.GC关键方法解析 1.Dispose()方法 Dispose可用于释放所有资源,包括托管的和非托管的,需要自己实现。 大多数的非托管资源都要求手动释放,我们应当为释放非托管资源公开一个方法,实现释放非托管资源的方
阅读全文
posted @ 2020-07-10 17:21
Linybo2008
摘要:前言: 组成.Net平台一个很重要的部分 垃圾收集器(Garbage Collection),今天我们就来讲讲它。想想看没有GC,.Net还能称之为一个平台吗?各种语言虽然都被编译成MSIL,但是运行时的资源回收工作却“各自为战”,这样不但增加了编程难度,也会使内存管理工作变得复杂无比(不同语言处理
阅读全文
posted @ 2020-07-10 17:18
Linybo2008
摘要:一、GAC的作用 全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝
阅读全文
posted @ 2020-07-10 17:08
Linybo2008
摘要:1、KEY和IV分别赋值 //默认密钥向量 private static byte[] Iv= { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// DES加密字符串 /// </summary> /// <par
阅读全文
posted @ 2020-07-10 16:33
Linybo2008
摘要:1、对称加密算法(AES、DES、3DES) 对称加密算法是指加密和解密采用相同的密钥,是可逆的(即可解密),也叫单钥加密。 AES加密算法是密码学中的高级加密标准,采用的是对称分组密码体制,密钥长度的最少支持为128。AES加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已
阅读全文
posted @ 2020-07-10 14:23
Linybo2008
摘要:1.加密方法可以分为两大类。一类是单钥加密(private key cryptography),还有一类叫做双钥加密(public key cryptography)。前者的加密和解密过程都用同一套密码,后者的加密和解密过程用的是两套密码。 历史上,人类传统的加密方法都是前一种,比如二战期间德军用的
阅读全文
posted @ 2020-07-10 13:50
Linybo2008
摘要:今天,我读到一篇好文章。 它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。 我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻
阅读全文
posted @ 2020-07-10 13:44
Linybo2008
摘要:在软件开发的用户注册功能中常出现MD5加密这个概念,这个概念有一定的误导性。严格来说:MD5还有sha-1、 RIPEMD以及Haval等不能算是加密算法(虽然常用于把密码变成“密文”),他们只是散列算法,或者叫Hash算法(摘要算法)。加密对应解密这个概念,加密算法包括:AES、DES、3DES、
阅读全文
posted @ 2020-07-10 13:38
Linybo2008
摘要:序言 写这篇文章是因为在看hashMap源码时遇到有什么hashcode值,然后就去查,脑袋里面是有映像的,不就是在Object中有equals和hashcode方法嘛,这在学java基础的时候就遇到过,不过那时候无所谓,不懂就不懂,就一笔带过去了,然后到现在,又回过头来补本应该以前就搞清楚的问题,
阅读全文
posted @ 2020-07-10 09:56
Linybo2008
摘要:一、hashcode是什么 要理解hashcode首先要理解hash表这个概念 1. 哈希表 hash表也称散列表(Hash table),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数
阅读全文
posted @ 2020-07-10 09:52
Linybo2008
摘要:上篇博客中给大家分享了使用Windbg进行Live Debugging: Windbg程序调试系列4-Live Debugging 本篇中我们继续,跟大家分享常见的应用程序高CPU使用率问题分析。 先说Windows下CPU使用率这个概念: CPU使用率:在任务管理器的刷新周期内CPU忙的时间与整个
阅读全文
posted @ 2020-07-09 14:28
Linybo2008
摘要:上篇博文中给大家分享了使用Windbg分析线程阻塞问题: Windbg程序调试系列3-线程阻塞问题 本篇中我们继续,跟大家分享附加进程实时调试-Live Debugging。 先说一下使用Windbg附加进程实时调试的应用场景和注意事项: 应用场景: 集成测试环境,影响异常后,分析异常和线程上下文的
阅读全文
posted @ 2020-07-09 14:26
Linybo2008
摘要:上一篇博文给大家分享了使用Windbg分析内存泄露问题: Windbg程序调试系列2-内存泄露问题 本篇我们继续跟大家分享,如何分析解决线程阻塞问题。 从根本上讲,线程阻塞属于程序Hang的一种,其表现主要有: 1. 随着请求的增加,线程数一直增加,可能会把线程池打爆 2. 低CPU使用率(被阻塞后
阅读全文
posted @ 2020-07-09 14:25
Linybo2008
摘要:上篇文章给大家解释了Windbg的基本命令和说明,这一篇给大家介绍内存泄露场景的问题分析。 文章大纲: 描述问题背景和现象 确定问题是否是内存泄露 梳理问题分析思路 动手分析解决 总结 1. 先说问题背景:生产环境IIS站点,运行一段时间后,w3wp进程内存会涨到2G,同时内存不释放。 2. 问题确
阅读全文
posted @ 2020-07-09 14:24
Linybo2008
摘要:最近一直在频繁使用Windbg做线上Dump调试,与微软做Case交流的时候,发现微软CSS团队,用了一个非常效率的Windbg 插件,Mex: 使用介绍: https://blogs.msdn.microsoft.com/luisdem/2016/07/19/mex-debugging-exten
阅读全文
posted @ 2020-07-09 14:23
Linybo2008
摘要:Windbg程序调试是.Net高级开发需要掌握的必备技能,分析内存泄露、分析高CPU、分析线程阻塞、分析内存对象、分析线程堆栈、Live Dedugging。这个领域可以说一个技能+场景化应用的结合,如果单学Windbg命令,不理解实际Troubleshooting中的作用,是没有意义的。所以,准备
阅读全文
posted @ 2020-07-09 14:20
Linybo2008
摘要:Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式;二是Append-only file(缩写aof)的方式;三是虚拟内存方式;四是diskstore方式。下面分别介
阅读全文
posted @ 2020-07-09 09:31
Linybo2008
摘要:AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的中统一处理业务逻辑的一种技术,比较常见的场景是:日志记录,错误捕获、性能监控等 AOP的本质是通过代理对象来间接执行真实对象,在代理类中往往会添加装饰一些额外的业务代
阅读全文
posted @ 2020-07-08 13:44
Linybo2008
摘要:本节讨论内容主要针对收集了上篇文章大家碰到问题的讨论解决,会持续收集扩充。 DbContext加载原值,当前值,数据库值,属性操作,对象复制,对象值复制(VO,DTO->POCO),复杂对象取值 DbContext Local Data与AsNoTracking无跟踪查询 如何提高效率 DbCont
阅读全文
posted @ 2020-07-07 14:01
Linybo2008
摘要:本节针对EF当前支持的查询方式进行分析比较,和简单自定义条件查询的实现。 EF的查询方式 自定义条件查询 一、EF的查询方式 EF提供的查询方式有以下几种 原始SQL查询 LINQ To Entity and Lambda ESQL 与 ObjectQuery ObjectQuery 查询生成器 1
阅读全文
posted @ 2020-07-07 13:59
Linybo2008
摘要:EF虽然是一个晚生畸形的ORM框架,但功能强大又具有灵活性的,给了开发人员一定的发挥空间。因为微软出发点总是好的,让开发变得简单,但实际上不是所有的事情都这么理想。这里顺便推荐马丁大叔的书《企业应架构模式》。 本节主要深入分析EF的分层问题,下面是本节的已列出的要探讨内容。 领域模型的概念 DbCo
阅读全文
posted @ 2020-07-07 13:57
Linybo2008
摘要:DbContext是域或实体类与数据库之间的桥梁。 功能: 查询:将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库。 更改跟踪:跟踪实体在从数据库查询后发生的更改。 持久化数据:根据实体的状态对数据库执行插入,更新和删除操作。 缓存:默认提供一级缓存。它存储在上下文类生命周期
阅读全文
posted @ 2020-07-07 13:48
Linybo2008
摘要:导航属性的理解: 指数据库的表所对应的实体类,除了要有每个字段所对应的属性之外,还应该有一个与之有关联的表的属性,一对一的关系就是关联表的类型,一对多的关系就是关联表的类型的ICollection的泛型集合。(结合下面例子理解) 1.一对一关系类型 上图中Student和StudentAddress
阅读全文
posted @ 2020-07-07 13:39
Linybo2008
摘要:使用EF实现实体持久化(保存)到数据库有两种情况:在线场景和离线场景。 1.在线场景 在线场景中,context是上下文实例,读写都通过一个context。 这种方案适用于连接本地数据库或同一网络上的数据库。 优点: 执行速度快。上下文跟踪所有实体,并在实体发生更改时自动设置适当的状态。 缺点: 上
阅读全文
posted @ 2020-07-07 13:38
Linybo2008
摘要:1.EF基本的CRUD(增删改查)流程 2.EF的工作过程简析 EDM--Entity Data Model--实体数据模型 概念模型: EF通过领域类,上下文类,默认约定和配置构建概念模型。 存储模型: EF为底层数据库架构构建存储模型。在代码优先方法中,根据概念模型进行推断来构建。在数据库优先模
阅读全文
posted @ 2020-07-07 13:37
Linybo2008
摘要:DbContext是实体类和数据库之间的桥梁,DbContext主要负责与数据交互,主要作用: 1、DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >)。 2、DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库。 3、
阅读全文
posted @ 2020-07-07 13:34
Linybo2008
摘要:前言 本文章基于VisualStudio2017编写 前两天腾讯电话面试中面试官问到既然平时有使用VS进行项目调试,那介绍一下VS中Debug选项和Release选项有什么不同,我听到这问题时,知道Debug选项是我们平时使用VS要开始运行时点的那一个按钮: 但是这个release是真的没有注意到过
阅读全文
posted @ 2020-07-07 11:33
Linybo2008
摘要:1.右键项目属性->配置属性->配置 2.一般在此界面的右上角里的配置管理器中配置才有效。 3.活动解决方案配置是项目生成的exe路径,活动解决方案平台是每个项目对应的cpu架构 4.在主项目中把cpu平台改成啥(x86/x64/anycpu),其他项目就按啥类型走。 5.可在主项目的生成中改变ex
阅读全文
posted @ 2020-07-07 11:30
Linybo2008
摘要:测试环境:win7 x64 测试程序:WCF查询数据库后将数据集返回到Winform程序加载并显示 测试结果: 1.从感觉来说Exe在 x86目标平台生成,启动速度快。 2.内存消耗:x86的程序在超出150MB后会进行回收;x64的程序在超出300MB后会进行回收。(该结果从任务管理器中体现) 解
阅读全文
posted @ 2020-07-07 10:57
Linybo2008
摘要:先写两个有继承关系的类Person、Son和一个接口IProgram: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks
阅读全文
posted @ 2020-07-07 09:26
Linybo2008
摘要:直观测试代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 public partial class NaviControl : UserControl, ITestControl
阅读全文
posted @ 2020-07-07 09:25
Linybo2008
摘要:1、安装打包插件:Microsoft Visual Studio 2017 Installer Projects 打开vs2017 ,选择 工具 --> 扩展和更新 --> 联机,搜索Microsoft Visual Studio 2017 Installer Projects,进行安装。安装好以后
阅读全文
posted @ 2020-07-06 14:06
Linybo2008
摘要:历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持。微软将C#提交给标准组织ECMA,C# 5.0目前是ECMA发布的最新规范,C# 6.0还是草案阶段,C# 7.1是微软当前提供的最新规范。 这里仅仅列个提纲
阅读全文
posted @ 2020-07-06 13:46
Linybo2008
摘要:1) async / await 使用 async / await 模式,可以在执行代码块操作的时候不会阻塞 UI 或者当前的线程。即使该操作被某些执行动作延迟了(比如一个 web 请求),async / await 模式也会继续执行后续的代码。 微软文档:https://msdn.microsof
阅读全文
posted @ 2020-07-06 13:44
Linybo2008
摘要:一、SqlConnection:创建数据库连接对象 二、Sqlcommand:执行SQL语句对象 三、SqlDataReader:查询一条或多条数据对象 四、SqlDataAdapter:检索和保存数据的对象 五、DataSet:创建一个本地数据存储对象 六、SqlHelper:工具类,利用这个类来
阅读全文
posted @ 2020-07-03 09:20
Linybo2008
摘要:Lambda表达式: 1.下面举例通过Lambda表达式创建了一个用于验证Name的Func委托。 //通过Lambda表达式创建一个对象的Name属性验证委托 Func<SearchInfo, bool> func = x => x.Name.Equals("5"); /// <summary>
阅读全文
posted @ 2020-07-01 13:33
Linybo2008
摘要:目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达式树 调试 简介 表达式树以树形数据结构表示代码,其中每一个节点都是一种表达式,比如方法调用和 x < y 这样的二元运算等。 你可以对表达式树中的代码进行编辑和运
阅读全文
posted @ 2020-07-01 12:05
Linybo2008
摘要:目录 特性简介 使用特性 特性的参数 特性的目标 特性的常见用途 创建自定义的特性 使用反射访问特性 一、特性简介 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集、类型、方法、属性等)相关联。特性与程序实体关联后,可在运行时使用“反射”查询特性。 特性具有以下属性: (1)特性可向程序
阅读全文
posted @ 2020-07-01 11:55
Linybo2008
摘要:一、什么是特性 特性是一种允许我们向程序的程序集添加元数据的语言结构,它是用于保存程序结构信息的某种特殊类型的类。 MSDN中对它的解释是:特性提供功能强大的方法以将声明信息与 C# 代码(类型、方法、属性等)相关联。特性与程序实体关联后,即可在运行时使用名为“反射”的技术查询属性。 (有关元数据和
阅读全文
posted @ 2020-07-01 11:53
Linybo2008
摘要:大家好,今天分享几个我知道的实用 VS 技巧,而这些技巧我发现很多人都不知道。因为我经常在工作中遇到:我在同事电脑上解决问题,或在会议上演示代码示例时,使用了一些 VS “骚”操作,他们会好奇地问:你是怎么做到的?这给我的感觉,有时候你知道一些别人不知道的小技巧便可以让你显得更专业。 PS:本文所有
阅读全文
posted @ 2020-07-01 09:32
Linybo2008

浙公网安备 33010602011771号