gbase8s数据库中根据系统表查看锁的现状和锁资源的监控(包括了两个onstat -g的关键命令和锁的查看演示)

1. 锁资源信息的查找和监控

1.1. 系统表中关于锁的信息

1.1.1. 当前正在占用锁资源和等待锁资源信息的系统表syslocks和测试

> select * from sysmaster:syslocks;
dbsname  test  --数据库名称
tabname  test  --锁发生的表名称
rowidlk  6918  --发生锁的行号
keynum   0  --有索引时索引的键值锁
type     X  --锁的类型,由此可以看出是排他锁
owner    54 --当前持有锁的session号
waiter   55 --等待锁的session号--当发生锁阻塞时,一个阻塞syslocks中会有多条记录,只有waiter中有数据的才是阻塞的关键记录

锁类型的说明:

  • B:byte lock字节锁
  • IS:intent shared lock意向共享锁
  • S:shared lock共享锁
  • XS:repeatable read shared key可重复度共享锁
  • U:update lock更新锁
  • IX:intent exclusive lock意向独占锁
  • SIX:共享意向独占锁
  • X:exclusive lock独占锁
  • XR:repreatable read exclusive可重复读独占锁

------------------------------关于上述测试的实验记录--------------------------------------

--查看session号
> select dbinfo('sessionid') from dual;
(expression)54
1 row(s) retrieved.
--查询session号
> select dbinfo('sessionid') from dual;
(expression)55
1 row(s) retrieved.
> set lock mode to wait;
Lockmode set.
> update test set name ='ac' where id =89627;
--此时会hang住
> select * from sysmaster:syslocks where waiter is  not null;
dbsname  test
tabname  test
rowidlk  6918
keynum   0
type     X
owner    54
waiter   55
1 row(s) retrieved.
  • 上述信息可以看出是test库的test表
  • session55的会话在等待session44的会话
> set isolation to dirty read;
Isolation level set.
> select rowid from test where id=89627;rowid6918311558597312686618
4 row(s) retrieved.
  • 设置脏读,查看本次修改数据的rowid,可以发现,第一条数据的rowid就是rowidlk

1.1.2. 从会话层次查看会话关于锁的信息

> select * from sysmaster:syssesprof where sid=24;
sid                24 --会话号
lockreqs           0 --请求锁的数量
locksheld          0 --持有的锁数量
lockwts            0 --等待锁的次数
deadlks            0 --检测到死锁的次数
lktouts            0 --死锁超时的次数
logrecs            0 --写入的逻辑日志记录数
isreads            0 --读取次数
iswrites           0 --写入次数
isrewrites         0 --重写次数
isdeletes          0 --删除次数
iscommits          0 --提交次数
isrollbacks        0 --回退次数
longtxs            0 --长事务次数
bufreads           0 --缓冲读次数
bufwrites          0 --缓冲写次数
seqscans           0 --全表扫描次数
pagreads           0 --磁盘读取页面次数
pagwrites          0 --写入磁盘次数
total_sorts        0 --总排序次数
dsksorts           0 --无法放入内存的排序次数
max_sortdiskspace  0 --排序使用的最大磁盘空间
logspused          0 --当前事务使用的字节数的逻辑日志空间
maxlogsp           0 --会话开始以来任何单个事务使用的最大逻辑日志空间

--------------------------------依然以session54和session55为例

> select * from sysmaster:syssesprof  where sid=54 or sid=55;
--
sid                54
lockreqs           212266
locksheld          10
lockwts            0
deadlks            0
lktouts            0
logrecs            9
isreads            214
iswrites           0
isrewrites         4
isdeletes          0
iscommits          0
isrollbacks        0
longtxs            0
bufreads           5976
bufwrites          8
seqscans           2
pagreads           0
pagwrites          0
total_sorts        1
dsksorts           0
max_sortdiskspace  0
logspused          1880
maxlogsp           0
  • 可以看到session54持有10个锁,没有锁等待也没有锁超时

