-
Git大小写问题
系统里面修改了文件名称的大小写,但是发现没有效果。然后修改`.git/config`配置`ignorecase=false`,然后大小写能够正常提交了。但是切换分支又出现了问题,提示错误:```Thefollowinguntrackedworkingtreefileswouldbeoverwrittenbycheckout:```最后把上面的配置改了回去分支切换又正常了😂😂😂
Git Windows -
Java1.8证书问题
今天搭建一个项目环境,因为用的时`Java1.8`,最开始用的系统自带的,但是发现编译不了,提示如下错误:```[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile(default-compile)onprojectjshERP-boot:Compilationfailure[ERROR]Nocompilerisprovidedinthisenvironment.PerhapsyouarerunningonaJREratherthanaJDK?```所以就去`openjdk`下载了一个安装包,但是编译又提示错误:```Executiondefault-testofgoalorg.apache.maven.plugins:maven-surefire-plugin:2.20.1:testfailed:Pluginorg.apache.maven.plugins:maven-surefire-plugin:2.20.1oroneofitsdependenciescouldnotberesolve...
Java1.8 -
Linux自动挂载U盘
##安装驱动```yuminstallntfs-3gyuminstallfuse-exfatyuminstallexfat-utils```##添加配置```vim/etc/udev/rules.d/auto-mount.rules####USBKERNEL=="sd[a-z][0-9]",SUBSYSTEM=="block",ACTION=="add",RUN+="/data/usb/auto-mount.sh%k/mnt/usb"KERNEL=="sd[a-z][0-9]",SUBSYSTEM=="block",ACTION=="remove",RUN+="/data/usb/auto-mount.sh%k/mnt/usb"####CFCardKERNEL=="hd[a-z][0-9]",SUBSYSTEM=="block",ACTION=="add",RUN+="/data/usb/auto-mount.sh%k/mnt/cf"KERNEL=="hd[a-z][0-9]",SUBSYSTEM=="block",ACTION=="remove",RUN+="/data/usb/auto-mount.sh%...
Linux U盘自动挂载 -
HikariCP连接池异常
由于项目里面需要连接多个数据库,所以自己配置注入了一个`DataSource`,但是用了一段时间发现提示下面异常:```java.sql.SQLTransientConnectionException:HikariPool-2-Connectionisnotavailable,requesttimedoutafter30000ms.atcom.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)atcom.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)atcom.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)atcom.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)```最开始还以为是数据库的问题,后来发现原来是自己代码有问题,就是获取连接之后,以为是连接池所以...
HikariCP 连接处 -
FFmpeg学习
##FFmpeg安装```#nasmwgethttps://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gztarzxvfnasm-2.14.tar.gzcdnasm-2.14./configure--prefix=/usr/local/nasmmake-j&&makeinstall#环境变量vim/etc/profileexportPATH=$PATH:/usr/local/nasm/binsource/etc/profile#yasmwgethttp://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztarzxvfyasm-1.3.0.tar.gzcdyasm-1.3.0./configure--prefix=/usr/local/yasmmake-j&&makeinstall#环境变量vim/etc/profileexportPATH=$PATH:/usr/local/yasm/binsource/etc/profile#x264gitclon...
FFmpeg -
ES重建索引
今天发现ES索引建错了,很难受记录一下重建过程:```#查看索引结构curlhttp://elastic:elastic@localhost:9200/index_log#新建临时索引curl-XPUThttp://elastic:elastic@localhost:9200/index_log_back#拷贝临时索引curl-XPOST-H"Content-Type:application/json"http://elastic:elastic@localhost:9200/_reindex-d'{"source":{"index":"index_log"},"dest":{"index":"index_log_back"}}'#查询索引状态curlhttp://elastic:elastic@localhost:9200/_cat/indices#删除旧的索引curl-XDELETEhttp://elastic:elastic@localhost:9200/index_log#重启应用建立索引#还原数据curl-XPOST-H"Content-Type:application/json"http://el...
ES -
Linux时间错误
一般情况Linux联网都会通过`ntp`服务自动同步时间,但是最近的机器大部分都是离线系统,导致时间错乱。一开始以为是`coms`电池没电了,后来发现原来就是硬件时间错了,所以我们直接修改硬件时间即可:```#设置系统时间date-s'2022111111:11:11'#查看硬件时间hwclock--show#硬件时间同步系统时间hwclock--systohc#系统时间同步硬件时间hwclock--hctosys```
Linux -
MyBatisPlus解决SQLServer分页问题
最近有个项目需要迁移`SQLServer`,原来使用的`MySQL`,发现有些`SQL`有些问题,特别是分页统计条数。原来使用`MySQL`时子查询里面可以含有`orderby`,但是`SQLServer`不行,提示:```org.springframework.jdbc.UncategorizedSQLException:###Errorqueryingdatabase.Cause:com.microsoft.sqlserver.jdbc.SQLServerException:TheORDERBYclauseisinvalidinviews,inlinefunctions,derivedtables,subqueries,andcommontableexpressions,unlessTOP,OFFSETorFORXMLisalsospecified.```其实默认`MyBatisPlus`是解决了这个问题的,简单语句会去掉排序,复杂语句通过`TOP100PERCENT`解决了,但是还是存在部分有问题。如果语句之中别名存在关键字时就会导致解析不了`SQL`,最好的解决方法就是修改别名。也可以通过将排序字段设...
MyBatisPlus SQLServer -
DBeaver优化
以前一直用的`Navicat`,现在不能用了,改用`DBeaver`了,然后调整了一些设置比较方便。##自动生成别名```首选项->编辑器->SQL编辑器->代码补全->插入表的别名```
DBeaver -
微信公众号获取消息换行问题
今天仔细看了一下微信公众号收到的消息,发现换行符不见了,后来仔细排查了一下才发现自己写的BUG:```//错误代码finalStringBuilderbuilder=newStringBuilder();try(finalBufferedReaderreader=newBufferedReader(newInputStreamReader(request.getInputStream()));){Stringline=null;while((line=reader.readLine())!=null){//注意添加换行builder.append(line);}}```看到没有,`readLine`然后没有拼接换行符所以导致丢失了,改为`builder.append("\r\n").append(line);`即可。
微信公众号 -
SpringBoot获取WebSocket IP地址
在`SpringBoot`中通过`RequestContextHolder.getRequestAttributes()`获取不到`WebSocket`的`request`请求,所以获取客户端真实IP地址需要通过下面这种方法:```/***WebSocket配置器**@authoracgist*/@Slf4jpublicclassWebSocketConfiguratorextendsServerEndpointConfig.Configurator{publicstaticfinalStringCLIENT_IP="CLIENT_IP";@OverridepublicvoidmodifyHandshake(ServerEndpointConfigconfig,HandshakeRequestrequest,HandshakeResponseresponse){StringclientIP=null;Listlist=null;finalMap>headers=request.getHeaders();log.debug("WebSocket头部:{}",headers);if(CollectionUt...
SpringBoot WebSocket IP -
SpringCloud OAuth2国际化失效的问题
这里使用旧的OAuth2模块:```org.springframework.cloudspring-cloud-starter-oauth2```现在需要自定义一个授权`grunt_type`,实现两个组件即可`AuthenticationProvider`和`AbstractTokenGranter`。##白名单通过帐号直接授权Token```@Slf4jpublicclassMobileAuthenticationProviderimplementsAuthenticationProvider{@AutowiredprivateWhiteIPPropertieswhiteIPProperties;@AutowiredprivateUserDetailsServiceuserDetailsService;@OverridepublicAuthenticationauthenticate(Authenticationauthentication)throwsAuthenticationException{finalMobileTokentoken=(MobileToken)authentication;fin...
SpringCloud OAuth2 -
FFmpeg命令
##MKV转MP4```#很慢/usr/local/ffmpeg/bin/ffmpeg-isource.mkv-vcodech264target.mp4/usr/local/ffmpeg/bin/ffmpeg-isource.mkv-ccopytarget.mp4#音频/usr/local/ffmpeg/bin/ffmpeg-isource.mkv-vcodeccopy-acodecaactarget.mp4```>-y默认覆盖
FFmpeg -
ITextPdf
##Maven```com.itextpdfitextpdf${itextpdf.version}com.itextpdfitext-pdfa${itextpdf.version}com.itextpdfitext-xtra${itextpdf.version}org.apache.commonscommons-imaging1.0-alpha3```##添加附件```finalPdfFileSpecificationpdfFileSpecification=PdfFileSpecification.fileEmbedded(pdfWriter,filePath.toFile().getAbsolutePath(),title,null);//中文乱码pdfFileSpecification.setUnicodeFileName(title,true);pdfWriter.addFileAttachment(pdfFileSpecification);```##添加视频```finalPdfFileSpecificationpdfFileSpecification=PdfFileSpecification.f...
ITextPdf -
使用commons-net中的FTPClient总结
以前没有仔细研究还有测试,最近偶然升级了`commons-net`包后发现居然不能连接不上FTP,然后经过多方测试发现几个问题。##命令分隔`2.2`命令换行用的是`\n`,之后`3.0`改用了`CRLFLineReader`,使用的是`\r\n`,所有部分FTPServer会出现登陆不上问题。##超时问题```ftp.setDataTimeout(5000);ftp.setDefaultTimeout(5000);ftp.setConnectTimeout(5000);```超时时间必须设置,否者将会永久阻塞。
commons-net FTPClient -
keytool命令
##相关命令```#生成CA根证书jkskeytool-genkeypair-keyalgRSA-dname"CN=ca.acgist.com,OU=acgist,O=acgist,L=GZ,ST=GD,C=CN"-aliasca-validity3650-extbc:c-keystoreca.jks-keypass123456-storepass123456#导出ca证书keytool-exportcert-keystoreca.jks-storepass123456-aliasca-rfc-fileca.cer#生成server证书keytool-genkeypair-keyalgRSA-dname"CN=www.acgist.com,OU=acgist,O=acgist,L=GZ,ST=GD,C=CN"-aliasserver-validity3650-extku:c=dig,keyE-exteku=serverAuth-extSAN=dns:www.acgist.com,ip:127.0.0.1-keystoreserver.jks-keypass123456-storepass123456#生成se...
keytool 证书 -
Neo4j插入内存溢出
默认使用如下查询:```PortNodefindByPortId(LongportId);```但是录入一定数量就开始内存溢出了,开始找了很久没有找到原因。后来看了`debug`日志才发现,原来这个查询会级联查询所有关系,成环的关系就会导致内存溢出。旧版的`API`存在`@Depth`注解可以指定查询的深度,但是新版的没有这个注解了,所以只能改成下面这样:```@Query("MATCH(a:PortNode{portId:$portId})-[r:PortRelationship]-(z:PortNode)RETURNa,COLLECT(r),COLLECT(z)")PortNodefindByPortId(LongportId);```然后这里还有一个问题,就是`save`的时候,后面的节点关系会丢失,所以最后我改成了使用语句插入关系:```@Query("MATCH(a:PortNode{portId:$aPortId})WITHa"+"MATCH(z:PortNode{portId:$zPortId})"+"CREATE(a)-[r:PortRelationship]->(z)")```如果不要...
Neo4j java.lang.OutOfMemoryError -
记录一次SpringMVC请求一次返回两次数据错误
昨天改了很多代码,最后发现发送一次请求,返回数据的时候居然返回了两份。最后DEBUG看了下堆栈信息发现,原来是过滤器执行了两次`doFilter`:```if(LOGIN_MATCHER.matches(request)){filterChain.doFilter(request,response);}elseif(MATCHER.matches(request)){}filterChain.doFilter(request,response);```改为下面这样就没问题了:```if(LOGIN_MATCHER.matches(request)){filterChain.doFilter(request,response);}elseif(MATCHER.matches(request)){}else{filterChain.doFilter(request,response);}```这个问题真的粗心,而且很难发现问题。
SpringMVC -
SpringBoot多数据库事务管理
如果SpringBoot同时加入多个数据源,不能正确获取事务管理器,可以使用下面方法处理:```/***配置事务**配置JDBC事务事务为默认的事务,Neo4j事务需要手动指定`@Transactional(transactionManager="neo4jTransactionManager")`。**@authoracgist*/@Configuration(proxyBeanMethods=false)@Import({DataSourceAutoConfiguration.class,MybatisPlusAutoConfiguration.class})//@Import({DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class,MybatisPlusAutoConfiguration.class})publicclassTransactionConfiguration{@Bean("transactionManager")@PrimarypublicDataSourceTransac...
SpringBoot TransactionManager -
SpringBoot配置转义
SpringBoot配置冒号等等转义:```acgist:cache:"[password::fail]":1```还有一个问题就是值里面如果出现`${value:default}`这种字符串,默认会被当成表达式处理掉,如果没有定义`value`配置,就会变成默认值`default`,这个时候我们就需要这样配置:```value:${$:$}{value:default}```
SpringBoot