首页
学习
活动
专区
工具
TVP
发布

蘑菇先生的技术笔记

专栏作者
75
文章
93594
阅读量
28
订阅数
浅谈C#网络编程(二)
上篇提到用多线程处理多个阻塞同步IO而实现并发服务端,这种模式在连接数量比较小的时候非常适合,一旦连接过多,性能会急速下降。 在大多数服务端网络软件中会采用一种异步IO的方式来提高性能。
蘑菇先生
2018-07-24
5590
喵喵的技术学习之路(一)
介绍 发现纯写技术蛮无趣枯燥的,也不连贯,就突发奇想,在博客中加些生活的乐趣。 主题呢就是讲一个程序员小菜鸟的学习成长,技术博客都融入到其中。背景如下: 地点:平行世界中魔都一家公司,喵喵小菜鸟一枚,
蘑菇先生
2018-05-21
6020
那些年我们一起追过的缓存写法(四)
阅读目录:  介绍 进程缓存 通信方式 速度对比 总结 介绍 之前有童鞋问到关于首次为空的问题,这里简单补充下: 一般来说并发量小、缓存数据量小的网站让用户自行触发页面让其缓存即可。 大点网站都会多台部署,用负载均衡路由。常见的策略是在每台机器发布应用时,节点从负载均衡节点集合中移除,发布结束后,首次访问通过人工或自动请求下页面让其缓存,也包括预编译。 还有一种是并发量大,缓存数据量大的情况,这也是本文的主题,下面会详细介绍。 如果缓存数据量大的情况下,预热就麻烦些。比如LZ公司单在内存中的缓存大小都过G,
蘑菇先生
2018-05-21
5880
给公司部门设计的SOA架构
新来老大年前开会说各位同学,公司业务越来越重,未来几年要成倍增长......,要梳理出一套新架构,才能更好的支持N万用户.....,以后升职加薪当上....打败..... 想想还有点小激动呢,于是过年时楼主趁等待相亲妹纸无聊的时候,反思了目前系统现状,构思设计新架构如下。 现有系统 鄙司业务比较重,系统也有些年头,各研发团队、系统都比较稳定了。所以不差也不太好,总之也能满足现有需求。但近2年O2O,移动互联网等大行其道,老大们也都心动了,开始磨刀霍霍了。而现有系统应对复杂的变化,在一些地方颇显不足: 接口
蘑菇先生
2018-05-21
9160
浅谈C#网络编程(二)
阅读目录: 异步IO 非阻塞式同步IO 基于回调的异步IO并发 异步IO 上篇提到用多线程处理多个阻塞同步IO而实现并发服务端,这种模式在连接数量比较小的时候非常适合,一旦连接过多,性能会急速下降。 在大多数服务端网络软件中会采用一种异步IO的方式来提高性能。 同步IO方式:连接Receive请求->等待->等待->接收成功 异步IO方式:连接Receive请求->立即返回->事件或回调通知 采用异步IO方式,意味着单线程可以处理多个请求了,连接发起一个Receive请求后,当前线程可以立即去做别的事情,当
蘑菇先生
2018-05-21
6080
探索c#之一致性Hash详解
阅读目录: 使用场景 算法原理 虚拟节点 代码示例 使用场景 以Redis为例,当系统需要缓存的内容超过单机内存大小时,例如要缓存100G数据,单机内存仅有16G时。这时候就需要考虑进行缓存数据分片,也即是把100G的数据拆分成多块小于单机内存的数据。例如以10G为单位,拆分10份,存储到多台机器节点上。 但是数据怎么个分法更合理呢? 、 f(key)%n 这里配置n=10,不同的key根据数值余数映射到对应的机器。 很简单的办法就解决了多台节点key分法的问题。然而数据大小的增长和缩减是很难预知的, 如果
蘑菇先生
2018-05-21
7680
探索C#之虚拟桶分片
阅读目录 背景 虚拟桶(virtual buckets) 实现 总结 背景 关于数据分片讨论最多的是一致性hash,然而它并不是分布式设计中的银弹百试百灵。 在数据稳定性要求比较高的场景下它的缺点是不能容忍的。 比如在Redis分布式缓存设计中,使用一致性Hash进行key分片存储,通过虚拟节点最大化降低添加或删除节点带来的影响。这里强调降低二字,即是它还是有影响的,在一般情况下我们还可以接受。 但是某些场景下要求动态扩容无影响就无法满足了。 上次(探索c#之一致性Hash详解)提到过Hash取
蘑菇先生
2018-05-21
8710
多线程中的锁系统(二)-volatile、Interlocked、ReaderWriterLockSlim
     上章主要讲排他锁的直接使用方式。但实际当中全部都用锁又太浪费了,或者排他锁粒度太大了,本篇主要介绍下升级锁和原子操作。 阅读目录 volatile Interlocked ReaderWriterLockSlim volatile 简单来说volatile关键字是告诉c#编译器和JIT编译器,不对volatile标记的字段做任何的缓存。确保字段读写都是原子操作,最新值。 从功能上看起到锁的作用,但它不是锁, 它的原子操作是基于CPU本身的,非阻塞的。 因为32位CPU执行赋值指令,数据传输最大宽度
蘑菇先生
2018-05-21
1K0
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档