- 博客(352)
- 资源 (59)
- 收藏
- 关注
原创 nominatim部署OSM离线地图
(三)、第一次需要初始化表,需要指定外部的PG连接信息,启动之后,登录docker 容器,修改start.sh文件信息,注释掉跟PG有关的信息,之后docker commit ID mediagis/xxx-nominatim:4.4,之后的启动使用这个镜像,否则每次docker run 都会删除数据库;1、这种方式并没有剥离内部的PG库,实际上还是会在容器里面创建一个PG库,只是在执行sql,导入等过程的时候,会使用覆盖的PG参数连接到远端的PG库,容器中的PG库没有数据,所以占用空间会很小;
2024-09-30 17:56:41
1316
原创 一次tcpdump抓包过程
此外,tcpdump还支持使用逻辑运算符(如and、or、not)和条件(如host、port、net等)来构建复杂的过滤表达式,以便精确地捕获所需的数据包2。例如,要在文件中保存捕获的流量,可以使用tcpdump -w packets.pcap1。-v:输出一个稍微详细的信息,例如在IP包中可以包括TTL和服务类型的信息。例如,要限制捕获包的大小为100字节,可以使用tcpdump -s 1001。-e:在输出行中打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议23。
2024-06-27 18:29:18
323
原创 获取Git提交信息,发版是需要Git的tag或者commitId
<build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <includes>
2024-06-19 19:26:40
593
原创 一次丢失源代码只有jar的反编译过程
2、上传反编译工具到Linux,上传需要反编译的jar到指定路径;5、替换大部分公用逻辑,根据实际情况替换。4、生成代码后,放入项目中。
2024-04-02 19:24:50
342
原创 一次项目漏洞升级的过程(JDK8升级到JDK17)
1、spring-web需要升级到6.x,spring-boot需要升级到3.x,JDK需要升级到JDK17(Oracle JDK17三年免费授权从2024年9月,所以需要使用OpenJDK17),Java EE转Jakarta;因为使用了OpenJdk17,cglib代理在2019年8月停止更新,OpenJDK17是2019年9月出来的,也不支持需要修改;第二步、扫描后的漏洞存在镜像漏洞,中间件漏洞和代码jar包漏洞;第三步、区分对外和不对外的服务,先更新对外服务;第二步、更新IDEA的JDK配置。
2024-01-19 11:43:43
1345
原创 对于并发修改同一条数据的处理方案
(一)、直接拼接唯一的条件作为字符串,判断两条数据是一条数据的条件,把它放入常量池(intern方法),之后对常量池字符串加锁,保证同一条数据只会一个一个修改;批量消费Kafka数据,一个批次针对同一条数据做新增和修改操作,当前一条数据还未更新完成,后一条数据也同步修改,数据就存在异常;(一)、使用Redis中间件加锁,同一条数据先阻塞,但这种方式的Redis锁也需要加在判断两条数据属于同一条数据的查询条件上;(二)、发送消息到同一个topic,使用线程池数组队列阻塞同一条修改的数据。
2023-12-06 17:35:09
575
原创 一次解决IDEA编译运行不报错,但代码报红线,提示工具也出现不了代码的问题
猜测意思是这个文件使用Kotlin编译的文件,当前IDE用的Kotlin编译器版本是1.4.0,但这个文件编译器用的是1.6.0,说明Kotlin编译器版本太低了;项目引用了okhttp3.5.0版本,之后需要升级到okhttp4.10.0,为了提高性能;/ 此类文件是使用不同版本的 Kotlin 编译器编译的,无法反编译。解决,全盘搜索,已经能在Classes里面找到了。但可以正常编译,运行,说明JDK是支持的;点开文件,没有任何类型,只有一句提示。全盘搜索,找到对应的类;升级Kotlin编译器。
2023-09-06 09:51:02
4821
转载 Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
上边是 spring-boot-actuator 集成了 Micrometer 来提供的默认监控项,覆盖 JVM 各个层间的监控,配合 Grafana Dashboard 模板基本可以满足我们日常对 Java 应用的监控。当然,它也支持自定义监控指标,实现各个方面的监控,例如统计访问某一个 API 接口的请求数,统计实时在线人数、统计实时接口响应时间等功能,而这些都可以通过使用上边的四种计量器来实现。接下来,来演示下如何自定义监控指标并展示到 Grafana 上。
2023-09-01 15:02:08
4259
1
转载 FLV封装格式介绍及解析
FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。目前主流的视频网站基本都支持FLV。采用FLV格式封装的文件后缀为.flv。FLV封装格式是由一个文件头(flie header)和 文件体(file Body)组成。其中,FLV body由一对对的(Previous Tag Size字段 + tag)组成。Previous Tag Size字段排列在Tag之前,占用4个字节。
2023-08-03 15:50:04
285
原创 JAVA位运算代码
10 + (-11) = 1111 0110 + 1111 0101 = 1(舍弃) 1110 1011 符号位从 1->1 不溢出。-101 + (-10) = 1001 1011 + 1111 0110 = 1(舍弃) 1001 0001 符号位从 1->1 不溢出。-101+(-102) = 1001 1011 + 1001 1010 = 1(舍弃) 0011 0101 符号位从 1->0 溢出。同样可以推测出,如果两个正数的补码(原码)相加,如果符号位变为1,则表示计算结果溢出,需要进位;
2023-07-20 14:54:56
352
原创 怎么做到Kafka顺序读写
SQL语句需要顺序执行,因为不顺序执行,比如先新增了一条数据,才有可能修改这条数据,假如先执行修改操作,后执行新增操作,那这个数据就错了。
2023-07-15 12:04:50
1403
原创 JAVA堆外内存分析
1、定义了DirectByteBuffer的操作byte的都是申请了堆外内存,申请的堆外内存需要手动回收,重置最大可用堆外内存大小;2、堆外内存泄露并不会提现在JVM内存使用上,排查方式可以通过JConsole检测堆外内存是否一直增长,之后查询系统中使用了DirectByteBuffer的地方;
2023-07-10 14:41:27
4965
原创 JAVA线程池分析实现
RUNNING:运行状态SHUTDOWN:线程池关闭,不在接收新任务,但线程池队列中的任务还是会执行完成STOP:线程池停止,不接受新任务,且尝试终止线程池队列汇总的任务 TIDYING:线程池队列中所有的任务已经完成TERMINATED:线程池状态为终止。
2023-07-06 12:00:53
538
原创 一次阿里云Schedulerx换成Spring定时任务的过程
* 手动定时任务处理调用阿里云定时器 {@link com.suyun.vehicle.conf.SpringScheduleConfig}*
2023-07-05 19:52:16
1332
转载 Netty基本使用
1、使用Netty自带的解码器2.自定义序列化规则在 Java 中自带的有实现 Serializable 接口来实现序列化,但由于它性能、安全性等原因一般情况下是不会被使用到的。通常情况下,我们使用Protostuff、Hessian2、json 序列方式比较多,另外还有一些序列化性能非常好的序列化方式也是很好的选择: 专门针对Java 语言的:Kryo,FST 等等 跨语言的:Protostuff(基于 protobuf。
2023-07-03 18:42:48
1561
转载 Kafka详解
高可用:多副本机制高并发:网络架构设计 三层架构:多selector -> 多线程 -> 队列的设计(NIO)把数据先写入到OS Cache 写到磁盘上面是顺序写,性能很高,接近内存写读数据:根据稀疏索引,快速定位到要消费的数据,零拷贝机制,减少数据的拷贝,减少了应用程序与操作系统上下文切换KafkaManager — 页面管理工具没有设置key我们的消息就会被轮训的发送到不同的分区。设置了keykafka自带的分区器,会根据key计算出来一个hash值,这个hash值会对应某一个分区。
2023-07-03 15:20:05
287
原创 Redis过期策略
做法:对键设置过期时间时,同步设置一个定时器,当达到定时时间时间时,立即删除键;优点:省内存,立即删除,释放内存;缺点:CPU使用率高,容易造成系统卡顿;Redis并不推荐的方式;
2023-06-29 15:33:36
2662
转载 MYSQL索引的使用
索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下:从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引从应用层次划分:普通索引、唯一索引、主键索引、复合索引从索引键值类型划分:主键索引、辅助索引(二级索引)从数据存储和索引键值逻辑关系划分:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)
2023-06-26 11:48:26
2727
3
原创 Mybatis是怎么生效的
三、Spring初始化MapperFactoryBean对象,它继承了SqlSessionDaoSupport,上面会把SqlSessionFactory对象注入进来,实现了FactoryBean接口的Bean,在注入对象的时候Spring是通过getObject()获取对象注入的,注入的并不一定是对象本身。实现里InitializingBean,在Bean初始化时,会调用afterPropertiesSet钩子方法。
2023-06-16 19:06:09
252
转载 Kafka消息丢失
kafka为了加快持久化消息的性能,把性能较好的follower组成一个ISR列表(in-sync replica),把性能较差的follower组成一个OSR列表(out-of-sync replica),ISR+OSR=AR(assigned repllicas)。如果还不成功怎么办?发送消息和消费消息都在leader上面,follower负责定时从leader上面拉取消息,只有follower从leader上面把这条消息拉取回来,才算生产者发送消息成功。我们只有获取到发送结果,才能确保消息发送成功。
2023-06-16 10:08:17
698
原创 Collectors.toMap 根据(key和value排序)Stream的使用
需求:用户想知道每个车队在一段时间内跑里程最多的5辆车,先获取了这一段时间所有的车辆数据,首先排序,之后分组(先分组后排序也一样),之后取前5条,在把他们放入一个Map中,Map需要根据里程排序。根据某个字段分组,之后取每组的前5(可以设置)条,之后返回五个对象的某个属性,根据Value排序(取前5条的时候已经排序,可以使用链表接收)根据某个字段分组,之后取每组的前5(可以设置)条,之后返回五个对象的某个属性,根据Key排序。
2023-06-13 09:45:52
1057
原创 记一次Springboot+spring-boot-devtools+Kafak反序列化失败的问题
2、反序列化的接收值使用org.apache.kafka.common.utils.Bytes(kafka-clients Jar里面)1、借助Kafka-client的Bytes对象,定义kafka-clients使用RestClassLoader加载。1、直接使用byte数组接收,直接反序列化byte数组(byte是基本类型,byte数组是引用类型)这样Kafak的bytes数组都使用RestClassLoader加载,对象反序列化就可以了。序列化反序列化都使用RestClassLoader。
2023-06-13 09:02:04
222
原创 记一次binlog恢复Mysql某张表数据的过程
7、把binlog文件转为sql文件(需要转换几个,修改binlog文件名和生成的sql名称就可以了)2、要用户不能操作(如果不能停止,可以新建一个库,所有的binlog执行操作在新库执行)。8、继续新开一个窗口,进入刚刚生成SQL的文件目录下。6、新开一个窗口,找到 mysqlbinlog所在。登录成功后,通过source命令,加载sql文件。可以看出,文件主要更新所在文件是175.sql。10、使用mysql的root用户登录。14、同步刚刚导出的表数据;12、导出这张表的数据。binlog文件所在。
2023-06-06 20:06:05
2713
原创 JDK11+mybatis-plus+shardingsphere分库分表
打开org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration类,断点在,查看shardingRule规则是否正常加载,之后看代码是否正常启动。3、获取指定的数据源后,会包装获取对应org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection。2、根据@DS的值获取数据源,数据源就是配置的name,会作为map的key。
2023-06-05 15:55:11
959
原创 VUE代码批量格式化
5、开始查找格式化vue文件,点击需要格式化的vue文件夹 views,之后右键,点击Start Format Files: This Folder。2、安装插件 Vetur和Format Files。1、下载安装Visual Studio Code。6、选择完文件之后,点击Do it,开始格式化。复制下面的配置信息,覆盖原始配置,保存配置。3、配置格式化,点击右下角设置。修改之后的文件会变换颜色。4、自定义格式化规则。
2023-06-01 09:06:12
1744
1
原创 记一次处理Spring-boot使用dubbo类型转换失败的问题
3、使用Bootstrap或Extension的ClassLoader做返回,这样也能正常返回,比如用Object接收,但对Dubbo返回的对象,使用强转,也存在加载器不同,不能强转的问题,之后就需要借助反射,反射针对的是属性和方法,不同的加载器也是可以处理的,这样就处理了一个,但每个地方都需要反射,就提炼出一个公共的类处理。第三步、查看报错信息,同一个类型转换失败,但后面加了个RestartClassLoader,没有引入自己实现过这个ClassLoader啊,一般用的是。
2023-05-29 09:47:50
925
原创 记一次Redis消息订阅序列化和反序列化的错误
使用约定优于配置,默认Application文件都放于com.book文件夹下,所有的代码和自定义包都放于com.book.**下面,所以不存在扫描不到;7、判断是否是配置读取优先级的问题,把配置信息放于bootstrap配置文件,bootstrap优先级高于application,发现可以正常读取,问题解决;2、Redis的Config配置了JSON序列化,覆盖JDK序列化,便于中文查看,配置文件使用ConditionalOnProperty断言;1、使用的SpringBoot;2、提高配置读取优先级;
2023-05-26 08:53:49
1080
编译的spark-hive_2.11-2.3.0和 spark-hive-thriftserver_2.11-2.3.0.jar
2022-06-23
IDURABILITY.html
2021-09-07
YAPI插件crossRequest.zip
2020-09-18
mybatis-plus自定义模板.zip
2020-05-28
CANDBC工具包
2019-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人