Redis分布式锁
场景
1.服务A 与 服务B 都希望拿到锁
Redis获取锁发起命令: SET productId:lock xxx2312xxxx NX EX 3000productId 可以自定义的,与业务有关的ID:lock 也就是锁的意思,也可以放到业务ID前面xxx2312xxxx 随机生成的唯一字符串,必须保证全局唯一NX 如果 productId:lock 在redis中不存在,则返回成功,否则失败EX 设置过期时间,时间到了则删除key
2.服务B为了获取锁也向Redis发送相同的命令SET productId:lock xxx4444xxxx NX EX 3000
执行命令发现Redis已经存在了productId这个key,并且没有过期,因此执行命令失效,服务B获取锁失败而后服务B进入循环请求状态,比如每隔一秒(自定义秒数)往Redis发送请求,直到成功并获得锁
3.服务A的业务代码比较多执行时间超过了你设置的30秒,那么你在Redis存的productId:lock这个key则会过期
过期之后自动删除了这个key,因此服务B则发送命令成功获取到锁;当然也可以 ...
VsCode记录
安装VsCode下载地址12# 你会发现下载的特别慢,这时候怎么解决呢 ?https://code.visualstudio.com/Download
解决下载龟速方案:
第一步: 在官网点击下载,在浏览器下载管理中找到下载中的vscode复制下载路径第二步: 复制好连接需要将下载链接的网址也就是az764295.vo.msecnd.net进行替换
12# 替换成这个在地址栏回车就会进行下载,速度嗖嗖的vscode.cdn.azure.cn
常用插件123456789101112131415161718192021222324252627282930# 1.如果你不喜欢用英文那么可以安装中文插件Chinese# 下载完成之后 Ctrl+Shift+P 查找 configure display language 选择你下载的中文语言 zh-cn# 2.如果你是写的vue代码建议插件vetur# 3.如果你用的vue想要提示那么下载Vuehelper# 4.如果你代码中有JavaScript脚本,请使用这款插件检测eslint# 5.如果你要使用浏 ...
docker教程
无须先pull镜像,docker run之前会自动下载镜像安装
执行安装命令本教程安装docker在CentOS7镜像中;
1yum install -y docker
查看是否安装成功
1yum list installed | grep docker
启动docker
1systemctl start docker
查看是否启动成功
1systemctl status docker
○ docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-05-26 05:05:46 EDT; 13s ago Docs: http://docs.docker.com Main PID: 1985 (dockerd-current) CGroup: / ...
JVM学习记录
JVM组成
JVM的组成总共分为三部分: 类装载子系统、运行时数据区(内存模型)、字节码执行引擎;运行时数据区(内存模型)包含五个: 堆、栈(线程)、本地方法栈、方法区(元空间)、程序计数器;
运行时数据区
堆: 通过new的对象一般都是存放入堆中;栈: 栈主要用来存放局部变量;如上图所示,只要有一个线程开始运行,java虚拟机就会为当前线程分配专属的栈内存区域;Ps: 只要有一个线程就会开辟一块栈内存空间,main线程运行就会开辟一块,其他线程也会开辟自己对应的栈内存空间;当线程开始运行方法,假设线程开始运行,那么只要执行了一个方法就会分配一块栈帧的内存区域,运行了main方法那么就会开辟一块main方法的栈帧,那么我在main方法中定义的name局部变量就会存入到main()栈帧中;如上图所示,只要执行了add()方法就会在main线程中开辟一块add()栈帧,并且将add()方法中的局部变量存入到add()栈帧内存中;Ps: 为什么使用栈,栈的特点先进后出,也就是说先执行的方法内存后释放,最后执行的方法内存最先被释放;
关于我在工作中遇到的一些问题
参数校验12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697public class ParamsCheck{ private static ThreadLocal<String> param = new ThreadLocal<>(); public static void main(String[] args) { JiuShiBoy jiuShiBoy = new JiuShiBoy(); Cat cat=new Cat(); List<Cat> list=new ArrayList<>(); list.add(cat); ...
PHP基础一
PHP环境安装
根据你环境选择Windows或者Linux版本与位数,我选择的是Windows64位;传送门: https://www.xp.cn/download.html
phpstudy使用
当我们写好php文件以后怎么查看效果呢?我们启动apache然后进行配置,选择网站目录并且放置php文件到WWW/目录下面,默认访问路径是localhost/你的php文件.php;
PHP语法
语言标记表示这一段是PHP代码;通过cgi请求PHP解释器处理;
123<?php?>
echo输出语句
1echo 'Hello World';
print_r 打印
1print_r(1);
var_dump打印数据类型和值
12$jiushiboy=true;var_dump($jiushiboy);
PHP嵌套到HTML
1234567891011<!DOCTYPE html><html lang="en"><head> <meta charset=&q ...
IDEA相关记录
下载
镜像站: https://www.jetbrains.com/idea/download/other.html插件: 非必选->
1. MybatisCodeHelper mybatis代码生成插件 - ↓
1.1 在Idea中使用Alt+insert键可以根据实体类生成表结构SQL;
Ps: 两款插件选一款,两款一起下载会导致冲突,不然你在mapper选择方法不能直接跳到xml对应的方法
2. Free Mybatis plugin mybatis插件 - ↑
必选 ->
1. lombok 插件,可以不用@Data注解,安装插件一般只是为了解决使用slf4j需要;
2. Alibaba Java Coding Guidelines 代码规范插件,写完代码扫一扫;
环境 ...
分布式的解决方案
MySQL事务关于为什么用分布式锁
如果现在项目是一个分布式系统,并且搭建了集群,那么使用Java的JVM级别的锁就不管用了,因为都不是同一台机器了,因为会分散在不同的JVM中无法保证一致性;
疑问?
看到这里你会问为什么我标题写的是分布式解决方案,却把MySQL事务在这里放了一份,原因很简单,我单纯想复习一下;
初步讲解
MySQL中的事务主要处理操作量大,复杂度高的数据。比如拿Github来说,你删除一个账号,你首先要删除个人信息,其次也得删除个人仓库等等,这些数据库操作语句就构成了一个事务;
基本了解
MySQL5.7以后使用了innodb数据库引擎来支持事务;那么之前用的是MyISAM;
事务主要用来处理数据库的完整性,多条的操作性SQL语句要么全部执行,要么不执行;
事务是专门用来管理insert、update、delete型操作语句;
ACID
A:原子性(不可分割性)
原子性: 一个事务Transaction所有的操作,要么全部完成,要么全部失败;
举例子: 假设我去买水果需要支付100块钱,老板需要收到100块钱,不可能我支付了100而老板却没有收到10 ...
暗网如何进入呢?
暗网是什么?
此回答来自于百度百科:“暗网”是指隐藏的网络,普通网民无法通过常规手段搜索访问,需要使用一些特定的软件、配置或者授权等才能登录。由于“暗网”具有匿名性等特点,容易滋生以网络为勾联工具的各类违法犯罪,一些年轻人深陷其中。记者在中国裁判文书网上搜索显示,涉“暗网”的案件共有21例,涉及贩卖毒品、传播色情恐怖非法信息、侵害公民个人信息等犯罪行为。
如何进入呢?
下载Tor Browser浏览器,安装很简单无脑下一步双击Tor Browser浏览器打开,选择配置选择内置的网桥,选择之后点击连接当然前提是你访问暗网是需要有路径的,我这里提供几个简单的把;
http://chatrv7isst7cnys.onion 这是一个华人的聊天室
http://kgaalsjzcz3o2ydu4tvdwcwxyabx26sx2tbdbtmqmc6tamyptpdhk5id.onion 这是一个社工库
http://pncldyerk4gqofhp.onion 这是一个中文论坛,已经关闭注册
Ps: 差点漏了一点,记得开启你的梯子!!!!(这话懂的人可以忽略)//TODO Descri ...