Digging into Windows Internals

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

Although much of the information in this book is based on reading the Windows source code and talking to the developers, you don't have to take everything on faith. Many details about the internals of Windows can be exposed and demonstrated by using a variety of available tools, such as those that come with Windows, the Windows Support Tools, the Windows resource kit tools, and the Windows debugging tools. These tool packages are briefly described later in this section.

To encourage your exploration of Windows internals, we've included "Experiment" sidebars throughout the book that describe steps you can take to examine a particular aspect of Windows internal behavior. (You already saw one of these sections earlier in this chapter.) We encourage you to try these experiments so that you can see in action many of the internals topics described in this book.

Table 1-3 shows a list of the tools used in this book and where they come from.

Table 1-3. Tools for Viewing Windows Internals

Tool

Image Name

Origin

Startup Programs Viewer

AUTORUNS

http://www.sysinternals.com

Dependency Walker

DEPENDS

Support Tools, Platform SDK

DLL List

LISTDLLS

http://www.sysinternals.com

EFS Information Dumper

EFSDUMP

http://www.sysinternals.com*

File Monitor

FILEMON

http://www.sysinternals.com

Global Flags

GFLAGS

Support Tools

Handle Viewer

HANDLE

http://www.sysinternals.com

Junction tool

JUNCTION

http://www.sysinternals.com

Kernel debuggers

WINDBG, KD

Debugging tools, Platform SDK, Windows DDK

Live Kernel Debugging

LIVEKD

http://www.sysinternals.com

Logon Sessions

LOGINSESSIONS

http://www.sysinternals.com

Object Viewer

WINOBJ

http://www.sysinternals.com

Open Handles

OH

Resource kits

Page Fault Monitor

PFMON

Support Tools, Resource kits, Platform SDK

Pending File Moves

PENDMOVES

http://www.sysinternals.com

Performance tool

PERFMON.MSC

Windows built-in tool

PipeList tool

PIPELIST

http://www.sysinternals.com

Pool Monitor

POOLMON

Support Tools, Windows DDK

Process Explorer

PROCEXP

http://www.sysinternals.com

Get SID tool

PSGETSID

http://www.sysinternals.com

Process Statistics

PSTAT

Support Tools, Windows 2000 Resource kits, Platform SDK, http://www.reskit.com

Process Viewer

PVIEWER (in the Support Tools) or PVIEW (in the Platform SDK)

Platform SDK

Quick Slice

QSLICE

Windows 2000 resource kits

Registry Monitor

REGMON

http://www.sysinternals.com

Service Control

SC

Windows XP, Platform SDK, Windows 2000 resource kits

Task (Process) List

TLIST

Debugging tools

Task Manager

TASKMGR

Windows built-in tool

TDImon

TDIMON

http://www.sysinternals.com


Performance Tool

We'll refer to the Performance tool found in the Administrative Tools folder on the Start menu (or via Control Panel) throughout this book. The Performance tool has three functions: system monitoring, viewing performance counter logs, and setting alerts. For simplicity, when we refer to the Performance tool, we are referring to the System Monitor function within the tool.

The Performance tool can provide more information about how your system is operating than any other single utility. It includes hundreds of counters for various objects. For each major topic described in this book, a table of the relevant Windows performance counters is included.

