关于19c RU补丁报错问题的分析处理

本文演示关于19c RU补丁常见报错问题的分析处理:

  • 1.查看补丁应用失败的原因
  • 2.问题解决后可继续应用补丁
  • 3.发现DB的RU补丁未更新
  • 4.opatchauto应用DB补丁报错解决

1.查看补丁应用失败的原因

补丁应用失败有详细日志记录原因; 故意使用oracle用户解压补丁,然后测试是否可以opatchauto apply应用:
[root@db01rac2 media]# /u01/app/19.3.0/grid/OPatch/opatchauto apply /u01/media/ru/34130714
...
/u01/app/19.3.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_17-40-25PM_1.log
[Jan 10, 2023 5:41:03 PM] [INFO]    Patch 34160635:
                                    Copy Action: Source File "/u01/media/ru/34130714/34160635/files/bin/ocrcheck.bin" does not exists or is not readable
                                    'oracle.has.crs, 19.0.0.0.0': Cannot copy file from 'ocrcheck.bin' to '/u01/app/19.3.0/grid/bin/ocrcheck.bin'
...

发现报错,查看log说ocrcheck.bin不存在或不可读,实际查看是不可读。

2.问题解决后可继续应用补丁

解决问题后可以使用opatchauto resume继续尝试: 重新使用grid用户解压RU补丁包,然后使用root用户尝试resume补丁应用:
/u01/app/19.3.0/grid/OPatch/opatchauto resume

实际输出如下:

[root@db01rac2 media]# /u01/app/19.3.0/grid/OPatch/opatchauto resume

OPatchauto session is initiated at Tue Jan 10 17:48:40 2023
Session log file is /u01/app/19.3.0/grid/cfgtoollogs/opatchauto/opatchauto2023-01-10_05-48-40PM.log
Resuming existing session with id CBK3

Start applying binary patch on home /u01/app/19.3.0/grid
Binary patch applied successfully on home /u01/app/19.3.0/grid


Performing postpatch operations on CRS - starting CRS service on home /u01/app/19.3.0/grid
Postpatch operation log file location: /u01/app/grid/crsdata/db01rac2/crsconfig/crs_postpatch_apply_inplace_db01rac2_2023-01-10_05-55-25PM.log
CRS service started successfully on home /u01/app/19.3.0/grid

OPatchAuto successful.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:db01rac2
CRS Home:/u01/app/19.3.0/grid
Version:19.0.0.0.0
Summary:

==Following patches were SUCCESSFULLY applied:

Patch: /u01/media/ru/34130714/33575402
Log: /u01/app/19.3.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_17-49-00PM_1.log

Patch: /u01/media/ru/34130714/34133642
Log: /u01/app/19.3.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_17-49-00PM_1.log

Patch: /u01/media/ru/34130714/34139601
Log: /u01/app/19.3.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_17-49-00PM_1.log

Patch: /u01/media/ru/34130714/34160635
Log: /u01/app/19.3.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_17-49-00PM_1.log

Patch: /u01/media/ru/34130714/34318175
Log: /u01/app/19.3.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_17-49-00PM_1.log



OPatchauto session completed at Tue Jan 10 18:00:06 2023
Time taken to complete the session 11 minutes, 27 seconds
[root@db01rac2 media]# 

3.发现DB的RU补丁未更新

检查补丁应用情况发现DB的补丁未更新
查看RU补丁发现DB的补丁未应用,这是因为DB没有安装数据库,其实在11g时就有这个问题:

[root@db01rac2 media]# su - grid
Last login: Tue Jan 10 20:04:29 CST 2023
[grid@db01rac2 ~]$ $ORACLE_HOME/OPatch/opatch lspatches;
34318175;TOMCAT RELEASE UPDATE 19.0.0.0.0 (34318175)
34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635)
34139601;ACFS RELEASE UPDATE 19.16.0.0.0 (34139601)
34133642;Database Release Update : 19.16.0.0.220719 (34133642)
33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402)

OPatch succeeded.

[root@db01rac2 media]# su - oracle
Last login: Tue Jan 10 20:04:30 CST 2023
[oracle@db01rac2 ~]$ $ORACLE_HOME/OPatch/opatch lspatches;
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)

OPatch succeeded.

