Netty websocket服务在url上携带参数
需求 在连接websocket时,对连接进行权限校验的方式一般为将身份信息放在url上或者连接上websocket后立马发送校验信息 放在url上的方式在连接的第一时刻就可以对该连接进行身份校验,可以避免连接浪费和编码复杂度,Tomcat-websocket对该方式有良好的支持,但是Netty在并没有对该方式进行支持,需要自己编码实现 连接后第一时间发送……
需求 在连接websocket时,对连接进行权限校验的方式一般为将身份信息放在url上或者连接上websocket后立马发送校验信息 放在url上的方式在连接的第一时刻就可以对该连接进行身份校验,可以避免连接浪费和编码复杂度,Tomcat-websocket对该方式有良好的支持,但是Netty在并没有对该方式进行支持,需要自己编码实现 连接后第一时间发送……
1. try-catch static ExecutorService threadPool = new ThreadPoolExecutor( 2,5,1L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(3), new Th……
官方使用方式 Dubbo动态指定 IP 调用 坑 dubbo-cluster-specify-address-dubbo3中的Dubbo版本是3.0.6版,所以项目中使用的Dubbo版本也需要相同 如果其他映入了其他类型的Dubbo,比如start-dubbo,则需要排除掉dubbo-cluster-specify-address-dubbo3的dubbo……
业务背景 在记账软件中,每个用户的统计信息需要存放与redis中,每一次修改或者新增数据后都需要对redis进行更新操作,更新的话需要先获取到redis中的值,然后在对redis进行更新,由于两个操作并不是原子操作,所以需要在java代码中进行锁的操作才能实现 全局锁 使用全局锁的话则需要在方法之上添加synchronized关键字或者使用Lock类进……
安装seata 拷贝配置文件 docker run -d -p 8091:8091 -p 7091:7091 --name seata-serve seataio/seata-server:latest docker cp seata-serve:/seata-server/resources /home/seata/config 修改applicatio……
引用: https://zhuanlan.zhihu.com/p/115912936 从TCP发送数据的流程说起 要深入的理解各种IO模型,那么必须先了解下产生各种IO的原因是什么,要知道这其中的本质问题那么我们就必须要知道一条消息是如何从一个人发送到另外一个人的; 以两个应用程序通讯为例,我们来了解一下当“A”向"B" 发送一条消息,……
拉去镜像 docker pull mongo:4 设置docker网络环境 docker network create <network name> 部署mongo 部署三台服务,docker暴露端口分别为27017,27018,27019 docker run --net mongonet --name mongo1 -v E:/dock……
JSON.toJSONString(result, String.valueOf(SerializerFeature.WriteMapNullValue)) ……
查看 docker system df 清理 docker builder prune 设置保留时间 docker builder prune --filter 'until=480h' ……
部署 Skywalking OAP 命令方式部署 1.下载mysql驱动 #创建文件夹 mkdir /opt/skywalking-oap-server/oap-libs #下载mysql-connector-java.jar,将mysql-connector-java.jar拷贝到/home/skywalking/oap-libs 2. 下载Skywa……
1.轮询策略 轮询策略:RoundRobinRule,按照一定的顺序依次调用服务实例。比如一共有 3 个服务,第一次调用服务 1,第二次调用服务 2,第三次调用服务3,依次类推。 此策略的配置设置如下: springcloud-nacos-provider: # nacos中的服务id ribbon: NFLoadBalancerRuleClas……
swagger中使用V3时,获取到docs得到的接口为v3/api-docs接口,但是此接口并没有将请求的前置加上,所有直接使用swagger的时候是无法访问的 原因分析 主要原因为在v3/api-docs返回的JSON对象中,servers返回的url中只存在ip(域名)+端口的连接,但是请求前缀并没有加上,**请求会缺失basePath(如果使用服务……
什么是控制并发流程? 控制并发流程的工具类,作用就是帮助我们程序员更容易得让线程之间合作 让线程之间相互配合,来满足业务逻辑 比如让线程A等待线程B执行完毕后再执行等合作策略 有哪些控制并发流程的工具类? CountDownLatch 迸发流程控制的工具 倒数门闩 流程: 倒数结束之前,一直处于等待状态,直到倒计时结束,此线程才继续工作 类的……
并发容器概览 ConcurrentHashMap:线程安全的HashMap CopyOnWriteArrayList:线程安全的List BlockingQueue:这是一个接口,表示阻塞队列,非常适合用于作为数据共享的通道 ConcurrentLinkedQueue:高效的非阻塞并发队列,使用链表实现。可以看做一个线程安全的LinkedList Conc……
什么是CAS CPU的特殊指令,由CPU保证操作的原子性 我认为V的值应该是A,如果是的话那那我就把它改成B,如果不是A (说明被别人修改过了),那我就不修改了,避免多人同时修改导致出错 CAS有三个操作数:内存值V、预期值A、要修改的值B,当目仅当预期值A和内存值V相同时,才将内存值修改为B,否则什么都不做。最后返回现在的V值 i CAS等价代码 ……
原子类简介 不可分割 一个操作是不可中断的, 即便是多线程的情况下也可以保证 java.util.concurrent.atomic 原子类的作用和锁类似, 是为了保证并发情况下线程安全。不过原子类相比锁,有一定的优势 颗粒度更细:原子变量可以把竞争范围缩小到变量级别,这是我们可以获得最细颗粒度的情况了,通常锁的颗粒度要大于原子变量的粒度 效率更高:通常,……
Lock接口 Lock简介 地位 作用 锁是一种工具,用于控制对共享资源的访问 Lock和synchronized,这两个是最常见的锁,它们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同。 Lock并不是用来代替synchronized的,而是当使用synchronized不合适或不足以满足要求的时候,来提供高级功能的。 Lock接口最常见的……
使用场景 场景1:每个线程需要一个独享的对象(通常是工具类,典型需要使用的类有SimpleDateFormat和Random 场景2:每个线程内需要保存全局变量(例如在拦截器中获取用户信息),可以让不同方法直接使用,避免参数传递的麻烦 Spring Security获取到Authentication用户信息时也采用到ThreadLocal实现 在Secu……
1.线程池简介 线程池的重要性:不言而喻 如果不使用线程池 每个任务都需要开一个线程处理 一个线程 for循环创建线程 当任务数量上升到1000 缺点: 这样开销太大,我们希望有固定数量的线程,来执行这1000个线程,这样就避免了反复创建并销毁线程所带来的开销问题。创建个销毁会有很大的代价,需要jvm辅助很多工作 为什么要使用线程池 问题一:……
docker run -p 9000:9000 -p 9001:9001 \ --name minio \ -d --restart=always \ -e MINIO_ACCESS_KEY=minioadmin \ -e MINIO_SECRET_KEY=minioadmin \ -v /home/minio/data:/data \ -v /home/……
您已发表0条评论。
日期时间 | Points | 类别 | 状态 | 描述 |
---|---|---|---|---|
2021-09-11 14:41:12 | 1000000 | 充值 | accepted | comment_posted_5 |
您还没发表过任何的评论。我们期待您的精彩点评。