当前位置: 首页 > news >正文

Lock分析:systemstate分析row cache lock

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

Lock分析:systemstate分析row cache lock

案例是一次测试row cache lock的systemstate分析方法,平台为11.2.04

欢迎大家加入ORACLE超级群:17115662 免费解决各种ORACLE问题,以后BLOG将迁移到http://www.htz.pw

1,使用ass来格式化systemstate的

[oracle@11rac1 sql]$ awk -f ass1039.awk /u01/app/oracle/diag/rdbms/power/power1/trace/power1_ora_14290.trcStarting Systemstate 1………………………………………………Ass.Awk Version 1.0.39~~~~~~~~~~~~~~~~~~~~~~Source file : /u01/app/oracle/diag/rdbms/power/power1/trace/power1_ora_14290.trcSystem State 1  (2014-07-16 15:14:42.518)~~~~~~~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~1:                                      [DEAD]2:  waiting for ‘pmon timer’           3:  waiting for ‘rdbms ipc message’    4:  waiting for ‘VKTM Logical Idle Wait’5:  waiting for ‘rdbms ipc message’    6:  waiting for ‘DIAG idle wait’       7:  waiting for ‘rdbms ipc message’    8:  waiting for ‘PING’                 9:  waiting for ‘rdbms ipc message’    10: waiting for ‘DIAG idle wait’       11: waiting for ‘rdbms ipc message’    12: waiting for ‘ges remote message’   13: waiting for ‘gcs remote message’   14: waiting for ‘rdbms ipc message’    15: waiting for ‘GCR sleep’            16: waiting for ‘rdbms ipc message’    17: waiting for ‘rdbms ipc message’    18: waiting for ‘rdbms ipc message’    19: waiting for ‘rdbms ipc message’    20: waiting for ‘smon timer’           21: waiting for ‘rdbms ipc message’    22: waiting for ‘rdbms ipc message’    23: waiting for ‘ASM background timer’ 24: waiting for ‘rdbms ipc message’    25: waiting for ‘rdbms ipc message’    26:                                    27: waiting for ‘wait for unread message on broadcast channel’28:                                    29: waiting for ‘rdbms ipc message’    30: waiting for ‘rdbms ipc message’    31: waiting for ‘rdbms ipc message’    32: waiting for ‘SQL*Net message from client’33: waiting for ‘Space Manager: slave idle wait’34: waiting for ‘rdbms ipc message’    35: waiting for ‘rdbms ipc message’    36: waiting for ‘rdbms ipc message’    37: waiting for ‘rdbms ipc message’    38: waiting for ‘SQL*Net message from client’39: waiting for ‘rdbms ipc message’    40: waiting for ‘Space Manager: slave idle wait’41: waiting for ‘wait for unread message on broadcast channel’42: waiting for ‘Streams AQ: qmn coordinator idle wait’43: waiting for ‘SQL*Net message from client’Cmd: PL/SQL Execute44: waiting for ‘SQL*Net message from client’45: waiting for ‘Streams AQ: qmn slave idle wait’46: waiting for ‘Streams AQ: waiting for time management or cleanup tasks’47: waiting for ‘SQL*Net message from client’Cmd: Select48: waiting for ‘rdbms ipc message’    49: waiting for ‘enq: TX – row lock contention'[Enq TX-00010008-00000629]Cmd: Select50: waiting for ‘row cache lock’       [Rcache object=0x8f0a1990,]Cmd: Select51: waiting for ‘SQL*Net message from client’52:                                    53:                                    58: waiting for ‘class slave wait’     Blockers~~~~~~~~Above is a list of all the processes. If they are waiting for a resourcethen it will be given in square brackets. Below is a summary of thewaited upon resources, together with the holder of that resource.Notes:~~~~~o A process id of ‘???’ implies that the holder was not found in thesystemstate. (The holder may have released the resource before wedumped the state object tree of the blocking process).o Lines with ‘Enqueue conversion’ below can be ignored *unless*other sessions are waiting on that resource too. For more, seehttp://dlsunuk11.uk.oracle.com/Public/TOOLS/Ass.html#enqcnv)Resource Holder StateEnq TX-00010008-00000629    47: waiting for ‘SQL*Net message from client’Rcache object=0x8f0a1990,    49: 49: is waiting for 47:Object Names~~~~~~~~~~~~Enq TX-00010008-00000629                                     Rcache object=0x8f0a1990,       cid=13(dc_sequences)         Summary of Wait Events Seen (count>10)~~~~~~~~~~~~~~~~~~~~~~~~~~~No wait events seen more than 10 times——————ooOoo——————For the LATEST version of this utility seehttp://dlsunuk11.uk.oracle.com/Public/Utils.html#assFor additional documentation seehttp://dlsunuk11.uk.oracle.com/Public/TOOLS/Ass.htmlSuggested improvements, bugs etc. should be sent to kevin.p.quinn@oracle.comEnd of report. 60404 Lines Processed.[oracle@11rac2 sql]$ awk -f ass1039.awk /u01/app/oracle/diag/rdbms/power/power2/trace/power2_ora_9758.trcStarting Systemstate 1……………………………………………Ass.Awk Version 1.0.39~~~~~~~~~~~~~~~~~~~~~~Source file : /u01/app/oracle/diag/rdbms/power/power2/trace/power2_ora_9758.trcSystem State 1  (2014-07-16 15:15:33.423)~~~~~~~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~1:                                      [DEAD]2:  waiting for ‘pmon timer’           3:  waiting for ‘rdbms ipc message’    4:  waiting for ‘VKTM Logical Idle Wait’5:  waiting for ‘rdbms ipc message’    6:  waiting for ‘DIAG idle wait’       7:  waiting for ‘rdbms ipc message’    8:  waiting for ‘PING’                 9:  waiting for ‘rdbms ipc message’    10: waiting for ‘DIAG idle wait’       11: waiting for ‘rdbms ipc message’    12: waiting for ‘ges remote message’   13: waiting for ‘gcs remote message’   14: waiting for ‘rdbms ipc message’    15: waiting for ‘GCR sleep’            16: waiting for ‘rdbms ipc message’    17: waiting for ‘rdbms ipc message’    18: waiting for ‘rdbms ipc message’    19: waiting for ‘rdbms ipc message’    20: waiting for ‘smon timer’           21: waiting for ‘rdbms ipc message’    22: waiting for ‘rdbms ipc message’    23: waiting for ‘ASM background timer’ 24: waiting for ‘rdbms ipc message’    25: waiting for ‘rdbms ipc message’    26: waiting for ‘wait for unread message on broadcast channel’27:                                    28:                                    29: waiting for ‘rdbms ipc message’    30: waiting for ‘rdbms ipc message’    31: waiting for ‘rdbms ipc message’    32: waiting for ‘SQL*Net message from client’33: waiting for ‘Space Manager: slave idle wait’34: waiting for ‘class slave wait’     35: waiting for ‘rdbms ipc message’    36: waiting for ‘rdbms ipc message’    37: waiting for ‘rdbms ipc message’    38: waiting for ‘rdbms ipc message’    39: waiting for ‘rdbms ipc message’    40: waiting for ‘wait for unread message on broadcast channel’41: waiting for ‘class slave wait’     42: waiting for ‘Streams AQ: qmn coordinator idle wait’43:                                    44: waiting for ‘SQL*Net message from client’45: waiting for ‘Streams AQ: qmn slave idle wait’46: waiting for ‘row cache lock’       [Rcache object=0x8e9a5120,]Cmd: Select47:                                    48: waiting for ‘rdbms ipc message’    49: waiting for ‘Space Manager: slave idle wait’50: waiting for ‘Space Manager: slave idle wait’51:                                    Blockers~~~~~~~~Above is a list of all the processes. If they are waiting for a resourcethen it will be given in square brackets. Below is a summary of thewaited upon resources, together with the holder of that resource.Notes:~~~~~o A process id of ‘???’ implies that the holder was not found in thesystemstate. (The holder may have released the resource before wedumped the state object tree of the blocking process).o Lines with ‘Enqueue conversion’ below can be ignored *unless*other sessions are waiting on that resource too. For more, seehttp://dlsunuk11.uk.oracle.com/Public/TOOLS/Ass.html#enqcnv)Resource Holder StateRcache object=0x8e9a5120,    ??? BlockerObject Names~~~~~~~~~~~~Rcache object=0x8e9a5120,       cid=13(dc_sequences)         Summary of Wait Events Seen (count>10)~~~~~~~~~~~~~~~~~~~~~~~~~~~No wait events seen more than 10 times——————ooOoo——————For the LATEST version of this utility seehttp://dlsunuk11.uk.oracle.com/Public/Utils.html#assFor additional documentation seehttp://dlsunuk11.uk.oracle.com/Public/TOOLS/Ass.htmlSuggested improvements, bugs etc. should be sent to kevin.p.quinn@oracle.comEnd of report. 43873 Lines Processed.Rcache object=0x8e9a5120,    ??? 