sid                55
lockreqs           6050
locksheld          2
lockwts            2
deadlks            0
lktouts            0
logrecs            0
isreads            85
iswrites           0
isrewrites         0
isdeletes          0
iscommits          0
isrollbacks        0
longtxs            0
bufreads           338
bufwrites          0
seqscans           3
pagreads           0
pagwrites          0
total_sorts        0
dsksorts           0
max_sortdiskspace  0
logspused          0
maxlogsp           0
  • 从上述可以看出,持有两个锁
  • 由于update执行两次都被锁住,所以等待了两次锁

1.1.3. 查看当前会话的锁模式syssqlcurses

select * from sysmaster:syssqlcurses;
scs_sessionid       23 --会话id
scs_currdb          test --当前数据库
scs_isolationlevel  REPEATABLE READ --隔离级别
scs_lockmode        0 --锁模式
scs_executions      0 --执行次数
scs_cumtime         0.000920159285 --累计执行次数
scs_bufreads        6 --缓冲区读取次数
scs_pagereads       2 --页读取次数
scs_bufwrites       0 --缓冲区写入次数
scs_pagewrites      0 --页写入次数
scs_totsorts        0 --排序次数
scs_dsksorts        0 --磁盘排序次数
scs_sortspmax       -1 --排序所需最大的磁盘空间
scs_sqerrno         0 --SQL错误号
scs_isamerr         0 --ISAM错误号
scs_fevers          9.03 --前端版本
scs_sqlstatement    select * from sysmaster:syssqlcurses --SQL语句

1.2. 是否是锁资源不够的查看

1.2.1. 查看锁资源总数量sysshmvals

> select * from sysmaster:sysshmvals;
sh_mode            5 --共享内存段的访问权限模式
sh_boottime        1708508793 --实例最后一次启动时间
sh_pfclrtime       1708508793 --最后一次清除页面缓存的时间戳,用来记录统计信息的时间
sh_curtime         1708675854 --查询时当前的时间戳
sh_bootstamp       527872 
sh_stamp           672801 --记录和标记事件状态的时间戳
sh_mainlooptcb     1246080304
sh_sysflags        4097
sh_maxchunks       32766 --数据库能够支持的最大数据块数量
sh_maxdbspaces     2047  --数据库能支持的最大数据空间数量
sh_maxuserthreads  131068 --支持的最大用户线程数,关联到并发用户数和任务
sh_maxtrans        131068 --最大的事务
sh_maxlocks        200000 --最大的锁数量(onconfig中locks设置的大小)
sh_maxlogs         41 --逻辑日志数量
sh_nbuffs          35001 --缓冲区的个数
sh_pagesize        2048 --缓冲区的页大小
sh_nlrus           64 --所在数据库使用相应大小数据空间的缓冲区配置LRU队列的个数
sh_maxdirty        60.00000000000 --缓冲区lru_max_dirty的配置
sh_mindirty        50.00000000000 --缓冲区lru_min_dirty的配置
sh_ncleaners       32
sh_longtx          0 --出现长事务的次数
sh_optstgbsnum     0 --存储共享内存段的最佳存储器段号
sh_cpflag          0
sh_rapages         0
sh_rathreshold     0
sh_lastlogfreed    12 --最后一个可用的逻辑日志序号
sh_rmdlktout       60
sh_narchivers      0
sh_maxpdqpriority  0 --最大PDQ的优先级,值越高,并行的可能性越大。关联到了onconfig中DS_MAX_QUERIES
sh_curmaxcons      2 --实例启动以来观测到的最大并发连接数量
sh_ovlmaxcons      2 --实例安装以来观测道德最大并发连接数1 row(s) retrieved.

--------------------------------------以session54和session55服务器为例查看最大锁资源

> select sh_maxlocks from sysmaster:sysshmvals;sh_maxlocks9000001 row(s) retrieved.

1.2.2. 查看页面是否在等待锁资源

