首页 文章 精选 留言 我的

精选列表

搜索[检测工具],共869篇文章
优秀的个人博客,低调大师

Android内存检测工具

无论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方。 Androidtools中的DDMS就带有一个很不错的内存监测工具Heap(这里我使用eclipse的ADT插件,并以真机为例,在模拟器中的情况类似)。用 Heap监测应用进程使用内存情况的步骤如下: 1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap视图都是打开的; 2. 将 手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式,而不是作为“Mass Storage”; 3. 链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在运行的部分进程信息; 4. 点击选中想要监测的进程,比如system_process进程; 5. 点击选中Devices视图界面中最上方一排图标中的“Update Heap”图标; 6. 点击Heap视图中的“Cause GC”按钮; 7. 此时在Heap视图中就会看到当前选中的进程的内存使用量的详细情况。 说明: a) 点击“Cause GC”按钮相当于向虚拟机请求了一次gc操作; b) 当内存使用信息第一次显示以后,无须再不断的点击“Cause GC”,Heap视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化; c) 内存使用信息的各项参数根据名称即可知道其意思,在此不再赘述。 如何才能知道我们的程序是否有内存泄漏的可能性呢。这里需要注意一个值:Heap视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象。在data object一行中有一列是“Total Size”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。可以这样判断: a) 不断的操作当前应用,同时注意观察data object的Total Size值; b) 正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对 象,而在虚拟机不断的进行GC的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平; c) 反之如果代码中存在没有释放对象引用的情况,则data object的Total Size值在每次GC后不会有明显的回落,随着操作次数的增多Total Size的值会越来越大, 直到到达一个上限后导致进程被kill掉。 d) 此处已system_process进程为例,在我的 测试环境中system_process进程所占用的内存的data object的Total Size正常情况下会稳定在2.2~2.8之间,而当其值超过3.55后进程就会被kill。 总之,使用DDMS的Heap视图工具可以很方便的确认我们的程序是否存在内存泄漏的可能性。 版权声明:本文出自 smalllin 的51Testing软件测试博客:http://www.51testing.com/?344504 原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。 最新内容请见作者的GitHub页:http://qaseven.github.io/

优秀的个人博客,低调大师

MemLab —— JavaScript 内存泄漏检测工具

Memlab 是一个 E2E 测试和分析框架,用于发现 JavaScript 内存泄漏和优化机会。 npm install -g memlab 它支持定义一个测试场景(使​​用Puppeteer API),教 Memlab 如何与你的单页应用程序(SPA)交互,Memlab 可以自动处理其余的内存泄漏检查: 与浏览器交互并获取 JavaScript 堆快照 分析堆快照并过滤掉内存泄漏 聚合和分组类似的内存泄漏 为内存调试生成保持器跟踪 Memlab 提供的其他功能: 面向对象的堆遍历 API- 支持自定义内存泄漏检测器并以编程方式分析从基于 Chromium 的浏览器、Node.js、Electron.js 和 Hermes 获取的 JS 堆快照。 Memory CLI toolbox- 内置CLI 工具箱和API,用于寻找内存优化机会(不一定是内存泄漏) Node.js 中的内存断言- 使单元测试或运行 node.js 程序能够获取其自身状态的堆快照,进行自内存检查,并编写内存断言 (doc)

优秀的个人博客,低调大师

ThreatMapper —— 基于 Go 的漏洞检测工具

