最新文章
|
知识管理交流
→『 技术文档交流 』
本版文数:7608 今日文数:2545
|
前言XML是ExtensibleMarkupLanguage的简称,用于存储和传输数据的可扩展标记语言。它被应用在数据交换、数据存储、Web服务、网络协议等场景。XML具有可扩展性、结构化、标准化、简单易读等几个特点。基本结构XML基本结构包括文档声明、根元素、子元素、属性、注释、处理指令等部分。<?xmlversio...
|
引言字符串是编程中使用较广的一种数据,它由数字、字母、下划线等组成。在使用过程中会对字符串进行格式化。在C#语言中,.NET6及以上使用字符串插值($""语法)对字符串格式化。$语法.NET6及以上提供的一种新的语法糖,它的作用相当于对String.format的简化。使用$可以将字符串字面量标识为...
|
在C#编程中,NULL是一个特殊的值,表示引用类型没有引用任何对象。正确处理NULL值对于防止程序崩溃和提高软件的健壮性至关重要。本文将探讨在C#中如何处理NULL值,并提供一些实用的例子代码。1.NULL合并运算符(??)C#提供了NULL合并运算符(??),它允许你为可为NULL的变量提供一个默认值。当变量为NUL...
|
在软件开发中,调用第三方接口是常见的需求。这些接口为我们提供了丰富的数据和功能,使我们能够快速地构建出复杂而强大的应用。然而,在这个过程中,也可能会遇到一些“坑”。下面,我将分享一些在调用第三方接口时的经验与教训,并提供C#的示例代码。常见的“坑”接口文档不清晰或过时:有时,第三方提供的接口文档可能不够详细,甚至存在过...
|
导读在日常工作中我们需要将本地的某些端口如22803306等端口分享。让别人或者不在同一局域网内的设备访问。我们需要端口映射(内网穿透)的方式让其暴露在公网,以便访问。本文为大家总结常用内网映射的工具和方法,进行简单的总结。希望对你有所帮助。FRPfrp是一款主流的端口映射工具。笔者也一直在使用。部署简单、并且支持仪表...
|
什么是打洞在NAT1网络下,我们可以通过一种“打洞”的方式,将本地的TCP端口暴露至公网上,运行HTTP服务等。通过Natter打洞+防火墙的转发规则。我们可以方便地将内网设备暴露在公网。实验环境路由器(软路由)Centos7(内网主机)检验网络首次使用,检查当前网络NAT情况。我们首先克隆项目到本地环境。gitclo...
|
在当今这个数字化高速发展的时代,应用程序的性能监控和调试显得尤为重要。为了有效地跟踪和解决可能出现的问题,开发者们需要一款强大且灵活的监控工具。WatchDog正是为了满足这一需求而诞生的开源项目,它使用C#语言开发,专注于为ASP.NetCoreWeb和WebApi应用提供实时监控功能。一、实时监控的核心功能Watc...
|
前言多线程是C#中一个重要的概念,多线程指的是在同一进程中同时运行多个线程的机制。多线程适用于需要提高系统并发性、吞吐量和响应速度的场景,可以充分利用多核处理器和系统资源,提高应用程序的性能和效率。多线程常用场景CPU密集型任务.I/O密集型任务.并发请求处理.大数据处理等.什么是进程?进程(Process)是计算机中...
|
在.NET中,异步(Asynchrony)和并行(Parallelism)是两个不同但相互关联的概念,用于处理并发操作。以下是它们之间的主要区别和用法:异步编程定义:异步编程允许应用程序在等待I/O操作(如文件读写、网络请求或数据库查询)完成时释放线程,而不是阻塞线程直到操作完成。这提高了应用程序的响应性和吞吐量。关键...
|
在.NET6中,自动注册服务通常意味着你希望在不手动调用builder.Services.Add*方法的情况下,将服务添加到依赖注入(DI)容器中。这可以通过几种方式实现,包括使用反射、约定、或者第三方库。下面是一些策略来实现自动注册服务:1.使用反射扫描并注册服务你可以编写一个方法来扫描程序集中的所有类型,并自动注册...
|
在C#中,dynamic关键字为开发者提供了一种灵活的方式来处理那些类型在编译时未知的对象。通过使用dynamic,我们可以编写代码,就好像我们知道对象的类型一样,而实际上类型解析和绑定将在运行时进行。这为我们处理来自动态语言、COM互操作、JSON对象、XML文档或其他需要动态处理类型的场景提供了极大的便利。然而,使...
|
在C#中,Invoke()是一个用于调用方法的方法,它能够在运行时动态地调用一个方法。Invoke方法主要用于以下几种场景:1.委托的Invoke:委托是C#中的一种类型,它表示引用方法的对象。你可以通过委托来调用(或“调用”)它所引用的方法。Invoke方法用于显式地调用委托所引用的方法。delegatevoidMy...
|
前言C#语言是一种强类型语言,要求每个变量都必须指定数据类型。C#语言的数据类型分为值类型和引用类型二种。在实际编写程序时,经常会对二个数据进行比较其是否相等。C#语言为我们提供了==运算符与Equals方法。在应用这二种方式时是存在一些区别的,下面就一起了解两者有什么区别。值类型相等对于预定义的值类型,二个操作数的相...
|
前言当下编写应用程序都流行前后端分离,后端提供对应服务接口给前端或跨应用程序调用,如WebAPI等。在调用这些服务接口发送HTTP请求,而.NET为我们提供了HttpWebRequest、HttpClient几个类库来实现。下面对C#使用HttpClient类发送HTTP请求数据的几种格式。HttpClientHttp...
|
前言在.NET中有ToString()和Convert.ToString()两个方法,它们都可以用于将对象转换为字符串。然而,它们存在不同的用法和表现。了解这两种方法之间的差异,可以帮助我们选择适合需求的方法。本文介绍这两种方法及其差异。ToString()ToString()方法是Object类的成员,在各种数据类型...
|
引言在项目开发过程中,偶尔需要获取计算机环境信息,如操作系统、部分硬件等。根据获取的信息配置不同逻辑、提供硬件选择(如打印机、摄像头等)。本文将介绍几个常用的获取计算机或硬件信息方式。系统1、获取操作系统信息///<summary>///操作系统信息///</summary>///<returns></returns>...
|
前言Windows服务是运行在后台的应用程序,可以设置其在系统启动时自动运行,并在系统运行期间持续运行。这种应用程序没有用户界面,也不产生可视输出。通过服务控制管理器进行终止、暂停、启动的管理。本文将介绍派生自ServiceBase类的方式创建与部署Windows服务内容。ServiceBase类ServiceBase...
|
零代码是什么?顾名思义,零代码是指不通过编写代码去实现应用系统的搭建,这种开发形式为不具备编程技术能力的普通人赋予了开发能力。这里举个建房子的例子就更好理解:传统代码开发就像自己从0-1建房子,需要做设计、打地基、搭建建筑主体框架结构、再装修,优点是你可以完全按照自己的想法去搭建,缺点是这需要很强的专业建筑能力、漫长的...
|
在现代软件开发中,API(应用程序接口)的安全性至关重要。随着网络攻击的不断增多,对API进行加密已经成为保护数据传输的标配。本文将介绍如何在C#中快速实现API加密,以确保你的数据传输安全。一、为什么需要API加密API加密是保护数据传输的重要手段。当数据在客户端和服务器之间传输时,如果没有加密,那么数据很容易被中间...
|
摘要:Web应用程序中经常使用数据分页技术,该技术是提高海量数据访问性能的主要手段。实现web数据分页有多种方案,本文通过实际项目的测试,对多种数据分页方案深入分析和比较,找到了一种更优的数据分页方案Row_number()二分法。它依靠二分思想,将整个待查询记录分为2部分,使扫描的记录量减少一半,进而还通过对数据表及...
|
在sqlsever中大数据的分页一直是难以处理的一块,利用id自增列分页也存在不足之处。从一个相对全面的分页看,sqlsever2005中新增的row_number()函数解决了这个问题。还是从一个实际项目开始介绍吧。中国铁建股份公司的项目表中数据很大,开发之初用的是GridView控件自带的分页,在运行一年以后,点击...
|
微软SQLServer数据库中包含了很多内置的函数,如下图:它们用于处理日期、数学、元数据、字符串等。其中最为常用的就是处理字符串,里面包含了CharIndex()等函数,非常方便使用。但是对于特殊字符串的处理,比如:ISBN号7
|
程序目录的整理想必C#的开发者都遇到过这个问题,引用的dll都放在根目录下,随着项目的日益增大,根目录下充满了各种各样的dll,非常的不美观。如果能够把dll按照想要的目录来存放,那么系统就美观多了,以下是我常用的程序各文件的分布:【3rdLibs】NLog.dllNewtonsoft.Json.dll……【MyLib...
|
先说结论:在SQLServer中处理亿万级别的数据(历史数据),可以按以下方面进行:1、去掉表的所有索引2、用SqlBulkCopy进行插入3、分表或者分区,减少每个表的数据总量4、在某个表完全写完之后再建立索引5、正确的指定索引字段6、把需要用到的字段放到包含索引中(在返回的索引中就包含了一切)7、查询的时候只返回所...
|
WinForm程序开发中,在开发模式下对于异常的处理一般都是通过调试的方式来查找异常发生的未知与原因。下面以“除数为0”的情况来具体说明。Button按钮事件如下:privatevoidbutton1_Click(objectsender,EventArgse)catch(Exceptionex)}编译后运行程序,点击...
|