那么在当前暂不需要安装数据库的场景,如何让DB补丁也更新呢?

解决方案两种:
一是应用补丁之前先建一个临时测试库,补丁应用时就会自动应用GI和DB软件的补丁,最后再删掉临时测试库就好。
二是GI应用完成后,再单独指定db的ORACLE_HOME进行应用:

# /u01/app/oracle/product/19.3.0/db_1/OPatch/opatchauto apply /u01/media/ru/34130714 -oh /u01/app/oracle/product/19.3.0/db_1

需要注意这里,如果你要用grid用户下的opatchauto应用db的home补丁,会报错的:

# /u01/app/19.3.0/grid/OPatch/opatchauto apply /u01/media/ru/34130714 -oh /u01/app/oracle/product/19.3.0/db_1

opatchauto must run from one of the homes specified
opatchauto returns with error code = 2

说明必须要用Oracle自己的opatchauto,这也是为啥总是在解压OPatch时,解压到各节点grid和oracle的目录原因,说不定啥场景就要用的到。
最后应用完成后查询成功:

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:db01rac1
RAC Home:/u01/app/oracle/product/19.3.0/db_1
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /u01/media/ru/34130714/34139601
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /u01/media/ru/34130714/33575402
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /u01/media/ru/34130714/34318175
Reason: This patch is not applicable to this specified target type - "rac_database"


==Following patches were SUCCESSFULLY applied:

Patch: /u01/media/ru/34130714/34133642
Log: /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_21-12-52PM_1.log

Patch: /u01/media/ru/34130714/34160635
Log: /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_21-12-52PM_1.log



OPatchauto session completed at Tue Jan 10 21:19:41 2023
Time taken to complete the session 8 minutes, 43 seconds
[root@db01rac1 ~]# su - oracle
Last login: Tue Jan 10 21:19:40 CST 2023
[oracle@db01rac1 ~]$ $ORACLE_HOME/OPatch/opatch lspatches;
34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635)
34133642;Database Release Update : 19.16.0.0.220719 (34133642)

OPatch succeeded.

4.opatchauto应用DB补丁报错解决

下面看opatchauto应用DB补丁报错的情况,opatchauto报错信息:

[root@db01rac2 media]# /u01/app/oracle/product/19.3.0/db_1/OPatch/opatchauto apply /u01/media/ru/34130714 -oh /u01/app/oracle/product/19.3.0/db_1

OPatchauto session is initiated at Tue Jan 10 21:20:19 2023

System initialization log file is /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchautodb/systemconfig2023-01-10_09-20-28PM.log.

Session log file is /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchauto/opatchauto2023-01-10_09-20-51PM.log
The id for this session is 2SXU

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19.3.0/db_1
Patch applicability verification failed on home /u01/app/oracle/product/19.3.0/db_1

Execution of [OPatchAutoBinaryAction] patch action failed, check log for more details. Failures:
Patch Target : db01rac2->/u01/app/oracle/product/19.3.0/db_1 Type[rac]
Details: [
---------------------------Patching Failed---------------------------------
Command execution failed during patching in home: /u01/app/oracle/product/19.3.0/db_1, host: db01rac2.
Command failed:  /u01/app/oracle/product/19.3.0/db_1/OPatch/opatchauto  apply /u01/media/ru/34130714 -oh /u01/app/oracle/product/19.3.0/db_1 -target_type rac_database -binary -invPtrLoc /u01/app/oracle/product/19.3.0/db_1/oraInst.loc -jre /u01/app/oracle/product/19.3.0/db_1/OPatch/jre -persistresult /u01/app/oracle/product/19.3.0/db_1/opatchautocfg/db/sessioninfo/sessionresult_analyze_db01rac2_rac_2.ser -analyze -online -prepare_home
Command failure output: 
==Following patches FAILED in analysis for apply:

Patch: /u01/media/ru/34130714/34160635
Log: /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_21-21-11PM_1.log
Reason: Failed during Analysis: /u01/media/ru/34130714/34160635 is not applicable to the oracle home /u01/app/oracle/product/19.3.0/db_1

Patch: /u01/media/ru/34130714/34133642
Log: /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_21-21-11PM_1.log
Reason: Failed during Analysis: /u01/media/ru/34130714/34133642 is not applicable to the oracle home /u01/app/oracle/product/19.3.0/db_1 

After fixing the cause of failure Run opatchauto resume

]
OPATCHAUTO-68061: The orchestration engine failed.
OPATCHAUTO-68061: The orchestration engine failed with return code 1
OPATCHAUTO-68061: Check the log for more details.
OPatchAuto failed.