Deepfence ThreatMapper 是一个帮助用户监控和保护在云、Kubernetes、Docker 和 Fargate Serverless 中运行的应用程序的工具。 Deepfence ThreatMapper 由两个组件组成 —— Deepfence 管理控制台和一系列 Deepfence 传感器。传感器应部署在你的生产平台内,它们将清单和遥测数据安全地转发给专用控制台。控制台计算应用程序的拓扑结构,询问清单以查找漏洞,并显示应用程序的 "威胁图"。 特性: 发现运行中的工作负载:ThreatMapper 扫描你的平台,识别 pods、容器、应用程序和基础设施。使用 ThreatMapper 发现你的应用程序和攻击面的拓扑结构 发现漏洞:ThreatMapper 从运行的 pod 和容器、Serverless 应用、应用程序和操作系统获得依赖性清单。ThreatMapper 将这些与漏洞反馈相匹配,以确定脆弱组件。 按暴露风险对漏洞进行排名:ThreatMapper 根据 CVSS 和其他严重性评分、利用方法和对攻击面的接近程度对发现的漏洞进行排名,以确定哪些问题构成最大的利用风险。 ThreatMapper 发现、注释并显示应用程序在多个云环境中的拓扑结构。

优秀的个人博客,低调大师

Android内存泄漏检测工具:LeakCanary

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/79582082 一、简介 LeakCanary是一个Square开源的内存泄漏分析工具,如果检测到某个activity有内存泄漏,LeakCanary就会自动显示一个通知。 二、如何使用 2.1)在app下的build.gradle中加入以下依赖 dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4' } 2.2)在Application类中进行初始化,可以直接检测Activity的内存泄露情况 public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); LeakCanary.install(this); } } 2.3)需要检测更多object时,可以通过RefWatcher public class ExApplication extends Application { private RefWatcher mRefWatcher; @Override public void onCreate() { super.onCreate(); mRefWatcher = setupLeakCanary(); } private RefWatcher setupLeakCanary() { if (LeakCanary.isInAnalyzerProcess(this)) { return RefWatcher.DISABLED; } return LeakCanary.install(this); } public static RefWatcher getRefWatcher(Context context) { ExApplication leakApplication = (ExApplication) context.getApplicationContext(); return leakApplication.mRefWatcher; } } ExApplication.getRefWatcher(this).watch(obj); // RefWatcher是线程安全的,可以从任何线程调用,但obj不能为null。 三、如何实现 3.1)在2.2中 直接install后即可检测Activity的原因 public static RefWatcher install(Application application) { return refWatcher(application).listenerServiceClass(DisplayLeakService.class) .excludedRefs(AndroidExcludedRefs.createAppDefaults().build()) .buildAndInstall(); } 在install的 buildAndInstall 方法中会根据application来创建ActivityRefWatch,以检测Activity的生命周期,在onActivityDestroyed时,依然是使用refWatcher.wath(activity),所以其实是一样的。 3.2)KeyedWeakReference 继承自 WeakReference,同时还会针对每个引用记录唯一的key。 3.3)DISABLED的定义: public static final RefWatcher DISABLED = new RefWatcherBuilder<>().build(); debug中使用的源码在 leakcanary-android,release中使用的源码在 leakcanary-android-no-op. DISABLED中返回的方法 3.4)LeakCanary实际上就是在本机自动做Heap dump,然后对生成的hprof文件进行分析,进行结果展示,和手工分析MAT步骤基本一致。 RefWatcher.watch() 方法中根据要监控的对象创建一个KeyedWeakReference 2.在后台线程中检查引用是否被清除,如果没有,则调用GC 如果引用仍未被清除,说明内存泄露了,则导出.hprof文件到app的文件系统目录下 HeapAnalyzerService启动单独的进程,HeapAnalyzer使用HAHA来解析.hprof文件 HeapAnalyzer根据唯一的reference key查找 KeyedWeakReference定位内存泄露 HeapAnalyzer 计算 KeyedWeakReference 所引用对象的最短强引用路径,并确定是否泄露,构建导致泄露的对象引用链 将引用链传递回运行在APP进程中的 DisplayLeakService,并以通知的形式展示出来 四、哪些需要监控 Activity、Fragment、Bitmap、其他具有生命周期的对象、可能持有较大内存占用的对象等。 五、何时进行监控 内存泄漏就是某个对象在理应释放的时候却被其他对象持有,而没有被释放,因此造成内存泄漏。因此监控需要放在对象(很快)被释放的时候,比如Activity和Fragment的onDestroy方法中。 六、解决方案 使用Application的Context而不是Activity的 使用弱引用或软引用(弱引用:GC会来决定引用的对象何时回收并将对象从内存中移除,软引用:停留在内存的时间比弱引用较长,当内存不足时GC才会回收软引用可到达的对象,因此可以作为缓冲) 手动置空,解除引用关系 将内部类设置为static,因为非静态内部类会隐式持有外部类实例的引用 注册和取消注册首位成对,在对象合适的生命周期进行 资源性对象(比如Cursor、File等)往往都做了一些缓冲,在不使用时应该及时关闭,以便他们的缓冲对象能够被及时回收。这些缓冲不仅存在于Java虚拟机内,还存在于虚拟机外,如果我们仅仅将它的引用设置为null而不关闭它们,往往会造成内存泄漏。 七、注意事项 release版本不能带,因为会带来更多的分析计算影响CPU等资源的占用 检测比较慢,涉及到I/O和大量计算,通常在20s~1min之间,和当前CPU占用情况有关 每次只能显示一条内存了泄漏的消息 如果最近有一个新的heap dump file被创建,还在分析中,那么就会在稍后再进行dump 八、其他工具 9.1)Lint (是Android Studio自带的静态代码分析工具,Analyze -> Inspect Code) 可以直接对单个文件或整个模块进行分析,以性能为例: Android Lint: Performance Do not place Android context classes in static fields; this is a memory leak (and also breaks instant Run) 九、LeakCanary源码 github.com/square/leakcanary