数据库的锁资源是有限的,如果查看会话是否在对总体资源的需求,可以查看以下系统表

> select * from sysmaster:syssessions;
sid         26 --页面id 
username    gbasedbt --连接用户
uid         1002 --用户id
pid         0 --客户端进程id
hostname --连接的主机名
tty --用户的标准错误文件名
connected   1701396103 --用户连接时间
feprogram --前端程序名,jdbc中应该可以配置
pooladdr    1196134464 --专有对话池指针
is_wlatch   0 --如果在等待互斥体,则为1
is_wlock    0 --等待锁资源则为1
is_wbuff    0 --等待缓冲区,则为1
is_wckpt    0 --等待检查点,则为1
is_wlogbuf  0 --等待日志缓冲区,则为1
is_wtrans   0 --等待事务,则为1
is_monitor  0 --如果是监控进程,则为1
is_incrit   0 --是否在关键段内,则为1
state       524289 --标志位
  • 0x00000001:用户结构正在使用
  • 0x00000002:等待latch
  • 0x00000004:等待锁
  • 0x00000008:等待缓冲区
  • 0x00000010:等待检查点
  • 0x00000020:在读调用中
  • 0x00000100:写入逻辑日志文件到备份磁带
  • 0x00000200:在临界区中
  • 0x00000400:特殊守护进程
  • 0x00000800:归档
  • 0x00001000:清理死亡进程
  • 0x00002000:等待写日志缓冲区
  • 0x00004000:特殊缓冲刷新线程
  • 0x00008000:远程数据库服务器
  • 0x00010000:用于设置RS_timeout的死锁超时
  • 0x00020000:常规锁超时
  • 0x00040000:等待事务
  • 0x00080000:会话的主线程
  • 0x00100000:构建索引的线程
  • 0x00200000:B树清理线程

---------------------------以session54和session55为例查看会话的对锁资源的需求

> select *,hex(state) from sysmaster:syssessions;sid           55
username      gbasedbt
uid           1000
pid           1421994
hostname      iZ2ze4p3q6wy4hzagubdmbZ
tty           /dev/pts/4
connected     1719834825
feprogram     /home/gbasedbt/gbase/bin/dbaccess
pooladdr      1396736064
is_wlatch     0
is_wlock      0
is_wbuff      0
is_wckpt      0
is_wlogbuf    0
is_wtrans     0
is_monitor    0
is_incrit     0
state         524289
(expression)  0x00080001
  • 上述可以看出锁资源充足
  • 且根据state可以看出其实一个主进程,且正在使用
sid           54
username      gbasedbt
uid           1000
pid           1421866
hostname      iZ2ze4p3q6wy4hzagubdmbZ
tty           /dev/pts/1
connected     1719834758
feprogram     /home/gbasedbt/gbase/bin/dbaccess
pooladdr      1397104704
is_wlatch     0
is_wlock      0
is_wbuff      0
is_wckpt      0
is_wlogbuf    0
is_wtrans     0
is_monitor    0
is_incrit     0
state         524289
(expression)  0x00080001
  • 上述可以看出锁资源充足
  • 且根据state可以看出其实一个主进程,且正在使用

1.2.3. 整个实例锁发生锁资源不足次数的查看sysprofile

----会话尝试使用超过锁最大数量的次数
ovlock                           0
--锁请求等待次数
latchwts                       105                         7
--锁请求次数
lockreqs                      1250
--锁等待次数
lockwts                          0                       0
--死锁次数
deadlks                          0
--死锁超时次数
lktouts                          0

------------------------以session54和session55的服务进行查看

> select * from sysmaster:sysprofile where name in ('ovlock','latchwts','lockreqs','lockwts','deadlks','lktouts');name                         value
ovlock                           0
latchwts                       176
lockreqs                    239761
lockwts                          6
deadlks                          0
lktouts                          06 row(s) retrieved.
  • 上述可以看出,锁资源没有不足过
  • 发生锁请求等待次数176次
  • 请求锁239761次
  • 发生锁等待次数6次

