02 2020 档案

摘要:一、使用Vue-cli3创建Vue项目 1、检查当前Vue版本 输入下面的命令检查当前安装的Vue-cli版本: $ vue -V 结果如下: 说明本机安装的是3版本。如果是2.xx版本,就需要先卸载掉旧版本,然后在安装新版本。卸载旧版本命令: npm uninstall vue-cli -g 注意 阅读全文
posted @ 2020-02-24 20:38 .NET开发菜鸟 阅读(7363) 评论(1) 推荐(2) 编辑
摘要:一、前言 我们这里以StackExchange.Redis为例,讲解如何在ASP.NET Core中如何使用Redis实现缓存。首先需要安装Redis和RedisDesktopManager。RedisDesktopManager用来查看Redis缓存里面的数据。如何安装Redis这里不在讲述。 二 阅读全文
posted @ 2020-02-24 20:36 .NET开发菜鸟 阅读(14373) 评论(3) 推荐(3) 编辑
摘要:一、引言 这篇文章中我们讲解如何在Web项目中使用EntityFrameworkCore,并生成数据库表,这里以ASP.NET Core WebApi为例讲解。还是采用分层的结构。创建后的项目整体结构如下图所示: 项目结构: EFCoreWeb.API:ASP.NET Core WebApi项目,用 阅读全文
posted @ 2020-02-24 17:46 .NET开发菜鸟 阅读(1103) 评论(0) 推荐(0) 编辑
摘要:一、引言 我们使用Code First的方式来生成数据库表,我们先讲解如何在控制台项目中生成数据库表。 在前面的文章中,我们是直接在控制台项目中安装的Mircosoft.EntityFrameworkCore,在真实的项目中,我们很少这样使用,都是采用分层的结构,将EF Core有关的操作放在一个单 阅读全文
posted @ 2020-02-23 22:42 .NET开发菜鸟 阅读(1853) 评论(2) 推荐(0) 编辑
摘要:一、引言 在前面的几篇文章中,我们主要讲解了TPL,主要是Task,然后还介绍了如何在ASP.NET MVC中使用异步方法,在这篇文章中,我们结合一个小的实例,使用ASP.NET MVC+EF,实现异步的增删改查。 二、功能实现 我们以学生为例,实现增删改查功能。 1、搭建UI层 我们这里使用ASP 阅读全文
posted @ 2020-02-23 01:17 .NET开发菜鸟 阅读(2052) 评论(1) 推荐(1) 编辑
摘要:一、一定要async到底 一定要让async的传染性(调用异步方法要用await,用了await的方法就要声明为async,调用我这个async方法的地方必须要await.....)不要轻易直接调用Task的Wait、WaitAll等方法。等待一个用await,而不是task.Wait();等待多个 阅读全文
posted @ 2020-02-22 16:02 .NET开发菜鸟 阅读(362) 评论(1) 推荐(1) 编辑
摘要:一、MVC中使用异步 1、MVC中如何使用异步 我们新建一个MVC的项目,我们在Home控制器的Index方法里面读取一个文件的内容,然后返回给用户,我们看下面的代码: /// <summary> /// 异步方法 /// </summary> /// <returns></returns> pub 阅读全文
posted @ 2020-02-22 10:50 .NET开发菜鸟 阅读(367) 评论(0) 推荐(0) 编辑
摘要:1、TPL中,如果程序中出现异常,除非使用try...catch进行捕获异常,否则有呢能会感觉不到出现了异常。 2、TPL程序有时候还会抛出AggregateException,这通常发生在并行有多个任务执行的情况下,因为多个并行的任务可能会发生多个异常,因此会包装为AggregateExcepti 阅读全文
posted @ 2020-02-22 09:42 .NET开发菜鸟 阅读(262) 评论(0) 推荐(0) 编辑
摘要:一、异步接口的声明 我们已经了解到,如果一个方法是异步的,那么这个方法的返回值类型是Task<T>,那么接口中该如何规定异步方法呢? 一样的,如果接口中的方法是异步的,那么规定方法的返回值类型是Task<T>即可,看下面的代码: interface ITest { /// <summary> /// 阅读全文
posted @ 2020-02-22 09:16 .NET开发菜鸟 阅读(2032) 评论(0) 推荐(0) 编辑
摘要:一、引言 我们先来看下面的一个小示例:一个Winfrom程序,界面上有一个按钮,有两个异步方法,点击按钮调用两个异步方法,弹出执行顺序,代码如下: using System; using System.Threading; using System.Threading.Tasks; using Sy 阅读全文
posted @ 2020-02-21 23:19 .NET开发菜鸟 阅读(449) 评论(0) 推荐(0) 编辑
摘要:一、引言 我们有时侯需要在程序里面调用Http接口、请求http资源、编写http爬虫等的时候都需要在程序里面进行Http请求。很多人习惯的WebClient、HttpWebRequest在TPL下有很多用起来不方便的地方,TPL下推荐使用HttpClient(using System.Net.Ht 阅读全文
posted @ 2020-02-21 17:43 .NET开发菜鸟 阅读(504) 评论(0) 推荐(1) 编辑
摘要:一、引言 .NET中很多的类、接口在设计的时候都考虑了多线程问题,简化了多线程程序的开发,不用自己去写WaitHandler等这些底层的代码,由于历史的发展,这些类的接口设计有着三种不同的风格:EAP、APM和TPL。目前重点用TPL。 二、EAP EAP是Event-based Asynchron 阅读全文
posted @ 2020-02-21 09:32 .NET开发菜鸟 阅读(590) 评论(0) 推荐(2) 编辑
摘要:一、引言 在前面的文章中,我们是使用“锁”的方式实现了线程间的通信,这种通信方式比较笨重。除了锁之外,.NET中还提供了一些线程间更自由通讯的工具,他们提供了通过“信号”进行通讯的机制,通俗的比喻为“开门”、“关门”:Set()开门、Reset()关门、WaitOne()等着。 二、WaitHand 阅读全文
posted @ 2020-02-20 23:01 .NET开发菜鸟 阅读(1726) 评论(0) 推荐(1) 编辑
摘要:一、单例模式 我们先来看看两种创建单例模式的示例代码。 1、饿汉式 饿汉式创建单例模式是在程序里面直接初始化了一个对象实例: class Good { /// <summary> /// 私有的静态变量,直接初始化 /// </summary> private static Good Instanc 阅读全文
posted @ 2020-02-20 14:55 .NET开发菜鸟 阅读(2707) 评论(0) 推荐(2) 编辑
摘要:一、前言 我们先来看下面一个例子: using System; using System.Threading; namespace ThreadSynchDemo { class Program { private static int Counter = 0; static void Main(s 阅读全文
posted @ 2020-02-20 14:19 .NET开发菜鸟 阅读(1238) 评论(1) 推荐(0) 编辑
摘要:一、数组(Array) 数组具有以下的特点: 数组属于线性结构,在内存中是连续存放的。 数组的元素类型必须相同。 数组可以直接通过下标访问。 数组的查找速度非常快,新增和删除速度慢。 数组在初始化时要指定数组长度。 二、动态数组(ArrayList) 动态数组具有以下的特点: ArrayList的底 阅读全文
posted @ 2020-02-19 22:30 .NET开发菜鸟 阅读(9950) 评论(1) 推荐(0) 编辑
摘要:一、前言 这个问题涉及了垃圾回收的内部机制,在通常情况下程序员并不需要去关心和干涉GC的内部执行,但是理解其算法,可以帮助程序员理解哪些代码是高效的,而哪些代码是需要避免的。 二、什么是代 GC在执行垃圾回收时,并不是每次都扫描托管堆内的所有对象实例,这样做太耗费时间而且也没有必要。简单来说,GC会 阅读全文
posted @ 2020-02-19 15:19 .NET开发菜鸟 阅读(2990) 评论(0) 推荐(0) 编辑
摘要:一、前言 在C#中,由于有了垃圾回收机制的支持,对象的析构和以前的C++有了很大的不同,这就要求程序员在设计类型的时候,充分理解.NET的机制,明确怎样利用Dispose方法和Finalize方法来保证一个对象正确而高效地被析构。 二、Dispose方法的功能 我们在讲解有关using的用法时,已经 阅读全文
posted @ 2020-02-19 13:43 .NET开发菜鸟 阅读(4829) 评论(0) 推荐(2) 编辑
摘要:一、什么是GC GC是垃圾回收(Garbage Collector)的缩写。GC可以说是.NET众多机制中最为重要的,对程序员代码书写方式影响最大的机制。在CLR规范制定之初,所有机制都还在斟酌的时候,垃圾回收已经被确定会存在于.NET框架之中。 .NET的程序大部分被称为被托管的代码。托管的意义很 阅读全文
posted @ 2020-02-19 11:40 .NET开发菜鸟 阅读(2461) 评论(0) 推荐(0) 编辑
摘要:一、前言 .NET提供了垃圾回收机制,使程序员从内存管理中被解放出来。但这并不代表程序员就无须了解分配的对象是如何被回收的。更重要的是,一些非托管的资源仍然需要程序员小心地分配与回收。 理解堆和堆栈是理解内存管理的基础。每一个.NET程序都最终会运行在一个操作系统进程中,假设这个操作系统是传统的32 阅读全文
posted @ 2020-02-19 10:31 .NET开发菜鸟 阅读(1716) 评论(0) 推荐(1) 编辑
摘要:一、using语句 using可以算是.NET中新的语法元素,它清楚地说明一个通常比较占用资源的对象何时开始使用和何时被手动释放。当using可以被使用时,建议尽量使用using语句。至今为止,使用using语句发现它带给程序员的只有优点,而没有任何弊端。 在.NET的环境中,托管的资源都将由.NE 阅读全文
posted @ 2020-02-19 08:23 .NET开发菜鸟 阅读(24704) 评论(0) 推荐(9) 编辑
摘要:一、什么是深拷贝和浅拷贝 对于所有面向对象的语言,复制永远是一个容易引发讨论的题目,C#中也不例外。此类问题在面试中极其容易被问到,我们应该在了解浅拷贝和深拷贝基本概念的基础上,从设计的角度进一步考虑如何支持对象的拷贝。 在System.Object类中,有一个受保护的方法object.Member 阅读全文
posted @ 2020-02-18 22:44 .NET开发菜鸟 阅读(20004) 评论(0) 推荐(12) 编辑
摘要:这里使用ASP.NET Core创建一个WebApi项目,代码如下: using System.IO; using Microsoft.AspNetCore.Mvc; namespace AspNetCoreDemo.Controllers { [Route("api/TestHttp")] [Ap 阅读全文
posted @ 2020-02-18 21:06 .NET开发菜鸟 阅读(3476) 评论(0) 推荐(2) 编辑
摘要:一、前言 现实生产中,有一些比较老的系统对外提供的接口都是WebService形式的,如果是使用.NET Framework创建的项目调用WebService非常方便,网上有很多代码示例,这里不在讲解,下面我们讲解如何在ASP.NET Core项目里面调用WebService。首先我们需要创建一个W 阅读全文
posted @ 2020-02-18 18:04 .NET开发菜鸟 阅读(22139) 评论(4) 推荐(9) 编辑
摘要:三、测试 我们知道,值类型的变量是在堆栈上分配内存的,而引用类型包括System.Object的对象是在堆上分配内存的,基于这一特点,当值类型被类型转换时,会在堆栈和堆上进行一系列的操作,这就是装箱和拆箱的来源。充分理解装箱和拆箱,有助于程序员编写高效率的代码。 1、装箱和拆箱的基本概念 我们知道, 阅读全文
posted @ 2020-02-18 15:18 .NET开发菜鸟 阅读(3572) 评论(0) 推荐(3) 编辑
摘要:一、堆栈 堆栈(Stack)是一组相同数据类型的组合,所有的操作均在堆栈的顶端进行,具有“先进后出”(First In Last Out,FILO)的特性。堆栈结构在计算机中的应用相当广泛,时常被用来解决计算机的问题,例如递归调用,子程序的调用等。堆栈的数据结构原理,类似于下图: 1、堆栈简介 谈到 阅读全文
posted @ 2020-02-18 00:42 .NET开发菜鸟 阅读(1162) 评论(0) 推荐(0) 编辑
摘要:一、值类型和引用类型的区别 .NET的类型可以分为两类:值类型和引用类型。这两种类型各有特点,即使它们都继承自System.Object,并且有装箱和拆箱等操作确保两种类型可以方便地交互,但是理解值类型和引用类型将有助于程序员编写出高效的代码,相反的,在不理解值类型和引用类型的情况下,程序员很容易编 阅读全文
posted @ 2020-02-17 23:15 .NET开发菜鸟 阅读(7033) 评论(0) 推荐(3) 编辑
摘要:一、双向链表 单向链表和环形链表都是属于拥有方向性的链表,只能单向遍历,万一不幸其中有一个链接断裂,那么后面的链表数据便会遗失而无法复原了。因此,我们可以将两个方向不同的链表结合起来,除了存放数据的字段以外,它还有两个指针变量,其中一个指针指向后面的节点,另一个则指向前面的节点,这样的链表被称为双向 阅读全文
posted @ 2020-02-16 14:46 .NET开发菜鸟 阅读(1167) 评论(0) 推荐(0) 编辑
摘要:一、什么是单向链表 在动态分配内存空间时,最常使用的就是“单向链表”(Single Linked List)。一个单向链表节点基本上是由两个元素,即数据字段和指针所组成,而指针将会指向下一个元素在内存中的位置,如下图所示: 在“单向链表”中,第一个节点是“链表头指针”,指向最后一个节点的指针设为NU 阅读全文
posted @ 2020-02-16 11:48 .NET开发菜鸟 阅读(1419) 评论(0) 推荐(0) 编辑
摘要:一、什么是链表 链表(Linked List)是由许多相同数据类型的数据项按照特定顺序排列而成的线性表。但链表的特性是其各个数据项在计算机内存中的位置是不连续且随机(Random)存放的。 1、优点 数据的插入和删除都相当方便,有新数据插入就向系统申请一块内存空间,而数据被删除后,就可以把这块内存空 阅读全文
posted @ 2020-02-15 08:09 .NET开发菜鸟 阅读(1025) 评论(0) 推荐(0) 编辑
摘要:1、请列举网站开发的多种模式 WebFrom、MVC、前后端分离(后端 Restful API,前端使用前端框架,例如Angular、React、Vue)。 2、列举前后端分离和非前后端分离的区别以及各自的优势 1、前后端不分离 在前后端不分离的开发模式中,前端页面看到的效果都是由后端控制,由后端渲 阅读全文
posted @ 2020-02-14 23:44 .NET开发菜鸟 阅读(1758) 评论(0) 推荐(3) 编辑
摘要:一、前言 在上一篇文章中,我们讲解了如何在Linux服务器上面部署ASP.NET Core应用程序,并且使用Nginx作为反向代理。我们在Linux服务器上面,是通过ASP.NET Core自宿主的方式运行应用程序。采用自宿主的方式启动ASP.NET Core应用程序,目前主要有以下几个问题: AS 阅读全文
posted @ 2020-02-14 16:15 .NET开发菜鸟 阅读(2844) 评论(0) 推荐(3) 编辑
摘要:一、前言 这篇文章我们将讲解如何将ASP.NET Core 程序部署到Linux。这里我们使用的是虚拟机里面安装的Centos7。这里的ASP.NET Core程序,以上篇文章中发布的框架依赖文件为例进行讲解。 二、安装运行时环境 1、在线安装 我们只是在Linux系统上面部署应用程序,所以只需要安 阅读全文
posted @ 2020-02-14 12:02 .NET开发菜鸟 阅读(15434) 评论(6) 推荐(13) 编辑
摘要:一、创建项目 本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上。这里以ASP.NET Core WebApi为例进行讲解。首先创建一个ASP.NET Core WebApi项目,使用默认的Values控制器,这里使用Visual Studio 2019创建一个AS 阅读全文
posted @ 2020-02-13 16:17 .NET开发菜鸟 阅读(16600) 评论(1) 推荐(2) 编辑
摘要:一、前言 我们在做Winform窗体程序开发的时候,会经常遇到窗体之间相互传值。假设有下面的一个场景:一个主窗体和一个子窗体,点击主窗体上面的按钮给子窗体传值,并在子窗体上面显示出来,一般会有如下几种方式实现。 二、公共属性 我们可以在子窗体里面定义一个公共的属性,然后在父窗体里面给公共属性赋值,这 阅读全文
posted @ 2020-02-12 23:03 .NET开发菜鸟 阅读(3062) 评论(1) 推荐(1) 编辑
摘要:一、线程异常 我们在单线程中,捕获异常可以使用try-catch,代码如下所示: using System; namespace MultithreadingOption { class Program { static void Main(string[] args) { #region 单线程中 阅读全文
posted @ 2020-02-12 19:20 .NET开发菜鸟 阅读(872) 评论(0) 推荐(0) 编辑
摘要:一、基本概念 1、Task优势 ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便,例如: ThreadPool不支持线程的取消、完成、失败通知等交互性操作; ThreadPool不支持线程执行的先后次序; .NET Framework 在4. 阅读全文
posted @ 2020-02-12 00:17 .NET开发菜鸟 阅读(2336) 评论(0) 推荐(1) 编辑
摘要:一、定义 约束:规定表中的数据规则。如果存在违反约束的数据行为,行为就会被阻止。 如果是使用DBMS工具创建表,那么约束必须在创建表之后才能被创建。如果是使用脚本创建表,则可以在脚本中就创建约束。 二、分类 1、主键约束 Primary key约束:主键约束,具有唯一性、非空,不能被修改。 2、外键 阅读全文
posted @ 2020-02-10 18:05 .NET开发菜鸟 阅读(829) 评论(0) 推荐(0) 编辑
摘要:一、数据库常用对象 这篇文章主要讲解数据库中的常用对象。 1、表 表是包含数据库中所有数据的对象,由行和列组成,用于组织和存储数据。 2、字段 字段就是表中的列。一个表中可以有多个列,也可以只有一个。 字段也有自己的属性:列名、数据类型(决定了该字段存储哪种类型的数据)。 3、视图 数据库里面可以多 阅读全文
posted @ 2020-02-10 11:51 .NET开发菜鸟 阅读(1252) 评论(0) 推荐(0) 编辑
摘要:一、数据库的组成 数据库是以文件的形式存在,由文件和文件组组成的。 1、文件 数据库文件分为以下几种类型: 主要数据文件:主要数据文件里面存放的是数据和数据库的一些初始化信息。每个数据库有且只有一个主要数据文件。主要数据文件以.mdf为扩展名。 次要数据文件:次要数据文件里面存放的是除了主要数据文件 阅读全文
posted @ 2020-02-10 10:51 .NET开发菜鸟 阅读(1898) 评论(0) 推荐(1) 编辑
摘要:一、数据库 数据库(DB):即DataBase的缩写,是按照一定的数据结构来组织、存储和管理数据的一个仓库。是存储在一起的相关数据的一个集合。可以把数据库想象成一个文件柜,文件柜里面又包含有多个文件夹,而文件夹里面又包含有多个文件。 数据库根据作用的不同,又可以分为两种: 关系型数据库。是建立在关系 阅读全文
posted @ 2020-02-10 09:21 .NET开发菜鸟 阅读(901) 评论(0) 推荐(0) 编辑
摘要:一、前言 我们先来看看传统的三层架构,如下图所示: 从上图中我们可以看到:在传统的三层架构中,层与层之间是相互依赖的,UI层依赖于BLL层,BLL层依赖于DAL层。分层的目的是为了实现“高内聚、低耦合”。传统的三层架构只有高内聚没有低耦合,层与层之间是一种强依赖的关系,这也是传统三层架构的一种缺点。 阅读全文
posted @ 2020-02-10 00:43 .NET开发菜鸟 阅读(2435) 评论(2) 推荐(7) 编辑
摘要:一、什么是AOP AOP:Aspect Oriented Programming的缩写,意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP思想的延续。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性 阅读全文
posted @ 2020-02-09 16:03 .NET开发菜鸟 阅读(7729) 评论(2) 推荐(15) 编辑
摘要:一、Http.sys HTTP.sys是仅能在Windows上运行的适用于ASP.NET Core的Web服务器。 HTTP.sys运行在内核态中,极大减少了系统调用次数,运行效率很高;自带生存环境的安全,健壮性等特点;它也可以作为反向代理,因此它的功能更加强大,主要问题是只能运行在Windows下 阅读全文
posted @ 2020-02-03 10:20 .NET开发菜鸟 阅读(2252) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示