优秀的个人博客,低调大师

OpenAI 亲自上阵,推出 AI 文本检测工具

前两天,我们刚报道了斯坦福大学研究出了一个名为 DetectGPT 模型,该模型可以检测出文本段落是否是由一个给定的大型语言模型(LLM)生成的,斯坦福大学将使用 DetectGPT 来应对学生使用 ChatGPT 等 AI 工具作弊和生成论文的现象。 这才没过几天,ChatGPT 的开发商 OpenAI 就决定亲自上阵发布了一个免费的网络工具 AI Text Classifier(需登录 OpenAI 账号使用),这个工具的目的跟 DetectGPT 一样,也是帮助用户识别某一段文本是由人类还是机器写的。 这个工具的使用方式也很简单,用户只需要将一段文字复制到文本框中,系统会对该文本是由 AI 系统生成的可能性进行判断,判断结果从「非常不可能 —— 很有可能」共分成了 5 个等级。 AI Text Classifier 不仅可以检测 ChatGPT 生成的文本,还可以检测其他同类 AI 工具生成的文本。只不过根据 OpenAI 的说法,该工具的准确性目前似乎不是很高。 AI Text Classifier 可以正确地将 26% 的 AI 生成文本识别为「可能是 AI 写的」,而将人类写的文本错误地标记为是由 AI 写的的情况有 9%。 因此,OpenAI 的负责人 Jan Leike 也强调到,这个工具并不完美,既会产生误报也会产生漏报,用户不应该仅仅依靠这一个工具来确定文本的作者。 除了判断结果不够精确以外,OpenAI 还表示该工具更擅长分析由 1000 个以上字符组成的英语文本。AI Text Classifier 不能可靠地评估更短的或用其他语言写的文本片段。此外,该工具也不能准确检测 AI 生成的计算机代码。 从上面的结果来看,为了避免 “冤案错案”,AI Text Classifier 暂时还不适合老师使用。当然,OpenAI 已经了解到教育和其他领域对 AI 生成文本的担忧,他们正在研究其他方法,以帮助人们区分 AI 生成的文本和人类创作的文本。

优秀的个人博客,低调大师

ControlFlag —— 基于机器学习的代码检测工具

