随笔分类 - .net
摘要:> 本文的知识点其实由golang知名的for循环陷阱发散而来, 对应到我的主力语言C#, 其实牵涉到闭包、foreach。为了便于理解,我重新组织了语言,以倒叙结构行文。 先给大家提炼出一个C#题:观察for、foreach闭包的差异 ![](https://files.mdnice.com/us
阅读全文
摘要:好久不见,马甲哥封闭居家半个月,记录之前遇到的一件小事。 ConcurrentDictionary<TKey,TValue>绝大部分api都是线程安全且原子性的, 唯二的例外是接收工厂委托的api:AddOrUpdate、GetOrAdd,这两个api不是原子性的,需要引起重视。 All these
阅读全文
摘要:之前两次signalr、 websocket实时推送相关: .NET WebSockets 核心原理初体验 SignalR 从开发到生产部署避坑指南 tag: 浏览器 >nginx--> server 其中提到nginx默认不会为客户端转发Upgrade、Connection标头, 因为为了让被代理
阅读全文
摘要:.NET运行时内置了常用的缓存模块: MemoryCache 标准的MemoryCache暴露了如下几个属性和方法: public int Count { get; } public void Compact(double percentage); public ICacheEntry Create
阅读全文
摘要:1.荒腔走板 前几天有个童鞋在群里面问:怎么使用HttpClient发送文件? 之前我写了一个ABP上传文件,主要体现的是服务端,上传文件的动作是由前端小姐姐完成的, 我还真没有用HttpClient编程方式发送过文件。 不过想来,Web协议都是一样的,类比前端发送文件,httpclient按照mu
阅读全文
摘要:宝物简介 grpcur是一个与grpc服务器交互的命令行工具,可认为是gRPC的curl工具。 grpcurl用于从命令行调用gRPC服务器支持的RPC方法,gRPC使用二进制编码(protobuf), 不能利用常规的curl工具(早期的curl版本还不支持HTTP/2)。 grpcurl工具接受j
阅读全文
摘要:马甲哥继续写一点大前端,阅读耗时5 minute,行文耗时5 Days 今天我们来了解一下如何拦截axios请求/响应? 这次我们举一反三,用一个最舒适的姿势插入这个技能点。 axios是一个基于 promise 的网络请求库,可以用于浏览器和 node.js; promise 类似于C#的Task
阅读全文
摘要:> Thread-safe code only manipulates shared data structures in a manner that ensures that all threads behave properly and fulfill their design specific
阅读全文
摘要:前情提要 同程艺龙基础架构部推出的数据获取组件DAL.Connection,我们要做到在切换连接配置时清空数据库连接池, 这就涉及到切换连接的时候,触发变更通知。 .NET 如何清空连接池? 面试官:实现一个带值变更通知能力的Dictionary 仔细阅读《面试官:实现一个带值变更通知能力的Dict
阅读全文
摘要:C# 值类型作为函数形参,形参被修改,不影响原值。 这是我们在初始学习编程时需要记住的内容,我们也是一直这样践行的。 先说结论:这是不准确的。 为什么提出这样看似很浅显的问题,是因为有次我在使用ArraySegment<byte>值类型时,有感而发。 这是一个托管的值类型,表示array的一个片断,
阅读全文
摘要:早先提及了端点路由app.UseEndpoints, 端点路由强调的是端点和 路由,其核心目的是将 请求落地点与路由寻址方式解耦。 这里面有几个容易混淆的函数 MapControllerRoute MapDefaultControllerRoute MapControllers 有什么不同?什么时候
阅读全文
摘要:有小伙伴问我每天忽悠的TPL是什么?☹️ 这次站位高一点,严肃讲一讲。 引言 俗话说,不想开飞机的程序员不是一名好爸爸;作为微软技术栈的老鸟,一直将代码整洁之道奉为经典, 优秀的程序员将优雅、高性能的代码看成自己的脸面。 今天探讨下我对.NET并行编程库Task Parallel Library的理
阅读全文
摘要:- 共享内存 - Actor并发编程模型 - 202309反省: 求素数和不适合体现Actor模型 吃点好的,很有必要。今天介绍常见的两种并发模型: 共享内存&Actor ## 共享内存编程模型 面向对象编程中,万物都是对象,数据+行为=对象; 多核时代,可并行多个线程,但是受限于资源对象,线程之间
阅读全文
摘要:今天来聊一聊面试八股文:布隆过滤器。 说道布隆过滤器,就免不了说到缓存穿透。 缓存穿透 在高并发下,查询一个并不存在的值时,缓存不会被命中,导致大量请求直接落到数据库。 数据库的响应能力肯定没有缓存大,出线这样的情况,一般是黑客攻击,拖慢了系统的响应速度。 头脑风暴 朴素的分析思路: 在缓存前加一道
阅读全文
摘要:大家常听到“MD5加密”、“对称加密”、“非对称加密”,那么MD5属于哪种加密算法? 面试问这样的问题,准是在给你挖坑。 "MD5加密"纯属口嗨,MD5不是加密算法,是摘要算法(散列算法)。 今天小码甲带大家梳理加密算法、摘要算法的定义和场景: 伸手党先看答案: 加密算法的目的,在于使别人无法成功查
阅读全文
摘要:开局两张图,内容全靠刷! 马甲哥看到这样的现象,一开始还是有点懵逼。 这个例子,string是纯粹的引用类型,但是在函数传值时类似于值传递; 我之前给前后示例的内存变化图吧: 根因就是大多数高级语言都把String对象设计成不可变的:由一个字符串拘留池管理字符串面值。 对字符串的修改,会导致产生新的
阅读全文
摘要:长话短说,本文带大家抓住异步编程async/await语法糖的牛鼻子: SynchronizationContext 引言 C#异步编程语法糖async/await,使开发者很容易就能编写异步代码。 零散看过很多文章,很多是填鸭式灌输 (有的翻译文还有偏差)。 遵守以上冷冰冰的②③条的原则,可以确保
阅读全文
摘要:最近入职了新公司,尝试阅读祖传代码,记录并更新最近的编程认知。 思绪由Q1引发,后续Q2、Q3基于Q1的发散探究。 Q1. Task.Run、Task.Factory.StartNew 的区别? 我们常使用`Task.Run`和`Task.Factory.StartNew`创建并启动任务,但是他们的
阅读全文