最新要闻
- 环球快播:吃避孕药副作用有哪些_吃避孕药的副作用有什么
- 闹大!近10万人联合抵制 网飞黑人《埃及艳后》摊上事:歧视非裔 篡改历史
- 【世界热闻】Mate60或将首发 华为鸿蒙4.0秋季发布:AI会是亮点
- 曝芒果TV涉嫌恶意扣费 页面无取消续费选项 你中招没
- 要闻:2199元 小米米家无线洗地机2发布:活水杀菌 180°躺平洗地
- 环球讯息:迈威生物(688062)2022年年报简析:增收不增利,存货大幅上升
- 全球热议:新车充电烧毁 特斯拉回应因电流过大:曾甩锅被国家电网硬怼
- 环球看点!潍坊风筝节现躺平版“秦始皇” 网友:这是他摔过最狠的一跤
- 大众拟2026年之前再推10款电动汽车
- 17.88万起圆你跑车梦 哪吒GT开售:双门四座零百三秒
- 环球焦点!鸿蒙5G新机来了!WIKO Hi畅享60官宣:4800万金环双摄
- 全品牌销冠!魅族20系列成3000元档周线上销量第一
- 内外双2K E6旗舰屏!vivo X Fold2配置详解:九大全球领先科技
- 环球微速讯:农业农村部:今年全国农作物种子市场总体上供大于求,合格率稳定保持在98%以上
- 世界看热讯:在史上“最热闹”的上海车展 特斯拉竟然缺席了 维权有阴影?
- 漫威面临征服者康难题
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球报道:Grafana监控OracleDB的完整过程
(资料图片仅供参考)
Grafana监控OracleDB的完整过程
背景
两年前曾经写过一个进行Oracle 监控的简单blog但是周天晚上尝试进行处理时发现很不完整了.很多数据获取不到.晚上又熬夜了好久进行处理. 感觉还是需要总结一下,不然就忘记了
获取镜像
还是使用 docker 的方式来暴露Oracle的服务使用的镜像为:docker pull ghcr.io/iamseth/oracledb_exporter:0.4.3需要注意这个镜像比较大, 压缩完还 270MB 左右
注意事项-1
镜像内的监控事项比较少. 可能只是非常简单的. 我这边想监控的是一些性能相关的内容, 仅看一些简单内容, 感觉没有任何意义.然后继续从github上面找相关的资料: https://github.com/saitiger008/oracledb_exporter_metrics/blob/main/default-metrics.toml这个哥们自己加了一些监控事项挺好的. 我这边将他的监控与默认的default进行合并. 内容放到最下面. 然后通过-v 的方式在容器内加载默认的metrics的监控事项. 可以通过docker logs --tail=100 containername的方式进行查看具体内容.
注意事项-2
正常启用之后发现还是无法进行相关的监控信息.主要是无法获取一些系统的监控信息. 日志里面很多这样的提示信息: msg="Error scraping for" context=resource metricsDesc="unsupported value type" s msg="Error scraping for" context=sysmetric metricsDesc="unsupported value type" msg="Error scraping for" context=wait_time metricsDesc="unsupported value type" msg="Error scraping for" context=rman_info metricsDesc="unsupported value type" 提示无法获取对应的监控信息.
注意事项-2
这个地方耗时很久进行处理. 发现总是比较难易解决问题.主要问题是 只有 sys 账户会查询 select * from v$sysmetirc的视图.并且必须要sysdba的账户进行登录, 如果不是sysdba 查询此视图都是空的.所以问题的核心是用Docker的语法实现 sysdba 角色的登录. 我这边尝试 / as sysdba 发现是没有效果的.查看官方文档是发现有一个解决方法为:在 DATA_SOURCE_NAME 的和面添加 ?as=sysdba 的方式来指定角色.# 清理之前的容器docker rm -f oracledb_exporter# 创建对应的容器进行监听 docker run -d --name oracledb_exporter --restart=always --net=host \-e DATA_SOURCE_NAME="sys/MYpassword@10.110.xx.xx/gscdb?as=sysdba" \-v /oracledb/default-metrics.toml:/default-metrics.toml ghcr.io/iamseth/oracledb_exporter:0.4.3# 查看日志信息.docker logs -f oracledb_exporter
注意事项-3
使用 桥接网络 也可以 但是需要注意写法为:docker rm -f oracledb_exporter2 docker run -d --name oracledb_exporter2 --restart=always -p 9162:9161 --privileged \-e DATA_SOURCE_NAME="sys/Mypassword@10.110.136.37/ora19c?as=sysdba" \-v /oracledb/default-metrics.toml:/default-metrics.toml ghcr.io/iamseth/oracledb_exporter:0.4.3 docker logs -f oracledb_exporter2
注意事项-4
Prometheus的设置为:scrape_configs: - job_name: "116Oracle_ora19c" # job_name默认写入timeseries的labels中,可以用于查询使用 static_configs: # 静态配置 - targets: ["10.110.136.xxx:9162"]注意 需要重启Prometheus使之生效.另外 yaml 格式一定注意空格和格式.
注意事项-5
Grafana的设置注意 这次选用的是国人开发的一个配置:编号为: 17136具体地址为: https://grafana.com/grafana/dashboards/17136-oracledb-new-202210/
效果为
自己的公众号不定期更新内容
监控配置脚本
[[metric]]context = "sessions"labels = [ "status", "type" ]metricsdesc = { value= "Gauge metric with count of sessions by status and type." }request = "SELECT status, type, COUNT(*) as value FROM v$session GROUP BY status, type"[[metric]]context = "resource"labels = [ "resource_name" ]metricsdesc = { current_utilization= "Generic counter metric from v$resource_limit view in Oracle (current value).", limit_value="Generic counter metric from v$resource_limit view in Oracle (UNLIMITED: -1)." }request="SELECT resource_name,current_utilization,CASE WHEN TRIM(limit_value) LIKE "UNLIMITED" THEN "-1" ELSE TRIM(limit_value) END as limit_value FROM v$resource_limit"[[metric]]context = "asm_diskgroup"labels = [ "name" ]metricsdesc = { total = "Total size of ASM disk group.", free = "Free space available on ASM disk group." }request = "SELECT name,total_mb*1024*1024 as total,free_mb*1024*1024 as free FROM v$asm_diskgroup_stat where exists (select 1 from v$datafile where name like "+%")"ignorezeroresult = true[[metric]]context = "activity"metricsdesc = { value="Generic counter metric from v$sysstat view in Oracle." }fieldtoappend = "name"request = "SELECT name, value FROM v$sysstat WHERE name IN ("parse count (total)", "execute count", "user commits", "user rollbacks")"[[metric]]context = "process"metricsdesc = { count="Gauge metric with count of processes." }request = "SELECT COUNT(*) as count FROM v$process"[[metric]]context = "wait_time"metricsdesc = { value="Generic counter metric from v$waitclassmetric view in Oracle." }fieldtoappend= "wait_class"request = """SELECT n.wait_class as WAIT_CLASS, round(m.time_waited/m.INTSIZE_CSEC,3) as VALUEFROM v$waitclassmetric m, v$system_wait_class nWHERE m.wait_class_id=n.wait_class_id AND n.wait_class != "Idle""""[[metric]]context = "tablespace"labels = [ "tablespace", "type" ]metricsdesc = { bytes = "Generic counter metric of tablespaces bytes in Oracle.", max_bytes = "Generic counter metric of tablespaces max bytes in Oracle.", free = "Generic counter metric of tablespaces free bytes in Oracle.", used_percent = "Gauge metric showing as a percentage of how much of the tablespace has been used." }request = """SELECT dt.tablespace_name as tablespace, dt.contents as type, dt.block_size * dtum.used_space as bytes, dt.block_size * dtum.tablespace_size as max_bytes, dt.block_size * (dtum.tablespace_size - dtum.used_space) as free, dtum.used_percentFROM dba_tablespace_usage_metrics dtum, dba_tablespaces dtWHERE dtum.tablespace_name = dt.tablespace_nameORDER by tablespace"""[[metric]]context = "parameter"labels = [ "name","param" ]metricsdesc = { value ="Gauge metric with database parameter" }request = "select name,value as param,1 as value from v$parameter"[[metric]]context = "sessions"labels = [ "status", "type" ]metricsdesc = { value= "Gauge metric with count of sessions by status and type." }request = "SELECT status, type, COUNT(*) as value FROM v$session GROUP BY status, type"[[metric]]context = "parameter_sessions"metricsdesc = { value ="Gauge metric with sessions parameter" }request = "select value from v$parameter t where t.name = "sessions""[[metric]]context = "volumns"metricsdesc = { value= "database total volumes,size G" }request = "SELECT sum(bytes/1024/1024/1024) as value FROM dba_segments"[[metric]]context = "env"labels = [ "host_name" ]metricsdesc = { is_rac = "if 1 then rac." }request = """select host_name,decode((select value from v$option where parameter = "Real Application Clusters"), "TRUE",1,0) as is_racfrom v$instance"""[[metric]]context = "env"labels = [ "version" ]metricsdesc = { running_time = "get version and running_time" }request = """select version,trunc(sysdate - startup_time) as running_time from v$instance"""[[metric]]context = "env"labels = [ "platform_name","log_mode","force_logging","flashback_on","database_role","open_mode","nls_characterset" ]metricsdesc = { value = "get other env" }request = """select platform_name,log_mode,force_logging,flashback_on,database_role,open_mode,(select value from nls_database_parameters where parameter = "NLS_CHARACTERSET") as nls_characterset, 1 as value from v$database"""[[metric]]context = "env"labels = [ "name" ]metricsdesc = { redo_value = "get redo logs info" }request = """with temp as(select count(group#) as group_num,min(members) as member_num,min(bytes/1024/1024) as log_size from v$log)select "group_num" as name ,group_num as redo_value from tempunion allselect "member_num" as name ,member_num as redo_value from tempunion allselect "log_size" as name ,log_size as redo_value from temp"""[[metric]]context = "env"metricsdesc = { redo_switch_value = "Gauge metric with sum of segments data." }request = """select max(sequence#) as redo_switch_value from v$log"""[[metric]]context = "env"metricsdesc = { vols = "Gauge metric with sum of segments data." }request = """select to_char(sum(bytes)) as vols from dba_segments"""[[metric]]context = "events"labels = [ "event_name"]metricsdesc = { value = "get events from v$session_wait" }request = """select event as event_name, count(*) as value from v$session_wait where wait_time >= -1 group by event order by 2 desc"""[[metric]]context = "db_time"metricsdesc = { value="Generic counter metric from v$sys_time_model view in Oracle." }request = """select value from v$sys_time_model t where t.STAT_NAME = "DB time""""[[metric]]context = "sysmetric"metricsdesc = { value="Get sysmetrics from v$sysmetric view in Oracle." }fieldtoappend = "metric_name"request = """select replace(metric_name,"%","") as metric_name ,value from v$sysmetric where group_id = 2 and metric_name != "Average Synchronous Single-Block Read Latency""""[[metric]]context = "sysstat"metricsdesc = { value="Compute Oracle IOPS and MBPS from v$sysstat view in Oracle." }fieldtoappend = "name"request = """select name , trunc(sum(value), 2) as value from (select decode(name, "physical read total IO requests", "Oracle IOPS", "physical write total IO requests", "Oracle IOPS", "redo writes", "Oracle IOPS", "physical read total bytes", "Oracle MBPS", "physical write total bytes", "Oracle MBPS", "redo size", "Oracle MBPS") as name, decode(name, "physical read total IO requests", value, "physical write total IO requests", value, "redo writes", value, "physical read total bytes", value / 1024 / 1024, "physical write total bytes", value / 1024 / 1024, "redo size", value / 1024 / 1024) as value from v$sysstat where name in ( "physical read total bytes", "physical write total bytes", "physical read total IO requests", "physical write total IO requests", "redo writes", "redo size")) where name is not null group by nameunion allSELECT a.name, a.value FROM v$sysstat a, v$statname b where a.statistic# = b.statistic# and b.name in ( "consistent gets", "execute count", "parse count (hard)", "parse count (total)", "redo size", "redo writes", "sorts (disk)", "sorts (memory)", "sorts (rows)", "user commits", "user rollbacks", "logons cumulative", "bytes sent via SQL*Net to client", "bytes received via SQL*Net from client")"""[[metric]]context = "tablespace"labels = [ "tablespace", "type" ]metricsdesc = { bytes = "Generic counter metric of tablespaces bytes in Oracle.", max_bytes = "Generic counter metric of tablespaces max bytes in Oracle.", free = "Generic counter metric of tablespaces free bytes in Oracle." }request = """SELECT df.tablespace_name as tablespace, df.type as type, nvl(sum(df.bytes),0) as bytes, nvl(sum(df.max_bytes),0) as max_bytes, nvl(sum(f.free),0) as freeFROM ( SELECT ddf.file_id, dt.contents as type, ddf.file_name, ddf.tablespace_name, TRUNC(ddf.bytes) as bytes, TRUNC(GREATEST(ddf.bytes,ddf.maxbytes)) as max_bytes FROM dba_data_files ddf, dba_tablespaces dt WHERE ddf.tablespace_name = dt.tablespace_name ) df, ( SELECT TRUNC(SUM(bytes)) AS free, file_id FROM dba_free_space GROUP BY file_id ) fWHERE df.file_id = f.file_id (+)GROUP BY df.tablespace_name, df.typeUNION ALLSELECT Y.name as tablespace_name, Y.type as type, SUM(Y.bytes) as bytes, SUM(Y.max_bytes) as max_bytes, MAX(nvl(Y.free_bytes,0)) as freeFROM ( SELECT dtf.tablespace_name as name, dt.contents as type, dtf.status as status, dtf.bytes as bytes, ( SELECT ((f.total_blocks - s.tot_used_blocks)*vp.value) FROM (SELECT tablespace_name, sum(used_blocks) tot_used_blocks FROM gv$sort_segment WHERE tablespace_name!="DUMMY" GROUP BY tablespace_name) s, (SELECT tablespace_name, sum(blocks) total_blocks FROM dba_temp_files where tablespace_name !="DUMMY" GROUP BY tablespace_name) f, (SELECT value FROM v$parameter WHERE name = "db_block_size") vp WHERE f.tablespace_name=s.tablespace_name AND f.tablespace_name = dtf.tablespace_name ) as free_bytes, CASE WHEN dtf.maxbytes = 0 THEN dtf.bytes ELSE dtf.maxbytes END as max_bytes FROM sys.dba_temp_files dtf, sys.dba_tablespaces dt WHERE dtf.tablespace_name = dt.tablespace_name ) YGROUP BY Y.name, Y.typeORDER BY tablespace"""[[metric]]context = "db_recovery_file_dest"metricsdesc = { value="sum(PERCENT_SPACE_USED) of V$RECOVERY_AREA_USAG" }request = """select sum(t.PERCENT_SPACE_USED) as value from V$RECOVERY_AREA_USAGE t"""[[metric]]context = "db_recovery_file_dest"labels = [ "file_type"]metricsdesc = { percent_space_used = "percent_space_used of V$RECOVERY_AREA_USAGE ." }request = """select t.file_type,t.percent_space_used from V$RECOVERY_AREA_USAGE t"""[[metric]]context = "rman_status"metricsdesc = { value= "0 indicates rman error or no config rman job, 1 indicates rman is ok" }request = """select decode(max(t.COMPLETION_TIME), "", 0, case when sysdate-max(t.COMPLETION_TIME) > 1 then 0 else 1 end) as value from v$backup_piece t where t.STATUS = "A""""[[metric]]context = "rman_info"labels = [ "recid","lv_type","controlfile_included","status","device_type","start_time","completion_time","elapsed_seconds","bak_size","compressed","tag" ]metricsdesc = { value ="list rman information" }request = """select a.recid as recid, decode(b.incremental_level, "", decode(backup_type, "L", "Archivelog", "ControlFile"), 1, "Incr-1", 0, "Incr-0", b.incremental_level) as lv_type, b.controlfile_included as controlfile_included, decode(a.status, "A", "AVAILABLE", "D", "DELETED", "X", "EXPIRED", "ERROR") as status, a.device_type as device_type, a.start_time as start_time, a.completion_time as completion_time, a.elapsed_seconds as elapsed_seconds, round(a.bytes / 1024 / 1024 / 1024,3) as bak_size, a.compressed as compressed, a.tag as tag, 1 as value from v$backup_piece a, v$backup_set b where a.set_stamp = b.set_stamp and a.deleted = "NO" and a.set_count = b.set_count and a.start_time > sysdate-8 order by a.completion_time desc"""[[metric]]context = "dataguard_exist"metricsdesc = { value ="1 indicates the presence of dg, 0 indicates no dg." }request = """select decode(db_unique_name, "NONE", 0, 1) as value from v$archive_dest_status where dest_name = "LOG_ARCHIVE_DEST_2""""[[metric]]context = "dataguard_status"metricsdesc = { value ="0 indicates no dg, 1 indicates dg has errors, 1 indicates dg is ok;" }request = """select case when db_unique_name = "NONE" then 0 when status != "VALID" then 1 else decode(recovery_mode, "IDLE", 1, "MANAGED", 2, "MANAGED REAL TIME APPLY", 2, "LOGICAL REAL TIME APPLY", 2, "LOGICAL APPLY", 2, 1) end as value from v$archive_dest_status where dest_name = "LOG_ARCHIVE_DEST_2""""
关键词:
-
世界滚动:好物分享:一款可以加密云盘视频,并依然可在线播放的免费小工具——Alist 云盘视频加密助手!
在当前娱乐资源丰富的时代,人们每天都在接触各种视频资源。然而,网盘限速、版权审核、视频分级、少儿...
来源: -
全球热头条丨仅1.0MB,开源压缩软件7-Zip
首发微信公众号:SQL数据库运维原文链接:https: mp weixin qq com s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1
来源: 世界滚动:好物分享:一款可以加密云盘视频,并依然可在线播放的免费小工具——Alist 云盘视频加密助手!
环球报道:Grafana监控OracleDB的完整过程
环球简讯:Jenkins常用插件
全球热头条丨仅1.0MB,开源压缩软件7-Zip
全量通过,华为云GaussDB首批完成信通院全密态数据库评测
环球快播:吃避孕药副作用有哪些_吃避孕药的副作用有什么
闹大!近10万人联合抵制 网飞黑人《埃及艳后》摊上事:歧视非裔 篡改历史
【世界热闻】Mate60或将首发 华为鸿蒙4.0秋季发布:AI会是亮点
曝芒果TV涉嫌恶意扣费 页面无取消续费选项 你中招没
要闻:2199元 小米米家无线洗地机2发布:活水杀菌 180°躺平洗地
环球讯息:迈威生物(688062)2022年年报简析:增收不增利,存货大幅上升
了解GIS地图和可视化如何改变我们对地理信息的理解
天天热议:火山引擎DataLeap下Notebook 系列文章一:技术选型之路
全球热议:新车充电烧毁 特斯拉回应因电流过大:曾甩锅被国家电网硬怼
环球看点!潍坊风筝节现躺平版“秦始皇” 网友:这是他摔过最狠的一跤
大众拟2026年之前再推10款电动汽车
看热讯:网络编程懒人入门(十五):外行也能读懂的网络硬件设备功能原理速成
环球热议:若依前后端分离 代码生成修改(2)
【聚看点】用C#破解Chrome浏览器cookie值
【世界时快讯】3D轻量化引擎推出新技术,模型渲染更逼真!
17.88万起圆你跑车梦 哪吒GT开售:双门四座零百三秒
环球焦点!鸿蒙5G新机来了!WIKO Hi畅享60官宣:4800万金环双摄
全品牌销冠!魅族20系列成3000元档周线上销量第一
内外双2K E6旗舰屏!vivo X Fold2配置详解:九大全球领先科技
环球微速讯:农业农村部:今年全国农作物种子市场总体上供大于求,合格率稳定保持在98%以上
报道:【Git代码仓库托管】上海道宁为您提供构建、扩展和交付安全软件的完整开发人员平台
世界今日讯!windows系统git使用ssh方式和gitee/github进行同步
【天天时快讯】springboot统一响应实体封装+统一异常类管理
当前观察:Redis---哨兵服务
全球即时:python的matplotlib绘制动态图形(用animation中的FuncAnimation)
财政部:将专项债务限额及时下达各地 推动尽快形成实物工作量
世界看热讯:在史上“最热闹”的上海车展 特斯拉竟然缺席了 维权有阴影?
漫威面临征服者康难题
世界微头条丨爆款狂促!玫瑰精油洗发水47.8元买1000ml:解决软塌油头
焦点观察:王一博主演!《长空之王》领跑五一档预售票房榜
72岁王石出手创立私募基金:曾表态市场一定会惩罚暴利
方萍萍:2023年04月18日原油交易策略
秦昊结了几次婚?秦昊的老婆叫什么名字?
罗云熙真实身高体重是多少?罗云熙为什么那么瘦?
粉红法拉利是谁唱的?粉红法拉利完整版歌词
化骨绵掌是什么意思?化骨绵掌是谁的绝招?
车俊焕多大了?车俊焕个人资料介绍
【世界报资讯】Go 单表头结构体导入导出
世界看点:nginx服务在高并发场景下的优化方案及具体配置
今日观点!兔子产子问题
关注:大连积极扩大有效投资加速迈向“万亿GDP城市”
【财经分析】紧缩预期压制买需 2月超六成海外“债主”抛售美债
视讯!新华社重庆分社社长李勇:将从三方面助力重庆数字政府建设
首批扩募REITs将召开持有人大会
每日热议!生产力起飞!金山官宣WPS AI:聊天帮忙做好Word文档
环球今日报丨发布三个月跳水超1000!苹果M2版Mac mini降到3478元了
全球快资讯:上海一物流网点起火:快递员怀疑液体可燃 用打火机尝试发现真的可燃
今晚发布!小米13 Ultra配置带你提前看 就差价格了
全球快看:AI绘制90年代“复仇者联盟” 阿汤哥来演钢铁侠
世界速看:uniapp ios app离线打包
如何假装你懂Meta Segment Anything?
前沿资讯!基础电子元器件产业发展专项协调机制年度工作会议在深圳召开
【全球时快讯】游戏掉帧电脑卡顿?这锅CPU不背
四电机原地掉头 奔驰EQG概念车亮相上海车展:全新电池装车
理想汽车累计交付破32万辆 30万元以上新能源品牌销量第一
全球短讯!像人一样开 理想发布理想AD Max 3.0:连路上的狗都能识别
世界新资讯:iPhone 15 Pro新变化:用音量键组合关机重启成过去式
福建省厦门市发布雷雨大风黄色预警
【全球聚看点】如何在 Linux 上录制你的终端操作
dbatools demo
当前速递!一段话理解正向代理和反向代理的区别
热头条丨大数据开发相关技术汇总
环球热消息:6月6日全平台发售!《暗黑破坏神4》已完成开发:送厂压盘
蒙古国发布强沙尘暴预警:今日起席卷全境 影响我国部分地区
天天观热点:抢先看!迪士尼送真人版《小美人鱼》新预告:黑小美人鱼水中甩发画面动情
环球微资讯!蒙古国发布强沙尘暴预警 18日起将席卷全境
债务违约担忧加剧 美国3个月期国库券中标收益率超5%
天天热点!探营2023上海车展:一场新能源和智能化技术的盛宴
【环球报资讯】293份一季报预告逾七成预喜 机械设备等赛道业绩亮眼
【天天聚看点】坐地铁被收15元“超时费”?网友吵翻
环球聚焦:长荣航空两飞机发生碰撞:空客A321把波音777“割喉”了
女子骑摩托车遇沉降路段摔倒遭碾压身亡 竟担主责引争议:网友吵翻
比亚迪汽车APP升级7.0版本:界面全新改版 美观太多了
焦点热议:饲养员用竹竿打大熊猫“暖暖” 园方回应:永不允许此人养熊猫
当前快看:【长测】小米蒸烤箱维修记录:不到一年半就坏了
【天天聚看点】大批“学生特种兵”留宿淄博海底捞:出示车票即可
2023年农牧行业6大CRM系统、5大场景盘点
React 组件进入和退出动画实现
又一家果链代工巨头被苹果拖累 歌尔业绩暴雷:利润暴跌近90%
焦点热议:华为首发L2.9999 新势力们开始卷技术了?
【全球速看料】提前泄密上海车展:没想到 全是黑幕!
世界微动态丨SNK正版授权!腾讯《合金弹头:觉醒》今日上线:iPhone 5S也能玩
歼20看个爽!《长空之王》4月28日上映:影片时长128分钟
环球快资讯丨意外的幸运签资源 意外的幸运签百度云
每日热议!【商会】秘书长陈晓虹走访优秀在粤浙商企业东阳光集团——科技兴企 创新发展
【世界聚看点】面试题百日百刷-kafka篇(四)
天天速看:docker部署gitlab CI/CD (一)第一篇:部署gitlab及汉化
【世界独家】SpaceX星舰发射计划推迟:马斯克公布原因!下次时间待定
马斯克回应SpaceX星舰发射计划推迟:今天学到了很多
今日热议:欧体化度寺碑(关于欧体化度寺碑介绍)
当前热议!《复仇者联盟:无限战争》剪掉45分钟灭霸剧情 团灭山达尔星
全球热消息:网剧《长月烬明》豆瓣开分6.2分 官方曾辟谣抄袭《仙剑三》
气温大跳水!新一股强冷空气将带来俯冲式降温:局地累计降温超25度
超越土星5号登月火箭 人类最强火箭星舰又跳票了:最后40秒多取消
ChatGPT如何助力IT从业者?如何让ChatGPT帮助我们变现赚钱?