ControlFlag 是一个自监督的特殊模式检测系统,它通过从开源存储库(在 GitHub 和其他版本控制系统上)挖掘这些模式来学习高级编程语言(如 C/C++)控制结构中出现的典型模式。然后应用学习到的模式来检测用户代码中的异常模式。 简要技术说明 ControlFlag 的模式异常检测系统可用于解决各种问题,例如排版错误检测、标记缺失的 NULL 检查等等。 下图显示了 ControlFlag 的两个主要阶段:(1)模式挖掘阶段,以及(2)异常模式扫描阶段。模式挖掘阶段是一个“训练阶段”,它在用户提供的 GitHub 仓库中挖掘典型模式,然后从挖掘的模式中构建决策树。另一方面,扫描阶段应用挖掘的模式来标记用户指定的目标仓库中的异常表达式。 目录结构(不断发展) src: 用于排版错误检测系统的 ControlFlag 的源代码 scripts: 用于模式挖掘和扫描异常的脚本 quick_start:运行快速启动测试的脚本 github:用于下载 GitHub 仓库的脚本和数据。它还包含预处理的训练数据,其中包含使用 C 作为主要语言从 6000 个 GitHub 仓库中挖掘的模式。 tests: 单元测试 安装 ControlFlag 可以在 Linux 和 MacOS 上构建。 要求 CMake 3.4.3 或以上 C++17 兼容编译器 Tree-sitter解析器(作为 cmake 的一部分自动下载) GNU parallel(可选,如果您想生成自己的训练数据) 在基于 Linux 的系统上测试构建配置 CentOS-7.6/Ubuntu-20.04 with g++-v10.2.0 for x86_64 在 MacOS 上测试构建配置 MacOS Mojave v10.14.6 with clang-1001.0.46.4 (Apple LLVM version 10.0.1) for x86_64(从命令行工具包获得) 构建 $ cd controlflag $ cmake . $ make -j $ make test 所有测试都make test应该通过,但目前 Verilog 的测试由于版本不匹配问题而失败。Verilog 支持是 WIP。

优秀的个人博客,低调大师

Meta 开源水印与污染检测工具 Text Seal

Meta AI研究团队近日开源了Text Seal工具包。该工具包专注于为大语言模型(LLM)提供生成时与事后两种文本水印方案,并可检测因基准数据被污染所产生的“水印放射性”信号。 具体而言,Text Seal是Meta Seal多模态开源水印框架的一部分,旨在提供稳健且不易察觉的水印方案。 Text Seal的功能包括:实施事后水印,即利用LLM对现有文本进行重写,同时使用生成时水印方案(如Green-list/Red-list、Gumbel-max、DipMark、SynthID、MorphMark、WaterMax)嵌入水印;进行污染检测,通过在训练过程中注入带水印的基准数据集,并检测模型输出的“水印放射性”,从而推断训练数据是否受到污染;提供训练基础设施,支持为研究目的进行带污染注入的分布式预训练和SFT。 开源地址:https://github.com/facebookresearch/textseal

优秀的个人博客,低调大师

Meta 开源 MemLab:JavaScript 内存泄漏检测工具

