摘要:概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而Twitter的snowflake解决了这种需求,
阅读全文
随笔分类 - C#
摘要:在C#中DateTime是一个包含日期、时间的类型,此类型通过ToString()转换为字符串时,可根据传入给Tostring()的参数转换为多种字符串格式。 1. 分类 DateTime调用ToString()传入的参数可分为制式和自定义两种: 1) 制式:系统自带的,转入特定的单个字符就可转换为
阅读全文
摘要:回顾Tuple Tuple是C# 4.0时出的新特性,.Net Framework 4.0以上版本可用。 元组是一种数据结构,具有特定数量和元素序列。比如设计一个三元组数据结构用于存储学生信息,一共包含三个元素,第一个是名字,第二个是年龄,第三个是身高。 元组的具体使用如下: 1. 如何创建元组 默
阅读全文
摘要:1、将上面代码保存为 d:\JSCaller.js2、在运行中执行命令:jsc /t:library d:\JSCaller .js3、生成JSCaller.dll文件,项目中引用:JSCaller.dll 4、C#中使用 jsc用法说明:https://docs.microsoft.com/zh-
阅读全文
摘要:一、准备工作 1、建表 先创建两个表Group、User,两表的关系是N:N CREATE TABLE [dbo].[Group]( [Id] [int] IDENTITY(1,1) NOT NULL, [GroupName] [nvarchar](50) NULL, CONSTRAINT [PK_
阅读全文
摘要:public void OldSum() { int sum0 = 0; for (int i = 0; i < 10; i++) { sum0 += i; } Assert.AreEqual(45, sum0); } public void NewSum() { int sum1 = Enumer
阅读全文
摘要:1. 前言 Talk is cheap, Show you the code first! private void button1_Click(object sender, EventArgs e) { Console.WriteLine("111 balabala. My Thread ID i
阅读全文
摘要:背景 自.NET 4.5发布以来已经有很长一段时间了。留在了我们的记忆里,其发布在2012年8月15日。是的,六年前。感觉老了吗?好吧,我不打算让你做出改变,而是提醒你一些.NET发布的亮点。此版本带来的主要功能之一是使用async / await方法进行异步编程。基本上,微软的团队通过保持类似于同
阅读全文
摘要:在这篇文章中,我们将通过使用异步编程的一些最常见的错误来给你们一些参考。 背景 在之前的文章《.NET中的异步编程——动机和单元测试》中,我们开始分析.NET世界中的异步编程。在那篇文章中,我们担心这个概念有点误解,尽管从.NET4.5开始它已经存在了超过6年时间。使用这种编程风格,更容易编写响应式
阅读全文
摘要:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.
阅读全文
摘要:1、Task产生背景 Task出现之前,微软的多线程处理方式有:Thread→ThreadPool→委托的异步调用,虽然也可以基本业务需要的多线程场景,但它们在多个线程的等待处理方面、资源占用方面、线程延续和阻塞方面、线程的取消方面等都显得比较笨拙,在面对复杂的业务场景下,显得有点捉襟见肘了。 Th
阅读全文
摘要:最近在做接口开发,对方团队开发了一个Web API的接口,传输数据的格式是JSON。当时看到这个东西,感觉很简单,也没想什么,没用多久就完成了我的功能,我完成的功能很简单,就是获取数据,然后把数据列表进行JSON序列化,然后再以POST方式调用对方Web Api的接口,将JSON的数据一起传递过去,
阅读全文
摘要:介于网络上充斥着大量的含糊其辞的Socket初级教程,扰乱着新手的学习方向,我来扼要的教一下新手应该怎么合理的处理Socket这个玩意儿。一般来说,教你C#下Socket编程的老师,很少会教你如何解决Socket粘包、半包问题。更甚至,某些师德有问题的老师,根本就没跟你说过Socket的粘包、半包问
阅读全文
摘要:通过系列二 我们已经实现了socket的简单通信 接下来我们测试一下,在时间应用的场景下,我们会快速且大量的传输数据的情况! class Program { static void Main(string[] args) { TCPListener tcp = new TCPListener();
阅读全文
摘要:看了系列一 我们开启了对socket tcp的监听状态,那么这一章我们来讲解怎么创建socket的通信代码 我新建一个类 TSocketBase 上面我们事先了socket的异步接受消息,和同步发送消息已经关闭释放资源代码 接受消息net底层提供的接受消息的方法有很多,为什么我们要选择上面所写的呢?
阅读全文
摘要:socket的应用场景,在快速,稳定,保持长连接的数据传输代码。Http也是socket封装出来的,基于一次请求一次回复,然后断开的socket连接封装。 比如我们常见的游戏服务器,目前的很火的物联网服务器,都需要开启socket服务器去监听实时传输的数据。 那么我们如何实现socket的监听呢。说
阅读全文
摘要:C#和Java比较: Java中使用的是接口。C#使用委托机制,可以用时+运算符进行注册,直接多播。而Java中是一般是使用一个集合来保存观察者。 发布者Publisher= 被观察者Observable = 事件源(Java中的EventObject,C#中的sender) 订阅者Subscrib
阅读全文
摘要:using Memcached.ClientLibrary; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HOPU.Common { public class Memcache...
阅读全文
摘要:一、投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影。下面的示例中使用select从序列中返回Employee表的所有列: //Linq写法 var query = from e in db.Employees where e.FirstName.StartsWith
阅读全文
摘要:一、准备工作 1、Person类: class Person { public string Name { set; get; } public int Age { set; get; } public string Gender { set; get; } public override stri
阅读全文