1.2.4. 表为单位查看发生在表上的锁的次数sysptprof

> select * from sysmaster:sysptprof limit 1;
dbsname     rootdbs --数据库名称或者数据空间名称
tabname     TBLSpace --表名
partnum     1048577 --表的编号
lockreqs    0 --锁请求
lockwts     0 --锁等待
deadlks     0 --死锁
lktouts     0 --锁超时
isreads     0 --读次数
iswrites    0 --写次数
isrewrites  0 --更新次数
isdeletes   0 --删除次数
bufreads    693 --buffer读次数
bufwrites   0 --buffer写次数
seqscans    0 --顺序扫描次数
pagreads    1 --磁盘读
pagwrites   0 --磁盘写次数

------------------------以session54和session55的表进行查看

> select * from sysmaster:sysptprof where tabname='test';dbsname     test
tabname     test
partnum     6292558
lockreqs    220863
lockwts     2
deadlks     0
lktouts     0
isreads     188
iswrites    0
isrewrites  4
isdeletes   0
bufreads    9109
bufwrites   8
seqscans    8
pagreads    2845
pagwrites   51 row(s) retrieved.
  • test表发生过2次锁等待

1.3. 工具查看锁

1.3.1. onstat -k

[gbasedbt@iZ2ze4p3q6wy4hzagubdmbZ ~]$ onstat -k
Your evaluation license will expire on 2025-06-24 00:00:00
On-Line -- Up 3 days 23:45:00 -- 4275148 Kbytes
--    锁的类型  行标识号
Locks
address          wtlist           owner            lklist           type     tblsnum  rowid    key#/bsiz
44690028         0                4d704fa8           480f04e0         HDR+IX   60044e   0           0
480ed6a8         0                4d703568           480edb70             IX   60044e   0           0
480ed950         0                4d704fa8           480ede18         HDR+B    60044e   a7a00       99
480ed9d8         0                4d704fa8           480edc80         HDR+X    60044e   91d40       0     U
480eda60         0                4d704fa8           480ed950         HDR+S    100002   201         0
480edae8         0                4d704fa8           480ed9d8         HDR+X    60044e   a7a1a       0     U
480edb70         0                4d703568           0                    S    100002   20b         0
480edbf8         4d7023e8         4d704fa8           44690028         HDR+X    60044e   1b06        0     U
480edc80         0                4d704fa8           480edbf8         HDR+X    60044e   4c106       0     U
480edd08         0                4d704fa8           480edae8         HDR+B    60044e   1b00        99
480edd90         0                4d704fa8           480edd08         HDR+B    60044e   4c100       99
480ede18         0                4d704fa8           480edd90         HDR+B    60044e   91d00       99
480f04e0         0                4d704fa8           0                HDR+S    100002   20b         013 active, 900000 total, 131072 hash buckets, 0 lock table overflows
  • address:锁在共享内存中的地址(如果用户线程等待此锁,地址将会出现在onstat -u的wait字段中)
  • wtlist:正在等待锁的用户线程
  • owner:正持有锁的线程的共享内存地址,此地址对应onsta -u输出的address字段中的地址。当owner值显示在括号中时,它代表事务结构的共享内存地址,只有锁是为全局事务而分配时,才会出现这种情况。该地址对应onstat -G的输出的地址字段
  • lklist:所有者持有的链接列表的下一个锁
  • type:锁的类型
    • HDR:头
    • B:字节
    • S:共享
    • X:互斥
    • I:意向
    • U:更新
    • IX:意向-互斥
    • IS:意向-共享
    • SIX:共享,意向-互斥
  • tblsnum:锁定资源的tblspace编号,小于10000,表示enterprise replication伪锁
  • rowid:行表示号

1.3.2. 查看锁会话的配合命令onstat -u