Meta 宣布开源了MemLab,一个用于在基于 Chromium 的浏览器上的 JavaScript 应用程序中查找内存泄漏的工具。公告称,找到并解决内存泄漏的根本原因对于在 Web 应用程序上提供高质量的用户体验非常重要。MemLab 帮助 Meta 的工程师和开发人员改善了用户体验,并在内存优化方面做出了重大改进。“我们希望它也能为更大的 JavaScript 社区做出贡献”。 Facebook.com 在 2020 年被重新设计为单页应用程序 (SPA),该应用程序的大部分渲染和导航使用客户端 JavaScript。而 Meta 的大多数其他流行网络应用程序都使用了类似的架构来构建,包括 Instagram 和 Workplace。该公司表示,虽然这种架构使其能够提供更快的用户交互、更好的开发人员体验和更像应用程序的感觉,但在客户端维护 Web 应用程序状态会使有效管理客户端内存变得更加复杂。 “使用我们的网络应用程序的人通常会立即注意到性能和功能正确性问题。然而,内存泄漏是另一回事;它不会立即被察觉,因为它一次会占用一大块内存——影响整个 Web 会话并使后续交互变得更慢且响应更慢。为了帮助我们的开发人员解决这个问题,我们构建了MemLab,这是一个 JavaScript 内存测试框架,它可以自动进行泄漏检测并更容易找到内存泄漏的根本原因。我们在 Meta 使用 MemLab 成功地控制了不可持续的内存增长,并识别了我们产品和基础设施中的内存泄漏和内存优化机会。我们已经在 GitHub 上开源了 MemLab,我们很高兴能与 JavaScript 社区合作,让开发人员从今天开始使用 MemLab。” MemLab 的工作原理是通过预定义的测试场景运行 headless 浏览器并对 JavaScript heap snapshots 进行差异分析来发现内存泄漏。此过程分六个步骤进行: 浏览器交互 区分 heap 细化内存泄漏列表 生成 retainer traces Clustering retainer traces 报告泄漏 MemLab 提供内存泄漏检测功能。对于浏览器内存泄漏检测,MemLab 需要开发人员提供的唯一输入是一个测试场景文件,该文件定义了如何通过overridingPuppeteer API 和 CSS 选择器的三个回调来与网页进行交互。MemLab 会自动对 JavaScript heap 进行差异化处理,完善内存泄漏,并对结果进行汇总。 MemLab 的另一个特性是提供了“JavaScript heap的 Graph-view API”。Node.js 程序或Jest test也可以使用 graph-view API 来获取其自身状态的 heap graph view,进行 self-memory 检查,并编写各种内存断言。除了内存泄漏检测,MemLab 还包括一组内置的CLI 命令和API,用于寻找内存优化机会。 通过使用 MemLab 检测和诊断内存泄漏,Meta 方面称,其在 2021 年上半年将 Facebook.com 上的 OOM 崩溃减少了 50%。 更多详情可查看官方博客。

优秀的个人博客,低调大师

DBVERIFY(DBV)坏块的检测工具 (Doc ID 35512.1)

