当前位置: 首页 > 编程日记 > 正文

Oracle Hints具体解释

在向大家具体介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家实用。基于代价的优化器是非常聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了非常差的运行计划,使某个语句的运行变得奇慢无比。


此时就须要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成运行计划,从而使语句高效的运行。比如,假设我们觉得对于一个特定的语句,运行全表扫描要比运行索引扫描更有效,则我们就能够指示优化器使用全表扫描。在Oracle中,是通过为语句加入 Hints(提示)来实现干预优化器优化的目的。


Oracle Hints是一种机制,用来告诉优化器依照我们的告诉它的方式生成运行计划。我们能够用Oracle Hints来实现:
1) 使用的优化器的类型
2) 基于代价的优化器的优化目标,是all_rows还是first_rows。
3) 表的訪问路径,是全表扫描,还是索引扫描,还是直接利用rowid。
4) 表之间的连接类型
5) 表之间的连接顺序
6) 语句的并行程度


  2、HINT能够基于下面规则产生作用
  表连接的顺序、表连接的方法、訪问路径、并行度


除了”RULE”提示外,一旦使用的别的提示,语句就会自己主动的改为使用CBO优化器,此时假设你的数据字典中没有统计数据,就会使用缺省的统计数据。所以建议大家假设使用CBO或Hints提示,则最好对表和索引进行定期的分析。


怎样使用Hints:


Hints仅仅应用在它们所在sql语句块(statement block,由select、insert、update、deletekeyword标识)上,对其他SQL语句或语句的其他部分没有影响。如:对于使用union操作的2个 sql语句,假设仅仅在一个sql语句上有Hints,则该Hints不会影响还有一个sql语句。


我们能够使用凝视(comment)来为一个语句加入Hints,一个语句块仅仅能有一个凝视,并且凝视仅仅能放在SELECT, UPDATE, or DELETEkeyword的后面


使用Oracle Hints的语法:


{DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] [hint[text]]... */

or

{DELETE|INSERT|SELECT|UPDATE} --+ hint [text] [hint[text]]...


