自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zpflwy1314的博客

互相学习

  • 博客(129)
  • 资源 (1)
  • 收藏
  • 关注

原创 Guava Retryer实现方法的重试

在工具类中定义常量RETRYER//重试条件 SocketTimeoutException SSLException@Override= 1) {})//返回结果不满足条件重试//重调策略可以是withWaitStrategy(WaitStrategies.fixedWait(10, TimeUnit.SECONDS))​​​​​​​//尝试次数.build();

2023-06-29 17:45:21 903

原创 redis实现分布式锁

【代码】redis实现分布式锁。

2023-05-18 14:21:40 164

翻译 Curator实现分布式锁的使用

Curator是netflix公司开源的一套zookeeper客户端,目前是Apache的顶级项目。与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。Curator解决了很多zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册wathcer和NodeExistsException 异常等。Curator主要解决了三类问题:封装ZooKeeper client与ZooKeeper server之间的连接处理。

2023-05-06 16:58:52 344

原创 雪花算法生成唯一数字id

else {| sequence;

2023-05-04 17:05:05 833

翻译 SPI理解和实现

SPI简单使用

2022-12-23 10:58:03 361

原创 mybatis 中@SelectProvider注解的使用

@SelectProvider使用

2022-12-22 19:06:30 1199

原创 XSS漏洞以及jsoup的使用

XSS攻击处理以及jsoup使用

2022-12-22 18:32:44 1435

原创 redis知识点汇总

redis知识点汇总

2022-12-08 14:45:33 589

翻译 压测工具之ab(ApacheBench)安装及使用

ab是apache自带的压力测试工具。ab不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。使用如下命令安装:yum install httpd-toolswindows如下安装:Apache Benche进行压力测试及访问结果报告分析_程又青的博客-CSDN博客2.参数-n 测试的总请求数。默认时,仅执行一个请求。-c 一次并发请求个数。默认是一次一个。-H 添加请求头,例如 ‘Accept-Encoding: gzip’,以gzip方式请求。

2022-07-13 20:00:21 1545

翻译 重试Spring Retry 的使用

Spring Retry提供了自动重新调用失败的操作的功能。这在错误可能是暂时性的(例如瞬时网络故障)的情况下很有用。Spring Retry提供对流程和基于策略的行为的声明式控制,易于扩展和自定义。接下来,本文将带大家了解 Spring Retry 的使用方法和部分源码解析引入spring-retry 相关包使用spring-retry ,我们只需引入spring-retry 和 aop 的包即可,以 maven 为例: org.springframe...

2022-06-15 13:56:06 457

原创 读取写入本地文件

public static void main(String[] args) throws IOException { String dataStr =""; File file = new File("/Users/zhangpengfei/Desktop/zpf/email.json"); List<String> datas = FileUtils.readLines(file); File file1 = new Fil..

2022-03-23 18:02:12 368 1

转载 代码耗时统计Google之Stopwatch 计时器使用

在代码调试中为了统计耗时需要输出时间时利用StopWatch可方便的进行统计,然后对时间长的进行优化。常用方法返回值 方法 Desc Stopwatch static createStarted() 使用System.nanoTime()其时间源创建(并启动)新的Stopwatch Stopwatch static createStarted(Ticker ticker) 使用指定的时间源创建(并启动)新的Stopwatch Stopwatch

2022-01-14 14:32:45 777

原创 springboot中redisTemplate的使用

springboot中整合redisspringboot中redisTemplate的使用一:springboot中整合redis (1)pom.xml文件中引入依赖<!--加入redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId...

2022-01-14 12:47:12 3395

原创 redis中HyperLogLog使用(统计数据)

HyperLogLog是Redis中的高级数据结构,它主要用于对海量数据(可以统计2^64个数据)做基数统计(去重统计数量)。它的特点是速度快,占用空间小(12KB)。但是计算存会在误差,标准误差为0.81%。HyperLogLog只会根据输入元素来计算基数,而不会储存输入元素本身,所以他并不能判断给定的元素是否已经存在了。适合用来对海量数据进行unique统计,对内存占用有要求,而且还能够接受一定的错误率的场景。对于union操作由于是O(N),在海量数据层面需要注意慢查询问题基本指令pfadd

2021-12-14 20:06:42 1972

翻译 redis常用数据类型以及操作

Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。  ① string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。value其实不仅是String,也可以是数字。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型

2021-12-03 21:07:30 293

原创 【Java 8 新特性】Java Clock tick() 设置时间最小跳动间隔

相当于从基础时间开始每固定时间跳动一次,里面时间为调动的时间间隔//以下需求为记录每五秒整操作的次数String key = "testKey";//以 Clock.systemDefaultZone()为基础时间,每五分钟变换一次,.millis()获取到最近一次变换的毫秒数long millis = Clock.tick(Clock.systemDefaultZone(), Duration.ofMinutes(5)).millis();//对redis的key值进行增1 以增...

2021-12-03 19:28:19 317

原创 java中对表达式{index}的替换

/** * @Author: ZhangPengfei * @Date: 2021/11/17 10:36 上午 */public class TemplateUtils { public static final String DEF_REGEX = "\\{(\\d+)\\}"; public static String render(String template, Object[] args) { return render(template, args,.

2021-11-22 14:33:23 415

翻译 zkCli操作zookeeper的命令

zookeeper cli使用 brew 安装,已经把 zookeeper bin 目录下的命令添加的系统中,因此在终端直接执行 zkCli,就创建了一个 zk 客户端,连接 zk 服务。输入 help 命令(其实输入任何 zkCli 不能识别的命令,都会列出所有的命令),查看可用的命令:对 znode 进行增删改查创建节点 create语法create [-s] [-e] path data acl-s 创建有序节点如果在创建znode时,我们使用排序标志的话,Zo..

2021-11-11 11:47:35 1294

翻译 使用grpcurl访问gRPC服务

go或者python等调用java服务时需要通过grpc去调用,如何在jav项目中开启grpc服务可参考我的另一篇文档Spring项目实现grpc协议_zpflwy1314的博客-CSDN博客grpcurl是一个命令行工具,使用它可以在命令行中访问gRPC服务,就像使用curl访问http服务一样。准备: 在gRPC服务中注册reflection服务gRPC服务是使用Protobuf(PB)协议的,而PB提供了在运行时获取Proto定义信息的反射功能。grpc-go中的"goog...

2021-11-11 10:53:58 1141

原创 如何将一个外部bean加入spring容器中以及spring.factories使用

原因为什么要使用,因为在程序开发中,可能包名不一样,pom依赖的很多的jar 他们是如何把这些类进行注入到spring容器中的呢。所以springboot就提出了spring.factories,一般写一个框架但是如何保证框架中的bean引入到主服务的容器中的,这个时候需要在框架中引入spring.factories,在主服务初始化时会调用所有的spring.factories文件将里面声明的bean进行扫描到spring容器中。一、第一种框架项目是Test类package com.test

2021-11-09 11:49:44 846

原创 spring容器中如何注入多个相同bean及@Primary注解使用

@Primary注解使用当一个方法有多个实现类时,在方法中注入了多个,@primary可以指定注入哪一个。@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用@Autowired @Qualifier(“personDaoBean”) 存在多个实例配合使用@Primary能够与@Component组合用在组件扫描的bean上,也

2021-11-09 11:37:43 4570

原创 使用spring cache缓存学习

spring boot cache 提供了一些注解方便做cache应用。(1)@CacheConfig:主要用于配置该类中会用到的一些共用的缓存配置(2)@Cacheable:主要方法返回值加入缓存。同时在查询时,会先从缓存中取,若不存在才再发起对数据库的访问。(3)@CachePut:配置于函数上,能够根据参数定义条件进行缓存,与@Cacheable不同的是,每次回真实调用函数,所以主要用于数据新增和修改操作上。(4)@CacheEvict:配置于函数上,通常用在删除方法上,用来从缓存..

2021-10-07 18:31:45 120

原创 UUID生成器

/** * UUID 生成器 */public class RandomGenerator { /** * 生成UUID */ public static String getUUID() { UUID uuid = UUID.randomUUID(); return uuid.toString().replace("-", ""); } public static String getRand.

2021-10-07 14:38:49 540

原创 使用CountDownLatch踩坑记录

踩坑记录:在方法内部需要异步采用多线程处理不同的任务,待多线程都处理完成时在进行组装返回结果:情景是获取帖子信息时需要补充当前登录用户关注点赞以及发帖用户信息,需要多线程之下,所以在方法内部定义CountDownLatch waiter = new CountDownLatch(3);每次调用完成时都调用waiter.countDown();进行减1操作,总共三个逻辑调用三次,最后调用waiter.await();执行后续组装逻辑。但是执行过程中在线程调用时出现异常,导致waiter.c

2021-09-28 20:42:47 1057

原创 springboot集成分布式任务执行框架elastic job

Elastic-Job并不直接提供数据处理的功能,框架只会将分片项分配至各个运行中的作业服务器,开发者需要自行处理分片项与真实数据的对应关系elasticjob使用了 Quartz,任务执行是实现了 Quartz 的 Job 接口下面是一个工作中案例:首先引入springboot中pom依赖:<!-- elastic job --> <dependency> <groupId>org.apache.shardingsp...

2021-09-07 21:31:20 557

原创 Spring项目实现grpc协议

在工作中python服务不支持rpc协议,为了将dubbo服务与python连起来引入了grpc协议,在java服务中开启grpc接口供python服务调用,以下做个简单的总结:先定义proto文件例如TestFacade.proto文件如下:syntax = "proto3";import "google/protobuf/timestamp.proto";//proto文件生成java文件的包路径package com.test.service.facade;option..

2021-09-04 19:11:32 794

原创 Guava异步框架Event-bus在spring中的使用总结

Event-bus使用总结1. 概述guava中EventBus是一个消息处理总线,基于观察者模式设计和实现。主要介绍下在spring框架中如何使用和配置EventBus。EventBus主要分为两种,一种是同步消息总线(EventBus);另一种是异步消息总线(AsyncEventBus)。下面主要以同步消息总线为例来介绍下EventBus和Spring的结合使用。一个消息总线可以支持多种消息的订阅和发送,不同的消息通过类名来区分。消息体使用一个简单的Java DO,本身不需要继...

2021-09-04 18:22:21 899

原创 springboot中pageHelp的使用

打个需要以下几步:引入pom依赖:<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.11</version></dependency>添加配置:下面有两种配置方式,选择其中一种就行(...

2021-06-24 15:45:52 1380

翻译 static修饰方法的使用

static 修饰方法1、static修饰的方法被称之为静态方法也叫作类方法,加static的方法,可以通过类名直接访问,也可以通过对象名访问,而不加static只能通过对象名访问,加了static的方法,不能再内部写this,因为直接用类名点方法的时候,没有当前对象2、加了static的方法,不能再方法内部访问非static的属性和行为;原因:1、在静态方法的内部无法确认非static的内容属于哪个对象,它是通过类名调用,这时没有对象----这就相当于工具类2、static修饰的方法,在类

2021-06-17 10:53:24 3540

翻译 redis常见面试题

## **<center>redis</center>>**### 数据类型#### string Redis 的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配,内部为当前字 符串实际分配的空间 capacity 一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,为了避免加倍后的冗余空间过大而导致浪费,所以扩容时一次...

2021-06-15 17:09:05 152

原创 Mysql面试总结

<center><h1>MySQL面试笔记</h1></center>### 1. 为什么在生产环境下,要给字段设置为NotNULL,然后必须要有default?​ 因为在Innodb的行格式里,有NULL值列表,每当表中有一个字段为NULL,那么NULL值列表就会有一个二进制位,有n个字段允许为NULL,则意味着有n个二进制位,那么每一行存储的数据就得要额外的空间来做为NULL值列表的存储,**所需要的字节数为n/8** , 举个例子来说如...

2021-06-15 16:59:13 86

原创 JVM面试总结

### 一、 JVM概念模型 我们整天都在使用JVM,但是你知道JVM的内存布局是怎么样的么? 它可以被分为两种情况 1. 线程共享:所有的线程都可以去访问的区域 1). 堆 2). 方法区 2. 线程私有:每个线程都有的区域 1). 虚拟机栈 2). 本地方法栈 3). 程序...

2021-06-11 15:11:10 1048

原创 数据库事物隔离级别

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted:读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。Read committed:读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。Repeatable read:重复读,

2021-05-29 12:59:55 164

原创 MessageFormat.format以及字符串常用操作

MessageFormat.format是根据顺序和占位符来对应插入的MessageFormat.format("update_pre_intercept_{0}_{1}_{2}", "aaa", "bbb", "ccc");StringUtils.defaultIfBlank(d,"结果")如果d为null就输出后面的"结果"参数注意:1.如果最后结果想加上一个单引号,就需要在相应占位符上加上两个单引号,才能准确转换。 2.如果传入的参数为null,会自动替换为null。如果想替...

2021-05-24 21:23:11 333

原创 MySQL中on duplicate key update的使用

MySQL使用on duplicate key updateon duplicate key update进行自动判断是更新还是新增(MySQL判断记录是否存在的依据是主键或者唯一索引,insert在主键或者唯一索引已经存在的情况下会插入失败,而InsertOrUpdate在主键或者唯一索引已经存在的情况下就变成了根据主键或唯一索引update的操作)。一段时间后发现该表的主键id(已设置为连续自增),不是连续的自增,总是跳跃的增加,这样就造成id自增过快,已经快超过最大值了,通过查找资料发现on

2021-04-25 18:06:58 1123

原创 分库分表

分库分表主要有两种方式:水平拆分和垂直拆分分库的意思就是把数据表按照业务不同分成不同的库,可以减少单个库的压力例如按照业务将不同模块的数据放在不同的库中。分表的意思就是将一个表中的数据分成多个表按照一定的逻辑拆分成多个表从而减少单库的压力。水平拆分简单理解起来就是将一个表中数据分成多个结构相同的表,垂直拆分就是将一个表分成多个关联的小表,组合在一起就是整个表。水平拆分的意思,就是把一个表的数据给弄到多个库的多个表里去,但是每个库的表结构都一样,只不过每个库表放的数据是不同的,所有库表的.

2021-04-15 22:38:35 141

原创 mybatis中case when用法以及@Param用法

https://libusi.blog.csdn.net/article/details/108044060select d.tools_name, null as sum,null as num,dtp.specs,dtp.type,count()count( case when state =0 then 'state' end ) as 在库 ,count(case when state =1 then 'state' end) 借出 ,count(case when state =2 .

2021-04-15 22:30:54 7295

原创 es学习总结

https://endymecy.gitbooks.io/elasticsearch-guide-chinese/content/java-api/index-api.htmles概念:索引:类似与数据库的表 类型:文档:一行在一个index/type里面,你可以存储任意多的文档。注意,一个文档物理上存在于一个索引之中,但文档必须被索引/赋予一个索引的type。分片:分库分表//准备查询对象 SearchRequestBuilder searchRequestBui...

2021-04-10 19:18:57 1297

翻译 NLU分词中用到的HMM马尔科夫模型以及Viterbi算法

马尔可夫假设  随机过程中各个状态St的概率分布,只与它的前一个状态St-1有关,即P(St|S1,S2,S3,…,St-1) = P(St|St-1)。  比如,对于天气预报,硬性假定今天的气温只与昨天有关而和前天无关。当然这种假设未必适合所有的应用,但是至少对以前很多不好解决的问题给出了近似解。 状态集合是所有的词性,观测集合是分出来的所有匹配集合,转移矩阵A即在当...

2021-01-27 13:25:23 145

原创 spring中利用xml 声明配置bean 和添加property属性

xml 配置bean 和property属性在class对象中用到的属性map,list,string等都可以放在xml配置文件中按照property属性注入其实是使用了setter方法配置bean,配置的属性必须要用set方法才可以,使用时直接使用即可,避免了在代码中初始化。问题:首先由一个FileUpLoadController,在该类中用Autowired注解注入FileUpUtils。而类FileUpUtils需要一些配置参数,比如文件服务器接口的路径和方法名,而这些参数,我们想要配置在p

2021-01-21 21:09:30 3010

dobbo.war以及dobbo源码下载

dobbo.war以及dobbo源码下载

2017-08-10

空空如也

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

TA关注的人

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