2 --> 一、介绍 DBV(DBVERIFY)是Oracle提供的一个命令行工具,它可以对数据文件物理和逻辑两种一致性检查。但是这个工具不会检查索引记录和数据记录的匹配关系,这种检查必须使用analyze validate structure命令。 这个工具有如下特点: 以只读的方式打开数据文件,在检查过程中不会修改数据文件的内容。 可以在线检查数据文件,而不需要关闭数据库。 DBV只会检查数据块的正确性,但不会关系数据块是否属于哪个对象。 dbv help=y 参数 含义 缺省值 FILE 要检查的数据文件名 没有缺省值 START 检查起始数据块号 数据文件的第一个数据块 END 检查的最后一个数据块号 数据文件的最后一个数据块 BLOCKSIZE 数据块大小,这个值要和数据库的DB_BLOCK_SIZE参数值一致 缺省值8192 LOGFILE 检查结果日志文件 没有缺省值 FEEDBAK 显示进度 0 PARFILE 参数文件名 没有缺省值 USERID 用户名、密码 没有缺省值 SEGMENT_ID 段ID,参数格式<tsn.segfile.segblock> 没有缺省值 二、测试实验(db version:19.3.0.0,ASM) 1、检查ASM实例数据文件 [grid@p19c01 ~]$ dbv file=+DATA/ORCL/DATAFILE/SYSAUX.258.1067243075 DBVERIFY: Release 19.0.0.0.0 - Production on Thu Mar 18 07:15:40 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = +DATA/ORCL/DATAFILE/SYSAUX.258.1067243075 DBVERIFY - Verification complete Total Pages Examined : 69120 Total Pages Processed (Data) : 5437 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 2684 Total Pages Failing (Index): 0 Total Pages Processed (Lob) : 25350 2、指定BLOCKSIZE检测数据文件,blocksize=8192kb --获取数据库db_block_size SQL> show parameter db_block_size NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_block_size integer 8192 --获取数据文件号 SQL> select file#,name from v$datafile; FILE# NAME ---------- -------------------------------------------------------------------------------- 1 +DATA/ORCL/DATAFILE/system.274.1067312029 3 +DATA/ORCL/DATAFILE/sysaux.275.1067312063 4 +DATA/ORCL/DATAFILE/undotbs1.276.1067312079 5 +DATA/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.282.1067312545 6 +DATA/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.283.1067312545 7 +DATA/ORCL/DATAFILE/users.277.1067312079 8 +DATA/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.284.1067312545 9 +DATA/ORCL/DATAFILE/undotbs2.286.1067312997 8 rows selected. --获取数据文件1的END SQL> select bytes/8192 from v$datafile where file#=1; BYTES/8192 ---------- 113920 --检查数据文件是否有坏块 [oracle@p19c01 ~]$ dbv file=+DATA/ORCL/DATAFILE/system.274.1067312029 blocksize=8192 end=113920 DBVERIFY: Release 19.0.0.0.0 - Production on Thu Mar 18 07:28:51 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = +DATA/ORCL/DATAFILE/system.274.1067312029 DBVERIFY - Verification complete Total Pages Examined : 113920 Total Pages Processed (Data) : 79434 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 12737 Total Pages Failing (Index): 0 Total Pages Processed (Other): 5111 Total Pages Processed (Seg) : 1 Total Pages Failing (Seg) : 0 Total Pages Empty : 16638 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Total Pages Encrypted : 0 Highest block SCN : 2369647 (0.2369647) 3、检查控制文件,blocksize=16384kb --检测控制文件是否坏块 --不指定bolcksize会报错 [oracle@p19c01 ~]$ dbv file=+DATA/ORCL/CONTROLFILE/current.278.1067312147 DBVERIFY: Release 19.0.0.0.0 - Production on Thu Mar 18 08:23:06 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = +DATA/ORCL/CONTROLFILE/current.278.1067312147 DBV-00111: OCI failure (4409) (ORA-19501: read error on file "+DATA/ORCL/CONTROLFILE/current.278.1067312147", block number 1 (block size=8192) ORA-17507: I/O request size is not a multiple of logical block size. ORA-06512: at "SYS.DBMS_DBVERIFY", line 24 ORA-06512: at line 1 ) --查看控制文件的blocksize为16K [grid@p19c01 ~]$ dbfsize Current.261.1067243211 Database file: Current.261.1067243211 Database file type: file system Database file size: 1202 16384 byte blocks --指定blocksize为16K [oracle@p19c01 ~]$ dbv file=+DATA/ORCL/CONTROLFILE/current.278.1067312147 blocksize=16384 DBVERIFY: Release 19.0.0.0.0 - Production on Thu Mar 18 08:24:03 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = +DATA/ORCL/CONTROLFILE/current.278.1067312147 DBVERIFY - Verification complete Total Pages Examined : 1202 Total Pages Processed (Data) : 0 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing (Index): 0 Total Pages Processed (Other): 85 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 1117 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Total Pages Encrypted : 0 Highest block SCN : 1382 (0.1382) 4、检查单独的Segment --查看对象的tsn,segfile,segblock属性: select t.ts#,s.header_file,s.header_block from v$tablespace t,dba_segments s where s.segment_name='LUCIFER' 4 and t.name=s.tablespace_name; TS# HEADER_FILE HEADER_BLOCK ---------- ----------- ------------ 0 10 33600 --检查segment是否坏块 [oracle@p19c01 ~]$ dbv userid=lucifer/lucifer@pdb01 segment_id=0.10.33600 DBVERIFY: Release 19.0.0.0.0 - Production on Thu Mar 18 08:25:35 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : SEGMENT_ID = 0.10.33600 DBV-00600: Fatal Error - [1] [1] [1] [1] -- 5、检查log文件(redo和arch)blocksize=512kb [oracle@p19c01 ~]$ dbv file=+DATA/ORCL/ONLINELOG/group_1.280.1067312151 DBVERIFY: Release 19.0.0.0.0 - Production on Thu Mar 18 08:30:58 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = +DATA/ORCL/ONLINELOG/group_1.280.1067312151 Segmentation fault (core dumped) --将asm中redolog文件复制一份出来 [grid@p19c01 ~]$ asmcmd -p ASMCMD [+] > cp +DATA/ORCL/ONLINELOG/group_1.280.1067312151 /home/grid copying +DATA/ORCL/ONLINELOG/group_1.280.1067312151 -> /home/grid/group_1.280.1067312151 ASMCMD [+] > exit [grid@p19c01 ~]$ ls Current.261.1067243211 group_1.280.1067312151 --检查redo日志文件 [grid@p19c01 ~]$ dbv file=group_1.280.1067312151 DBVERIFY: Release 19.0.0.0.0 - Production on Thu Mar 18 08:32:20 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. DBV-00103: Specified BLOCKSIZE (8192) differs from actual (512) --查看redo log的blocksize为512k [grid@p19c01 ~]$ dbv file=group_1.280.1067312151 DBVERIFY: Release 19.0.0.0.0 - Production on Thu Mar 18 08:32:20 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. DBV-00103: Specified BLOCKSIZE (8192) differs from actual (512) [grid@p19c01 ~]$ dbfsize group_1.280.1067312151 Database file: group_1.280.1067312151 Database file type: file system Database file size: 409600 512 byte blocks --[grid@p19c01 ~]$ dbv file=group_1.280.1067312151 blocksize=512 DBVERIFY - Verification complete Total Pages Examined : 409600 Total Pages Processed (Data) : 0 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing (Index): 0 Total Pages Processed (Other): 0 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 0 Total Pages Marked Corrupt : 409600 Total Pages Influx : 190957 Total Pages Encrypted : 0 Highest block SCN : 0 (0.0) --查看归档日志 [grid@p19c01 ~]$ dbv file=thread_1_seq_8.295.1067503735 blocksize=512 logfile=archdbv.log feedback=100 [grid@p19c01 ~]$ cat archdbv.log DBVERIFY - Verification complete Total Pages Examined : 42293 Total Pages Processed (Data) : 0 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing (Index): 0 Total Pages Processed (Other): 0 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 0 Total Pages Marked Corrupt : 42293 Total Pages Influx : 12885 Total Pages Encrypted : 0 Highest block SCN : 0 (0.0)