OPatchauto session completed at Tue Jan 10 21:21:22 2023
Time taken to complete the session 1 minute, 4 seconds

 opatchauto failed with error code 42
[root@db01rac2 media]# 

查看日志:

Possible causes are:
   ORACLE_HOME/inventory/oneoffs/34133642 is corrupted. 
   PatchObject constructor: Input file "/u01/app/oracle/product/19.3.0/db_1/inventory/oneoffs/34133642/etc/config/actions" or "/u01/app/oracle/product/19.3.0/db_1/inventory/oneoffs/34133642/etc/config/inventory" does not exist.

这里确认确实节点2现在没有这个34133642的目录,但是查看已成功应用补丁的节点1是有的。
在想要不要copy过来,是否可行?
另外从ru的补丁介质中也有这两个文件,但是md5比对,和节点1的还不一样,主要是actions.xml不一样。
还是查下MOS吧,果然找到:

  • OPatch lsinventory or Apply New Patch With Opatch apply Fails With Error "Unable to create patchObject" Inventory Corrupted (Doc ID 2792549.1)

提到还是从成功应用补丁的节点拷贝这个目录:

  1. Execute opatch lsinventory in node1 in which patch was applied successfully to verify patch is there (32545013)
  2. If patch was applied successfully, you will need to take a backup of "ORACLE_HOME/inventory/oneoffs/32545013" and then copy the directory from node1 to node2.
  3. Try running opatch lsinventory again.
  4. If, inventory is showing details and patch applied, proceed with Post-Installation Instructions.

既然有了官方依据,那就从节点1拷贝报错缺少的34133642目录到节点2,然后再尝试应用补丁:

[oracle@db01rac1 oneoffs]$ scp -r 34133642 db01rac2:/u01/app/oracle/product/19.3.0/db_1/inventory/oneoffs
inventory.xml                                                                                                        100%  904KB  77.5MB/s   00:00    
actions.xml                                                                                                          100% 6950KB 107.8MB/s   00:00    

节点2确认拷贝成功,尝试应用补丁:

[oracle@db01rac2 oneoffs]$ pwd
/u01/app/oracle/product/19.3.0/db_1/inventory/oneoffs
[oracle@db01rac2 oneoffs]$ cls
-bash: cls: command not found
[oracle@db01rac2 oneoffs]$ ls
29517242  29585399  34133642
[oracle@db01rac2 oneoffs]$ ls -lrth
total 0
drwxr-x--- 4 oracle oinstall 29 Jan 10 09:43 29517242
drwxr-x--- 4 oracle oinstall 29 Jan 10 09:43 29585399
drwxr-xr-x 4 oracle oinstall 29 Jan 10 21:43 34133642
[oracle@db01rac2 oneoffs]$ exit
logout
[root@db01rac2 config]# /u01/app/oracle/product/19.3.0/db_1/OPatch/opatchauto apply /u01/media/ru/34130714 -oh /u01/app/oracle/product/19.3.0/db_1

OPatchauto session is initiated at Tue Jan 10 21:43:53 2023

System initialization log file is /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchautodb/systemconfig2023-01-10_09-43-58PM.log.

Session log file is /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchauto/opatchauto2023-01-10_09-44-19PM.log
The id for this session is TPIG

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19.3.0/db_1
Patch applicability verified successfully on home /u01/app/oracle/product/19.3.0/db_1


Executing patch validation checks on home /u01/app/oracle/product/19.3.0/db_1
Patch validation checks successfully completed on home /u01/app/oracle/product/19.3.0/db_1


Verifying SQL patch applicability on home /u01/app/oracle/product/19.3.0/db_1
No sqlpatch prereq operations are required on the local node for this home
No step execution required.........
 

Preparing to bring down database service on home /u01/app/oracle/product/19.3.0/db_1
No step execution required.........
 

