自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(308)
  • 收藏
  • 关注

原创 gradle 环境配置

​​init.gradle​​​文件是Gradle的​​初始化脚本​​​(Initialization Scripts),也是运行时的全局配置。3、把以.gradle结尾的文件放到USER_HOME/.gradle/init.d/ 目录下.4、把以.gradle结尾的文件放到GRADLE_HOME/init.d/ 目录下.2、把init.gradle文件放到USER_HOME/.gradle/ 目录下.路径(没有就新建):$GRADLE_HOME/init.d/init.gradle。

2023-08-25 11:32:31 1455

原创 如何避免Sorted Set分页命令导致的数据紊乱问题?

如何避免Sorted Set分页命令导致的数据丢失问题?问题描述项目中经常会使用Redis的Sorted Set结构储存数据,在碰到分页功能时一般使用ZRENRANGEBYSCORE命令来实现,这个命令的原理很简单,一般的使用方法是指定key、max、min、offset、count来获取分页结果。该命令在执行时会锁定key的集合的区间[max,min],在该区间内获取第offset页的count条数据。ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT

2021-09-26 19:15:05 686

原创 Hystrix断路器原理

断路器作用断路器的作用在于当一个请求无法进行或者需要暂时屏蔽时,我们可以在请求执行前将这个请求打断,从而达到暂时屏蔽请求的目的。在我们的工作过程中,这样的场景通常表现为一个请求的提供端由于某种原因无法提供标准的服务时,我们需要及时屏蔽这个资源的请求,从而保证我们的服务整体可用,同时也为服务提供端营造一个良好的过渡阶段不至于在高压请求下发生服务崩溃而造成大面积雪崩的窘迫局面。原理断路器在Hystrix的使用中原理非常简单,它的顶级接口只定义了5个方法用于描述他的功能。命令在执行请求前会询问断路器尝试

2021-08-13 15:10:44 558

原创 gradle 日常记录

修改项目gradle地址为本地{project.url}/gradle/wrapper/gradle-wrapper.propertiesdistributionUrl=file\:///C:/software/gradle-3.0-bin.zip

2021-08-05 11:33:44 183

原创 浅谈Java引用

引用在我们的开发工作中,引用无处不在,可以说我们的工作就是通过引用来对对象进行各种操作。在JDK的<java.lang.ref>包下对引用进行了定义Reference,在源码中对引用定义了四个状态,分别是活跃(Active)、挂起(Pending)、入队(Enqueued)、死亡(Inactive)。正常来说,每个引用的生命周期都会经历这四个状态。生命周期构造函数T referent:引用的对象,被GC特殊处理的对象。ReferenceQueue:即将销毁的引用队列,在创建引

2021-08-03 15:28:54 294

原创 详解ThreadLocal

ThreadLocal 线程本地变量ThreadLocal被定义在jdk的<java.lang>包下面,他的作用在于辅助开发者操作线程本地变量,让我们可以在繁琐复杂的方法调用链中灵活的获取线程本地变量,而不用通过鸡肋的引用传递来获取N层调用次数之前的栈内变量。那为什么说他是辅助呢?因为真正的线程本地变量是通过ThreadLocalMap来储存的,而ThreadLocal封装了从当前线程中获取ThreadLocalMap的方法,我们可以通过get()、set(T)方法方便的对当前线程的栈内变量进

2021-08-03 12:25:10 355 1

原创 浅谈Hystrix扩展-RxJava

RxJava官网什么是RxJava?官网解释:RxJava 是 Reactive Extensions 的 Java VM 实现:一个使用”可观察序列“实现组合异步和基于事件的类库。它扩展了观察者模式以支持数据/事件序列,并添加了运算符,允许您以声明方式将序列组合在一起,同时抽象出对低级线程、同步、线程安全和并发数据结构等事物的关注。RxJava是一个基于观察者模式扩展的响应驱动的JavaAPI类库,开发者可以在RxJava中灵活的搭配响应驱动的组合顺序,不必关心繁琐的调用链实现。角色概念Obs

2021-07-23 18:38:31 291

原创 IO那些事儿(1)基础概念

操作系统冯诺依曼体系结构一个计算机是由计算器,控制器,主存储器,输入设备,输出设备五个模块组成的。linuxLinux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。在linux操作系统中,一切皆文件。kernel操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和

2021-07-09 19:58:57 156