Blocker这里节点2没有发现阻塞者,说明阻塞者不在2节点,在1节点

2,找到row cache lock的session

以row cache lock等待事件来搜索会话的等待情况,如果没有使用ass格式化的情况下,一般我们都是这样来和

    —————————————-SO: 0x9b513658, type: 4, owner: 0x9ce441f0, flag: INIT/-/-/0x00 if: 0x3 c: 0x3proc=0x9ce441f0, name=session, file=ksu.h LINE:12624, pg=0(session) sid: 52 ser: 15 trans: 0x9515a1f0, creator: 0x9ce441f0flags: (0x41) USR/- flags_idl: (0x1) BSY/-/-/-/-/-flags2: (0x40009) -/-/INCDID: , short-term DID:txn branch: (nil)oct: 3, prv: 0, sql: 0x8e954a20, psql: 0x8f50cfd0, user: 0/SYSksuxds FALSE at location: 0service name: SYS$USERSclient details:O/S info: user: oracle, term: pts/0, ospid: 6268machine: 11rac2 program: sqlplus@11rac2 (TNS V1-V3)application name: sqlplus@11rac2 (TNS V1-V3), hash value=3270042948Current Wait Stack:0: waiting for ‘row cache lock’cache id=0xd, mode=0x0, request=0x5wait_id=6656 seq_num=6657 snap_id=1wait times: snap=0.001217 sec, exc=0.001217 sec, total=0.001217 secwait times: max=3.000000 sec, heur=3 min 6 secwait counts: calls=1 os=1in_wait=1 iflags=0x5a2