Performing prepatch operation on home /u01/app/oracle/product/19.3.0/db_1
Prepatch operation completed successfully on home /u01/app/oracle/product/19.3.0/db_1


Start applying binary patch on home /u01/app/oracle/product/19.3.0/db_1
Binary patch applied successfully on home /u01/app/oracle/product/19.3.0/db_1


Performing postpatch operation on home /u01/app/oracle/product/19.3.0/db_1
Postpatch operation completed successfully on home /u01/app/oracle/product/19.3.0/db_1


Preparing home /u01/app/oracle/product/19.3.0/db_1 after database service restarted
No step execution required.........
 

Trying to apply SQL patch on home /u01/app/oracle/product/19.3.0/db_1
No sqlpatch operations are required on the local node for this home
SQL patch applied successfully on home /u01/app/oracle/product/19.3.0/db_1

OPatchAuto successful.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:db01rac2
RAC Home:/u01/app/oracle/product/19.3.0/db_1
Version:19.0.0.0.0
Summary:

==Following patches were SKIPPED:

Patch: /u01/media/ru/34130714/34139601
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /u01/media/ru/34130714/33575402
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /u01/media/ru/34130714/34318175
Reason: This patch is not applicable to this specified target type - "rac_database"

Patch: /u01/media/ru/34130714/34133642
Log: /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_21-44-38PM_1.log
Reason: /u01/media/ru/34130714/34133642 is not required to be applied to oracle home /u01/app/oracle/product/19.3.0/db_1


==Following patches were SUCCESSFULLY applied:

Patch: /u01/media/ru/34130714/34160635
Log: /u01/app/oracle/product/19.3.0/db_1/cfgtoollogs/opatchauto/core/opatch/opatch2023-01-10_21-45-49PM_1.log



OPatchauto session completed at Tue Jan 10 21:46:52 2023
Time taken to complete the session 3 minutes, 0 second

咦,34133642没成功?还是已经成功了?看下日志:

[Jan 10, 2023 9:45:24 PM] [INFO]    Prereq "checkForIdenticalPatchInOracleHome" failed.
[Jan 10, 2023 9:45:24 PM] [INFO]    The details are:

                                    The following patch(es) are identical patches with patches installed in the Oracle Home.
                                     [ 34133642]
                                    You have already installed same patch(es) with same UPI(s) or same version(s).

日志说之前已经安装成功了,再通过opatch检查下,实际果然安装都成功了:

[oracle@db01rac2 ~]$ $ORACLE_HOME/OPatch/opatch lspatches
34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635)
34133642;Database Release Update : 19.16.0.0.220719 (34133642)

OPatch succeeded.

嗯,基本RU补丁应用也就这样了,不报错很简单,即使遇到报错,通常解决起来难度也不大。

AlfredZhao©版权所有「从Oracle起航,领略精彩的IT技术。」
本文转载于网络 如有侵权请联系删除

