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

【openGauss︱PostgreSQL】openGauss或PostgreSQL查表、索引、序列、权限、函数

【openGauss︱PostgreSQL】openGauss或PostgreSQL查表、索引、序列、权限、函数

  • 一、openGauss查表
  • 二、openGauss查索引
  • 三、openGauss查序列
  • 四、openGauss查权限
  • 五、openGauss或PostgreSQL查函数
  • 六、PostgreSQL查表
  • 七、PostgreSQL查索引
  • 八、PostgreSQL查序列
  • 九、PostgreSQL查权限


一、openGauss查表

/* openGauss查表 */
select (casewhen substr(version(), 0, 1) = '('then substring(substr(version(), 2, length(version())) from '^[^ ]+')else substring(version() from '^[^ ]+')end)::text as database_type,ic.table_schema::text as schema,o.owner::text,ic.table_name::text,tab_com.description::text as table_comment,ic.ordinal_position::text as column_num,ic.column_name::text,(casewhen ic.data_type = 'bigint'then 'INT8'when ic.data_type = 'integer'then 'INT4'when ic.data_type = 'smallint'then 'INT2'when ic.data_type in ('nvarchar2') AND ic.character_maximum_length IS NOT NULLthen upper(ic.data_type) || '(' || ic.character_maximum_length || ')'when ic.data_type in ('nvarchar2') AND ic.character_maximum_length IS NULLthen 'NVARCHAR2'when ic.data_type in ('character varying')then 'VARCHAR(' || ic.character_maximum_length || ')'when ic.data_type in ('character')then 'CHAR(' || ic.character_maximum_length || ')'when ic.data_type = 'timestamp without time zone'then 'TIMESTAMP(' || ic.datetime_precision || ')'when ic.data_type = 'time without time zone'then 'TIME(' || ic.datetime_precision || ')'when ic.data_type = 'numeric' and ic.numeric_precision is not null and ic.numeric_scale is not nullthen 'NUMERIC(' || ic.numeric_precision || ',' || ic.numeric_scale || ')'when ic.data_type = 'numeric' and ic.numeric_precision is null and ic.numeric_scale is nullthen 'NUMERIC'when ic.data_type = 'text'then 'TEXT'when ic.data_type = 'date'then 'DATE'else upper(ic.data_type)end)::text as data_type,col_com.description::text as column_comment,(CASEwhen (POSITION(lower('::regclass') IN lower(ic.column_default)) > 0)then REPLACE(ic.column_default, '::regclass', '')when (POSITION(lower('::integer') IN lower(ic.column_default)) > 0)then REPLACE(REPLACE(ic.column_default, '::integer', ''), '''', '')else ic.column_defaultend)::text as column_default,ic.is_nullable::text,(casewhen pc.conname is null then null::textelse 'Y'end)::text as pkeyfrom pg_class c-- join db_objects o join adm_objects o on o.object_id = c.oid and o.object_type like '%table%'and c.relkind in ('r','p')-- and c.relname ~ '[0-9]'join pg_namespace non c.relnamespace = n.oidjoin information_schema.columns icon ic.table_name = c.relnameand n.nspname = ic.table_schemaleft join pg_description tab_comon tab_com.objoid = c.oidand tab_com.objsubid = 0left join pg_description col_comon col_com.objoid = c.oidand col_com.objsubid = ic.ordinal_positionleft join (SELECT conname, conrelid , unnest(conkey) as column_numFROM pg_constraintwhere contype = 'p') as pcon pc.conrelid = c.oidand pc.column_num = ic.ordinal_positionwhere 1=1order by ic.table_schema, ic.table_name, ic.ordinal_position
;

二、openGauss查索引

/* openGauss查索引 */
with t as (select (case when t1.indexdef ~ '^.* WHERE .*$'then REGEXP_REPLACE(t1.indexdef, '^.*\((.*)\).* WHERE .*$', '\1')else REGEXP_REPLACE(t1.indexdef, '^.*\((.*)\).*$', '\1')end)::varchar as index_columns,t1.* from (select 'gs_et_sit'::varchar as source,o.owner::varchar,ist.table_schema::varchar as schemaname,c.relname::varchar as tablename,c1.relname::varchar as indexname,(case i.indisuniquewhen 't' then 'Y'when 'f' then 'N'end)::varchar as index_is_unique,(case i.indisprimarywhen 't' then 'Y'when 'f' then 'N'end)::varchar as index_is_primary,(pg_get_indexdef(i.indexrelid))::varchar as indexdef_old,(case when pg_get_indexdef(i.indexrelid) ~ '^.*WHERE.*$'then replace(replace(replace(REGEXP_REPLACE(pg_get_indexdef(i.indexrelid),'^.*WHERE \((.*)\).*.*$', '\1'),'::text', ''),'(', ''),')', '')else NULLend)::varchar as where_condition,(casewhen i.indisprimary = 't'then 'ALTER TABLE ' || c.relname || ' ADD CONSTRAINT ' || c1.relname || ' PRIMARY KEY (' || (case when pg_get_indexdef(i.indexrelid) ~ '^.*\((.*)\).*\((.*)\).*$'then REGEXP_REPLACE(pg_get_indexdef(i.indexrelid), '^.*\((.*)\).*\((.*)\).*$', '\1')else REGEXP_REPLACE(pg_get_indexdef(i.indexrelid), '^.*\((.*)\).*$', '\1')end) || ');' else replace(replace(replace(replace(replace(replace(pg_get_indexdef(i.indexrelid),' USING btree', ''),' TABLESPACE pg_default', ''),'::text', ''),' WITH (storage_type=USTORE)', ''),'WITH (storage_type=ustore)', ''),' USING ubtree', '')||';'end)::varchar as indexdef           from pg_index i,pg_class c1,pg_class c,information_schema.tables ist,db_objects o,pg_namespace nwhere i.indexrelid = c1.oidand i.indrelid = c.oidand c.relnamespace = n.oidand c.relname = ist.table_nameand n.nspname = ist.table_schemaand o.object_id = c.oidand ist.table_schema not in ('pg_catalog','db4ai')and ist.table_schema not like '%\_test%'and o.owner not in ('rdsAdmin','hisAdmin')and o.owner not like '%test%'and c.relname !~* '^pg\_toast\_.*$') t1)
select t.source,t.owner,t.schemaname as schema,t.tablename,t.indexname,t.indexdef,t.index_is_primary,t.index_is_unique,t.index_columns,t.where_conditionfrom torder by t.schemaname, t.tablename, t.indexname
;

三、openGauss查序列

/* openGauss查序列 */
with c as (
select r.rolname::varchar as owner,n.nspname::varchar as schema,c.relname::varchar as sequence_namefrom pg_class c, pg_roles r, pg_namespace nwhere c.relowner = r.oidand c.relnamespace = n.oidand c.relkind = 'S')
,s as (
select sequence_owner::varchar as owner,sequence_name::varchar,min_value::varchar,max_value::varchar,increment_by::varchar,cache_size::varchar,cycle_flag::varchar,last_number::varcharfrom db_sequences
)
select c.owner::varchar,c.schema::varchar,c.sequence_name::varchar,s.min_value::varchar,s.max_value::varchar,s.increment_by::varchar,s.cache_size::varchar,s.cycle_flag::varchar,s.last_number::varcharfrom Cinner join s on c.owner = s.owner and c.sequence_name = s.sequence_nameorder by schema, sequence_name;

四、openGauss查权限

/* openGauss查权限 */
WITH pg_rel_privs AS(SELECT xx.schemaname,xx.owner,xx.relname,xx.relkind,xx.relacls[1] AS grantee,xx.relacls[2] AS privilege,xx.relacls[3] AS grantorFROM (SELECT (SELECT n.nspnameFROM pg_namespace nWHERE n.oid = tt.relnamespace) AS schemaname,o.owner,tt.relname,tt.relkind,regexp_split_to_array(unnest(tt.relacl)::character varying::text, '=|/'::text) AS relaclsFROM pg_class ttLEFT JOIN db_objects oON tt.oid = o.object_idWHERE tt.relacl IS NOT NULL) xx)
SELECT t.schemaname::varchar as schema,t.owner::varchar,t.relname::varchar as object_name,(CASEWHEN t.relkind = 'r' ::char THEN 'table' ::textWHEN t.relkind = 'S' ::char THEN 'sequence' ::textWHEN t.relkind = 'v' ::char THEN 'view' ::textWHEN t.relkind = 'p' ::char THEN 'patition table' ::textELSE t.relkind ::textEND)::varchar AS type,t.grantor::varchar,t.grantee::varchar,(TRIM(CASE WHEN instr(t.privilege, 'a') > 0 THEN 'insert,' END || CASE WHEN instr(t.privilege, 'r') > 0 THEN 'select,' END || CASE WHEN instr(t.privilege, 'w') > 0 THEN 'update,' END || CASE WHEN instr(t.privilege, 'd') > 0 THEN 'delete,' END || CASE WHEN instr(t.privilege, 'D') > 0 THEN 'truncate,' END || CASE WHEN instr(t.privilege, 'U') > 0 THEN 'usage,' END,','))::varchar AS privilegeFROM pg_rel_privs tWHERE t.grantor != 'rdsAdmin'AND t.grantee != t.grantororder by schema,object_name,type,grantor,grantee,privilege;

五、openGauss或PostgreSQL查函数

/* openGauss或PostgreSQL查函数 */
select (CASE schemawhen 'tzq' then 'f_g_tzq'else schemaEND)::varchar as schema,(CASE ownerwhen 'tzq' then 'f_g_tzq'else ownerEND)::varchar as owner,pro_name,pro_arg,pro_arg_type,pro_ret_type,pro_content  from (
select * from (select pn.nspname::varchar AS schema,r.rolname::varchar as owner,pc.proname::varchar as pro_name,pc.proargnames::varchar as pro_arg,(SELECT array(SELECT format_type(val, NULL)FROM unnest(proargtypes) as val))::varchar as pro_arg_type,format_type(pc.prorettype, NULL)::varchar as pro_ret_type,REGEXP_REPLACE(pg_get_functiondef(pc."oid")::text, '^\(4,"(.*)"\)$', '\1')::textas pro_contentfrom pg_proc pcinner join pg_roles ron pc.proowner = r.oidinner join pg_namespace pnon pc.pronamespace = pn.oidwhere 1=1and pn.nspname not in ('pg_catalog','dbe_pldebugger')and r.rolname not in ('rdsAdmin') and pc.proargnames is not nullorder by r.rolname asc
) aa
union all select pn.nspname::varchar AS schema,r.rolname::varchar as owner,pc.proname::varchar as pro_name,pc.proargnames::varchar as pro_arg,proargtypes::varchar AS pro_arg_type,format_type(pc.prorettype, NULL)::varchar as pro_ret_type-- ,pc.oid,REGEXP_REPLACE(pg_get_functiondef(pc.oid)::text, '^\(4,"(.*)"\)$', '\1')::text as pro_contentfrom pg_proc pcinner join pg_roles ron pc.proowner = r.oidinner join pg_namespace pnon pc.pronamespace = pn.oidwhere 1=1and pn.nspname not in ('pg_catalog','dbe_pldebugger')and r.rolname not in ('rdsAdmin') and pc.proargnames is null
) bb
order by schema, pro_name;

六、PostgreSQL查表

/* PostgreSQL查表 */
/* 更新日志:由于 information_schema.columns 有权限控制,不是该用户能查的权限就查不到,故下掉。采用 pg_attrdef 来获取列的默认值
*/
with tab_info_v as (SELECT substring(version() FROM '(\S+)') as database_type,n.nspname AS schema,r.rolname as owner,c.relname AS table_name,(col_description(c.oid, 0))::character varying AS table_comment,a.attnum,a.attname AS column_name,concat_ws('', t.typname) AS data_type,(CASEWHEN a.attlen > 0 THEN a.attlenWHEN t.typname = 'bit' THEN a.atttypmodELSE a.atttypmod - 4END) AS data_length,CASE-- 为了和 高斯比对WHEN (((format_type(a.atttypid, a.atttypmod))::character varying)::text = 'date'::text) THEN 'TIMESTAMP(0)'::character varyingWHEN (((format_type(a.atttypid, a.atttypmod))::character varying)::text = 'bigint'::text) THEN 'INT8'::character varyingWHEN (((format_type(a.atttypid, a.atttypmod))::character varying)::text = 'smallint'::text) THEN 'INT2'::character varyingWHEN (((format_type(a.atttypid, a.atttypmod))::character varying)::text = 'integer'::text) THEN 'INT4'::character varyingWHEN (left(((format_type(a.atttypid, a.atttypmod))::character varying)::text, 17) = 'character varying'::text) THEN (replace(((format_type(a.atttypid, a.atttypmod))::character varying)::text, 'character varying'::text, 'VARCHAR'::text))::character varyingWHEN (left(((format_type(a.atttypid, a.atttypmod))::character varying)::text, 9) = 'character'::text) THEN (replace(((format_type(a.atttypid, a.atttypmod))::character varying)::text, 'character'::text, 'char'::text))::character varyingWHEN (((format_type(a.atttypid, a.atttypmod))::text)::text = 'timestamp without time zone'::text) THEN 'TIMESTAMP'::character varyingWHEN (((format_type(a.atttypid, a.atttypmod))::text)::text = 'timestamp(0) without time zone'::text) THEN 'TIMESTAMP(0)'::character varyingWHEN (((format_type(a.atttypid, a.atttypmod))::text)::text = 'timestamp(6) without time zone'::text) THEN 'TIMESTAMP(6)'::character varyingELSE (format_type(a.atttypid, a.atttypmod))::character varyingEND AS typelen,(CASEWHEN a.attnotnull = TRUE THEN 'NO'ELSE 'YES'END) AS is_nullable  --  可为空,(CASEWHEN (SELECT COUNT(pg_constraint.*)FROM pg_constraintINNER JOIN pg_classON pg_constraint.conrelid = pg_class.oidINNER JOIN pg_attributeON pg_attribute.attrelid = pg_class.oidAND pg_attribute.attnum = ANY(pg_constraint.conkey)INNER JOIN pg_typeON pg_type.oid = pg_attribute.atttypidWHERE pg_class.relname = c.relnameAND pg_constraint.contype = 'p'AND pg_attribute.attname = a.attnameand pg_class.relowner = c.relowner) > 0 THEN 'Y'ELSE NULLEND) AS pkey,pg_get_expr(ad.adbin, ad.adrelid) as data_default,(SELECT descriptionFROM pg_descriptionWHERE objoid = a.attrelidAND objsubid = a.attnum) AS column_commentFROM pg_class cinner join pg_roles ron c.relowner = r.oidand c.relkind in ('r','p')and c.relpartbound is null-- and ((relkind = 'p') or (relkind = 'r' and relpartbound is null))inner join pg_attribute aon a.attnum > 0AND a.attrelid = c.oidinner join pg_namespace non n.oid = c.relnamespaceinner join pg_type ton a.atttypid = t.oidleft join pg_attrdef ad  --  列的默认值on ad.adrelid = c.oidand ad.adnum = a.attnumWHERE 1 = 1and n.nspname not in ('information_schema')ORDER BY c.relname ASC,a.attnum ASC,a.attname ASC
)
select database_type-- ,schema,CASE schemawhen 'tzq' then 'f_g_tzq'else schemaEND as schema,CASE ownerwhen 'tzq' then 'f_g_tzq'else schemaEND as owner,table_name, table_comment,attnum,column_name,replace(upper(typelen),'VARCHAR','NVARCHAR2') as data_type,column_comment,data_default as column_default,is_nullable,pkeyfrom tab_info_v vwhere 1=1-- and table_name = 'ets_risk_premium_check_tmp'-- and schema <> ownerand table_name not like 'adms_ogg_checkpoint%'-- and table_name !~ '[p][0-9]{2}$'-- and table_name !~ '[p][0-9]{1}$'-- and table_name ~ '[p][0-9]{1}$'
order by schema, table_name, attnum, column_name;

七、PostgreSQL查索引

/* PostgreSQL查索引 */
-- drop view if exists pg_index_info_v;
-- create view pg_index_info_v as 
with t as (
select u.usename ,c.relname as tablename,c1.relname as indexname,case i.indisuniquewhen 't' then 'Y'when 'f' then 'N'end as index_is_unique  -- 是否为唯一索引,case i.indisprimarywhen 't' then 'Y'when 'f' then 'N'end as index_is_primary  -- 是否为主键,case when pg_get_indexdef(i.indexrelid) ~ '^.* WHERE .*$'then REGEXP_REPLACE(pg_get_indexdef(i.indexrelid), '^.*\((.*)\).* WHERE .*$', '\1')else REGEXP_REPLACE(pg_get_indexdef(i.indexrelid), '^.*\((.*)\).*$', '\1')end as index_columns,replace(pg_get_indexdef(i.indexrelid), 'USING btree ', '')||';'as indexdef1,casewhen i.indisprimary = 't'then 'ALTER TABLE ' || c.relname || ' ADD CONSTRAINT ' || c1.relname || ' PRIMARY KEY (' || (case when pg_get_indexdef(i.indexrelid) ~ '^.*\((.*)\).*\((.*)\).*$'then REGEXP_REPLACE(pg_get_indexdef(i.indexrelid), '^.*\((.*)\).*\((.*)\).*$', '\1')else REGEXP_REPLACE(pg_get_indexdef(i.indexrelid), '^.*\((.*)\).*$', '\1')end) || ');' else replace(replace(replace(pg_get_indexdef(i.indexrelid),' USING btree', ''),' TABLESPACE pg_default', '') ,'::text', '') ||';'end as indexdef,case when pg_get_indexdef(i.indexrelid) ~ '^.*WHERE.*$'then replace(replace(replace(REGEXP_REPLACE(pg_get_indexdef(i.indexrelid),'^.*WHERE \((.*)\).*.*$', '\1'),'::text', ''),'(', ''),')', '')else NULLend as where_condition--,i.* from pg_index i,pg_class c1,pg_class c,pg_user uwhere i.indexrelid = c1.oidand i.indrelid = c.oidand c.relowner = u.usesysidand c.relkind in ('r','p')and c.relpartbound is null-- and u.usename = CURRENT_USERand c.relname !~* '^pg\_toast\_.*$')
select CASE t.usenamewhen 'tzq' then 'f_g_tzq'else t.usenameEND as schema,t.tablename,t.indexname,casewhen index_is_primary = 'Y'then 'ALTER TABLE ' || t.tablename || ' ADD CONSTRAINT ' || t.indexname || ' PRIMARY KEY (' || t.index_columns || ');' else t.indexdef end as indexdef,t.index_is_unique,t.index_is_primary,t.index_columns,t.where_conditionfrom twhere t.tablename not like 'adms_ogg_checkpoint%'order by t.usename, t.tablename, t.indexname;

八、PostgreSQL查序列

/* PostgreSQL查序列 */
select (CASE sequenceownerwhen 'tzq' then 'f_g_tzq'else sequenceownerEND)::varchar as owner,(CASE schemanamewhen 'tzq' then 'f_g_tzq'else schemanameEND)::varchar as schema, sequencename::varchar as sequence_name, min_value::varchar, max_value::varchar, increment_by::varchar, cache_size::varchar,(case cycle when 'f' then 'n' else 'y' end)::varchar as cycle_flag,(case when last_value is null then '1' else last_value end)::varchar as last_numberfrom pg_sequenceswhere 1=1-- and schemaname in ('tzq');order by schema,sequence_name;

九、PostgreSQL查权限

/* PostgreSQL查权限 */
WITH pg_rel_privs AS (SELECT xx.relowner,xx.schemaname,xx.relname,xx.relkind,xx.relacls[1] AS grantee,xx.relacls[2] AS privilege,xx.relacls[3] AS grantorFROM ( SELECT ( SELECT u.usenameFROM pg_user uWHERE u.usesysid = tt.relowner) AS relowner,( SELECT n.nspnameFROM pg_namespace nWHERE n.oid = tt.relnamespace) AS schemaname,tt.relname,tt.relkind,regexp_split_to_array(unnest(tt.relacl)::character varying::text, '=|/'::text) AS relaclsFROM pg_class ttWHERE tt.relacl IS NOT NULL) xx),
dba_tab_privs as (SELECT x.relowner AS owner_,x.schemaname AS schema_name,x.relname AS table_name,CASEWHEN x.relkind = 'r'::char THEN 'table'::textWHEN x.relkind = 'S'::char THEN 'sequence'::textWHEN x.relkind = 'v'::char THEN 'view'::textWHEN x.relkind = 'p'::char THEN 'patition table'::textELSE x.relkind::textEND AS type_,x.grantee,CASEWHEN x.privilege = 'r'::text THEN 'select'::textWHEN x.privilege = 'a'::text THEN 'insert'::textWHEN x.privilege = 'd'::text THEN 'delete'::textWHEN x.privilege = 'w'::text THEN 'update'::textWHEN x.privilege = 'D'::text THEN 'truncate'::textWHEN x.privilege = 'X'::text THEN 'execute'::textWHEN x.privilege = 'U'::text THEN 'usage'::textWHEN x.privilege = 'x'::text THEN 'references'::textWHEN x.privilege = 't'::text THEN 'trigger'::textELSE x.privilegeEND AS privilege,x.grantorFROM ( SELECT t.relowner,t.schemaname,t.relname,t.relkind,t.grantee,regexp_split_to_table(t.privilege, ''::text) AS privilege,t.grantorFROM pg_rel_privs tWHERE t.relowner <> t.grantee) x)
select (CASE schema_namewhen 'tzq' then 'f_g_tzq'else schema_nameEND)::varchar as schema,(CASE owner_when 'tzq' then 'f_g_tzq'else owner_END)::varchar as owner,table_name::varchar as object_name,type_::varchar as type,(CASE lower(grantor)when 'tzq' then 'f_g_tzq'else lower(grantor)END)::varchar as grantor,(CASE lower(grantee)when 'tzq' then 'f_g_tzq'else lower(grantee)END)::varchar as grantee,privilege::varcharfrom dba_tab_privs twhere owner_ not in ('rdsAdmin')and schema_name not in ('pg_catalog')and lower(grantee) not in ('appmon')-- and schema_name in ('tzq')-- and (table_name like '%\_t' OR table_name like '%\_ti' OR table_name like '%\_tmp')
-- and type_ ~* 'table'and table_name not like 'adms_ogg_checkpoint%'
order by schema_name,table_name;

相关文章:

【openGauss︱PostgreSQL】openGauss或PostgreSQL查表、索引、序列、权限、函数

【openGauss︱PostgreSQL】openGauss或PostgreSQL查表、索引、序列、权限、函数 一、openGauss查表二、openGauss查索引三、openGauss查序列四、openGauss查权限五、openGauss或PostgreSQL查函数六、PostgreSQL查表七、PostgreSQL查索引八、PostgreSQL查序列九、PostgreSQL查权…...

Dataset用load_dataset读图片和对应的caption的一个坑

代码&#xff1a; data_files {} if args.train_data_dir is not None:data_files["train"] os.path.join(args.train_data_dir, "**")dataset load_dataset("imagefolder",data_filesdata_files,cache_dirargs.cache_dir,) 数据&#xff1…...

【信息系统项目管理师】第7章:项目立项管理 考点梳理

文章目录 7.1 项目建议与立项申请7.2 项目可行性研究7.2.1 可行性研究的内容7.2.2 初步可行性研究7.2.3 详细可行性研究&#xff08;重点&#xff09; 7.3 项目评估与决策 【学习建议】本章大概考选择题2分左右&#xff0c;有可能考案例题。论文早年考过。本章知识点比较集中&a…...

知识库、提示词对大语言模型的影响测试

简介 通过对比有无知识库&#xff0c;测试大语言模型的回答 有无提示词对比测试 前提 大语言模型&#xff1a;Qwen1.5-1.8B-Chat-GPTQ-Int4 GPU&#xff1a;1650super&#xff0c;显存4G 提问&#xff1a;华为mate70 没有提示词 回答的内容如下 “华为mate70pro和mate40p…...

vistat-监控和分析网络状态

vistat 是一个用于监控和分析网络状态的工具&#xff0c;通常用于查看网络接口、流量、连接等实时数据。 原理&#xff1a;用户态调用系统接口获取内核中的网络统计信息。 核心功能&#xff1a;网络接口流量监控、查看连接状态、带宽使用分析。 使用方法&#xff1a; 查看接…...

EasyAnimateV5 视频生成大模型原理详解与模型使用

在数字内容创作中&#xff0c;视频扮演的角色日益重要。然而&#xff0c;创作高质量视频通常耗时且昂贵。EasyAnimate 系列旨在利用人工智能技术简化这一过程。EasyAnimateV5 建立在其前代版本的基础之上&#xff0c;不仅在质量上有所提升&#xff0c;还在多模态数据处理和跨语…...

水稻和拟南芥生命周期中单碱基分辨率的m6A定量分析-文献精读88

Quantitative profiling of m6A at single base resolution across the life cycle of rice and Arabidopsis 水稻和拟南芥生命周期中单碱基分辨率的m6A定量分析 水稻参考基因组&#xff08;日本晴品种&#xff09;-CSDN博客 “Xian”&#xff08;籼&#xff09;和“Geng”&…...

学习threejs,使用canvas更新纹理

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Texture 贴图 二、&#x1…...

【笔记2-3】ESP32 bug:PSRAM chip not found or not supported 没有外部PSRAM问题解决

主要参考b站宸芯IOT老师的视频&#xff0c;记录自己的笔记&#xff0c;老师讲的主要是linux环境&#xff0c;但配置过程实在太多问题&#xff0c;就直接用windows环境了&#xff0c;老师也有讲一些windows的操作&#xff0c;只要代码会写&#xff0c;操作都还好&#xff0c;开发…...

大数据hadoop、spark、flink、kafka发展的过程

将sql 代发翻译成java 程序 将python 程序通过pyspark框架翻译成java 程序&#xff0c;然后运行在spark计算框架上...

设计模式-理论基础

理论基础 一、代码质量指标1.可维护性&#xff08;maintainability&#xff09;2.可读性&#xff08;readability&#xff09;3.可扩展性&#xff08;extensibility&#xff09;4.灵活性&#xff08;flexibility&#xff09;5.简洁性&#xff08;simplicity&#xff09;6.可复用…...

猎板 PCB特殊工艺:铸就电子行业核心竞争力新高度

在当今竞争激烈且技术驱动的电子制造领域&#xff0c;印制电路板&#xff08;PCB&#xff09;作为电子产品的关键基石&#xff0c;其特殊工艺的发展水平直接影响着整个行业的创新步伐与产品品质。猎板 PCB 凭借在厚铜板、孔口铺铜、HDI 板、大尺寸板以及高频高速板等特殊工艺方…...

用于目标检测的集中式特征金字塔

摘要 https://arxiv.org/pdf/2210.02093 视觉特征金字塔在多种应用中已展现出其在有效性和效率方面的优越性。然而,现有方法过度关注层间特征交互,却忽略了经验证明有益的层内特征调节。尽管一些方法试图借助注意力机制或视觉变换器来学习紧凑的层内特征表示,但它们忽略了…...

大舍传媒-关于海外媒体宣发的探讨

关于海外媒体宣发的探讨 一、海外媒体宣发的重要性 在当今全球化的时代&#xff0c;海外媒体宣发对于企业、组织和个人来说具有至关重要的意义。通过有效的海外媒体宣发&#xff0c;可以提升品牌知名度&#xff0c;拓展国际市场&#xff0c;增强影响力&#xff0c;吸引更多的潜…...

Python从入门到入狱

Python是从入门到入狱&#xff1f;这个充满调侃意味的说法在程序员圈子里流传甚广。表面看&#xff0c;它似乎是在嘲笑这门语言从简单易学到深陷麻烦的巨大反差&#xff0c;实际上却隐藏着很多值得深思的问题。要解读这个话题&#xff0c;得从Python的特点、使用场景以及潜在风…...

AMEYA360 | 杭晶电子:晶振在AR/VR中的应用

晶振在AR/VR设备中扮演重要角色&#xff0c;为其核心电子系统提供稳定的时钟信号&#xff0c;确保设备的高性能运行。 以下是晶振在AR/VR应用中的具体作用&#xff1a; 01、图像处理与同步 1、晶振为图形处理单元(GPU)和显示芯片提供精准的时钟信号&#xff0c;支持高速图像渲染…...

RAG评估指南:从检索到生成,全面解析LLM性能评估方法

前言 这一节我们将从时间线出发对RAG的评估方式进行对比&#xff0c;这些评估方式不仅限于RAG流程之中&#xff0c;其中基于LLM的评估方式更加适用于各行各业。 RAG常用评估方式 上一节我们讲了如何用ROUGE 这个方法评估摘要的相似度&#xff0c;由于篇幅限制&#xff0c;没…...

贪心算法实例-问题分析(C++)

贪心算法实例-问题分析 饼干分配问题 有一群孩子和一堆饼干&#xff0c;每个小孩都有一个饥饿度&#xff0c;每个饼干都有一个能量值&#xff0c;当饼干的能量值大于等于小孩的饥饿度时&#xff0c;小孩可以吃饱&#xff0c;求解最多有多少个孩子可以吃饱?(注:每个小孩只能吃…...

Ubuntu20.04 配置虚拟显示器和切回物理显示器

1、安装软件&#xff0c;用中软安装虚拟显示器软件 sudo apt-get install xserver-xorg-core-hwe-18.04 sudo apt-get install xserver-xorg-video-dummy2、添加配置文件 进入 /usr/share/X11/xorg.conf.d/ 文件夹下创建xorg.conf文件 # 创建xorg.conf文件 touch xorg.conf …...

HTML 常用标签属性汇总一〈body〉标签

背景属性:包括:bgcolor,background <body background—color:black〉 背景颜色 <body background—image : url(image/bg.gif)〉 背景图片 <body background—attachment : fixed〉 固定背景 〈body background—repeat : repeat〉 重复排列—网页预设 〈b…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...