- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 Oracle中的Hint
Hint是Oracle数据库里SQL优化的终极手段,通常用于直接指定目标SQL的执行计划,它作为一种非常规的直接影响优化器,指定执行计划的手段。深入理解Hint,能明白Hint是如何影响优化器对于执行计划的选择的,进而用好Hint,能起到事半功倍的效果。1 什么是HintHint实际上是一种特殊的注释,它以一种固定的格式和位置出现在SQL语句的SQL文本中,可以影响优化器对于执行计划的选择,但这种影响不是强制性的,优化器在某些情况下也可能忽略目标SQL中的Hint,即使这个Hint在语法和语义上是有
2021-04-28 13:35:14
9678
原创 Oracle查询转换
1.背景在Oracle数据库里,我们发给Oracle让其执行的目标SQL和其实际执行的SQL有可能是不同的,因为Oracle可能会对待执行的目标SQL做等价改写,这种等价改写就是所谓的查询转换,查询转换是整个SQL执行过程中的重要一步,因此,清楚认识Oracle中的各种查询转换规则以及为什么Oracle要对目标SQL做查询转换有助于提高写出更高效率SQL的可能性。下文将针对Oracle中的多种查询转换进行详细介绍。2.查询转换介绍如上图所示可以清楚的看出目标SQL从发出到执行结果返回用户的整
2021-04-08 08:40:38
1126
原创 Oracle正确使用绑定变量对系统性能提升探索
对于OLTP类型的应用系统而言,据库端性能的优劣对系统整体的运行有至关重要的影响,而影响SQL语句,PL/SQL代码执行效率的因素多种多样,其中一条比较重要则是对于SQL语句的硬解析数量在SQL解析中所占的比重,如果SQL硬解析所占的比重较高,将会对系统性能产生较大影响。如下是关于对Oracle中通过合理使用绑定变量带来的性能改善的一些探索
2021-03-09 10:38:54
1501
10
原创 java深克隆与浅克隆的区别原理及其实现
一、为什么要克隆?答案是:克隆的对象可能包含一些已经修改过的属性,保留着你想克隆对象的值,而new出来的对象的属性全是一个新的对象,对应的属性没有值,所以我们还要重新给这个对象赋值。即当需要一个新的对象来保存当前对象的“状态”就靠clone方法了。那么我把这个对象的临时属性一个一个的赋值给我新new的对象不也行嘛?可以是可以,但是一来麻烦不说,二来,大家通过上面的源码都发现了clone是一个n...
2020-03-19 19:56:55
275
原创 java递归的应用示例
递归就是直接或间接的调用自己,体现了以此类推,重复同样的步骤。1.三角数 所谓三角数第一项的值为1,第n项的值为n-1项的值加n,如下为java实现三角数,求第n项的值package com.mathmatic;/** * * @author cdh * */public class DiGui { public static int threeMath(int ...
2020-03-19 19:33:22
180
原创 选择排序算法的思想及其java实现
选择排序的基本思想是:如果有N个元素需要排序,那么首先从N个元素中找到最小的那个元素与第0位置上的元素交换(说明一点,如果没有比原本在第0位置上的元素小的就不用交换了,后面的同样是),然后再从剩下的N-1个元素中找到最小的元素与第1位置上的元素交换,之后再从剩下的N-2个元素中找到最小的元素与第2位置上的元素交换,.......直到所有元素都排序好(也就是直到从剩下的2个元素中找到最小的元素与第N...
2020-03-19 19:14:07
188
原创 冒泡排序算法的思想及java实现
冒泡排序的中心思想是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾。冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。2.对每一对...
2020-03-19 19:11:59
513
原创 快速排序算法思想及其java语言实现
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:选择序列中的某个数作为基准值 通过一趟排序将要排序的数据分割成独立的两部分,其中左边的数据都比基准值小,右边的数据都比基准值大然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。如下为快速排序算法的java语言代码实现public class QuikSort...
2020-03-19 18:45:57
181
原创 微服务系列之Nacos注册中心源码解读
源码下载地址:https://github.com/alibaba/nacos从官网架构图中可以看出nacos内部提供了nacos-namign和nacos-config两个服务,作为注册中心和配置中心,nacos-core作为nacos-naming和nacos-config两个模块的公共支持部分,提供了一些相关工具类Nacos通过提供一系列的http接口来提供Naming服务...
2020-02-25 14:45:13
1379
1
原创 @ConditionalOnProperty注解详解
Spring boot中的注解@ConditionalOnProperty,可以通过配置文件中的属性值来判定configuration是否被注入@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.TYPE, ElementType.METHOD })@Documented@Conditional(OnPropertyCon...
2020-02-18 09:36:30
2621
原创 CentOS8安装nginx详细教程
Nginx发音为“ engine x”,是一种开源的高性能HTTP和反向代理服务器,负责处理Internet上一些最大站点的负载。它可用作HTTP和非HTTP服务器的独立Web服务器,负载平衡器,内容缓存和反向代理。与Apache相比,Nginx可以处理大量并发连接,并且每个连接的内存占用量较小。本教程说明了如何在CentOS 8上安装Nginx。//进入到local目录下c...
2020-01-07 10:17:52
9071
3
原创 springcloud之HystrixCollapser请求合并
目录1.HystrixCollapser所要解决的问题2.HystrixCollapser的实现方式3.请求合并的原理4.请求合并的额外开销1.HystrixCollapser所要解决的问题通常微服务架构中的依赖通过远程调用实现,而远程调用中最常见的问题就是通信消耗与连接数占用。在高并发的情况之下,因通信次数的增加,总的通信时间消耗将会变的不那么理想。同时,因为对依赖服务...
2019-12-22 13:25:40
503
原创 java并发编程之Future异步响应模式
假设有如下一个场景:假如你突然想做饭,但是没有厨具,也没有食材。网上购买厨具比较方便,食材去超市买更放心。实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材。所以,在主线程里面另起一个子线程去网购厨具。但是,子线程执行的结果是要返回厨具的,而run方法是没有返回值的。所以,这才是难点代码实现1:package com.hystrix.future;/** ...
2019-12-15 14:22:24
304
原创 volatile关键字最详细介绍
目录1 保证共享变量在多线程之间的可见性(内存可见性)2 禁止指令重排3 不保证原子性1 保证共享变量在多线程之间的可见性(内存可见性)如上图所示,所有线程的共享变量都存储在主内存中,每一个线程都有一个独有的工作内存,每个线程不直接操作在主内存中的变量,而是将主内存上变量的副本放进自己的工作内存中,只操作工作内存中的数据。当修改完毕后,再把修改后的结果放回到主内存中。每个线...
2019-12-15 10:57:11
130
原创 CountDownLatch的使用场景和使用方式介绍
##CountDownLatch概念CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行使用一个计数器进行实现,计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任...
2019-12-15 09:39:45
1070
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人