自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

赶路人儿

改变世界的是这么一群人,他们寻找梦想中的乐园,当发现找不到时,就亲手创造了她...

  • 博客(2074)
  • 资源 (57)
  • 收藏
  • 关注

原创 项目升级到jdk21后 SpringBoot相关组件的适配

了解到jdk21是一个LTS版本,可以稳定支持协程的功能。经过调研,将目前线上的jdk8升级到21,使用协程提升并发性能。目前系统使用springBoot 2.0.3.RELEASE,并且引入了mybatis-spring-boot-starter、spring-boot-starter-data-redis、jasypt-spring-boot-starter。记录一下升级过程中遇到的问题和解决方法。

2024-04-16 22:04:31 924

原创 java中的尾递归

在计算机学里,尾调用是指一个函数里的最后一个动作是返回一个函数的调用结果的情形,即最后一步新调用的返回值直接被当前函数的返回结果。尾递归和一般的递归的不同点在对内存的占用,普通递归每次递归调用时回创建新的stack,从而stack膨胀,随着递归的结束而后收缩。观察到,tailrecsum(x, y)中形式变量y的实际变量值是不断更新的,对比普通递归就很清楚,后者每个recsum()调用中y值不变,仅在层级上加深。注:上面的第二种仅为了说明尾递归,实际上python的编译器时不支持尾递归优化的。

2024-04-09 20:56:09 1015

原创 Hbase java客户端调优——Connections

本文将介绍以下java Hbase 客户端三个配置:不要使用单个Put,而是批量List如何控制每个 RegionServer 的 HBase 客户端连接数/Socket 数使用通用连接并共享池

2024-03-20 15:51:19 1012

原创 小数在java中默认使用双精度(double)表示的问题排查

默认小数在java中使用双精度表示,所以在反序列化或者类型转换时,需要注意,否则会报错:java.lang.Double cannot be cast to java.lang.Float

2024-02-29 16:13:53 1133 1

原创 linux SSH互信不生效问题排查

日志中很清楚的反应了因为/root目录权限的问题,导致互信失败。后来发现172.172.230.210 上的/root 目录的权限为777,修改为700或者750问题解决。根据日志可以看到,app用户被锁。发现仍然需要输入密码。确保SELINUX=disabled。

2024-02-01 21:27:54 438

原创 eclipse安装astview插件

astview插件可以展示java源码经过词法、语法分析后生成的抽象语法树(AST)。本文介绍如何手工安装eclipse的astview插件。

2023-12-18 16:04:03 519

原创 yumdownloader介绍和使用示例

有时候公司的服务器外网权限控制的很严,不允许连接到外网。如果安装系统离线源之外的工具使用yum会直接报错;如果使用离线rpm安装的话,有很多依赖需要下载安装。yumdownloader神器的出现完美的解决这这个问题

2023-12-06 21:35:32 1265

转载 内存对齐(C/C++)

内存对齐是操作系统为了可以让 CPU 高效读取内存中的数据采用的一种策略,它使得数据在内存中都按一定的规则排列。本篇来解释一下内存对齐。

2023-11-01 14:47:41 681

转载 理解Go语言struct的内存对齐

上图中右边是内存以8字节形式对齐,变量s中的f1占了1个字节,紧跟后边填充了7字节的padding,使后边的f2按照8字节对齐,在这种情况下s变量的带下为16字节。从这个例子可以看出,内存对齐减少了内存的读取次数,性能将更好,同时由于内存对齐保障了读取f2是单次读取,使得更易实现变量读取的原子性。字长是CPU的主要技术指标之一,指的是CPU一次能并行处理的二进制位数,通常CPU的字长为4字节(32位)、8字节(64位)。当我们输出变量s1和s2的Size时,S1的长度是6字节,S2的长度是是4字节。

2023-10-31 20:20:09 386

原创 mac上安装mysql

mac系统上安装、配置mysql服务

2023-10-12 23:49:07 1063

原创 基于http的protobuf服务实现

本文介绍在http协议中,使用protobuf格式进行通信。借助了springboot框架,指定http的Content-Type值为application/x-protobuf

2023-10-11 17:10:19 1711

原创 linux 防火墙iptables

iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用;现在又叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。

2023-09-25 11:30:59 256

原创 网络知识——局域网和交换机

介绍了局域网内通信的原理,涉及到DHCP获取ip、DNS、网关等信息;ARP协议获取局域网内ip地址;以及如何通过路由表进行转发,访问不通网段的机器

2023-09-22 18:01:46 2795

