http改为https后websocket连接不上 其中,proxy_set_header userId $arg_userId;表示从请求 URL 的 query string 中获取 userId 参数的值,并将其作为自定义头信息 userId 发送到后端 WebSocket 服务。如果请求的 URL 中没有 userId 参数,则 $arg_userId 的值为空。当请求的 URL 匹配到 /ws 路径时,将会被代理到 WebSocket 服务。
关于Stream API优化 Java 代码 Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读放大招,流如何简化代码如果有一个需求,需要对数据库查询到的菜肴进行一个处理:筛选出卡路里小于400的菜肴对筛选出的菜肴进行一个排序获取排序后菜肴的名字菜肴:Dish.javapublic class Dish { private String name; private boolean vegetarian;
feign接口调用服务上传图片 报错 the request was rejected because no multipart boundary was found 在用postman 请求这个调用接口的时候,报了the request was rejected because no multipart boundary was found1.首先检查是否导入了下面两个包<dependency> <groupId>io.github.openfeign.form</groupId> <artifactId>feign-form</artifactId> <
CompletableFuture异步编程 1.什么是CompletableFuture很多场景下,我们想去获取线程运行的结果,而通常使用execute方法去提交任务是无法获得结果的,这时候我们常常会改用submit方法去提交,以便获得线程运行的结果。而submit方法返回的就是Future,一个未来对象。 使用future.get() 方法去获取线程执行结果,包括如果出现异常,也会随get方法抛出。当我们使用future.get()方法去取得线程执行结果时,要知道get方法是阻塞的,也就是说为了拿到结果,当主线程执行到get()方法,当前线程
Java常用工具库 1. Java自带工具方法1.1 List集合拼接成以逗号分隔的字符串// 如何把list集合拼接成以逗号分隔的字符串 a,b,c List<String> list = Arrays.asList("a", "b", "c"); // 第一种方法,可以用stream流 String join = list.stream().collect(Collectors.joining(",")); System.out.println(join); // 输出 a,b,c //
Json和对象直接互相快捷转换不用工具类!!!! 1、添加jackson依赖库<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.8.3</version></dependency>用到jackson的类中需要引入:import com.fasterxml.jackson.d
业务逻辑层到底该抛异常还是返回错误的状态码 对比:抛出异常可以让API层try catch 捕获异常,并且在发生问题时候,迅速定位到某行代码,异常链占用内存大,返回错误码,可以让API解析错误码,做某些操作,但是不利于定位服务端代码错误。应用场景:1)参数校验 ,校验参数必须存在,这种直接抛出异常就可以了,因为不需要返回其他数据,参数校验通过了,根据订单ID 获取订单信息 没找到, 也直接抛异常就可以了, 因为也不需要返回其他数据。2)创建订单 校验是否存在未支付订单,如果API 层要求 如果存在未支付订单,同时返回未支付订单号,方便 A
ClassLoader加载机制与双亲委派 1.Classloader1.1 JVM一共有四种类加载器:Bootstrap类加载器、Extension类加载器、Application类加载器和Custom类加载器。需要注意的是,它们之间并非继承关系,只是在语义上,顶层类加载器为底层类加载器的父加载器。1.2 Bootstrap类加载器是JVM中最顶层的类加载器,由C++实现,其他三种类加载器是ClassLoader的子类。不同的类加载器,会加载不同的类。Bootstrap类加载器加载的是jre/lib/rt.jar中所有的类。1.3 Ext
关于反射的实战应用对比 测试类package com.longxin.springbootvue.system.admin.controller;import com.longxin.springbootvue.system.admin.domain.vo.BusiTrashAirVo;import java.lang.reflect.Field;/** * @ClassName: aaa * @Author: ld * @Date: 2021/3/10 15:20 * @Description: **/
关于java正则表达式那点事... 一、正则表达式匹配规则\w 匹配字母、数字、下划线\W 匹配非字母、数字、下划线\s 匹配任意空白字符,相当于[\t\r\f]\S 匹配任意非空字符\d 匹配任意数字,相当于[0-9]\D 匹配非数字的字符\A 匹配字符串开头\Z 匹配字符串结尾,如果存在换行,只匹配到换行前的结束字符串\z 匹配字符串结尾,如果存在换行,同时还会匹配换行符\G 匹配最后匹配完成的位置 匹配一个换行符\t 匹配一个制表符
springboot的切面aop实现日志记录的插入。简单操作,易上手! 1.导包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>2.创建项目工程1.启动类@SpringBootApplicationpublic class OpenApplication { public sta
Redis的使用(二) 1、发布订阅模式例子:比如说你们家有个收音机 你收听了 xxxxx 频道 那么只要你打开这个频道 你就能收听到这个频道的所有的内容你的收音机-----------接收方(订阅方)频道的内容发送方-------内容的发布者subscribe 订阅的频道的名称publish 频道名字 内容2、Redis中事务问题事务是不是具有原子性? 这一串的操作要么同时成功、要么同时失败不是这样的(没啥用)multi 开启事务..........exec 提交事务3、rdb模式实现
Redis的使用(一) 1、Redis是什么Redis是一个no sql的数据库Redis是一个基于键值对的存储系统 key value Map结构no sql 的数据库(非关系型的数据库)非关系型数据库-----------------关系型的数据库关系:表与表之间的关系 对象和表之间的映射关系非关系型数据库:不存在表与表之间的关系 也不存在 对象和表之间的关系在Redis中简单的说 啥都没有 所有数据 都是基于键值对来进行存储的2、redis能干什么1、做数据缓存(缓存)2、购物车
shiro授权和认证(四) SpringBoot+shiro+Swagger实现前后分离的框架1、导包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency>
shiro授权和认证(三) 1、过滤器授权1、在realm中查询用户的权限和角色放到缓存中 @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { //第一步:先获取用户名 User user= (User) principalCollection.getPrimaryPrincipal(); //第二步:通过用户名查询数据库
shiro授权和认证(二) 1、盐散列次数以及散列关系 public static void main(String[] args){// Md5Hash md5Hash = new Md5Hash("abc");//// System.out.println("散列后的结果:"+md5Hash); //为什么要加盐? 给这个密码再添加一层保障 //为了让密码更加安全 更加不容易被破解 Md5Hash md5Hash1 = ne
shiro授权和认证(一) shiro是什么shiro一个授权和认证的这样一个框架简单的给你说、就是以前咋们认证和授权的所有代码、shiro都给咋们写好了、而且封装好了、我们只需要按照这个框架提供的API来简单的集成到咋们的项目中就可以了1、shiro能干什么认证、授权、Cache的管理、Session的管理、rememberMe功能的实现、登陆、退出…2、shiro的整体架构是什么3、shiro的第一个helloworld程序3.1、导包 <!--导入shiro的包--> <de