[gbasedbt@iZ2ze4p3q6wy4hzagubdmbZ ~]$ onstat -u
Your evaluation license will expire on 2025-06-24 00:00:00
On-Line -- Up 3 days 23:50:53 -- 4275148 Kbytes
--线程的共享内存地址 会话状态的标志 会话唯一标识 会话用户 终端类型 锁的地址 锁等待时间 用户线程持有的锁数 用户线程的磁盘读取数 用户线程读取的写调用数
Userthreads
address          flags   sessid   user     tty      wait             tout locks nreads   nwrites
4d7000e8         ---P--- 5        gbasedbt -        0                0    0     0        0
4d7009a8         ---P--B 6        gbasedbt -        0                0    0     0        0
4d701268         Y--P--D 7        gbasedbt -        520d4460         0    0     22830    0
4d701b28         ---P--D 8        gbasedbt -        0                0    0     0        0
4d7023e8         L---R-- 55       gbasedbt 4        480edbf8         -1   2     0        0
4d702ca8         ---P--D 12       gbasedbt -        0                0    0     0        0
4d703568         ---P--- 55       gbasedbt 4        0                0    2     0        0
4d703e28         ---P--D 13       gbasedbt -        0                0    0     2        0
4d7046e8         ---P--D 14       gbasedbt -        0                0    0     0        0
4d704fa8         Y-BP--- 54       gbasedbt 1        540a3538         0    11    17       0
4d705868         Y--P--D 25       gbasedbt -        44282c40         0    0     0        044 active, 256 total, 136 maximum concurrent

flags标志位

  • 位置1:
    • B:正在等待缓冲区
    • C:正在等待checkpoint
    • G:正在等待对逻辑日志缓冲区的写入
    • L:正在等待锁
    • S:正在等待互斥体,针对共享资源,同时只向一个线程授予共享资源的独占访问权,如果一个线程已经获取了互斥体,获取该互斥体的第二个线程将会被挂起
    • T:正在等待事务
    • Y:正在等待条件
    • X:正在等待事务清除(回滚)
  • 位置2
    • *:IO故障过程中的事务是活动的
  • 位置3
    • A:Dbspace备份线程
    • B:begin work has been logged
    • P:
    • X:XA prepared
    • C:正在递交事务
    • R:正在回滚或已经回滚
    • H:Heuristically aborting
  • 位置4
    • P:会话主线程
  • 位置5
    • R:正在读取
    • X:临界段中的线程
  • 位置6
    • R:恢复过程中使用的线程
    • -:恢复过程中未使用的线程
  • 位置7
    • B:B-tree清除程序线程
    • C:已终止正在等待清除的用户线程
    • D:守护程序线程
    • F:页清除程序线程
    • M:Sepcial monitor

1.3.3. 根据onstat -k和onstat -u配合查看持有锁的会话和等待锁的会话

[gbasedbt@iZ2ze4p3q6wy4hzagubdmbZ ~]$  onstat -u | awk '{print $1, $3}' | awk 'NR==FNR{a[$1]=$2; next} NR!=FNR && $2 , a[$2], $2, $1, a[$1]}' - <(onstat -k | awk '$2~ /[1-9]/ {print $2, $3}')ddr:%s        等待锁sid:%s\n",
Your evaluation license will expire on 2025-06-24 00:00:00
Your evaluation license will expire on 2025-06-24 00:00:00
持有锁sid:54        持有锁uaddr:4d704fa8       等待锁uaddr:4d7023e8        等待锁sid:55
  • 从上述可以看出,持有锁的会话id是54,等待锁的会话id是55
  • 可以根据会话id查看锁的sql

1.3.4. 根据会话id查看sql

