- 博客(57)
- 资源 (4)
- 收藏
- 关注
原创 SpringCloud使用spring.factories扫描公共模块的类
在SpringCloud项目中,为了方便开发,将redis从各个服务提取,搞了一个common-redis。因为springboot在启动时只会扫描自己路径下的配置文件,所以公共模块下的配置和实现时不会扫描的。所以我们要通过手动的方式使springboot在启动的时候,扫描到我们的公共模块下的配置。第一种。在springboot的启动类中使用@Import第二种,在公共模块中自定义spring.factories实现org.springframework.boot.autoconfigure.E
2021-08-25 15:48:34 997
原创 expected single matching bean but found 2
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceInitializer': Invocation of init method failed; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of t
2021-07-12 10:32:34 421
原创 控制bean是否启动,用于解决某些bean在某些环境无法启动的问题
背景:身为阿里小外包,其实阿里集团的技术栈和我想象的不一样,虽然spring-cloud-alibaba现在用到人挺多,但是阿里根本不是这一套,而且在阿里学框架没前途,学的是业务,是原理。因为是外包进了国际化业务的BU所以能学到的东西好多。说到国际化,就要了解淘系商城的跨单元部署,在跨单元部署的是会有好多服务只会部署在个别的单元,所以一份代码我们要动态的控制某些服务是否需要注入到ioc容器中。虽然实现办法挺多的,这次我们选择了@Conditional注解。前言:@Conditional是Spring
2021-06-08 09:43:33 407
原创 Redis数据类型-bitmap学习
1、BitMap是什么就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间。2、Redis中的BitMapRedis从2.2.0版本开始新增了setbit,getbit,bitcount等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型,因为setbit等命令只不过是在set上的扩展。3、setbit命令介绍指令SETBIT key offset value设置或者清空k.
2021-03-15 15:18:35 176
原创 SpringCloud Alibaba Seata分布式事务
nacos1.3 + seata1.4导入依赖 <!-- seata 相关依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <exclu
2021-02-24 11:34:07 138
原创 SpringCloud Alibaba整合SpringCloud OpenFeign报错
在学习SpringCloud Alibaba整合SpringCloud 时遇到了一个OpenFeign调用错误Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer? at org.springframework.cloud.openfeign.FeignClien
2021-02-23 11:32:30 1325 2
转载 kafka是如何保证消息不被重复消费的
一、kafka自带的消费机制kafka有个offset的概念,当每个消息被写进去后,都有一个offset,代表他的序号,然后consumer消费该数据之后,隔一段时间,会把自己消费过的消息的offset提交一下,代表我已经消费过了。下次我要是重启,就会继续从上次消费到的offset来继续消费。但是当我们直接kill进程了,再重启。这会导致consumer有些消息处理了,但是没来得及提交offset。等重启之后,少数消息就会再次消费一次。其他MQ也会有这种重复消费的问题,那么针对这种问题,我们需要从业务
2021-02-21 09:07:44 1026
原创 SpringCould2020整合Nacos-Bootstrap配置不生效
因为公司现在换成了nacos,所以自己写了demo学习一下。结果第一步就走不下去。在使用nacos-config读取nacos配置时。发现bootstrap.yml一直不生效。按照网上的解决方法引入依赖。<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId></depe
2021-01-21 10:57:32 1351 8
原创 maven依赖树拉取
公司注册中心准备从Eureka切到Nacos,因为有些项目代码没有更新。所有注册失败。又不知道到底是那个项目还有Eureka依赖。所以用该命令查询依赖树。简单直观有奇效。mvn dependency:treemvn dependency:tree -->a...
2021-01-18 16:30:53 337
原创 Elasticsearch使用中遇到的问题-Nested
实战Elasticsearch,因为之前只写过简单demo,在项目实战中遇到了不少问题。以前只知道Elasticsearch是支持数组对象的。在本次开发中也用到了。并且经过了测试,预发,到了生产环境。数据量上来之后,发现当我使用数组对象单字段查询时并不会出现问题。当多个字段去匹配时,结果却出现了不满足条件的数据。通过万能的搜索引擎了解到。当我们没有定义数组对象的类型时。因为elasticsearch使用的库没有内部对象的概念,因此内部对象被扁平化为一个简单的字段名称和值列表。要解决这个问题只需要将数
2020-12-25 14:37:17 675 1
原创 mysql日期 函数
-- 获取当前日期select curdate(); -- 获取当月最后一天。 select last_day(curdate()); -- 获取本月第一天 select DATE_ADD(curdate(
2020-12-16 21:33:58 175
原创 sql匹配正则中文
今天来到公司。发现一堆工单、调查发现全部是数据迁移导致的数据问题。其中一个表单表里的数据 name和id搞反。导致出现26W的错误数据。直接匹配正则,将储存id为中文的全部查出,然后删掉。select id from 表名 where HEX(字段) REGEXP '^(..)*(E[4-9])'...
2020-11-23 16:22:13 5469
原创 Feign之间调用传递token问题
Feign支持请求拦截器,在发送请求前,可以对发送的模板进行操作,例如设置请求头等属性,自定请求拦截器需要实现 feign.RequestInterceptor 接口,该接口的方法 apply 有参数 template ,该参数类型为 RequestTemplate,我们可以根据实际情况对请求信息进行调整,示例如下: 创建自定义请求拦截器,在发送请求前增加了一个请求头信息,进行身份校验。 具体代码参考如下:@Configurationpublic class FeignTokenInt..
2020-11-13 13:54:53 899
原创 java.net.UnknownHostException异常-碎碎念念
记录一个之前没碰到过的异常。早上来公司。告知今天所有的老系统发送短信失败。因为不是自己的模块所以先看代码。发现这个类最近的提交代码的日期是2019年的。所有排除代码问题。然后就在考虑是配置文件的问题了。把所有的配置写死继续调试。还是没有问题。所有答案只有一个。线上环境有问题。找运维要来了日志。然后排查异常发现java.net.UnknownHostException: sms.zjzwfw.gov.cn at java.net.AbstractPlainSocketImpl.connect(Abst
2020-10-12 13:52:57 2255
原创 SpringCould学习笔记之服务网关 Gateway
什么是服务网关在微服务架构中,整个系统是由许多微服务组成,每个微服务负责一块独立的业务,当外部系统需要调用微服务架构中的某些功能时,我们如何对外提供接口。微服务架构中,服务实例地址经常会发生变化,所以我们无法直接将服务地址外放出来。如果每一个微服务都直接外放接口,会导致一系列的其它问题,比如调用链过于复杂、涉及到账户、权限时不能统一处理等。另外基于高内聚低耦合的设计准则来讲,我们也应该将内部系统和外部系统做切割。于是在这样的场景下,就需要有一个独立的组件来处理外部的请求,这个组件就是服务网关。服务网关
2020-09-18 19:07:11 344
原创 SpringCould学习笔记之声明式服务调用 Feign
1、Feign简介Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便。它具有可插拔注释支持,包括Feign注解和JAX-RS注解、Feign还支持可插拔编码器和解码器、Spring Cloud增加了对Spring MVC注释的支持,并HttpMessageConverters在Spring Web中使用了默认使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载平衡的http客户端。简单来说。feign就是用于
2020-09-14 16:06:45 166
原创 通过freemarker模版拼装参数导出PDf
上周产品给了需求要求根据参数动态导出excel。结果使用了已有的大多数开源插件并不能满足需求。退而求次,导出pdf文件,让用户通过wps转为excel。因为以前没有做过这种东西。在github搜到了基础的方法。在其基础上进行封解决了遗留问题。原实现方法:SpringBoot + Freemarker +itext 渲染 html 导出 PDF上面的代码已经完美的实现了通过 freemarker iText 渲染 html 模板导出 PDF。但是项目存在微小的瑕疵。经过一下午的研究。完美解
2020-08-26 19:04:52 301
原创 ResourceUtils.getFile 打包jar 导致cannot be resolved to absolute file 问题
原代码File file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + relativePath)修改后InputStream stream = ResourceFileUtil.class.getClassLoader().getResourceAsStream(relativePath);File file = new File(relativePath);FileUtils.copyInputStreamT
2020-08-26 09:22:07 845
原创 java文件下载时。文件名乱码解决
String formName = URLEncoder.encode("文件名.pdf", "UTF-8"); response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + formName );
2020-08-25 10:23:59 507
原创 分布式调度-XXL-JOB使用
Elastic-Job监控分析1. 需求痛点Promblem1:Job(定时任务) 到点未触发(可能服务掉线)。解决思路:能实时监测到任务的在线状态,以及追踪到离线事件。并且针对离线问题自动或手动触发补偿。Problem2:Job(定时任务) 触发时发生异常执行失败。解决思路:形成执行成功和失败的执行日志, 执行失败异常报警通知相关开发排查处理修复。2. 选型分析备选了3款分布式调度框架,分别为Elastic-Job、Saturn、PowerJob。主要从开发上手
2020-08-10 16:26:27 1099
原创 linux下根据端口号找到并杀死进程
1. 查找占用的程序。端口号:netstat -apn | grep 80812. 杀掉对应的进程,彻底杀死进程。端口号:kill -9 605
2020-08-05 13:48:46 795
原创 yml自定义配置不生效解决办法
今天遇到了一个问题。yml配置自定义属性不生效。然后使用搜索引擎也不能定位问题。最后发现yml自定义属性从第三级的不支持驼峰命名方式。应该使用-分割。
2020-07-28 15:39:06 3010 1
原创 Navicat12使用mysql数据库,存储Blob字段,显示内容中文乱码
Navicat12使用mysql数据库,存储Blob字段,显示内容中文乱码用一下语句可以查询到正确内容:select cast(字段名 as char) from 表名
2020-07-13 08:59:48 3991 2
原创 sh脚本执行失败
-bash: ./stop.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录就是因为在win环境下打包。有/r和/n存在需要使用命令 sed -i 's/\r$//' XXXX.sh
2020-06-03 00:13:22 1335
原创 HashMap与ConcurrentHashMap
HashMap HashMap底层数据结构 JDK7:数组+链表JDK8:数组+链表+红黑树(看过源码的同学应该知道JDK8中即使用了单向链表,也使用了双向链表,双向链表主要是为了链表操作方便,应该在插入,扩容,链表转红黑树,红黑树转链表的过程中都要操作链表)JDK8中的HashMap为什么要使用红黑树? 当元素个数小于一个阈值时,链表整体的插入查询效率要高于红黑树,当元素个数大于此阈值时,链表整体的插入查询效率要低于红黑树。此阈值在HashMap中为8JDK8中的HashM
2020-05-15 07:06:24 203
原创 集合各实现类的底层实现原理
ArrayList实现原理要点概括参考文献:http://zhangshixi.iteye.com/blog/674856l https://www.cnblogs.com/leesf456/p/5308358.htmlArrayList是List接口的可变数组非同步实现,并允许包括null在内的所有元素。 底层使用数组实现 该集合是可变长度数组,数组扩容时,会将老数组中的元素重新拷贝一份到新的数组中,每次数组容量增长大约是其容量的1.5倍,这种操作的代价很高。 采用了Fail-Fa
2020-05-14 18:36:01 216
原创 分布式事务的实现-rocketMQ实现
1、分布式事务(1)---2PC和3PC原理2、分布式事务(2)---TCC原理3、分布式事务(3)---RocketMQ实现分布式事务原理
2020-05-14 16:00:53 246
原创 上传文件,结果服务器里是目录
用sftp协议上传文件到服务器上,上传上去的就是目录了代码都是一样的账号权限问题,默认使用的超级管理员权限,我代码里面是普通管理员因为不能生成文件,所以默认创建了目录
2020-05-13 17:17:04 240
原创 docker(部署常见应用):docker部署rocketmq4.4
一、安装 Namesrver# 下载镜像docker pull rocketmqinc/rocketmq:4.4.0# 创建mq文件夹mkdir /usr/local/mq# 启动容器docker run -d -p 9876:9876 -v {RmHome}/data/namesrv/logs:/root/logs -v {RmHome}/data/namesrv...
2020-05-06 11:08:19 1180 1
原创 spring‐data‐elasticsearchPOJO中的注解
前端交互我们仍可以使用REST风格结合SpringMVC后端数据库,我们可以使用spring-data-elasticsearchPOM <dependency> <groupId>org.springframework.boot</groupId> <artifactId>...
2020-04-22 16:11:03 586
转载 java面试题-分布式
Zookeeper 是什么?zk是一个开源的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交反馈进行下一步操作,最终将简单易用的接口和性能高效1、文档的系统提供给用户分布式应用程序可以基于zk实现数据发布/订阅,负载均衡、Master选举、分布式锁、分布式队列等功能特性 顺序一致性(有序性) 从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被...
2020-04-20 15:31:17 783
原创 docker常用命令
查看运行中的所有容器docker ps -a删除容器docker rm 容器名启动容器docker start 容器名停止容器docker stop 容器名重启容器docker restart 容器名查看镜像最新版本docker search 镜像名下载镜像docker pull 镜像名删除镜像doc...
2020-04-02 13:48:10 72
原创 取出两个数组的不同元素
//取出两个数组的不同元素function getArrDifference(arr1, arr2) { return arr1.concat(arr2).filter(function(v, i, arr) { return arr.indexOf(v) === arr.lastIndexOf(v); });}
2020-03-09 17:05:05 1378
原创 table转json
1.第一种方法直接用tabletojson.js链接:http://lightswitch05.github.io/table-to-json/2.<table class="table" id="playlistTable"> <thead> <tr> <th> 名称 </th> <...
2020-03-09 13:48:24 860
原创 mysql5.6导入5.5时间格式报错 check the manual that corresponds to your MySQL server version for the right syn
timestamp(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT修改为timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT
2020-01-13 16:17:34 528
转载 docker(部署常见应用):docker部署redis
docker部署redis:4.0# 下载镜像docker pull redis:4.0# 查看下载镜像docker images|grep redis# 启动镜像docker run --name my-redis -p 16379:6379 -v /usr/local/workspace/redis/data:/data -d redis:4.0 redis-ser...
2020-01-13 14:57:36 221
原创 centos7 zookeeper3.5.5 安装
二、下载地址http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz三、安装1.解压sudo tar -zxf apache-zookeeper-3.5.5-bin.tar.gz -C /usr/local/2.修改权限sudo chown -...
2019-12-12 15:47:33 193
转载 SpringBoot 集成MongoDB
一、MongoDB 简介MongoDB 如今是最流行的 NoSQL 数据库,被广泛应用于各行各业中,很多创业公司数据库选型就直接使用了 MongoDB,但对于大部分公司,使用 MongoDB 的场景是做大规模数据查询和离线分析。MongoDB 一经推出就受到了广大社区的热爱,可以说是对程序员最友好的一种数据库,下面我们来了解一下它的特性。MongoDB(Humongous,庞大)是可...
2019-12-11 15:52:37 150
原创 Java8 新特性
1.在java1.8版本以前,Interface接口中所有的方法都是抽象方法和常量,而java1.8我们就可以定义带有方法体的方法。这也使我们在定义接口的时候就有更高的灵活性,一些不需要重写的方法我们我们就直接在接口中定义好了就可以了!在定义接口的时候我们使用default和static关键字修饰.接口也可以多重继承2.重复注解:Java8前版本的Java禁止对同样的注解类型声...
2019-10-17 23:01:58 101
原创 liunx安装mysql8
今天发生了一件非常悲催的事 服务器被攻击 数据库全毁 重新安装系统 准备用宝塔 但是我的服务器内存太小 用宝塔不能安装mysql8 所以,自己直接安装一下1、yum仓库下载MySQL:sudo yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm然后你会发现这个源好慢 所...
2019-10-08 16:35:53 323
笔记_JAVA基础篇,面试必问的那些事.pdf
2020-03-09
Git原理详解与实操指南.rar
2019-10-25
activiti-5.13
2017-11-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人