找到row cache enqueue的信息,

这里我们可以看到最终的BLOCKER是inst:1,sid:793

这里需要记录一下行号

row cache enqueue*request来搜索,找到离刚开始最近的一行记录

37769         row cache enqueue: count=1 session=0x9b513658 object=0x8e9a5120, request=X

其实我们还可以下面的方式来搜索

以type: 75, owner: 0x9515a1f0来搜索,因为我们知道,row cache enqueue的type是75,并且owner是属于process跟session的owner是一致的。

其中还可以以row cache enqueuesession9b513658来搜索

        SO: 0x8e990c40, type: 75, owner: 0x9515a1f0, flag: INIT/-/-/0x00 if: 0x1 c: 0x1proc=0x9ce441f0, name=row cache enqueues, file=kqr.h LINE:2064, pg=0row cache enqueue: count=1 session=0x9b513658 object=0x8e9a5120, request=Xsavepoint=0x46row cache parent object: address=0x8e9a5120 cid=13(dc_sequences)hash=152264bc typ=11 transaction=(nil) flags=00000000own=0x8e9a51e8[0x8e9a51e8,0x8e9a51e8] wat=0x8e9a51f8[0x8e990ce8,0x8e990ce8] mode=Nstatus=-/-/-/-/-/-/-/-/-request=X release=FALSE flags=ainstance lock=QN 152264bc 374026d7data=00012a05 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 152264bc 8e9a5120 00000000947397a8 00000000 947397a8 00000000 00000005 00000000 26784f80 00007f3c00000000 00000000 00000000 00000000 8e9a5120 00000000 8e9a52f0 000000008e9a52f0 00000000 8e9a5318 00000000 0000000a 152264bc 374026d7 0000000000000101 00000000 0000011d 00000000 99dd8510 00000000 9ce336f0 000000008f4eb538 00000000 98c04f78 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 99f79978 0000000000000001 0000009a 00050001 08910321 8e9a5388 00000000 8e9a5388 000000000730efec 00000000 26784fa0 00007f3c 99f799d0 00000000 99f799d0 0000000000000000 00000000 00000000 00000000 00000000 00000000 99dd8510 0000000098c05018 00000000 8f4eb5d8 00000000 9b554ec8 00000000 00000000 000000028e9a53f8 00000000 8e9a53f8 00000000 00000000 00000000 00000000 000000008e9a5418 00000000 8e9a5418 00000000 8e9a5428 00000000 8e9a5428 0000000099dca9b8 00000000 99dca9b8 00000000 00000000 00004fe7 26784f88 00007f3c00000000 00000000 00000000 00000000 8e9a5468 00000000 8e9a5468 0000000000000000 00000000 00000000 00000000 feb172d0 00007fff 10600160 0900020000000000 00000000 06c25c14 00000000 26784fa0 00007f3c 00000000 00000000f251fa11 00000002 00000000 00000000 8e9a51e8 00000000kssdmh:  so 0x8e990c40 (type 75, "row cache enqueues") may not have children

