- 博客(172)
- 资源 (4)
- 收藏
- 关注
原创 手把手教大家开发一个基于DeepSeek的对话AI
最近的DeepSeek可谓是非常火,到处都在讨论DeepSeek,而且各种应用都开始接入DeepSeek,那我今天我也来凑凑热闹,查看DeepSeek官网可以看到有开放平台,调用方式也比较简单,那么话不多说,我们就基于DeepSeek开发一款属于自己的对话式AI应用。对于技术栈的选择,由于是一个对话式AI应用,而且功能也是比较简单的,所以暂时不考虑接入后端,就一个前端页面能对话就可以满足需求了。所以采用Vite+Vue3来做这么一个小应用。
2025-03-08 13:41:29
553
原创 C#读写锁与并发控制
我们在使用一些资源的时候,有些资源可能是临界资源,就是同一时刻只能允许一个进程进行访问,比如打印机,或者文件的一些写入操作。
2024-09-06 21:00:00
500
原创 .net core 管理用户机密
书接上文,链接我们自定义了一个配置系统,可以读取文件,一般情况下这个文件是需要上传到版本管理工具里的,可以是自建的gitlab,还可以上传到github或者gitee。那么问题就来了,有些配置文件比较机密,比如存放了一些数据库地址,用户名密码亦或是第三方服务的密钥等,而这些东西不希望上传到别的地方。我只想本地使用。那么如何最简单的实现这个需求呢?
2024-09-05 21:00:00
1444
原创 asp.net core web api项目添加自定义中间件
在asp.net core web api项目中,默认提供了很多的中间件,比如访问静态文件中间件,跨域配置中间件UseCors,路由中间件UseRouting,身份验证中间件。那么如何添加一些自定义的中间件呢。
2024-09-03 19:00:00
819
原创 尝试自己实现Linq的Count,Where,Select方法。
今天我们来自己尝试实现一下Linq类库中的一些常用的CountWhereSelect方法。通过自己实现这些常用的基础功能,可以加深我们对委托,泛型,以及扩展方法的理解。正式开始之前呢,还是先简单说一下关于委托泛型以及扩展方法的一些知识。
2024-08-29 13:58:23
1061
1
原创 SQL Server Profiler 工具的使用
那么如果是牵扯到数据库相关的操作,我们可以利用SSMS自带的分析工具,来查看进来的每一条sql语句的执行时间,以此来定位问题。打开之后需要设置一下跟踪属性,其中常规里,可以设置把跟踪记录导出到文件或者表,如果为了方便仔细分析,可以选择保存到文件,之后停止跟踪的时候,就会生产一个。但是这里有一个问题,这个跟踪的是整个服务里面的所有数据库,如果数据库比较多,或者连接比较活跃的话,那跟踪记录就会不断的刷新,就不容易找到关键信息。文件,之后在SQL Server Profiler在打开这个文件,就可以慢慢分析了。
2024-08-28 15:02:44
1767
1
原创 LeetCode做题笔记第11题:盛最多水的容器
首先分析问题,盛水最多的时候,就是长乘宽最大的时候,长指的是数组下标的距离,宽指的是两条边中最短的一条边,采用双指针法可解决该问题,为了不错过最优的情况,left和right分别从两边开始往中间移动,每次只能移动一格,同时,比较左边和右边值的大小,那边的小那边的继续移动。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。输入:[1,8,6,2,5,4,8,3,7]来源:力扣(LeetCode)
2023-06-25 15:50:13
396
原创 C# 接口中DateTime类型字段返回年月日格式,去掉时分秒的数据
在我们平时写接口的时候,避免不了这样一个问题,数据库中存的字段类型为,代码中对应的实体类也是类型的字段,于是在读取数据库内容之后返回的数据也是类型的值,比如,但是对于服务器请求者来说,他们可能只需要显示年月日即可,后面的时分秒是不需要的,如果能说服他们,不用修改我们的代码,当日最好。那么对于我们服务提供者来说,如何处理这类问题呢?可以直接把返回的实体类中的修改为string,格式就可以自定义了,但是缺点也很明显,采用类和类,通过给属性加特性类的方式进行修改。实现的简要步骤如下。这里我新建个一个的项目,来
2022-10-24 10:57:26
4432
原创 JS比较多个时间有没有交集
今天遇到一个稍微有点意思的问题,记录一下,当然并不是很复杂的需求,解决方式也非常简单粗暴,当然如果你有更好的想法,欢迎评论交流。我们只需要判断,第一个时间的结束时间小于等于第二个时间的开始时间或者第二个时间的开始时间大于等于第一个时间的结束时间即可。数组长度未知,但是每个元素的开始时间都是小于等于结束时间的。我就简单说下我的思路,首先如何判断两个时间之间是否存在交集,存在交集有哪几种情况。假如我们有一个对象数组,里面存的都是时间,开始时间和结束时间,类似下面这样。那么不存在交集就两种情况。
2022-08-24 17:26:54
2094
原创 Oracle批量修改字段类型varchar2(2000)转clob
平时用的数据库主要是SqlServer,但是在不同的项目上,可能会用到不同的数据库,所以在字段类型转换上就遇到了一些小问题,记录一下。,如果数据库已经在被使用了,这时候只能动态的修改字段类型了。基本思想就是添加一个新字段,把旧字段中的值赋值给新字段,把旧字段删除,把新字段名修改为旧字段。如果字段比较多,上面的脚本可能就很长了,这个时候可以考虑采用循环来解决问题了。首先需要查询指定用户下所有的表名,字段名,字段类型,字段长度,语句如下。类型,都最多可以支持最大2GB的内容存储,但是对于。
2022-08-21 10:11:50
1353
1
原创 我的创作纪念日
2013年注册的优快云,一转眼已经九年了。还记得刚上大学那会。由于需要查资料而了解到了优快云,注册了个账号,但是那几年基本没写过文章,也不知道写些什么。之后写文章也是断断续续的,一般是了解到了什么新的中间件,解决了一个问题,都乐意写篇博文分享一下,一方面可以记录下防止以后忘记,另一方面也可以帮助更多的人。写博客的这些年中,前几年基本没获得多少粉丝,因为之前也一直不知道可以把博文设置为仅粉丝可见,我还以为不是粉丝就看不到这篇文章呢,后来发现不是粉丝也是能看到的,不过只能看到部分,点击关注之后,才能看到全部
2022-06-22 09:53:31
4743
2
原创 SQL Server创建发布订阅
最近在研究基于Sqlserver 发布订阅实现的读写分离功能,踩了些坑,在此记录一下。发布订阅是有一台主数据库,对应多台从数据库,当主数据库数据有变化时,同步到从数据库,从而保证数据的一致性,可以由主数据库统一管理,也可能有从数据库单独管理。缺少图片由于目前打算在本机进行测试,所以首先在Sql Server里新建一个数据库名为 里面有一张表,里面有两条数据。接着在新建一个名为的空数据库。我们之后的想要的效果就是,当Test库下有数据或者表结构变化了,自动同步到这个库。接着在D盘新建一个空文件夹名为用来保
2022-06-20 16:28:31
3136
原创 Unity中设置对象匀速移动
如何设置对象的匀速移动再Unity中我们可以通过Translate来调整对象的位置,但是如下的写法。void Update(){ var location = -0.08f; transform.Translate(location, 0, 0); }效果如图。图中可以看到,小飞机运动明显不够流畅,感觉特别的卡顿。想要了解这个原因,需要先了解下FPS的概念,FPS全称Frames Per Second,每秒传输帧数,再上面的演示里我把FPS固定为了50,代码如下。Ap
2022-05-29 21:41:35
4205
原创 Unity设置为中文
UNity设置为中文打开UnityHub 再安装界面找到使用的Unity编辑器,右边有个齿轮,点击选择添加模块。然后选择下面的中文简体进行安装。我已经安装过了,所以没有这个模块了。之后打开Unity编辑器,以此选择 Edit Preferences,Languages,简体中文,之后重启编辑器即可。...
2022-05-29 21:18:26
60708
8
原创 Unity中对图片进行切片
Unity中对图片进行切片现在我们有一张这样的图片。这是一张Png格式的图片,图片中有两个小黄人,戴夫和凯文,这两个小黄人是在一张图片中的,但是我们在使用的时候,是需要单独拿来使用的,那么如何在Unity中进行图片切片操作呢。首先我们需要先选中素材,然后把Sprite 模式修改为多个,之后点击Sprite Editorconsole.timeEnd('time');来查看代码执行耗时,time和
2022-04-25 11:23:02
3973
2
原创 JS循环及跳出循环总结
前言今天来总结一下JS中循环方法的使用,以及如何跳出循环/遍历。正文跳出循环有四种方式break 用来跳出循环.continue 跳过当次循环,继续下一次的循环return 跳出循环,并返回调用函数,之后的代码不在执行。thorw Error() 用来跳出循环,之后的代码不在执行,需要配合try catch使用for循环 TestFor () { for (let i = 0; i < 5; i++) { console.log(i)
2022-01-12 20:00:00
6045
1
原创 C#特性(Attribute)讲解
1.特性的介绍与使用特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。特性的使用方法很简单,只需要写在方法,类,枚举,字段等程序体的上面用[]括起来即可,如下。 [Route("api/[controller]/[action]")] [ApiController] public class TestC
2022-01-07 16:43:55
10096
原创 .NET Nlog使用讲解
准备项目.Net项目中关于日志的组件还是很多的,包括log4net,Nlog,以及.net core 框架自带的Logging,今天就简单介绍一下Nlog。首先准备一个demo项目,我这里新建的是一个基于.net6的web项目,文件目录如下。Nlog.config文件是自己添加的,里面内容稍后再说。接着添加Nlog的nuget包。名称版本如下,由于是.NET Web项目,所以没必要下载全部的Nlog包,下载对应的Nlog.Web.AspNetCore即可,当然下载第一个也是可以的,按需引入。接
2022-01-06 15:02:51
7017
原创 WPF 用TextBox和Calendar自定义可以选择年月的日期选择控件
背景在做WPF项目时,需要一个只可以选择年月的日期控件,但是工具箱里自带的DatePicker好像无法设置只选择年月,找了一些资料,但是都太老了,就不在贴出来了,下面是我用TextBox结合Calendar做的一个日期选择功能,没加什么样式,但是也基本满足我的需要了。截图代码先说说思路,这里一共用到了三个控件分别是TextBox,Image和Calendar,Calendar默认是隐藏的,点击Image显示Calendar,选择月份之后,在隐藏Calendar,同时给TextBox赋值即可。Ca
2021-12-01 16:25:26
2490
原创 使用Sqlite3的一些注意事项
在使用sqlite3中遇到一些细节问题,特此记录一下。截取字符串 substr在sqlite3中,截取字符串的内置函数为substr(name,index,length),且index是从1开始的,使用方法如下。测试数据现在截取Password的前两位字符SELECT SUBSTR(Password,1,2) as Password from User结果如下拼接字符串在sqlite3中拼接字符的符号为||而不是+,使用方法如下。测试数据现在给Password字段添加hello
2021-12-01 11:00:01
1526
原创 LeetCode做题笔记第168题:Excel表列名称
题目描述给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。示例 1:输入:columnNumber = 1输出:“A”示例 2:输入:columnNumber = 28输出:“AB”示例 3:输入:columnNumber = 2147483647输出:“FXSHRXW”解题思路通过分析可知,Excel中的列名称,是符合26进制的,举例,28转成26进制为:12。因为 1乘26的1次方+2乘26的0次方=28所以接下来思路就简单
2021-07-01 10:36:56
328
原创 nginx 代理解决跨域问题
前言可能在某些时候我们的前端项目需要访问一些外部的接口,比如Apollo等,而直接使用axios发送请求的话,会报跨域的错误,具体什么是跨域这里就不啰嗦了,如下图。这个接口地址当然是正确的,可以放到接口测试工具里试一下。解决跨域有很多种方式,但是大多数方式都需要服务端配合,这里加一句题外话,.Net Core项目如果允许跨域的话,可以在StartUp.cs里添加如下的配置。 app.UseCors(builder => builder.AllowAnyOrigin()
2021-06-28 11:26:23
5946
2
原创 LeetCode做题笔记第167题:两数之和 II - 输入有序数组
题目描述给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例1输入:numbers = [2,7,11,15], targe
2021-06-22 10:02:09
227
原创 LeetCode做题笔记第136题:只出现一次的数字
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4解题思路先说说我的想法吧,一开始没注意到每个元素均出现两次这个条件,没想到这有什么深层次的含义,所以还是按照一般的思维方式思考,这是一个整数数组,那就先排个序,然后比较当前元素和左边以及右边是否相等,若都不相等,则可以证明只出现一次。很快哈,代码就写好了,参考下面的代码1。提交测试,通过,完美。你以为事情
2021-06-18 14:42:11
196
1
原创 LeetCode做题笔记第125题:验证回文串
题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。输入:“A man, a plan, a canal: Panama”结果:True输入:“11,2,2,11”结果:True输入:"race a car"结果:False解题思路先说一下我踩的坑,因为要判断一个字符串是否是回文串,一开始我就想把字符串转成规则的字符串,把除数字和字母之外的字符都去掉,字母在转小写,接下来只需要挨个前后挨个匹配就行了。示例代码如下。 string pattern
2021-06-18 09:41:04
291
1
原创 LeetCode做题笔记第118题:杨辉三角
题目描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。实例:解题思路首先分析题目可知,第i行是有i个元素,且每个元素的值,假设下标为index,则元素值为上一行的index-1位置和index位置的元素和。举例第五行第2个元素4,下标为1,则其等于第四行第1-1=0位置元素1和1位置的元素3之和。双层for循环。完整代码 class Program { static void Main(str
2021-06-16 10:24:47
220
原创 Easy-shop微服务项目的本地启动方式
前言关于esay-shop项目只是一个自己用来练手的微服务项目,由于启动略显繁琐,有小伙伴问了,那我就把在本地启动这个项目的步骤写一下,希望能帮助到你。开始实践首先我们先把代码克隆下来。地址在这里。https://gitee.com/limeng66/easy-shop项目克隆下来之后,就是这些了。然后需要把数据库还原一下,由于我这里仅提供了Mysql的脚本,所以还是推荐用Mysql吧,先在Mysql中新建一个名称为easyshop的数据库。接着打开DB文件夹,把easyshop.sql放到My
2021-06-07 11:58:03
1321
原创 C#反射的简单应用
使用场景假如我们需要做这样一个功能,用户可以修改一个列表里的信息,但是系统里需要记录用户修改了哪一条记录的哪几个字段,把改变的的字段之前的旧的数据保留下来,方便用户可以追溯数据,就好像QQ可以查看历史头像一样,User表需要更新,但是同时需要在UserHistory表里把旧的记录保存起来,我们可以怎么做呢?这里我们把问题简单梳理下,每一条记录可以抽象为一个实体UserDto,用户修改之后提交的也抽象为UserDto,那就变成了比较同一个实体的不同属性的值了。那就简单了,上代码。 public st
2021-06-02 13:53:34
2643
原创 在Docker中配置Consul集群
Docker中部署Consul集群在微服务架构中,为了保证各个节点的高可用,最常用的做法就是集群,服务实例做集群, 网关,服务发现等也需要做集群,接下来就来实践一下,在Docker中给Consul做集群。部署之前,先来了解一下Consul的集群,Consul中分为Client节点和Server节点,Client节点数量无限制,Server节点需要大于等于3个,这样才可以通过投票选举算法选出Leader,由Leader节点负责数据的同步,若Leader节点挂了,则会在剩下的两个节点继续用投票选举算法选出
2021-05-24 16:32:41
641
原创 C#把文字放到图片上
做小程序时遇到一个问题,用户在分享内容的时候,我需要生成一张带有内容的图片,那么如何把文字放到图片上,并生成一张新的图片呢?先看效果图。这是背景图接下来上代码。 /// <summary> /// 字符串放到图片上 /// </summary> /// <param name="text"></param> public static string AddStringToImg(str
2021-05-21 09:22:34
4385
4
原创 常见排序算法解析C#
冒泡排序介绍冒泡排序的思想是两两比较,两两交换,假设从左到右数据是依次增大的,首先比较元素1和2,若1比2大,则交换位置,继续比较元素2和3,就这样一直比较下去,就可以把最大的值放到最右边,直到所有的数据比较移动完成,则排序完成。平均时间复杂度为O(n^2)动图演示代码 public static int[] BubbleSort(int[] arr) { int temp; for (int i = 0; i < arr.Length-1; i++)
2021-05-20 16:29:11
167
原创 历时两周,我的个人小程序上线啦。
自上次开发过一个VSCode插件程序之后,已经过去两个月的时间了,其实这段时间也没闲着,作者在学习微信小程序的开发,于是在稍稍入门之后,就正式开始了微信小程序的开发工作。首先来看看开发的成果。段子页面趣图页面个人中心页面主要功能就这么多,同时还要一个后台管理系统负责发布内容,如下图。想要体验小程序的,可以直接扫码体验哦。接下来聊聊微信小程序开发中的一些故事吧。想要开发一款微信小程序,首先得有一个定位,确定要做什么东西,接着需要准备数据和接口,其实市面上有很多聚合平台,提供海量的接口,
2021-05-13 09:19:11
329
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人