自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 Centos7上安装MySQL8教程

MySQL8在Centos7系统上的安装和配置

2022-08-02 14:14:44 922

原创 聊聊Spring Boot 2.x中关于Hikari Pool配置的问题

文章目录前言有问题的配置方式正确的配置方式前言在Spring boot 2的版本中默认使用了 Hikari数据库连接池,号称是世界上最快的连接池技术。在我们项目中使用了自定义数据源的方式初始化数据库连接,问题:关于Hikari相关的配置maximum-pool-size并未能生效,现总结问题如下有问题的配置方式yml文件spring: datasource: db0: url: jdbc:mysql://localhost:3306/cockpit_data u

2022-04-19 10:56:59 2764

原创 聊聊 Spring Session的实现

文章目录引言使用源码分析@EnableRedisHttpSessionRedisHttpSessionConfigurationSpringHttpSessionConfigurationSessionRepositoryFilter总结引言在Web项目由于Http的无状态性,如何存储用户的会话信息是一个普遍的问题,在传统的单体项目中用户会话信息Session存储在系统内存中,也就是堆内存的Map中。随着前后端分离和微服务的架构遍地开花,传统的Session-Cookie方案已不能满足项目的要求。因为项

2022-04-02 11:06:49 1417

原创 关于数据库和缓存一致性问题的思考

文章目录前言什么情况下会导致缓存不一致呢?先更新缓存,后更新数据库先更新数据库,后更新缓存先删除缓存,后更新数据库串行执行并发执行先更新数据库,后删除缓存串行执行并发执行解决方案设置缓存超时时间分布式锁(读写串行化)异步补偿人工处理感谢前言在项目中,因为缓存具有高性能、高并发的特性而被大家广泛的使用。但是常常我们会遇到一个问题:当需要更新数据库的时候怎么保证缓存里的数据和数据库里面的数据始终保持一致呢?这个问题就是著名的数据库和缓存的双写一致性问题为了不让内容显得空洞,帮助一些没有对此问题没有一点直

2022-03-25 16:07:09 1540

原创 Redis常用数据结构之字符串

文章目录前言什么是SDS代码定义SDS与C字符串的区别获取字符串长度时效率不同避免缓冲区溢出减少字符串修改时重新内存分配的次数空间与分配惰性空间释放二进制安全总结前言你要是问我,在程序世界中我们程序员打交道最多的一种数据类型是什么?我肯定会回答你是 字符串那么在Redis中是如何实现的这种字符串数据结构呢?在Java中我们有 java.lang.String类,在C语言中通过char[]字符数组实现的字符串,总所周知Redis是由C语言实现的,那么Redis中的字符串就是通过C语言的char[]字符

2021-09-16 17:36:44 152

原创 基于CAS思想实现的前后端分离单点登录

文章目录前言在下的遇到的问题前后端分离场景重定向问题安全问题流程设计代码实现服务端客户端前言SSO(Single Sing On)单点登录是一种架构,一种思想。CAS(Center Authentication Server)中心授权服务 是一个开源的协议,是SSO的一种具体的实现。当然SSO还有其他的实现,比如Cookier同域名的场景。Auth是一种授权协议,不涉及具体代码,只是表示一种约定的流程和规范。Oauth协议一般是用于用户决定是把自己在某个服务上的资源(头像、照片等资源)授权给第三方

2021-09-06 15:18:18 801

原创 延时通知解决方案

文章目录前言各种实现基于JDK的DelayQueue基于Redis的Key过期事件通知基于RabbitMQ的延时队列总结前言这段时间项目中遇到了客户提出的新的功能,需要当用户参加志愿者活动的时候,在改活动开始的前5分钟和后10分钟推送一条微信消息到用户的微信上。其实这样的延时操作的场景还有很多,比如常见的电商系统里面的30分钟订单为支付就关闭这种功能。然后我进行技术方案的调研,发现目前能满足该业务场景方案主要有以下几种:轮询数据库表 ,构建消息之后存放到数据库中,然后开启一个每分钟执行定时任务扫描

2021-08-31 22:17:03 672

原创 ReentrantLock源码分析