原创 Apache BeanUtils工具介绍

beanutils,顾名思义,是java bean的一个工具类,可以帮助我们方便的读取(get)和设置(set)bean属性值、动态定义和访问bean属性;细心的话,会发现其实JDK已经提供了一个java.beans包,同样可以实现以上功能,只不过使用起来比较麻烦,所以诞生了apache commons beanutils;看源码就知道,其实apache commons beanutils就是基于jdk的java.beans包实现的。

2023-08-22 10:38:24 1259

原创 在shell脚本中使用通配符(*)删除、移动某个目录

先说结论:在shell脚本中使用通配符(*)删除、移动某个目录,需要将拼接好的路径保存在一个变量中,然后在rm或者mv命令后面跟这个变量。如果在rm或mv命令后面进行拼接,则不生效。从打印中可以看到,如果将拼接的路径保存到一个变量后,打印出来的是将通配符(*)展开后的结果,所以对于rm或者mv命令会生效。如果在rm或mv命令后拼接则rm、mv命令不生效。

2023-08-04 00:21:46 685 1

原创 java(二维)数组知识点

java二维数组创建、初始化,以及如何将list转成二维数组

2023-07-31 23:23:53 763

原创 SWIG介绍和使用

SWIG 是一种软件开发工具,可将用 C 和 C++ 编写的程序与各种高级编程语言连接起来。SWIG 与不同类型的目标语言一起使用,包括常见的脚本语言,如 Javascript、Perl、PHP、Python、Tcl 和 Ruby。支持的语言列表还包括非脚本语言,例如 C#、D、Go 语言、Java,包括 Android、Lua、OCaml、Octave、Scilab 和 R。

2023-06-14 21:43:04 1744

原创 GMP库使用以及java中的BigInteger和BigDecimal

GMP library全称是GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库。在网络安全技术领域中各种加密算法的软件实现始终有一个共同话题是如何在普通的PC机上实现大数运算。普通的PC机内部字长最多时32位或64位,但各种加密算法中为了达到一定安全强度,都要求在128位、512位或1024位字长下进行加减乘除等数学运算,这叫做“大数运算在此前提下,如何在普通的PC机上高效快速的实现大数运算成为加密算法在普通PC机上软件实现的重要问题。

2023-06-07 00:10:35 1304

原创 This account is currently not available.

【代码】This account is currently not available.

2023-06-01 10:55:35 664

原创 java读取zip/jar包中的文件

由于zip和jar结构时一致的,所以ZipFile和JarFile,ZipInputStream和JarInputStream的使用方法是一样的。需要说明的一点是,由于zip包的这种特殊结构,默认ZipInputStream中是不包含数据的,只有在调用getNextEntry方法后,才回把对应的entry(zip包中的一个文件)内容写入到ZipInputStream中。事实上,jar 文件使用与 zip 文件相同的存档和压缩技术,所以 jar 文件实际上是一种特定类型的 zip 文件。

2023-05-31 14:19:20 6990 1

原创 mysql JDBC的三种查询(普通、流式、游标)

在 TCP 中发送端和接收端**可以是客户端/服务端,也可以是服务器/客户端**,通信的双方在任意时刻既可以是接收数据也可以是发送数据(全双工)。由于MySQL方不知道客户端什么时候将数据消费完,而自身的对应表可能会有DML写入操作,此时MySQL需要建立一个临时空间来存放需要拿走的数据。在执行st.executeQuery()时,jdbc驱动会通过connection对象和mysql服务器建立TCP连接,同时在这个链接通道中发送sql命令,并接受返回。(第一次调用的正常,第二次的抛出异常)。

2023-05-17 15:32:12 6256 9

原创 Mysql在大表中删除大量数据的优化

假设有一个表有3000万条记录,需要在业务不停止的情况下删除其中status=1的所有记录,差不多有600万条。如果直接使用delete from tab_name where status=1;会触发lock wait timeout exceed的错误,因为这条语句涉及的记录数太多。执行过程DDL语句,删除整张表和表结构,以及表的索引、约束和触发器。DDL语句,只删除表数据,表的结构、索引、约束等会被保留。DML语句,删除表中数据回滚不可不可可以事务。

2023-04-25 11:14:29 3520

转载 通过openjdk源码分析ObjectMonitor底层实现

在我们分析synchronized关键字底层信息时,其中谈到了Monitor对象,它是由C++来实现的,那,到底它长啥样呢?其中.hpp是c++的头文件,其具体的实现是以cpp中,接下来就得打开它们来看我们想了解的东东了,是不是很刺激?继续来看其他的一个成员变量。然后点击左侧browse。