原创 java.util.concurrent学习(五-3) SortedExecutorCompletionService扩展

在java.util.concurrent学习(五-2) ExecutorCompletionService扩展有序的SortedExecutorCompletionService中对ExecutorCompletionService进行扩展后,有一些不足,这里进行优化。不足点构造函数中BlockingQueue completionQueue并未得到实际的使用,在这个版本中会将其删除获取结果的方法需要制定单线程获取超时时间,这个参数有可能会被认为是获取所有结果的总超时时间,在这个版本中将这两个参数

2021-07-02 18:07:22 142

原创 java.util.concurrent学习(五-2) ExecutorCompletionService扩展有序的SortedExecutorCompletionService

在ExecutorCompletionService学习中我们知道,ExecutorCompletionService通过装饰器模式提供了获取已完成的线程结果功能,这大大提高了我们的线程池结果聚合效率。但是这种方式有一种弊端,当我们将已经排好序的结果进行异步提交的时候,获取到的结果是无序的,我们只有通过重新排序或者与之前的排序结果进行对比才能重新得到我们想要的结果,这在开发中无疑提高了代码复杂度,同时也会造成不必要的bug和代码重复。那么我们想一下,能不能有一种方式帮助我们同时使用ExecutorCompl

2021-06-15 18:12:05 251

原创 java.util.concurrent学习(五-1) CompletionService,ExecutorCompletionService 原理认识

ExecutorCompletionService的设计目的在于提供一个可获取线程池执行结果的功能,这个类采用了装饰器模式,需要用户提供一个自定义的线程池,在ExecutorCompletionService内部持有该线程池进行线程执行,在原有的线程池功能基础上装饰额外的功能。下面是ExecutorCompletionService的原理图。1 在使用ExecutorCompletionService时需要提供一个自定义的线程池Executor,构造ExecutorCompletionServi

2021-06-04 16:10:25 253 2

原创 sublime ctrl+d 多光标操作替代方案

idea选中当前文件所有的相同内容 ctrl+shift+alt+j 选中当前文件下一个相同内容 alt+j 取消选中当前文件上一个相同内容 shift+alt+j hbuilder 工具栏 - 工具 - 预设快捷键方案切换 - Sublime Text...

2021-05-11 17:35:05 535

原创 更换yum源为阿里云yum源

备份yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载阿里云yum源(这里使用centos 7的版本,操作时注意对应系统版本)wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo更新本地缓存yum clean allyum makecache...

2021-03-05 11:10:26 775

原创 \X开头的编码转为汉字的几种方式

概念\x开头的编码是十六进制字符,\x后面跟的字符即为十六进制的中文字符。解码方式将\x抓为中文的几种方式:1 在linux客户端通过命令echo -e 输出[root@localhost ~]# echo -e '\xe9\xa3\x8e\xe5\xa5\xb3\xe9\x83\x8e'风女郎2 将<\x>替换为%,使用UrlDecoder工具进行解码转为\x为%得到\xe9\xa3\x8e\xe5\xa5\xb3\xe9\x83\x8e%e9%a3.

2021-02-24 15:53:06 19059 3

原创 redis脚本真的具有原子性吗?

redis脚本的原子性Atomicity of scriptsRedis uses the same Lua interpreter to run all the commands. Also Redis guarantees that a script is executed in an atomic way: no other script or Redis command will be executed while a script is being executed. This seman

2021-02-01 18:21:30 642 2

原创 执行hadoop-3.3.0 wc 报错Container exited with a non-zero exit code 1. Error file: prelaunch.err.

报错Application application_1611732673035_0001 failed 2 times due to AM Container for appattempt_1611732673035_0001_000002 exited with exitCode: 1Failing this attempt.Diagnostics: [2021-01-27 02:32:14.002]Exception from container-launch.Container id:

2021-01-27 16:19:09 7706 1

原创 hadoop-env.sh

export JAVA_HOME=/usr/local/java/jdk1.8.0_251export HADOOP_HOME=/opt/bigdata/hadoop-3.3.0/export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEe.

2021-01-27 11:21:12 727

原创 hadoop 安装FAQ ERROR: Attempting to operate on hdfs namenode as root

问题[root@localhost hadoop]# start-dfs.shStarting namenodes on [node21]ERROR: Attempting to operate on hdfs namenode as rootERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.Starting datanodesERROR: Attempting to operate on hdfs d