相关文章

  • 2021年学习Java还有意义吗?

    大家好,又见面了,我是你们的朋友全栈君。Java编程语言今年已经26岁了,按照软件开发标准来说,这是非常古老的语言了。所以很多编程初学者想知道Java在2021年是否仍然有意义?是否值得学习?在那些还没有决定该专注于哪种语言和技术栈的人看来,Java正面临着来自JavaScript、Python和Kotlin之类语言的挑战。但这是否意味着Java在软件开发领域的受欢迎程度、相关性和实际重要性正在下降,转而学习其他技术将是一个更明智的选择?绝对不是。尽管你偶尔会看到一些观点,预示着Java日渐式微,但事实上,在2021年,这种编程语言比以往任何时候都更有意义,而且在未来的几十年里也将如此。为什么?1、Java>>>仍然是企业世界的王者。Java不会消退的关键原因之一是它仍然是企业世界中经常用的编程语言。许多特性使Java成为企业应用程序开发中普遍的选择。2、可扩展性和高效性Java是一种非常高效和可伸缩的语言,即使在工作负载高的情况下也能提供强大的性能,这是一个非常重要的因素,它确保了软件解决方案的可伸缩性,这对于大多数企业来说是必不可少的。3、编码标准和文件对于企业开

  • java分层打印二叉树_基于Java的二叉树层序遍历打印实现

    大家好,又见面了,我是你们的朋友全栈君。层序遍历的思路:若树为空,则返回空,否则从树的第一层开始,即从根节点,从上而下逐层遍历。1.二叉树层序遍历Ⅰ——剑指offer32-Ⅰ从上到下,从左到右打印二叉树,返回一维数组int[]res。classSolution{ publicint[]levelOrder(TreeNoderoot){ if(root==null)returnnewint[0];Queueq=newLinkedList<>();q.add(root);Listlist=newArrayList<>();while(!q.isEmpty()){ TreeNodenode=q.poll();list.add(node.val);if(node.left!=null)q.add(node.left);if(node.right!=null)q.add(node.right);}int[]res=newint[list.size()];for(inti=0;i<res.length;i++)res[i]=list.get(i);returnres;

  • 使用html和css实现超赞的屏幕loading

    作者|codingbit74排版|小丑html部分<divclass="middle"> <divclass="barbar1"></div> <divclass="barbar2"></div> <divclass="barbar3"></div> <divclass="barbar4"></div> <divclass="barbar5"></div> <divclass="barbar6"></div> <divclass="barbar7"></div> <divclass="barbar8"></div> </div> 复制css部分主要使用了css3中的animation和transf

  • 启动云计算事件响应策略的5个步骤

    云计算事件响应策略对于在云中运行负载的企业来说是必要,企业需要了解这些最佳实践,以确保其团队做好充分准备。如今,数据转储、勒索软件攻击、恶意软件攻击事件已屡见不鲜,这意味着事件管理策略已成为必要选项。这并不是事件是否会发生的问题,而是何时发生的问题。而且由于当前IT环境的超连接特性,基于云计算的工作负载特别容易受到攻击。如果没有确定的响应流程,企业将无法对安全威胁或意外的基础设施或应用程序问题做出适当的反应。值得庆幸的是,事件管理是一个完善的过程。为了减轻制定计划的压力,需要了解以下五个步骤,以在事件发生之前进行识别、补救和适应。步骤1:准备企业IT团队建立云计算事件响应流程时,最重要的事情之一就是为不可避免发生的事件做好准备。尽管准备工作可以采用不同的形式,但通常分为三类:培训、编制文档和聚合。·培训在云计算事件响应方面,配备合适的人员只是完成其流程的一半。企业还需要对其员工进行培训,提供充分的信息和支持,以便在事件发生时进行处理。云原生组织必须确保其员工了解如何选择其提供商的界面,以收集信息并对发现的内容做出反应。这也意味着员工应该了解企业的事件管理计划以及对他们的期望。·编制文档

  • 产业安全专家谈丨Web 攻击越发复杂,如何保证云上业务高可用性的同时系统不被入侵?

    如今,电子政务、电子商务、网上银行、网上营业厅等依托Web应用,为广大用户提供灵活多样的服务。在这之中,流量攻击堪称是Web应用的最大敌人,黑客通过流量攻击获取利益、竞争对手雇佣黑客发起恶意攻击、不法分子通过流量攻击瘫痪目标后勒索高额保护费,往往会对业务造成严重损害。对于开发者和企业网站管理人员来说,数据爬取、暴力破解和撞库等Web攻击手段日益复杂,均需要建立强大且实时的防御能力,避免业务乃至企业因防护脆弱“失血过多”而死。部署WAF成为公认的最基础且有效的防御手段,但由于攻击手段的多样化和企业业务的复杂性,传统的本地部署WAF已经越来越难以发挥预想的防御效果。云WAF恰恰能够解决本地部署WAF的缺陷,成为大量中小型企业以及个人网站的新选择。云WAF部署简单、维护成本低,无需安装任何软件或者部署任何硬件设备即可将网站部署到云WAF的防护范围之内。云WAF的防护规则都处于云端,新漏洞爆发时,由云端负责规则的更新和维护,用户无需担心因为疏忽导致受到新型的漏洞攻击。在日常的部署中,网站负责人员如何选择与自身业务属性和发展规划匹配的云WAF产品?如何确保其能够为现阶段业务提供高可用的产品与服务

  • 10亿浏览量的“军装照”背后——除了创意,还要做到什么?

    作者oliver,腾讯压测大师团队产品经理。商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。WeTest导读天天P图”军装照”活动交出了一份10亿浏览量的答卷,一时间刷屏朋友圈,看到这幕,是不是特别想复制一个如此成功的H5?不过本文不教你如何做一个爆款H5,而是介绍天天P图在“军装照”活动过程中,如何面对10亿流量时的后台承载。一10亿浏览量,“军装照”火了这两天,相信“军装照”活动已经刷爆了朋友圈,这个活动是由人民日报客户端策划出品并主导开发,腾讯天天P图提供图像处理支持的一款H5产品。天天P图智能换脸这款H5于7月29日晚一经推出,浏览量就迅猛攀升。7月30日24时,浏览次数突破6000万,在7月30日23:03时,H5迎来了这次活动的最高峰值,图片生成请求达到每分钟117万次,8月1日13时突破5亿。截至8月2日17时,“军装照”H5的浏览次数累计8.2亿,独立访客累计1.27亿,一分钟访问人数峰值高达41万。后台数据截图一般来说,一个H5产品浏览次数能超过500万就很不错了,超过1亿的十分罕见。如果以1亿为标准,这款H5产品能够申请10次世界纪录。创纪录的浏览量背

  • java项目管理工具maven使用初级

    一、前言        早就知道maven在java项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档。发现这些文档的作者都是java的大腕,大多都是站在掌握了一定maven基础的角度上进行介绍,让我这初学者看的云里雾里不知所云。于是又去查看maven的官方网站,总算是有所了解,但一旦动手实际操作却又雾里看花。唉,没办法,就只有一遍一遍的动手尝试,经过种 种磨难总算是有一点眉目了。现在就将我的经验写出来,一来避免将来遗忘,二来也给和我一样的菜鸟们提供一点点的方便。呵呵。本文的主题在于实用操作,个中原理还是麻烦大家去查一下java大腕们的文章吧。这里推荐两篇文章: Maven2.0:编译、测试、部署、运行 http://www.ideagrace.com/html/doc/2006/06/14/00847.html Maven2的新特性 http://www-128.ibm.com/developerworks/cn/opensource/os-maven2/index.html 二、maven2安装 1、首先去官方网站下载之:http://maven.apache.org

  • MybatisPlus——全网配置最全的代码生成器

    MybatisPlus代码生成器这里讲解的是新版(mybatis-plus3.5.1+版本),旧版不兼容 官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)配置这里的配置表格和官方文档一致数据源配置(DataSource)属性说明示例urljdbc路径jdbc:mysql://127.0.0.1:3306/mybatis-plususername数据库账号rootpassword数据库密码123456dbQuery(IDbQuery)数据库查询newMySqlQuery()schema(String)数据库schema(部分数据库适用)mybatis-plustypeConvert(ITypeConvert)数据库类型转换器newMySqlTypeConvert()keyWordsHandler(IKeyWordsHandler)数据库关键字处理器newMySqlKeyWordsHandler()全局配置(GlobalConfig)方法说明示例fileOverride覆盖已生成文件默认值:falsedisableOpenDir禁止打开输出目

  • 模糊查询+分页

    目录一、管理员界面的模糊查询+主题分页二、游客界面的主题分页一、管理员界面的模糊查询+主题分页分页万能公式:pageIndex//第几页pageSize//每一页多少条star=(pageIndex-1)*pageSize+1end=pageSize*pageIndex<%@pageimport="java.sql.ResultSet"%> <%@pageimport="java.sql.PreparedStatement"%> <%@pageimport="java.sql.Connection"%> <%@pageimport="java.sql.DriverManager"%> <%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <html> <head

  • 三个月教你从零入门深度学习

       最新更新:【深度学习系列】PaddlePaddle之手写数字识别(10.26更新)        【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(11.1更新)         【深度学习系列】PaddlePaddle之数据预处理(11.8更新)         【深度学习系列】卷积神经网络详解(二)——自己手写一个卷积神经网络(11.22更新)         【深度学习系列】用PaddlePaddle和Tensorflow进行图像分类(11.29更新)     【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet(12.06更新)     【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络Vgg(12.13更新)     【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网

  • centos6.5升级openssh至7.9p1

    环境说明系统环境:centos6.5x64openssh-5.3p1升级原因:低版本openssh存在漏洞升级目标:openssh-7.9p1 检查环境官方文档中提到的先决条件openssh安装依赖zlib1.1.4并且openssl>=1.0.1版本就可以了。 当前版本正好符合openssh7.9p1的安装条件,而且zlib也符合OpenSSH7.9P1的依赖,可以进行直接安装:[root@noway11~]#opensslversionOpenSSL1.0.1e-fips11Feb2013[root@noway11~]#rpm-qzlibzlib-1.2.3-29.el6.x86_64[root@noway11~]#rpm-qzlib-develzlib-devel-1.2.3-29.el6.x86_64 开启telnet-server服务为防止openssh升级过程中断开连接,最好开启telnet-server服务以防万一[root@noway11~]yum-yinstalltelnet-server*[root@noway11~]serviceiptablesstop[r

  • 手机号码归属地接口大全

    淘宝网 API地址:http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON 拍拍 API地址:http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback 参数: mobile:手机号码 callname:回调函数 amount:未知(必须) 返回:JSON 财付通 API地址:http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=15850781443 参数: chgmobile:手机号码 返回:xml 百付宝 API地址:https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=158

  • VC runtime verison

    VC MSC1.0_MSC_VER==100 MSC2.0_MSC_VER==200 MSC3.0_MSC_VER==300 MSC4.0_MSC_VER==400 MSC5.0_MSC_VER==500 MSC6.0_MSC_VER==600 MSC7.0_MSC_VER==700 MSVC++1.0_MSC_VER==800 MSVC++2.0_MSC_VER==900 MSVC++4.0_MSC_VER==1000(DeveloperStudio4.0) MSVC++4.2_MSC_VER==1020(DeveloperStudio4.2) MSVC++5.0_MSC_VER==1100(VisualStudio97version5.0) MSVC++6.0_MSC_VER==1200(VisualStudio6.0version6.0) MSVC++7.0_MSC_VER==1300(VisualStudio.NET2002version7.0) MSVC++7.1_MSC_VER==1310(VisualStudio.NET2003version7.1) MSVC++8.0_

  • Nginx配置详解

    序言 Nginx是lgorSysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。 Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、VirtualHost、URLRewrite、Gzip等功能。并且支持很多第三方的模块扩展。 Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。 牛逼吹的差不多啦,如果你还不过瘾,你可以百度百科或者一些书上找到这样的夸耀,比比皆是。 Nginx常用功能 1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。 这里我给来2张图,对正向代理与反响代理做个诠释,具体细节,大家可以翻阅下资料。 Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你

  • win10 下安装 ubuntu 子系统完全指北

    最近在学习C++相关的东西,因为在Linux下开发会比较流畅舒适,而公司配的电脑都是windows的,之前都是在vmware中安装个ubuntu虚拟机,但这种有时候比有点卡顿。所以今天就尝试一下看有没有其他的途径,结果发现了win10的wsl是一个非常棒的选择。下面就一起来看看如何安装及需要注意的一些问题。 启用子系统功能: Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Windows-Subsystem-Linux 复制 或者:控制面板->程序和功能->启用或关闭Windows功能->勾选适用于Linux的Windows子系统 设置需要片刻时间,并且设置完成后会自动重启电脑的。 下载ubuntu子系统 下载地址:https://aka.ms/wsl-ubuntu-1604,(如果你想下载1804直接把地址后面的数字改成1804就好),下载完成后的后缀名是appx,直接重命名为zip压缩包就好,然后解压。解压后,里面有个ubuntu.exe文件,直接打开该文件,然后输入用户名和密码初始化账号就能用

  • 个人程序设计报告及其原型-11组林承毅

    程序原型: https://github.com/Null118/FpGme_V1.1 目前已经做到了全部基本功能的实现(翻牌游戏的正常操作、计算得分、调整难度) 程序设计: 设计思路:   作为独立的小游戏,主要就是把游戏的整体功能实现。对于翻牌游戏(神经衰弱)的实现思路如下:   所谓的翻牌动作就是两种图片(牌面和牌背)的分别展示,调整其可显示的参数就可以实现。   首先定义一个变量记录翻起来牌的个数,如果翻起来的牌数等于2,那么就不能额外的翻开牌,并且翻开的牌需要在短暂的停顿之后(显示时间)盖回去。   然后进行分情况讨论:翻起来一张牌的情况下,下一张不一样(通过两张牌的来源是否相同判断)则都盖回去,若相同则在剩余时间都展示其正面, 并若是所有牌的状态都为正面朝上,则游戏结束。   然后是一些细节的设定,如在准备时间或点到了已翻开的牌上,则点击无效;还有一开始随机打乱牌堆再抽取预定数量的牌并存入数组;还有分数的计算,难易程度的设定等。 程序实现:   下面主要展

  • ICPC第一场网络赛 题解 + 补题

    A.BusiestComputingNodes 题意:给你一个含有\(k\)个节点,编号从\(0\)至\(k-1\)的计算集群,以及一组已知到达时间与处理时间的请求(亦从\(0\)开始编号)。 当每个请求到达时,它会优先进入第(\(i\)%\(k\))个节点,若当前节点正忙,则根据开放定址法去找下一个空闲节点(如果最终都没能找到空闲的节点,该请求将被忽略)。 现在问你在发送完这组请求后,哪些节点处理的请求数量最多? 题目分析:显然,请求的结束时间(即节点可以被重新启用的时间)=到达时间+处理时间。 先考虑暴力的做法,新请求到来时扫一遍当前节点,如果有节点满足条件(节点内请求的结束时间\(\leq\)当前请求的到达时间)就进行更新,时间复杂度约为\(O(nk)\),必\(T\)。 这里采取线段树+二分查询优化,时间复杂度\(O(nlogk)\),具体看图: 线段树维护区间最小值,单点修改,区间查询 根据最小值进行二分,为了方便查询我拷贝了一份节点(也可以先查\(i\)~\(k-1\),再查\(0\)~\(i-1\)),更新时同时更新两个就好。 注意输出格式,行尾无空格(白PE六发,

  • 集合

    11:集合 2Collection(单列集合) 3List(有序,可重复) 4ArrayList 5底层数据结构是数组,查询快,增删慢 6线程不安全,效率高 7Vector 8底层数据结构是数组,查询快,增删慢 9线程安全,效率低 10LinkedList 11底层数据结构是链表,查询慢,增删快 12线程不安全,效率高 13Set(无序,唯一) 14HashSet 15底层数据结构是哈希表。 16哈希表依赖两个方法:hashCode()和equals() 17执行顺序: 18首先判断hashCode()值是否相同 19是:继续执行equals(),看其返回值 20是true:说明元素重复,不添加 21是false:就直接添加到集合 22否:就直接添加到集合 23最终: 24自动生成hashCode()和equals()即可 25 26LinkedHashSet 27底层数据结构由链表和哈希表组成。 28由链表保证元素有序。 29由哈希表保证元素唯一。 30TreeSet 31底层数据结构是红黑树。(是一种自平衡的二叉树) 32如何保证元素唯一性呢? 33根据比较的返回值是否是0来决定

  • 第五讲 卷积神经网络 - Resnet--cifar10

    1importtensorflowastf 2importos 3importnumpyasnp 4frommatplotlibimportpyplotasplt 5fromtensorflow.keras.layersimportConv2D,BatchNormalization,Activation,MaxPooling2D,Dropout,Flatten,Dense,GlobalAveragePooling2D 6fromtensorflow.kerasimportModel 7 8np.set_printoptions(threshold=np.inf) 9 10 11cifar10=tf.keras.datasets.cifar10 12(x_train,y_train),(x_test,y_test)=cifar10.load_data() 13x_train,x_test=x_train/255.0,x_test/255.0 14 15 16 17classResnetBlock(Model): 18def__init__(self,filters,strides=1,r

  • h5 html5 模拟时钟 页面

    h5html5模拟时钟 <!DOCTYPEhtml> <html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1"> <title>time</title> </head> <body> <style> body{ background:black; } .clock{ position:absolute; opacity:1; } .fill.clock{ left:50%; top:50%; } .centre{ position:absolute; top:50%; left:50%; width:0; height:0; } .expand{ position:absolute; top:0; left:0; transfor

  • Tornado框架

    Tornado介绍Tornado 是 FriendFeed 使用的可扩展的异步非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像web.py(豆瓣用这个写的)或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed&n

相关推荐

推荐阅读