注解:
1) DELETE、INSERT、SELECT和UPDATE是标识一个语句块開始的keyword,包括提示的凝视仅仅能出如今这些keyword的后面,否则提示无效。
2) “+”号表示该凝视是一个Hints,该加号必须马上跟在”/*”的后面,中间不能有空格。
3) hint是以下介绍的详细提示之中的一个,假设包括多个提示,则每一个提示之间须要用一个或多个空格隔开。
4) text 是其他说明hint的凝视性文本


假设你没有正确的指定Hints,Oracle将忽略该Hints,而且不会给出不论什么错误。

1. /*+ALL_ROWS*/
  表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
  比如:
  SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 
  2. /*+FIRST_ROWS*/
  表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
  比如:
  SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
  3. /*+CHOOSE*/
  表明假设数据字典中有訪问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;
  表明假设数据字典中没有訪问表的统计信息,将基于规则开销的优化方法;
  比如:
  SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
  4. /*+RULE*/
  表明对语句块选择基于规则的优化方法.
  比如:
  SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
  5. /*+FULL(TABLE)*/
  表明对表选择全局扫描的方法.
  比如:
  SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';
  6. /*+ROWID(TABLE)*/
  提示明白表明对指定表依据ROWID进行訪问.
  比如:
  SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID>='AAAAAAAAAAAAAA'
  AND EMP_NO='SCOTT';
  7. /*+CLUSTER(TABLE)*/ 
  提示明白表明对指定表选择簇扫描的訪问方法,它仅仅对簇对象有效.
  比如:
  SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS
  WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
  8. /*+INDEX(TABLE INDEX_NAME)*/
  表明对表选择索引的扫描方法.
  比如:
  SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX='M';
  9. /*+INDEX_ASC(TABLE INDEX_NAME)*/
  表明对表选择索引升序的扫描方法.
  比如:
  SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';
  10. /*+INDEX_COMBINE*/
  为指定表选择位图訪问路经,假设INDEX_COMBINE中没有提供作为參数的索引,将选择出位图索引的布尔组合方式.
  比如:
  SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS
  WHERE SAL<5000000 AND HIREDATE
  11. /*+INDEX_JOIN(TABLE INDEX_NAME)*/
  提示明白命令优化器使用索引作为訪问路径.
  比如:
  SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE
  FROM BSEMPMS WHERE SAL<60000;
  12. /*+INDEX_DESC(TABLE INDEX_NAME)*/
  表明对表选择索引降序的扫描方法.
  比如:
  SELECT /*+INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';
  13. /*+INDEX_FFS(TABLE INDEX_NAME)*/
  对指定的表运行高速全索引扫描,而不是全表扫描的办法.
  比如:
  SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305';
  14. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/
  提示明白进行运行规划的选择,将几个单列索引的扫描合起来.
  比如:
  SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='SCOTT' AND DPT_NO='TDC306';
  15. /*+USE_CONCAT*/
  对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询.
  比如:
  SELECT /*+USE_CONCAT*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';
  16. /*+NO_EXPAND*/
  对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展.
  比如:
  SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';
  17. /*+NOWRITE*/
  禁止对查询块的查询重写操作.
  18. /*+REWRITE*/
  能够将视图作为參数.
  19. /*+MERGE(TABLE)*/
  可以对视图的各个查询进行对应的合并.
  比如:
  SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO
  ,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO
  AND A.SAL>V.AVG_SAL;
  20. /*+NO_MERGE(TABLE)*/
  对于有可合并的视图不再合并.
  比如:
  SELECT /*+NO_MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELECT DPT_NO,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SAL>V.AVG_SAL;
  21. /*+ORDERED*/
  依据表出如今FROM中的顺序,ORDERED使ORACLE依此顺序对其连接.
  比如:
  SELECT /*+ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;
  22. /*+USE_NL(TABLE)*/
  将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.
  比如:
  SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
  23. /*+USE_MERGE(TABLE)*/
  将指定的表与其它行源通过合并排序连接方式连接起来.
  比如:
  SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
  24. /*+USE_HASH(TABLE)*/
  将指定的表与其它行源通过哈希连接方式连接起来.
  比如:
  SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
  25. /*+DRIVING_SITE(TABLE)*/
  强制与ORACLE所选择的位置不同的表进行查询运行.
  比如:
  SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;
  26. /*+LEADING(TABLE)*/
  将指定的表作为连接次序中的首表.
  27. /*+CACHE(TABLE)*/
  当进行全表扫描时,CACHE提示可以将表的检索块放置在缓冲区缓存中近期最少列表LRU的近期使用端
  比如:
  SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
  28. /*+NOCACHE(TABLE)*/
  当进行全表扫描时,CACHE提示可以将表的检索块放置在缓冲区缓存中近期最少列表LRU的近期使用端
  比如:
  SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
  29. /*+APPEND*/
  直接插入到表的最后,能够提快速度.
  insert /*+append*/ into test1 select * from test4 ;
  30. /*+NOAPPEND*/
  通过在插入语句生存期内停止并行模式来启动常规插入.
  insert /*+noappend*/ into test1 select * from test4 ;
 31. NO_INDEX: 指定不使用哪些索引


  /*+ NO_INDEX ( table [index [index]...] ) */


  select /*+ no_index(emp ind_emp_sal ind_emp_deptno)*/ * from emp where deptno=200 and sal>300;


  32. parallel


  select /*+ parallel(emp,4)*/ * from emp where deptno=200 and sal>300;


  另:每一个SELECT/INSERT/UPDATE/DELETE命令后仅仅能有一个/*+ */,但提示内容能够有多个,能够用逗号分开,空格也能够。


  如:/*+ ordered index() use_nl() */


---------
类似例如以下的一条语句:insert into xxxx select /*+parallel(a) */ * from xxx a;数据量大约在75G左右,这位兄弟从上午跑到下午还没跑完,过来问我咋回事,说寻常2hrs能跑完的东西跑了好几个小时还撒动静。查看系统性能也比較 正常,cpu,io都不繁忙,平均READ速度在80M/s左右(勉强凑合),但平均写速度仅仅有10M不到。等待事件里面大量的‘ ‘PX Deq Credit: send blkd’,这里能看出并行出了问题,从而最后得知是并行使用方法有问题,改动之后20分钟完毕了该操作。正确的做法应该是:
alter session enable dml parallel;


insert /*+parallel(xxxx,4) */ into xxxx select /*+parallel(a) */ * from xxx a;


