
c# .net
文章平均质量分 80
c# .net相关
jackletter
这个作者很懒,什么都没留下…
展开
-
消息队列10:为RabbitMq添加连接池
【代码】消息队列10:为RabbitMq添加连接池。原创 2024-09-29 21:11:54 · 3111 阅读 · 0 评论 -
c#:System.Text.Json 的使用四(如何忽略[JsonPropertyName])
【代码】c#:System.Text.Json 的使用三(如何忽略[JsonPropertyName])原创 2024-09-18 09:56:56 · 3347 阅读 · 0 评论 -
融合算法:引力融合
每一个点都会受到左右其他点的吸引, 引力的大小随着距离的增大而缩小, 也随着每个点的质量(点位聚合后,点位质量会增加)而增大。进行移动,移动后两个近似的点开始融合,融合后的点位质量+1,循环往复,可以最终得到一个点位,或者是指定融合到某一程度。除了对数据进行分块,是否可以扩展到二维对图像进行融合,设置每个分块的阈值,进行轮廓识别?算出每个点的引力后,再左右引力相抵消就知道每个点位被吸引移动的方向了。从上面找出缩小直至消失的缝隙用的最短的时间,然后,让每个点按照。原创 2024-04-25 11:37:20 · 6744 阅读 · 0 评论 -
c#: 表达式树的简化
lambda表达式是表达式树的根, 它可能会有参数列表, 其子孙节点可能会引用这些参数, 也可能没有引用, 将没有引用的分支。所以,就有了个想法:能不能对表达式进行简化求值呢?那么问题是,我们如何将它改造成这样的?右侧的简化为 true, 还可以根据。, 将结果再“放回”表达式中即可!原创 2024-02-07 21:30:59 · 9203 阅读 · 0 评论 -
c#:System.Text.Json 的使用三(从Newtonsoft迁移)
这一点System.Text.Json 还是很差的,虽然可以设置将枚举转换为字符串,但读取的时候并不是自动的,也还需要设置,但在Api项目中,我们期望读取时允许 string => enum ,但返回时并不一定 enum => string,所以。严格来说,System.Text.Json 这么做并没有什么问题,但 Newtonsoft 允许啊,所以以前Api接口没问题,但换了 System.Text.Json 后就开始报错了。还是太严格导致的,为了兼容这种情况,我们需要自定义JsonConverter。原创 2023-09-24 20:36:01 · 11260 阅读 · 0 评论 -
c#:System.Text.Json 的使用二
类似 Newtonsoft,在没有实体类的情况下,也可以使用 JsonNode/JsonValue/JsonArray/JsonObject操作json。原创 2023-05-30 21:04:49 · 11177 阅读 · 0 评论 -
c#: NetTopologySuite点、线、面关系运算
现在想实现一种效果,即: 让一条线段去切割多边形,那么可能切成0、1、n个多边形,对应的切线段也可能有多个。不过,需要注意的一点是:计算时可能需要考虑到容许的误差,比如,两个点相距小于0.0001 即认为重合。可以看到,面减去线的结果就是将交点加入的面的轮廓中去,这个面的整体形状不会有任何改变!第一个仍然为黑色矩形,因为相交为空,第二个是黑色矩形减去相交后的形状。可以看到,线面相交的结果可能是空或者是点、线的组合,但不可能是面。面面相交可能为空也可能是 点、线、面的集合。探索线面相交、相减。原创 2023-03-30 19:48:33 · 13550 阅读 · 1 评论 -
c#:System.Text.Json 的使用一
System.Text.Json 的使用,与 Newtonsoft.Json 的对比原创 2023-03-04 20:49:27 · 17297 阅读 · 0 评论 -
c#: NetTopologySuite凹凸多边形计算
c# 使用NetTopologySuite进行基础几何计算,凹凸多边形的判断原创 2023-02-17 18:43:35 · 11855 阅读 · 0 评论 -
cpu:编程中的CPU架构知识(指令集:x86、arm、risc-v、loongarc)
编程中遇到的cpu架构知识原创 2022-10-23 20:41:59 · 18789 阅读 · 0 评论 -
vs2022:定制自己的代码片段(snippet)
如何为visual studio 定制自己的代码片段原创 2022-09-22 11:40:37 · 2937 阅读 · 2 评论 -
c: 关于大小端存储
大端(存储)模式:是指一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。小端(存储)模式:是指一个数据的低位字节序内容存放在低地址处,高位字节序的内容存放在高地址处。(可以总结为“小小小”即低位、低地址、小端)原创 2022-09-06 09:13:38 · 919 阅读 · 0 评论 -
c#: Newtonsoft.Json 高级用法二(jsonpath)
c# Newtonsoft.Json 高级用法之使用jsonpath快速提取数据原创 2022-08-12 11:09:35 · 3349 阅读 · 1 评论 -
Newtonsoft.Json 反序列化时对json注释的处理
环境:.net 6.0Newtonsoft.Json 12.0.31. Newtonsoft.Json 反序列化是对注释的不同处理在json文件中,我们常常需要有注释行,如下:[ { "name": "tom", "age": 18, "birth": "1998-02-01" /*, "score:":98.5,*/ //"ref":null, //"desc":undefined }, /*{ "name": "jack", "age":原创 2022-05-24 10:52:30 · 2052 阅读 · 2 评论 -
消息队列9:RabbitMq的消息优先级
队列内消息优先级原创 2022-05-21 17:05:01 · 939 阅读 · 0 评论 -
mysql优化系列:一、准备测试数据
环境:widow 11mysql 8.0.28DBEaver 22.0.3node v16.4.2mockjs: “^1.1.0”要测试mysql的性能,必先准备大量的数据,比如,向表中插入100万条数据。。。为了批量生成这些数据,我再nodejs中使用mockjs每次生成1万条假数据,并写个脚本批量运行100次,mysql中便有了100万条数据。一、使用mockjs造假数据我准备了一张表,如下:create table testdata( id int primary ke原创 2022-04-29 20:39:17 · 1674 阅读 · 0 评论 -
The type initializer for ‘Gdip‘ threw an exception
环境:centos7.6.net 6问题: The type initializer for ‘Gdip’ threw an exception因为代码中使用 SixLabors.ImageSharp去处理图片,在window上是正常的,在centos上就报错了:The type initializer for ‘Gdip’ threw an excepti。解决办法:执行如下命令:sudo apt-get install libgdiplus即可!......原创 2022-04-21 11:20:03 · 6577 阅读 · 5 评论 -
c#:泛型反射
1. 泛型类是类的模板泛型类是类的模板,它不能被当做正常类来使用,比如说:不能创建实例。如下: public class Person<T> { public string Name { get; set; } }这个Person<T>是类的模板,它都不是正常的类,所以,不能创建实例,看下面:比较迷惑的是:在写代码的时候也不区分它是不是泛型类啊,比如:这个NewInst<T>方法也没有报过错啊。其实,NewInst```方法之所以不报错,原创 2022-04-19 12:36:54 · 3157 阅读 · 3 评论 -
c#:深入理解表达式树
环境:window11.net 6.0vs2022上一篇:《c#:表达式树概念及应用场景(Expression)》罗列表达式树类型及应用场景:在c#中共有85个类型的表达式树节点,如下:《ExpressionType 枚举》下面将一一罗列哥哥表达式类型的用法和场景(以lambda表达式为目标)1. 常见运算符1.1 +,+=,checked(+)涉及到的表达式节点类型:ExpressionType.Add:两个操作数相加;ExpressionType.AddChecke原创 2022-04-04 22:00:31 · 3933 阅读 · 0 评论 -
mysql:如何在执行update后返回受影响的数据
环境:window10mysql 8.0.25DBeaver1. 问题在sqlserver中,我们可以通过output关键字返回insert、delete、uptdate影响的行数(参照:《博文:sqlserver:使用output返回插入、删除的记录》),但mysql原生没有提供这种功能。2. 解决办法首先,这是一个受限的解决办法,它要求这个表必须有主键,而且更新的时候不能更新主键!先准备数据:drop table if exists testcreate table test(原创 2022-03-14 19:46:29 · 7167 阅读 · 2 评论 -
sqlserver:使用 SqlBulkCopy 批量插入数据
环境:window 10sqlserver 2014参考:《博文:SqlBulkCopy使用注意事项》1. 问题场景在批量迁移或导入数据时,我们可能会遇到插入大量数据的问题,比如:100万、500万、甚至几千万。这个时候,如果我们再使用普通的insert插入的话就太慢了。在sqlserver中,我们可以使用 SqlBulkCopy 进行大数据量的插入。2. 简单示例先看个示例:var connString = "Data Source=192.168.252.129;Initial原创 2022-03-07 20:02:11 · 3849 阅读 · 4 评论 -
mysql:如何实现插入或更新一条数据(对比 replace into 和 insert on duplicate key update)
环境:window10mysql 8.0.25DBeaver参考:《mysql:13.2.9 REPLACE Statement》《mysql:13.2.6.2 INSERT … ON DUPLICATE KEY UPDATE Statement》《博文:MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况》《博文:MYSQL中replace into的用法》1. 常见问题:如何一条sql语句实现插入或更新?在sqlserver中我们可以原创 2022-03-07 11:00:34 · 8576 阅读 · 0 评论 -
缓存和db数据不一致问题(常被忽略的问题)
环境:window10vs2022.net core 3.1前言:缓存是个好东西,转为解决高并发问题,在性能的这场较量中屡试不爽。但我们使用它的姿势可能并不对,甚至能给自己挖一个大坑。引用:《Redis缓存一致性问题解决方案》1. 问题举例以最常见的redis缓存举例,看下面的伪代码:public class TestClass{ private Redis redis; private DB db; public UserEntity GetUserB原创 2022-03-03 15:42:06 · 784 阅读 · 0 评论 -
mysql:列类型之Spatial
环境:window10vs2022.net 6mysql 8.0.25DBeaver参考:《mysql:11.4 Spatial Data Types》1. 认识Spatial Data Types、WKT、WKBogc定义的地理空间数据格式。可以存储经纬度地理坐标、空间点、线、面、体等数据。具体参考:《ogc:OGC Standards》。mysql的实现:简单解释下:Geometry : 所有spatial类的父类(可以定义此类型列,但由于它是noninstantia原创 2022-02-22 20:29:29 · 3415 阅读 · 0 评论 -
mysql:列类型之json
环境:window10vs2022.net 6mysql 8.0.25DBeaver1. 认识json格式json全称是: JavaScript Object Notation。它的格式有以下几点:两个对象类型([] or {});四种标量 (string、number、true/false、null);根节点是对象或者是数组;标量:true/false和null均全为小写形式;标量:string可以有转移字符("、\、/、\b、\f、\n、\r、\t、\u0000);js原创 2022-02-22 12:43:12 · 4579 阅读 · 0 评论 -
mysql:列类型之enum、set
环境:window10vs2022.net 6mysql 8.0.25DBeaver参考:《mysql:11.3.5 The ENUM Type》1. enum类型mysql支持枚举类型,即:只能从其中选择一个值插入到数据库。用法如下:create table test( t_enum set('刘备','刘禅','张飞'))insert into test(t_enum) values('刘备')mysql中的enum和c#中的枚举很相似,但它也有自己的特点:m原创 2022-02-18 10:07:49 · 6708 阅读 · 0 评论 -
mysql:详解sql_mode,应该选择怎样的运行模式?
环境:window10vs2022.net 6mysql 8.0.25DBeaver参考:《mysql:5.1.11 Server SQL Modes》关于mysql的sql_mode:mysql为了支持在不同的环境下运行,允许我们给它设置不同的运行模式(sql_mode),当它具有不同的运行模式时,它处理我们的sql语句也不相同(mysql提供了18个运行模式,它们可任意组合使用)。一般,我们在安装mysql时就要确定它的运行模式(sql_mode),不建议在中途更改它的运行模原创 2022-02-16 14:59:50 · 2795 阅读 · 0 评论 -
mysql:列类型之string
环境:window10vs2022.net 6mysql 8.0.25DBeaver参考:《博文:mysql字符集编码和排序规则》《博文:细说ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32编码》《mysql:11.3 String Data Types》在mysql中说string,一般说的是char、varchar、text、binary、varbinary、blob、enum、set类型。而text、blob又要再加上原创 2022-02-18 11:39:26 · 7534 阅读 · 0 评论 -
mysql:列类型之时间日期
环境:window10vs2022.net 6mysql 8.0.25DBeaver参考:《MSDN:浮点数值类型(C# 引用)》《mysql:11.2 Date and Time Data Types》在mysql中表示日期时间的类型有 date、time、year、datetime、timstamp五种,列表如下:五中列类型的一些特点1. datetime和date的取值范围mysql文档中声明了date和datetime的取值范围是 '1000-01-01' to '原创 2022-02-11 21:14:28 · 2213 阅读 · 0 评论 -
mysql:列类型之float、double
环境:window10vs2022.net 6mysql 8.0.25DBeaver参考:《MSDN:浮点数值类型(C# 引用)》《mysql:11.1.4 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE》1. float和double类型在mysql中,float和double都是浮点数类型:float 占4个字节,精度是6位;double 占8个字节,精度是16位;它们的性质和c#中浮点数的性质是一样原创 2022-02-11 16:15:44 · 17079 阅读 · 0 评论 -
mysql:列类型之decimal、numeric
环境:window10vs2022.net core 3.1mysql 8.0.25DBeaver参考: 《mysql:11.1.3 Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC》1. decimal和numeric的定义这两个是同一个意思,使用numeric定义的列会被转换成decimal。使用的语法为:decimal[M[,D]]如: decimal、decimal(5)以及decimal(5,2)都是可以的。上面的原创 2022-02-10 20:59:43 · 10270 阅读 · 0 评论 -
mysql:列类型之整数(tinyint、smallint、mediumint、int、bigint)
环境:window10vs2022.net core 3.1mysql 8.0.25DBeaver参考: 《mysql:11.1.2 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT》1. 整数类型mysql支持5中整数类型,它们占用空间及表示范围如下所示:一般我们建表时如下:create table test( t_tinyint tinyint unsigned原创 2022-02-10 17:59:37 · 3939 阅读 · 0 评论 -
mysql:列类型之bit
环境:window 10mysql 8.0.25DBeaver1. bit(M)表示位类型,如: create table test(t_bit bit(16))数据库中存储的是M个bit位,M范围是:[1,64],默认是1。存储时,将原数据的bit位从右截取M个bit位存储到数据库:如果原数据bit位长度小于M,则直接补0;如果大于M,截取M长度后,原数据的左侧还有1,则报异常,否则将截取后的bit位直接存储到数据库;看下面示例:create table test.test(原创 2022-02-10 15:50:34 · 8251 阅读 · 0 评论 -
c#:float存储原理(待续。。。)
环境:window 10处理器 11th Gen Intel® Core™ i7-11700.net 6vs20221. 基础准备:2进制、10进制、16进制转换常见2进制、10进制、16进制数据:10进制整数转2进制算法:10进制小数转2进制算法:10进制数转2进制:2进制整数转10进制:2进制小数转10进制:2. 基础准备:科学计数法10进制: 123 => 1.23*1022进制:11 => 1.1*213原创 2022-02-11 11:45:51 · 1980 阅读 · 0 评论 -
c#:Task.Run() 和 Task.Factory.StartNew() 的返回值问题
当我们使用```task.facotory.startnew```时,里面的方法有没有```async```是不一样的,不带```async```的返回的是```Task```,带```async```的返回的是```Task<Task>```原创 2022-02-03 23:34:01 · 6339 阅读 · 2 评论 -
sqlserver:关于uniqueidentifier类型
环境:window10sqlserver2014vs2022.net core 3.1参考:微软文档:niqueidentifier (Transact-SQL)根据微软解释,这是一个16 字节(即:128bit位) 的GUID。所以它本质还是二进制数据,和c#中的guid是一个意思,只不过我们平时以字符串的形式观察它。关于c#中guid和string的转换,参考:《c#:guid和string互转 &guid不区分大小写》在sqlserver中可以通过:NEWID(原创 2022-01-28 12:50:26 · 3595 阅读 · 0 评论 -
sqlserver:关于timestamp时间戳 rowversion
环境:window10sqlserver2014vs2022.net core 3.1参考:微软官方文档:rowversion (Transact-SQL)在sqlsever中 timestamp和rowversion是同义词,它和 ISO 标准中定义的 timestamp 数据类型表现不同。在sqlserver中,timestamp的作用是给每行的数据加上版本标志,但这个标志和时间没有任何关系,可以将它看成是byte[8]数组并且是数据库全局自增的。因为timestamp的取值是原创 2022-01-28 11:39:00 · 4338 阅读 · 0 评论 -
sqlserver & c#:关于CommandType的取值
环境:window10vs2022.net core 6.0sqlserver 20141. 问题来源:在使用SqlCommand执行sql语句时,一直不明白属性CommandType的作用。它取值如下:Text:表明执行的是普通sql语句;StoredProcedure:表明执行的是存储过程;TableDirect:实验时报错,不支持;先说下我的看法,它们两个在功能上没有区别,性能上应该可以忽略,写法上会有不同,但大部分场景可以忽略该属性的取值。为了下面测试,准备新建存储过原创 2022-01-27 11:53:06 · 2429 阅读 · 0 评论 -
c#:异常的堆栈信息 & throw和throw ex的区别
环境:window11vs2022.netcore3.1异常的堆栈信息是蛮重要的,它能帮助我们快速定位出错的代码位置!如下图所示:我们观察异常的堆栈信息,发现,它有如下特点:打印的堆栈信息是由内而外,所以我们先看到的是“最初”抛出异常的代码;打印的每一行都是一个方法的调用点,同时,一个方法内只能有一行被显示在堆栈信息上(不考虑循环调用);注意:函数的调用是一种堆栈结构。其实,除了抛异常,我们使用 Environment.StackTrace也可以打印堆栈信息,如下图:原创 2022-01-24 23:38:49 · 2796 阅读 · 0 评论 -
c#:guid和string互转 &guid不区分大小写
环境:window 10vs2022.net core 3.1//共5中格式: NDBPX 默认:Dvar guid = Guid.Parse("a66cc049-edee-426d-9aa2-dea498149b8d");Console.WriteLine(guid.ToString("N"));//a66cc049edee426d9aa2dea498149b8dConsole.WriteLine(guid.ToString("D"));//a66cc049-edee-426d-9aa2原创 2022-01-20 16:10:08 · 4474 阅读 · 0 评论