红色的部分就是row cache enqueue的信息

instance lock=QN 152264bc 374026d7这里是全局锁的信息,如果在本地没有找到阻塞者的时候,我们就要以这个在其它的节点找到。

3,搜索阻塞者

以row cache enqueueobject8e9a5120来搜索

在2节点没有搜索到阻塞者,回到1节点的trace文件搜索

那么我们只能以instance lock=QN 152264bc 374026d7来搜索

这里可以得到下面的2行,分别进入相应的行,找到MODE的

54281         instance lock=QN 152264bc 374026d754922         instance lock=QN 152264bc 374026d7

得到mode的row cache enqueue的信息

        —————————————-SO: 0x8e5c2150, type: 75, owner: 0x951b5128, flag: INIT/-/-/0x00 if: 0x1 c: 0x1proc=0x9cde1780, name=row cache enqueues, file=kqr.h LINE:2064, pg=0row cache enqueue: count=1 session=0x9b4728e8 object=0x8f0a1990, mode=Xsavepoint=0x29row cache parent object: address=0x8f0a1990 cid=13(dc_sequences)hash=152264bc typ=11 transaction=0x951b5128 flags=0000012aown=0x8f0a1a58[0x8e5c21f8,0x8e5c21f8] wat=0x8f0a1a68[0x8e5d5e58,0x8e5d5e58] mode=Xstatus=VALID/UPDATE/-/-/IO/-/-/-/-request=N release=TRUE flags=8instance lock=QN 152264bc 374026d7data=00012a05 0002000c 000f0002 00020001 000002c1 00000000 00000000 0000000002c10000 00000000 00000000 00000000 00000000 646464ce 64646464 6464646400646464 00800000 00000000 00000000 00000000 00000000 000003c1 0000000000000000 00000000 2d2d0000 2d2d2d2d 2d2d2d2d 2d2d2d2d 2d2d2d2d 2d2d2d2d2d2d2d2d 2d2d2d2d 2d2d2d2d 2d2d2d2d 00000000 152264bc 8f0a1990 00000000947397a8 00000000 947397a8 00000000 00000000 00000000 2d95f900 00007f5f00000001 00000000 00000000 00000000 8f0a1990 00000000 8f0a1b60 000000008f0a1b60 00000000 8f0a1b88 00000000 00000008 152264bc 374026d7 0000000000000101 00000000 0000011d 00000000 99cd8068 00000000 9cdcda70 000000008e4f6420 00000000 8e5b8288 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 999b9938 0000000000000001 00095556 00050520 08910321 8f0a1bf8 00000000 8f0a1bf8 0000000000000000 00000000 2d95f920 00007f5f 999b9980 00000000 999b9980 0000000006c25c14 00000000 00000000 00000000 2d95f920 00007f5f 99cd8068 000000008e5b8328 00000000 8e4f64c0 00000000 9c337718 00000000 00000000 000000028f0a1c68 00000000 8f0a1c68 00000000 00000000 00000000 00000000 000000008f0a1c88 00000000 8f0a1c88 00000000 8f0a1c98 00000000 8f0a1c98 000000008f0a1ca8 00000000 8f0a1ca8 00000000 00000000 00000000 2d95f908 00007f5f00000000 00000000 00000000 00000000 8f0a1cd8 00000000 8f0a1cd8 0000000000000000 00000000 00000000 00000000 5e2f04e8 00007fff 10600160 0000010003000001 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000001 00000108 00000000 8f0a1a58 00000000kssdmh:  so 0x8e5c2150 (type 75, "row cache enqueues") may not have children