2023-04-12 00:06:51 451

原创 查看docker容器的启动参数

查看docker容器启动参数,主要介绍了runlike命令和get_command_4_run_container

2023-04-04 15:35:09 1061

转载 springboot设置traceID

本文介绍如何基于 spring boot 获取、传递、使用一次会话的全局参数,并在所有链路日志中打印。

2023-04-03 10:50:41 3103

原创 Mysql Nested-Loop Join算法和MRR

BNL 主要针对被驱动表关联字段无索引时的优化,(当被驱动表没有索引或索引失效时,无法是用INLJ,mysql就会通过BNL进行优化)如果在EXPLAIN输出中,当Extra值包含Using join buffer(Block Nested Loop)且type值为ALL,index或range时,表示使用BNL;也说明被驱动表的表关联字段缺少索引或索引失效无法有效利用索引。BNL 算法是对 SNLJ 算法的优化,并且可将该算法 BNL 提升至 INLJ 进行优化。

2023-03-03 11:06:03 1266

翻译 说说Java中的几种JVM级别的锁

根据摩尔定律,计算机的性能将继续飙升,因为计算基础设施的相关成本将随着时间的推移继续下降。具体到CPU,已经从简单的单核系统发展到多核系统,缓存性能也有了飞跃性的提升。随着多核 CPU 的出现,计算机现在可以同时运行多个任务。并且,随着硬件开发的多项提升带来的显着效率提升,软件层面的多线程编程已经成为必然趋势。然而,多线程编程也带来了一些数据安全问题。随着所有这些趋势的发展,业界已经认识到,当存在安全漏洞时,也必须有相应的防护措施。顺应这种趋势,虚拟“锁”被发明出来,以解决线程的安全问题。

2023-02-23 15:24:50 1068

原创 fasterxml jackson反序列化时对于非静态内部类报错

java中通常使用jackson、fastjson两个库来处理json。后者的api使用起来比较方便,但是安全漏洞太多了。对于嵌套结构,定义了一个包含内部类的java类来接收,如果这个复杂结构是一个数组形式,那么反序列化时会报上面错误。

2023-02-16 20:52:48 1465

翻译 java gc日志文件ROTATING

gc日志是优化应用程序性能和解决内存问题的重要工具。通过传递“-Xloggc”JVM 参数,可以在特定文件路径中生成垃圾收集日志。使用这种方法配置gc文件:每当应用程序重新启动时,旧的 GC 日志文件将被新的 GC 日志文件覆盖,因为文件路径相同(即 /home/GCEASY/gc.log)。因此,您将无法分析在重新启动应用程序之前存在的旧 GC 日志。

2023-02-06 23:54:57 1184

翻译 JVM in a Container:不同jdk版本在容器中的表现

在 Java 8u131 和 Java 9 之前,JVM 无法识别容器设置的内存或 CPU 限制。 Java 8u131 和 Java 9是第一个实现该功能的一个实验性特性,并且有bug;但在 Java 10 中,内存限制是自动识别和强制执行的,然后将此功能反向移植到 Java-8u191。

2023-02-01 12:31:58 1225

原创 java伪随机数生成器

随机数分为:伪随机数和真随机数。后者具有:随机性、不可预测性、不重复性的特点,一般来说都是通过自然界物理信息来生成,例如使用硬件采集器手机温度等信息。伪随机数分为:弱伪随机数和强伪随机数,后者可以用于密码学领域。本文重点介绍在java下的伪随机数生成方法,包括:Random、ThreadLocalRandom和SecureRandom。

2023-01-15 22:33:13 2090 2

原创 http协议之Range

http协议中可能会遇到:请求取消或数据传输中断,这时客户端已经收到了部分数据,后面再请求时最好能请求剩余部分(断点续传);或者,对于某个较大的文件,能够支持客户端多线程分片下载...以上在我们平时应用中已经有很多产品支持了,其中原理就和http协议中的Range有关。HTTP协议博大精深,设计有很多巧妙的地方,Range也许就是一处吧。

2023-01-12 19:25:38 6710 1

转载 从表到里学习JVM实现

自学jvm底层原理,来自国内早起R神的博客。其实任何高端技术,都不是别人教出来的,一定是兴趣或来自内心的某种力量驱使自己不断向上研究的。

2023-01-09 10:45:28 426

原创 ESNI 和ECH的前世今生