由于oracle默认并不会打开PDML,对DML语句必须手工启用。 另外不得不说的是,并行不是一个可扩展的特性,仅仅有在数据仓库或作为DBA等少数人的工具在批量数据操作时利于充分利用资源,而在OLTP环境下使用并行 须要很慎重。其实PDML还是有比較多的限制的,比如不支持触发器,引用约束,高级复制和分布式事务等特性,同一时候也会带来额外的空间占用,PDDL同 样是如此。有关Parallel excution可參考官方文档,在Thomas Kyte的新书《Expert Oracle Database architecture》也有精辟的讲述。
---------
select count(*)
  From wid_serv_prod_mon_1100 a
 where a.acct_month = 201010
   and a.partition_id = 10
   and serv_state not in ('2HB', '2HL', '2HJ', '2HP', '2HF')
   and online_flag in (0)
   and incr_product_id in (2000020)
   and product_id in (2020966, 2020972, 2100297, 2021116)
   and billing_mode_id = 1
   and exp_date > to_date('201010', 'yyyymm')
   and not exists (select /*+no_index (b IDX_W_CDR_MON_SERV_ID_1100)*/
         1
          from wid_cdr_mon_1100 b
         where b.acct_month = 201010
           and b.ANA_EVENT_TYPE_4 in
               ('10201010201', '10202010201', '10203010201', '10203010202', '10203030201', '10203030202', '10204010201', '10204010202', '10204030201')
           and a.serv_id = b.serv_id)

相关文章:

主成分分析(PCA)简介

主成分分析(Principal Components Analysis, PCA)是一个简单的机器学习算法&#xff0c;可以通过基础的线性代数知识推导。假设在Rn空间中我们有m个点{x(1),…,x(m)}&#xff0c;我们希望对这些点进行有损压缩。有损压缩表示我们使用更少的内存&#xff0c;但损失一些精度去存储…

01-HTML基础与进阶-day6-录像281