The Performance tool contains a brief description for each counter. To see the descriptions, select a counter in the Add Counter window and click the Explain button. Or open the Performance Counter Reference help file in the resource kit. For information on how to interpret these counters to detect bottlenecks or plan capacity, see the section "Performance Monitoring" in the Windows 2000 Server Operations Guide, which is part of the Windows 2000 Server Resource Kit. These chapters provide an excellent description to anyone seriously interested in understanding Windows performance. For Windows XP and Windows Server 2003, see the Windows Server 2003 Resource Kit Performance Counters Reference documentation (available online at http://www.microsoft.com).

Note that all the Windows performance counters are accessible programmatically. The section "HKEY_PERFORMANCE_DATA" in Chapter 4 has a brief description of the components involved in retrieving performance counters through the Windows API.

Windows Support Tools

The Windows Support Tools consist of about 40 tools useful in administering and troubleshooting Windows systems. Many of these tools were formerly part of the Windows NT 4 resource kits.

You can install the Support Tools by running Setup.exe in the /Support/Tools folder on any Windows product distribution media. For Windows 2000, the Support Tools are the same on Windows 2000 Professional, Server, Advanced Server, and Datacenter Server. Windows XP has its own version of the Support Tools, as does Windows Server 2003.

Windows Resource Kits

The Windows resource kits supplement the Support Tools, adding additional tools for system administration and support. The Windows 2003 Resource Kit tools are freely downloadable from http://www.microsoft.com (by searching for "resource kit tools"). They can be installed on Windows XP or Windows Server 2003.

There are two editions of the Windows 2000 resource kits: the Windows 2000 Professional Resource Kit and the Windows 2000 Server Resource Kit. (Supplement 1 is the most recent version.) Although the latter kit is a superset of the former and can be installed on Windows 2000 Professional systems, none of the experiments in this book use the tools that are included only with the Windows 2000 Server Resource Kit. Unlike the Windows Server 2003 Resource Kit, these tools are not freely downloadable. However, the Windows 2000 Server Resource Kit is included with the MSDN and TechNet subscriptions.

Kernel Debugging

Kernel debugging means examining internal kernel data structures and/or stepping through functions in the kernel. It is a useful way to investigate Windows internals because you can display internal system information not available through any other tools and get a clearer idea of code flows within the kernel.

Kernel debugging can be performed with a variety of tools: the Windows Debugging Tools from Microsoft, LiveKD from http://www.sysinternals.com, or SoftIce from Compuware NuMega. Before describing these tools, let's examine a file that you'll need to perform any type of kernel debugging.

Symbols for Kernel Debugging

Symbol files contain the names of functions and variables. They are generated by the linker and used debuggers to reference and display these names during a debug session. This information is not usually stored in the binary image because it is not needed to execute the code. This means that binaries are smaller and faster. However, this means that when debugging, you must make sure that the debugger can access the symbol files that are associated with the images you are referencing during a debugging session.

To use any of the kernel debugging tools to examine internal Windows kernel data structures (such as the process list, thread blocks, loaded driver list, memory usage information, and so on), you must have the correct symbol files for at least the kernel image, Ntoskrnl.exe. (The section "Architecture Overview" in Chapter 2 explains more about this file.) Symbol table files must match the version of the image they were taken from. For example, if you install a Windows Service Pack or hot fix, you must obtain the matching, updated symbol files for at least the kernel image; otherwise, you'll get a checksum error when you try to load them with the kernel debugger.

While it is possible to download and install symbols for various versions of Windows, updated symbols for hot fixes are not always available. The easiest solution to obtain the correct version of symbols for debugging is to use the Microsoft on-demand symbol server by using a special syntax for the symbol path that you specify in the debugger. For example, the following symbol path causes the debugging tools to load required symbols from the Internet symbol server and keep a local copy in the c:/symbols folder:

srv*c:/symbols*http://msdl.microsoft.com/download/symbols

For detailed instructions on how to use the symbol server, see the Debugging Tools help file or the Web page http://www.microsoft.com/whdc/ddk/debugging/symbols.mspx.

Windows Debugging Tools

The Windows Debugging Tools package contains advanced debugging tools used in this book to explore Windows internals. You can find the latest version at http://www.microsoft.com/whdc/ddk/debugging. These tools can be used to debug user-mode processes as well as the kernel. (See the following sidebar.)

Note

The Windows Debugging Tools are updated frequently and released independently of Windows operating system versions, so check often for new versions.

 


User-Mode Debugging

The debugging tools can also be used to attach to a user-mode process and examine and/or change process memory. There are two options when attaching to a process:

  • Invasive Unless specified otherwise, when you attach to a running process, the DebugActiveProcess Windows function is used to establish a connection between the debugger and the debugee. This permits examining and/or changing process memory, setting breakpoints, and performing other debugging functions. In Windows 2000, when the debugger exits, the debugee process is killed. However, as of Windows XP, you can detach a debugger without killing the target process.

  • Noninvasive With this option, the debugger simply opens the process with the OpenProcess function. It does not attach to the process as a debugger. This allows you to examine and/or change memory in the target process, but you cannot set breakpoints. The advantage of this option is that you can exit the debugger on Windows 2000 without killing the target process.

You can also open user-mode process dump files with the debugging tools. User mode dump files are explained in Chapter 3 in the section on exception dispatching.


There are two primary variants of the Microsoft debuggers that can be used for kernel debugging: a command-line version (Kd.exe) and a graphical user interface (GUI) version (Windbg.exe). Both provide the same set of commands, so which you choose is a matter of personal preference. You can perform three types of kernel debugging with these tools:

  • Open a crash dump file created as a result of a Windows system crash. (See Chapter 14 for more information on crash dumps.)

  • Connect to a live, running system and examine the system state (or set breakpoints if you're debugging device driver code). This operation requires two computers—a target and a host. The target is the system being debugged, and the host is the system running the debugger. The target system can be either local (connected to the host via a null modem or IEEE 1394 cable) or remote (connected to the host via a modem). The target system must be booted with the /DEBUG qualifier (either by pressing F8 during the boot process and selecting Debug Mode or by adding a boot selection entry in Boot.ini).

  • For Windows XP and Windows Server 2003 systems, connect to the local system and examine the system state. This is called local kernel debugging. To initiate local kernel debugging, select the menu item File, select Kernel Debug, click on the Local tab, and click OK. An example output screen is shown in Figure 1-7. Some kernel debugger commands do not work when used in local kernel debugging mode (such as viewing kernel stacks and creating a memory dump with the .dump command). However, you can use the free LiveKd tool from http://www.sysinternals.com in cases where the native local debugging support does not work. (See the next section.)

     

    Figure 1-7. Local kernel debugging

     

     

    dt nt!_* in the kernel debugger. A sample partial output is shown below:

     

    lkd> dt nt!_*
    
              nt!_LIST_ENTRY
    
              nt!_LIST_ENTRY
    
              nt!_IMAGE_NT_HEADERS
    
              nt!_IMAGE_FILE_HEADER
    
              nt!_IMAGE_OPTIONAL_HEADER
    
              nt!_IMAGE_NT_HEADERS
    
              nt!_LARGE_INTEGER

    You can also use the dt command to search for specific structures by using its wildcard lookup capability. For example, if you were looking for the structure name for an interrupt object, type dt nt!_*interrupt*:

    lkd> dt nt!_*interrupt*
    
              nt!_KINTERRUPT
    
              nt!_KINTERRUPT_MODE

    Then, you can use dt to format a specific structure as shown below:

    lkd> dt nt!_kinterrupt
    
    nt!_KINTERRUPT
    
       +0x000 Type             : Int2B
    
       +0x002 Size             : Int2B
    
       +0x004 InterruptListEntry : _LIST_ENTRY
    
       +0x00c ServiceRoutine   : Ptr32
    
       +0x010 ServiceContext   : Ptr32 Void
    
       +0x014 SpinLock         : Uint4B
    
       +0x018 TickCount        : Uint4B
    
       +0x01c ActualLock       : Ptr32 Uint4B
    
       +0x020 DispatchAddress  : Ptr32
    
       +0x024 Vector           : Uint4B
    
       +0x028 Irql             : UChar
    
       +0x029 SynchronizeIrql  : UChar
    
       +0x02a FloatingSave     : UChar
    
       +0x02b Connected        : UChar
    
       +0x02c Number           : Char
    
       +0x02d ShareVector      : UChar
    
       +0x030 Mode             : _KINTERRUPT_MODE
    
       +0x034 ServiceCount     : Uint4B
    
       +0x038 DispatchCount    : Uint4B
    
       +0x03c DispatchCode     : [106] Uint4B

    Note that dt does not show substructures (structures within structures) by default. To recurse through substructures, use the "-r" switch. For example, using this switch to display the kernel interrupt object shows the format of the _LIST_ENTRY structure stored at the InterruptListEntry field:

    lkd> dt nt!_kinterrupt -r
    
    nt!_KINTERRUPT
    
       +0x000 Type             : Int2B
    
       +0x002 Size             : Int2B
    
       +0x004 InterruptListEntry :
    
          +0x000 Flink            : Ptr32
    
             +0x000 Flink            : Ptr32 _LIST_ENTRY
    
             +0x004 Blink            : Ptr32 _LIST_ENTRY
    
          +0x004 Blink            : Ptr32
    
             +0x000 Flink            : Ptr32 _LIST_ENTRY
    
             +0x004 Blink            : Ptr32 _LIST_ENTRY
    
       +0x00c ServiceRoutine   : Ptr32


    The Windows Debugging Tools help file explains how to set up and use the kernel debuggers. Additional details on using the kernel debuggers that are aimed primarily at device driver writers can be found in the Windows DDK documentation. There are also several useful Knowledge Base articles on the kernel debugger. Search for "debugref" in the Windows Knowledge Base (an online database of technical articles) on support.microsoft.com.

    LiveKd Tool

    LiveKd is a free tool from http://www.sysinternals.com that allows you to use the standard Microsoft kernel debuggers just described to examine the running system without requiring a second computer to act as the host (via a null modem cable). While the built-in support for local kernel debugging works only on Windows XP and Windows Server 2003, LiveKd permits local kernel debugging on Windows NT 4.0, Windows 2000, Windows XP, and Windows Server 2003.

    You run LiveKd just as you would Windbg or Kd. LiveKd passes any command-line options you specify to the debugger you select. By default, LiveKd runs the new command-line kernel debugger (Kd). To run the GUI debugger (Windbg), specify the –w switch. To see the help files on the switches for LiveKd, specify the –? switch.

    LiveKd presents a simulated crash dump file to the debugger, so you can perform any operations in LiveKd that are supported on a crash dump. Because LiveKd is relying on physical memory to back the simulated dump, the kernel debugger might run into situations in which data structures are in the middle of being changed by the system and are inconsistent. Each time the debugger is launched, it gets a snapshot of the system state, so if you want to refresh the snapshot, quit the debugger (with the "q" command) and LiveKd will ask you whether you want to start it again. If the debugger gets in a loop in printing output, press Ctrl+C to interrupt the output, quit, and rerun it. If it hangs, press Ctrl+Break, which will terminate the debugger process and ask you whether you want to run the debugger again.

    SoftICE

    Another debugging tool that doesn't require two machines for live kernel debugging is a thirdparty kernel debugger called SoftICE, which you can buy from Compuware NuMega. (See http://www.compuware.com for details.) SoftICE has essentially the same capabilities as the Windows debugging tools, but it also supports stepping between user-mode and kernel-mode code. It also supports the Microsoft kernel extension DLLs, so most of the commands we describe in the book also work in SoftICE. Figure 1-8 shows the SoftICE user interface, which appears in response to the SoftICE activation key (by default, Ctrl+D) as a window on the desktop of the machine on which it's running.

     

    Figure 1-8. The SoftICE interface

     

     

    Platform Software Development Kit (SDK)

    The Platform SDK is part of the MSDN Professional and higher subscription levels, or it can be downloaded for free from msdn.microsoft.com. It contains the documentation, C header files, and libraries necessary to compile and link Windows applications. (Although Microsoft Visual C++ comes with a copy of these header files, the versions contained in the Platform SDK always match the latest version of the Windows operating systems, whereas the version that comes with Visual C++ might be an older version that was current when Visual C++ was released.) From an internals perspective, items of interest in the Platform SDK include the Windows API header files (/Program Files/Microsoft SDK/Include) as well as several utilities (Pfmon.exe, Pstat.exe, Pview.exe, Vadump.exe, and Winobj.exe). Some tools in the Platform SDK also come with the Support Tools and Resource Kits. Finally, a few of these tools are also shipped as example source code in both the Platform SDK and the MSDN Library.

    Device Driver Kit (DDK)

    The Windows DDK is also shipped as part of the MSDN Professional (and higher) subscription levels, but unlike the Platform SDK, it is not available for free download (although you can order the CD-ROM for a minimal cost). The Windows DDK documentation is included in the MSDN Library.

    Although the DDK is aimed at device-driver developers, it is an abundant source of Windowsinternals information. For example, while Chapter 9 describes the I/O system architecture, driver model, and basic device driver data structures, it does not describe the individual kernel support functions in detail. The DDK documentation contains a comprehensive description of all the Windows kernel support functions and mechanisms used by device drivers in both a tutorial and reference form.

    Besides including the documentation, the DDK contains header files (in particular, Ntddk.h and Wdm.h) that define key internal data structures and constants as well as interfaces to many internal system routines. These files are useful when exploring Windows internal data structures with the kernel debugger because although the general layout and content of these structures are shown in this book, detailed field-level descriptions (such as size and data types) are not. A number of these data structures (such as object dispatcher headers, wait blocks, events, mutants, semaphores, and so on) are, however, fully described in the DDK.

    So if you want to dig into the I/O system and driver model beyond what is presented in this book, read the DDK documentation (especially the Kernel-Mode Driver Architecture Design Guide and Reference manuals). Another excellent source is Programming the Microsoft Windows Driver Model, Second Edition (Microsoft Press) by Walt Oney.

    Sysinternals Tools

    Many experiments in this book use freeware tools that you can download from http://www.sysinternals.com. Mark Russinovich, coauthor of this book, wrote most of these tools. The most popular tools include Process Explorer, Filemon, and Regmon. Note that many of these utilities involve the installation and execution of kernel-mode device drivers and thus require administrator privileges.

    •  

     


     


Once connected in kernel debugging mode, you can use one of the many debugger extension commands (commands that begin with "!") to display the contents of internal data structures such as threads, processes, I/O request packets, and memory management information. Throughout this book, the relevant kernel debugger commands and output are included as they apply to each topic being discussed. In addition, the dt (display type) command can format over 400 kernel structures because the kernel symbol files for Windows 2000 Service Pack 3, Windows XP, and Windows Server 2003 contain type information that the debugger can use to format structures.

%DUMP SESSIONS--List Windows Sessions 阅读详情

相关推荐

带人工审核的工单处理(精华示例)

状态就是整个图共享的数据结构,相当于流水线上每个工人(节点)都能看到的工单信息。InputState(输入看板):工人(调用方)只能往这个看板上放“工单ID”和“问题描述”。(输出看板):最终只展示“最终答案”和“是否转人工”。(内部看板):所有节点都能读写,记录了整个流程的中间产物,比如分类、检索结果、草稿、分数、重写次数等。(私人小纸条):只在draft节点内部流转,用于记录调试信息,不对外暴露。关键设计docs字段使用了。

千里之行,始于足下 323

Windows Resource Kit 工具下载

Windows Resource Kit 工具下载                                        Active Directory Sizer (adsizer.exe) : The Active Directory Sizer 工具,可以估计在组织中部署 Active Directory 所需的硬件。 提供的估计基于组织的用户配置文件和域和站点拓扑

老夏课堂-夏曹俊的技术专栏 6115

Android系统DRM显示框架 - system_heap显示内存区域

<think>我们根据提供的内容,需要生成一个不超过150字的摘要。摘要是关于system_heap内存特性、调试以及layer buffer应用到SDE的流程。需要简洁概括关键点。可能包括:system_heap基于buddy page,无初始预留,可从buddy获取,有shrinker,用于显示;调试通过dma_buf bufinfo;layer buffer传递到SDE涉及DRM、drm_gem_prime_fd_to_handle和drm_mode_addfb2等,实现SMMU映射并写S

hello_yj的专栏 188

中断的系统内部过程

了解这个过程之后就能发现hook中断的地方可以有很多。。。 跳过中断硬件支持的部分,从系统的角度去看 Cpu从idt表中查找到routine地址,这个地址实际是保存在中断对象中 kd> !idt Dumping IDT: 37: 806e6864 hal!PicSpuriousService37 3d: 806e7e2c hal!HalpApc

Returns' Station 1848

顺序表(Sequential List)详解:从数组到 C 语言实现

顺序表是用连续存储单元依次存储数据元素的线性结构,数组则是其最常见的实现方式,两者本质相同、仅视角不同——数组关注物理存储,顺序表关注逻辑关系。顺序表支持随机访问 $O(1)$,但插入删除需移动元素,效率为 $O(n)$。本文用 C 语言静态数组完整实现了顺序表的初始化、增删改查操作,帮助初学者在不涉及指针的前提下理解其核心原理,为后续学习动态顺序表打下基础。

Guangyu536的博客 130

windows 驱动实例分析系列: HidHide驱动分析-HidHideCLI 篇(三)

`HID.cpp` 模块实现了完整的设备枚举与信息采集,这些功能与 GUI 版本共享相同的核心逻辑,但在输出格式上存在差异——CLI 版本输出 JSON,而 GUI 版本填充树形控件。

王马的博客 86

windows 驱动实例分析系列: HidHide驱动分析-HidHideClient 篇(中)

`CWhitelistDlg` 是主对话框中的应用标签页,负责管理**白名单(Whitelist)**——即允许访问隐藏设备的应用程序列表。用户可以通过"插入"按钮选择可执行文件,或直接通过拖放(Drag & Drop)将 `.exe`、`.com`、`.bin` 文件拖入列表,从而实现快速添加。该对话框同时提供"删除"按钮移除选中条目,以及"反转白名单"复选框用于切换逻辑模式。

王马的博客 455

巧用 Set 去重与复合键:高效统计分组内不重复元素的数量

本文针对列表页统计主单明细种类数的性能问题,提出批量查询+Set去重+复合键+computeIfAbsent分组的方案。通过一次IN查询获取全部明细,用字符串拼接构建复合键,利用Set自动去重统计数量,并回填结果。

2301_81920327的博客 292

java集合面试题

本文章精选java集合重要知识点,适合面试前突击使用

a051024的博客 308

从物理机到 CVM 全流程落地:部署脚本的 8 个云化改造点(附代码对比)

物理机时代,一台机器一个角色,脚本怎么写都能跑。上云之后,环境变成可复制、可扩缩、可重建的,脚本里所有"隐式依赖本机状态"的假设都会失效。我把它归纳成 8 类改造点。每一类都是真实踩过的坑,不是理论推演。上云迁移中,真正花时间的从来不是"把 IP 改掉",而是这 8 类隐式假设的显式化。每一条都对应一个生产环境里的深夜。先做 1、2、4(主机标识、制品、进程管理),这三条做完,脚本才算"能在云上跑";再做 3、5、6、7(依赖、网络、日志、时间),这些决定"跑得稳不稳";

2501_93047244的博客 187

HTML系列教程:13_HTML 列表 零基础详解

本文系统讲解了HTML中的三种列表形式:无序列表(<ul>+<li>)、有序列表(<ol>+<li>)和自定义列表(<dl>+<dt>+<dd>)。重点说明每种列表的适用场景、语法结构及使用注意事项,特别强调列表嵌套时子列表必须放在父级<li>内的规则。文章提供了大量代码示例,包括如何通过CSS去除默认列表样式、制作导航菜单等实用技巧,并对比了三种列表的特性差异,最后给出常见错误提示和综合练习建议。

zhanghaha1314的博客 397

Mybatis的多表操作问题

Q1 :一对一表关系之中哪个属性封装到<ResultMap>中?哪一个封装到<association>当中?Q2:一对多表关系之中哪个属性封装到<ResultMap>中?哪一个封装到<collection>当中?A:主要看谁包含谁,例如:一个用户 (User) 持有一张身份证 (IdCard)所以把OrderList封装进collection中。一个用户名下的所有订单。

m0_57532232的博客 193

Linux 驱动模型基础完整篇:从bus/device/driver 到match/probe 绑定排障

Linux 驱动模型基础完整篇:从 bus/device/driver 到 match/probe 绑定排障 写对了却始终不进 、 里能看见设备却没有驱动、或者 返回 后就「失踪」——根因几乎总在 **驱动模型三元组(bus / device / driver)的注册与匹配**,而不是业务代码第一行。 Linux 把「有什么设备」和「谁来驱动」解耦:设备挂到总线上,驱动向总线注册,总线的 成功后再走 。platform、I2C、PCI、USB 都是这套模型的特化。本文从核心对象、注册调用链、延迟 probe

qq_35223473的博客 264

Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter8-子窗口控件

工具栏具有简单、直接、美观的特点,但是如果菜单项比较多,想要全部显示可能会占据大量的空间。为此可以在调用CreateWindowEx函数创建工具栏时指定CCS_ADJUSTABLE样式启用工具栏的自定义功能,用户可以自由排列工具栏按钮,或者仅选择显示用户感兴趣的按钮。在指定CCS_ADJUSTABLE样式后,用户可以将按钮拖动到新位置或通过将其拖离工具栏来删除按钮(按住Shift键)。此外,当用户双击工具栏的时候,会弹出一个自定义工具栏对话框,如原书的图8.23所示。

江湖人称菠萝包 405

Linux 守护进程与服务完整篇:从daemonize、systemd 到pidfile 与排障

Linux 守护进程与服务完整篇:从 daemonize、systemd 到 pidfile 与排障 手写 后台程序一重启就没了、用 挂起却仍占着终端、或 systemd 单元 却立刻退出——问题通常在 **会话/控制终端、文件描述符、工作目录与监督模型**,而不是业务循环本身。 传统 Unix 用「双重 fork + setsid」把进程从终端剥离;现代发行版则把长期服务交给 **systemd(或同等 init)** 监督:崩溃拉起、依赖排序、日志进 journal。本文覆盖经典 daemonize、为

qq_35223473的博客 241

Kali 字典攻击|口令爆破与目录爆破实战笔记

字典攻击属于优化版穷举攻击,不盲目暴力遍历所有字符,使用高频口令字典逐条尝试验证。✅字典攻击三要素目标接口:SSH、FTP、RDP、Web登录表单、数据库等接受账号密码校验的服务字典文件:纯文本,一行一条用户名/密码候选判定依据:响应状态码、页面关键字、响应长度、响应时间💡成功率取决于:字典质量 + 目标防护策略(限流、账号锁定、验证码)。

若谷的博客 386

Android 控件 - ListAdapter

Android 控件 - ListAdapter

weixin_52173250的博客 471

MyBatis 与 SQL 层面关键技术详解

<think>我们根据用户提供的内容生成摘要,要求≤150字。内容是关于MyBatis动态SQL、安全、分页、子查询、JOIN、大表优化和索引等。摘要需要概括关键技术点。注意字数。可能这样写:本文详解MyBatis动态SQL(if/foreach/where/sql片段)、#{}与${}安全区别、PageHelper物理分页及count陷阱、子查询形态、JOIN行膨胀处理,并提出大表取末次记录的应用层二次查询优化,强调索引与SQL性能关键。字数检查约80字,符合要求。</think>本文详解MyBatis

BADAO_LIUMANG_QIZHI的博客 268

Chat2Excel 文件服务模块剩余功能开发

本文实现文件管理核心功能:通过分页查询、下载、预览、信息获取、一键复原及删除等接口,支持多条件筛选与权限校验。基于MyBatis-Plus与OSS,结合JWT鉴权与数据库映射表,完成文件元数据管理、Excel内容解析与数据回滚。服务层采用面向接口编程,保障扩展性与稳定性,实现高效、安全的文件全生命周期管理。

tryxr的博客 203
上一篇: 出租司机给我上的MBA课
下一篇: Driver Samples, Techniques, Papers
iiprogram
博客等级 码龄25年 1066粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值