自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SBS技术栈-晓白

一天不学就很浑身难受≧ ﹏ ≦

  • 博客(71)
  • 收藏
  • 关注

原创 8种分布式锁解决方案推荐

本文会陆续更新;先写下大纲和劣势博主:只针对JAVA其他语言未知未测;redis 2x版本锁:3x版本已移除redis setnx锁:1.死锁问题,2.主从会有多个线程同时获取锁,舍弃redis+lua锁:1.主从会有多个线程同时获取锁,舍弃redLock算法锁:1.主观念抛弃了主从集群,舍弃zookeper临时节点锁:目前看来是比较好的方案,性能消耗不高;redisson锁:是对r...

2020-03-16 07:07:45 587

原创 redis安全大量删除数据

需求:我需要删除redis集群(从备机)下的关于user开头的所有数据;服务器:主节点1、主节点2、主节点3,从节点1、从节点2、从节点3;读写分离博主背景:JAVA工程师环境:SpringBoot2.1.1,spring-boot-starter-data-redis依赖包刚开始我想到了的方案:第一步:先key*获取所有redis相关key第二部:再一个一个的在JAVA中循环的删除k...

2020-03-15 00:33:18 3069

原创 (推荐)SpringBoot-JSR303-Hibernator-Validator

基础Hibernator-Validator不介绍,自行百度先献上楼主之前的service层代码,是不是很无奈,这么多类似的判断;头痛!!!解放双手Hibernator-Validator JSR303校验public ObjectRestResponse<AgentTrustor> add(@RequestBody @Validated(AgentTrustor.I...

2019-11-12 16:50:48 344

原创 (致命!!!)mybatis判断Integer遇到的bug

场景产出:需要查出状态为0的所有用户我是这样写的:1.mapper:BaseUserselectUserByStatus(@parm("status") Integer status);这里传了0进去2.sql:SELECT * FROM base_user WHERE status=03.xml片段<if test="status!= null and st...

2019-11-03 17:38:38 432

原创 同步异步阻塞非阻塞详解

以下为个人理解(有点片面,但适合初学者,或后期思考),读者不理解或者我误导了,请直接评论,当天回复场景:厕所排队一个厕所并且只有一个坑位,有十几个人排队,你排在第二的位置,你一离开,就得重新排队!1.你需要一直盯着厕所门,查看里面的人是否搞定出来了.你自己在这期间不能离开干其他事.比如不能在座位上打代码(这里极为容易混淆同步与阻塞关系)自己反复查看->同步坑...

2019-05-21 18:22:56 3547 9

转载 Redis AOF重写阻塞因素

持久化阻塞对于开启了持久化功能的Redis节点, 需要排查是否是持久化导致的阻塞。 持久化引起主线程阻塞的操作主要有: fork阻塞、 AOF刷盘阻塞、HugePage写操作阻塞。fork操作当Redis做RDB或AOF重写时, 一个必不可少的操作就是执行fork操作创建子进程, 对于大多数操作系统来说fork是个重量级错误。虽然fork创建的子进程不需要拷贝父进程的物理内存空间, 但是会复制父进程的空间内存页表。例如对于10GB的Redis进程, 需要复制大约20MB的内存页表, 因...

2021-02-05 16:12:32 1010

原创 JAVA锁概念范例总结

序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 Synchronized、Vector、Hashtable 3 自旋锁 CAS 4 可重入锁 Synchronized、ReentrantLock、Lo...

2021-01-26 14:15:09 219

转载 Spring Boot 配置 Redis 序列化

前言最近在学习Spring Boot结合Redis时看了一些网上的教程,发现这些教程要么比较老,要么不知道从哪抄得,运行起来有问题。这里分享一下我最新学到的写法默认情况下,Spring 为我们提供了一个RedisTemplate 来进行对 Redis 的操作,但是RedisTemplate 默认配置的是使用Java本机序列化。这种序列化方式,对于操作字符串或数字来说,用起来还行,但是如果要对对象操作,就不是那么的方便了。所以我们需要配置合适的序列化方式。在 Spring 官方的文档中,官..

2020-12-24 16:38:14 545 1

原创 注意:Synchronized与@Transactional不能在同一方法上使用的bug

@Transactional是使用了Sping AOP 实现的;Synchronized只是锁当前代码块,当执行完Synchronized包含的代码块就已经执行完了;此时@Transactional还未提交!!!所以在并发条件下,上个事务还未提交的时候新的线程就已经可以进来了!!要是使用的话,请用Synchronized包含所在的@Transactional方法即可;不然回出现并发问题!!!特此谨记2020/11/29...

2020-11-29 19:28:15 341

转载 精:Spring循环依赖问题与解决思路

转载https://github.com/bin392328206/six-finger今天在自己工程中使用@Async的时候,碰到了一个问题:Spring循环依赖(circular reference)问题。给大家看看小六六的代码小六六在代码中用了很多的构造注入,但是这个优缺点,他没法解决循环依赖的问题,所以刚开始我还没意思到是Async引起的,还以为是构造注入的原因,然后我就一直在改,改完了之后,我特么发现我还是不能启动项目,难道我要回滚,因为此时我写了很多的代码了,我并不知道是哪一步引起的

2020-11-27 17:59:11 882

原创 从0到1,如何搭建一个好用的springboot开源项目

从0到1,如何搭建一个好用的springboot开源项目java思维导图2019-10-14 15:41:43脚手架?git社区有很多好用的开源脚手架项目,一般都是后台管理系统,比如renren-fast、guns等。这里我有两个疑问:为什么脚手架项目一般都是后台管理系统?为什么这样的脚手架项目会受到大家的追捧?答:因为每个项目都需要一个后台来管理所有...

2020-07-30 17:13:25 191

原创 redis基础限流

在之前这篇文章中,我大致介绍了一下google guava库中的RateLimiter的实现以及它背后的令牌桶算法原理。但是也有新的问题,在分布式的环境中,我们如何针对多机环境做限流呢?在查阅了一些资料和其他人的博客之后,我采用了redis来作为限流器的实现基础。原因主要有以下几点:redis作为高性能缓存系统,性能上能够满足多机之间高并发访问的要求 redis有比较好的api来支持限流器...

2020-07-30 17:10:45 351

原创 JAVA微信小程序登录详解

服务端调用API:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html时序图说明文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html...

2020-07-30 17:09:09 437

原创 JAVA调用百度地图API {"status":240,"message":"APP 服务被禁用"}

博客时间2020/05/09报错是因为2019.6.18号以后申请的账号,将不再支持v2版本查询了然而sn加密哪里还是v2…所以对应编写下api就好v3:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding/** * 根据地址获取经纬度 */ @PostMapping("/getAddressLngLat") public R<JSONObject> getA

2020-05-09 17:46:34 3205 2

转载 jvm G1 实战

大纲介绍第一,垃圾回收简介第二,G1介绍第三,G1 Young GC第四,G1 Mix GC第五,调优实践第六,G1相关处理参数第七,总结本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践和相关参数列表。一,垃圾回收简介首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么?简单的说垃圾回收就...

2020-02-24 02:10:13 318

转载 Java NIO之Selector 浅析

Java NIO 由以下几个核心部分组成:1、Buffer2、Channel3、Selector在Java NIO之Channel、Buffer中 简单的介绍了Buffer,Channel ,本文主要讲解NIO的Selector相关知识,Selector是整个NIO的核心,理解selector机制是理解整个NIO的关键所在。理解selector 之前,最好要知道I/O模型,如果对L...

2020-02-22 21:22:21 198

原创 JAVA原生图片处理:Graphics2D海报升级(二)

最近公司安排我写批量海报(9图合1,生成几十张海报图)、单品海报,多个商品海报(常规业务)技巧:字体居中:背景宽/2-字体长度/2(只适合字体宽度能计算)只说最简单的生成一张海报里面包含元素背景图、订单主图、原价、现价、描述(中文换行)难点1.Graphics2D资料较少; 2.中英、半全、符号数字组合换行未解决 3.价格背景图自动拉伸(可以绘制,但是...

2019-12-12 18:12:45 444 3

原创 JAVA原生图片处理:Graphics2D海报(一)

import javax.imageio.ImageIO;import java.awt.*;import java.awt.font.TextAttribute;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.text.Attribu...

2019-12-12 17:56:58 461

原创 linux服务器安装gitlab社区版

写在前面:文档最后更新日期2019/12/11服务器至少需要4G内存!!!!!很重要,2G只能非常非常卡的运行会出很多问题,你还会以为是bug!至少4G!!!至少4G!!!至少4G!!!不用想了,至少4G!坑:开启了端口却访问不到,可以试试开启gitlab后再关掉防火墙开始安装:1.安装ssh,安装命令:sudo yum install -y curl policycore...

2019-12-11 23:49:49 378

原创 gitlab权限分配

Gitlab用户在组中有五种权限: Guest, Reporter, Developer, Master, owneritlab权限管理Gitlab用户在组中有五种权限: Guest, Reporter, Developer, Master, OwnerGuest:可以创建issue、发表评论,不能读写版本库Reporter:可以克隆代码,不能提交, QA,PM可以赋予这个权限De...

2019-12-11 22:49:47 5510

转载 SpringBoot-@Transactional事务标签详解

propagation 属性REQUIRED:如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。REPEATABLE_READ:这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续...

2019-10-30 02:16:07 1596

原创 SpringBoot事务回滚异常:Transaction rolled back because it has been marked as rollback-only

最近遇到这样的问题,使用spring时,在业务层需要捕获异常(特殊需要),当前一般情况下不需要这样做的。具体如下:在ServiceA类中有method1,在该方法中调用另一个ServiceB类的method2方法时(假定该方法抛出异常),method1方法捕获该异常但是没有向上抛出。spring提示:org.springframework.transaction.UnexpectedRoll...

2019-10-30 02:06:19 935 1

原创 SpringBoot-事务应用场景和隔离级别与传播行为

参考:https://blog.youkuaiyun.com/huangjun0210/article/details/84202333 这位大哥写得很好,后来我才看到首先上SpringBoot事务注意事项6.事务被捕捉了则无法回滚事务;第3点:修改捕捉指定异常:@Transactional(rollbackFor=Exception.class)第5点:说白了就是同一个C类里面(...

2019-10-28 01:06:21 1429

转载 httpclient模拟post请求封装表单数据、json数据

public static String httpPostWithJSON(String url) throws Exception { HttpPost httpPost = new HttpPost(url); CloseableHttpClient client = HttpClients.createDefault(); String re...

2019-09-03 16:51:47 457

转载 docker常用命令

1. docker version显示 Docker 版本信息。2. docker info显示 Docker 系统信息,包括镜像和容器数。3. docker searchdockersearch[options "o">]termdockersearch-sdjango从 Docker Hub 中搜索符合条件的镜像。--automated...

2019-08-14 16:26:30 125

转载 mysql语法模式,SQL_MODE

MySQL的sql_mode合理设置为甚么要把这个拿出来说呢?你会发现某些人写的sql在mysql5.7中的部分语法中报错!我就将这个问题拿出来,sql总体来说我还是希望严格。这样符合设计规范还有就是会导致waring提示,有些人不注重waring,实际上可能会导致你得到的数据,创建的数据跟你想的不一样! sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可...

2019-07-09 00:22:01 145

翻译 show status命令使用参数

show status命令:show status like '状态名'要查看MySQL运行状态,要优化MySQL运行效率都少不了要运行show status查看各种状态,下面是参考官方文档及网上资料整理出来的中文详细解释:如有问题,欢迎指正 状态名 作用域 详细解释 Aborted_clients ...

2019-07-04 14:40:33 684

转载 mysql show命令解释

显示当前数据库中所有表的名称show tables或show tables from database_name;显示mysql中所有数据库的名称show databases;显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。show processlist...

2019-07-04 11:21:12 171

转载 redis入门到精通(一)-配置文件详解-1.4

一、Redis脚本简介在我们介绍Redis的配置文件之前,我们先来说一下Redis安装完成后生成的几个可执行文件: redis-server 、redis-cli 、redis-benchmark 、redis-stat 、redis-check-dump、redis-check-aof :redis-server:Redis 服务器的daemon启动程序。redis-cli:Red...

2019-06-27 00:48:28 224

原创 redis入门到精通(一)-单机入门、安装并使用-1.3

以下针对4.x,单机并无区别最简单的安装使用,阿里centos7单机推荐使用可视化工具RedisDesktopManager1.cd ~2.wget http://download.redis.io/releases/redis-4.0.6.tar.gz2.解压tar -zxvf redis-4.0.6.tar.gz会显示一大堆解压东西;3.将解压后的redis...

2019-06-27 00:44:34 128

原创 redis入门到精通(一)-redis为什么那么快呢?-1.2

redis为什么那么快呢?使用c语言编写(这也是为什么使用gcc安装的原因)更加接近于计算机底层一:基于内存内存:千万级别动态硬盘:读写为千级别ssd:读写为百级别二:NIO模型,多路复用(监听、高利用)+三、单线程nio,单线程这两者连在一起才能发挥最大作用。redis对nio进行了自己的实现。I/O multiplexing:io多路复用:多个Sock复用一...

2019-06-27 00:29:37 255 2

原创 Redis入门到精通(一)-redis历史版本、场景、优势简述-1.1

一.三个什么?redis可以做什么场景:首先理解redis可应用场景:缓存、分布式锁、排行(zset)、共有好友(set)、消息队列(list)、连续登录(bitmap)、发布\订阅、位置计算(geo)等等,按使用热度排列redis是什么(nosql)简而言之:没有关系的数据库,所以不用维护关系,轻便!redis为什么诞生与使用描述:因为关系型数据库的...

2019-06-26 23:46:23 240

原创 mysql当前读和快照读(未完)

mysql:可重复读模式下1. 快照读(snapshot read)MVCC模式,并发高,数据不实时!一般情况下的select2.当前读(current read)next-key lock模式,并发低,数据实时!select ... lock in share modeselect ... for updateinsertupdatedelete...

2019-06-13 18:58:35 431

原创 Explain 输出分析

本博客写得精炼,是博主转载的。比博主写得好MySQL 之 Explain 输出分析也可以使用EXPLAIN EXTENDED命令,执行完后再执行SHOW WARNINGS查看到警告信息(进一步分析)背景前面的文章写过 MySQL 的事务和锁,这篇文章我们来聊聊 MySQL 的 Explain,估计大家在工作或者面试中多多少少都会接触过这个。可能工作中实际使用的不多,但是不论的自己学...

2019-06-13 18:44:01 784

转载 mysql语句性能诊断

一般使用explain语法即可explain诊断;用法explain sql语句 \G(列显示)例:explain select * from user where user=“1” \G字段说明:官网:https://dev.mysql.com/doc/refman/5.5/en/explain-output.html一、id 我的理解是SQL执行...

2019-06-03 18:04:26 193

转载 nginx配置文件详解

2)标准的http功能模块集合,http://nginx.org/en/docs(可以查看更多的功能模块)                   企业应用场景功能模块汇总   回到顶部5. Nginx目录结构  执行命令 tree /application/nginx ;如果tree命令找不到就执行 yum ins...

2019-05-14 11:01:24 189

原创 docker镜像快速上手

该文章是某机构复制而来,经验证可靠!博客时间2019/5/81 Docker简介1.1 什么是虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域...

2019-05-08 17:31:01 287

原创 git日常操作

初始化仓库:Git init查看隐藏文件:ls -al查看git配置:git config仓库级(全局)修改用户名:git config --local(global) user.name 'CloudBai'仓库级(全局)修改用户邮箱: git config --local(global) user.email 'tets@qq.com'仓库级(全局)删除用户名:git co...

2019-05-06 15:53:03 4581

原创 centos7安装redis单机版(阿里云)

博客时间:2019/4/26 如果看到博客的你看到我这篇文章已经是重大更新后,或者几年后。请关闭本博客下载源码包(也可以下载rpm,二进制包,自己去百度)1.cd ~2.wget http://download.redis.io/releases/redis-4.0.6.tar.gz2.解压tar -zxvf redis-4.0.6.tar.gz会显示一大堆解压东西;...

2019-04-26 11:51:08 385

转载 sort排序

Java中Sort排序是非常常用的方法,这一章我们主要来认识一下Sort的用法和相关的实现。一、数组Sort排序升序排序,直接使用Arrays.Sort方法,例如:int[] array = {10, 3, 6, 1, 4, 5, 9};//正序排序Arrays.sort(array);//会检查数组个数大于286且连续性好就使用归并排序,若小于47使用插入排序,其余情况使用双轴快速...

2019-04-18 17:59:12 447

空空如也

空空如也

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

TA关注的人

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