- 博客(85)
- 资源 (6)
- 问答 (3)
- 收藏
- 关注
原创 PG库列类型转换
首先自定义两个函数,其中try_cast_numeric函数是将字符类型转成数字类型,try_cast_timestamp函数是将字符类型转成时间戳类型。有了以上两个函数就可以使用以下脚本进行列类型转换,并且可以将无法转换的值设置成默认值NULL。
2023-09-06 10:17:22
611
原创 新版Spring Security如何实现Basic Auth认证接口
新版Spring Security如何实现Basic Auth认证接口。
2023-06-14 10:53:31
1132
原创 通过基于pgsql的timescaleDB的time_bucket函数实现自定义聚合粒度
通过基于pgsql的timescaleDB的time_bucket函数实现自定义聚合粒度
2023-02-17 16:39:26
2253
原创 Docker容器管理工具portainer.io
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /data/docker/volumes/portainer:/data portainer/portainer-ce
2022-04-27 10:33:34
870
原创 Redis实现可重入分布式锁
package com.geega.badge.service.lock;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.script.DefaultRedisScript;import org.springframework.ster.
2022-04-26 11:00:46
2962
2
原创 单机Clickhouse对JSONExtractString函数进行测试
1、Linux虚拟机4核32G2、一共1000万条,如下图3、其中的数据类型如下图,其中一个字段包括json格式的字符串,下面将对clickhouse提供的json相关函数的效率进行测试4、通过JSONExtractString函数对json类型字段进行条件判断5、通过测试千万级数据量下使用Json处理函数的效率也还是可以接受的,如果服务器的配置能更好的我想查询效率应该会更高,clickhouse不亏是OLAP界的翘楚。...
2021-04-26 15:35:43
3038
原创 记一次SpringBoot中使用Validated不生效的问题
其实没多大的问题就hibernate-validator包的版本不对,从7.0.0.Final -> 6.1.7.Final就好了!!!
2021-03-31 09:28:18
3305
原创 java命令执行jar包main方法指定相关依赖
1、Java命令运行jar包时,一般会直接使用-jar的参数去运行,这种方式是在jar包中有一个META-INF的目录下的MANIFEST.MF文件中指定了Main-Class,因此可以直接运行起来。Manifest-Version: 1.0Main-Class: com.alibaba.dubbo.container.Main2、如果在我们打包时并没有按照上述方式去打,并且很多依赖jar都打到同一级目录下,如下图所示, 如果此时需要去启动某个jar包中的某个Main主类,则需要通...
2021-03-11 16:39:20
1536
原创 Java通过selenium对动态网页进行数据爬取
1、浏览器驱动下载地址:http://npm.taobao.org/mirrors/chromedriver2、maven依赖 <dependency> <groupId>ru.yandex.qatools.ashot</groupId> <artifactId>ashot</artifactId> <version>1.5.4</ve
2021-02-05 17:13:33
1216
原创 Java通过selenium+ashot对网页进行长截屏
1、浏览器驱动下载地址:http://npm.taobao.org/mirrors/chromedriver2、maven依赖 <dependency> <groupId>ru.yandex.qatools.ashot</groupId> <artifactId>ashot</artifactId> <version>1.5.4</ve
2021-02-05 17:06:46
1812
原创 Redis实现滑动窗口
1、当我们需要处理诸如接口限流或监控告警等功能时,会使用滑动窗口来使我们的统计会比较平滑,在单机应用下可以有很多办法实现,而分布式应用就无法使用前述办法了,不过也不必太担心,分布式下通过redis的zset数据结构能非常方便的实现滑动窗口。众所周知,zset存在分数score的概念,并可通过score进行一系列的操作,比如排序,区间查询等。因此我们可以将接口的请求时间戳作为zset的score,然后对zset进行操作。2、为了让一系列针对zset的操作满足原子性,我们需要使用lua脚本进行操作,具体如下
2021-01-14 23:04:59
3138
原创 Spring事务传播特性的几种嵌套结果探索
1、具体有哪几种传播特性这里就不赘述了,网上一搜一大把,本文的目的是通过实验的方式验证几种传播特性嵌套之后的执行结果的探索。 为了方便阐述,以下实验都将遵循,方法service1()中调用方法service2()或service3()的形式。2、方法1设置成默认的传播特性(REQUIRED),方法2设置成MANDATORY,这种情况下,如果两个方法都正常执行,那么都会进行提交, 这个有很好理解,因此MANDATORY指的是必须在一个事务中执行,如果有就使用当前事务,所以都得以提交。如...
2020-12-16 11:20:06
285
转载 一致性哈希算法与Java实现
一致性哈希算法与Java实现 =================================================.
2020-11-04 21:04:45
191
原创 背包问题理解
1、01背包问题二维数组的状态转移方程如下:f[i][v] = max(f[i-1][v],f[i-1][v-c[i]]+w[i])f[i][v]指的是取前i个物品,在体积<=v时的最大价值,从动态规划的思路上理解上面的转移方程,在计算第i和物品时,存在两种可能性,1是不取,2是取,因此f[i-1][v]就对应不取的情况,不取还是前i-1的价值,f[i-1][v-c[i]]+w[i]则对应了取第i件物品,是在i-1的体积基础上减掉i的体积c[i],但需要加上i的价值w[i],因为最终目的
2020-08-21 15:16:26
228
原创 Redis数据结构简单介绍
1、众所周知Redis有五大常见的数据类型,它们在Redis源码中由如下的结构体表示typedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层数据结构的指针 void *ptr; //引用计数 int refcount; //记录最后一次被程序访问的时间 unsigned lru:22; }ro
2020-07-08 21:31:44
218
转载 Java基于redis实现分布式锁
本文转载自:https://yq.aliyun.com/articles/307547分布式锁一般存在三种实现方式,1、通过数据库的乐观锁;2、redis 3、ZooKeeper。本文将介绍一下第二种方式,基于redis实现分布式锁,其实网上有很多代码,但都多多少少存在不同的问题,它们根本不能满足分布锁的要求。本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。不会发生.
2020-06-29 11:41:10
809
原创 Java项目CPU占比100%排查步骤
这个问题如果写代码的时候注意点一般不会发生,常见的导致该问题的原因是程序出现死循环,另外就是在面试的时候经常会被问到,所以自己整理记录一下。1、通过linux的top命令查看哪个线程占用CPU比较高在我自己的阿里云服务器上操作了一下,如上图,但是系统中没有Java进程占用CPU比较高的,但是不妨碍接下来的操作,接下来就用上图中的进程PID为24896的Java项目来进行实验。2、使用 pidstat -p PID -u -t 命令来查看PID进程下的线程情况如上图所见通过上面的命..
2020-05-19 22:06:29
1688
原创 kafka学习笔记
1、卡夫卡架构组成kafka cluster:kafka集群 broker:一个集群中的服务器单体topic:主题,分leader和followerpartition:分区,一个topic可以包含多个partition,分别在不同的broker中producer:生产者consumer:消费者consumer group:消费者组zookeeper:注册消息,t...
2020-01-06 22:40:40
339
原创 Feign使用okhttp的排坑之旅
1、由于项目需要远程调用http请求,因此就想到了Feign,因为真的非常的方便,只需要定义一个接口就行。但是feign默认使用的JDK的URLHttpConnection,没有连接池效率不好,从Feign的自动配置类FeignAutoConfiguration中可以看到Feign除了默认的http客户端还支持okhttp和ApacheHttpClient,我这里选择了okhttp,它是有连接池的...
2019-12-15 17:03:58
13505
4
原创 SpringBoot使用外置Servlet容器和原理分析
1、使用外部servlet容器的步骤1)、maven项目打包方式为war<packaging>war</packaging>2)、将嵌入式Servlet容器的打包方式指定为provided<dependency> <groupId>org.springframework.boot</groupId> &...
2019-12-11 01:20:15
300
原创 SpringBoot启动流程分析
从SpringBoot的主类进入SpringApplication的run()方法,然后接着往下分析1、首先启动一个StopWatch(秒表)2、配置awt相关configureHeadlessProperty();3、从所有的jar包下的META-INF/spring.factories文件中读取所有的org.springframework.boot.SpringApplica...
2019-12-09 22:51:06
286
原创 SpringBoot错误处理流程原理
1、根据SpringBoot的惯例或者说方法论,我们研究错误处理的话应该先找到错误处理的自动配置,赶巧,SpringBoot中确实有一个叫ErrorMvcAutoConfiguration的自动配置类,我们能看到它向Spring容器中注入了一系列的对象,包括DefaultErrorAttributes、BasicErrorController、ErrorPageCustomizer以及通过内部类D...
2019-12-09 00:25:26
462
原创 SpringBoot整合ElasticSearch
一、先记录一下自己傻逼导致的错误,耗费了很长时间才解决java.io.IOException: Request PUT http://47.107.74.116:9200/yao/news/1 HTTP/1.1 yielded text/plain; charset=UTF-8, should be json: HTTP/1.1 400 Bad Request at io.searchbo...
2019-12-05 00:03:40
783
原创 SpringBoot整合RabbitMQ
package com.dxy.rabbit;import org.springframework.amqp.rabbit.annotation.EnableRabbit;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApp...
2019-12-03 22:08:48
203
原创 SpringBoot配置RedisTemplate和RedisCacheManager
import com.dxy.cache.pojo.Dept;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;i...
2019-11-28 00:41:14
13554
4
原创 Linux上搭建Jenkins通过拉取SVN库上的代码进行自动部署
1、安装SVN服务器,安装方法网上很多资料可参考。 在opt目录下创建svn库 /opt/svnrepo/ 在该目录下执行以下命令,创建一个版本库svnsvnadmin create svn 创建完成后,/opt/svnrepo/目录下会生成svn目录,进入svn目录,会看到里面包含如下目录conf:配置文件目录db:上传的文件库hooks:保存钩子命令...
2019-10-27 14:39:53
3458
原创 Java通过openoffice将下载的文件转成pdf供前端预览
一、下载安装openoffice1、进入openoffice官网http://www.openoffice.org/download/index.html下载最新版RPM安装包Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz2、解压下载的文件tar zxxvfApache_OpenOffice_4.1.6_L...
2019-09-26 17:35:14
922
原创 Mysql索引笔记
1、InnoDB聚簇索引:索引文件和数据文件在一起主索引的叶子节点直接保存的数据,辅助索引的叶子节点存储的主键值。支持事务,行级锁,支持B+tree索引,支持fulltext索引,不支持hash索引2、MyISAM非聚簇索引:索引文件和数据文件分开存储主索引和辅助索引的结构完全相同,叶子节点存储数据的物理地址不支持事务,表级锁,支持B+tree索引,支持fulltext...
2019-09-17 15:19:34
312
原创 翻译reactor-siemens.pdf
申明:本文借助翻译软件翻译了Douglas C. Schmidt的《Reactor An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events》一文中的部分内容,可能跟原文存在出入,请谨慎学习!------------------------------------...
2019-09-13 11:02:24
1083
原创 Reactor模式中的5种组件
下图来自Douglas C. Schmidt的《Reactor An Object Behavioral Pattern forDemultiplexing and Dispatching Handles for Synchronous Events》一文。以下是借助翻译软件翻译的上述文章中的一部分内容,可能会有误差,请谨慎学习Handles(句柄):标识由操作系统管理的资源。这...
2019-09-12 23:50:54
633
原创 NIO零拷贝
在Java体系的NIO和Netty中都存在着零拷贝这么一个东西,这项技术可以提升数据的读写速度,那到底什么是零拷贝呢,下面这张图可以很详细的说明。在发送系统调用sendfile之前,处于用于上下文,之后切换到内核上下文进行系统调用 syscall sendfile,调用完成文件发送完成之后切换回用户上下文。其中在内核空间发生的事情主要过程是通过系统驱动的DMA(直接存储器存取,是一种快速传...
2019-09-08 14:48:34
255
原创 第一个gRPC程序
本文将记录我初次学习gRPC的一些成果和历程,gRPC是谷歌开发的基于protobuf的一款高性能,开源的通用RPC框架,支持多种语言。可以在任何环境中运行。 它可以有效地连接数据中心内和跨数据中心的服务,并提供可插拔的支持,以实现负载平衡,跟踪,健康检查和身份验证。 它还适用于分布式计算的最后一英里,用于将设备,移动应用程序和浏览器连接到后端服务。1、工具:IDEA,Gradle2、下载...
2019-08-27 18:28:56
2494
原创 第一个Thrift程序
Thrift是一个rpc框架,也是一个不错的序列化框架,支持多种语言,此处我使用的是Java。1、当然开始之前需要下载thrift到本地,我这里下载的是最新的0.12.0版本,并设置好环境变量2、编写IDL##命令空间namespace java com.dxy.learn_netty.thrift##为了书写习惯,将thrift的类型映射到java中的类型typedef ...
2019-08-25 18:29:57
385
原创 eclipse中使用gradle
1、到gradle官网下载gradle2、将下载下来的压缩包放到磁盘中并解压,比如:D:\gradle-5.63、设置系统环境变量GRADLE_HOME=D:\gradle-5.6PATH=$PATH;%GRADLE_HMOE%\binGRADLE_USER_HOME=D:\gradle_home其中GRADLE_USER_HOME相当于maven中的本地仓库,存放下载下...
2019-08-24 23:12:29
1040
原创 学习“闪电侠”的Netty系列源码博文笔记
1、netty的reactor线程在添加一个任务的时候被创建,该线程实体为 FastThreadLocalThread,最后线程执行主体为NioEventLoop的run方法。2、reactor线程大概做的事情分为对三个步骤不断循环1).首先轮询注册到reactor线程对用的selector上的所有的channel的IO事件2).处理产生网络IO事件的channel3)...
2019-08-22 22:53:56
2057
1
原创 《Netty实战》阅读笔记
1、ChannelHandler的执行和阻塞通常ChannelPipeline中的每一个ChannelHandler都是通过它的EventLoop(I/O线程)来处理给它传递的事件的。所以至关重要的是不要阻塞这个线程,因为这会对整体的I/O处理产生负面影响。但有时可能需要与那些使用阻塞API的遗留代码进行交互。对于这种情况,CHannelPipeline有一种接受一个EventExecut...
2019-08-21 17:58:50
219
Java代码实现下载office文档通过openoffice转成pdf给前端预览-完成源码
2019-09-27
网站 用微信扫码登录之后微信端跳转到指定页面
2017-07-20
一个关于Hibernate的奇葩问题 HibernateSystemException
2015-05-18
JGraph重写节点的问题
2015-01-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人