优秀的个人博客,低调大师

Rightly领衔8款App合规检测工具对比

随着《个人信息保护法》《数据安全法》与《网络安全法》的持续推进,移动应用隐私合规已从"可选项"变为"必答题"。2025年1至8月,全国网信系统累计下架违规APP及SDK达1200余款,其中超过60%涉及隐私政策声明不完整、SDK嵌套采集未披露与权限滥用等问题。监管呈现出常态化、精细化与追溯化三大趋势,审查颗粒度也从侧重文本规范性的"形式合规"转向侧重技术防护与数据流控的"实质合规"。在这一背景下,企业借助专业工具开展app合规检测,能够在发布前精准识别风险、降低违规成本。本文围绕8款主流工具展开对比,清单如下:Rightly、MobSF、梆梆安全、奇安信天眼、Checkmarx、Burp Suite Pro、Snyk、OWASP ZAP。

优秀的个人博客,低调大师

谷歌开源 Magika —— AI 驱动的文件类型检测工具

谷歌开源了由 AI 驱动的文件内容类型识别工具,声称能够在毫秒级内精确识别超过 100 种不同文件类型,无论是二进制文件还是文本文件。 在谷歌内部,Magika 被用于提升用户安全,帮助对 Gmail、Drive和安全浏览中的文件进行安全检查和内容策略扫描。 Magika 是基于深度学习技术的文件类型识别系统,用于准确检测二进制和文本文件类型。在底层,Magika 采用定制的、高度优化的深度学习模型,即使在 CPU 上运行,也能在几毫秒内实现精确的文件识别。 主要特性 AI驱动的准确识别:Magika使用了一个自定义的、高度优化的深度学习模型,使得它能够在几毫秒内准确识别出二进制和文本文件的类型,即便是在CPU上运行也能快速完成。 支持多种文件类型:它能够识别超过100种不同的文件类型,包括常见的文档、图片、代码文件和配置文件等。 高效性能:在包含100万文件的基准测试中,Magika的识别性能比其他现有工具高出约20%,尤其在处理文本文件(包括代码文件和配置文件)时,展现出更大的性能优势。 广泛应用:Magika在Google内部被广泛用于提高用户安全,如通过改进的文件类型识别准确性,帮助路由Gmail、Drive和安全浏览文件到适当的安全和内容政策扫描器。 简单易用的安装和使用:Magika可以作为Python库和独立的命令行工具安装,用户可以通过简单的命令行指令pip install magika进行安装,无需GPU。 开源和易于集成:Magika的代码和模型在GitHub上免费提供,并且采用Apache2许可证,便于其他软件改进其文件识别准确性和为研究人员提供大规模识别文件类型的可靠方法。 即将与VirusTotal集成:Magika将与VirusTotal集成,提高平台分析和检测恶意代码的效率和准确性,有助于全球网络安全生态系统的建设。 Magika 命令行输出示例 Magika 性能表现 开源地址:https://github.com/google/magika

