LoveITer
关注数:0 访问量:132409

TA的博文

192

在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一种数据,而且在大数据量的业务下通常都会有多个数据源的。最近恰好工作上遇到一个SpringBoot+Mybatis框架的多数据源配置切换的业务,所以就研究了一下关于Springboot+Mybatis多数据源切换。1.多数据源常见解决方案正常情况下,我们操作数据是通过配置一个DataSource数据源来连接数据库,然后绑定给SqlSessionFactory,然后通过Dao或Mapper指定SqlSessionFactory来操作数据库的。而操作多数据源则更要复杂一点,可以通过如下两种方式来实现:普通的多数据源多个Data...

1.MySQL分表分库底层设计原理2.MySQ分表分库如何查询呢?3.分表分库JOIN连表如何查询4.分表分库之后分页如何查询5.分表分库之后分布式事务如何处理6.分表分库聚合函数如何查询7.分表分库分片策略有哪些8.分表分库后数据如何平滑扩容9.不同场景下如何选择分片算法10.谈谈MySQL启动流程和架构原理11.myisam和innodb索引底层结构12.为什么InnoDb引擎表必须有主键,并且推荐使用整型的自增方式?13.mysql索引优化如何定位慢查询14.EXPLAINType需要达到什么级别15.MySQL索引为什么使用B+树而不是B树16.mysql索引如何避免回表查询17...

使用idea提交代码的时候可能会遇到想要忽略的文件夹出现在提交列表中的情况。以.idea目录举例。假如之前没将.idea目录添加到.gitignore文件中,提交代码的时候又把.idea目录提交上去了,那后面再在.gitignore文件中添加.idea目录是不会让提交列表中的.idea目录消失的,这个时候我们就需要使用命令删除暂存区中的.idea目录。gitrm--cached<file>:这个命令会直接从暂存区删除文件,工作区则不做出改变。"gitrm--cached"命令比"gitresethead"更好,前者是删除掉,后者是替换掉...

其实是没有直接让远端代码回复到某次的指令,实现撤销push的思路如下:1.先让代码恢复到想要恢复的前一次提交记录2.重新提交代码,覆盖端上的代码,就相当于撤销了push的提交实现方式如下:1.首先使用gitlog找到要回退版本的commit版本号;2.gitreset--hard<版本号>,撤回到需要的版本;注意在执行命令之前先把当前工作拷贝一份,不然--hard会将修改全部丢失3.使用gitpush--force覆盖之前的提交

开发中,我们通常会使用maven内置的脚手架也就是archetype来快速生成项目结构。但是在开发中,你会发现maven预先提供的archetyp远远不够,每次新建一个项目,我们都需要从现有的项目copypom.xml,spring的配置文件,一些公共的工具类等,对于多module项目,我们还需要去创建各个module。在这样的背景下,我们就需要使用maven的archetype去定义一个自己想要的代码脚手架以供更快的生成新的项目骨架,可以进行后续开发。简单来说mavenarchetype插件就是创建项目的脚手架,你可以通过命令行或者IDE集成简化项目创建的工作。例如:org.apach...

这两天电脑突然坏了,鼠标不能正常移动了,起初以为是系统出了问题,就在网上搜索了一波教程,下载了一个一键装机工机具,没想到重装系统之后连鼠标都没有了!!!毫无疑问,装机工具给我安装的系统不对劲,作为计算机专业出身而且是程序汪的我怎么能把电脑带去电脑维修店呢!!!于是就又上网寻找了一波教程,终于找到了,并成功将系统还原而且是win10官方纯净版本的,没有Ghost安装带来的各种附带软件,弹窗广告等问题,下面对这次系统安装过程做个记录并分享给大家。一、下载win10镜像按照原文中的教程,首先到微软官网下载win10镜像:微软官网win10下载打开官网之后会要求选择要下载的win10版本,选好会...

引言上篇我们着重对Spring编程式事物进行了源码阅读以及原理分析,了解了Spring事物的运行原理,但这种管理事务的方式的代码侵入行非常高,现在开发基本不会使用这个,而且现在Java开发基本都会使用SpringBoot,配合SpringBoot的自动配置,声明式事物简直不要太好用!本篇就深入SpringBoot源码,看看@EnableTransactionManagement配合@Transactional两个简单的注解(写法简单,但内在其实不简单)是如何帮助我们管理事务的。一、AOP有关概念回顾声明式事务是依赖SpringAOP实现的,即面向切面编程。所谓AOP...一句话概括就是:...

引言Spring提供了两种事物管理实现方式:编程式事务管理:编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制。声明式事务管理:基于SpringAOP实现。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务管理没有入侵代码,通过**@Transactional**就可以进行事务操作,更快捷而且简单(尤其是配合SpringBoot自动配置,可以说是精简至极!)且大部分业务都可以满足,推荐使用。其实不管是编程式事务还是声明式事务,最终调用的底层核心代码是一致的。本章分上下两篇,分别...

