自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HelloQ的博客

我希望你开心,又希望你不开心。

  • 博客(87)
  • 资源 (1)

原创 ElasticSearch在项目中使用场景以及本地demo实现
原力计划

公司在使用ElasticSearch,放置一些数据,所以打算整理一下基础知识以及本地实现一下一个demo一、windows安装ElasticSearch和kibana(这里用作es数据可视化)安装ElasticSearch安装jdk1.8+版本下载ElasticSearch由于官网版本实在是太慢,所以ElasticSearch 7.6的百度云链接:ElasticSearch 7....

2020-05-07 15:44:13 263

原创 JDK1.8---函数式编程(lambda、方法引用、Stream)
原力计划

什么是函数式编程?一切都是数学函数。函数式编程语言里也可以有对象,但通常这些对象都是恒定不变的 —— 要么是函数参数,要什么是函数返回值。函数式编程语言里没有 for/next 循环,因为这些逻辑意味着有状态的改变。相替代的是,这种循环逻辑在函数式编程语言里是通过递归、把函数当成参数传递的方式实现的。一、lambda表达式组成:参数列表、箭头符号(->)和函数体具体展现形式:表达...

2020-04-14 18:04:40 171

原创 JDK1.8(二)---Stream串行流和并行流详解

前序JDK1.8—函数式编程(lambda、方法引用、Stream)Stream流串行流一、执行机制基于pipeline(管道)二、流的特性stream不存储数据stream不改变数据源stream不可重复使用stream串行执行上个节点会影响下个节点三、流的节点中间节点(懒加载): filter、distinct结束节点:toArray、foreach并行流API:parallelStream()利用多线程去处理一批数据,各个线程处理完的结果最后...

2020-09-25 15:12:40 23

原创 云服务器旅程(一):Linux上安装Jenkins

实现腾讯云上CentOS服务器安装Jenkins自动打包一、安装Docker添加yum源(依次在终端执行)yum updateyum install epel-release -yyum clean allyum listyum install docker-io -y #安装dockersystemctl start docker #运行dockerdocker info #查询docker信息出现下列信息则显示安装成功二、安装Jenkins拉取Jenkins镜像dock

2020-09-24 20:13:21 27

原创 分布式事务的原理及实际工作中遇到的解决方案

一、为什么存在分布式事务?因为系统微服务化后,服务拆分,数据库拆分导致一次更新可能在多服务(多JVM实例)下更新多数据源,无法应用单机事务,所以产生了分布式事务。二、 为什么分布式事务无法套用单机事务?由于多数据源,多服务实例导致服务调用需要使用远程调用等网络请求,网络请求会超时,如果套用单机事务会导致如下情况:A服务更新A库请求到达B服务请求返回A服务B服务更新B库最终结果成功成功成功失败a回滚b回滚成功成功失败成功a回滚b不回滚无

2020-09-21 17:59:58 21

原创 消息队列(RocketMQ):事务消息实现以及最终一致性

最近项目中有一个高并发的更新数据库单表单记录的功能,为了避免数据库压力,采取了更新该记录时候发送mq,进行流量消峰。但是该记录的更新要和其他表更新一起,就会有分布式事务的问题。所以就采用了RocketMQ的事务消息来实现分布式事务的一致性。RocketMQ前文中的阿里的rocketMq集成的ons框架配置以及普通、延时、定时消息实现的文章一、事务消息类型RockectMQ事务消息提供了X/Open XA的分布式事务的功能,能实现分布式事务的最终一致性。二、 X/Open XA规范是什么?X/OP

2020-09-18 15:31:01 109

原创 @Transaction:Spring事务生效、失效的条件

事务相关由于公司做的是金融支付相关的业务,所以大量使用了事务,将入职以来遇到的事务相关的经验记录一下。一、Spring事务Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件中做相关的事务规则声明,另一种是基于@Transactional 注解的方式。二、@Transaction注解属性

2020-09-15 14:24:36 10

原创 TiDB:分布式数据库

sharding nothing例如:TiDB 3.0版本优点无限水平扩展,没有容量上限,对海量数据友好对金融级别的一致性ACID事务支持,业务改动小故障自恢复的高可用sql和单机数据库基本一致缺点没有全部兼容传统数据库语法对于一些场景。秒杀延迟不如单机数据库sharding everything例如:AWS Aurora,阿里云PolarDB基于共有云,存储量基于云盘磁盘大小,主从复制优点易用,100%兼容Mysql,业务兼容性好对一致性要求不高的场景,读可以水平扩展

2020-08-26 10:04:35 121

原创 JVM系列(一):初识JVM