[gbasedbt@iZ2ze4p3q6wy4hzagubdmbZ ~]$ onstat -g sql 54
Your evaluation license will expire on 2025-06-24 00:00:00
On-Line -- Up 3 days 23:54:22 -- 4275148 KbytesSess       SQL            Current            Iso Lock       SQL  ISAM F.E.
Id         Stmt type      Database           Lvl Mode       ERR  ERR  Vers  Explain
54         -              test               CR  Not Wait   0    0    9.24  OffLast parsed SQL statement :update test set name ='a' where id =89627
[gbasedbt@iZ2ze4p3q6wy4hzagubdmbZ ~]$ onstat -g sql 55
Your evaluation license will expire on 2025-06-24 00:00:00
On-Line -- Up 3 days 23:53:35 -- 4275148 KbytesSess       SQL            Current            Iso Lock       SQL  ISAM F.E.
Id         Stmt type      Database           Lvl Mode       ERR  ERR  Vers  Explain
55         UPDATE         test               CR  Wait       0    0    9.24  OffCurrent SQL statement (6) :update test set name ='ac' where id =89627Last parsed SQL statement :update test set name ='ac' where id =89627

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小红书怎么保存无水印图?

使用小红书APP长按保存的图片代有水印&#xff0c;很多人想知道保存小红书无水印图片的方法。本文教你如何保存到无水印的小红书图片&#xff0c;但是请注意不要侵犯作者图片的版权。 小红书怎么保存无水印图&#xff1f; 1、手机上打开小红书APP&#xff1b; 2、打开后&#…

昇思25天学习打卡营第13天|BERT

一、简介&#xff1a; BERT全称是来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c;它是Google于2018年末开发并发布的一种新型语言模型。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自…

2.3章节Python中的数值类型

1.整型数值 2.浮点型数值 3.复数   Python中的数值类型清晰且丰富&#xff0c;主要分为以下几种类型&#xff0c;每种类型都有其特定的用途和特性。 一、整型数值 1.定义&#xff1a;整数类型用于表示整数值&#xff0c;如1、-5、100等。 2.特点&#xff1a; Python 3中的…

Quartz表达式:定时任务调度的高级配置与应用

Quartz表达式&#xff1a;定时任务调度的高级配置与应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. Quartz表达式概述 Quartz是一个强大的开源作业调…

卡尔曼滤波公式推导笔记

视频见B站上DR_CAN的卡尔曼滤波器 【卡尔曼滤波器】3_卡尔曼增益超详细数学推导 &#xff5e;全网最完整_哔哩哔哩_bilibili

动手学深度学习5.6 GPU-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记&#xff0c;以及对课后练习的一些思考&#xff0c;自留回顾&#xff0c;也供同学之人交流参考。 本节课程地址&#xff1a;17 使用和购买 GPU【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址&#xff1a;5.6. GPU —…

数据库定义语言(DDL)

数据库定义语言&#xff08;DDL&#xff09; 一、数据库操作 1、 查询所有的数据库 SHOW DATABASES;效果截图&#xff1a; 2、使用指定的数据库 use 2403 2403javaee;效果截图&#xff1a; 3、创建数据库 CREATE DATABASE 2404javaee;效果截图&#xff1a; 4、删除数据…

玩转springboot之springboot热部署

springboot热部署 热部署是在服务器运行时重新部署项目&#xff0c;直接加载整个应用&#xff0c;会释放内存&#xff0c;不过比较耗时 配置tomcat实现热部署 有三种方式 方式一 把项目web文件放在webapps目录下 方式二 在tomcat\conf\server.xml中的<host>标签内添加<…

面向阿克曼移动机器人(自行车模型)的LQR(最优二次型调节器)路径跟踪方法

线性二次调节器&#xff08;Linear Quadratic Regulator&#xff0c;LQR&#xff09;是针对线性系统的最优控制方法。LQR 方法标准的求解体系是在考虑到损耗尽可能小的情况下, 以尽量小的代价平衡其他状态分量。一般情况下&#xff0c;线性系统在LQR 控制方法中用状态空间方程描…

opencv c++ python获取摄像头默认分辨率及设置缩放倍数

c代码 #include <opencv2/opencv.hpp> #include <iostream>int main() {// 创建一个VideoCapture对象cv::VideoCapture cap(0); // 参数0表示打开默认摄像头// 检查摄像头是否成功打开if (!cap.isOpened()) {std::cerr << "Error: Could not open came…

