C#
帅_shuai_
用自己的努力去收获自己的未来
展开
-
C# 实现Lru缓存
代码实现的基本原理就是使用链表,当某个元素被访问时(Get或Set)就将该元素放到链表的头部或者尾部(根据用户自己定义规则即可)当达到了缓存的最大容量时对最不常使用的元素进行移除(移除的时候可以定义一系列的规则,用于判读如何移除,是否移除)LRU 算法全称是最近最少使用算法(Least Recently Use),是一种简单的缓存策略。通常用在对象池等需要频繁获取但是又需要释放不用的地方。下面直接贴出来代码供大家参考。原创 2023-12-09 09:19:12 · 378 阅读 · 0 评论 -
C# 一些工具集优化使用(String,Random,Assembly,Json)
日常开发中会有大量时间接触例如:字符串、随机数、程序集、json等的场景,像字符串使用不当就会产生大量的GC通过封装一些静态的工具方法对这些常用的地方进行适当简单优化。原创 2023-09-11 10:38:21 · 294 阅读 · 0 评论 -
C# Unity FSM 状态机
使用状态机可以降低代码耦合性,并且可以优化代码可读性,方便团队协作等。对于游戏开发内容来讲游戏开发的流程控制玩家动画都可以使用FSM有限状态机来实现。原创 2023-09-08 17:00:02 · 1114 阅读 · 0 评论 -
EventSystem 事件系统
事件系统在开发中必不可少事件系统使用观察者模式可以极大程度降低程序的耦合,之前的文章也讲过事件系统但是不够高效简洁,如何轻便高效优雅的实现一个事件呢?依然基于之前的和进行开发,主要原理也是根据反射去获取事件的接口使用反射进行实例化处理类,而非人工手动订阅事件。原创 2023-09-02 10:02:16 · 673 阅读 · 0 评论 -
SingletonSystem 单例管理系统
单例模式是项目中最为常见的设计模式之一,但是写法都不够优雅不方便查找和管理,下面介绍一种使用反射实现的单例管理架构原创 2023-09-01 14:05:14 · 185 阅读 · 1 评论 -
AssemblyManager 程序集管理器
程序执行中使用反射对框架的搭建有着强大的影响,如何管理程序集方便使用反射获取类型操作对象是本文章的重点。原创 2023-08-30 19:31:41 · 149 阅读 · 0 评论 -
Unity C# 引用池 ReferencePool
重复使用的对象只创建有限次,避免来回实例化对象的开销。原创 2023-08-20 20:18:37 · 753 阅读 · 0 评论 -
C# AES对字符串进行加密
AES加密原创 2022-07-05 20:19:05 · 591 阅读 · 0 评论 -
C# 更加优质的操作MongoDB数据库
之前就写过一篇C#操作MongoDB数据库的文章,直接对数据库进行操作,不是很优化,代码在实际项目中比较零散,没有一个统一的规划,所以有了这篇文章,如果要入门的化看看之前的文章也可以进行项目的开发了C# 操作Mongodb数据库分别解释一下:Proxy.cs 完整代码Table.cs 完整代码Person.cs 完整代码测试ORM的框架部分以上就整理完了,下面我们来使用它!...原创 2022-07-04 12:20:25 · 778 阅读 · 0 评论 -
C# 服务器日志模块
给我们的服务器配置日志,这样我们可以按照规则(比如按照 月/天/小时 这样这样的结构把日志打印到对应的文件里),这样我们把日志文件分割在按照 年月日命名 生成的日志文件里,防止单个日志文件过大使用NuGet包中的Serilog包来对日志进行收集创建类库程序,便于生成DLL对外部直接使用对其进行二次封装...原创 2022-07-04 11:03:07 · 441 阅读 · 0 评论 -
C# 操作SqlServer数据库
C# 操作SqlServer数据库using System;using System.Collections.Generic;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;using System.Data;namespace ConsoleApp11{ class SqlServerHelper : IDisposable { private SqlCo原创 2022-04-27 15:44:38 · 172 阅读 · 0 评论 -
Unity C# 网络学习(五)
Unity C# 网络学习(五)一.简单的异步服务器搭建1.ClientSocketnamespace TcpAsyncServer{ class ClientSocket { public Socket socket; public int id; private static int CURR_Client_ID = 0; private byte[] _buffer = new byte[1024];原创 2022-04-24 13:15:50 · 1478 阅读 · 1 评论 -
C# 操作Mongodb数据库
C# 操作Mongodb数据库1.引入NuGet包2.创建数据库操作类(MongodbHelper)里面有增删改查的所有内容,同步和异步using MongoDB.Bson;using MongoDB.Driver;using System;using System.Collections.Generic;using System.Threading.Tasks;namespace ConsoleApp9{ public class MongoHelper<T>原创 2022-04-24 10:00:13 · 1719 阅读 · 0 评论 -
Unity C# 网络学习(四)
Unity C# 网络学习(四)一.心跳消息我们需要监测客户端因为网络或用户断开连接可以使用socket.Poll(1000, SelectMode.SelectRead)为真时断开连接,但是这个方法不稳定我们可以每过一会向服务器发送消息(心跳消息)来进行判断客户端是否和服务器相互连接心跳包的定义public class HeartMsg : MsgBase{ public override int GetLength() { return 8; }原创 2022-04-22 15:48:35 · 2109 阅读 · 0 评论 -
Unity C# 网络学习(三)
Unity C# 网络学习(三)一.区分消息类型之前介绍的发送消息已经可以正常发送了,但是客户端和服务器是如何知道我们发送的和接收的是哪一条消息呢,这个时候就需要我们为协议加上一个编号MsgBase是继承之前的序列化基类的一个消息的发送类,里面有协议编号的虚属性,在子类继承这个类时,只需要重写这个属性就可以有不同的对应编号了public class MsgBase : DataBase{ public override int GetLength() { ret原创 2022-04-20 10:12:23 · 133 阅读 · 0 评论 -
Unity C# 网络学习(二)
Unity C# 网络学习(二)一.Socket的重要APIpublic class Lesson05 : MonoBehaviour{ private void Start() { var tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var udpSocket = new Socket(AddressFamily.Int原创 2022-04-18 17:05:36 · 1585 阅读 · 0 评论 -
C# 调用 C++ Dll
C# 调用 C++ Dll1.C++生成DLL参考:https://blog.csdn.net/qq_41374107/article/details/1060210152.C#调用参考:https://blog.csdn.net/guangod/article/details/85774225namespace Dll2{ class Program { [DllImport("Dll2.dll", EntryPoint = "myAdd", ExactSp原创 2022-03-31 09:46:39 · 680 阅读 · 0 评论 -
C# 反射
C# 反射#define ZZSusing System;using System.Diagnostics;namespace ConsoleApp8{ internal static class Program { private static void Main(string[] args) { var man = new Man() { name = "s22s"原创 2021-10-20 10:46:40 · 70 阅读 · 0 评论 -
EPPlus 读取Excel表格
EPPlus 读取Excel表格注意所有表格的索引从1开始using System;using System.IO;using OfficeOpenXml;namespace ConsoleApplication1{ internal class Program { public static void Main(string[] args) { ReadData("zzsTest.xlsx",1);原创 2021-10-18 15:56:25 · 2857 阅读 · 1 评论 -
C# Gif图转png
C# Gif转Png public static void ExportToPngList(string gifPath) { Image img = Image.FromFile(gifPath); FrameDimension frameDimension = new FrameDimension(img.FrameDimensionsList[0]); var frameCount = img.GetFrameC转载 2021-08-14 20:31:53 · 399 阅读 · 0 评论 -
C#读取Excel文档
C#读取Excel文档using System;using System.Data;using System.Data.OleDb;using System.Windows.Forms;using System.IO;namespace ZzsReadExcel{ public partial class Form1 : Form { private readonly byte[] Xor = new byte[] { 13, 14, 15, 16, 17 }原创 2021-02-20 20:35:31 · 101 阅读 · 2 评论 -
C#实现二叉查找树以及二叉树的删除
C#实现二叉查找树以及二叉树的删除首先需要知道二叉树的基础知识,比父节点小的元素放在左边,大的放在右边一.实现二叉查找树对二叉树进行遍历查找没有找到返回-1二.实现二叉树的节点删除二叉树的节点删除难点就在于要分类讨论的地方太多了,容易混乱1.前提是删除的节点得存在(使用上面提到的二叉查找树)2.首先需要找到需要删除的节点3.需要找到删除节点的父节点代码实现如下之后就需要分类进行讨论了代码里面的注释非常的详细了整体删除节点方法的代码如下 public void D原创 2020-08-14 21:22:13 · 424 阅读 · 0 评论 -
二叉树的建立及其递归遍历(C#实现)
二叉树的建立及其递归遍历(C#实现)首先建立一个二叉树,这里使用链表(也可以用数组但是数组太浪费空间)链表的节点 class Node { public Node leftNode; public Node rightNode; public int item; public Node(int item) { this.item = item; leftNode原创 2020-08-11 16:46:28 · 860 阅读 · 0 评论 -
C#队列(环形队列)
C#队列(环形队列)为什么需要环形队列我们之前用数组实现队列的时候,当我们弹出队列中的元素后,会剩余很多的空间,这样非常的浪费,所以用环形队列能一定程度上减少空间的浪费。代码实现如下 class MyQueue<T> { private int front; private int last; private int size;//最大容量 public int currCount;//当前元素个数原创 2020-08-09 09:31:19 · 554 阅读 · 0 评论 -
C#队列(链表实现)
C#队列(链表实现)明白了C#来实现链表的话,本篇文章就变得非常简单了如果还没有明白如何使用C#来实现链表的话建议看我之前的博客:C#实现链表的传送门如果不明白什么是队列:C#队列的传送门链表的话需要一个结点类(Node)队列的话自然需要一个队列的类(MyQueue)Node class Node<T> { public T item; public Node<T> next; public Node(T i原创 2020-08-08 15:30:21 · 458 阅读 · 0 评论 -
C#队列 (数组实现)
C#队列(数组实现)队列的实现首先定义队列的类然后是两个基础的方法(入队,出队)出队入队扩容的方法然后是测试最后是全部的代码using System;namespace ConsoleApp18{ class Program { static void Main(string[] args) { MyQueue<int> queue=new MyQueue<int>();原创 2020-08-05 17:54:13 · 2560 阅读 · 0 评论 -
c#如何得到程序的运行时间
c#如何得到程序的运行时间 System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); /* 这为需要获得时间的程序代码块*/ /* 这为需要获得时间的程序代码块*/ /* 这为需要获得时间的程序代码块*/ /* 这为需要获得时间的程序原创 2020-07-18 17:54:14 · 274 阅读 · 0 评论