一、JVM是什么?JVM即Java Virtual Machine(Java虚拟机),是一个虚构出来的计算机,可以类比linux。可以在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。二、JVM的发展历史?2010年,Oracle收购了sun,获得了hotshot虚拟机,加上本身的JRockit虚拟机占据了绝大多数虚拟机市场2011年,JDK7发

2020-08-18 16:33:54 31

原创 HBase初探(二):Shell命令、布隆过滤器

一、Shell命令通用命令help:查询hbase中所有命令得帮助文档 e.g. help ‘status’status: 查询当前hbase得集群状态table_help:引用表得命令命名空间命令list_namespace:查询所有得命名空间(默认有hbase,default)list_namespace_tables:查询命名空间下面的tablescreate_namespace:创建namespacedescribe_namespace:查询命名空间信息alter_nam

2020-07-06 20:06:39 51

原创 HBase初探

HBase一、为什么使用HBase?最近打算用Hbase存储kafka消息队列的消息内容,防止消息丢失,方便后期补偿作用。二、HBase是什么?HBase是Hadoop DataBase的简写,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统/数据引擎,组成如下:基于hadoop的HDFS作为文件存储基于Hadoop MapReduce来处理HBASE中的海量数据基于Zookeeper作为协同服务三、HBase的特点有哪些?存储数据量大面向列稀疏没有固定格式的存储数据多

2020-06-28 18:05:09 52

原创 消息队列(RocketMQ):订阅消息一致性问题解决方案

订阅一致性的可能情况以及处理方案订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例的处理逻辑必须完全一致。一旦订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失保持订阅关系一致意味着同一个消费者 Group ID 下所有的实例需在以下两方面均保持一致订阅的 Topic 必须一致订阅的 Topic 中的 Tag 必须一致错误情况:同一个 Group ID 下的两个实例订阅的 Topic 不一致同一个 Group ID 下订阅 Topic 的 Tag 不一

2020-05-28 14:04:23 350

原创 SpringBoot:文件上传至阿里云

正常的项目中通常会有存放文件的需求,例如用户头像,用户简历等,我们需要把它存放在专门存放数据的云服务器上。Spring Boot 项目上传文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ma

2020-05-09 16:17:49 252

原创 后台开发者应该需要了解哪些ElasticSearch的知识?

ElasticSearchElasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单。他的功能模块还有:全文检索分布式文件存储,将每个字段都作为索引,可以被搜索可以结合Kinaba做日志分析可以扩展,处理量级大的数据一、使用场景列举...

2020-05-08 15:22:44 109

原创 SpringBoot :API接口拦截器验证(Token验证)并将数据存入Request中供接口调用
原力计划

一、为什么需要拦截器?在前后端分离的现在,项目中的所有的前端的页面都需要通过调用后台的Api进行获取数据接口的功能点不同,就会有很多种情况,比如说涉及敏感数据(登录,获取个人信息,个人金额修改)相关的接口需要token验证获取不敏感数据则不需要进行校验vue等前端调用后台api,如果没有引入(nginx),则有可能有跨域问题所以说需要一个拦截器去区分哪些路径下需要token校验,那...

2020-04-29 15:41:20 585

原创 @ControllerAdvice:全局异常处理示例

全局异常处理用@ControllerAdvice标记全局异常处理的类@ControllerAdvice这是一个增强的 Controller标签。使用这个 ControllerAdvice,可以实现三个方面的功能:全局异常处理设置全局变量,也就是设置完,每个接口能获取到整个参数数据预处理@ControllerAdvice修饰的类package com.example.demo.c...

2020-04-28 16:07:52 82

原创 消息队列(RocketMQ):springcloud结合ONS实现Tcp/Http通信方式的生产者和消费者实例
原力计划

RocketMQ新公司的消息队列用的是RocketMQ,但是不是直接使用RocketMq,而是采用了阿里分布式开放消息服务(ONS)一、阿里分布式开放消息服务(ONS)ONS(Open Notification Service)即开放消息服务,是基于阿里开源消息中间件MetaQ(RocketMQ)打造的一款云消息产品。实现生产者与消费者的代码稍微和原生的有点差别二、阿里云中配置Rocket...

2020-04-27 18:00:06 417

原创 分片查询(sharding-jdbc)以及常见问题解决
原力计划

新公司使用了自动分库分表的插件(sharding-jdbc),由于有多个数据源,所以结合了durid框架,作为数据库链接管理框架。Sharding jdbc​Sharding-JDBC是一个开源的分布式数据库中间件,它无需额外部署和依赖,完全兼容JDBC和各种ORM框架。Sharding-JDBC作为面向开发的微服务云原生基础类库,完整的实现了分库分表、读写分离和分布式主键功能,并初步实现了柔...

