- 浏览: 1340547 次
- 性别:
- 来自: 北京
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
文章列表
1.seata-server1.5.2下载
https://seata.io/zh-cn/blog/download.html
在你的mysql数据库中创建名为seata的库
/script/server/db/mysql.sql
2.在你的参与全局事务的数据库中加入undo_log这张表
CREATE TABLE IF NOT EXISTS `undo_log`
(
`branch_id` BIGINT(20) NOT NULL COMMENT 'branch transaction id',
`xid` VARCHAR(100) NOT NU ...
1.下载sentinel-dashboard-1.8.5.jar
2.server启动
java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=49.234.12.67:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.5.jar
3.http://49.234.12.67:8180/
1.分布式事务seata-server-1.5.2
2.conf/application.yml
server:
port: 7091
spring:
application:
name: seata-server
logging:
config: classpath:logback-spring.xml
file:
path: ${user.home}/logs/seata
extend:
logstash-appender:
destination: 127.0.0.1:4560
kafka-appender:
...
1.loadbalencer 负载算法默认询改为随机
默认负载均衡策略
Loadbalancer默认实现了如下两种负载均衡策略:
RandomLoadBalancer - 随机分配策略
(默认) RoundRobinLoadBalancer - lun询分配策略
/**
* @Description: 负载均衡配置
*/
public class LoadBalancerConfig {
@Bean
public ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environme ...
1.先调用服务接口,才会在sentinel显示应用名称
2.sentinel 限流默认1秒内多少访问量
3.sentinel规则持久化,服务重启以后不用在配置
4.使用nacos进行sentinel规则持久化
1.配置
spring:
application:
name: nacos-loadbalancer-service
cloud:
nacos:
discovery:
server-addr: 49.234.12.67:8848
loadbalancer:
cache: # 负载均衡缓存配置
...
1.springcloud之使用openfeign调用各子服务接口
2.jar
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.1</version>
</dependency>
<!-- ...
1.可以将其他应用的配置信息存储在nacos
2.
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
3.获取testname从nacos
@RestController
@RequestMapping("/config" ...
1.nacos2.0.4 服务注册与发现
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.spring-cloud-alibaba
<dependency>
...
1.nacos server搭建
2.nacos-server-2.0.4下载
3.nacos/conf/application.properties
server.servlet.contextPath=/nacos
server.port=8848
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
nacos.naming.empty-service.a ...
Shiro和JWT的区别
整合之前需要清楚Shiro和JWT的区别。
首先Shiro是一套安全认证框架,已经有了对token的相关封装。而JWT只是一种生成token的机制,需要我们自己编写相关的生成逻辑。
其次Shiro可以对权限进行管理,JWT在权限这部分也只能封装到token中
1、引入依赖
<!--Shiro-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifa ...
在redis使用lua脚本的好处
减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延。
原子操作。Redis会将整个脚本作为一个整体执行,中间不会被其他请求插入。因此在脚本运行过程中无需担心会出现竞态条件,无需使用事务。
复用。客户端发送的脚本会永久存在redis中,这样其他客户端可以复用这一脚本,而不需要使用代码完成相同的逻辑。
在redis中使用lua脚本
//返回redis中KEYS[1] 的值
retrun redis.call('GET',KEYS[1])
local a=redis.call('TIME');
local b = (a[1]*1000000+a[ ...
Redis 脚本
Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
语法
Eval 命令的基本语法如下:
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
如:获取当前时间
EVAL "local a=redis.call('TIME') ;return (a[1]*1000000+a[2])/1000 " 0
(1)SCRIPT LOAD script
将脚本 script 添加到脚本 ...
A: SETNX key value
将 key 的值设为 value,当且仅当 key 不存在。
若给定的 key 已经存在,则 SETNX 不做任何动作。
SETNX 是SET if Not eXists的简写。
返回值
返回整数,具体为
- 1,当 key 的值被设置
- 0,当 key 的值没被设置
(1)setnx lock1 1
第一次设置lock1 返回 1
(2)再次设置 返回 0
setnx lock 1
(3) get lock1
B:解决死锁
检测到锁已超时,即当前的时间大于键 lock.foo 的值,P4会执行以下操作
GETSET lock1 < ...
Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
自增: incr key1
自减: decr key1
返回值
实例
redis 127.0.0.1:6379&g ...
rocketmq 发送/接收消息简单demo
(1)配置连接ip
producer.setNamesrvAddr("192.168.1.133:9876");
(2)发送消息 TestProducer.java
public class TestProducer {
public static void main(String[] args) throws MQClientException, InterruptedException {
DefaultMQProducer producer = new DefaultMQProducer(&quo ...