ECH 是将会是 TLS 的又一次重大升级,这一次使得每次连接除了其发起者和接收者之外,没有人能够知道访问的是什么,有助于进一步保护用户隐私。尽管 ECH 还是一项进行中的工作,但随着工作的继续,显然我们离更安全的互联网又近了一步。ESNI 与 ECH 的前世今生 - ZingLix Blog以下是Good-bye ESNI, hello ECH!译文现代 Internet 上的大多数通信都是加密的,以确保其内容仅对端点(即客户端和服务器)是可理解的。

2023-01-05 22:16:30 5705

原创 TLS 1.3 带来了什么?

简单来说,TLS 1.3 又是一次人类对安全性和 RTT 的斗争。实现了前向安全,只留下目前安全的算法,连接所需的耗时进一步降低至 1-RTT,特殊情况下可以实现 0-RTT。

2023-01-03 21:56:04 1345

原创 Java7的异常处理新特性addSuppressed()方法

学习使用Java7新语法try-with-resources,在查看编译文件时,接触到addSuppressed()方法。记录一下使用方式。

2022-12-26 20:43:15 740 1

转载 RST及java socket关闭后读写的各种异常

方法关闭了Socket,虽然TCP规定半关闭状态下B仍然可以接收数据,但close动作关闭了该socket上的任何数据操作,如果此时A继续write,B将返回RST,A的该次write无法立即通知应用层(因为write仅把数据写入发送缓冲区),只会把状态保存在tcp协议栈内,下次write时才会抛出。都关闭,已经排队等待发送的数据会被尝试发送,最后(默认)发送FIN。,它会发送FIN但依然可以读取数据;后,无论是发送FIN/RST关闭的,之后再读写均会抛。发送FIN,4次挥手,连接关闭,一切都很和谐。

2022-12-21 21:27:59 544

原创 SO_REUSEPORT socket选项介绍以及在nginx上的配置

SO_REUSEPORT是socket的一个选项:1)开启内核的网络链接分配负载均衡:允许多个进程/线程 bind/listen相同的IP/PORT,提升了新链接的分配性能。2)在内核级解决了惊群问题:每个进程可以 bind/listen相同的IP/PORT,相当于每个进程拥有独立的 listen socket 的完全队列,避免了共享 listen socket 的资源争抢,提升了并发的吞吐。内核通过哈希算法,将新链接相对均衡地分配到各个开启了 reuseport 属性的的进程。

2022-12-15 18:32:39 2096

原创 Tomcat的IO模型

tomcat的IO模型介绍,以及每种IO模型的原理

2022-12-07 23:30:49 1161

原创 java字符编码总结

本文介绍了计算机字符集和字符编码的历史演进。以及java中使用utf-16作为编码的介绍

2022-12-02 21:27:13 5710 1

jdt.astview-1.4

eclipse的astview插件

2023-12-18

macOS eclipse Launcher

在windoes平台上,双击桌面eclipse的图标就可以启动多个eclipse示例,打开不同的workspace进行开发。在mac上,eclipse默认只能打开一个workspace,通过该插件支持在eclipse界面上打开多个workspace

2023-12-18

nmon analyser

nmon可以采集服务器 cpu 内存等指标,通过nmon analyser来分析采集指标,生成直观的直方图。

2022-01-26

parquet-tools-1.6.0rc3.zip

parquet-tools-1.6.0rc3-SNAPSHOT.jar是一个查看parquet数据文件schema的工具,github地址:https://github.com/apache/parquet-mr/tree/master/parquet-tools?spm=5176.doc52798.2.6.H3s2kL 下载后mvn编译。附件是编译好的文件。

2020-07-24

jQuery-Plugin-For-Easily-Readable-JSON-Data-Viewer.zip

一个格式化json的jquery插件。支持折叠、打开,而且在折叠后可以看到下面有多少个子节点。有源码、示例。

2019-12-31

yesmeck-jquery-jsonview-v1.2.3-14-g01b1eb8.zip

一款格式化json的jquery插件。该插件支持展开、折叠等操作api。唯一不足的是折叠后不显示元素个数。

2019-12-30

cmake-3.8.1.zip

linux上cmake工具库——用于构建各种c++代码的一个工具。

2019-08-24

gflags-2.2.0.zip

linux上C++的gflags库。gflags是google开发的命令行工具库。

2019-08-24

glog-0.3.5.zip

linux环境下C++的一个日志类库,出品自google。类似于java的log4j、slf4j

2019-08-24

protobuf-3.6.0.tar.gz

在linux上安装protobuf3的安装包,下载后解压、编译、安装即可。

