一篇文章让你明白你多级缓存的分层架构
https://juejin.im/post/5d86cf7f6fb9a06b211724e7
前言
在互联网高速发展的今天,缓存技术被广泛地应用。无论业内还是业外,只要是提到性能问题,大家都会脱口而出“用缓存解决”。
这种说法带有片面性,甚至是一知半解,但是作为专业人士的我们,需要对缓存有更深、更广的了解。
缓存技术存在于应用场景的方方面面。从浏览器请求,到反向代理服务器,从进程内缓存到分布式缓存。其中缓存策略,算法也是层出不穷,今天就带大家走进缓存。
正文
缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢?
假设一个网站,需要提高性能,缓存可以放在浏览器,可以放在反向代理服务器,还可以放在应用程序进程内,同时可以放在分布式缓存系统中。
从用户请求数据到数据返回,数据经过了浏览器,CDN,代理服务器,应用服务器,以及数据库各个环节。每个环节都可以运用缓存技术。
从浏览器/客户端开始请求数据,通过 HTTP 配合 CDN 获取数据的变更情况,到达代理服务器(Nginx)可以通过反向代理获取静态资 ...
学习计算机网络
https://www.cnblogs.com/cxuanBlog/p/12177976.html
https://juejin.im/post/5ba65296f265da0ac8493503
https://juejin.im/post/5cd0438c6fb9a031ec6d3ab2
https://www.jianshu.com/p/be29d679cbff
https://baike.baidu.com/item/HTTP状态码/5053660
计算机网络基础:https://juejin.im/post/5dc77d806fb9a04ab94e1563
应用层:https://juejin.im/post/5de32715f265da06095c7334
HTTP 协议:https://juejin.im/post/5dfc8af6f265da33ec7dbca4
HTTPS 与追加协议:https://juejin.im/post/5e02d94251882512842197ed
Web 攻击与防御:https://juejin.im/post/5e041d4d51 ...
理解 OAuth 2.0
旧:
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
新:
http://www.ruanyifeng.com/blog/2019/04/oauth_design.html
http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html
旧
OAuth 是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是 2.0 版。
本文对 OAuth 2.0 的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为 RFC 6749。
应用场景
为了理解 OAuth 的适用场合,让我举一个假设的例子。
有一个"云冲印"的网站,可以将用户储存在 Google 的照片,冲印出来。用户为了使用该服务,必须让"云冲印"读取自己储存在 Google 上的照片。
问题是只有得到用户的授权,Google 才会同意"云冲印"读取这些照片。那么,“云冲印" ...
理解分布式 ID 生成算法 SnowFlake
https://segmentfault.com/a/1190000011282426
扩展阅读:
如何在高并发分布式系统中生成全局唯一 Id:https://www.cnblogs.com/heyuquan/p/global-guid-identity-maxId.html
高并发分布式系统中生成全局唯一 Id 汇总:https://www.cnblogs.com/baiwa/p/5318432.html
关于全局 ID,雪花(snowflake)算法的说明:https://www.cnblogs.com/dunitian/p/6130543.html
雪花 ID C# 实现:https://github.com/stulzq/snowflake-net
使用有序 GUID:提升其在各数据库中作为主键时的性能:https://www.cnblogs.com/CameronWu/p/guids-as-fast-primary-keys-under-multiple-database.html
分布式 id 生成算法的有很多种,Twitter 的 SnowFlake 就是其中经 ...
如何把单体式应用拆解成微服务?
上:https://www.cnblogs.com/itlaobingge/p/12095774.html
下:https://www.cnblogs.com/itlaobingge/p/12100154.html
微服务是当下最流行的应用架构技术了,它跟容器服务、DevOps 合称云时代的三剑客,可以帮我们化解业务发展过快导致的产品迭代压力,让我们可以自由选择最适合团队的技术栈,让系统能够承载互联网海量用户的访问,让我们可以更加轻松地运维大型的互联网系统。近些年在厂商、社区和用户等各方努力推动下,微服务相关的理论和产品都日趋成熟,不同语言的微服务开发及治理套件(例如:Spring Cloud / Dubbo 等)让我们从零开始搭建微服务变得非常简单快捷,那我们是否就此可以全面进入微服务时代呢?
微服务的演进成熟需要时间,我们熟悉掌握这套新技术也需要时间,除此之外机房里面还跑着大量的单体式应用,它们需要继续维护和升级,任何时候我们都不可能抛开历史轻松上阵。这些单体式应用还担负着公司的核心业务,全部推倒重来、休克式重构是不可取的,投入大周期长,风险完全不可控。我们必须学会边 ...
如何设计出优美的 Web API?
https://www.cnblogs.com/itlaobingge/p/12089657.html
概述
WEB API 的应用场景非常丰富,例如:将已有系统的功能或数据开放给合作伙伴或生态圈;对外发布可嵌入到其他网页的微件;构建前后端分离的 WEB 应用;开发跨不同终端的移动应用;集成公司内部不同系统等等。在上述场景里,你可能是 WEB API 的使用者,也可能是设计者,但你知道如何评判 WEB API 的优劣吗?
评判标准
我们可以从三个维度来评判一个 WEB API 的优劣:
易于使用:WEB API 的用户是程序还是人?我觉得首先是人,然后是程序。为什么这么说呢?是否采用某个 WEB API 的决定是人做出的,一个好的 WEB API 必须符合人的审美,例如:简短易记、通俗易懂、便于输入等。从程序角度看,WEB API 应该遵循行业规范,在调用时不需要做特殊化处理,有利于复用已有的代码或工具。
便于更改:一个 WEB API 发布上线之后,免不了要根据真实用户的反馈或者业务发展的需要做更新修改,这些更新修改必须尽量不影响用户。要么提供多版本支持,要么给用户提供 ...
前端开发必备技能 —— 三大基础层
https://mp.weixin.qq.com/s/_jsGJG8sbpwkVxhOwTaXtA
前端简单说就是我们能够看到的东西,比如页面内容,颜色,图片等,后端主要负责的是后台数据的传输等。前端页面主要分为三层:结构层(Html)、表示层(CSS)、应用层(JavaScript)。
HTML(结构层),用 HTML 实现页面结构
HTML(Hyper Text Markup Language,超文本标记语言),用来描述网页的一种语言,它不是一种编程语言,而是一种标记语言(标记标签),总的来说,HTML 使用标记标签来描述网页,而我们上网所看到网页,多数都是由 HTML 写成的。
“超文本”是指页面内可以包含图片、链接甚至音视频、程序等非文字元素。
“标记”指的是这些超文本必须由包含属性的开头与结尾标志来标记。
浏览器通过解码 HTML,就可以把网页内容显示出来,它也构成了互联网兴起的基础。
HTML 的基本结构
标签的三大分类
块级元素
div,默认占整行,宽高可设,但设完后,还是占整行
行内块元素
img,不默认占整行,宽和高由自身内容决定,宽高可 ...
浅谈命令查询职责分离(CQRS)模式
https://www.cnblogs.com/yangecnu/p/Introduction-CQRS.html
CQRS 和 Event Sourcing 没有直接的关系。
在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体。在一些业务逻辑简单的系统中可能没有什么问题,但是随着系统逻辑变得复杂,用户增多,这种设计就会出现一些性能问题。虽然在 DB 上可以做一些读写分离的设计,但在业务上如果在读写方面混合在一起的话,仍然会出现一些问题。
本文介绍了命令查询职责分离模式(Command Query Responsibility Segregation,CQRS),该模式从业务上分离修改 (Command,增,删,改,会对系统状态进行修改)和查询(Query,查,不会对系统状态进行修改)的行为。从而使得逻辑更加清晰,便于对不同部分进行针对性的优化。文章首先简要介绍了传统的 CRUD 方式存在的问题,接着介绍了 CQRS 模式,最后以一个简单的在线日记系统演示了如何实现 CQRS 模式。要谈到读写操作,首先我们来看传统的 CRUD ...
WPF 中的一些图片处理方法
https://www.cnblogs.com/Big-Head/p/12068230.html
视觉处理(控件展示)
显示图片
Image 控件展示
12<!-- Xaml 代码 --><Image source="/Resources/Images/1.png"/>
缩放位图渲染算法
12<!-- Xaml 代码 --><Image Source="/Resources/Images/1.jpg" RenderOptions.BitmapScalingMode="Fant"/>
枚举值
描述
Fant
使用超高质量 Fant 位图缩放,虽然速度比所有其他位图缩放模式都慢,但输出质量更高。
HighQuality
使用高质量位图缩放,虽然速度比 LowQuality 模式慢,但输出质量更高。 HighQuality 模式与 Fant 模式相同。
Linear
使用线性位图缩放,虽然速度比 HighQuality 模式快,但输出质量较低。
...
ASP.NET Core Web API 最佳实践指南
译文:https://www.cnblogs.com/hippieZhou/p/11966373.html
原文:ASP.NET-Core-Web-API-Best-Practices-Guide
目录
介绍
Startup 类 和 服务配置
项目组织
基于环境的设置
数据访问层
控制器
处理全局异常
使用过滤器移除重复代码
Microsoft.AspNetCore.All 元包
路由
日志
加密
内容协商
使用 JWT
总结
介绍
当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求。
但是,你难道不认为创建一个能正常工作的项目还不够吗?同时这个项目不应该也是可维护和可读的吗?
事实证明,我们需要把更多的关注点放到我们项目的可读性和可维护性上。这背后的主要原因是我们或许不是这个项目的唯一编写者。一旦我们完成后,其他人也极有可能会加入到这里面来。
因此,我们应该把关注点放到哪里呢?
在这一份指南中,关于开发 .NET Core Web API 项目,我们将叙述一些我们认为会是最佳实践的方式。进而让我们的项目变得更好和更加具 ...