- 博客(150)
- 收藏
- 关注
原创 文章代码地址
docsify详解Git详解nssm详解Typora详解Linux详解网络详解反射详解泛型详解特性详解委托详解LambdaLinq详解Expression详解常用数据结构多线程详解加密解密详解SqlServer详解AutoMapper详解AspNetCore5基础Docker详解设计模式之美...........................
2021-08-15 16:21:05 6521 6
原创 架构10-可观测性
*定义:**可观测性是指“可以由系统的外部输出推断其内部状态的程度”。**日志收集:**记录离散事件,通过这些记录事后分析出程序的行为。**链路追踪:**主要用于排查故障,分析调用链的哪一部分、哪个方法出现错误或阻塞,输入输出是否符合预期。**聚合度量:**对系统中某一类信息的统计聚合,主要用于监控和预警,当某些度量指标达到风险阈值时触发事件。**计数度量器(Counter):**对有相同量纲、可加减数值的合计量,例如销售额、服务调用次数等。
2024-12-04 21:50:27 932
原创 架构08-流量治理
*定义:**容错性设计(Design for Failure)是微服务架构的核心原则之一,旨在确保系统在部分组件出现故障时仍能继续运行。**重要性:**分布式系统的本质是不可靠的,容易出现程序崩溃、节点宕机、网络中断等问题。因此,容错性设计对于保证系统的可用性和稳定性至关重要。
2024-12-04 21:41:44 755
原创 架构06-分布式共识
*提出者:**Leslie Lamport。**地位:**分布式系统最重要的理论基础之一。**背景:**Paxos算法的提出和被认可经历了多次波折。
2024-12-03 21:18:18 1046
原创 架构05-架构安全性
*定义:**系统如何正确分辨出操作用户的真实身份。**重要性:**即使是简陋的信息系统,也不会忽略用户登录功能。**认证、授权与凭证:**解决“你是谁?”、“你能干什么?”、“你如何证明?”三个基本问题。**保密:**加密和解密的统称,通过特殊算法改变信息数据,使未授权用户即使获得加密信息也无法了解真实内容。**易变性:**输入发生任何细微变动,输出结果会产生极大变化。**不可逆性:**从摘要结果无法逆向还原出输入值。校验信息完整性,确保信息在传输过程中未被篡改。
2024-12-01 21:03:56 790
原创 架构04-透明多级分流系统
*定义:**透明多级分流系统是指在用户请求从客户端发出到最终查询或修改数据库信息的过程中,通过多个技术部件对流量进行合理分配,以提高系统的性能和可靠性。**减少单点部件:**尽量减少系统中的单点部件,如果不可避免,应减少到达这些部件的流量。**奥卡姆剃刀原则:**如无必要,勿增实体。系统设计应尽量简洁,避免不必要的复杂性。
2024-11-30 15:24:24 832
原创 架构02-访问远程服务
URI只代表资源的位置,具体表现形式应在HTTP请求的头信息中指定(如Accept和Content-Type字段)。:网络上的一个实体或具体信息,可以用URI(统一资源定位符)指向。:每个资源对应一个特定的URI,URI是资源的地址或唯一识别符。:客户端通过HTTP协议操作服务器端资源,实现状态转化。文本:txt、HTML、XML、JSON等格式。:新建资源(也可用于更新资源)图片:JPG、PNG等格式。资源(Resources):文本、图片、服务等。:资源的具体呈现形式。
2024-11-28 20:27:10 1002
原创 架构01-演进中的架构
定义:单体架构是一种将所有组件结合成一个单一程序的软件架构风格。出现时间最早、应用范围最广、使用人数最多、统治历史最长的架构风格。“单体”这一概念是在微服务流行后才被“事后追认”的。缺乏专门的开发材料,体现了其简单性和普遍性。成功部分:提出了技术解决方案,解决了分布式环境下的主要技术问题。失败部分:过于复杂的流程和理论限制了其普及。未来展望:微服务时代的开启,带着对SOA架构的自省。定义:微服务是一种通过多个小型服务组合构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。
2024-11-27 22:59:34 1200
原创 Nginx16-Lua扩展案例
Redis在系统中经常作为数据缓存、内存数据库使用,在大型系统中扮演着非常重要的作用。在Nginx核心系统中,Redis是常备组件。Nginx支持3种方法访问Redis,分别是HttpRedis模块、HttpRedis2Module、lua-resty-redis库。HttpRedis模块提供的指令少,功能单一,适合做简单缓存,HttpRedis2Module模块比HttpRedis模块操作更灵活,功能更强大。
2024-10-22 21:07:01 940
原创 Nginx15-Lua扩展模块
res 是返回的结果,它是一个「对象」,将包含四个元素的 Lua 表 (res.status, res.header, res.body, 和 res.truncated)。:**该指令用于执行内部URL重写或者外部重定向,典型的如伪静态化URL重写,本阶段在rewrite处理阶段的最后默认执行。:**该指令是应用最多的指令,大部分任务是在这个阶段完成的,其他的过程往往为这个阶段准备数据,正式处理基本都在本阶段。:**该指令用于在log请求处理阶段,用Lua代码处理日志,但并不替换原有log处理。
2024-10-22 21:04:53 1199
原创 Nginx14-Lua基础
Lua是一种轻量、小巧的脚本语言,用标准C语言编写并以源代码形式开发。设计的目的是为了嵌入到其他应用程序中,从而为应用程序提供灵活的扩展和定制功能。
2024-10-22 21:02:40 1079
原创 Nginx13-下载站点与用户认证
对应系统资源的访问,我们往往需要限制谁能访问,谁不能访问。这就是我们通常所说的认证部分,认证需要做的就是根据用户输入的用户名和密码来判定用户是否为合法用户,如果是则放行访问,如果不是则拒绝访问。Nginx 对应用户认证是通过模块实现,它允许通过使用「HTTP基本身份验证」协议验证用户名和密码来限制对资源的访问。默认情况下 Nginx 是已经安装了该模块,如果不需要则使用删除认证模块。
2024-10-17 09:56:18 1112
原创 Nginx12-集群高可用
完成了上述环境的部署,我们已经解决了Tomcat的高可用性,一台服务器宕机,还有其他两台对外提供服务。但是新问题出现了,上述环境中,如果是Nginx宕机了,那么整套系统都将服务对外提供服务了,所以我们需要两台以上Nginx服务器做集群。但是两台Nginx我们访问哪一台呢?下面我们来解决这个问题。
2024-10-17 09:53:07 1317
原创 Nginx10-缓存集成
Nginx是从0.7.48版开始提供缓存功能。Nginx是基于Proxy Store来实现的,其原理是把URL及相关组合当做Key,在使用MD5算法对Key进行哈希,得到硬盘上对应的哈希目录路径,从而将缓存内容保存在该目录中。它可以支持任意URL连接,同时也支持404/301/302这样的非200状态码。Nginx即可以支持对指定URL或者状态码设置过期时间,也可以使用purge命令来手动清除指定URL的缓存。这里介绍两种方式删除对应的缓存目录使用第三方扩展模块。
2024-10-13 21:15:18 698
原创 Nginx09-负载均衡
早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求。随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器进行性能的水平扩展及避免单点故障出现。
2024-10-13 21:09:23 816
原创 计算机常用端口
端口:在网络通信中,端口(Port)是一个逻辑概念,用于区分不同的服务或进程。每台计算机都有一个IP地址,而每个IP地址可以有多个端口,每个端口可以为运行在计算机上的不同服务或应用程序提供网络通信的接入点。HTTP相关知识请参考。
2024-10-09 09:54:40 792
原创 Nginx08-反向代理
关于正向代理和反向代理,我们在前面已经介绍过了,简而言之就是正向代理代理的对象是客户端,反向代理代理的是服务端,这是两者之间最大的区别。Nginx即可以实现正向代理,也可以实现反向代理。Nginx 反向代理模块的指令是由模块进行解析,该模块在安装 Nginx 的时候已经自动加载到 Nginx 中了,接下来我们把反向代理中的常用指令如下:proxy_pass:配置代理的服务器地址proxy_set_header:转发给被代理服务器时,设置一些请求头信息。
2024-10-07 20:25:54 1913
原创 Nginx07-静态资源访问
注意版本:server_name_in_redirect指令在Nginx的0.8.48版本之前默认都是on,之后改成了off,所以现在我们这个版本不需要考虑这个问题,但是如果是0.8.48以前的版本并且server_name_in_redirect设置为on,我们可以使用rewrite功能为末尾没有斜杠的URL自动添加一个斜杠。该指令通过正则表达式的使用来改变URI。**文件或者目录是否存在:**判断请求的目录或者文件是否存在使用"-e"和"!**目录是否存在:**判断请求的目录是否存在使用"-d"和"!
2024-10-07 20:23:30 1224
原创 Nginx06-静态资源部署
静态资源:是在Web开发中不经常改变的文件,比如图片、CSS样式表、JavaScript脚本文件等。这些资源通常是预先编译好的,不需要服务器端的动态处理。动态资源:是在Web开发中需要服务器实时处理的资源。与静态资源不同,动态资源的内容在每次请求时可能都会发生变化,因此它们不能被客户端缓存或者直接从CDN获取。“tcp_nopush"和”tcp_nodelay“看起来是"互斥的”,但在linux2.5.9以后的版本中两者是可以兼容的。sendfile可以开启高效的文件传输模式。
2024-10-07 20:18:35 1957
原创 Nginx03-使用
*强行切换:**如果想对Nginx 的版本进行更新,或者要应用一些新的模块,最简单的做法就是停止当前的 Nginx 服务,然后开启新的 Nginx 服务。但是这样会导致在一段时间内,用户是无法访问服务器。**平滑升级:**为了解决这个问题,我们就需要用到 Nginx 服务器提供的平滑升级功能。这个也是 Nginx 的一大特点,使用这种方式,就可以使 Nginx 在 7 * 24 小时不间断的提供服务了。
2024-10-07 20:08:30 1189
原创 Nginx01-基础
Nginx(“engine x”)一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】。Nginx是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本。2011年6月1日,nginx 1.0.4发布。另外Nginx开源了。
2024-10-07 19:50:46 1330
原创 Docker13-图形工具Portainer
Portainer 是一款开源的轻量级管理 UI,它允许你通过一个基于 Web 的界面来管理 Docker 容器。它的目标是简化 Docker 环境的部署、配置和管理过程,使得即使是非专业的用户也能轻松地进行容器管理。
2024-10-07 08:12:04 1299
原创 微信小程序07-开发进阶
需求:通过前面的学习,我们知道微信小程序的底部标签栏可以在app.json全局配置文件中通过添加tabBar配置项的属性来实现。但是在实际开发中,底部标签栏会有不同的需求,例如需要设计更美观的样式或者需要添加更多的功能,此时就需要自定义标签栏。自定义组件在实际开发中,可能会遇到多个页面中有相同功能区域的情况。例如,多个页面中都有搜索栏。如果为每个页面复制同一份代码,会造成代码冗余,而且不利于后期代码维护。此时,开发者可以将页面内的重复部分封装成自定义组件,以便于在不同的页面中重复使用,从而有助于代码维护。
2024-09-19 12:11:28 1581
原创 微信小程序06-综合项目点餐系统
③配置导航栏。在app.json文件中配置导航栏样式。④创建其他文件。创建app.wxss文件,该文件中保存了本项目所用到的公共样式。创建images文件夹,该文件夹保存了该项目所用的素材。创建utils/shopcartAnimate.js文件,该文件保存了实现购物车中动画效果的代码。创建utils/decodeCookie.js文件,该文件保存了用于解析服务器返回的Cookie,将Cookie字符串转换成对象的代码。⑤配置标签栏。在app.json文件中添加tabBar配置项的属
2024-09-19 12:09:27 1858
原创 微信小程序05-常用API下
腾讯地图SDK根据不同的开发场景提供了多种版本,针对微信小程序开发,应使用“微信小程序JavaScript SDK”,它可以在微信小程序中调用腾讯位置服务的POI检索、关键词输入提示、地址解析、逆地址解析、行政区划和距离计算等数据服务。腾讯地图SDK是一套为开发者提供多种地理位置服务的工具,可以使开发者在自己的应用中加入地图相关的功能,轻松访问腾讯地图服务和数据,更好地实现微信小程序的地图功能。**实现用户登录:**在app.js文件的App({})中编写代码,实现微信小程序启动时自动执行登录操作。
2024-09-19 12:07:52 2475
原创 微信小程序04-常用API上
scroll-view组件scroll-view组件的常用属性如下代码演示:在pages/index/index.js文件中添加scroll()事件处理函数并输出e.detail的值。通过e.detail可以获取滚动时的位置信息。scrollLeft:横向滚动条左侧到视图左边的距离。scrollTop:纵向滚动条上端到视图顶部的距离。scrollHeight:纵向滚动条在y轴上最大滚动距离。scrollWidth:横向滚动条在x轴上最大的滚动距离。deltaX:横向滚动条的滚
2024-09-19 12:06:05 1898
原创 微信小程序03-页面交互
需求:本案例将实现“比较数字大小”微信小程序,它的功能是当用户输入两个数字后,点击“比较”按钮可以自动比较这两个数字的大小。两个输入框,可以输入数字,输入后点击“比较”按钮,按钮下方会显示比较结果。比较结果有3种情况**页面初始数据:**页面初始数据是指页面第一次渲染时所用到的数据。**页面生命周期回调函数:**在微信小程序中,页面的生命周期是指每个页面“加载→渲染→销毁”的过程,每个页面都有生命周期。如果想要在某个特定的时机进行特定的处理,则可以通过页面生命周期回调函数来完成。数据绑定概念
2024-09-19 12:03:31 2025
原创 微信小程序02-页面制作
form组件内部可以包含若干个供用户输入或选择的表单组件,允许提交的表单组件为switch、input、checkbox、slider、radio和picker组件。如果使用本地路径,可以在项目中创建一个目录,例如images目录,并在该目录中放入图片,例如test.jpg,通过本地路径/images/test.jpg即可引用图片。需求:当一对新人即将举办婚礼时,通常会向他们的亲朋好友发送婚礼邀请函。form组件表示表单容器,没有任何样式,需要配合其他表单组件一起使用,用于提交用户输入的信息和选择的选项。
2024-09-19 11:44:08 2438
原创 微信小程序01-入门
*模拟器:**模拟器可以模拟微信小程序在微信客户端的运行效果。**性能质量:**可查看项目的线上数据和本地情况,供开发者有针对性地进行优化。**调试器:**调试器类似于Chrome浏览器中的微信开发者工具。**菜单栏:**通过菜单栏可以访问微信开发者工具的大部分功能。**项目配置:**即可查看项目的域名信息和高级配置。**基本信息:**即可对项目的基本信息进行设置。**工具栏:**提供了一些常用功能的快捷按钮。**本地设置:**即可对项目进行本地设置。**编辑器:**编辑器分为左右两栏。
2024-09-19 11:41:24 2524
原创 Python进阶08-爬虫
***又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取网络信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。****简单来讲,爬虫就是一个探测机器,它的基本操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来. 就像一只虫子在一幢楼里不知疲倦地爬来爬去。****其实就是利用了这种爬虫技术, 每天放出无数爬虫到各个网站,把他们的信息抓回来,然后化好淡妆排着小队等你来检索。
2024-09-02 17:52:39 3605
原创 Python进阶07-高级语法
当浅复制的值是不可变对象(字符串、元组、数值类型)时和“赋值”的情况一样,对象的id值(id()函数用于获取对象的内存地址)与浅复制原来的值相同。当浅复制的值是可变对象(列表、字典、集合)时会产生一个“不是那么独立的对象”存在。第一种情况:复制的对象中无复杂子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
2024-08-31 08:07:24 1690
原创 Python进阶06-Web服务器
HTTP最常见的请求报文有两种:GET 方式的请求报文:获取web服务器数据POST 方式的请求报文:向web服务器提交数据。
2024-08-30 16:23:24 1316
原创 Python进阶05-多线程
对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的任务,多个内核是真正的一起同时执行多个任务。进程编号的作用:当程序中进程的数量越来越多时 , 如果没有办法区分进程就无法进行有效的进程管理 , 为了方便管理使用进程编号。④ 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位。设置守护进程:主进程退出后直接销毁子进程,不再等待执行子进程。设置守护进程:主进程退出后直接销毁子线程,不再等待执行子进程。① 线程是依附在进程里面的,没有进程就没有线程。os.kill():杀死进程。
2024-08-29 16:25:19 1039
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人