给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
String s = simpt.format(new Date()) + “-” + FileId.nextId();
return s;
}finally {
lock.unlock();
}
}
}
}
1.2. 启动2个tomcat
修改springboot配置文件application.properties
修改端口为8081
使用启动类分别启动8080,8081
1.3. 配置nginx访问
1.4. 使用JMeter测试
把测试结果排序后
虽然单个节点解决了并发安全问题,但是在分布式场景下,依然出现了并发安全问题
2. 使用分布式锁解决
通过上面的案例使用JDK的锁解决不了分布式场景下的并发安全问题,接下来就考虑使用分布式锁来解决了。
2.1. 解决方案概述
分布式锁有很多种方案
这些方案可以使用一个设计模式来统一
2.2. 模板方法模式
2.2.1. 模板方法介绍
在父类中编排主流程,将步骤实现延迟到子类去实现。
上图网上购物的时候总体4个流程
-
清点商品
-
计算价格
-
支付(未知扩展)
-
送货上门
2.2.2. 代码实现
package cn.enjoy.template;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class AbstractTemplate {
public void shopping() {
Map<String,Float> cars = new HashMap();
cars.put(“电池”,10f);
cars.put(“娃娃”,20f);
cars.put(“打气筒”,30f);
//1.清点商品
checkGoods(cars);
//2计算价格
float mony = calculation(cars);
//3.支付
if(pay(mony)) {
//4.如果支付成功送货
delivery();
}
}
public void checkGoods(Map<String,Float> cars) {
if(cars!=null) {
System.out.print(“你购买的了:”);
for(String key:cars.keySet()) {
System.out.print(key+" ");
}
System.out.println();
}
}
public float calculation(Map<String,Float> cars) {
float result = 0;
if(cars!=null) {
for(String key:cars.keySet()) {
result += cars.get(key);
}
}
System.out.println(“你总共应该支付:”+result);
//钱
return result;
}
public abstract boolean pay(Float money) ;
public void delivery() {
System.out.println(“请稍等,小哥哥正在送货!”);
}
}
对于支付来说是【未知的扩展】因此它是个抽象的方法,如果想使用微信支付可以重现pay方法
2.3. 分布式锁的模板方法
2.3.1. 概览
1、定义锁的接口Lock
2、在AbstractLock模板锁里面实现getLock方法,实现通用的逻辑。
写在最后
在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。
需要完整版PDF学习资源私我
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
步,书写属于我们的辉煌篇章。**
需要完整版PDF学习资源私我
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!