2021-01-20 13:28:21 216

原创 linux 快捷键之 vi

########删除# 删除单行dd# 删除5行5dd # 删除光标处的字符x # 从当前光标处往后删除n个字符nx # 删除光标前的字符,可以在X前加上需要删除的字符数目X # 从当前光标处往前删除n个字符nX # 删至下一个字的开头dw # 从当前光标处往后删除n个字ndw# 删除光标前面的字db # 从当前行开始往前删除n字ndb # 从第m行开始往前删除n行:n,md # 从光标处删除到行尾d或d$ # 删除行,直到文件.

2021-01-13 09:55:31 176

原创 windows10 设置环境变量

控制面板方式

2021-01-08 11:20:22 176

原创 基于RedisTemplate的redis分布式锁的LUA实现

import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.script.DefaultRedisScript;import o.

2020-11-23 21:51:47 432

原创 oracle 数据库导入导出操作记录

exp导出单张表为dumpexp username/password@ip/servername tables=emp file=./exp_emp.dmp log=./exp_emp.log导入单张表dumpimp unsername/password@servername file="/path/to/*.dump" full=y ignore=y;

2020-11-19 11:34:21 506

原创 网络io测试用到的工具

查看进程fdlsof -p <pid>抓包tcpdump tcp -i 网卡 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型(2)-i eth1 : 只抓经过接口eth1的包(3)-t : 不显示时间戳(4)-s 0 : 抓取数据包时默认抓

2020-11-13 14:01:25 345

原创 拯救者Y7000 屏幕亮度随背景变暗问题解决

打开英特尔显卡控制中心选择 系统 -> 功率使用电池和使用外接电源电源计划改为最高性能

2020-11-06 13:54:45 13444

原创 数据库单个字段保存多种组合状态的算法设计

需求有0,1,2,3四种使用场景,一条数据可以支持四种场景的组合场景。要求给出一个场景n,查出支持场景n的所有数据。分析首先数字占用空间最小,使用一个二进制超过4位的数来存储支持的场景。四位分别代表一个场景,1表示支持,0表示不支持。解决方式1数据量小不适用索引接收到场景值n后,将1左移(<)n位得到值m,与字段进行&运算,得到的值如果等于m,则命中数据。场景值n = 1将1左移n位 得到 m=0000 0010数据库中的字段 x=0000

2020-11-03 20:49:07 1046 2

原创 ThreadPoolExecutor 构造参数说明

corePoolSize核心线程数,当一个新的任务提交时,如果线程池中的数量未达到核心线程数,会新起一个线程执行该任务,即使线程池中有空闲的线程。maximumPoolSize线程池中允许的最大线程数,包含包含核心线程和非核心线程。keepAliveTime当线程数超过核心线程数时,该参数规定了超过核心线程数的线程最大空闲时间。TimeUnit描述keepAliveTime的时间单位。BlockingQueue<Runnable>任务等待队列,当一个新的任务提

2020-10-19 10:13:53 227

原创 netty 解决TCP拆包粘包问题

官网解释方法一 创建一个ByteBuf,等到所有的数据都接受到以后再进行业务操作。AChannelHandler有两个生命周期侦听器方法:handlerAdded()和handlerRemoved()。您可以执行任意(反)初始化任务,只要它不会长时间阻塞。 首先,所有接收的数据都会累积压入buf中. 然后,在handler中必须检查buf是否有足够的数据(在本例中是4个字节),然后继续执行实际的业务逻辑。否则,当更多的数据到达时,Netty将再次调用channelRead()方法...

2020-10-16 17:35:10 203

原创 记一次springboot 整合oracle10g中遇到的问题

1 由于以来的驱动包为ojdcb14,而使用的jdk版本为1.8,报错。java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z解决:替换ojdbc14为ojdcb8 <orai18n.version>12.1.0.2.0</orai18n.version> <ojdbc8.version>19.7.0.0</ojdbc8.

2020-10-13 14:25:58 572

原创 elastic search 之 join queries

#第一步 在mapping中创建映射关系,#映射字段名称为my-join-field#类型为join#映射关系为:#父类型:parent#子类型:childPUT /my-index{ "mappings": { "properties": { "my-join-field": { "type": "join", "relations": { "parent": "child" } }..

2020-09-21 02:11:02 270

