- 博客(83)
- 资源 (6)
- 收藏
- 关注
原创 C#整合Ollama实现本地LLMs调用
近两年AIGC发展的非常迅速,从刚开始的只有ChatGPT到现在的很百家争鸣。从开始的大参数模型,再到后来的小参数模型,从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化,还有模型的使用方式。大模型使用的门槛越来越低,甚至现在每个人都可以在自己的电脑上运行模型。今天我们要说的就是大模型工具中的佼佼者Ollama,并演示如何通过C#来使用Ollama。本文介绍了如何通过C#结合Ollama实现本地大语言模型的部署与调用,重点演示了在C#应用中集成该功能的具体步骤。
2024-11-01 11:21:53 1053
原创 利用分布式锁在ASP.NET Core中实现防抖
在Web应用开发过程中,防抖(Debounce)是确保同一操作在短时间内不会被重复触发的一种有效手段。常见的场景包括防止用户在短时间内重复提交表单,或者避免多次点击按钮导致后台服务执行多次相同的操作。无论在单机环境中,还是在分布式系统中都有一些场景需要使用它。本文将介绍如何在中通过使用锁的方式来实现防抖,从而保证无论在单个或多实例部署的情况下都能有效避免重复操作。要实现分布式锁的第一步是定义一个通用的锁接口。通过接口,应用程序可以在不同的场景中选择使用不同类型的锁来实现。/// 尝试获取分布式锁。
2024-09-09 10:27:40 1376
原创 由C# yield return引发的思考
当我们编写 C# 代码时,经常需要处理大量的数据集合。在传统的方式中,我们往往需要先将整个数据集合加载到内存中,然后再进行操作。但是如果数据集合非常大,这种方式就会导致内存占用过高,甚至可能导致程序崩溃。C# 中的机制可以帮助我们解决这个问题。通过使用,我们可以将数据集合按需生成,而不是一次性生成整个数据集合。这样可以大大减少内存占用,并且提高程序的性能。在本文中,我们将深入讨论 C# 中的机制和用法,帮助您更好地理解这个强大的功能,并在实际开发中灵活使用它。通过本文我们介绍了c#中的。
2024-05-10 15:41:36 813
原创 细聊C# AsyncLocal如何在异步间进行数据流转
在异步编程中,处理异步操作之间的数据流转是一个比较常用的操作。C#异步编程提供了一个强大的工具来解决这个问题,那就是AsyncLocal。它是一个线程本地存储的机制,可以在异步操作之间传递数据。它为我们提供了一种简单而可靠的方式来共享数据,而不必担心线程切换或异步上下文的变化。本文我们将探究AsyncLocal的原理和用法,并进行相关源码解析。探讨它如何在异步操作之间实现数据的流转,以及它是如何在底层工作的。通过本文我们探究了AsyncLocal。
2024-04-30 11:04:51 601
原创 ASP.NET Core WebApi返回结果统一包装实践
近期在重新搭建一套基于ASP.NET Core WebAPI的框架,这其中确实带来了不少的收获,毕竟当你想搭建一套框架的时候,你总会不自觉的去想,如何让这套框架变得更完善一点更好用一点。其中在关于WebApi统一结果返回的时候,让我也有了更一步的思考,首先是如何能更好的限制返回统一的格式,其次是关于结果的包装一定是更简单更强大。在不断的思考和完善中,终于有了初步的成果,便分享出来,学无止境思考便无止境,希望以此能与君共勉。上面我们也说了关于定义泛型类的优势,这里就话不多说来直接封装一个结果返回的包装类。
2024-04-16 13:24:38 920
原创 关于ASP.NET Core WebSocket实现集群的思考
提到WebSocket相信大家都听说过,它的初衷是为了解决客户端浏览器与服务端进行双向通信,是在单个TCP连接上进行全双工通讯的协议。在没有WebSocket之前只能通过浏览器到服务端的请求应答模式比如轮询,来实现服务端的变更响应到客户端,现在服务端也可以主动发送数据到客户端浏览器。WebSocket协议和Http协议平行,都属于TCP/IP四层模型中的第四层应用层。由于WebSocket握手阶段采用HTTP协议,所以也需要进行跨域处理。它的协议标识是ws或wss对应了常规标识和安全通信协议标识。
2024-04-10 09:34:14 1266
原创 基于C# Socket实现的简单的Redis客户端
Redis是一款强大的高性能键值存储数据库,也是目前NOSQL中最流行比较流行的一款数据库,它在广泛的应用场景中扮演着至关重要的角色,包括但不限于缓存、消息队列、会话存储等。在本文中,我们将介绍如何基于C# Socket来实现一个简单的Redis客户端类,来演示构建请求和输出的相关通信机制。需要注意的是本文只是着重展示如何基于原生的Socket方式与进行通信,并不是构建一个强大的Redis开发工具包。是一个内存数据库,它支持了非常丰富的数据结构,包括字符串、列表、集合、散列、有序集合等。
2024-04-09 09:16:02 394
原创 体验Semantic Kernel图片内容识别
前几日在浏览的时候,看到了一篇名为的文章。这篇文章大致的内容讲的是,使用结合来实现图片内容识别。注意,这里说的是图片内容识别,并非是OCR,而是它可以大致的描述图片里的主要内容。我个人对这些还是有点兴趣的,于是就尝试了一下,本文就是我体验过程的记录。本文缘起来于在devblogs上看到的一篇文章,感觉比较有趣,便动手实践一下。其中遇到了问题,便部署本地模型来实现,最终实现了调用本地模型实现图片内容识别。最终把它定义成一个插件,这样在中就可以通过调用插件的方式来调用本地模型,实现图片内容识别。
2024-04-08 13:14:40 1027
原创 基于.NetCore的RPC框架DotNetCoreRpc
一直以来都想实现一个简单的RPC框架。.net core不断完善之后借助其自身的便利实现一个RPC框架。框架分Server端和Client端两部分。Client端可在Console或Web端等,能运行.net core的host上运行,Server端依赖Asp.Net Core。
2023-01-06 09:42:48 1347 6
原创 js导航定位指定位置
在项目中遇到一个导航点击,定位到具体位置的上,类似这种效果通常按照我之前的做法是在左侧的点击事件里添加html锚点,右侧的A B位置ID设置为和左侧href锚点值一样即可。但是这样做有一个缺陷,就是点击左侧导航的时候,浏览器会有滚动效果,而且浏览器url上会加上锚点的信息,算是个缺陷吧。正好看到了项目中之前的实现,看到了另一种实现方式,按照这个思路,自己修改了一下,果然比锚点的方式感觉更干净一
2017-05-04 16:25:05 2399
原创 AOP面向切面编程
名称含义Aspect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。AOP是OOP的延续,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP对业务逻辑的各个部分进行隔离,可以
2016-04-18 20:33:14 806
原创 asp.net mvc获取路由参数
学习了mvc有一段时间了,本以为直接可以通过request对象直接获取路由参数呢,后来实验了一下发现想错了,在不同的地方,获取路由参数的方式也不一样,这里分班说一下,在controller,非controller的类里面,和view里如何获取路由参数:1.在controller里获取路由参数:var controller = RouteData.Values["controller"];/
2016-04-17 22:43:22 6695
原创 js倒计时(附js date操作)
var interval = 1000; function ShowCountDown(year, month, day, hour, minute, second, divname) { var now = new Date(); var endDate = new Date(year,month-1,day,hour,minute
2016-04-12 22:19:29 712
原创 sql求解两个时间差
DATEDIFF 函数 [日期和时间]功能 返回两个日期之间的间隔。语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 )date-part : year | quarter | month | week | day | hour | minute | second | millisecond参数 date-p
2016-04-12 21:09:31 5287
原创 jQuery多元素选择器操作
1.选择带有多个class的元素比如下面代码需要选择同时带有这几个class的元素,怎么写?1divclass="modal fade in">div>1. 依次过滤1$(".modal.fade").filter("in"2. 属
2016-04-12 20:50:17 701
原创 MIME
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。它是一个互联网标准,扩展了电子邮件标准,使其能够支持:非ASCII字符文本;非文本格式附件(
2016-04-11 22:45:14 381
原创 HTTP Keep-Alive详解
HTTP是一个请求响应模式的典型范例,即客户端向服务器发送一个请求信息,服务器来响应这个信息。在老的HTTP版本中,每个请求都将被创建一个新的客户端->服务器的连接,在这个连接上发送请求,然后接收请求。这样的模式有一个很大的优点就是,它很简单,很容易理解和编程实现;它也有一个很大的缺点就是,它效率很低,因此Keep-Alive被提出用来解决效率低的问题。Keep-Alive功能使客户端
2016-04-11 22:36:29 763
原创 Sql Server数据库备份大全(Sql语句)
首先简单的介绍一下Sql server 备份的类型有:1:完整备份(所有的数据文件和部分的事务日志文件)2:差异备份(最后一次完成备份后数据库改变的部分)3:文件和文件组备份(对指定的文件和文件组备份)4:事物日志备份(所有数据库的变更)5:尾日期备份(日志的活动部分,指上一次为备份的日志部分)6:部分备份(主文件组、每个可读可写文件组和指定
2016-04-11 22:32:11 7240
转载 EntityFramework中常用的数据删除方式
最近在学EF,目前了解到删除操作有三种方式,第一,官方推荐的先查询数据,再根据查询的对象,删除对象。这是第一种,官方推荐:第二,自己创建一个对象,然后附加,然后删除。这是第二种:第三,自己创建对象,然后放入EF容器,然后删除。这是第三种:跟踪结果首先第一种会先查询,然后再删除,对数据
2016-03-31 22:39:57 989
转载 Asp.net MVC中防止HttpPost重复提交
重复提交的场景很常见,可能是当时服务器延迟的原因,如购物车物品叠加,重复提交多个订单。常见的解决方法是提交后把Button在客户端Js禁用,或是用Js禁止后退键等。在ASP.NET MVC 3 Web Application中 如何去防止这类HTTP-Post的重复提交呢? 我们可以借助Session,放置一个Token在View/Page上,然后在Server端去验证是不是同一个Token来
2016-03-21 16:09:05 3063
原创 ef更新部分字段
ef更新字段的方式有两种:1.就是把实体直接查询出来修改部分字段,在附加到ef上,如下:using (ZDPORTALEntities1 db = new ZDPORTALEntities1()){ News n = db.News.FirstOrDefault(); if (n != null) { n.N_Title = "C#简介";
2016-01-07 11:05:06 11796
转载 SQL查询区分大小写方法
一、实例介绍SQL语句大小写到底是否区分呢?我们先从下面的这个例子来看一下:例:--> 创建表,插入数据:declare @maco table (number int,myvalue varchar(2))insert into @maco select 1,'aa' union allselect 2,'Aa' union allselect 3,'aA
2015-12-18 16:46:03 4354
原创 c#生成时间戳
1.时间戳概念:时间戳,通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。在电子商务交易文件中,时间是十分重要的信息。在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容。数字时间戳服务:是网上电子商务安全服务项目之一,能提供电子文件的日期和时间信息的安全保护。2.c#获取时间戳的方法: ///
2015-12-07 11:34:23 6320
原创 asp.net mvc AjaxBeginForm结合Partial使用
本文介绍asp.net mvc ajaxbeginform异步加载分部视图的方法,废话不多说,直接上代码:controller代码如下: public ActionResult BeginFormMain(string name) { List data = new List(); for (int i = 0; i < 30
2015-11-26 09:40:57 1253
转载 C# 委托及各种写法
委托是嘛?委托是一个类型安全的对象,它指向程序中另一个以后会被调用的方法(或多个方法)。通俗的说,委托是一个可以引用方法的对象,当创建一个委托,也就创建一个引用方法的对象,进而就可以调用那个方法,即委托可以调用它所指的方法。如何使用委托?1、定义委托类型[访问修饰符]delegate 返回类型 委托名(形参);2、声明委托对象委托名 委托实例名;3、创建
2015-11-15 16:49:12 472
原创 JS Replace全部替换字符方法
js默认的replace如果替换字符串中的某个元素,如果有很多相同的元素那么他只会替换掉默认的第一个元素: var stringObj="小明你好!我也叫小明"; stringObj.replace("小明","小张"); //输出的就是:小张你好!我也叫小明为了解决这个问题,必须得使用另一个方法,用正则标识一下: var stringObj="小明你好!我也叫小
2015-10-23 19:48:00 1268
原创 c#调用cmd(可输入指令)
/// /// c#调用cmd /// /// 输入的命令 public static void RunCommand(string strcmd) { System.Diagnostics.Process p = new System.Diagnostics.Process();
2015-10-20 20:27:01 3272
原创 EntityFramework 6.0< Code First > 连接 Mysql数据库
一,安装: 1、开发环境: VS2013与EF6 2、Mysql数据库为:Mysql Server 6.0 3、安装:Mysql for Visual Studio 1.1.1 下载位置:https://cdn.mysql.com/Downloads/MySQLInstaller/mysql-visualstudio-plugin-1
2015-10-19 19:24:26 831
原创 c#子线程调用主线程控件
相信对多线程有所了解的人都知道,子线程是不能直接操作winform上的控件的,因为默认的控件是在主线程上生成的,子线程是不能直接访问或者修改的,直接访问或者修改控件属性的话会报错。这个即使在Java上也是这样,Android中也经常被用到的。这样的话,子线程岂不是没办法访问主线程生成的控件了,当然是否定的,有问题就用解决办法,微软的人更了解这一点,并且有好几种解决办法,主要的思路就是在子线程里
2015-10-19 10:23:30 6285
原创 asp.net <%%>&<%#%>&<%=%>&<%@%>&<%$%>用法区别
1.用来绑定后台代码如:< %for(int i=0;i<100;i++){Reaponse.Write(i.ToString());}%>2. 是在绑定控件DataBind()方法执行时被执行,用于数据绑定如: 3.用来绑定后台的变量或方法且有返回值 的,但此时的变量名或方法的访问修饰符为protected或public如: 4.用来导入后台命名
2015-10-15 19:55:32 371
原创 asp.net检测是否为移动设备
随着移动设备的流行,兼容web的项目的需求,不断的增加,那么我们怎么样判断,是否为移动端设备请求的服务端呢,asp.net为我们提供了这样的写法:string strUserAgent = Request.UserAgent.ToString().ToLower(); if (strUserAgent != null) { if (Request.Browser.IsMobil
2015-10-09 11:46:50 2784
原创 c# HttpWebRequest post和get请求http
public class HttpUtility { /// /// Get方式获取Http请求 /// /// 请求地址 /// 编码方式 /// 请求内容 public string UrlGet(string Url, string Encode) {
2015-09-27 21:25:56 568
原创 js计时器
js代码: //计时因子 var c = 0; var t; function timedCount() { var temptextmin = document.getElementById('txt'); //根据计时因子获取小时数和分钟数 hour =
2015-09-26 21:35:58 371
原创 c#读取指定路径的配置文件
为了实现多个C#程序共用一个config文件,需要程序读取指定路径的config文件。代码如下:ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = @"F:\App1.config"; ; Configuration config
2015-09-26 16:52:49 1492 2
原创 sql 排序将为0的放在前面
现在由于项目不断升级很多,数据库设计难免会存在业务上的不合理在所难免,比如某字段有三种形式-1,0,1 ,-1表示未发布,0表示未审核,1表示审核,现在要求我们根据这个字段排序,未审核的排在最上面,但是字段存储的-1,0,1,正排序,倒排序,都满足不了0在最上面,百度了一下,还是找得到解决方案的,sql如下:SELECT [大题型编号] ,[大题型名称] ,[大题型数]
2015-09-24 14:25:00 2421 2
原创 vs .sln与.suo文件
Visual Studio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件。为解决方案资源管理器提供显示管理文件的图形接口所需的信息从而在每次继续开发任务时,不会因开发环境而分散精力; *.sln:(Visual Studio.Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方
2015-09-22 17:35:16 634
原创 js实现滚动条边滚动边加载数据
相信很多人都看到了QQ空间,或者淘宝界面上的,页面上的滚动条拉到底部会自动异步加载数据的形式,其实很简单,使用了js滚动条,滚动的触发事件可以实现类似的技术,直接看代码: $(window).scroll(function () { var scrollTop = $(this).scrollTop(); var scrollHeight = $(docum
2015-09-21 22:47:53 5357
原创 js cookie操作
1.纯js代码操作://添加cookie//name=cookie名称//value=cookie值//expiresHours=过期时间//document.cookie = "name=value;domain=.google.com";//这样,所有google.com下的主机都可以访问该cookie。//例如:www.google.com和gmail.google.com就
2015-09-16 20:18:20 494
npoi使用手册
2015-09-30
asp.net mvc基于jquery分页
2015-06-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人