04css选择器.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style type"text/css">/* p div 标签选择器*/p {color: red; /* k:v color表示样式属性 颜…

百度CTO王海峰:深度学习如何大规模产业化?

编者按&#xff1a;10月17日-19日&#xff0c;2019年中国计算机大会&#xff08;CNCC2019&#xff09;在苏州举办。百度首席技术官王海峰在会上发表题为《深度学习平台支撑产业智能化》的演讲&#xff0c;分享了百度关于深度学习技术推动人工智能发展及产业化应用的思考。以下为…

Kali Linux***测试

Kali Linux***测试实战 第一章http://drops.wooyun.org/tips/826 1.1 Kali Linux简介如果您之前使用过或者了解BackTrack系列Linux的话&#xff0c;那么我只需要简单的说&#xff0c;Kali是BackTrack的升级换代产品&#xff0c;从Kali开始&#xff0c;BackTrack将成为历史。如果…

一站式解决:隐马尔可夫模型(HMM)全过程推导及实现

作者 | 永远在你身后转载自知乎用户永远在你身后【导读】隐马尔可夫模型&#xff08;Hidden Markov Model&#xff0c;HMM&#xff09;是关于时许的概率模型&#xff0c;是一个生成模型&#xff0c;描述由一个隐藏的马尔科夫链随机生成不可观测的状态序列&#xff0c;每个状态生…

CUDA Samples: Image Process: BGR to BGR565

图像像素格式BGR565是每一个像素占2个字节&#xff0c;其中Blue占5位&#xff0c;Green占6位&#xff0c;Red占5位。在OpenCV中&#xff0c;BGR到BGR565的每一个像素的计算公式是&#xff1a;unsigned short dst (unsigned short)((B >> 3) | ((G & ~3) << 3)…

NoSQL数据库探讨 - 为什么要用非关系数据库?

源地址&#xff1a;http://robbin.javaeye.com/blog/524977 随着互联网web2.0网站的兴起&#xff0c;非关系型的数据库现在成了一个极其热门的新领域&#xff0c;非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站&#xff0c;特别是超大规模和高并发的SNS类…

手机内存RAM、ROM简介

手机内存包含两个&#xff1a;一个是运行内存(RAM)&#xff0c;一个是机身内存(ROM)。两者的功能有所不同&#xff0c;运行内存是对手机操作系统和其它程序运行过程中&#xff0c;产生的临时数据进行存储的媒介。如果手机运行的程序比较多&#xff0c;占用运行内存空间较大&…

一个月入门Python爬虫,轻松爬取大规模数据

如果你仔细观察&#xff0c;就不难发现&#xff0c;懂爬虫、学习爬虫的人越来越多&#xff0c;一方面&#xff0c;互联网可以获取的数据越来越多&#xff0c;另一方面&#xff0c;像 Python这样一个月入门Python爬虫&#xff0c;轻松爬的编程语言提供越来越多的优秀工具&#x…

软件包管理 之 软件在线升级更新yum 图形工具介绍

作者&#xff1a;北南南北来自&#xff1a;LinuxSir.Org提要&#xff1a;yum 是Fedora/Redhat 软件包管理工具&#xff0c;包括文本命令行模式和图形模式&#xff1b;图形模式的yum也是基于文本模式的&#xff1b;目前yum图形前端程序主要有 yumex和kyum &#xff1b; 正文一、…

[PHPUnit]自动生成PHPUnit测试骨架脚本-提供您的开发效率【2015升级版】

2019独角兽企业重金招聘Python工程师标准>>> 场景 在编写PHPUnit单元测试代码时&#xff0c;其实很多都是对各个类的各个外部调用的函数进行测试验证&#xff0c;检测代码覆盖率&#xff0c;验证预期效果。为避免增加开发量&#xff0c;可以使用PHPUnit提供的phpuni…

ORL Faces Database介绍

ORL人脸数据集共包含40个不同人的400张图像&#xff0c;是在1992年4月至1994年4月期间由英国剑桥的Olivetti研究实验室创建。此数据集下包含40个目录&#xff0c;每个目录下有10张图像&#xff0c;每个目录表示一个不同的人。所有的图像是以PGM格式存储&#xff0c;灰度图&…

张俊林:BERT和Transformer到底学到了什么 | AI ProCon 2019

演讲嘉宾 | 张俊林&#xff08;新浪微博机器学习团队AI Lab负责人&#xff09;编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】BERT提出的这一年&#xff0c;也是NLP领域迅速发展的一年。学界不断提出新的预训练模型&#xff0c;刷新各…

Eclipse创建web工程时,报错Dynamic Web Module 3.0 requires Java 1.6 or newer.

报错&#xff1a; 解决方案&#xff1a; 1.打开eclipse工具栏window->preferences 2.打开java->compiler 3.选择compiler compliance level在1.6以上版本&#xff08;此处选择1.8&#xff09; 4.点击apply and close保存修改&#xff0c;即可 转载于:https://www.cnblogs…

Maven学习总结(八)——使用Maven构建多模块项目

2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(八)——使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护&#xff0c;我们一般会进行分层开发&#xff0c;最常见的就是分为domain&#xff08;域模型层&#xff09;、dao&#xff0…

哈工大、清华、CSDN、嵌入式视觉联盟合办的 AIoT 盛会,你怎么舍得错过?!

2019 嵌入式智能国际大会即将来袭&#xff01;随着物联网和人工智能技术的飞速发展与相互渗透&#xff0c;万物智联的新赛道已经开始显现。据中商产业研究院《2016—2021年中国物联网产业市场研究报告》显示&#xff0c;预计到2020年&#xff0c;中国物联网的整体规模将达2.2万…

OpenCV3.3中主成分分析(Principal Components Analysis, PCA)接口简介及使用

OpenCV3.3中给出了主成分分析(Principal Components Analysis, PCA)的实现&#xff0c;即cv::PCA类&#xff0c;类的声明在include/opencv2/core.hpp文件中&#xff0c;实现在modules/core/src/pca.cpp文件中,其中&#xff1a;(1)、cv::PCA::PCA&#xff1a;构造函数&#xff1…

Spring MVC配置

为什么80%的码农都做不了架构师&#xff1f;>>> 一、传统方式配置Spring MVC &#xff08;1&#xff09;导入jar包 需要导入如下的jar包 junit-3.8.1.jar spring-core-3.0.5.RELEASE.jar commons-logging-1.1.1.jar spring-context-3.0.5.REL…

主成分分析(PCA)Python代码实现

主成分分析(Principal Components Analysis, PCA)简介可以参考&#xff1a; http://blog.csdn.net/fengbingchun/article/details/78977202 这里是参照 http://sebastianraschka.com/Articles/2014_pca_step_by_step.html 文章中的code整理的Python代码&#xff0c;实现过程为…

AI发展这一年:不断衍生的技术丑闻与抵制声潮

作者 | AI Now学院译者 | Raku编辑 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】10月2日&#xff0c;纽约大学AI Now学院在纽约大学斯克博剧院&#xff08;Skirball Theatre&#xff09;组织召开了第四届年度AI Now研讨会。研讨会邀请了业内组织者…

Distributed Configuration Management Platform(分布式配置管理平台)

2019独角兽企业重金招聘Python工程师标准>>> 专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务。 主要目标&#xff1a; 部署极其简单&#xff1a;同一个上线包&#xff0c;无须改动配置&#xff0c;即可在 多个环境中(RD/QA/PRODUCTION…

如何利用zendstudio新建 或导入php项目

为什么80%的码农都做不了架构师&#xff1f;>>> 一、利用ZendStudio创建 PHP Project 1. 打开ZendStudio, 选择&#xff1a;File &agrave; New &agrave; PHP Project, 如下图所示: 于是弹出如下界面&#xff1a; 在”Project name”后输入工程名(比如我这里…

一文读懂GoogLeNet神经网络 | CSDN博文精选

作者 | .NY&XX来源 | CSDN博客本文介绍的是著名的网络结构GoogLeNet&#xff0c;目的是试图领会其中结构设计思想。GoogLeNet特点优化网络质量的生物学原理GoogLeNet网络结构的动机GoogLeNet架构细节Inception模块和普通卷积结构的差异辅助分类器GoogLeNet网络架构GoogLeNe…

C++中的函数签名

C中的函数签名(function signature)&#xff1a;包含了一个函数的信息&#xff0c;包括函数名、参数类型、参数个数、顺序以及它所在的类和命名空间。普通函数签名并不包含函数返回值部分&#xff0c;如果两个函数仅仅只有函数返回值不同&#xff0c;那么系统是无法区分这两个函…

MyEclipse断点调试

2019独角兽企业重金招聘Python工程师标准>>> 1、在编辑的程序的左边&#xff0c;你会看到一条浅浅的灰色编带&#xff0c;在这里设置断点。 2、设置断点的方法有很多 方法&#xff1a;1&#xff09;、双击 &#xff1b; 2&#xff09;、右键&#xff0c;选择“Toggl…

C primer plus 练习题 第三章

5. 1 #include <stdio.h>2 3 int main()4 {5 float you_sec;6 printf("请输入你的年龄:");7 scanf("%f", &you_sec);8 printf("年龄合计:%e 秒!\n", you_sec * 3.156e7);9 getchar(); 10 return 0; 11 }

Echache整合Spring缓存实例讲解

2019独角兽企业重金招聘Python工程师标准>>> 摘要&#xff1a;本文主要介绍了EhCache&#xff0c;并通过整合Spring给出了一个使用实例。 一、EhCache 介绍 EhCache 是一个纯Java的进程内缓存框架&#xff0c;具有快速、精干等特点&#xff0c;是Hibernate中默认的C…

灰度图像直方图均衡化公式及实现

图像的直方图&#xff1a;直方图是图像中像素强度分布的图形表达方式。它统计了每一个强度值所具有的像素个数。直方图均衡化&#xff1a;是通过拉伸像素强度分布范围来增强图像对比度的一种方法。是图像处理领域中利用图像直方图对对比度进行调整的方法。均衡化指的是把一个分…

超越最新无监督域自适应方法,研究人员提轻量CNN新架构OSNet

作者 | Kaiyang Zhou, Xiatian Zhu, Yongxin Yang, Andrea Cavallaro, and Tao Xiang 译者 | TroyChang 编辑 | Jane 出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09; CNN新架构OSNet 【导读】今天推荐论文《Learning Generalisable Omni-Scale Repre…

在一台机器上搭建多个redis实例

2019独角兽企业重金招聘Python工程师标准>>> 默认Redis程序安装在/usr/local/redis目录下&#xff1b; 配置文件&#xff1a;/usr/local/redis/redis.conf&#xff0c;该配置文件中配置的端口为默认端口&#xff1a;6379&#xff1b; Redis的启动命令路径&#xff1…