
java技术框架篇
文章平均质量分 78
比特科技软件开发工作室
这个作者很懒,什么都没留下…
展开
-
Mysql数据分片技术(一)——初识表分区
1. 为什么需要数据分片技术 2. 3种数据分片方式简述 3. 分片技术原理概述 4. 对单表分区的时机 1为什么需要数据分片技术数据库产品的市场在互联网行业内,绝大部分开发人员都会遇到数据表的性能问题,特别是当单表数据量特别大的时候,就算是添加索引,性能也都差强人意。对于亿级别的数据,有些大的企业会选择性能非常好的Oracle,Oracle属于中大型数据库,能在数据量大的情况下有好的数据处理性能。但是绝大部分小型企业是不会选择昂贵的oracle...原创 2020-09-18 10:34:07 · 833 阅读 · 0 评论 -
Mysql数据分片技术(二)——轻量分库分表框架Sharding-jdbc实例
1. 初识shardingJdbc 2. sharding-jdbc四种配置方式 3. YAML配置方式及mysql环境准备 4. sharding-jdbc分库分表实例测试 5. 轻量的sharding-jdbc在我目前工作项目的集成方案 1. 初识shardingJdbc定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各..原创 2020-09-18 10:33:11 · 672 阅读 · 0 评论 -
Java架构师方案—多数据源开发详解及原理(二)(附完整项目代码)
1. mybatis下数据源开发工作 2. 数据源与DAO的关系原理模型 3. 为什么要配置SqlSessionTemplate类的bean 4. 多数据源应用测试 1. mybatis下数据源开发工作在properties文件中配置两个数据库连接参数demo项目使用的是hikari数据源,配置 数据库地址,用户名,密码,数据库驱动等参数,在DataSource1Config类中通过@ConfigurationProperties(prefix = "sprin..原创 2020-09-18 10:18:09 · 599 阅读 · 0 评论 -
Java架构师方案—简单的邮件系统(附完整项目代码)
1. 邮件发送效果图 2. 邮件开发准备工作 3. springboot引入mail服务 4. 启动应用,开始4种邮件发送测试 1. 效果发送效果图连续发送了四封邮件:普通文本邮件,带附件的邮件,内容包含图片的邮件,发送html邮件。普通文本邮件截图带附件的邮件截图内容包含图片的邮件截图(图片太大,就截取一部分)发送html邮件截图2. 邮件开发准备工作引入pom文件依赖 <!-- 邮件 -->...原创 2020-05-30 23:16:59 · 2949 阅读 · 4 评论 -
Java架构师方案——重试机制原理和应用,还有比这个讲的更好的吗(附完整源码)
1. 理解重试机制2. 总结重试机制使用场景3. spring-retry重试组件4. 手写一个基于注解的重试组件5. 重试机制下会出现的问题6. 模板方法设计模式实现异步重试机制如果有,请转给我!理解重试机制“重试是为了提高成功的可能性“反过来理解,任何可能失败且允许重试操作的场景,就适合使用重试机制。但有了重试机制就一定能成功吗?显然不是。如果不成功就一直重试,这种处理方式会使得业务线程一直被重试占用,这样会导致服务的负载线程暴增直至服务宕机,因此需要限制重试次数。失败原创 2020-05-28 23:17:03 · 628 阅读 · 0 评论 -
Java架构师方案—透彻理解「状态机」的全套机制 (附完整源码)
消息传递事件监听多个以及多种状态机并存状态分支状态机工厂1. 消息传递状态机可以看成是一个控制中心,接受外部的事件信号进行状态转移,而状态转移也是在状态机初始化的时候就设置好了的。但实际业务中,我们不仅仅只是需要控制中心进行状态转移,还会需要进行一些业务的处理。状态机机制中的事件处理器执行相关业务逻辑,就会需要获得业务的数据,这时候触发事件时候就需要传递业务数据到处理器中,正好spring的状态机类statemachine提供了传递事件消息的api。如下图:SpringBoot系列—透彻.原创 2020-05-24 22:38:40 · 2492 阅读 · 0 评论 -
Java架构师方案——状态机(附完整源码)
1. 简单介绍状态机2. 状态机的本质3. 状态机应用场景简单介绍状态机状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。以上是百度百科对状态机的解释。在百科的解释中,我们可以提炼出状态机的几个要素:存储状态,逻辑电路,预先设定的状态转移路径,外部来的信号,内置的特定操作等。由这些关键要素我们可以推断出以下几点:状态数据有预先设定的多种值逻辑电路是完成内置特定操作的基础“代码“(基础设施),由工程司开发原创 2020-05-24 22:33:08 · 2035 阅读 · 0 评论 -
简单排序算法时间空间复杂度分析及应用(3)-快速排序
简单排序算法时间空间复杂度分析及应用(3)-快速排序和之前的两种算法比较: 1.快速算法适合在n值(排序规模比较大)较大的场景下使用,快速排序算法时间会少一点。 2.冒泡排序和插入排序适合n值较小的场景下使用,如果待排序区并不是都杂乱无序,即有些区域是有序 的,使用冒泡排序和插入排序比较好一点。 3.快速排序适合用在次序分布随机的场景下应用。原创 2017-04-26 00:38:46 · 932 阅读 · 0 评论 -
JDK源码分析--多线程同步工具CountDownLatch类
CountDownLatch类运用了java开发模式中的策略模式。对线程作用的是CountDownLatch类中的内部类Sync。Sync类继承了AbstractQueuedSynchronizer类,AbstractQueuedSynchronizer类是jdk多线程同步功能的重要类。CountDownLatch类有两个很重要的方法:await和countDown。这两个方法内分别调用的是A原创 2017-09-15 16:34:22 · 384 阅读 · 0 评论 -
spring容器框架定时任务实现的两种方式
spring容器框架自带一种定时任务 工具 spring Task 以及另外一种定时任务设置工具Quartz。spring Task 方式:这种定时方式其实是一种轻量的Quartz,这种方式有两种方法实现spring task的定时任务1. 注解形式直接在定时任务类上配置注解:@Component , @Scheduled(cron="*/1 * * *...原创 2017-07-05 14:46:35 · 3047 阅读 · 1 评论 -
简单排序算法时间空间复杂度分析及应用(2)-插入排序
简单排序算法时间空间复杂度分析及应用(2)-插入排序 上一篇文章提到了一些新的概念,不言而喻,概念的功能对人类来说是一项伟大的发现,百度对“概念”的定义是这样的:概念具有两个基本特征,即概念的内涵和外延;概念的内涵就是指这个概念的含义,即该概念所反映的事物对象所特有的属性。 简而言之,内循环,外循环,循环方向,循环节点这些概念能让我们的大脑清晰清楚算法的作用过程原创 2017-04-25 22:11:03 · 810 阅读 · 0 评论 -
简单排序算法时间空间复杂度分析及应用(1)-冒泡排序
简单排序算法时间空间复杂度分析及应用-冒泡排序 冒泡排序算法,我上大学一开始接触的算法就是冒泡排序算法,这是算法入门知识,通过冒泡排序算法我接触了循环的概念,循环有开始节点和结束节点,并且算法会经历所有的中间节点(包括始节点和终节点),走过节点的顺序方向从始节点到终节点,算法会比较节点前后的节点,然后根据节点的值大小和排序顺序来决定这个节点前后节点是否交换,当循环终结后,就能得到排序想要的结果原创 2017-04-17 23:45:01 · 1066 阅读 · 0 评论 -
简单排序算法时间空间复杂度分析及应用(4)-二分插入排序
简单排序算法时间空间复杂度分析及应用(4)-二分插入排序 背景:顾名思义,这个二分插入排序是直接插入排序的进化版,主要变化的地方就是在内循环部分,即外循环的循环节点在确定区域的位置查询方式由原来的直接循环 比较变为二分法的方式来查询,在这确定区域数据都是已经排好序了的。 分析:这种插入排序属于插入排序中的先确定插入位置,后进行...原创 2017-06-20 15:53:03 · 2791 阅读 · 0 评论 -
简单排序算法时间空间复杂度分析及应用(5)-堆排序
简单排序算法时间空间复杂度分析及应用(5)-堆排序堆排序,属于选择排序的一种,两层嵌套循环,内循环结束后确定最大或最小的值,然后和外循环的节点交换值,待外循环结束后,整个数组排序完成。 在所有的排序算法中,核心问题是:循环体有几个?嵌套循环?外循环体的起始节点和最终节点?内循环的?算法的最初状态以及最终状态(包括确定区域,非确定区域,区元,循环节点位置)?算法单元操作(指:在每个原创 2017-06-21 16:38:31 · 444 阅读 · 0 评论 -
最小公倍数和最大公约数方法
求最大共倍数和最小公约数的数学公式:a%b = mod 。 a和b的最大公约数与 b和mod的最大公约数是相等的。下面是java下的实现:public class MathUtil { /* * 最大公约数 */ public static int gcd(int a , int b){ int gcd = 1 ,max ,min,mod; max原创 2017-06-30 16:58:00 · 466 阅读 · 0 评论 -
简单排序算法时间空间复杂度分析及应用(6)-鸡尾酒排序(双冒泡排序)
简单排序算法时间空间复杂度分析及应用(5)-鸡尾酒排序(双冒泡排序)顾名思义,鸡尾酒排序是属于冒泡排序的一种改进,从数据集合的两边进行冒泡排序,因此在排序过程中确定数据区域会有两个,分别在数据集合两边,中间为非确定数据区域基本概念: 1.双冒泡排序 ,外部循环的两个循环节点向两边靠拢p , q(p 2.两个同级别的内循环,分别以外循环的两个循环节点为循环终点(p+1原创 2017-06-23 13:02:49 · 1344 阅读 · 0 评论 -
简单排序算法时间空间复杂度分析及应用(7)-希尔排序
希尔排序,属于插入排序的一种,是直接插入排序的加强版。在希尔排序中引入了步长(gap)的概念,然而在插入排序中,步长默认为1。正如我们直接堆插入排序的分析,数据集合的排列顺序对插入排序的效率会由很大的影响,而且影响会很大。而希尔排序正是从这个方向对直接插入排序进行加强。 基本概念:将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序...原创 2017-06-23 14:35:45 · 2508 阅读 · 0 评论 -
简单排序算法时间空间复杂度分析及应用(8)-归并排序
归并排序采用的是分治的思想,先把数据集和分成两个子数据集合进行归并排序,然后将已经排好序的两个子序列合并成一个有序的数据集合,归并排序是一个非常稳定的排序算法。基本概念: 归并排序具体算法描述如下(递归版本): 1、Divide: 把长度为n的输入序列分成两个长度为n/2的子序列。 2、Conquer: 对这两个子序列分别采用归并排序。原创 2017-06-23 16:00:57 · 908 阅读 · 0 评论 -
SSH框架中action和jsp之间的是如何工作的,深入研究(持续更新中)
JSP页面struts标签是如何与action类交换数据struts标签有<s:property /> , <s:TextField /> , <s:select />, <s:iterator/> <s:checkbox/>等等。 strut...原创 2017-01-19 16:29:20 · 3247 阅读 · 1 评论