自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小熙的博客

不积跬步,无以至千里;不积小流,无以成江海

  • 博客(43)
  • 资源 (5)
  • 收藏
  • 关注

原创 自定义注解+Spel实现分布式锁

依赖<?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://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-.

2021-03-25 16:31:01 9661 2

原创 Seata使用小记

前言Seata框架是一个XA(两阶段提交)解决方案RM(Resource Manager):资源管理器,表示参与分布式事务的资源,比如数据库,MQ等;TM(Transaction Manager):事务管理器,是分布式事务的协调者。提示:以下是本篇文章正文内容,下面案例仅供参考一、Seata 是什么?Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案

2021-04-06 17:53:49 10479

原创 volatile小记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Java内存模型(JMM)二、volatile实现内存屏障有序性可见性原子性总结前言并发三大特性:可见性,有序性,原子性。可见性:简单来说,就是一个线程对共享变量的修改,对其他线程可见。有序性:指的是程序按照代码编译后的先后顺序执行。原子性:指的是一个操作是不可中断的,即一个操作一旦开始就不会被其他线程影响 Java关键字volatile具有可见性和有序性的特性,针对两种特性的实现,我们来探讨一下实现原理

2021-04-02 16:54:13 9535

原创 Linux环境Nexus私服搭建

一、下载地址:https://www.sonatype.com/download-oss-sonatype二、安装配置1、通过rz命令上传到服务器,通过tar命令进行解压解压后会得到两个文件夹:nexus-3.28.1-01(nexus 服务目录)sonatype-work(私有库目录)2、可根据服务器配置调整jvm参数,防止分配过大内存不够或者过小导致启动OOM-Xms512m-Xmx512m-XX:MaxDirectMemorySize=512m-XX:+UnlockDiag

2020-11-25 16:16:16 9827

原创 Dubbo集成Nacos

一、Nacos配置安装可查看:SpringCloud 集成 Nacos 使用小结二、Provider工程pom.xml<?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-06-24 12:00:02 20826 1

原创 SpringBoot集成Dubbo