以9b4728e8*type: 4来搜索会话的信息,可以看到会话正在等待TX的等待事件

    —————————————-SO: 0x9b4728e8, type: 4, owner: 0x9cde1780, flag: INIT/-/-/0x00 if: 0x3 c: 0x3proc=0x9cde1780, name=session, file=ksu.h LINE:12624, pg=0(session) sid: 795 ser: 15 trans: 0x951b5128, creator: 0x9cde1780flags: (0x41) USR/- flags_idl: (0x1) BSY/-/-/-/-/-flags2: (0x9) -/-/INCDID: , short-term DID:txn branch: (nil)oct: 3, prv: 0, sql: 0x8e4f5860, psql: 0x8f112090, user: 0/SYSksuxds FALSE at location: 0service name: SYS$USERSclient details:O/S info: user: oracle, term: pts/1, ospid: 6441machine: 11rac1 program: sqlplus@11rac1 (TNS V1-V3)application name: sqlplus@11rac1 (TNS V1-V3), hash value=985707405Current Wait Stack:0: waiting for ‘enq: TX – row lock contention‘

关于enq的等待,见enqueue

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

相关文章:

Lock分析:systemstate分析row cache lock

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Lock分析:systemstate分析row cache lock 案例是一次测试row cache lo…...

mysql查看连接数,从查询到优化

你的MySQL数据库最近是否响应变慢?很有可能是因为连接数过多导致的资源抢占!作为数据库管理员或开发者,掌握查看和监控MySQL连接数的技能至关重要,今天我们就来深入探讨这个话题。 快速查看MySQL当前连接数 最直接的命令当属show status like %connect%,这个命令可以一次性…...

遗传算法与偏最小二乘结合的化学光谱变量选择方法

一、方法原理与优势 1. 核心思想 遗传算法(GA)通过模拟自然选择的全局搜索能力,优化偏最小二乘(PLS)模型的变量选择与参数配置,解决以下问题:高维数据降维:从数万波长点中筛选关键特征 多重共线性消除:避免相邻波长点的冗余信息 模型稳定性提升:通过进化策略避免局部…...

云剪贴板

消える飛行機雲 僕たちは見送った Ki e ru hi kō ki gu mo bo ku ta chi wa mi o ku tta 眩しくて逃げた いつだって弱くて Ma bu shi ku te ni ge ta i tsu da tte yo wa ku te あの日から変わらず いつまでも変わらずに A no hi ka ra ka wa ra zu i tsu ma de mo ka wa ra …...

读书笔记:Oracle数据库的水位线秘密:为什么空表查询还很慢?

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学习《Expert Oracle Database Architecture Techniques and…...

AI测试平台自动遍历:低代码也能玩转全链路测试

在日常测试工作中,大家一定遇到过这样的情况: 功能点很多,想快速做一遍稳定性验证,却苦于用例编写耗时; 页面结构复杂,手工点来点去容易遗漏; 系统频繁迭代,每次都要重复回归,工作量翻倍。 如果能有一种方式,不用写脚本,只要提供一个入口地址或安装包,就能把系统从…...

0代码5分钟一键生成Springboot+Vue后台管理系统

0代码5分钟一键生成Springboot+Vue后台管理系统​0代码5分钟一键生成Springboot+Vue后台管理系统 1 项目概述 今天给大家介绍一款基于Spring Boot和Vue的前后端分离脚手架项目,内置高效代码生成器,可快速生成基础增删改查功能。本文将完整演示如何使用该脚手架快速构建一个商…...

nvm与node.js的安装指南