Android super.img结构及解包和重新组包

Android super.img结构及解包和重新组包 从Android10版本开始&#xff0c;Android系统使用动态分区&#xff0c;system、vendor、 odm等都包含在super.img里面&#xff0c;编译后的最终镜像不再有这些单独的 image&#xff0c;取而代之的是一个总的 super.img. 1. 基础知识 …

【Unity】RPG2D龙城纷争(七)关卡编辑器之剧情编辑

更新日期:2024年7月1日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、剧情编辑1.对话数据集2.对话触发方式3.选择对话角色4.设置对话到关卡5.通关条件简介 严格来说,剧情编辑不在关卡编辑器界面中完成,只不过它仍然属于关卡编辑的范畴。 在我们的设想中…

鸿蒙:页面动画-属性动画、显示动画

1.属性动画是通过设置组件的animation属性来给组件添加动画&#xff0c;当组件的width、height、backgroundColor、scale等属性变更时可以实现过渡渐变效果。 2.显示动画是通过全局animateTo函数来修改组件的属性&#xff0c;实现属性变化时的渐变过渡效果。 核心属性

【你也能从零基础学会网站开发】关系型数据库中的表(Table)设计结构以及核心组成部分

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 关系型数据库中…

【Git 学习笔记】Ch1.1 Git 简介 + Ch1.2 Git 对象

还是绪个言吧 今天整理 GitHub 仓库&#xff0c;无意间翻到了几年前自学 Git 的笔记。要论知识的稳定性&#xff0c;Git 应该能挤进前三——只要仓库还在&#xff0c;理论上当时的所有开发细节都可以追溯出来。正好过段时间会用到 Git&#xff0c;现在整理出来就当温故知新了。…

DiffBIR: Towards Blind Image Restoration with Generative Diffusion Prior

深圳先进研究院&上海ai lab&港中文https://github.com/XPixelGroup/DiffBIRhttps://arxiv.org/pdf/2308.15070 问题引入 使用一个统一的框架来处理image restoration任务&#xff0c;包含图片超分BSR&#xff0c;图片去噪BID和人脸restoration BFR&#xff0c;分为两…

【从零开始学架构 架构基础】五 架构设计的复杂度来源:低成本、安全、规模

架构设计的复杂度来源其实就是架构设计要解决的问题&#xff0c;主要有如下几个&#xff1a;高性能、高可用、可扩展、低成本、安全、规模。复杂度的关键&#xff0c;就是新旧技术之间不是完全的替代关系&#xff0c;有交叉&#xff0c;有各自的特点&#xff0c;所以才需要具体…

微信AI机器人智能助手:利用大模型定制训练知识库

随着人工智能技术的迅速发展&#xff0c;AI已经渗透到了我们生活得方方面面。AI文本撰写、AI绘画、AI生成视频、AI换脸等各类应用层出不穷。作为领先的创新人工智能和元宇宙厂商&#xff0c;道可云凭借自身在人工智能、元宇宙、虚拟数字人等领域的技术积累&#xff0c;将AI技术…

Android SurfaceFlinger ——获取显示屏信息(十八)

经过前面文章对开机启动动画的流程梳理,引出了实际上在开机启动动画中,并没有Activity,而是通过 OpenGL es 进行渲染,最后通过某种方式,把数据交给 Android 渲染系统。 让我们回忆一下开机动画前期准备的相关步骤,大致分为如下几个: 1)getInternalDisplayToken:获取显…

在C++中何时应该使用异常处理

在C中&#xff0c;异常处理是一种用于处理运行时错误的技术&#xff0c;它允许程序在发生错误时优雅地恢复或终止&#xff0c;而不是突然崩溃或产生不可预测的行为。以下是几种情况下应该使用异常处理的场景&#xff1a; 错误恢复&#xff1a;当程序遇到可以从中恢复的错误时&…