SpringCloudFeign中的超时时间配置
背景最近在排查一个关于超时时间的bug,跟踪代码发现了一个以前没注意到的点
https://github.com/spring-cloud/spring-cloud-openfeign/issues/324
问题12345# org.springframework.cloud.openfeign.FeignClientFactoryBean#configureUsingPropertiesif (config.getConnectTimeout() != null && config.getReadTimeout() != null) { builder.options(new Request.Options(config.getConnectTimeout(), config.getReadTimeout()));}
在使用配置文件设置feign-client的时候,只有readTimeout和connectTimeout配置同时设置才会起效,具体的判断逻辑在org.springframework.cloud.open ...
windows上游戏加速器与WSL共存
现象发现在使用加速器之后,WSL相关的应用会出现无法启动的情况,需要重置网络。
参考Github上的解决方案https://github.com/microsoft/WSL/issues/4177#issuecomment-597736482,按照以下步骤即可。
下载NOLSP.exe
www.proxifier.com/tmp/Test20200228/NoLsp.exe
以管理员权限执行以下命令
12345NoLsp.exe "C:\Program Files\WSL\wsl.exe"NoLsp.exe "C:\Program Files\WSL\wslservice.exe"NoLsp.exe "C:\Program Files\WSL\wslhost.exe"NoLsp.exe "C:\Program Files\WSL\wslrelay.exe"taskkill -IM "wslservice.exe" /F
conda环境中共享库找不到问题原因及解决方案
背景今天使用micromamba新建了一个环境来试试latex-ocr+paddle ocr的效果
1micromamba create -n latex-ocr python=3.8 cudatoolkit=10.2 cudnn
环境创建完成之后切换环境并安装依赖
12micromamba activate latex-ocrpip install -r requirements.txt
然后开始跑代码
1python main.py
发现问题在跑代码的时候发现报了一个库没有找到的问题
123456789101112131415161718192021222324252627Error: Can not import paddle core while this file exists: /root/micromamba/envs/latex-ocr/lib/python3.8/site-packages/paddle/fluid/libpaddle.soTraceback (most recent call last): File "main.py", ...
基于语法树对文章中的章节数据进行匹配
背景之前有尝试过使用正则提取一篇文章中的标题信息,并还原其中的层级,碰到以下几个问题:
正则规则复杂,调试不方便
正则对于匹配到标题中的编号信息需要在代码中进行二次处理,处理的步骤也很麻烦,需要考虑多种边界条件
当正则变动时,对应的代码也需要进行变动
突发奇想是否可以使用ANTLR4通过构建语法树的方式来解决这几个问题
构建语法树标题识别的思路常见标题样式可分为以下两种:
(左侧分隔符) 编号 右侧分隔符 正文,比如:
第一章
第一节
1:
2:
左侧分隔符不一定存在,但是右侧分隔符会存在
编号.编号.编号 右侧分隔符 正文,比如:
1
1.1
1.1.1
对于列举式,像带有如下列所述等字眼,通过a 、b、c等序号一条一条列举出来的暂时不在文本考虑范围内。
开始构建语法树123456789101112131415161718192021222324252627282930313233343536373839grammar TitleDetect;//代表整个段落,有3个部分expr:title_begin ? num_seg splite;//代表段落第一部分 ...
hexo将图片发布为网站静态资源
问题目前部分博客页面所引用的图片存储在图床,存在以下几个问题:
每个图片需要单独上传,流程复杂,并且本地和图床的图片需要单独管理
当使用github作为图床时,存在隐私问题,如不小心上传敏感图片时,需要通过push --force等方式覆盖所有提交
当使用阿里云等对象存储需要付费
想要实现的目标
将图片,如png等和html发布为网站内静态资源,从而摆脱图床的限制
与typora编辑器无缝配合
将hexo仓库放在github private项目管理,将编译后的结果放在github.io进行展示
步骤开启hexo自带的文章资源文件夹功能
https://hexo.io/zh-cn/docs/asset-folders.html#%E6%96%87%E7%AB%A0%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E5%A4%B9
当开启这个功能之后,使用 hexo new命令创建新的文章时,_post目录下会生成一个文章的md以及与文章同名的文件夹
12# _config.ymlpost_asset_folder: true
使用 Markdown ...
RabbitMQ通过Docker建立集群
https://github.com/rabbitmq/rabbitmq-cli/pull/445
目前RABBITMQ_ERLANG_COOKIE环境变量已经被弃用,现在有两种方法设置erlang cookie
在容器启动时直接覆盖$HOME/.erlang.cookie文件
使用--erlang-cookie显式覆盖erlang cookie
直接覆盖$HOME/.erlang.cookie文件在容器启动时直接挂载一个$HOME/.erlang.cookie文件到容器中去
创建一个自定义的erlang.cookie文件,注意修改文件的权限
也可以用docker secret
12345# 自定义erlang.cookie文件内容echo '123456' > erlang.cookie# 修改文件所有者为容器内的rabbitmq用户,并且修改读写权限为0600chmod 0400 erlang.cookiechown 999:999 erlang.cookie
创建网桥和容器,并把文件挂载到容器内部去
1234567# 创 ...
如何设置Java应用的时区
最近研究时区问题的时候发现Linux上的Java时区设置简单中带着一些不简单,翻了翻jvm的源码把这部分的逻辑理清楚了
JVM如何获取获取当前时区1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 public static TimeZone getDefault() { return (TimeZone) getDefaultRef().clone();}/*** Returns the reference to the default TimeZone object. This* method doesn't create a clone.*/static TimeZone getDefaultRef() { TimeZone defaultZone = defaultTimeZone; if (defaultZone == null ...
Linux上的TZ环境变量
Linux默认的时区是UTC,所以在创建Docker容器时我们会添加一个环境变量TZ=Asia/Shanghai来指定容器的时区,但是偶然发现直接指定TZ环境变量为Asia/Shanghai后date命令输出的时间依然是UTC时间,于是去研究了一下这个环境变量。
TZ环境变量如何使用TZ是POSIX标准中定义的一个标准环境变量,用来覆盖各种与时间有关的函数的默认时区。在Linux中,基本是GNU C 库即glibc,glibc的TZ环境变量有2种写法:
std offset[dst[offset][,start[/time],end[/time]]],如国内的时区对应为CTS-8
:[filespec],这是最常见的一种,如Asia/Shanghai
对于TZ环境变量的解释为:
如果使用的filespec格式,对于:/开头的,会去读取指定路径的tzfile格式的时区文件来读取时区信息;对于:开头的会去系统时区目录读取时区文件,即/usr/share/zoneinfo/;对于:也没有,只有一个filespec的,比如常见的TZ=Asia/Shanghai,会尝试上面两种T ...
EasyExcel与@Accessors,@Builder与@SuperBuilder
在使用EasyExcel时发现在解析Excel文件时,发现单元格中的数据无法被注入到对象中,随后去EasyExcel项目的issues区发现这是个老问题了:https://github.com/alibaba/easyexcel/issues?q=Accessors
原因分析在接收Excel数据的对象的构造方法上打断点,并查看方法的调用链可以看到这个方法:
123456789101112131415161718192021222324252627282930private Object buildUserModel(Map<Integer, ReadCellData<?>> cellDataMap, ReadSheetHolder readSheetHolder, AnalysisContext context) { ExcelReadHeadProperty excelReadHeadProperty = readSheetHolder.excelReadHeadProperty(); Object resultModel; ...
判断当前环境是否运行在docker中
有时候我们并不希望我们的服务跑在docker容器中,网上搜索了一下,找到了一种判断当前服务是否运行在docker中的方法
方法的原理1cat /proc/1/sched
如果返回的结果为:systemd (1, #threads: 1),则说明环境为Linux;对于使用init的系统pid为1的进程为init
如果是在docker容器内的话,以java服务为例:java (118925, #threads: 236),此时pid为1的进程为java
使用方法(以Java为例)12345678ProcessBuilder pb = new ProcessBuilder();pb.command("cat", "/proc/1/sched");Process start = pb.start();try (Scanner sc = new Scanner(start.getInputStream())){ String pid1 = sc.nextLine(); Pattern pattern = Pattern.co ...