一、安装配置Zookeeper[root@instance-38r7isl1] mkdir /usr/local/zookeeper[root@instance-38r7isl1] cd /usr/local/zookeeper[root@instance-38r7isl1] wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz [root@instance

2020-06-12 10:36:19 23580

原创 状态机StateMachine使用小记

概要:Spring Statemachine状态机之所以强大,是因为始终保证行为是一致的,这使得调试相对容易。这是因为在机器启动时,操作规则是不可更改的。其思想是,应用程序可能存在有限数量的状态,某些预定义的触发器可以将应用程序从一种状态转移到另一种状态。这样的触发器可以基于事件或计时器。在应用程序之外定义高级逻辑,然后依靠状态机来管理状态要容易得多。您可以通过发送事件、侦听更改或请求当前状态来与状态机交互。官网地址:https://projects.spring.io/spring-statemac

2020-06-04 17:42:02 25778 2

原创 ShardingSphere 针对SQL IN语法问题小记

ShardingSphere支持IN语法查询,但也存在问题。官网说明:https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/sharding/当查询多条数据时,入参为分片键,进行测试当数据路由都在一个库同一张表时,会去相应表进行查询(分片键:1504, 1508)2020-05-26 22:05:01.331 INFO 6476 --- [nio-8080-exec-8] Shardi

2020-05-27 15:20:40 27748 2

原创 Mybatis一级缓存及其存在的问题

概要:默认情况下,MyBatis只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。这也就是大家常说的MyBatis一级缓存,一级缓存的作用域是SqlSession。作用域取值有两个:SqlSession和Statement文档:https://mybatis.org/mybatis-3/configuration.html#settingsMybatis plus 基于springboot的配置为:mybatis-plus: configuration: local-c

2020-05-26 18:45:32 26762 5

原创 ShardingSphere问题解决(一)

概要:错误信息 Data sources cannot be emptyshardingSphere版本shardingshpere_version=4.1.0sharding_jdbc_spring_namespace_version=4.1.0compile("org.apache.shardingsphere:sharding-jdbc-spring-boot-starter:${shardingshpere_version}")compile("org.apache.shardings

2020-05-19 09:09:39 53209 10

原创 Sharding JDBC分页查询

概要:虽然数据分片解决了性能、可用性以及单点备份恢复等问题,但分布式的架构在获得了收益的同时,也引入了新的问题。Sharding JDBC默认分页sharding JDBC 默认使用limit进行分页,在不指定路由字段时,分页将会全库全表扫描,然后进行排序。2020-05-11 14:30:04.525 DEBUG 2956 --- [nio-8080-exec-2] c.e.d.m.UserMapper.selectPageByEnable : ==> Preparing: SEL

2020-05-11 21:26:30 41565 3

原创 SpringBoot整合ShardingSphere 小结

概要: ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。官网地址:https://shardingsphere.apache.org/一、相关依赖<dependency> <groupId&gt

2020-05-09 19:10:48 31579

原创 SpringCloud 集成 Nacos 使用小结

Nacos 注册中心Nacos 是 Dubbo 生态系统中重要的注册中心实现,其中 dubbo-registry-nacos 则是 Dubbo 融合 Nacos 注册中心的实现。Nacos服务安装与启动安装地址: https://github.com/alibaba/nacos/releases本文在Windows环境测试,下载zip版,解压。配置conf目录下的applicati...

2020-05-08 16:10:35 39639

原创 Logback配置使用小记

概要:通过logger标签指定类或包下的日志级别,可与root区分。可通过springProfile标签指定不同环境的日志级别<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="10 seconds"> <contextName>myLog&lt...

2020-04-03 15:21:38 30928

原创 MyBatis Plus之逻辑删除和分页插件使用

概要:Mybatis plus 官网链接 :https://mp.baomidou.com/guide/一、依赖配置:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch...

2020-04-03 10:49:54 31843 7

原创 Validation使用小记

一、工具类编写package com.example.demo.util;import java.util.Optional;import javax.validation.Validation;import javax.validation.Validator;/** * 校验工具类 */public class ValidationUtils { private ...

2020-04-02 12:16:14 30955

原创 全局唯一序列号的生成

概要:借助数据库自增主键实现全局唯一序列号的生成;将自增主键放大后,形成区间号段,在内存中分配,从而避免频繁的IO,当达到号段最大值时,重新从数据库获取号段。一、搭建测试application.yml配置server: port: 8080spring: datasource: username: root password: 123456 url: ...

2020-03-21 19:35:09 31838

原创 Redis Zset有序集合实现原理

概要:Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。一、Redis编码简介Redis对象的底层实现数据结构由对象的encoding属性决定,该属性记录了对象的编码,即对象使用的底层实现的数据结构...

2020-03-20 14:15:18 33043

原创 MySQL事务隔离级别小记

概要:在数据库操作中,为了保证并发读取数据的正确性,一致性,提出的事务隔离级别,隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。一、脏读、不可重复读、幻读脏读事务A读取事务B尚未提交的数据,如果事务B执行回滚操作,那么A事务读取到的数据就是脏数据。不可重复读在一个事务中,对同一行数据重复读取两次,但是却得到了不同的结果。幻读事 务在操作过程中进行两...

2020-03-19 22:13:51 31024

原创 ApplicationContext的使用

package com.study.demo.utils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.ApplicationContext;public class ApplicationContextUtil { private static f...

2020-03-12 16:35:06 34875

原创 CentOS部署Redis(详细)

Linux 下安装Redis下载地址:http://redis.io/download,下载最新稳定版本。一、本教程使用的最新文档版本为 2.8.17,下载安装包:新建目录:mkdir /usr/local/rediscd /usr/local/redis/下载地址: wget http://download.redis.io/releases/redis-2.8.17.ta...

2020-02-09 16:45:57 54201 3

原创 PyCharm 2019

PyCharm的破解与IDEA的破解方式基本一致,只在修改配置文件的方式存在一点不同一、官网下载新版Pycharmhttps://download.jetbrains.8686c.com/python/pycharm-professional-2019.3.2.exe二、安装并选择免费试用三、将下载的jar包拷贝到程序安装目录的bin目录下四、安装完成后选择 >> He...

2020-02-09 12:57:54 53922

原创 CentOS部署MySQL 5.7(详细)

MySQL5.7安装步骤查看该操作系统上是否已经安装了mysql数据库rpm -qa | grep mysql如果已存在,进行删除# yum remove + 【名字】没有则根据以下步骤安装1、在/usr/local目录下新建文件夹mysql2、将下载好的linux mysql安装包上传服务器下载地址:https://dev.mysql.com/downloa...

2020-02-09 12:38:27 55270 1

原创 修改Linux服务器SSH默认端口

linux系统的默认端口配置是22,在配置文件/etc/ssh/sshd_config中# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $# This is the sshd server system-wide configuration file. See# sshd_config(5) for mor...

2020-02-09 11:34:02 53544

原创 Java图片验证码简单生成

生成验证码图片主要通过Java AWT中的Graphics对象画图操作,实际操作中,Controller接口可以接收前端随机参数,并保存该参数和生成的验证码的缓存关系,当提交表单时,用于校验表单中的随机码和验证码。下面通过单元测试简单调试验证码图片的生成。package com.study.demo.util;import org.junit.Test;import javax.ima...

2020-02-08 15:35:00 54348

原创 SpringBoot 错误页面跳转

SpringBoot实现MVC 404、500等错误时跳转自定义页面一、新增配置类package com.study.demo.config;import org.springframework.boot.web.server.ErrorPage;import org.springframework.boot.web.server.ErrorPageRegistrar;import ...

2020-02-04 17:19:20 58471 7

原创 SpringBoot 集成 JPA

一、简介:Java Persistence API:用于对象持久化的 API。Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层。JPA 是 hibernate 的一个抽象,将Java应用与数据库解耦,开发者不用关心Sql的编写,和底层数据库的种类。二、示例:引入相应依赖<dependency> <groupId>org....

2020-02-04 11:00:10 56038 1

原创 Spring Boot & MongoDB 实现总结

一、引入数据源配置和依赖<!-- MongoDb --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId></dependency&g...

2020-01-20 15:15:20 56183 1

原创 基于Lua简单实现秒杀场景

看过很多类似的博客,很多都是使用消息队列进行流量削峰,由于消息队列的异步性,并不能实时返回接口,然后前端轮询抢购结果。也有的是在Nginx进行请求随机拦截,直接减少一大半的用户,也可以有效的减少并发量。

2019-12-28 13:50:34 58150 2

原创 基于JNDI 实现读写分离

一、JNDI数据源配置在Tomcat的conf目录下,context.xml在其中标签中添加如下JNDI配置:<Resource name="dataSourceMaster" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" auth="Container" type="javax.sql.DataSource" max...

2019-12-17 19:08:15 56479

原创 Spring Cloud学习【第二篇:配置中心】

配置中心一、引入依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org...

2019-07-09 19:25:58 56035

原创 Spring Cloud学习【第一篇:注册中心】

一、新建Maven项目pom如下:<?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:schema...

2019-07-05 16:35:02 56094

原创 Spring Boot 分库分表

Spring Boot 分库分表方案:可以使用拦截器拦截mybatis框架,在执行SQL前对SQL语句根据路由字段进行分库分表操作,下例只做分表功能@Intercepts:申明需要拦截的方法拦截StatementHandler对象一、statementHandler对象的定义:首先我们先来看看statementHandler接口的定义:首先约定文中将的四大对象是指:executor, ...

2019-07-03 19:58:11 61932

原创 Spring Boot 读写分离

Spring Boot 读写分离简单实现:一、数据源配置此处只简单配置两个数据源,master(主-写)和slave(从-读)@PropertySource读取指定目录下配置文件import javax.sql.DataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springfram...

2019-07-03 19:21:31 56368

原创 JProfiler9安装部署

一、去官网下载对应的windows版本和Linux版本附:https://www.ej-technologies.com/download/jprofiler/version_92二、安装Linux版本上传tar包到对应的目录下,如:/usr/local/jprofile使用 tar vxzf 命令解压tar包 如 : tar -xzvf nginx-1.7.9.tar.gz三、安...

2018-11-25 13:34:24 56654

原创 Java简单正则表达式实现

前言:由于工作中涉及对正则的使用,所以简单的整理一下Java中正则的使用,做一个自我检讨和笔记整理。Java中校验某个字符串是否满足某个规则,可以简单到直接使用String类的matches方法。例如:// 校验手机号码有效性String regex = "^1[3|5|7|8|9]\\d{9}$";String param = "17751033130";boolean resu...

2018-11-20 23:41:27 56268

原创 Redis实现分布式锁机制

Redis实现分布式锁思路  常用的是redis函数是setnx(),这个应该是实现分布式锁最主要的函数。首先是将某一业务标识名作为键存到redis里,并为其设个过期时间,如果是还有加锁请求过来,先是通过setnx()看看是否能将锁的标识插入到redis里,可以的话就返回true,不可以就返回false。    此处使用Lua脚本简单的实现Redis锁的实现 :package com.te...

2018-11-18 11:17:22 58794

原创 Java线程池的使用

对于线程池的使用,应该将线程池置为单例模式,节省内存的开销,线程池线程的数量可以根据业务,内核,cup等进行评估。常用的线程池是使用java并发包中的ThreadPoolExecutor对象。其核心构造参数:核心线程数量(corePoolSize)最大线程数量(maxiNumPoolSize)生存时间(keepAliveTime)时间单位(TimeUnit)队列大小(QueueSi...

2018-11-17 09:27:31 55681

原创 浅谈Redis事务机制

前言:redis是Nosql数据库中使用较为广泛的非关系型内存数据库,常用于数据缓存,共享资源,分布式锁等。Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。Multi单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操...

2018-11-14 20:11:16 56269

原创 JAVA设计模式之单例模式

单例原则:构造私有;以静态方法或者枚举返回实例;确保实例只有一个,尤其是多线程环境;确保反序列化时不会重新构建对象;----------恶汉模式---------public class Singleton { private static Singleton singleton = new Singleton(); private Singleton () { }...

2018-11-14 19:14:30 55912

Elasticsearch 浏览器插件

Elasticsearch在安装在浏览器中的插件,提供可视化界面和相关crud操作,下载完成后解压到文件夹,在浏览器中选择该文件夹进行安装

2020-08-06

python.rar

此为Linux系统64位Python3.7.0安装包,下载后可以根据博主安装步骤进行安装,如有疑问,可以留言

2020-02-20

PyCharm相关依赖

Python开发工具PyCharm的相关文档,包含相关的Jar包和Txt文本,可参考步骤操作,即可使用

2020-02-08

IDEA相关文档下载

有个使用Idea开发的相关文档,可用于长期使用开发工具,如有IDEA有使用不明白地方,可以留言,定会帮忙解答

2018-11-17

空空如也

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

TA关注的人

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