C#技术
赵庆明老师
成都理工大学优秀讲师,教授,毕业于电子科技大学,拥有二十年开发经验,和十六年一线教学工作经验,发表学术论文十余篇。参与包括863项目等多个国家级科研项目,参与包括微信机器人(WeChaty)等多个开源项目的研发。擅长讲解汇编、C/C++/C#、易语言等系列课程,其讲课方式独特,内容生动形象,风格通俗易懂,能够让学生触类旁通,极易掌握所讲知识点。
展开
-
如何在C#代码中判断当前C#的版本和dotnet版本
【代码】如何在C#代码中判断当前C#的版本和dotnet版本。原创 2024-05-30 09:00:42 · 1105 阅读 · 0 评论 -
使用C#调用宝塔面板API
购买了一台硅谷的服务器,安装了宝塔Linux面板,通过宝塔设置了防火墙,只允许我自己访问(在把办公室,在家)。办公室出口为固定IP地址,简单添加即可。但家里使用的是电信宽带,出口IP地址几乎每天都不一样。修改防火墙太麻烦,因此考虑使用程序的方式自定设置。原创 2024-03-13 11:47:01 · 752 阅读 · 0 评论 -
【原创】Azure语音合成示例
【代码】【原创】Azure语音合成示例。原创 2023-06-18 08:27:12 · 360 阅读 · 0 评论 -
【原创】如何进行自制小视频字幕制作
作为一个UP主,制作小视频基本的日常工作。相比于没有字幕的小视频来说,添加字幕后,对于观众来说更为友好。但是,制作字幕确实一件苦逼的事情。如果再配上外文字幕,供国外用户欣赏,这个过程对于UP主来说更为苦逼。不过,虽然苦,但是还得继续。。。原创 2023-06-13 09:06:36 · 346 阅读 · 0 评论 -
【原创】解决.NET 6程序无法在Win7上运行的问题
第一次启动时,程序弹出一个对话框,需要安装.NET运行环境,按步骤执行,安装成功。折腾了很久,最后发现需要装一个Windows的补丁:KB2533623。使用.NET6 写了一个程序,结果要运行在Win7上。查看系统日志,结果时hostfxr.dll的问题。第二次启用,结果一闪而过,啥提示都没有就退出了。安装完成后,程序就可以正常运行了。原创 2023-06-07 09:29:55 · 3274 阅读 · 1 评论 -
【原创】使用阿里云搭建一个Chat-GPT Proxy
为了Chat-GPT Api,如果使用国外的服务器,费用是个大坑。其实阿里云里面位于美国的云虚拟主机,还是可以用的,虽然速度慢了点,但毕竟能用,而且价格也便宜。只是这个云虚拟主机,只能放一个Web页面,不能进入桌面。原创 2023-05-10 15:54:44 · 3499 阅读 · 0 评论 -
【原创】搭建一个“免费的”Chat-GPT Proxy
前文“搭建一个Chat-GPT Proxy”,需要借助于云主机,但云主机就涉及到费用。有没有“免费”的呢?结果:有!!那就是,使用“Azure OpenAI Service”。原创 2023-04-30 00:36:20 · 799 阅读 · 0 评论 -
【原创】搭建一个Chat-GPT Proxy
由于众所周知的原因,Chat-GPT在国内无法使用。如果要使用的话,需要一定的科技含量。原创 2023-04-29 19:26:02 · 3515 阅读 · 0 评论 -
【原创】HttpClient访问“不可靠”Https时错误处理
但,使用HttpClient访问不合法的https站点,如直接使用IP地址访问,则出现异常。使用HttpClient访问带有合法证书的https站点,正常。使用HttpClient访问http站点,正常。这样,就不再报异常了。原创 2023-04-29 18:03:21 · 2377 阅读 · 1 评论 -
使用C#调用其它exe中的函数
这里有一个f函数,还有一个main函数,其中我们要关系的计算函数为f。这里需要注意,调用的时候,需要用到委托(delegate ),它可以将一个函数地址转换成一个函数,从而按照C#的标准来调用。这个exe文件中最重要的一段内容就是一个函数(int f(int a,int b)),使用这个f函数来实现其核心的计算功能。问题:exe没有导出这个f函数,因此在C#中无法直接使用DllImport来进行PInvoke调用。在C#的启动函数main中,首先将这个exe文件加载到内存,这会得到一个加载的地址。原创 2023-04-08 09:15:43 · 1252 阅读 · 5 评论 -
使用Linq对数据库进行多GroupBy查询
Oracle数据库,某表中的数据3000万行。原创 2023-03-22 18:08:32 · 1114 阅读 · 0 评论 -
一个WebApi请求示例
各种参数都没问题,但是WebApi请求却有问题,排查了很久,终于解决了。原来是Http请求头中一个参数“Content-Type”需要如此设置.一件事情终于完成了。原创 2023-03-17 14:31:48 · 612 阅读 · 0 评论 -
关于国密对接遇到加密解密不兼容的问题
不同组件之间SM4加密解密不兼容。原创 2023-03-13 12:17:51 · 1572 阅读 · 3 评论 -
[原创]Visual Studio 2022中的localdb
Server:原创 2023-01-06 22:49:55 · 648 阅读 · 0 评论 -
【原创】C#下载具有防盗链的图片示例
一般防盗链,只做到了域名级别,因此为image_ref_url 提供一个域名地址就行(比如http://libopac.cdut.edu.cn),域名后面随便填写都行。其实破解也很简单,也就是方位图片的时候,给它加一个referer参数。接下来,我们使用C#来下载这个图片(添加合法的referer参数)一些网站为了防止自己的图片被其它网站引用,添加了防盗链功能。这是一本书的封面,如果你直接打开的话,会保一个错误信息。比如你现在访问这个连接。原创 2022-10-20 15:57:11 · 425 阅读 · 0 评论 -
【原创】C#读取其他进程失败的问题
本人写一个小程序,需要触发性读取某一个程序的进程中的一些数据。1、找到进程2、获取进程的handle,3、使用ReadProcessMemory来读取数据。读取数据过程中,第一次触发,读取正常。第二次触发,读取正常,第三次以后,数据均不正常。经过多次排查,最后发现,是由于缓存了进程的handle,从而导致读取数据失败。解决方案,每次在使用ReadProcessMemory读取数据时,重新获取进程handle,数据获取不再出错。这里会发现,每次取进程handle时,结果都不一样。...原创 2022-06-07 10:17:27 · 379 阅读 · 0 评论 -
【原创】C#与C之间的进程互斥同步示例
C#程序启动起来之后,等待C++发送操作。在C++程序,按一次回车,C#程序执行一次循环。。。。。。C++C#原创 2022-06-05 09:15:22 · 289 阅读 · 0 评论 -
【原创】C#读取C++dll资源文件中的BITMAP
C# 读取C++ dll资源文件中的BITMAP原创 2022-06-03 22:28:27 · 426 阅读 · 0 评论 -
【原创】使用System.Text.Json对Json字符串进行格式化
Newtonsoft.Json虽然使用广泛,功能强大,但在.NET Core中需要导入。而System.Text.Json属于微软.NET Core中官方的包,相比于Newtonsoft.Json包来说,是一个精简的包。尤其是Newtonsoft.Json作者加入微软之后,微软官方包的运行效率已经远远超越Newtonsoft.Json包。因此,在开发中,尽可能来使用System.Text.Json,必经这玩意是微软的亲儿子。在对一个JSON字符串进行格式化的时候,使用System.Text.Json原创 2022-04-22 10:02:30 · 5480 阅读 · 1 评论 -
【原创】调用有道翻译Api翻译Linux命令accessdb输出内容
accessdb输出内容在linux控制台输入accessdb指令,结果密密麻麻地输出了一大堆。[root@status ~]# accessdb$version$ -> "2.5.0". -> "- 1 1 1633086380 0 B - - gz bash built-in commands, see bash(1)".k5identity -> "- 5 5 1629954739 0 B - - gz Kerberos V5 client principal select原创 2022-04-10 20:46:35 · 6411 阅读 · 0 评论 -
【原创】C#浏览器监控程序核心代码
在一些公共场合,需要为公众提供一些公共查询的计算机,其实就是一些Windows计算机。我们希望使用计算机的人只使用浏览器打开某个指定的网页。在使用过程中,用户查询完毕之后,往往不主动关闭自己浏览过的网页,对于新来的用户来说造成一定的困扰。各个屏幕上花花绿绿,乱七八糟的信息,对于整个环境的整洁性来说,很不和谐。我们的解决把法就是,为浏览器设置默认主页。在用户新打开浏览器的时候,就会直接打开我们希望用户访问的页面。但是新打开浏览器这个操作需要用户自己点击鼠标,而且还有一个问题,“关闭浏览器”,也需要用户主动原创 2022-03-31 11:08:58 · 1571 阅读 · 0 评论 -
【原创】ASP.NET Core中远程IP地址相关的编码
获取远程客户端IP地址由于asp.net可能会使用反向代理,因此判断就多了几步,代码如下: var ip = Request.HttpContext.Connection?.RemoteIpAddress?.ToString() ?? "0.0.0.0"; if (Request.Headers.ContainsKey("X-Real-IP")) { ip = Request.Headers["X-Real-IP"].ToString(); } else if (Request.Hea原创 2022-03-30 10:03:28 · 510 阅读 · 0 评论 -
【原创】C#List线程安全相关解决方案
在多线程程序中,可能多个线程都需要操作一个共用的List,而微软实现的List却是非线程安全的。也就是说,在多线程情况下,共用的List会产生线程安全问题。对于这个问题,有不少的解决方案,比如换用线程安全的类型,如:BlockingCollection<T> ConcurrentBag<T> ConcurrentDictionary<TKey,TValue> ConcurrentQueue<T> ConcurrentStack<T>原创 2022-03-03 10:35:02 · 9245 阅读 · 0 评论 -
【原创】appsettings.json配置文件中数组中数据检索
配置文件名:appsettings.json{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "WeChat": { "RedirectUri": "https://libAuth.cdut.edu.cn/connect/oauth2/redirect/",原创 2022-02-25 12:00:23 · 1095 阅读 · 0 评论 -
【原创】ASP.NET Core 6使用内存数据库
Program.cs,在适当位置添加如下代码//启用内存数据库InMemoryDatabaseRoot _databaseRoot = new InMemoryDatabaseRoot();string _connectionString = Guid.NewGuid().ToString();builder.Services.AddEntityFrameworkInMemoryDatabase();builder.Services.AddDbContext<MemDbContext>原创 2021-12-01 17:06:42 · 1251 阅读 · 0 评论 -
【原创】ASP.NET Core 6 的 Program.cs 中读取配置文件appsettings.json
appsettings.json文件内容{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "OracleConnection": "User Id=MyOracle;Password=OracalPassword;Dat原创 2021-12-01 16:50:59 · 3858 阅读 · 0 评论 -
【原创】ASP.NET Core WebApi 6 + Oralce EF Core配置
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.12" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.12" /> <PackageReference Include="Oracle.EntityFrameworkCore" Version="...原创 2021-12-01 11:57:23 · 1267 阅读 · 0 评论 -
【原创】nuget上的Oracle.ManagedDataAccess连接Oracle
class Program { private static string connStr = "User Id=用户名;Password=密码;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=Orale服务器IP地址)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=服务名)))"; static void Main(string[] args.原创 2021-01-26 11:31:23 · 310 阅读 · 0 评论 -
将VS2019设置成英文版
Visual Studio 2019以英文版为主,当然提供了不少其他语言的支持。在阅读Visual Studio相关文章的时候,常常是英文版本的。作者在一些操作说明中用英文描述菜单项以及其他操作。作为中文的用户,经常遇到中英文对不上的问题。于是就想,是不是可以把Visual Studio 2019从中文版切换成英文版呢?答案是肯定的。默认情况下,Visual Studio 2019只安装了一种语言,比如中文。这时候,发现无法切换。那么,接下来再安装一个英文包,就可以切换了。..原创 2020-12-17 08:39:33 · 18569 阅读 · 0 评论 -
C# LINQ两个List联合查询
两个LIST解构相同,但数据不一致,现在需要挑选出不同的数据。 //新数据 private List<HrRyxxData> hrRyxxDatas = new List<HrRyxxData>(); //缓存的数据 private List<HrRyxxData> hrRyxxCacheDatas;计算新数据相比于老数据来说,那些数据有了变化,返回一个List.List中每个元素是一个tuple,tuple中两个项,第一个是新数据,第二个是老数据。新数据原创 2020-10-02 10:41:52 · 6126 阅读 · 0 评论 -
C#对象二进制序列化与反序列化
准备序列化的类,类头上需要添加[Serializable]属性,表示该类可以被序列化[Serializable] public class HrRyxxData { public int __row_number__ { get; set; } public string UID { get; set; } public string XM { get; set; } public string XBM { get; set;原创 2020-10-02 10:32:12 · 738 阅读 · 0 评论 -
C#获取应用程序的数据保存路径
public static class Utility { public static string AppDataPath { set; get; } = null; static Utility() { if(AppDataPath==null) { //应用程序的数据保存路径 Assembly assembly = Assembly.GetExecutin.原创 2020-10-02 10:27:21 · 591 阅读 · 0 评论 -
C#控制台窗口禁用关闭按钮
C#控制台窗口禁用关闭按钮 public static void RemoveCloseMenu() { // 与控制台标题名一样的路径 // Process.GetCurrentProcess().MainModule.FileName; string fullPath = Console.Title; // 根据控制台标题找控制台 int WINDOW_HANDLER原创 2020-10-02 10:23:08 · 1107 阅读 · 0 评论 -
XAML中绑定自定义字典类
xmlns:local="clr-namespace:WpfApp20" <Window.Resources> <x:Array x:Key="data" Type="local:MyDictionary"> <local:MyDictionary> <local:MyDictionary.Key>Mykey</local:MyDictionary.Key>原创 2020-06-17 11:44:52 · 811 阅读 · 0 评论 -
XAML中绑定一个枚举
xmlns:local="clr-namespace:WpfApp20" <Window.Resources> <ObjectDataProvider x:Key="DetailScopeDataProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}"> <ObjectDataProvider.Met..原创 2020-06-17 11:38:43 · 489 阅读 · 0 评论 -
C#写的一段可逆加密算法
直接粘贴使用: public class CryptoService { private SymmetricAlgorithm mobjCryptoService; private string Key; public CryptoService() { mobjCryptoService = ne...原创 2020-04-28 10:59:03 · 709 阅读 · 0 评论 -
在ASP.NET中在线修改Web.Config文件
实现很简单,直接上代码:Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);config.AppSettings.Settings["YY_ALLOW_AMOUNT"].Value = yyAllowAmount.ToString();config.Save(...原创 2020-04-28 10:54:36 · 410 阅读 · 0 评论 -
【解决方案】SQLite操作优化:从内存中读取,写入内存和本地
SQLite是我非常喜欢的一个小型数据库。如果你真把它当SQL Server、Oracle来使用的话,那简直是灾难,读写效率带来的死锁问题够你受的。不过,如果把整个数据库加载到内存中呢?哈哈,那简直是爽翻了。不过,写入怎么解决呢?你的程序不知道什么时候会退出,一旦退出,数据还未保存的话,哭吧。。。。其实,向数据库中写入数据的频率是非常低的,而读取数据的频率却很高。且看我的更新方法:1、把...原创 2018-11-07 17:16:13 · 12042 阅读 · 2 评论 -
【解决方案】C#使用Newtonsoft解析JSON字符串
在很多涉及到网络通讯的地方,往往会用到JSON,初次接触这个东西,真的很令人头痛。不过有了Newtonsoft,这一切就变得出奇地简单:现在有下面一段JSON,如何解析呢?{ &quot;class&quot;: &quot;apiClass&quot;, &quot;cmd&quot;: &quot;apiCommand&quot;, &原创 2018-11-07 16:53:04 · 3717 阅读 · 0 评论 -
【解决方案】C#中使用Newtonsoft创建JSON字符串
在很多涉及到网络通讯的地方,往往会用到JSON,初次接触这个东西,真的很令人头痛。不过有了Newtonsoft,这一切就变得出奇地简单:1、创建一个JSONString apiClass = &quot;apiClass&quot;;String apiCommand = &quot;apiCommand&quot;;String apiJsonParam = &quot;apiJsonParam&原创 2018-11-07 16:36:19 · 8195 阅读 · 2 评论