2019-08-20

ModelGoon-4.4.1-site

ModelGoon是一款eclipse的uml作图插件,可以生成类图等。

2019-04-13

mermaid-demo

mermaid是一款开源的画流程图、时序图、甘特度的工具,提供了命令行和html两种使用方法。本例是在html中使用mermaid画出各种图的例子。

2018-10-30

graphite-soft

压缩包中包含了在linux上安装graphite软件需要的一些依赖包。

2018-09-18

btrace1.3.11

btrace1.3.11,用来动态跟踪线上java代码的隐藏bug、OOM、GC等问题。

2018-05-03

linux解析json工具——jq

linux下解析json数据的一个工具包。是一个可执行文件,下载后放到某个目录中就可直接使用。详见:https://www.ibm.com/developerworks/cn/linux/1612_chengg_jq/index.html

2017-09-16

gcviewer-1.35-SNAPSHOT

gcviewer是一款不错的可视化gc查看工具,但官网上现在的只支持jdk1.4版本,这个是版本是支持1.4以上的。

2017-05-31

GCLogViewer-0.3-win64.zip

GCLogViewer是一款可视化的gc查看工具,官网下载无法运行在64位的jdk上。这个版本是兼容jdk64的。

2017-05-31

node-zk-browser-master

一个基于nodejs的zookeeper可视化软件包。内部已经安装好了nodejs所需要的各种依赖,直接解压就可以使用。

2017-01-23

perfMon插件

jmeter的插件管理,perfMon插件相关的jar包(server agent、collection)

2016-10-12

zookeeper ui

使用java语言开发了一个本地ui(swing),可以对zookeeper集群上的节点做增、删、改、查操作。

2016-06-20

CodeFolding

CodeFolding,eclipse的一个插件,支持代码折叠

2016-04-05

maven2eclipse 图形pom编辑插件

maven2eclipsec图形pom编辑插件

2016-03-28

js表格拖拽

使用纯js完成了table(表格)列的拖拽;同时支持列位置的调整。

2015-12-31

tomcat7+jedis+common_pool

tomcat7下,将session保存到redis中,需要用到的jar包。

2015-12-11

Quartz1.7 动态添加、修改和删除定时任务(非spring集成版)

Quartz1.7 动态添加、修改和删除定时任务(非spring集成版)

2015-06-21

dbforge studio

dbforge studio

2015-04-21

jquery定时界面

大家都知道linux的conrtab,在web开发中,我们有时候也要实现类似的功能,该文件就是jQuery是实现的crontab。

2015-03-29

jquery 全屏显示插件

jquery 全屏显示插件,实现网页的全屏显示。适用各种不同的浏览器,包括FF 10, Chrome 和 Safari。它用于为用户提供了一个更容易阅读的网页版本,可缩放和元素。

2015-03-20

小图标素材

312个16×16的精美小图标素材,涵盖了大部分功能用到的小图标,非常不错。

2015-03-16

dbforgemysql

dbforgemysql是一款调试mysql 存储过程、函数的工具,使用它可以单步、断点调试mysql存储过程。

2015-03-11

jquery 下拉左右选择控件

基于jquery 实现的下拉框左右选择控件 支持多选 按住ctrl shit多选

2015-02-27

自定义树表格

基于jquery开发的可以分页的输表格。参照网址http://blog.sina.com.cn/s/blog_3efe6ef10100fcv2.html

2015-02-11

eclipse插件-jad

eclipse的插件——jad.zip,可以通过简单的配置,实现反编译class,获得源码

2015-02-05

jquery.radio.js

jquery的easyUI框架,单选按钮插件封装

2015-01-20

easyUI后台demo

easyUI后台demo 是一个使用easyui框架搭建的一个后台管理系统的界面。

2015-01-19

easyUIdemo(疯狂的秀才)

easyUIdemo(疯狂的秀才)是一个使用easyui框架搭建的一个后台管理界面。

2015-01-19

easyUI-api文档

easyUI框架-api中文文档,包含easyUI框架包。

2015-01-04

SQLyog_Enterprise

连接mysql的客户端,SQLyog_Enterprise。带验证码

2014-11-17

eclipse-maven3-plugin

eclipse-maven3-plugin:eclipse的maven离线插件包

2014-10-23

apache-maven-3.2.3-bin

apache-maven-3.2.3-bin:eclipse中离线安装maven的工具包,把它直接拷贝到eclipse的安装路径下,配置好maven.link等信息后,就可以安装好了。

2014-10-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除