优秀的个人博客,低调大师

谷歌发布 AI 文件检测工具 Magika 1.0,全面采用 Rust 语言

谷歌公司在近期宣布推出 Magika1.0,这是其基于人工智能的文件类型检测系统的最新稳定版本。此次版本的发布,标志着 Magika 在性能和安全性方面的重大提升,因为核心引擎已全面迁移至 Rust 语言。自去年开源以来,Magika 已经在开源社区中获得了广泛应用,每月下载量超过100万次。 新版 Magika 的架构进行了全面重构,显著提高了处理速度和内存安全性。谷歌表示,这款工具能够在单核处理器下每秒识别数百个文件,借助多核 CPU 则可扩展至每秒数千个文件。Magika1.0采用 ONNX Runtime 进行模型推理,并利用 Tokio 框架实现异步处理,确保其高效运行。 在文件格式的支持方面,Magika1.0的检测能力已经扩展到200多种文件格式,几乎是初始版本的两倍。新增的文件类型包括数据科学与机器学习中的 Jupyter Notebooks、Numpy、PyTorch 等,以及现代编程和网页开发中的 Swift、Kotlin、TypeScript 等。此外,还支持 DevOps 相关文件和多种数据库及图形格式文件,如 SQLite 和 AutoCAD。 Magika1.0不仅提升了对相似格式文件的识别能力,还改善了对不同编程语言文件的区分,如 C 与 C++、JavaScript 与 TypeScript 等。谷歌在技术实现方面也面临诸多挑战,包括训练数据的庞大规模和部分文件类型样本稀缺。为此,谷歌开发了自有的数据集库 SedPack,并通过生成式 AI 工具 Gemini 创造高质量的合成训练数据,以提升模型的泛化能力。 值得注意的是,Magika 还更新了 Python 与 TypeScript 模块,使得开发者可以更轻松地进行集成。用户可以通过简单命令在不同操作系统上安装 Magika,并且谷歌鼓励开发者参与到该项目中来,继续优化与扩展工具的功能。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册