引言很多coder在不理解事务的原理甚至连基本概念都不清楚的情况下,就去使用数据库事务,是极容易出错,写出一些自己不能掌控的代码。网上很多文章要不就是概念,或者一点源码,或者一点测试验证,都不足以全面了解事务,所以本文出现了,本系列Spring事务详解包含四部分:第一章讲概念,对事务的整体有一个了解。第二章从源码来看底层实现机制。第三章实例测试验证。第四章总结提高。一、背景1.1拜神Spring事务领头人叫JuergenHoeller,先混个脸熟哈,他写了几乎全部的Spring事务代码。读源码先拜神,掌握他的源码的风格,读起来会通畅很多。最后一节咱们总结下这个大神的代码风格。1.2事务的...

1.Lambda表达式介绍Lambda表达式本质是一种匿名函数,简单地说,它是没有声明的方法,也没有访问修饰符、返回值声明和名字。你可以将其想做一种速记,在你需要使用某个方法的地方写上它。当某个方法只使用一次,而且定义很简短,使用这种速记替代之尤其有效,这样,你就不必在类中费力写声明与方法了。Lambda表达式是Java8提供的一个新的特性,它支持Java也能进行简单的“函数式编程”。它是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambdaabstraction),是一个匿名函数,即没有函数名的函数。Java中Lambda表达式有一般由三...

1.什么是流式编程对于java来说,我们最常用的面向对象编程属于命令式编程(ImperativeProgramming)这种编程范式。常见的编程范式还有逻辑式编程(LogicProgramming),函数式编程(FunctionalProgramming)。java8也引入了函数式编程,结合Lambda表达式,对于函数式接口的实现和使用变得灵活和简洁了。关于函数式接口以及Lambda表达式,今天不做详细的分享和学习,今天的重点是流式编程。流式编程是一个受到函数式编程和多核时代影响而产生的东西。其实,流式编程就是基于JDK8的Stream对于集合一系列的操作的流程定义。2.什么是流JDK起...

1、切换远程仓库地址方式一:修改远程仓库地址【gitremoteset-urloriginURL】更换远程仓库地址,URL为新地址。方式二:先删除远程仓库地址,然后再添加【gitremotermorigin】删除现有远程仓库【gitremoteaddoriginurl】添加新远程仓库2、【gitremote-v】查看远程仓库的地址参考【1】涵一.git切换远程仓库地址.CSDN

现在越来越多的项目就算是一个管理后端也偏向于使用前后端分离的部署方式去做,为了顺应时代的潮流,前后端分离就产生了跨域问题,所以许多同学把跨域和前后端分离项目联系在了一起,其实跨域产生的原因并不是前后端分离导致的,那我们一起来看一下,希望可以靠这一篇文章解答大家所有的跨域问题。跨域产生的条件使用xmlHttpRequest,即我们通常说的ajax请求浏览器做了这个事访问的域名不同,即访问的html页面是a域名下的,但内部js发送的ajax请求的目标地址却是b域名以上三个条件缺一不可,尤其是第三个条件许多做移动端的同学可能都没有听过,因为移动端爽爽的用各种http请求狂发不同的域名,但是浏览...

今天在centOS7下更改完静态ip后发现network服务重启不了,翻遍了网络,尝试了各种方法,终于解决了。现把各种解决方法归纳整理,希望能让后面的同学少走点歪路。。。首先看问题:执行servicenetworkrestart命令后出现下面的错误:根据提示输入systemctlstatusnetwork.service命令后出现如下错误信息:network服务启动不了首先保证/etc/sysconfig/network-scripts目录下的ifcfg-xxx(每台机器不一定相同)没有错误(如果你改动过的话),这里的错误指的在更改过程中因为手误敲错字母之类的。网上最常见的几种做法如下:...

三步走:导包-->写配置-->编码及测试1、引入依赖在SpringBoot工程中直接引入对应的starter就好了rocketmq-spring-boot-starter用法简介当开发中需要快速集成RocketMQ时可以考虑使用rocketmq-spring-boot-starter搭建RocketMQ的集成环境,但该框架并不完全具备RocketMQ所有的配置简化,如需批量消费消息便需要自定义一个DefaultMQPushConsumerbean去消费了。开发中常用的rocketmq-spring-boot-starter相关类:RocketMQListener接口:消费者都...

关于我

大家好,我是一枚理工男!我自从接触C语言开始与编程打交道的时间已三年有余了,很高兴同时也很感激你能点开我的博客网站,此网站是基于SpringBoot(后端)+SemanticUI(前端)搭建而成的,在搭建网站的过程中我不仅巩固了我之前学习过的知识,并且也悟到了些许经验,我将会在之后的日子里一一和大家进行分享。同时如果您对我的项目感兴趣的话,那么您可以在GitHub上动动你发财的小手给此项目(https://github.com/LoverITer/easyblog)一个免费的star或者提出您宝贵的意见,亦或是加入到网站的建设中来真正自定义自己的博客网站。

我的爱好
写作
编程
骑行
电影
我的技术栈
Java
C/C++
R
分布式
Spring
Spring Boot
Redis
Linux
MySQL
MyBatis
数据结构
排序算法
Docker
Nginx
JavaScript
CSS
联系我