- 博客(474)
- 资源 (78)
- 收藏
- 关注
原创 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 1809 2
原创 mysql5.7索引注意事项
环境:window10Mysql5.7.32-logDBeaver问题:当我们需要给字符串加索引时,我们很自然的使用:create index idx_testindex_name on testindex(name),但是不幸的是它可能会报错:SQL 错误 [1071] [42000]: Specified key was too long; max key length is 767 bytes下面是完整的复现语句:-- 查看当前版本select version() /*ver
2022-05-22 10:18:54 456
原创 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 1609
原创 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 6294 5
原创 c#:泛型反射
1. 泛型类是类的模板泛型类是类的模板,它不能被当做正常类来使用,比如说:不能创建实例。如下: public class Person<T> { public string Name { get; set; } }这个Person<T>是类的模板,它都不是正常的类,所以,不能创建实例,看下面:比较迷惑的是:在写代码的时候也不区分它是不是泛型类啊,比如:这个NewInst<T>方法也没有报过错啊。其实,NewInst```方法之所以不报错,
2022-04-19 12:36:54 3068 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 3303 3
原创 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 6838 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 3625 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 7160
原创 缓存和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 708
原创 sqlserver:聚合函数string_agg
环境:window 10sqlserver 2019参考:《sqlserver:STRING_AGG (Transact-SQL)》这个函数的意义是将多行结果字符串拼接到一行。直接看示例:先准备数据:create table test( id int identity(1,1) primary key, name varchar(50), age int)insert into test values('刘备',40),('关羽',40),('张飞',36),('诸葛亮',32
2022-02-26 12:23:08 20357 1
原创 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 3138
原创 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 4372
原创 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 7298
原创 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 5246
原创 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 2544
原创 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 2111
原创 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 16689
原创 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 1808
原创 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 8497
原创 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 3692
原创 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 8170
原创 c#:Task.Run() 和 Task.Factory.StartNew() 的返回值问题
当我们使用```task.facotory.startnew```时,里面的方法有没有```async```是不一样的,不带```async```的返回的是```Task```,带```async```的返回的是```Task<Task>```
2022-02-03 23:34:01 6043 2
原创 mysql:事务的影响范围
环境:window 11mysql 8.0.12参考:sqlserver:事务的影响范围问题来源:我们知道关系型数据库具有事务的概念,我们在事务内可以增删改查数据,一旦发现有误,我们可以执行回滚,这样就可以撤销对数据的更改了,那么,除了增删改查数据,其他的如:自增id、表结构、甚至是增删表的操作是否也可以被撤销掉(回滚: rollback)呢?在《sqlserver:事务的影响范围》中实验得出的结论是:sqlserver的事务回滚会将truncate、增删表、增删列、约束增删等操作都撤
2022-02-02 21:56:17 1109 1
原创 sqlserver:事务的影响范围
环境:window11sqlserver2014问题来源:我们知道关系型数据库具有事务的概念,我们在事务内可以增删改查数据,一旦发现有误,我们可以执行回滚,这样就可以撤销对数据的更改了,那么,除了增删改查数据,其他的如:自增id、序列、表接口、甚至是增删表的操作是否也可以被撤销掉(回滚: rollback)呢?下面就开始进行实验:1. 增删改可以被回滚掉这是数据库事务的主要功能。2. 自增id不能被回滚我们在事务内插入新数据(具有自增列),之后尽管我们执行回滚操作,这个自增id值也不会
2022-02-01 23:08:16 1355
原创 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 3467
原创 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 4116
原创 sqlserver & c#:关于CommandType的取值
环境:window10vs2022.net core 6.0sqlserver 20141. 问题来源:在使用SqlCommand执行sql语句时,一直不明白属性CommandType的作用。它取值如下:Text:表明执行的是普通sql语句;StoredProcedure:表明执行的是存储过程;TableDirect:实验时报错,不支持;先说下我的看法,它们两个在功能上没有区别,性能上应该可以忽略,写法上会有不同,但大部分场景可以忽略该属性的取值。为了下面测试,准备新建存储过
2022-01-27 11:53:06 2183
原创 c#:异常的堆栈信息 & throw和throw ex的区别
环境:window11vs2022.netcore3.1异常的堆栈信息是蛮重要的,它能帮助我们快速定位出错的代码位置!如下图所示:我们观察异常的堆栈信息,发现,它有如下特点:打印的堆栈信息是由内而外,所以我们先看到的是“最初”抛出异常的代码;打印的每一行都是一个方法的调用点,同时,一个方法内只能有一行被显示在堆栈信息上(不考虑循环调用);注意:函数的调用是一种堆栈结构。其实,除了抛异常,我们使用 Environment.StackTrace也可以打印堆栈信息,如下图:
2022-01-24 23:38:49 2567
原创 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 4058
原创 three.js入门一:入门demo讲解
环境:threejs:129vscodewindowedge关于threejs:开源web3d引擎github:https://github.com/mrdoob/three.js/官网:https://threejs.org/中文教程:http://www.yanhuangxueyuan.com/WebGL/1. 入门Demo<!DOCTYPE html><html lang="en"><head> <meta cha
2022-01-20 14:52:41 2507
原创 数据库:mysql和sqlserver中批量执行sql语句 & go关键字作用
环境:window10sqlserver2008mysql5.7说明:在编写后端应用程序时,为了提高响应性能,我们会将多条sql语句放在一起执行,如下:insert into t_user(id,name) values(1,'小明');insert into t_book(id,name) values(1,'语文');insert into t_user_book(id,userid,bookid) values(1,1,1);但是,我们考虑下,如果上面的sql语句出现错误了怎么
2022-01-01 22:59:01 2769 1
原创 c#:字符串操作的坑
环境:window10vs2022.netcore 3.1.net 5.0.net 6.0直接上代码:using System;using System.Linq;namespace ConsoleApplication1{ public class Program { public static void Main(string[] args) { var arr = new string[]
2021-11-16 09:50:53 177
原创 前端:简单搭建vue3+vite工程
环境:Windows 11 专业版node v14.18.0npm 6.14.15nodejs基础知识:nodejs:window10下的nodejs基本知识之前搭建vue3工程使用:create-vite-app,如: create-vite-app vue3-demo但是这个包已经被丢弃了:所以,我们使用npm init vite@latest开始创建vite项目,如下:使用默认项目名称vite-project,直接回车:需要选择vue框架,然后回车:使用默认vue语法
2021-10-10 21:22:38 310
原创 nodejs: 安装全局命令行工具的原理
环境:Windows 11 专业版node v14.18.0npm 6.14.15nodejs基础知识:nodejs:window10下的nodejs基本知识命令行工具:当我们安装了nodejs后,我们可以使用npm install live-server -g来全局安装live-server。安装完成后,我们就可以在命令行中直接使用live-server了。live-server是一个优秀的命令行工具,可以在任意目录下运行 live-server以将这个目录变成web资源。那么,
2021-10-10 20:12:13 403
原创 nodejs: npm run xxx原理
环境:Windows 11 专业版node v14.18.0npm 6.14.15nodejs基础知识:nodejs:window10下的nodejs基本知识问题来源:当我们在前端项目中运行 npm run xxxx的时候,就会执行package.json里面scripts下的对应命令,如下:那么,如果我们不借助npm run xxxx的话直接运行可不可以呢?尝试过后是不行的!!!(注意:机器上并没有全局安装vite。)既然直接运行vite报错,那么npm run xxxx又是怎
2021-10-10 19:47:56 1855
原创 c#: Newtonsoft.Json 高级用法一(不创建类,动态解析和构造json、JObject/JArray)
环境:.net core3.1vs2019Newtonsoft.Json 12.0.3关于newtonsoft.json的使用常见问题参考:《c#:序列化json常见问题及处理方法》《c#:关于NewtonsoftJson序列化和Grpc序列化的冲突问题》问题:如何在不新建类的情况下动态解析json字符串?如下面:{ "Color": { "Red": 0.8, "Blue": 1.2 }, "Category": {
2021-09-11 17:29:37 3833
three.js 入门三:buffergeometry贴图属性(position、index和uvs)
2023-12-08
three.js 入门示例,含坐标系、相机参数
2022-01-20
RabbitMQTrial.zip
2021-04-27
RabbitMQTrial.zip
2021-04-19
RabbitMQTrial.zip
2021-04-18
c#:grpc初体验,实例代码
2020-11-05
c#:Ocelot熔断机制体验
2020-10-24
asp.net core中间件创建方式实例
2020-10-24
c#:Ocelot集成Consul初体验
2020-10-22
实例_aspnetcore集成Swagger并自定义登录登出功能.zip
2020-04-10
aspnetcore-web-demos.zip
2020-02-28
emptydemo.zip
2020-02-16
aspose操作ppt:.net framework
2019-11-15
aspose操作pdf实例代码:.netcore
2019-11-14
aspose操作excel实例代码:.netcore
2019-11-14
aspose操作excel实例代码:.netframework
2019-11-14
aspose操作word实例:.net core
2019-11-14
aspose操作pdf实例代码:.netframework
2019-11-14
aspose操作word实例代码:.net framework
2019-11-14
ConsoleApp8.zip
2019-11-14
.netcore入门4:Microsoft.EntityFrameworkCore操作笔记
2019-09-12
消息队列-activemq入门实例.zip
2019-08-26
springboot入门实例2:springboot配置文件的位置和加载优先级
2019-08-03
springboot入门实例
2019-08-03
mybatis-demo.zip
2019-07-27
spring framework入门(11):springmvc简易环境搭建
2019-07-26
spring framework入门(6):java中的动态代理(jdk和cglib)
2019-07-25
context:property-placeholder 和util:properties
2019-07-23
Spring 自动装配及其注解
2019-07-23
spring配置和启动方式
2019-07-23
spring装配bean实例代码
2019-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人