-
15分钟从零开始搭建支持10w+用户的生产环境(一)
所属栏目:[大数据] 日期:2021-05-21 热度:154
前言 ? 这是一个基于中小型企业或团队的架构设计。 ? 不考虑大厂。有充分的理由相信,大厂有绝对的实力来搭建一个相当复杂的环境。 ? 中小型企业或团队是个什么样子? 开发团队人员配置不全,部分人员身兼开发过程上下游的数个职责; 没有专职的维护人员,或[详细]
-
ASP.NET Core 3.x控制IHostedService启动顺序浅探
所属栏目:[大数据] 日期:2021-05-21 热度:139
想写好中间件,这是基[详细]
-
关于C# Span的一些实践
所属栏目:[大数据] 日期:2021-05-21 热度:188
Span这个东西出来很久了,居然因为5.0又火起来了。 ? 相关知识 在大多数情况下,C#开发时,我们只使用托管内存。而实际上,C#为我们提供了三种类型的内存: 堆栈内存 - 最快速的内存,能够做到极快的分配和释放。堆栈内存使用时,需要用 stackalloc 进行分配[详细]
-
Dotnet Core多版本API共存的优雅实现
所属栏目:[大数据] 日期:2021-05-21 热度:197
API升级,新旧版本的API共存,怎么管理呢? ? 一、前言 最近,单位APP做了升级,同步的,API也做了升级。 升级过程中,出现了一点问题:API升级后,旧API也需要保留,因为有旧的APP还在使用中。 那么,API端如何作到多个版本共存呢? ???? 为防止非授权转发[详细]
-
ASP.NET Core 3.x启动时运行异步任务(一)
所属栏目:[大数据] 日期:2021-05-21 热度:193
这是一个大的题目,需要用几篇文章来说清楚。这是第一篇。 ? 一、前言 在我们的项目中,有时候我们需要在应用程序启动前执行一些一次性的逻辑。比方说:验证配置的正确性、填充缓存、或者运行数据库清理/迁移等。 如何合理、有效、优雅地完成这个任务,是这[详细]
-
部署Dotnet Core应用到Kubernetes(一)
所属栏目:[大数据] 日期:2021-05-21 热度:87
最近闲了点,写个大活:部署Dotnet应用到K8s。 ? 写在前边的话 一直想完成这个主题。但这个主题实在太大了,各种拖延症的小宇宙不时爆发一下,结果就拖到了现在。 ? 这个主题,会是一个系列。在这个系列中,我会讨论将应用部署到K8s时需要的各个内容和知识,[详细]
-
ASP.NET Core托管运行Quartz.NET作业调度详解
所属栏目:[大数据] 日期:2021-05-21 热度:131
Quartz.NET这么NB的作业调度系统,不会还行? ? 今天介绍一下Quartz.NET的托管运行,官网传送门。 一、前言 Quartz.NET,按官网上的说法,是一款功能齐全的任务调度系统,从小型应用到大型企业级系统都能适用。在众多项目中,Quartz.NET以可靠、集群的方式,[详细]
-
一文说通C#中的异步迭代器
所属栏目:[大数据] 日期:2021-05-21 热度:98
今天来写写C#中的异步迭代器 - 机制、概念和一些好用的特性 ? 迭代器的概念 迭代器的概念在C#中出现的比较早,很多人可能已经比较熟悉了。 通常迭代器会用在一些特定的场景中。 举个例子:有一个 foreach 循环: foreach (var item in Sources){ Console.Wri[详细]
-
一文说通C#中的异步编程
所属栏目:[大数据] 日期:2021-05-21 热度:61
天天写,不一定就明白。 又及,前两天看了一个关于同步方法中调用异步方法的文章,里面有些概念不太正确,所以整理了这个文章。 ? 一、同步和异步。 先说同步。 同步概念大家都很熟悉。在异步概念出来之前,我们的代码都是按同步的方式写的。简单来说,就是[详细]
-
Dotnet Core使用特定的SDK&Runtime版本
所属栏目:[大数据] 日期:2021-05-21 热度:113
Dotnet Core的SDK版本总在升级,怎么使用一个特定的版本呢? ? 假期过完了,心情还在。今天写个短的。 一、前言 写这个是因为昨天刷微软官方文档,发现 global.json 在 SDK 3.0 后,更新了一些内容。文档提到了这个更新,但规则说的不太清楚,所以研究了一下[详细]
-
ASP.NET Core 3.x启动时运行异步任务(二)
所属栏目:[大数据] 日期:2021-05-21 热度:159
这一篇是接着前一篇在写的。如果没有看过前一篇文章,建议先去看一下前一篇,这儿是传送门 ? 一、前言 前一篇文章,我们从应用启动时异步运行任务开始,说到了必要性,也说到了几种解决方法,及各自的优缺点。最后,还提出了一个比较合理的解决方法:通过在[详细]
-
Dotnet Core下的Channel, 你用了吗?
所属栏目:[大数据] 日期:2021-05-21 热度:184
今天给大家分享一个微软官方的好东西:Channel。 ? 前言 今天给大家分享一个微软官方的生产者/消费者方案的特性解决:Channel。 Channel在 System.Threading.Channels 命名空间下,Core 2.1使用时,需要从Nuget上安装。 %?dotnet?add?package?System.Threadi[详细]
-
部署Dotnet Core应用到Kubernetes(二)
所属栏目:[大数据] 日期:2021-05-21 热度:133
前一篇文章,概念性地介绍了K8s的一些基础组件,如Pod、部署和服务。这篇文章,我打算写写如何使用YAML清单定义和配置这些资源。 ? 实际上,在K8s集群中创建对象有几种方式 - 命令,或声明。两种方式区别不大。 不过实际应用中,一旦开始真正部署应用,最终[详细]
-
Dotnet Core异常处理的优雅实践
所属栏目:[大数据] 日期:2021-05-21 热度:81
异常处理,也可以做得很优雅。 ? 一、前言 异常处理的重要性,老司机都清楚。 ? 这篇文章,我们来理一下Dotnet Core异常处理的几种方式。 Try Catch方式 Exception Filter方式 内建的异常处理中间件 自定义的异常处理中间件 这是目前使用比较多的几种方式。[详细]
-
MongoDB via Dotnet Core数据映射详解
所属栏目:[大数据] 日期:2021-05-21 热度:99
用好数据映射,MongoDB via Dotnet Core开发变会成一件超级快乐的事。 ? 一、前言 MongoDB这几年已经成为Nosql的头部数据库。 由于MongoDB free schema 的特性,使得它在互联网应用方面优于常规数据库,成为了相当一部分大厂的主数据选择;而它的 快速布署和[详细]
-
一文说通C#中的异步编程补遗
所属栏目:[大数据] 日期:2021-05-21 热度:105
前文写了关于C#中的异步编程。后台有无数人在讨论,很多人把异步和多线程混了。 文章在这儿:一文说通C#中的异步编程 所以,本文从体系的角度,再写一下这个异步编程。 ? 一、C#中的异步编程演变 1. 异步编程模型 这是C#中早期的异步模型,通过 IAsyncResult[详细]
-
一文说通Blazor for Server-Side的项目结构
所属栏目:[大数据] 日期:2021-05-21 热度:144
用C#代替Javascript来做Web应用,是有多爽? ? 今天聊聊 Blazor。 Blazor 是一个 Web UI 框架。这个框架允许开发者使用 C# 来创建可运行于浏览器的具有完全交互 UI 的 Web 应用。 可以理解为,这是一个 C# 语言的 Vue / Angular / React,可以和 HTML、CSS[详细]
-
C语言入门-数组
所属栏目:[大数据] 日期:2021-05-21 热度:198
今天十月一日,上午看阅兵激情澎湃,但是下午还是要继续写C语言,前面的这块很简单 int number[100];scanf("%d",number[i]); 一、定义数组 类型 变量名称[元素数量] 元素数量必须是整数 数组特点 所有的元素具有相同的数据类型 一旦创建,就不能改变大小 (数[详细]
-
C语言入门-指针
所属栏目:[大数据] 日期:2021-05-21 热度:76
终于到了精髓的地方了,这确实有点懵,总感觉这太麻烦了,而且写着也不爽,还是怀念py或者java,但也没办法,还是要继续学下去。 一、运算符 scanf("%d",i); 里的 获取变量的地址,它的操作数必须是变量 地址的大小是否与int相同取决于编译器 #include stdio[详细]
-
Sublime Text 3 中实现编译C语言程序
所属栏目:[大数据] 日期:2021-05-21 热度:168
这个是真坑,感觉用devc++写c程序特别的不爽,所以就用了sublime,但是,编译的时候又有不少问题, 下面就把我踩的坑记录下来 toolsBuild SystemNew Build System中写入 { "cmd": ["gcc","${file}","-fexec-charset=gbk","-o","${file_path}/${file_base_nam[详细]
-
C语言入门-类型定义
所属栏目:[大数据] 日期:2021-05-21 热度:155
一、自定义数据类型(typedef) c语言提供一个叫做typedef的功能来声明一个已有的数据类型的新名字,比如: typedef int length; 这样length成为了int类型的别名 这样,length这个名字就可以代替int出现在变量定义和参数声明的地方了 length a,b,len;length nu[详细]
-
C语言入门-全局变量
所属栏目:[大数据] 日期:2021-05-21 热度:113
一、全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数无关,在任何函数内部都可以使用它们 #include stdio.hint f(void);// 全局变量int gALL = 12;int main(int argc,char const *argv[]){printf("in %s gALL=%d[详细]
-
C语言入门-枚举
所属栏目:[大数据] 日期:2021-05-21 热度:100
常量符号化 用符号而不是具体的数字来表示程序中的数字 一、 枚举 用枚举而不是定义独立的const int变量 枚举是一种用户定义的数据类型,它用关键字 enum 如以下语句来声明 enum 枚举类型名字 {名字0 ,、、、 , 名字n}; 枚举类型名字通常并不真的使用,要[详细]
-
C语言入门-函数
所属栏目:[大数据] 日期:2021-05-21 热度:163
一、初见函数 求出1到10、20到30和35到45的三个的和 #include stdio.h// 定义一个函数void sum(int begin,int end){int sum = 0;int i = 0;for (i = begin; i = end; i++){sum += i;}printf("%d到%d的和是%dn",begin,end,sum);}int main(){sum(1,10);sum(20[详细]
-
C语言入门-循环
所属栏目:[大数据] 日期:2021-05-21 热度:182
一、循环 输入一个数字,输出该数字有几位 #include stdio.h int main(){int x;int n = 0;scanf("%d",x);n++;x /= 10;while(x 0){n++;x /= 10;}printf("%dn",n);return 0;} 二、while循环 循环体内要有改变条件的机会,避免死循环 while循环的意思就是:当[详细]