原创 jvm1.8运行时内存模型

2020-09-01 14:41:38 202 2

原创 logback通用配置文件+注释

logback配置文件的加载顺序:logback-test.xml,logback.groovy,logback.xml,com.qos.logback.classic.spi.Configurator实现类,如果上述四个都没发现,则使用BasicConfigurator,直接输出到控制台logback.xml<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="1 secon.

2020-08-29 20:14:32 820 1

原创 logback的日志级别遗传

logback支持的日志级别:TRACE<DEBUG<INFO< WARN<ERROR <ALL/OFF官网通过四个表格来解释日志级别遗传规律:当子集没有设置级别时,遗传上级的级别。Logger name Assigned level Effective level root DEBUG DEBUG X none DEBUG X.Y none DEBUG X.Y.Z none...

2020-08-29 15:12:08 200

原创 logback热加载配置

参考官网:http://logback.qos.ch/manual/configuration.html当配置文件修改时自动重新加载logback-classic可以定期扫描配置文件,当配置文件修改时会自动重新加载配置。如果想要使用这一特性,需要将configuration元素的scan属性设置为true。例如:<configuration scan="true"> ... </configuration> logback-classic默认1分钟扫描一次配

2020-08-29 14:27:54 970

原创 记一次sqlplus导出sql结果

查看字符集查看数据库字符集select * from nls_database_parameters;nls_language:显示方式, 就是sqlplus的程序的显示字体,有SIMPLIFIED CHINESE,American americanls_characterset:字符集设定, 常用的一些字符集有UTF8,US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK, AL32UTF8查看客户端字符集select * from nls_i

2020-08-26 11:08:24 898

原创 ElasticSeach 采坑之A document doesn‘t have a value for a field! Use doc[<field>].size()==0 to check if

从es7.0开始,如果doc['field'].value 中的field不存在,将抛出异常。是否抛出异常可以通过jvm参数来设置,true:是,false:否。- Des.scripting.exception_for_missing_value=true 。可以通过doc['field'].size() == 0 来判断是都存在field...

2020-08-23 21:33:58 4880 4

原创 关于ES可以问的问题。

什么是倒排索引? 节点类型有哪些,怎么配?master 主节点,每个集群都有且只有一个,尽量避免Master节点 node.data = truevoting:投票节点,Node.voting_only = true(仅投票节点,即使配置了data.master = true,也不会参选, 但是仍然可以作为数据节点)。coordinating:协调节点,每一个节点都隐式的是一个协调节点,如果同时设置了data.master = false和data.data=false,那么此节点将成为仅协调.

2020-08-22 19:54:33 273

原创 /etc/security/limits.conf

配置用途/etc/security/limits.conf:设置通过PAM登录的用户的资源限制内容格式<domain> <type> <item> <value>选项解释#<domain> 作用域:可选项:# - 一个用户名# - 一个用户组名,eg:@root# - 全匹配*# - 组匹配 eg:%group##<type>

2020-08-22 15:29:41 229

原创 SpringAmqp之java配置参考

连接工厂配置/* * Copyright (c) 2020. tangjianghua All rights reserved.. */package com.springamqp.rabbitmq.example.config;import com.rabbitmq.client.Channel;import com.springamqp.rabbitmq.example.config.channellisteners.ChannelListener1;import com.spri

2020-08-21 13:09:14 913

原创 SpringAmqp之高可用(HA)集群下的工厂配置

/** * 本地连接工厂,HA集群下建议使用该配置 * 注意三个参数 * rabbitmq集群地址address,集群admin地址,nodes * address和nodes必须一一对应,当一个容器尝试连接一个队列时,会先使用admin API来决定哪个node的队列是master,然后连接到和node对应的address。 * @param defaultCF * @return */ @Bean public C..

2020-08-21 12:34:29 230

原创 SpringAmqp 之路由连接工厂的使用

配置路由连接工厂 /** * Routing Connection Factory * 1.3以后添加了{@link AbstractRoutingConnectionFactory},路由连接工厂, * 他提供了一种将connectionFactory和lookupKey建立映射关系的机制,这种映射关系是基于线程绑定的, * Spring AMQP提供了一个简单的实现类{@link SimpleRoutingConnectionFactory},可以通过在当

2020-08-21 12:04:51 538

空空如也

空空如也

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

TA关注的人

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