2020-04-23 14:52:19 1196

原创 sourcetree跳过注册

安装好后在文件夹路径上输入 %LocalAppData%\Atlassian\SourceTree\,会弹出一个文件夹,该文件夹就是sourcetree的安装目录然后再次文件路径下新建一个名为accounts.json的文件,内容如下:[ { "$id": "1", "$type": "SourceTree.Api.Host.Identity.Model.Ide...

2020-04-20 15:01:26 85

原创 LeetCode12-多线程之按序打印

题目如图:第一种解法(信号量)import java.util.concurrent.Semaphore;class Foo { public Semaphore Semaphore_one=new Semaphore(0); public Semaphore Semaphore_two=new Semaphore(0); public Foo() { ...

2020-04-13 19:46:25 47

原创 RPC:一个包含Http又不限于Http远程调用方式
原力计划

RPC(远程过程调用)RPC,即Remote Procedure Call Protocol,多用于一个区域内的不同项目直接的方法调用举个栗子:一个公司(区域)有很多部门,财务部的小王(A项目的某个方法) 通过 电话(远程调用)让人事部的小李 (B项目的某个方法)汇报人员信息一、RPC和Restfull的区别?一般来说,RPC和Restfull其实不是一个相对的概念,无法进行比较,因为Re...

2020-03-18 19:47:18 90

原创 多线程---主线程如何在线程池结束后在结束
原力计划

业务场景:合并服务器数据实现思路:采用多线程去合并不同服务器c下得不同得表,但是主线程需要等到线程池执行完所有线程在执行。保证日志得顺序性采取方法:线程池+CountDownLatch代码实现:public class MergeService { /** * 一个包装器而已,核心仍然是执行外部类中的函数。 */ class ConcurrentMerge implements...

2020-03-18 17:43:15 144

原创 Spring Cloud项目(三): 服务注册与发现(Eureka)、原理及其常见问题
原力计划

Eureka一、简介Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。注:AWS(亚马逊云计算服务),其中重要组成部分有Region(区域)和Availa...

2020-03-04 20:37:34 202

原创 Spring Cloud项目(二): spring cloud config + eureka + git 远程仓库配置文件

Config远程git仓库操作分布式配置中心所有服务的配置文件归于中心仓库管理,spring cloud config 提供了将配置服务放在本地,也提供了远程仓库中,提供了两个角色,一是config server,二是config clientgit---->config 1,config 2,congfig3(可以看成一个仓库的不同分支,为不同服务提供定制的配置文件)—>...

2020-03-02 17:04:58 178

原创 Mysql:导入文件过大的解决方案

打开dos命令界面(快捷键win+R)找到本机mysql的存放地址(我是根据服务找到的)打开任务管理器,找到详细信息中的mysqlId地址在dos命令下输入刚刚找到的地址输入命令登录本地mysql命令:mysql -u root -p //root是用户名登录远程mysql命令:mysql -h ip -u root -p -P 3306 例如:mysql -h 127.0...

2020-02-26 10:19:40 188

原创 Spring Cloud项目(一) springboot版本和cloud version的对应关系

SpringBoot 和 SpringCloud 版本大体对应(表粗为当前公司项目使用的版本)spring-boot-starter-parent(Spring Boot)spring-cloud-dependencie (SpringCloud版本名称由伦敦地铁站)1.2.xAngel版本1.3.xBrixton版本1.4.xCamden版本1.5....

2020-02-25 11:57:26 3741

原创 Eclipse项目转idea--tomcat运行/war包包名不对

配置tomcatidea配置tomcat点击下图Edit configurations选择localtomcat具体配置默认生成war包名字不符合预期Deloyment则是修改生成war的名字快捷键alt+ctrl+shift+s打开project structure...

2020-01-16 17:12:12 127

原创 Eclipse项目转idea编码问题

IDEA中设置File > Setting > File Encoding 设置成UTF-8File > Setting >Java Compiler,在 Additional comman line parameters 参数新增:-encoding UTF8tips:如果某些类报错 非法字符: ‘\ufeff’ 则将这个类用nodepad++打开 编码改成...

2020-01-16 16:30:10 142

原创 Linux初体验01:VMware安装Ubuntu

VMware安装下载地址:windows版本下载VMware安装你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客...

2019-12-18 15:10:39 88

原创 Linux初体验03:安装JDK、TOMCAT、NGINX实现负载均衡

下载JDK到linux上在当前可以联网的电脑中下载JDK版本jdk下载地址,下载对应的.gz包,这里以jdk-8u181-linux-x64.tar.gz为例通过linux FTP将对应的.gz包上传到linux服务器上在linux服务器上新建一个文件夹,用于存放解压后的jdk文件 #创建目录 sudo mkdir /user/jdk解压jdk文件到上步骤的文件夹中...

2019-12-16 20:54:37 302

原创 Linux初体验02:安装FTP用于传输文件

安装FtpFTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文本传输协议”。用于Internet上本机和服务器端的文件双向传输。1. 安装vsftpd服务器在terminal(终端)中输入以下命令sudo apt-get install vsftpd查看服务状态sudo service vsftpd status2. 新建用户和目...

2019-12-16 16:41:27 103

原创 两年来遵守的代码风格

养成一个合格的编码风格,有益于自己和阅读你代码的人理解:**** 命名风格 ****不允许任何类名,包名,方法名,变量名以下划线_或者美元符号$开头或者结尾反例:name, name, name, name, $name, name $代码中的命名不允许出现拼音,拼音与英语混合或者中文命名(专有名词除外:alibaba,taobao,suzhou等)反例:dazhe, guan...

2019-12-16 14:43:18 100

原创 War包反编译成正常编码的java文件

将war包的带.jar的文件名修改成.zip等可以被解压软件解压的格式,然后解压成文件解压后目录如图所示:打开WEB-INF后,有一个classes文件夹。这个文件就是.java文件反编译成的文件下载工具,在jd-gui官网下载工具,按照自己的系统下载.打开工具的jd-gui.exe,然后将classes文件夹的文件拖进去即可下图即反编译文件内容:...

2019-11-21 19:21:06 211

原创 简单而快乐的24种设计模式之单例模式

所谓单例,就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。在Java,一般常用在工具类的实现或创建对象需要消耗资源。特点类构造器私有持有自己类型的属性对外提供获取实例的静态方法单例模式的多种方式 //最优方式: //1.在getInstance的方法中没有锁,且只有被调用的时候才会创建Test实例 //2.因为内部类testContext...

2019-11-13 16:22:49 91

原创 并发处理中的临时缓存的处理方法

写过的带有失效时间的Map的链接由于原来的业务需求是单线程的,所以在Map在失效时间的重新赋值不会有HashMap的键冲突,或者数据有误,现在新的业务需求是想在多线程的环境里面拥有一个短期缓存,之前的Map就不太好使用了,所以打算用一个单例的双重锁模式去对这个Map进行赋值,保证并发的情况下,只有一条线程进行Map的put操作。public class GameServerForChat {...

2019-11-06 11:03:03 127

原创 Jmeter----- java并发测试工具

写的聊天监控接口,有多线程进行处理,现在因为要有个数据需要去数据库中查询获取,且不经常修改,所以打算使用缓存,因为这个数据被修改的地方有很多。无法用缓存去做。所以打算用定时失效的map去处理,但是由于是多线程,再失效的时候的这个map就需要用单例的双重锁去解决并发put会造成数据错乱等问题。在编写好代码后。需要有一款不同于postman的长时间压力测试的测试工具来帮助测试。经过测试同学介绍就有了...

2019-11-05 20:49:42 262

原创 LeetCode11-删除链表中倒数n的节点

解决思路:先循环链表,查看链表的长度,然后定义结果链表,每次循环中判断是否为倒数第n个,如果是,则直接将题目给链表的当前节点的下一个节点赋值给结果链表的next 然后break掉。(可参照求两个链表求和)package com.example.demo;import org.junit.Test;import org.junit.runner.RunWith;import org.sp...

2019-11-01 11:34:56 37

原创 LeetCode10-删除排序数组的重复项

难以理解点:为什么会return 一个int数据呢?涉及到java中数组是值传递还是引用传递,因为数组是用引用传递,所以无论将这个数组赋值给谁,其值都是指向一个地址,在方法中如果对这个地址内的值进行修改,那么这个数组以及它赋值给的任意数组都会随之修改,所以返回的值是不重复的长度,用于截取对应的长度的数组。代码有解释~package com.example.demo;import o...

2019-10-26 17:00:26 33

原创 LeetCode09-加一(数组中末位加一)

坑爹点虽然数组的每一位都是0-9的数字,但是数组可以无限大奥,就自然屏蔽掉了string转int然后加1在转数组的做法,并且只有在每一位都是9的情况下涉及到数组增加长度解决方案如下:package com.example.demo;import org.junit.Test;import org.junit.runner.RunWith;import org.springframe...

2019-10-25 16:07:24 42

原创 LeetCode08-字符串转整数

题目和解决方案如下package com.example.demo;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4...

2019-10-24 17:40:45 162

redis的window下的客户端和可视化应用.rar

redis在windows下的客户端和可视化应用,下载玩玩吧吧

2019-08-08

空空如也

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