C#.NET基础
文章平均质量分 71
dz45693
我是一个软件开发人员,有较强的责任心,是一个典型的技术爱好者。在此希望能认识更多好朋友。
展开
-
如何用C#+WinRAR 实现压缩
最近经常下载一些小朋友的资源,发现很多都是压缩文件, 几百个, 于是写程序解压。using Microsoft.Win32;using System;using System.Diagnostics;using System.IO;namespace ConsoleApp1{ class Program { static void Main(string[] args) { //Console.WriteLine(Exi原创 2021-04-21 18:41:16 · 2025 阅读 · 1 评论 -
asp.net 5.0 https的双向认证(windows和ubuntu) 以及go的调用
前几天搞go 的Grpc和http2的双向认证。现在来搞搞。net core 里面是如何实现的首先需要下载 OpenSSLhttp://slproweb.com/products/Win32OpenSSL.html一、创建根证书//生成key文件,输入密码:openssl genrsa -des3 -out root.key//生成请求证书文件,如果安装路径发生改变,可以通过在下面命令后面添加-config openssl.cfg来指明配置文件路径openssl req -new..原创 2021-01-01 19:30:28 · 1666 阅读 · 3 评论 -
C#脚本引擎CS-Script
要说能够运行C#脚本的解决方案,有Roslyn和Mono,与他们相比,CS-Script能够提供的封装更为高级,它底层是通过Roslyn之类的引擎运行的,在此基础上,提供了一些额外功能:执行完整的C#文件 通过外部进程执行C#文件 在运行过程中链接多个c#文件,并集成运行 提供简便的方法进行链接 脚本调试功能注:由于技术发展,很多功能可能已经被Roslyn支持了。同时基于web有Try.NET和SharpLab等优秀方案。当然也可以自己基于Roslyn去实现这些功能,不过CS-Scri转载 2020-12-29 10:06:11 · 1406 阅读 · 0 评论 -
使用Redis的SET实现锁机制【C# &Go&Python实现】
其实网上正确地使用Redis的SETNX实现锁机制和高并发1-Redis分布式锁setnx,setex连用说的都对,只是现在的redis做了很多优化比如现在的Set 指令如下set key value [EX seconds] [PX milliseconds] [NX|XX]EX seconds:设置失效时长,单位秒PX milliseconds:设置失效时长,单位毫秒NX:key不存在时设置value,成功返回OK,失败返回(nil)XX:key存在时设置value,成功返回OK,失...原创 2020-12-25 17:15:34 · 1468 阅读 · 0 评论 -
go goroutine channel 和C# Task BlockingCollection 以及python该如何实现
首先说结论吧,个人感觉go的goroutine和C# 的Task 相似,goroutine 和Task 可以近似理解为逻辑线程, 至于多个goroutine 或Task 对应操作系统几个物理线程 是底层决定的,我们可以不用太关心;但是一定是多对多【这个我们可以简单理解多对一, 一个或多个goroutine 或Task 对应底层一个物理线程】, 具体的blockingcollection可以参考https://blog.csdn.net/ma_jiang/article/details/54561684,..原创 2020-12-22 11:10:13 · 1260 阅读 · 0 评论 -
.Net 对于PDF生成以及各种转换的操作
1、生成PDF 这里用到了Spire.Pdf 这个类库可以在NuGet里面搜索到,上面带个小红标的就是免费版本。 当然也可以去他们的官网,上面还有文档(https://www.e-iceblue.cn/Introduce/Spire-PDF-NET.html)。代码(这是我自己写的一个测试的表格) public static void abc() { //创建PDF文档 Spire.Pdf.PdfDocume...转载 2020-06-18 17:40:09 · 2504 阅读 · 0 评论 -
Autofac 批量注入
如果有很多实现接口需要用到autofac进行注入,是不是需要调用ContainerBuilder.RegisterType()这个方法很多次?那有没有一个偷懒的方法呢?只需要三四行代码就可以实现所有接口的注入呢?有的第一步:创建如下这样一个空接口public interface IDenpendency { }接口名称可以随便取第二步:创建需要注入到autofac...原创 2020-04-21 10:52:34 · 3008 阅读 · 1 评论 -
C# python base58
在涉及到不同的项目不同语言,经常碰到编码问题,典型的就是base58和base64的编码问题Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。设计Base58主要的目的是:避免混淆。在某些字体下,数字0和字母大写O...原创 2019-11-28 18:03:46 · 2746 阅读 · 0 评论 -
sql any where调用.net程序集
The CLR external environment SQL Anywhere includes support for CLR stored procedures and functions. A CLR stored procedure or function behaves the same as a SQL stored proced原创 2009-09-23 09:25:00 · 2546 阅读 · 0 评论 -
vs2003水晶报表key
水晶报表注册码: 注册号码: 6707437608 License Key 注册密码: AAP5GKS0000GDE100DS Registration: 6499100630 KeyCode: AAP5G-KS0原创 2009-10-16 12:44:00 · 2752 阅读 · 0 评论 -
查看windows服务的相关信息
wmic service where name="SQLANYm_CheckboxMobileSyncService" get /value 其中SQLANYm_CheckboxMobileSyncService是windows服务名称 ,可以看到服务所用的进程ID原创 2009-10-20 13:09:00 · 2830 阅读 · 0 评论 -
如何使用互斥量禁止程序运行两个实例
private void Form1_Load(object sender, EventArgs e) { bool Exist; System.Threading.Mutex newMutex = new System.Threading.Mutex(true, "仅一次", out Exist);原创 2009-10-29 21:45:00 · 2452 阅读 · 0 评论 -
如何使用进程名禁止程序运行两个实例
private void Form1_Load(object sender, EventArgs e) { string moduleName = System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName; string processName原创 2009-10-29 21:48:00 · 2620 阅读 · 0 评论 -
如何显示和隐藏任务栏
public partial class Form1 : Form { private const int SW_HIDE = 0; private const int SW_SHOW=5; public Form1() { InitializeComponent();原创 2009-10-29 22:07:00 · 2719 阅读 · 0 评论 -
如何实现动画显示窗口
public partial class Form1 : Form { [DllImport("user32.dll")] private static extern bool AnimateWindow(IntPtr hend, int dwTime, int dwFlags); private const int AW_HOR原创 2009-10-29 22:22:00 · 2470 阅读 · 0 评论 -
如何禁止、启用windows任务管理器
public partial class Form1 : Form { string message; string localmachineKey = @"HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Policies/System"; string c原创 2009-10-29 23:16:00 · 2607 阅读 · 0 评论 -
如何判断当前用户是否是系统管理员
private void Form1_Load(object sender, EventArgs e) { AppDomain domain = Thread.GetDomain(); domain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);原创 2009-10-29 23:32:00 · 6621 阅读 · 0 评论 -
如何实现选择排序算法
选择排序的原理是将数据列表总的第一个数与后面的每一个数进行比较,把小的数放在第一个数中,从而找出最小的,然后再用第二个数与后面的每一哥数进行比较......,直到找到最后一个数。 public class SelectionSorter { public void Sort(int[] arr) { for (int i = 0; i原创 2009-11-01 19:36:00 · 2401 阅读 · 0 评论 -
如何实现冒泡排序算法
冒泡排序是一种最常见的排序方法,其过程是首先将数组中第一个数与第二个数进行比较,若为逆序,则交换记录,然后比较第二个和第三个数。一次类推直到n-1与n哥数比较完,将一组书中最小的数放在第一个位置,然后在从第二个数开始重复执行上次操作,直到执行n-1此后排序完成。 public class EbullitionSorter { public void Sort(int[]原创 2009-11-01 20:06:00 · 2528 阅读 · 1 评论 -
如何实现快速排序算法
快速排序是冒泡排序的一种改进,基本思想是,通过一趟排序将待排序记录分割称独立的2个部分,其中一部分的关键字均比另一部分小,则可以对这2部分继续排序,以达到整个序列有序。 public class QuickSorter { private void Swap(ref int left, ref int right) {原创 2009-11-01 20:45:00 · 2347 阅读 · 0 评论 -
如何实现插入排序算法
实现插入排序主要是先找到一个有序序列,然后将下一个数插入到上述有序序列,然后再从剩下的数中选取下一个插入对象,反复执行直到整个序列有序。 public class InsertSorter {public static void Sort(int[] arr) { for (int i = 1; i < arr.Leng...原创 2009-11-01 20:58:00 · 2325 阅读 · 0 评论 -
如何求两个数的最大公约数,最小公倍数
求最大公约数可以用求余法实现,即两个数最大数除以最小的数求余,然后再用除数除余数求余,直到余数为0,之前的除数就是这两个数的最大公约数。最小公倍数可以通过这两个的乘积除以这两个数的最大公倍数。 public int maxGongYueShu(int x, int y) { int temp = Math.Max(x, y);原创 2009-11-01 21:40:00 · 2823 阅读 · 0 评论 -
如何设置SQl存储过程调用参数为空
在调用存储过程时候,经常遇到所传的参数为空,应该怎么设置了? private void GetData() { string ConnectionName="DefaultConnectionString"; ConnectionStringSettings config=ConfigurationManager.Conn原创 2009-11-07 12:29:00 · 4016 阅读 · 0 评论 -
如何在TreeView控件节点中显示图片
如何在TreeView控件节点中显示图片使用TreeView控件的ImageList属性,可以使TreeView控件节点显示图片。ImageList属性获取或设置包含树节点说使用的Image对象的ImageList,首先指定一个TreeNode类的对象作为根结点。TreeNode类有多种重载形式,本例重载形式如下:public TreeNode(string text,int imag原创 2009-11-10 20:49:00 · 7438 阅读 · 6 评论 -
如何加密解密文件
private static byte[] Keys ={0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF}; public static bool EncryptDES(string inFilePath, string outFilePath, string encryptKey) { byte[原创 2009-11-14 02:02:00 · 2608 阅读 · 0 评论 -
如何实现ComboBox下拉列表显示图片
实现此功能主要通过ComboBox控件的DrawMode属性、DropDownStyle属性以及DrawItem事件和Graphic类的公共属性和方法完成。首先把DrawMode属性设置为OwnerDrawFixed,把DropDownStyle属性设置为DropDownList,然后在控件DrawItem事件下添加图片。主要代码如下:private void Form1_Load(obje原创 2009-11-15 00:48:00 · 5210 阅读 · 0 评论 -
如何将图片以Image类型存储到数据库 如何从数据库中读取Image类型的字段
将图片以Image类型存储到数据库中,首先获取图片的流对象,然后,利通Read方法从图片文件读取二进制数据存储到字节数组。从数据库中读取Image类型的字段,首先将数据库对应的Image类型字段存储在无符号直接数组,然后再用MemoryStream类读入图片数据,通过MemoryStream对象生成Bitmap对象,显示在PictureBox控件上。代码如下: private voi原创 2009-11-10 20:58:00 · 7007 阅读 · 0 评论 -
如何实现C#中用Enter完成TAB键功能
使用OnKeyPress方法,SelectNextControl方法实现C#中用回车完成Tab的功能,要使用SelectNextControl方法起作用,先将窗体的KeyPreview实行改为true。重写OnKeyPress方法,在OnKeyPress方法中调用SelectNextControl方法. private void Form1_Load(object sender, Even原创 2009-11-11 19:05:00 · 3165 阅读 · 0 评论 -
如何启动系统控制面板程序
using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Runtime.InteropServices; namespace Star原创 2009-11-11 22:25:00 · 2564 阅读 · 0 评论 -
如何加密解密DataSet数据集
private static byte[] desKey = new byte[] { 11,23,93,102,72,41,18,12}; private static byte[] desSIV = new byte[] { 75,158,46,97,78,57,17,36}; public static void EncryptDataSetXML(D原创 2009-11-14 01:46:00 · 2908 阅读 · 0 评论 -
通过反射访问属性(Attribute)信息的工具类
using System;using System.Collections.Generic;using System.Text;using System.Reflection; /// /// 通过反射访问属性(Attribute)信息的工具类 /// public static class AttributeHelper { ///原创 2009-11-15 18:50:00 · 3252 阅读 · 0 评论 -
通用的自定义上下文对象
/// /// 通用的自定义上下文对象 /// public class GenericContext { /// /// 由于内部操作上,所有的容器类型均为 Dictionary /// 所以定义一个固定的类型名称。 /// class NameBasedD原创 2009-11-15 18:52:00 · 2753 阅读 · 0 评论 -
获取特殊文件夹路径
//ProgramFiles目录全路径 string temp = Environment.GetEnvironmentVariable("ProgramFiles"); //桌面目录全路径 temp = Environment.GetFolderPath(Environment.SpecialFolder.Des原创 2009-11-15 22:16:00 · 2617 阅读 · 0 评论 -
一个通用的字符串加密和编码工具类
public static class CryptoHelper { #region Private field /// /// Hash algorithm /// private static SHA1 sha; /// /// Crypto原创 2009-11-16 12:54:00 · 2548 阅读 · 0 评论 -
获取计算机日志信息
EventLog eventLog1 =new EventLog("System"); //eventLog1.SynchronizingObject = this; //this.eventLog1.Log = "System"; //this.eventLog1.Log = "Security";原创 2009-11-15 22:30:00 · 2697 阅读 · 0 评论 -
如何关闭或挂起计算机
//挂起计算机 Application.SetSuspendState(PowerState.Hibernate, true, false); //下面是关闭计算机 Process p = new Process(); p.StartInfo.FileName = "cmd.exe";原创 2009-11-15 22:54:00 · 2529 阅读 · 0 评论 -
根据类型名称生成类型实例
// /// 根据类型名称生成类型实例 /// public interface IObjectBuilder { /// /// 创建类型实例 /// /// 返回类型 /// 构造参数 /// 指定类型 T 的实例 T原创 2009-11-15 18:53:00 · 2627 阅读 · 0 评论 -
如何制作日志查看器
using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Diagnostics;namespace Log{ ///原创 2009-11-17 22:26:00 · 2559 阅读 · 1 评论 -
如何获取一个Class在GC在的空间大小
private int GetSize(Type t) { int result = 0; if (!t.IsClass) { result = Marshal.SizeOf(t); } else原创 2009-11-19 14:09:00 · 2419 阅读 · 0 评论 -
C# 等待框----Application.DoEvents()实现
转自:http://hi.baidu.com/sageking2/blog/item/67a8bf0819b2ec9d0b7b820c.html 于Application.DoEvents()的小研究 在MSDN中的备注是:当运行 Windows 窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代转载 2009-11-19 17:21:00 · 3304 阅读 · 0 评论