前言ReentranLock是JDK中基于AQS实现的一种可重入的排它锁,实现了Lock接口,提供了锁的基本操,例如加锁、解锁;使用public class ReentratLockDemo{ private static int state = 0; private Lock lock = new ReentrantLock(); public static void main(String[] args){ lock.lock(); //加锁

2021-08-24 21:12:58 117

原创 《Redis从入门到实战》系列——Redis基础01、概述和安装

Redis概述Redis由来2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,没多久该公司的创始人Sanfilippo对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。什么是RedisRedis(全称:Remote Dictionary Server 远程字典服务)是一个开源的、使用C语言编写、支持网络、可基于内存亦可持久化的Key-Value数据库,并提供多种语言的API。

2021-07-05 17:48:28 179 3

原创 一个幂等性问题引起的对synchronized的思考

遇到的问题最近在维护公司的一个老项目,这个项目是一个完完全全的单体应用。有一个用户签到加积分的接口,为了防止用户多次请求而导致数据库插入多条记录的问题。简而言之就是需要保证一个新增接口的幂等性问题。这里就不赘述其他的解决方案了,比如说可以在数据库做唯一索引、token机制,单体应用可以用synchronized或者JDK自带的ReentrantLock等等。问题探讨与结论最初我想到的是,直接在方法上面加一个synchronized关键字,来修饰这个方法。这样毫无疑问是最简单的一种.public s

2021-06-16 22:37:49 276 1

原创 JVM学习笔记

文章目录目的JVM内存模型垃圾收集对象是否存活算法收集算法经典的垃圾收集器JVM常用的一些工具虚拟机类加载机制类加载时机类加载器双亲委派模型的工作过程目的最近一周通读了一遍《深入理解Java虚拟机:JVM高级特性和最佳实践》(第三版),在读书的过程记录了一些大量知识点,现在输出一篇文章,将书读薄。(都是基于HotSpot虚拟机的)JVM内存模型程序计数器:记录当前程序执行的位置,便于线程切换更够恢复到当前的问题位置(线程私有,每个线程独立拥有一个程序计数器)堆: 几乎是Java所有对象实例分配到

2021-06-14 13:18:18 73

原创 Java-EasyExcel导出Excel优化记录

文章目录背景调优过程以前的代码重构第一版重构第二版总结背景最近公司一个项目,需要将系统里面的用户相关的数据导出到Excel,随着用户数据不断增长,现在已经有200多万的数据了。原来的导出方式,导致系统频繁出现内存溢出,迫不得已必须进行改造。调优过程以前的代码 String fileName = URLEncoder.encode("志愿者数据" + DateUtil.today(), "UTF-8"); response.setContentType("application/vnd

2021-06-10 11:36:51 1037 2

原创 关于Mysql查询条件为char类型的问题

问题今天在程序员交流群里面,抛出了一个问题;mysql的表有一列的类型是char(1) select 这列 = 0为什么可以搜索出来所有的值?表设计:数据库中的数据:查询的SQL:SELECT * FROM test where `status` = 0 查询结果:明明不应该出现Y和N的数据,为什么能够被查询出来呢?当我尝试吧数字0换成字符0的时候,再做一次查询,没问题原因传入的搜索条件是整数,mysql会把字段的值转为整数在比较,如果字段的第一位是字符串,那么转为整数就

2021-05-13 16:42:19 1185

原创 二叉树的遍历

文章目录二叉树定义递归前序中序后序非递归前序中序后序二叉树定义public class ThreeNode { public int value; public ThreeNode rigth; public ThreeNode left; public ThreeNode() { } public ThreeNode(int value) { super(); this.value = value

2021-05-06 13:39:35 71

原创 记一次Mysql隔离级别和分布式锁引起的“惨案”

文章目录问题现象定位过程解决方案原因及总结问题现象前段时间,客户反映批量给用户添加积分的时候有些用户能够操作成功,有些用户不能操作成功。如果不是批量添加(是前段连续多次调用添加积分的接口)每个用户都能操作成功。错误代码如下: @Transactional(rollbackFor = Exception.class) @Override public Boolean addByUserCode(String userCode, String ruleCode, int point, Strin

2021-05-06 11:31:02 131 1

原创 Java基础知识点复习

文章目录关于final关键字的总结线程、进程和程序的概念,以及他们之间的关系hashCode 和 equals的规定hashCode有什么作用为什么要重写hashCode()和equals()呢持续更新关于final关键字的总结final 关键字可以修饰在三个地方: 变量、方法、类对一个final变量:如果final修饰的是的变量是基本数据类型,则其数值不能被修改。如果修饰的是引用数据类型,其引用不能指向其他的对象。final修饰类: 被final修饰的类不能被继承,final修饰的类默认

2021-04-06 18:00:27 81

原创 使用策略模式实现多场景登录

文章目录遇到的问题什么是策略模式详细例子传统策略模式总结类关系图遇到的问题我们在平时的开发过程中,常常遇到一些逻辑比较复杂的业务,通常我们需要使用大量的if … else 的分支结构去判断之后选择一种算法逻辑去执行。不仅不够优雅,而且这些编码都是硬编码,不利于动态的扩展。时常面临产品的同事说,今天需要对接微信的登录,明天需要接入支付宝登录等等这种场景,优雅的、易于维护的、可扩展的代码结构变得十分重要。什么是策略模式定义一系列算法,把它们一个个的封装起来,并且它们可以相互替换,主要解决在多种相似算法

2021-04-01 20:40:30 1007 1

原创 使用Alibaba Cloud Toolkit 自动化部署war/jar包

在开发测试的过程中,我们常常遇到这么一种情况。测试同事,提交了需要修改的bug清单以后,开发人员将bug修改以后,重新打包发布到测试环境上,可能一天会重发打包、上传、kill、启动这些命令很多次,造成了工作效率的下降。这里我没有使用CI/CD的工具,只是结合了Alibaba Cloud Toolkit插件,需要了解的同学可以移步至Alibaba Cloud Toolkit编写脚本在目标服务器上面创建一个shell脚本,名称为manageapi.shell,内容如下:#!/bin/bashJAR_P

2021-03-18 13:08:14 382

原创 BeanPostProcesser和BeanFactoryPostProcesser的理解

文章目录BeanPostProcesser和BeanFactoryPostProcesser的理解介绍BeanPostProcessorBeanFactoryPostProcesser使用Spring Bean的生命周期BeanPostProcesser和BeanFactoryPostProcesser的理解这段时间在仔细研读Spring的官方文档,看到了这个两个接口。文档中花了较大的篇幅介绍这两个接口。这个两个接口都属于容器扩展点类的接口,作用是影响Bean的初始化过程,说白了就是一种AOP的思想,对

2021-03-17 14:18:26 213

原创 Spring的两种IOC容器

文章目录Spring IOC容器BeanFactory怎样创建BeanFactoryBeanFactory中的方法ApplicationContext几种ApplicationContext如何创建ApplicationContextSpring IOC容器Spring IOC 容器是整个Spring框架的核心部分。容器会创建对象,配置对象之间的依赖关系,并且还会管理这些对象完整的生命周期。Spring IOC容器使用 依赖注入(D) 来管理组成应用程序的组件。Spring主要提供了两种IOC容器:

2021-03-15 10:49:11 1059

原创 Spring项目中自定义注解校验参数

文章目录Spring项目中自定义注解校验参数为什么要使用注解的方式校验参数常见参数校验注解自定义参数校验注解Spring项目中自定义注解校验参数为什么要使用注解的方式校验参数在Web项目中参数校验是一项非常重要的事情,只有合法的符合我们程序逻辑的参数才能被正常执行。哪些不合法的参数如果被提交到程序的业务逻辑的时,可能会出现系统错误或者是数据混乱。在以往的项目中我们大多数还是使用的 if 判断的方式逐个校验参数。通常我们会把这些校验参数的代码直接耦合在 service层或者 controller层中。

2021-03-09 17:51:35 969

原创 上传文件超过1M,报跨域错误

文章目录上传文件超过1M,报跨域错误问题现象:定位过程:解决方案:上传文件超过1M,报跨域错误问题现象:今天在和前端同事调试商品管理功能时候,给商品上传图片不能正常上传。抛出:Access to XMLHttpRequest at 'https://xxx/manageapi/file/upload' from origin 'http://xxx:18080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' hea

2021-03-04 11:10:24 2649 2

原创 MapDb学习笔记

文章目录MapDb学习笔记一、介绍二、快速开始Hello World快速提示DB 和 DBMaker数据结构HtreeMap简介重要特性和参数ExpirationShadrder Store原理BtreeMap简介重要参数serializersMapDB数据结构和JDK Collection性能比较环境:测试JDK ConcurrentHashMapMapDb学习笔记一、介绍MapDb是一个开源的,内嵌的Java数据引擎和集合框架。提供了Map,Set,List,Queue,BitMap,支持范围查询,

2021-03-02 13:08:45 1578

原创 IDAE中使用 Mybatis时Invalid bound statement (not found) 错误

原因因为我们的项目把Mapper.xml文件放在了 src/main/java 的目录下面,导致Idea在编译的时候不会classes下面生成xml文件。源码目录下:编译过后的classes目录XML文件在编译的时候被忽略掉了。解决办法在Maven的 pom.xml文件中添加如下配置即可<build> <resources> <resource> <directory>src/main/java</directory&gt

2021-02-09 14:59:54 75

原创 分布式文件存储系统Ceph安装

1.1 Ceph介绍​ Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。对比说明TFSFASTDFSMooseFSGlusterFSCEPH开发语言C++CCCC++数据存储方式块文件/Trunk块文件/块对象/文件/块在线扩容支持支持支持支持支持冗余备份支持支持支持支持支持单点故障存在不存在存在不存在不存在易用性安装复杂,官方文档少安装简单,社区相对活跃安装

2021-02-06 00:18:59 349

原创 Nacos 服务注册与发现之源码解密

什么是NacosNaocs 是Alibaba开源的微服务生态中的一个组件,可以实现微服务治理中的服务注册发现,配置中心功能。项目地址: https://github.com/alibaba/NacosService is a first-class citizen in Nacos. Nacos supports discovering, configuring, and managing almost all types of services:Kubernetes ServicegRPC &

2020-09-10 11:33:45 1356

原创 Naocs 简单使用,让程序先跑起来

Naocs 快速入门今天我又来了,上次搭建好了Nacos集群。在上次的基础上,使用Nacos完成服务的注册于发现,以及使用它的配置中心的功能。Nacos 注册中心上手​ 我们创建两个SpringBoot项目 (服务提供者和服务消费者)spring-cloud-nacos-providerspring-cloud-nacos-consumerspring-cloud-nacos-provider​ 引入服务注册发现的依赖 <dependency> <grou

2020-09-04 16:57:54 515

原创 这样搭建Nacos集群 我行,你也行

Nacos集群搭建最近开始在学习Spring Cloud Alibaba的微服务生态。打算把里面的全部组件都好好的学习一边,所以该系列的文章还会持续的更新,希望小可爱们可以点一波关注。哈哈哈O(∩_∩)O一、前提条件有三台或者三台以上的宿主机(没有这个多的同学也可以只准备一台内存4GB以上的物理机,采用Docker的去搭建集群也行,后面我会在出一版Docker搭建过程的文章)nacos-server-1.3.2.tar (这是我用的1.3.2版本)准备Jdk 1.8 Oracle版本的,Or

2020-09-01 14:40:03 417

原创 大雄,你好坏哦。我好喜欢(学习观察者模式)

先上图什么是观察者模式观察者模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象,同时监听某一个主题对象。这个主题对象状态发生改变的时候,会通知所有得观察者对象,使得它们可以自动更新自己。上面的定义是抽象的,对于很多同学而言第一次看到这种很官方的定义都感觉有点蒙蔽。当然咱们今天的这篇文章就是将抽象的定义用实实在在的代码将其实现,里面穿插着一些小故事。进入故事先来看...

2020-04-06 16:38:16 378

原创 HTTP中的各种状态码说明

HTTP中的各种状态码说明在日常的开发过程中,我们经常会遇到各种各样的HTTP状态码,它们可能是200,500,404,403等等,我所举出的例子当然是不完全的,其中还有非常多的状态码没有涉及到。今天咱们就将HTTP协议中的所有状态码都简单的了解一下,方便以后在记不住某个状态码是什么意思的时候可以查询一下,所以一定要记得收藏哦。(●’◡’●)状态码的职责收当客户端想服务器端发送请求时,描述返回...

2020-03-29 13:54:32 505 1

原创 Java8 几道Stream流练习题

题目(1) 找出2011年发生的所有交易,并按交易额排序(从低到高)。(2) 交易员都在哪些不同的城市工作过?(3) 查找所有来自于剑桥的交易员,并按姓名排序。(4) 返回所有交易员的姓名字符串,按字母顺序排序。(5) 有没有交易员是在米兰工作的?(6) 打印生活在剑桥的交易员的所有交易额。(7) 所有交易中,最高的交易额是多少?(8) 找到交易额最小的交易。题目来自《Java...

2020-03-28 13:33:26 2465 3

原创 Java8-(4种方式)实现List元素的排序

先来一个故事背景把,咱们现在在给一位农民伯伯设计一个苹果库存管理系统。他现在有这样的一个需求:想要对苹果库存里面的所有苹果,按照苹果的重量weight排序。这里咱们简单的使用List集合作为我们的仓库,快来看看如何一步一步的实现的更加简洁吧。先来一个Apple类public class Apple { private String color; private Double...

2020-03-27 10:55:04 2614

原创 谈谈Java中锁机制(自旋锁)

什么是自旋锁自旋锁的定义:当一个线程尝试去获取某一把锁的时候,如果这个锁已经被另外一个线程占有了,那么此线程就无法获取这把锁,该线程会等待,间隔一段时间后再次尝试获取。这种采用循环加锁,等待锁释放的机制就称为自旋锁(spinlock)为什么需要自旋锁由于在多处理器的环境中某些资源的有限性,有时需要互斥访问,这时候就需要引入锁的概念,只有获取到锁的线程才能对临界资源进行访问,由于多线程的核心是...

2020-03-24 15:48:31 1892 1

原创 Java-为啥要用模板模式呢

什么是模板方法模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中去具体实现。模板方法可以使得子类不改变算法的结构就可以重新定义算法的某些特定步骤。上面就是给出的比较官方的定义,读起来是有点绕口,不过个人认为定义的是非常的标准和仔细。不信你可以先看看下面的具体代码是怎么实现之后在回过头来品味。你品,你细品~~~为什么要使用模板方法模式学习一个设计模式,我们都会问这么写有什么意义呢?为...

2020-03-15 21:40:58 340

原创 Java-这就是单例模式!

什么是单例模式单例模式,自己负责创建自己的对象这个类提供了,一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。通俗的讲就是保证在整个应用程序的生命周期中只会被创建一次。为什么需要使用单例模式1.避免对象被不断的创建,消耗不必要的系统资源。2.如果不使用单例,可能在某些程序运行的时候将会出现错误。下面举一个例子,证明如果不使用单例会使什么样子的。定义一个ShareResou...

2020-03-14 21:20:42 1865

原创 谈谈Java中的锁机制(悲观锁和乐观锁)

谈谈Java中的锁机制(悲观锁和乐观锁)图片引用自:GitChat线程是否需要对资源加锁分为两类悲观锁悲观锁是一种消极的思想,它总是认为会有最坏的情况出现,它总是认为数据是会被修改的,所以它会在持有资源的时候把资源和数据锁住。这样其他的线程要请求这个资源的时候就会被阻塞,直到悲观锁把资源释放了。悲观锁有许多的应用场景,最常见的就是我们经常使用的的传统关系型数据库的锁机制。比如行锁,表锁,...

2020-03-12 14:53:30 509

转载 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

 转载于 http://blog.csdn.net/luanlouis/, MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。一、MyBatis的框架设计        注:上图很大程度上参考了iteye 上的c...

2018-06-30 12:32:30 161

原创 Ajax模仿百度搜索框的自动提示功能

Ajax模仿百度搜索框的自动提示功能    啊啊,熬夜了。今天学习了ajax给我的感觉就是,”哇塞“ajax好酷炫哦,(额。。。后端狗,接触到了大前端的魅力了),这么晚了还是直奔主题把。Let's go!百度搜索提示框,我想大家都很熟悉了把,是什么样子我也就不再赘述。直接看代码来我们写一个简陋的jsp页面  Look! 是这个样子的下面是代码:&lt;%@ page language="java"...

2018-06-18 00:42:49 5900 6

原创 Ajax实现判断用户名是否重复

                                                       Ajax实现判断用户名是否重复        今天刚看完Ajax的一些简单的介绍,本着好好学习,day day up的信念,于是乎自己就写了这么一个简单的判断用户名是否存在的的小demo。好了,废话就不多说了,直接上代码吧,Let's go!    首先,我们需要写了我们的Jsp页面&lt...

2018-06-17 20:30:47 11008 5

原创 Servlet相关类总结

servlet相关类-- 创建servlet的三种方式定一个类实现javax.servlet.Servlet接口定义一个类继承javax.servet.GenericServlet类定义一个类继承javax.servlet.http.HttpServlet类Servlet(爷爷) –&gt; GenericServlet(爸爸) –&gt; HttpServlet(儿子)-- Servlet相关类...

2018-06-13 20:55:13 274

一键生成数据库说明书文档工具

只支持Mysql数据库!只能用Wps打开!采用了Swing的桌面可视化方法,只需要输入数据库ip,端口号,用户名和密码等信息,就可以一键生成数据库的文档说明书。里面还有使用手册帮助大家快速使用。 注意:该工具采用Freemarker技术,所以切勿删除压缩包下的temp.ftl文件!!!!!!!

2019-03-27

xftp-6最新版本

连接远程服务器的工具。。。。。。。。。。。。。。。。

2018-06-20

空空如也

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

TA关注的人

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