后端
文章平均质量分 54
ycblog.top
这个作者很懒,什么都没留下…
展开
-
使用keycloak自定义SPI接入外部用户角色
将项目打成jar包,放到keyclaok对应位置,启动keyclaok,创建用户联盟,成功之后可以在角色界面查看到对应库中的所有角色,并且点击对应用户可查看已经分配的角色。第一点:该类修改的地方在于校验数据库连接后添加所有角色到keycloak,这一步可以忽略掉,也可以在用户登录验证成功之后添加用对应的角色。我这里获取角色的字段是固定的,没有通过提供者工厂配置查询角色字段的对应,有需要的话可以参考用户实体字段的映射配置。2、修改用户实体(BaseUserEntity),添加角色关联id和角色名称。原创 2022-09-24 22:40:34 · 687 阅读 · 1 评论 -
使用keycloak自定义SPI接入外部用户登录
如果keycloak启动正常,打开控制台,点击左侧的 用户联合菜单,右侧的下拉列表中就能看到我们刚才添加的提供器,名字为 custom-user-provider。1、准备用户表,这些字段是必须的,不过字段名可以自定义,会在自定义的SPI中固定字段名,查询数据库的字段需要映射到实体的字段。6、创建提供者工厂,在keycloak管理界面添加用户联盟时的自定义的配置信息,主要是数据库连接。查看效果,点击用户然后查看所有能够查看到数据库的用户,然后就能用数据库的用户进行登录了!原创 2022-09-24 22:37:21 · 2350 阅读 · 0 评论 -
RabbitMQ 发布确认模式
发布确认模式原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,rabbitmq 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,rabbitmq 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号;此外 rabbitmq 也可以原创 2021-09-20 14:03:58 · 284 阅读 · 0 评论 -
maven把jar包编译到本地仓库后再项目中使用
1、确保maven环境正常mvn -v2、修改配置文件本地仓库地址编译之前确保maven的配置文件 settings.xml 配置过本地仓库,否则可能再编辑器中手动修改了本地仓库地址,导致还是找不到 jar 包。。。3、编译到本地仓库mvn install:install-file -Dfile=xxx.jar -DgroupId=com.southgis.ibase.filemgr -DartifactId=officeTemplate -Dversion=3.0.1-SNAPSHOT -原创 2021-09-06 17:32:14 · 547 阅读 · 0 评论 -
docker容器和宿主机系统时间同步
今天突然发现 redis 中设置凌晨重置过期时间发现是在早上8点重置,和正常时间相差8个小时,导致统计出现误差,最初以为是服务器系统时间有问题,就修改系统时间为北京时间1.删除自带的localtimerm -rf /etc/localtime2.创建软链接到localtimeln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改完后查看系统时间查看时间和日期命令: date但是发现并没有啥用,后台想到是docker容器启动,进入容原创 2021-09-06 14:07:52 · 479 阅读 · 0 评论 -
JS解析JSON字符串,解析后数值的精度丢失问题
最近前端在解析后端返回的 json 数据时解析后发现数值类型的精度丢失,长度超过17位后面的所有数都变成 0 ;var obj = 'var obj = '{"id":50000000000050153333}';var jsonObj = JSON.parse(obj);console.log(jsonObj);';打印的结果为(16位之后都边成0):50000000000050150000解决办法:由于数据是通过第三方接口返回的 xml 字符串转换而来,所以决定在后端将所有字段转成字符原创 2021-09-05 19:02:46 · 3450 阅读 · 0 评论 -
FastJson中@JSONField注解
最近做项目,需要json格式在服务器之间进行数据传输。但是发现 json 格式数据字段和 java 实体中的变量不对应,需要在后台做二次处理,将数据处理成实体中定义的格式,说白了就是实体类和map数据之间的转换!!!引入 alibaba 的 fastjson 包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <原创 2021-09-03 13:41:51 · 478 阅读 · 0 评论 -
阿里云服务器发送邮箱失败问题
问题描述:在本地启动项目并发送邮箱完全木有问题,ok,上云,注册用户,一顿操作猛如虎,what?,邮箱验证码发送失败??,什么玩意??原因:发邮件的默认端口是25端口,而阿里云禁止通过STMP 25端口发送邮件,所以发送失败!!!!解决方案:(1)向阿里云申请开放25端口(需要审核)登录到阿里云管理控制台;鼠标移动到头像,可以看到下拉菜单,点击“安全管控”左侧栏“业务申请”–“25端口解封”注意:在正式申请前,您需要确认同意并承诺,保证TCP 25端口仅用来连接第三方的SMTP服务器,原创 2021-08-09 14:17:28 · 2979 阅读 · 0 评论 -
docker部署rabbitmq
1、拉取镜像,自行选择需要的版本镜像地址:https://hub.docker.com/_/rabbitmq?tab=tags&page=1&ordering=last_updateddocker pull rabbitmq:3.9.1-management2、准备宿主机的挂载目录数据目录mkdir -p /yc/dockerRabbitMQ/data日志目录mkdir -p /yc/dockerRabbitMQ/log注意创建的目录权限需要777,否则启动会报错创建文件原创 2021-08-08 11:42:45 · 139 阅读 · 0 评论 -
linux环境安装RabbitMQ
一、下载安装包下载linux的rabbitmq包,下载地址:https://www.rabbitmq.com/download.html将下载后的文件拷到服务器中二、安装Erlang1、下载erlang需要的依赖sudo apt-get install build-essential sudo apt-get install libncurses5-dev sudo apt-get install libssl-devsudo apt-get install m4 sudo apt-g原创 2021-08-01 19:24:49 · 201 阅读 · 0 评论 -
LeetCode最高频元素的频数
元素的 频数 是该元素在一个数组中出现的次数。给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。示例 1:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。示例 2:输入:nums = [1,2,2原创 2021-07-31 19:03:39 · 78 阅读 · 0 评论 -
docker部署mongodb挂载数据以及mongodb迁移数据
mongodb备份数据由于之前是在本地启动的mongodb服务,现在需要用docker容器部署,数据需要把之前的数据导出来使用mongo自带命令来迁移数据,思路是先导出集合数据再导入到数据库中1、导出命令:mongoexport语法:mongoexport -d dbname -c collectionname -o filepath --type json/csvmongoexport -d ycblog -u yc -p ycblog -c clickNum -o /yc/mongodb/原创 2021-07-29 19:37:19 · 1390 阅读 · 0 评论 -
leetCode 检查是否区域内所有整数都被覆盖
给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖,那么请你返回 true ,否则返回 false 。已知区间 ranges[i] = [starti, endi] ,如果整数 x 满足 starti <= x <= endi ,那么我们称整数x 被覆盖了。示例原创 2021-07-25 17:04:33 · 176 阅读 · 0 评论 -
jenkins升级报错An attempt to save the global configuration was made before it was loaded
今天有点心血来潮,看到管理中有一个新版本提示,可以直接点击自动升级,就把jenkins自动升级到了2.305,重启之后就直接爆炸进不去java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded at jenkins.model.Jenkins.save(Jenkins.java:3379) at jenkins.model.Jenkin原创 2021-07-19 15:04:56 · 3880 阅读 · 2 评论 -
java中HashMap与ConcurrentHashMap
HashMap(java1.7)简单来说,HashMap是一个Entry对象的数组。数组中的每一个Entry元素,又是一个链表的头节点。底层基于 数组+链表 组成;put操作1、判断当前数组是否需要初始化。2、如果 key 为空,则 put 一个空值进去。3、根据 key 计算出 hashcode。4、根据计算出的 hashcode 定位出所在桶。5、如果桶是一个链表则需要遍历判断里面的 hashcode、key 是否和传入 key 相等,如果相等则进行覆盖,并返回原来的值。6、如果桶是空的原创 2021-07-18 18:03:52 · 269 阅读 · 0 评论 -
LeetCode 在排序数组中查找数字 I
统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0方法一、直接循环判断,与target相等数量加一public int search(int[] nums, int target) { int count = 0; for (int num : nums) { if(num == tar原创 2021-07-18 15:37:45 · 59 阅读 · 0 评论 -
LeetCode H 指数 II
给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照 升序排列 。编写一个方法,计算出研究者的 h 指数。h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数不多于 h 次。)"示例:输入: citations = [0,1,3,5,6]输出: 3解释: 给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了原创 2021-07-15 18:57:49 · 90 阅读 · 0 评论 -
java下载文件(多个文件进行打包下载)
最近遇到需求要下载材料清单的附件,一个清单下面可能存在多个文件,只存在一个附件直接下载该附件,如果存在多个附件将所有附件打包压缩之后下载压缩包,记录下文件下载以及文件压缩的处理public void downLoadMaterialFile(HttpServletResponse response) throws Exception { //获取附件路径(数据库获取) ArrayList<String> filePathList = new ArrayList<>(原创 2021-07-15 14:56:39 · 5263 阅读 · 3 评论 -
LeetCode 面试题 17.10. 主要元素
数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2输入:[3,2]输出:-1示例 3:输入:[2,2,1,1,1,2,2]输出:2方法一、遍历数组,如果map中的key存在当前遍历的值,则获取该key的value并加1,同时重新将改value赋值给该key,如果当前key的value值大于数组长原创 2021-07-13 18:52:07 · 110 阅读 · 0 评论 -
LeetCode 和相同的二元子数组
给你一个二元数组 nums ,和一个整数 goal ,请你统计并返回有多少个和为 goal 的 非空 子数组。子数组 是数组的一段连续部分。示例 1:输入:nums = [1,0,1,0,1], goal = 2输出:4解释:有 4 个满足题目要求的子数组:[1,0,1]、[1,0,1,0]、[0,1,0,1]、[1,0,1]示例 2:输入:nums = [0,0,0,0,0], goal = 0输出:15提示:1 <= nums.length <= 3 * 104num原创 2021-07-09 11:18:17 · 83 阅读 · 0 评论 -
springboot启动报错Bean with name ‘xxxxService‘ has been injected into other beans
今天在本地测试启动项目的时候报错:Bean with name ‘commonService’ has been injected into other beans [] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is o原创 2021-07-08 13:45:09 · 1794 阅读 · 0 评论 -
Java中Map集合实现类HashMap、Hashtable、WeakHashMap、EnumMap
最近发现map集合不简单啊,整理一下子(虽然都是百度找,但这不是重点,重点是需要重新过一遍Map集合)。关系图虚线箭头表示实现,实线箭头表示继承图中可以看到,所有Map的实现类都继承Map接口,其中抽象类AbstractMap是Map接口的一部分实现,而Map的所有实现类都继承了AbsctractMap这个抽象类Map将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值删除该Map对象中所有键值对;void clear();查询Map中是否包含指定的key值;boo原创 2021-07-06 18:50:22 · 197 阅读 · 0 评论