开发的小坑小洼
文章平均质量分 51
开发中遇到的坑
学习时长两年半的小学生
我要一步一步往上爬~
展开
-
Variable used in lambda expression should be final or effectively final 问题的解决和追根溯源
翻译:lambda表达式中的变量必须是final的为什么?因为lambda表达式和匿名内部类一样,不需要额外定义类就可以直接写接口方法的实现,但是实际上只是简化了我们的写法,还是会由产生的一个内部类做了该接口的方法实现,那么这个时候,可以理解为其实有两个类,外部类的方法,调用了内部类的方法。而外面那个username,就是外部类的方法中的变量。基于这点认识,我们分析会出现如下两个问题:(1)如果像上面例子的异步执行,有可能就会出现外部类的方法执行完成出栈了,方法中的局部变量username被垃圾回.原创 2022-01-17 15:46:23 · 7280 阅读 · 0 评论 -
idea+Git工具之幽灵删代码事件
这不是搏眼球写的标题,说实话当时自己也怀疑人生排查了很久,下面直接复现那个幽灵删代码场景。首先看develop分支上,是有这个Experiment类的(为了案件重演,我reset --hard 回当时那个commit id)然后再看当时的我的本地分支,也是有这个Experiment类的,所以肯定不是我删掉的但是由于Develop和local分支都改到了这个文件,所以有冲突了:有冲突,没问题,那就看着develop和local解决,哪些以谁为准,都可以商量但是就在这时!奇葩的一幕出现了!合并r原创 2021-11-30 14:50:45 · 502 阅读 · 0 评论 -
日志输出的小坑(idea 启动项目报错 open file faild ...... permission denied......)
最近修改了日志输出位置path,从当前./目录写到了另外一个文件路径/data/XX/XX,Windows上没问题,Linux也没问题,结果Mac启动idea运行项目说open file faild … permission denied…解决:手动创建对应的文件路径,mkdir 要加 sudo,然后touch创建出对应的log文件,或者把对应文件夹的权限放开:sudo chmod -R 777 /data/log/XXXXX/ 再启动,即可...原创 2021-11-18 15:04:33 · 2099 阅读 · 0 评论 -
Spring自定义注解失效的小坑和解决方案
业务需求写了个自定义注解,作用域加在方法上的,使用方法如下:class Test { @自定义注解 public void methodA(){ ...... }}写完了切面service和各种环绕方法后,测试了一下,生效了,于是提交,告诉队友们可以用起来,结果有一位伙计说注解不生效了,过去看,确实是加在方法上,不过是下面这样调用的:class Test { public void methodA(){ this.methodB(); } @自定义注解 public voi原创 2021-11-10 19:23:01 · 5591 阅读 · 0 评论 -
关于MybatisPlus雪花ID @TableId(type = IdType.ASSIGN_ID) 注解不生效问题
问题描述:@TableId(type = IdType.ASSIGN_ID) 注解不生效,无法生成雪花ID,我用了XML SQL 和 @Insert注解SQL方式都不行,也查了很多资料,有的说主键列必须是String,有的说必须是Long解决问题:使用了该注解,就必须用MybatisPlus中的BaseMapper自带的Insert方法,也就是一张表针对一个对象做的增删改查。手写的SQL一律不生效!而我的业务刚好没那么好对应关系,就是说我从一个对象会解析出N张表的数据填充,于是只能选择其他方式。方法:原创 2021-10-19 10:41:04 · 13875 阅读 · 0 评论 -
@Value注入失败问题和解决方案
org.springframework.beans.factory.BeanCreationException: Errorcreating bean with name ‘XXXServiceIpml’: Injection ofautowired dependencies failed; nested exception isorg.springframework.beans.factory.BeanCreationException: Could not autowire field: priv原创 2021-08-03 16:19:45 · 3943 阅读 · 0 评论 -
CloseableHttpClient的Get/Post基本使用与小坑
前言:是什么?当用习惯了Spring自带得RestTemplate,就很少用HttpClient接口的方式了,其实CloseableHttpClient也是http网络请求的一种工具包,实现了HttpClient接口,可以让我们方便的设置请求参数和请求头信息,还能让我们决定连接超时时间和socket超时时间,同时它会自己维护一个连接池,可以做连接数限制(默认5)和过期回收策略,防止每次请求都要创建新的connect,非常的方便。(1)准备工作依赖:Gradle:implementation 'or原创 2021-08-03 11:43:19 · 7487 阅读 · 0 评论 -
Git报错remote: error: hook declined to update refs/heads/feature/XXX
详细报错信息如下:Counting objects: 100% (48/48), done.Delta compression using up to 12 threadsCompressing objects: 100% (22/22), done.Writing objects: 100% (26/26), 13.54 KiB | 1.93 MiB/s, done.Total 26 (delta 16), reused 0 (delta 0)remote: Wrong commit auth原创 2021-07-14 17:53:13 · 16050 阅读 · 1 评论 -
ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 2 larger
意思是说你当前集群是单节点,无法创建两个副本.指定的副本数<=集群机器数原创 2020-12-21 18:01:05 · 1859 阅读 · 0 评论 -
Kafka+SpringBoot多线程消费与分区消费踩过的坑
创建Topic的时候,可以置顶分区数和副本数,在kafka/config/sever.properties文件修改num.partitions = ? 即可定义你的默认分区数~在SpringBoot集成中,我们只需要配置:@KafkaListener(topics = “test_topic” ,groupId = “test”,concurrency = “3”) 就可以实现监听消费。https://blog.csdn.net/whiteBearClimb/article/details/109532原创 2020-12-21 17:06:40 · 5629 阅读 · 1 评论 -
Linux软硬链接和软硬限制
先说软硬链接,Linux操作系统一切皆文件,所以内核为每一个创建的文件都有分配Inode索引结点,Inode相当于一个指针,指向文件的具体位置。软连接相当于链式调用,更加灵活,但是不稳定性较高,中间哪个节点被删掉或者改变了文件路径都会导致访问不到目标文件软连接,link 2的链接计数也是1操作系统会重新为B分配Inode指针,让A先指向B,B再指向目标文件demo.txt,这个时候demo的引用计数是1硬链接意思是分配的指针直接指向目标文件的索引节点,多个硬链接共用同一个索引节点,相当于一个快捷原创 2020-12-09 14:49:20 · 1089 阅读 · 0 评论 -
Could not deserialize object type
用RabbitMQ踩的坑,明明生产者用User对象传过去,消费端用User对象接,但是一直报错,本地定义生产者和消费者的话,又没有问题。百思不得其解,后来才知道AMQP协议,传对象的话,必须全类名必须相等,同时工程目录结构必须相等。他才认可是同一对象,不然的话,还是老老实实用String , List , Map 这些传,消费端接到了再转类型出来吧~...原创 2020-12-01 17:13:07 · 2002 阅读 · 1 评论 -
ElasticSearch安装IK分词器
一定要对应版本!一定要对应版本!一定要对应版本!我的ES是 7.9.2 它GitHub上面说Master直接拉下来的可以对应所有7.X!!不需要相信!不要相信!不要相信!老老实实:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.2/elasticsearch-analysis-ik-7.9.2.zip对应自己的版本下载!!记得改版本!!!下载完成后解压打开,看见一堆东西!自己新建一个IK,把刚才原创 2020-11-13 18:46:15 · 199 阅读 · 0 评论 -
Consumer cannot be configured for auto commit for ackMode MANUAL_IMMEDIATE
Kafka不能既开启消费端的自动应答又开启监听模式的自动应答原创 2020-11-06 15:38:08 · 7864 阅读 · 0 评论 -
MacBook安装Zookeeper
本来简单的安装软件我是懒得记录的,但是ZK实在是太坑爹了,以前用旧版本的ZK没遇到的问题在我新电脑上居然出现了。我本地是JDK1.8,然后使用brew安装,安装成功后默认是最新版本,好像是3.6.2这个时候我想都没想就 zkServer.sh start,然后也正常显示 Starting zookeeper … STARTED。结果连接客户端看上去也没问题,但是 ls / 的时候就显示了一个error ,说未连接上 ZK 服务端。按照网上的说法,又关防火墙,又搞配置文件,又说是集群原因,都不能解原创 2020-11-06 10:30:29 · 298 阅读 · 0 评论 -
IDEA设置自定义注释快捷键
(1)打开IDEA,settings,我的是MAC系统,所以是preferences(2)先新增一个模版组,输入自己定义的名字。(3)然后选中模版组,新建一个live template 动态模版(4)(5)添加参数(6)点击Apply应用,然后点击OK(7)在目标方法上输入 / ,就可以看到提示了,选择它,就可以看见一下子出来了(8)撒花,下班...原创 2020-10-24 20:01:36 · 2395 阅读 · 0 评论 -
java.lang.IllegalArgumentException: Circular placeholder reference ‘XX‘ in property definitions
使用Apollo过程中遇到的小坑,记录一下,帮助更多的孩子原创 2020-10-19 16:31:15 · 1323 阅读 · 0 评论 -
Error: could not open `D:\jdk\lib\amd64\jvm.cfg‘
在Windows系统安装JDK1.8出现问题。原因是第一次安装忘了选择自定义目录,安装到了C盘,卸载之后重新安装。解决方法:找到C:\Program Files (x86)\Common Files\Oracle\Java\javapath进入到该目录,删除掉java.exe,javaw.exe,javaws.exe三个文件即可...原创 2020-10-17 14:39:06 · 5326 阅读 · 6 评论 -
SpringBoot中循环依赖问题由浅入深看源码
Spring在启动类启动的时候,就会自动扫描所有加了对应注解的类,然后把它们通过反射,调用默认的构造方法以单例模式创建出来,然后存放在Map容器中。这个是传说中的IOC。但是假设现在有这种情况:@Componentpublic class A { public B b = new B(); public A(){ System.out.println("Bean A 的实例化依赖了 B:"+b); }}@Componentpublic class B原创 2020-10-05 23:42:33 · 630 阅读 · 0 评论 -
Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=
总结小坑的博客:https://blog.csdn.net/whiteBearClimb/article/details/108844581原创 2020-09-28 11:43:47 · 2567 阅读 · 0 评论 -
Channel closed; cannot ack/nack 和 MQ的重复消费/重复发送消息问题(记RabbitMQ使用的几个小坑)
首先上改良后的代码(改良前的代码和基本的配置使用在:RabbitMQ的介绍/安装和SpringBoot集成简单使用(MacBook版)):Application.yml:spring: application: name: cloud-purchase-service rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: 123456Controller:@Autowired原创 2020-09-28 11:09:48 · 13090 阅读 · 13 评论 -
Unable to connect to Command Metric Stream.
学习Cloud搭建HystrixDashboard仪表盘中的小坑。由于Hystrix不更新的,所以2.2版本的Spring对它没做好兼容。要自己在生产者的启动类改造:@SpringBootApplication@EnableEurekaClient@EnableDiscoveryClient@EnableHystrix@EnableCircuitBreakerpublic class CirculateMain { public static void main(String[] ar原创 2020-09-22 14:50:11 · 201 阅读 · 0 评论 -
fallback method wasn‘t found: fallback_functions([class java.lang.XXX])
报错如下:在使用hystrix熔断器的时候出现这个问题,明明指定了对应的fallbackMethod却说找不到,代码如下:原因:fallback_functions与testBreaker的入参必须保持一致!不能说熔断的回调方法不需要参数就不给!解决:...原创 2020-09-22 10:21:23 · 580 阅读 · 0 评论 -
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY‘RE NOT. RENEWALS ARE LESSER
这是Eureka的自我保护机制,是在Server端一定时间内(默认90秒)没有收到Client发送过来的心跳包,便会从服务注册列表中剔除该服务,但是短时间内丢失大量的服务实例心跳(例如30%或者更多的注册服务实例心跳都没接收到),就会自动开启自我保护机制,从而不剔除任何注册服务。原因:为了防止因为网络延迟或者其他网络原因导致的无心跳,从而导致大批量实际可用的健康服务被注册中心剔除,从而导致大批量服务不可用。所以它开启这个机制后,会默认依旧保留一段时间的无心跳服务在注册列表中。禁用自我保护机制:在要关.原创 2020-09-17 16:04:30 · 490 阅读 · 0 评论 -
com.netflix.discovery.shared.transport.TransportException: Retry limit reached; giving up on complet
启动完Eureka注册中心之后启动生产者/消费者出现的这个Bug,打开注册中心也没发现server注册成功。原因:生产者与服务者找不到配置中心,检查yml是否正确配置。1:YML的缩进问题,很容易出这个BUG,多一空格少一空格。2:多个注册中心记得用英文逗号隔开,并且域名和端口号正确填写!...原创 2020-09-17 14:14:55 · 1521 阅读 · 0 评论 -
ERROR: Failed to parse POMs 和 ERROR: Error cloning remote repo ‘origin‘(Jenkins构建Spring项目报错)
有几种可能(1)Jenkins中Maven路径没配好(2)Jenkins中JDK路径没配置好(3)Maven配置文件写错了(4)如果是拉取代码都失败的话那可能是超时了,首次拉取大项目是很慢的,可以调整一下克隆和检出的时间我的是第三种情况,我在保存settings配置文件的时候不小心切换回了中文加多了一个\,通过mvn -v,打开Maven_Home路径下的conf中的settings文件,仔细看的时候才发现,改回来之后就可以成功运行~还有其他两种情况建议去自己检查一下:(1)项目任务—.原创 2020-09-09 16:33:34 · 1491 阅读 · 0 评论 -
centos7查看JDK安装路径
echo $JAVA_HOME原创 2020-09-07 17:06:37 · 1230 阅读 · 0 评论 -
Linux查看Maven本地仓库路径
mvn -version原创 2020-09-07 17:03:29 · 9073 阅读 · 1 评论 -
阿里云Centos7服务器安装Jenkins
前提是事先安装好JDK11或者JDK8,目前Jenkins不支持13,12之类的其他版本,还要记得安装好maven~由于我的代码仓库是Git,所以也安装一下Git接下来安装Jenkins:wget https://pkg.jenkins.io/redhat/jenkins-2.156-1.1.noarch.rpm再走:rpm -ivh jenkins-2.156-1.1.noarch.rpm发现安装成功但是启动却失败了,理由是:Starting Jenkins bash: /usr/bin/j原创 2020-09-07 10:50:21 · 300 阅读 · 0 评论 -
Spring使用JDBC连接数据库:Failed to configure a DataSource: ‘url,Failed to determine a suitable driver class
Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver class今天做实验遇到这个问题。原因就是Spring启动的时候会自动读取properties配置文件里面的DataSource信息,然而我的那些用户名,信原创 2020-08-27 13:49:30 · 480 阅读 · 0 评论 -
MySql索引优化(防止索引失效?从执行计划和执行代价入手,一起看查询优化器会做出怎样的选择)
关于索引的概念和优缺点在:索引的优缺点这里不重复记录这些概念性问题。经常面试问到和用到的索引都有哪些?(1)聚簇索引(聚集索引):一般建表会用一个自增主键做聚簇索引,没有的话MySQL会默认创建,但是这个主键如果更改代价较高,故建表时要考虑自增ID不能频繁update这点。聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分,每张表只能拥有一个聚簇索引。(2) 辅助索引(非聚簇索引):原创 2020-08-24 16:44:10 · 421 阅读 · 0 评论 -
网址为 http://localhost:6666/XX/XX 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。 ERR_UNSAFE_(Postman能访问,Chrome无法调试)
网址为 http://localhost:6666/test/index 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。ERR_UNSAFE_PORT记录今天开发中遇到的一个小坑。如上图所示浏览器调试的时候没办法访问到,明明本地服务已经启动了,然后用Postman却可以成功访问:百思不得其解,后面百度上看了,原来是浏览器的问题,Chrome自己默认觉得一些端口号是不安全的,所以不允许发起请求,直接返回服务无法访问页面。具体的端口有以下:1, // tcpmux7, // echo原创 2020-08-17 13:50:16 · 10500 阅读 · 2 评论 -
接口幂等性问题
(1)什么是接口幂等性问题?概念总结:由于网络延迟或者无响应状态影响了正常业务流程,导致客户端会发起多次重复请求,要求一次请求和多次请求的处理数据的结果要一致。例子:抖音点赞,一个用户在一条视频无论疯狂点击多少次,也只算一次点赞。充值,由于网络延时或者无响应,未能返回充值成功结果,这个时候不允许用户重新支付该订单,不允许重复扣费。退款业务,也是由于网络延时或者无响应,用户对一张订单的多次退款请求不允许重复退款。(能够保证以上业务场景的正常处理,就需要接口具有幂等性)(2)什么样的操作需要幂等性原创 2020-08-06 10:43:42 · 725 阅读 · 0 评论 -
客户端渲染与服务端渲染
本人是前端小白菜,最近在苦学前端,做点自己的学习小总结。欢迎各位大佬纠错。模版引擎原来一开始是后端使用的,后来才慢慢支持前端,听起来很高大上的模版引擎,什么页面渲染,我不喜欢这么专业的难懂的叫法,所以我要自己亲自总结一下。服务端渲染模版引擎不关心内容,只关心自己能识别的模版语法,比如art-template只识别 {{ }} 这种胡须语法块,在读取HTML静态页面的时候,其实就是读取一大串字符串,然后在字符串之间夹着 {{ name }} , {{ if sex !==‘male’ }} , {{原创 2020-07-01 18:24:06 · 265 阅读 · 0 评论 -
Linux服务器(Centos7)安装node
(1)wget https://npm.taobao.org/mirrors/node/v12.18.0/node-v12.18.0.tar.gz (注意,这样下载会是在当前目录,想放哪里提前进去文件夹再执行)(2)tar -xvf node-v12.18.0.tar.gz (解压)(3)cd node-v12.18.0 (进入到当前的node版本的解压目录)(4)sudo yum install gcc gcc-c++(5)./configure(6)make (这步骤等待半小时)(7)s原创 2020-06-23 10:30:31 · 335 阅读 · 0 评论 -
阿里云服务器Nginx代理实现不同端口号访问不同项目(相同IP/域名下)
起因都是因为穷,只有一台服务器,但是又要搭两三个项目跑,域名还没买,现在还在通过IP地址方式访问服务,唉…被迫无奈,开始配置。(1)首先修改nginx.conf,如果不知道在哪里,就nginx -V (大写)就会出现一堆信息,看到conf文件路径就打开就行,接下来vim的事情不用说了。(2) 打开后找到 server {};把原来的注释掉也行,重新写也行,反正我是注释了。(3)写完之后执行:nginx -t。检查是否写对了。successful的话,重启nginx:nginx -s reload原创 2020-06-10 18:21:39 · 1398 阅读 · 0 评论 -
对接腾讯广告平台系统开发(半自动化广告投放系统)
这是我最近刚弄完上线的一套比较有意思的比较大型的系统,因此特意记录一下。腾讯手握大量用户数据(我们注册时的性别/年龄/住址/姓名/学历/消费能力),又有微信QQ公众号朋友圈等等社交媒体,又有大量的游戏,收集了我们这些数据,能提供很精准的广告投放功能。所以他们有一套广告平台。这套东西是收费的广告投放系统,在交了“入场费”后,我们就可以进去填写我们的投放计划,我们的广告落地页,我们的广告图,广告...原创 2020-04-22 17:18:28 · 4888 阅读 · 6 评论 -
公众号重复推送消息的Bug
正常逻辑:在关注公众号后,用关注时间+延后时间来进行定时任务执行推送,在特定的时间段推送特定的消息给微信用户,每个access token的用户同一条消息只会接收到一次。Bug表象:有一部分微信用户接到了重复的消息推送,比如关注后2小时的推送任务是“你好”,连续收到多条“你好”。造成了极大的用户不良体验,但是QA同学和自测试环境怎么都无法复现这个Bug,无从下手排查。使用技术:Node.js的...原创 2020-04-01 10:36:43 · 2556 阅读 · 0 评论 -
数据库中null与''的小坑
这个小坑是昨天遇到的,是一个很粗心的问题,按道理说根本不应该出现。数据库默认是null,所以有个SQL语句查找地址为空的数据,就写成了 and address is null。然后过测试同学,测试直接把地址删掉清空了,没展示出来他就以为功能出问题了,但是我们都知道null != ‘’ ;然后就改呗,神仙改法 加了个 or ,and address is null or address = ‘’...原创 2020-02-27 17:28:55 · 272 阅读 · 0 评论 -
Node读取JSON文件并在for循环中的延时Sleep处理(延时任务清洗数据接口实战演示)
最近接到个需求:清洗订单数据,数据量10W+。实现逻辑很繁琐复杂:循环拿到全部用户的邀请号ID —> 根据邀请号ID循环拿到所有对应的被邀请者ID —> 根据被邀请者ID拿到用户token —> 根据用户token查到全部订单 —> 循环检查全部订单状态(判断是否退费) —> 如果退费就取消对应邀请人的奖励红包 —> 扣除普通现金奖励红包后,重新计算邀请人数...原创 2020-01-21 19:52:32 · 1493 阅读 · 0 评论