学习笔记

Spring Boot2 系列教程(二十八)Spring Boot 整合 Session 共享

这篇文章是松哥的原创,但是在第一次发布的时候,忘了标记原创,结果被好多号转发,导致我后来整理的时候自己没法标记原创了。写了几百篇原创技术干货了,有一两篇忘记标记原创进而造成的一点点小小损失也能接受,不过还是要和小伙伴们说明一下。 在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图: 在这样的架构中,会出现一些单服务中不存在的问题,例如客户端发起一个请求,这个请求到达 Nginx 上之后,被 Nginx 转发到 Tomcat A 上,然后在 Tomcat A 上往 session 中保存了一份数据,下次又来一个请求,这个请求被转发到 Tomcat B 上,此时再去 Session 中获取数据,发现没有之前的数据。对于这一类问题的解决,思路很简单,就是将各个服务之间需要共享的数据,保存到一个公共的地方(主流方案就是 Redis): ...

Go语言冒泡、选择、插入、快速排序实战浅析

 Hello,各位小伙伴大家好,我是小栈君,今天为大家带来的分享是关于go语言中的排序实战浅析。我们就实际操作关于go的冒泡排序、选择排序、插入排序和快速排序四种方式的理论和实战进行分享,希望能够为大家在学习的路上带来点启发和经验。...

Django Form and ModelForm

阅读目录 Form介绍 普通方式手写注册功能 使用form组件实现注册功能 Form那些事儿 常用字段与插件 Django Form所有内置字段 字段校验 Hook方法 补充进阶 ModelForm modelForm定义 回到顶部 Form介绍 在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。 ...

.Net Core3.0 WEB API 中使用FluentValidation验证,实现批量注入

阅读目录 为什么要使用FluentValidation 使用FluentValidation FluentValidation学习的资料 回到顶部 为什么要使用FluentValidation 1.在日常的开发中,需要验证参数的合理性,不紧前端需要验证传毒的参数,后端也需要验证参数 2.在领域模型中也应该验证,做好防御性的编程是一种好的习惯(其实以前重来不写的,被大佬教育了一番) 3.FluentValidation 是.NET 开发的验证框架,开源,主要是简单好用,内置了一些常用的验证器,可以直接使用,扩展也很方便 ...

[ch04-02] 用梯度下降法解决线性回归问题

,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力。 4.2 梯度下降法 有了上一节的最小二乘法做基准,我们这次用梯度下降法求解w和b,从而可以比较二者的结果。 4.2.1 数学原理 在下面的公式中,我们规定x是样本特征值(单特征),y是样本标签值,z是预测值,下标 表示其中一个样本。 预设函数(Hypothesis Function) 为一个线性函数: 损失函数(Loss Function) 为均方差函数: ...

C# 异步并发操作,只保留最后一次操作

在我们业务操作时,难免会有多次操作,我们期望什么结果呢? 绝大部分情况,应该是只需要最后一次操作的结果,其它操作应该无效。 自定义等待的任务类 1. 可等待的任务类 AwaitableTask: View Code 无效的操作可以分为以下俩种: 已经进行中的操作,后续结果应标记为无效 还没开始的操作,后续不执行 自定义任务类型 AwaitableTask中,添加俩个字段NotExecutable、IsInvalid: 复制代码 1 /// 2 /// 获取任务是否为不可执行状态 ...

【决战西二旗】|理解Sort算法

阅读体验 博客园 首页 新随笔 联系 订阅 管理 【决战西二旗】|理解Sort算法 前言 前面两篇文章介绍了快速排序的基础知识和优化方向,今天来看一下STL中的sort算法的底层实现和代码技巧。 众所周知STL是借助于模板化来支撑数据结构和算法的通用化,通用化对于C++使用者来说已经很惊喜了,但是如果你看看STL开发者强大的阵容就意识到STL给我们带来的惊喜绝不会止步于通用化,强悍的性能和效率是STL的更让人惊艳的地方。 STL极致表现的背后是大牛们炉火纯青的编程技艺和追求极致的工匠精神的切实体现。笔者能力所限,只能踏着前人的肩膀来和大家一起看看STL中sort算法的背后究竟隐藏着什么,是不是有种《走进科学》的既视感,让我们开始今天的sort算法旅程吧! ...

三分钟带你入门 redis 高可用架构之哨兵

什么是哨兵? 哨兵(Sentinel)是 redis 的高可用性解决方案,前面我们讲的主从复制它是高可用的基础,需要人工介入才能完成故障转移,哨兵可以解决这个问题,在主从复制情况下,当主节点发生故障时,哨兵可以自动的发现故障并且完成故障转移,实现真正的 redis 高可用。在哨兵集群中,哨兵会监视所有的 redis 服务器和其他 sentinel 节点状态,来保证 redis 的高可用。 哨兵的搭建 哨兵本质也是一个 redis 服务,只是跟普通的 redis 服务提供了不一样的功能。哨兵是一个分布式架构,因为你要保证 redis 高可用,首先需要保证自己高可用,所以如果我们需要搭建哨兵的话,最少需要部署三个实例,最好是奇数个,因为在后续的故障转移中会涉及到投票。 ...

灵魂拷问:为什么 Java 字符串是不可变的?

在逛 programcreek 的时候,发现了一些精妙绝伦的主题。比如说:为什么 Java 字符串是不可变的?像这类灵魂拷问的主题,非常值得深思。 对于绝大多数的初级程序员来说,往往停留在“知其然不知其所以然”的层面上——会用,但要说底层的原理,可就只能挠挠头双手一摊一张问号脸了。 很长一段时间内,我也一直处于这种层面上。导致的局面就是,我在挖一些高深点的技术方案时,往往束手无策;在读一些高深点的技术文章时,往往理解不了作者在说什么。 借此机会,我就和大家一起,对“为什么 Java 字符串是不可变的”进行一次深入地研究。注意了,准备打怪升级了! ...
青岛软件培训

可能你正在寻找一家靠谱的IT培训机构,学习一些专业的软件开发技术,找一份得体的工作。恰巧我们就是一家踏踏实实做教育的IT人才培养机构,我们咨询电话是 0532-85025005,如果你确实对IT感兴趣,我们不妨交流一下。

申请免费试听课程