UNIX类操作系统(Linux和macOS) 安装NVM打开终端。使用curl或wget安装NVM。访问NVM的GitHub仓库页面(https://github.com/nvm-sh/nvm)以获取最新的安装脚本。例如,使用curl执行以下命令: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bas…...

故障处理:2分钟处理Oracle RAC中OCR磁盘组丢失磁盘的故障

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。故障背景 近期,为备考 Oracle ADG (Active Data Guard) 相关认证,我与…...

Saga分布式事务框架执行逻辑

Saga分布式事务框架执行逻辑 📋 目录框架概述 核心组件架构 数据库表设计 完整执行流程 节点发现与调用机制 精简补偿策略设计 总结框架概述 这是一个基于数据库驱动的Saga分布式事务框架,专门用于解决跨服务间数据同步的一致性问题。框架采用了混合编排模式,结合了集中式任…...

在Android开发中实现两个Intent跳转及数据交换的方法

在Android开发中,两个活动(Activity)之间的Intent跳转及数据交换是一项基本而重要的功能。这通常涉及两个步骤:从一个活动发送数据,并在另一个活动中接收数据。 一、发起活动 — 发送数据 首先是初始化一个Intent对象,并使用 putExtra()方法来传递数据。以下是具体的步骤…...

ARC188 做题记

训A () 题意 题解 \(\bf{record}\) B () 题意 题解 \(\bf{record}\) C () 题意 题解 \(\bf{record}\) D () 题意 题解 \(\bf{record}\) E () 题意 题解 \(\bf{record}\)...

AT_arc145_d [ARC145D] Non Arithmetic Progression Set

在这个构造题上展示出了战犯级表现。 首先你先别想和的限制,\(x - y \ne y - z\) 就已经是一个很强的限制了,先想想这个怎么做。 在我看来一个很无厘头的想法是,将 \(3\) 进制下分配数字,如果只有 \(0/1\) 必然合法,想想就会觉得很妙,但是很无厘头。 然后如何满足和的限制…...

Microsoft AI Genius | 第三集实战课正式开启:用 Copilot Studio 定制你的专属智能体

想为团队快速定制专业级 AI 智能体,却担心增加工程负担或陷入复杂流程? 我们在前两期已解锁 GitHub Copilot Agent Mode、Azure AI Foundry Agent Service(国际版)的开发秘籍,本期将带你直达智能体定制最前线——Microsoft AI Genius 2.0系列第三集实战课来了!请锁定9月2…...

C# 多线程编程核心要点:不只是Thread和lock

聊到C#多线程,很多人第一反应就是Thread和lock。没错,它们是基石,但如果你只停留在它们,那就像只会用菜刀切菜,永远做不出满汉全席。现代C#多线程的核心思想是 “高效地利用计算资源,并安全地处理并发”。下面我跟你捋几个最核心的点,保证接地气。1. 为什么要用多线程?…...

基于MATLAB的图像融合拼接GUI系统设计

一、GUI架构设计(基于App Designer) % 创建GUI组件 fig = uifigure(Name,图像融合拼接系统,Position,[100,100,800,600]);% 控件布局 btnLoad = uibutton(fig,Text,加载图像,Position,[20,500,100,30],...ButtonPushedFcn,@(btn,event) loadImageCallback());btnPreprocess =…...

Python使用多线程和异步调用

概述 在 Python 中,多线程和异步调用是处理并发任务的两种常用方式,适用于不同场景。 多线程(threading 模块) 多线程适合处理 I/O 密集型任务(如网络请求、文件读写),因为这类任务大部分时间在等待,线程可以在等待时切换到其他任务。 import threading import timedef…...

研究生学术英语读写教程(中国科学院大学出版) Unit10 TextA 原文以及翻译(仅供学习)

本文全程使用kimi助手识别原书文字并翻译,无人工校准,没有参考任何其他翻译文章,仅供学习使用,如有侵权请联系我,会及时删除。 The Doctors Dilemma: Is It Ever Good to Do Harm? 原文1 Medical knowledge changes swiftly, and technological changes make new and exp…...

基于Python+Vue开发的蛋糕商城管理系统源码+运行步骤

项目简介该项目是基于Python+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的蛋糕商城管理系统项目,大学生可以在实践中学习和…...

某运营商智慧协同平台——构建高效、敏捷的运营管理新模式

项目背景 在某运营商数字化运营战略的指引下,我司携手该运营商,共同打造智慧协同运营平台。该平台旨在实现省市协作,赋能一线,通过引入君南信息的技术和服务支持,提升业务支撑效率、加强系统安全防护、增强平台功能与服务,以满足全省21个地市独立配置、维护和管理数据展示…...

go使用反射获取http.Request参数到结构体 - 实践

go使用反射获取http.Request参数到结构体 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace …...

基于MATLAB/Simulink的TI2000系列DSP模型设计

一、开发环境配置工具安装安装MATLAB R2023a + Simulink 安装TI C2000 Support Package(通过Add-On Explorer) 安装Code Composer Studio (CCS) v7.5+硬件连接将TI2000系列DSP开发板(如C28069)通过USB连接至PC 在CCS中完成设备驱动配置二、模型设计流程 1. 创建Simulink模型…...

nginx 常用参数

...

Python常见函数和代码示例

内置函数 print() - 输出信息到控制台 name = "Alice" age = 30 print("姓名:", name, "年龄:", age) # 输出多个值 print(f"姓名: {name}, 年龄: {age}") # 使用f-string格式化输出 print("姓名: {}, 年龄: {}".format(na…...

69-SQLite应用 - 详解

69-SQLite应用 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14…...

mysql 源码下载,从获取到安装的完整指南

你是否曾想过亲手剖析MySQL这个影响了整个互联网时代的数据库?本文将带你一步步获取MySQL源码,让你不仅能安装使用,更能深入探索其内部机制。 MySQL作为最流行的开源关系型数据库之一,其发展历程堪称传奇。从最初的免费开源到被Oracle收购,MySQL始终保持着强大的生命力。它…...

docker中centos7配置

拉取centos7镜像: docker pull centos:7 启动容器: docker run -d -it --privileged --name=test centos:7 /usr/sbin/init 进入容器: docker exec -it test /bin/sh centos7安装: #设置时区 timedatectl set-timezone Asia/Shanghai #安装crontab服务 yum install -y rsy…...

centos7虚拟机下系统环境配置

​1. 网络配置 网卡: nmcli d 网络查看: ip addr 网络配置文件: /etc/sysconfig/network-scripts/ifcfg-enoXXX BOOTPROTO=static;IPADDR=;GATEWAY=;NETMASK=255.255.255.0;ONBOOT=yes 重启网络服务: systemctl restart network.service 或:service network restart 配置D…...

CefSharp高版本问题

​最近做一个PC端功能,打算用CefSharp+vue3来做,但在设置cookie时,出现了怎么也设置不上的问题。以前用CefSharp+vue2做过PC端,思路是差不多的。开始觉得是vue3哪里的设置问题,没找到,那就将cookie打印出来,打印出来是空的。那么问题就出在CefSharp上了,由于安装新的Ce…...

前缀和pre,如何求总和:pre(r) - pre(l)(1 = l = r = n),以及|pre(r) - pre(l)|

前缀和pre,如何求总和:pre(r) - pre(l)(1 <= l <= r <= n),以及|pre(r) - pre(l)|我们假设 pre[i]: 数组前i个数的之和,这就是前缀和 计算所有下标对 (1 <= l <= r <= n) pre[r] - pre[l] 之和 如果数据量是 n <= 1e5,直接两个for循环暴力求解的话,时…...

P11537 [NOISG 2023 Finals] Toxic Gene 题解

先考虑如果所有的 T 已被排除,剩下的位置怎么判断是 R 还是 S。 注意到每种细菌可以在样本中放入任意多个,容易想到经典的套路:将 \(8\) 个位置一起处理,第 \(i\) 个在样本中出现 \(2^{i-1}\) 次,再加入一个 T。若结果 \(\land 2^{i-1}=2^{i-1}\),则第 \(i\) 个对应的位置…...

keil5中stm32相关记录

在Keil 5中如何建立一个STM32项目_keil cmsis-CSDN博客 keil中怎么使用中文语言_keil怎么设置中文-CSDN博客 STM32入门开发-详解GPIO口的配置与控制方式(以LED灯为例) - 知乎...

centos7中mysql环境配置

​mysql源: rpm -ivh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm yum install mysql-server mysql-client libmysqlclient-dev mysql-devel MySQL-python远程连接: GRANT ALL PRIVILEGES ON *.* TO root@% IDENTIFIED BY 123456 ; flush privileges; 记…...

centos7中php环境配置

​php7源: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum -y install php72w php72w-cli php72w-fpm php72w-common php72w-devel php72w-embedded php72w-gd ph…...

Symfony学习笔记 - 利用Doctrine开发一个学生信息的增删查改

现在在学习Symfony,Doctrine作为官方重点推荐的数库库Bundle,必须要试试! 1、创建Symfony的Demo的Web应用 symfony new symfony_webapp --webapp 正确安装后,目录应该是这样的:如果你的目录仅仅只有config和vendor目录,那就表明你没有安装完整。原因是symfony时,需要从h…...

如何在Nginx服务器配置https以及强制跳转https

...

centos7中安装protobuf-c

​前言 设备服务与设备端通讯,设备服务使用Go构建,使用protobuf格式与设备端通讯,设备端采用stm32系列mcu,使用C语言开发,所以要生成protobuf C语言版协议库。步骤1.准备 yum -y install autoconf automake libtool yum -y install gcc gcc-c++2.安装protobuf protobuf版本…...

赞助NYU-Poly女性网络安全研讨会:推动行业多元发展

本文介绍Trail of Bits公司赞助纽约大学理工学院女性网络安全研讨会的举措,包括活动目标、技术工作坊内容、职业发展指导以及往期参与记录,旨在促进网络安全领域的性别多元化。我们正在赞助NYU-Poly女性网络安全研讨会 Dan Guido 2014年9月29日 会议, 教育, 赞助 网络安全是一…...

MyEMS:开源能源管理的探索与实践

在当今社会,能源的有效管理与优化利用已成为企业、公共机构乃至全社会关注的核心议题。随着物联网(IoT)和大数据技术的成熟,相应的软件工具应运而生,旨在为解决能源挑战提供技术方案。MyEMS便是这一领域中的一个代表性开源项目。 什么是MyEMS? MyEMS是一个专为能源管理设…...

实时内核中的调度程序节流

实时内核包含一个保护机制,它允许分配供实时任务使用的带宽。保护机制被称为实时调度程序节流。 实时节流机制的默认值定义实时任务可以使用 95% 的 CPU 时间。其余的 5% 将被视为非实时任务,例如在 SCHED_OTHER 和类似调度策略下运行的任务。务必要注意,如果单个实时任务占…...

配置Burp Suite与Proxifier抓取微信小程序流量

微信小程序抓包教程:Burp Suite + Proxifier 配置指南 .container { max-width: 800px; margin: 0 auto; padding: 24px 40px; background-color: rgba(255, 255, 255, 1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); border-radius: 8px } .chart-container { position: rel…...

我的ai 相关工具站

在AI技术席卷日常生活的今天,美容与时尚领域也迎来了革新。如果你正在犹豫是否换发型、尝试新发色,或想看看不同年龄或面部效果的自己,RightHair.ai就是你的理想选择。这款完全免费的在线AI工具不仅能让你上传照片试穿200+种发型和发色,还提供AI年龄滤镜、微笑滤镜、瘦脸滤…...

C#第十一章 023 024

类 是一种数据结构析构器的声明 和构造器类似 ~Student(){}这样静态构造器是给静态属性的在类里面的类可以说是成员类或者嵌套类...

MyEMS:赋能每一个组织,成为自己的能源管理专家

能源管理曾是一件“昂贵”的事情。它意味着动辄七位数的软件许可费、依赖外部专家的深度定制,以及被特定供应商“锁定”的长期合约。这无形中为众多企业,特别是中小型企业和机构,筑起了一道难以逾越的高墙。 然而,数字时代的真正精神是“赋能”与“ democratization”(民主…...

Vue开发微信公众号上传图片

​处理思路:从服务器获取微信配置参数,进行微信配置 选择本地图片,获取图片base64输出 将base64图片转化为文件上传 关键代码: 1.获取配置与选择本地图片输出import http from ./http import api from ./api import wx from "weixin-js-sdk"; export default {g…...

centos7中scrapy运行环境配置

最近根据需要,使用scrapy开发了一个爬虫应用,直接使用的python2,记录一下部署环境。 1.安装epel扩展源 yum -y install epel-release 2.安装pip yum -y install python-pip3.安装scrapy pip install scrapy 阿里云镜像:pip install scrapy -i http://mirrors.aliyun.com/py…...

flutter配置国内镜像

git clone -b master https://mirrors.tuna.tsinghua.edu.cn/git/flutter-sdk.git设定方式如下: export FLUTTER_STORAGE_BASE_URL="https://mirrors.tuna.tsinghua.edu.cn/flutter" export PUB_HOSTED_URL="https://mirrors.tuna.tsinghua.edu.cn/dart-pub&qu…...

微信小程序 live-player 无声音

由于微信公众号在播放直播视频,方案上视频存在严重的延时,而小程序有live-player,可以做为低延时解决方案,所以准备改用小程序重写原来功能。问题描述: 1.微信小程序使用live-player控件播放基于腾讯lvb平台直播服务直播,视频由本地客户端,拉取摄像头视频向直播平台推流…...

栈的妙用:如何优雅地处理括号匹配难题 (C语言版)

栈的妙用:如何优雅地处理括号匹配难题 (C语言版)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace…...

食品包装 AI 视觉检测技术:原理、优势与数据应用解析

一、食品行业包装质检的核心技术痛点 在食品行业现代化生产体系中,包装质检作为保障食品安全与品质的关键环节,面临多维度技术挑战,具体体现在以下方面: 1、检测效率与产线速度不匹配 现代化食品生产线(如饮料灌装线、零食包装线)已实现高速运转,部分产线每分钟可完成数…...