自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java实现数字和人民币大写转换

这本来是我面试时面试官即兴给我出的一道面试题,当时由于面试比较紧张,时间比较仓促大致说了一下思路,写了一些伪代码。事后觉得挺有意思的,就抽时间完整实现了,有不足之处望各位同仁多多指教。static String LOWERE_STR = "1234567890";static String UPPER_STR = "壹贰叁肆伍陆柒捌玖零";static String [] POSITION_STR = {"","拾","佰","仟","万","拾万","佰万","仟万","亿"};public s

2021-07-16 17:40:19 4

转载 乐观锁与悲观锁详解

一、并发控制当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这种手段就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。常说的并发控制,一般都和数据库管理系统(DBMS)有关。在 DBMS 中的并发控制的任务,是确保在多个事务同时存取数据库中同一数据时,不破坏事务的隔离性、一致性和数据库的统一性。实现并发控

2021-04-17 23:38:32 130

转载 @Valid注解

@Valid用于验证注解是否符合要求,直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。@RestController@RequestMapping("/user")public class UserController { @PostMapping public User create (@Valid @RequestBody User user) { System.out.println(user.

2021-03-23 19:19:36 23

转载 Dubbo 依赖检查配置

dubbo的服务启动依赖检查,指的是当启动服务时,如果存在不可用的依赖时,直接抛出异常,从而阻断spring初始化完成,以便在上线时发现问题。这种看似非常合理的检查,有时候却会给系统带来很大的困扰。比如A的consumer依赖了B的provider,同时B的consumer也依赖A的provider,这是什么?这就叫循环依赖。如果依赖双方均没有启动着的实例(比如所有的服务都挂了,等待重启),那么就会导致A等待B启动后才能启动,反之亦然的死循环问题。那么这个服务启动依赖检查是靠什么控制的呢?check=

2021-03-17 19:55:03 26

原创 centos安装gitlab提示Errno::ENOMEM: Cannot allocate memory

安装gitlag出现以下情况:执行sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production后提示如下:Running? … rake aborted!Errno::ENOMEM: Cannot allocate memory - ps/home/git/gitlab/lib/gitlab/popen.rb:23:in popen' /home/git/gitlab/lib/tasks/gitlab/check.rake:63

2021-01-31 00:07:40 63

原创 使用RestTemplate发送请求获取Elasticsearch数据

直接上代码import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.http.HttpEntity;import org.springframework.http.HttpHeaders;import org.springframework.http.MediaTy

2021-01-30 23:38:25 461

原创 centos7下安装gitlab

一、安装sshsudo yum install -y curl policycoreutils-pythonopenssh-server二、安装gitlab1.下载地址 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm2.通过FTP工具将包上传至服务器3.或者使用wget下载wget https://mirrors.tuna.tsinghua.edu.cn/gi

2021-01-30 23:32:56 39

原创 SpringBoot @Transactional事务回滚实现

一、@Transcational简介SpringBoot不用单独的去配置事务管理,使用@Transactional即可@Transactional即声明式事务管理, 建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务管理不需要入侵代码,通过@Transactional就可以进行事务操作,更快捷而且简单。推荐使用@Transactional可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类

2021-01-24 20:00:25 368

原创 Spring Cloud Config/Bus 数据总线自动刷新无效Webhook请求失败解决方案

Spring Cloud Config/Bus 自动刷新无效Webhook请求失败解决方案过滤bus-refresh请求,自定义发送refresh请求一、github 的 Webhooks 配置二、自定义过滤器我是在config-server定义的过滤器,拦截bus-refresh请求后,调用 http://config-client:port/actuator/refreshpackage com.jvli.project.filter; import javax.servlet.*;

2021-01-17 17:50:36 152

转载 SVN添加新用户

SVN添加新的用户目录:SVN添加新的用户确定svn的文件夹的位置sudo find / -name svnps -ef | grep svn这里确定的是/var/svn/svnrepos路径下cd /var/svn/svnrepos 修改/var/svn/svnrepos下面的authz和passwd文件vim passwd进入passwd,在[users]下面加上你要添加的svn账号及密码 格式为: [users] zhangsan=123456

2021-01-10 16:39:24 150

原创 SVN版本控制工具的使用

一、SVN的基本概念Repository资源库,它是SVN的核心,运行与服务器端,存储所有文件及其历史变化WorkSpace工作副本,运行于客户端,它是用户的工作空间,从Repository检出的文件都放在WorkSpace中Trunk主干(相当于git的master)存放项目的主版本或当前使用的版本Branches分支,它是主版本的分支,比如在Trunk中发现严重的bug,或者想在项目中实验某个新技术,都可以在分支中进行Tags标签,它是只读的,用于对项目的特殊版本进行标记归档二

2021-01-10 12:48:33 44

原创 @ConfigurationProperties注解将配置文件参数转化给Bean属性

@ConfigurationProperties 注解将配置文件参数转化给Bean属性一、application.properties参数配置website.ip=192.168.10.112website.port=8725website.name=catlina.com二、创建Bean WebSiteProperties ,设置属性ip、port、name。在类上配置@Configuration 和 @ConfigurationProperties(prefix = “website”)注解

2021-01-08 14:31:53 115

原创 RabbitMQ学习之路 - 死信队列简单实现

RabbitMQ学习之路 -死信队列简单实现一、死信队列介绍死信队列是RabbitMQ中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:消息被否定确认,使用 channel.basicNack 或 channel.basicReject ,并且requeue 属性被设置为false。消息在队列的存活时间超过设置的TTL时间。消息队列的消息数量已经超过最大队列长度。那么该消息将成为“死信”。“死信”消息会被RabbitMQ进行特殊处理,如果配置了死信队列属性参数并且绑定了“下

2021-01-07 22:29:43 54

原创 RabbitMQ学习之路 - 消费者并发配置及消息手动确认机制

最近在系统学习RabbitMQ的实战课程,感觉很受用,总结一下以供参考及分享搭建spring boot项目,引入rabbitmq一类。这里不再赘述一、application.properties配置server.port=8730server.servlet.context-path=/mq#rabbitmq配置spring.rabbitmq.virtual-host=/spring.rabbitmq.host=127.0.0.1spring.rabbitmq.port=5672spri

2021-01-03 12:30:14 395

转载 RabbitMQ消费端限流

消费端限流1. 为什么要对消费端限流假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!当数据量特别大的时候,我们对生产端限流肯定是不科学的,因为有时候并发量就是特别大,有时候并发量又特别少,我们无法约束生产端,这是用户的行为。所以我们应该对消费端限流,用于保持消费端的稳定,当消息数量激增的时候很有可能造成资源耗尽,以及影响服务的性能,导致系统的卡顿甚至直接崩

2021-01-02 17:13:49 175

转载 深入浅出解析用户画像

用户画像是大数据行业言必及之的时髦概念。现在我们运营谈及用户画像,它也是和精准营销、精细化运营直接钩挂的。这篇文章主要讲产品和运营角度的用户画像。一、什么是用户画像用户画像一点也不神秘,它是根据用户在互联网留下的种种数据,主动或被动地收集,最后加工成一系列的标签。比如猜用户是男是女,哪里人,工资多少,有没有谈恋爱,喜欢什么,准备剁手购物吗?我们常把用户标签和用户画像对等。但凡用户画像的文章,类似上文图片都会出现,有用烂的趋势。标签化是最直观的解释,但它不等于用户画像。用户画像的正式名称是User

2020-12-27 18:45:05 127

转载 数据库分库分表策略的具体实现方案

转载:https://www.cnblogs.com/twoheads/p/9641265.html一、MySQL扩展具体的实现方式随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。关于数据库的扩展主要包括:业务拆分、主从复制,数据库分库与分表。这篇文章主要讲述数据库分库与分表(1)业务拆分在 大型网站应用之海量数据和高并发解决方案总结一二 一篇文章中也具体讲述了为什么要对业务进行拆分。业务起步初始,为了加快应用上线和快速迭代,很多应用都采用集中

2020-12-11 07:11:53 61

原创 Linux学习之路(二)查看系统剩余空间

Linux下查看系统剩余空间1.查看系统整体空间剩余情况在命令行中输入“df -h”可以查看系统的分配,已使用和可用情况。如下图:2.查看每个文件夹的占用情况在命令行中输入 “du -sh *”可以查看每个文件夹的大小。此举可以快速定位大文件所存在的位置。...

2020-12-09 19:56:10 89

原创 安装postgreSQL出现configure:error:readline library not found解决方法

安装postgreSQL出现configure:error:readline library not found解决方法要安装 readline , readline-dev 开发包,要么使用 --without-readline 选项关闭 readline 功能。#yum install readline;#yum -y install -y readline-devel然后在执行postgresql的操作步骤就没问题了...

2020-12-06 18:53:36 42

原创 Linux 学习之路(一)Linux目录结构

Linux 学习之路(一)Linux目录结构详解目录名称描述/boot系统启动相关的文件,如内核、initrd、以及grub(BootLoader)/etc配置文件/home用户的家目录,每一个用户的家目录通常默认为 /home/USERNME/root管理员的家目录/lib库文件。静态库:单在程序中的库,其他程序不能使用该库文件;动态库:在内存中,任何用到该库的程序都可以使用;/lib/modules:内核模块文件/media挂载点目录,移

2020-12-06 18:01:44 28

转载 Spring Tools Suite(STS)安装反编译插件

Spring Tools Suite(STS)安装反编译插件https://www.seoxiehui.cn/article-176779-1.html1 打开Eclipse,Help --> Eclipse Marketplace,搜索Enhanced Class Decompiler插件2.安装Enhanced Class Decompiler3.反编译设置安装完成后需要重启Eclipse,重启后打开 Preference --> Java,选中 反编译器,会看到如下图所示

2020-11-23 21:30:47 322

原创 Java实现ftp文件上传工具类及踩过的坑

一、环境jdk1.8 + springboot2.3.2.RELEASE + commons-net-3.6.jar + commons-lang3-3.8.jar + commons-io-2.6.jar二、添加pom.xml文件依赖<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6&lt

2020-11-07 09:45:46 247

原创 windows环境搭建FTP服务

搭建步骤1、开启 FTP 功能进入 控制面板 \ 程序 \ 程序和功能 \ 打开或关闭 Windows 功能,打开 FTP服务、FTP扩展性、IIS管理控制台Internet Information Services : Internet 信息服务在这里插入图片描述2、添加 FTP 站点进入 控制面板 \ 所有控制面板项 \ 管理工具,打开 Internet Information Services (IIS)管理器在网站上右键 - 添加 FTP 站点,输入站点名称和物理路径(就是本

2020-11-07 09:11:40 81

转载 kafka消息队列使用场景

一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式a、串行方式:将注册

2020-10-31 15:09:50 550 1

原创 SpringBoot集成整合Kafka

一、pom.xml文件引入kafka依赖<dependencies> <!--引入kafak和spring整合的jar--> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>1.1.1.R

2020-10-31 10:55:15 493

原创 could not be established. Broker may not be available kafka启动报错

修改 config 下配置文件server.properties将监听文本注释放开,并配置本机iplisteners=PLAINTEXT://localhost:9092

2020-10-31 09:58:20 141

转载 在window上安装部署Kafka

1.准备工作①jdk具体自行百度安装jdk,配置好 JAVA_HOME和path,下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html,注意, 选择1.8的版本,然后环境变量JAVA_HOME,不要选择默认的"C:\Program Files\Java\jdk1.8.0_151" , 因为文件夹路径不能有空格,后面可能启动kafka服务出错.②zookeeper下载安装包:http://zookee

2020-10-31 09:49:52 581

转载 基于RocketMQ的分布式事务解决方案

转载地址:https://www.jianshu.com/p/286cac4625b6前言在系统变的复杂后,分布式、微服务等架构技术,就要考虑到应用在系统中了。尤其数据量大了后,就需要对数据库进行拆分。如:注册的用户数据,量大了后,就需要考虑分库分表一旦数据库进行了分拆,那就出现很多头疼的问题,其中之一就是事务问题。那我们就来看看问题是怎么出现的?场景先来上个图进行数据拆分后,就类似上面的架构上图中我们就拿用户的数据进行举例,**用户量一旦几千万时,就需要进行分库分表**;上图就分了3个

2020-10-14 15:18:17 44

转载 什么是qps,如何看qps

转载:https://www.jianshu.com/p/b57fb501505cQPS (每秒查询率)例:假如我们一天有10万pv(访问量),公式 (100000 * 80%) / (86400*20%) = 4.62 QPS(峰值时间的每秒请求)公式原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。那我们还可以转一下公式算出我们需要的机器数量机器:峰值时间的每秒请求 / 单台的QPS = 机器数量TPS (吞吐量)这个很好理解,简单来说就是在单位时间能处理的数量,我

2020-10-14 10:02:04 566

转载 获取组织机构树

一、数据表设计在这里我需要说明一下,在看一些开源项目的时候,先不要直接去一头栽到代码里去,那样通常会是雾里探花,研究一番,就把自己搞成了丈二和尚了,所以我一般是会先去看数据表,从业务入手,下一步就去看POM文件 。我在数据库里面建立了dept(部门表),为了测试方便,我在这里只建了五个字段 。org_id (部门id) org_name (部门名称) parent_id (父id)sort(排序) create_date(创建时间)二、由于此业务简单,所以我们就不看pom文件了,也无非就是s

2020-10-13 17:30:41 158

原创 dubbo-admin 管理后台搭建使用

实现进入Dubbo官网,点击GIthubhttp://dubbo.apache.org/zh-cn/进入到Github页面后,一直往下找到dubbo-admin/dubbo-monitor在此页面会看到dubbo-admin-server,但是没有dubbo-admin,这是因为此时的分支是develop,将分支切换为master此时页面地址为:https://github.com/apache/dubbo-admin/tree/master在此页面可以看见其官方说明下载后找到dub

2020-10-09 11:29:49 64

转载 第一次将项目发布到 gitlab

1、首先到自己的项目目录下( /xxx/xxx/myProject 是项目目录)cd /xxx/xxx/myProject2、创建一个README.md文件,一个含有“# myProject”的文件,echo “# myProject” >>README.md或者执行touch README.md,创建一个空白的文档touch README.md3、通过git init 将这个目录下的项目变成git可管理的仓库,也就是说在该目录下会生成一个.git的文件夹,一般是默认隐藏的,l

2020-09-24 13:33:06 113

原创 oracle 修改表字段属性

在实际开发工程中,我们会发现同一的一个操作对于mysql很简单,但oracle就会出现各种问题。比如类似于修改表字段的长度和非空属性。oracle需要这样操作:以 T_USER 表为例,修改name的非空属性--1、创建 T_USER 的备份 T_USER_BACK create table T_USER_BACK as select * from T_USER;--2、删除原表 T_USER 的数据 delete from T_USER;--3、修改表结构 AL

2020-09-23 09:56:32 533

原创 定义controller统一返回异常

一、注解@ControllerAdvice二、定义controller统一返回的异常类,使用@ControllerAdvicepackage com.bw.controller;import java.util.HashMap;import java.util.Map;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.Ex

2020-09-18 22:20:25 77

转载 Mysql数据统计sql(二) date_add与date_sub函数使用详解

mysql 中 DATE_ADD(date,INTERVAL expr type) 和 DATE_SUB(date,INTERVAL expr type)这些函数执行日期运算。 date 是一个 DATETIME 或DATE值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。 type 为关键词,它指示了表达式被解释的方式。关键词INTERVA及 type 分类符均不区分大小写。mysql中内

2020-09-15 18:48:11 50

原创 Mysql数据统计sql(一)

Mysql数据统计sql(一)1、查询当前时间的前2小时之前的数据select * from person_base_info WHERE create_time < DATE_SUB(NOW(), INTERVAL 2 HOUR)2、查询当前时间7天之前的数据、7天之前之内的数据,刚好7天的数据SELECT count(uuid) AS cont FROM person_base_info WHERE DATE(create_time) < DATE_SUB(CURDATE(), IN

2020-09-15 15:16:55 144

转载 mysql存储过程详解

一、定义存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。二、存储过程的特点1、能完成较复杂的判断和运算2、可编程行强,灵活3、SQL编程的代码可重复使用4、执行的速度相对快一些5、减少网络之间的数据传输,节省开销三、创建一个简单的存储过程1、创建存储过程的简单语法create

2020-09-13 11:43:34 75

原创 SpringBoot简单配置Spring Quartz定时器

在实际开发中,定时器使我们很多开发场景中必不可少的。比如我们需要每隔一个时间段执行一次操作。java自带的定时任务局限性太大。有了Quartz定时器用起来会方便很多。下面配置定时器(单任务定时器)后面有时间我会把多任务的配置教程也写出来。添加maven依赖:<!--定时器依赖--> <dependency> <groupI...

2020-09-11 18:43:43 75

原创 Dubbo+Zookeeper+Spring mvc+Nginx 集群负载均衡 详细demo

Dubbo+Zookeeper+Spring mvc+Nginx 集群负载均衡 详细demo很多人刚接触分布式,集群负载均衡时都觉得高深莫测,难度有点大,其实起码入手是很简单的。我刚入公司就让我搞这个的研究,之前完全小白,nginx都没有配置过。搞了1天半,总算弄了个完整的测试项目出来,写了这个博客,以兹鼓励与纪念!Dubbo不多说了,在国内分布式服务这块还是很牛逼的,是基于服务分布式框架,...

2020-09-11 18:42:41 105

原创 sts中导入的maven项目后带叹号的解决方法

导入一个maven项目后项目上带叹号 清理后在uodate也不行 看报错信息是jar包问题,找到仓库给jar包删了还是不行在sts中删除项目,然后在项目的目录打开cmd 执行 mvn eclipse:clean 后在把项目导入sts就好了...

2020-09-11 18:39:35 246

Win32SVN 1.7版本

Win32SVN 1.7版本

2021-01-10

空空如也

空空如也

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

TA关注的人 TA的粉丝

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