IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:windows

共 39 篇相关文章

IT 累计浏览 2,634

Windows 下重定向当前进程的 stdout 到网络连接

这篇讲的是在 Windows 系统下,如何将一个正在运行的进程的标准输出(stdout)重定向到一个 TCP 网络连接中。这并非一个简单的 API 调用,作者为了解决这个需求,深入探索了 Windows 与 POSIX 在底层 I/O 机制上的根本差异。 作者指出,尽管 Windows 提供了 `_dup2` 来模拟 POSIX 的 `dup2`,但其进程标准输出句柄(HANDLE)与 C 运行时的文件描述符(fd)之间的绑定关系是静态的。在进程运行时调用 `SetStdHandle` 并无法影响 `cout` 或 `printf` 的输出流,这是解决问题的第一个关键障碍。 更麻烦的是,Windows 下的 socket 不能直接作为普通的文件句柄使用,因此无法通过 `dup2` 直接传递。作者最终采用的核心方案是:先用 `dup2` 将 stdout 重定向到一个匿名管道,然后启动一个独立的转发线程,持续从该管道读取数据并发送到目标网络连接中。这个方案还巧妙地解决了进程结束时可能丢失末尾输出的问题——通过主动关闭管道来通知转发线程结束,确保数据完整性。 整个探索过程涉及了 Windows 内核对象、句柄复制、管道 I/O 与多线程同步等多个层面的考量,最终作者将实现封装成了一个 Lua 模块,并在 GitHub 上提供了可运行的示例代码。

IT 累计浏览 3,067

为什么 Windows 的文件系统会有盘符,使用反斜杠分割路径

这篇技术博客从一个轻松的讨论切入——Windows系统在挂载大量盘符后会出现双字母命名的“诡异”现象,进而探讨其背后的设计逻辑。作者指出,虽然从现代视角看,盘符和反斜杠似乎是冗余的历史包袱,但其根源深植于MS-DOS的早期发展。 文章追溯到MS-DOS 1.0时代,当时主流软盘没有层级目录。盘符(A:、B:)的设计直接借鉴了更早的CP/M系统,方便用户在两个软盘驱动器间操作。随着IBM PC/XT引入10MB硬盘,盘符扩展到了C:。而路径分隔符选用反斜杠“\”而非Unix的“/”,是因为MS-DOS的开发者继承了DEC系统使用“/”作为命令行参数分隔符的惯例,为避免混淆,只能选择其他符号作为目录分隔符。 作者通过这段历史对比了Windows与Unix系系统的设计哲学:Unix将物理存储通过挂载点透明地整合进统一文件树,而Windows保留了显式的盘符概念。这些早期设计决策,最终形成了我们今天看到的、让不少程序员感到“深恶痛绝”的Windows路径风格。

IT 累计浏览 2,719

浅析Windows的访问权限检查机制

这篇深入剖析了Windows操作系统中访问权限检查的核心模型。作者从被保护的“对象”与发起访问的“主体”(进程/线程及其令牌)出发,清晰地勾勒出权限检查的基本逻辑:用主体的有效令牌去匹配客体的安全描述符。 文章揭示了访问权限检查是一个多维度、层层递进的体系。其中,对DACL(自主访问控制表)的检查是基石,文章特别指出DACL中访问控制项(ACE)的顺序至关重要——一个显式拒绝的条目如果排在显式允许条目之后,其效力将被完全覆盖。通过API添加ACE不受顺序限制,但通过GUI操作时,系统为确保拒绝策略的有效性,会固定将拒绝条目置于允许条目之前。 除了DACL,检查还涉及特权(如SeDebugPrivilege)、完整性级别(IL)、受限令牌以及从Win8引入的AppContainer能力检查等多个维度,这些机制共同构建了Windows的安全沙箱。文章最后展示了TOKEN结构体的具体字段,让读者得以窥见权限检查背后最核心的数据结构。整篇文章从抽象模型到具体实现,展现了Windows安全机制随时代演进的完整脉络。

IT 累计浏览 3,734

更改 Windows 10 命令行字体

这篇讲的是中文版 Windows 10 命令行一个让人头疼的细节:默认的“新宋体”字体,会把数字 1 和小写字母 l 显示得几乎一模一样,对于经常使用命令行的开发者来说,这简直是辨认灾难。 文章直接给出了两个具体的解决办法。最简单的是在命令行输入 `chcp 437`,将代码页从中文的 936 切换到英文的 437,之后就能在属性里选择像“Consolas”这样区分度更高的字体。不过作者也指出了后续问题——切换后中文会显示不全,因此需要再通过 `chcp 936` 切换回来。 如果希望尝试更多字体,文章还进阶介绍了注册表方法:在指定的注册表路径下新增字体键值,从而让系统命令行支持自选的等宽字体。作者最后小小吐槽了一下微软不直接提供字体选择功能,倒是说出了不少人的心声。

IT 累计浏览 3,673

如何写简历

这篇讲的是一位技术招聘者看了200多份简历后,从“收件人视角”总结的简历优化指南。 作者从日常招聘中遇到的实际问题切入:比如HR需要快速分发简历给不同岗位的面试官,而很多应聘者连简历文件名都只写“个人简历”。他建议将命名规范化为【姓名-应聘岗位-城市】,这一个小动作就能大幅提升协作效率。对于加分项,作者提到附上活跃的GitHub或博客链接是很好的补充,但长期不更新的反会减分;项目经验则强调与岗位要求直接挂钩,并尽量提供可在线访问的URL,避免让面试官花费额外精力去搜索验证。 文章最后点出核心:简历的本质是换位思考。用通用的PDF格式、为在线作品提供便捷入口、保持稳定的职业经历,这些细节都在为阅读者降低信息获取成本。当一份简历让招聘方觉得“舒服”,offer的可能性就大大增加了。

IT 累计浏览 1,874

怎么清除Windows远程桌面连接的历史记录

这篇讲的是如何彻底清除Windows系统中远程桌面的连接历史记录。问题的根源在于,系统为了方便会记住我们连接过的主机IP和端口,这些信息其实都存储在注册表的特定路径下。对于注重隐私的用户来说,这可能会带来不必要的顾虑。 作者提供了一个清晰直接的解决方法:通过“运行”打开注册表编辑器,导航至“HKEY_CURRENT_USER/Software/Microsoft/Terminal Server Client/Default”这个分支。在这个位置下,所有用过的连接记录都会以MRU0、MRU1这样的字符串值形式存在,它们对应的数值就是具体的地址和端口。只需将这些条目全部删除,下次打开远程桌面连接时,那个历史下拉列表就会变得干干净净。 文章不仅说清了操作路径,还贴心地附上了每一步的截图指引,让不熟悉注册表操作的用户也能跟着做,避免误删其他关键数据。对于那些需要管理多台远程服务器、又想保持连接列表清爽的运维人员或IT管理者来说,这是一个实用且有效的清理技巧。

IT 累计浏览 2,138

教你如何在Windiws平台上创建以点(.)开头的文件名

Windows系统有个小脾气:当你想创建像.gitignore这样以点开头的配置文件时,如果直接输入文件名,系统会弹出“文件名不能以点开头”的错误提示。这给需要管理隐藏配置文件的开发者带来了困扰。 这篇教程分享了一个非常巧妙的解决方法:在命名时,在期望的文件名(例如.gitignore)末尾**再添加一个点**,将其输入为“.gitignore.”。这样,文件就能成功创建,并且系统会自动识别并保留真正的“.gitignore”这个文件名。这个技巧利用了Windows文件命名规则中的一个小盲区,虽然简单,却有效解决了实际问题。 需要注意的是,这个方法在Windows资源管理器中操作有效,但更适合需要看到文件扩展名的程序员用户。对于普通用户,通常可以通过命令行或其他方式达到目的。这个小技巧体现了在技术实践中,有时绕过表面限制、理解系统底层行为,能找到意想不到的简便解法。

IT 累计浏览 3,601

文本与二进制方式打开文件的区别

这篇讲的是编程中一个容易被忽略却至关重要的细节:以文本方式和二进制方式打开文件究竟有何不同。 文章首先点明,在Windows系统下,这种差异直接体现在对换行符的处理上——文本模式会默默进行“/n”与“/r/n”的相互转换,而二进制模式则原样读写。在Unix/Linux下,两者则没有区别。作者进一步深入到底层,解释了差异的根源:文本文件是基于字符编码(如ASCII),而二进制文件是基于值的自定义编码。这也决定了文本文件通常有更好的通用可读性(记事本就能打开),而二进制文件则更节省空间且灵活。 文章通过一个生动的例子说明,用记事本打开一个二进制文件(比如包含数字1的二进制表示),会因为解码方式不匹配而显示乱码。而在C语言编程层面,核心区别也仅仅在于换行符的转换,当数据不包含换行符时,两种模式的读写结果其实是一样的。最后,通过展示数字“5678”在两种模式下截然不同的存储形式(ASCII码占四字节,二进制仅占两字节),直观地揭示了它们的空间效率差异。理解这点,能帮助开发者在处理配置文件、日志或跨平台数据交换时,做出更合适的选择。

IT 累计浏览 4,490

编程珠玑番外篇之番外篇-N 答 UNIX 痛恨者王垠

这篇讨论 UNIX 与 Windows 设计哲学之争的文章,从王垠批评 UNIX 的观点出发,深入剖析了两者的核心差异。作者指出,UNIX 的图形系统(如 X Window)与操作系统内核的松耦合,反而为针对不同设备(如移动平台)定制高效 GUI 提供了灵活性,而微软 NT 内核与 UI 的深度绑定,则导致其在跨平台时面临复杂的兼顾问题,迭代缓慢。 文章进一步探讨了工具设计的复杂性根源。以 TeX 为例,作者认为其“复杂”源于要解决排版领域本身的精确控制问题,而非设计失败。这揭示了一个重要观点:工具设计的简单或复杂,应取决于其要封装的“领域模型”的固有难度,而非简单地追求操作极简。将 Unix 工具比作“魔鬼棋”的类比,可能忽略了这一层因果关系。 最后,作者提出了一个有趣的角度:真正的 Unix 用户恰恰是其“痛恨者”,因为深刻理解其缺陷是高效使用它的前提。这种基于开放环境竞争、不断吸收优秀设计的演进模式,而非某种“宗教”,才是 Unix 家族最终胜出的关键。

IT 累计浏览 2,020

如何在XP下查看系统开机时间及系统运行时长

这篇讲的是如何在Windows XP下快速查看系统启动时间,解决上班族对是否“早退”的小纠结。作者从三个实用角度出发,介绍了无需登录考勤系统就能自查的方法。 最简单的是在命令行运行`systeminfo`,系统摘要里直接显示启动时间。如果该命令不可用,`net statistics WORKSTATION`的第一行同样能提供准确的统计时间。对于需要更详细记录的用户,微软的`Uptime`工具可以生成完整的系统开关机日志。 文章也客观对比了各方法的差异。`systeminfo`和`net statistics`是系统自带、方便快捷;`Uptime`功能更强,但依赖于Event Log服务,其准确性受服务状态和系统权限影响。此外,文章还贴心地补充了`systeminfo`命令缺失时的修复步骤,比如检查系统路径或从别处拷贝,确保方法真正可用。对于仍在使用XP的用户,这些命令行技巧是高效掌握系统状态的便捷途径。

IT 累计浏览 1,576

Windows tasklist命令使用说明

这篇讲的是Windows中一个强大但常被忽视的命令行工具——tasklist。 它解决了在图形化任务管理器中无法直接查看进程关联服务的痛点。文章系统梳理了tasklist的多种用法,从基础的本机进程列表,到通过特定参数(如/s、/u、/p)查看远程系统进程,实用性很强。 特别值得注意的是,它用/svc参数可以直接显示每个进程(尤其是像svchost.exe这样承载多项服务的进程)所对应的具体服务,这对于排查系统问题非常有帮助。此外,文章还演示了如何调用指定DLL模块的进程、使用筛选器精确查找特定状态进程(例如正在运行的非SYSTEM进程),以及输出为表格、列表或CSV格式以便进一步分析。 最后,文章自然地带出了它的“孪生兄弟”taskkill,形成了一个“查找-终止”的完整操作闭环,让读者不仅知道如何看,还知道下一步如何处理进程。

IT 累计浏览 1,859

获取文件大小之前最好先读一下这个文件

这篇讲的是一个在Windows开发中容易被忽略的陷阱:使用`stat`函数获取的文件大小可能不可靠。 作者从一个具体场景出发,指出了问题所在——有时通过`stat`得到的文件大小,会与资源管理器中显示的大小或实际读取的大小存在差异。这往往会导致后续的文件读取、内存分配或网络传输逻辑出现错误。文章深入分析了根源,通常与文件系统的缓存、写入后未及时同步或某些特定文件系统的特性有关,使得元数据中的大小信息并非实时准确。 针对这个问题,作者没有停留在发现问题,而是给出了经过验证的解决方案:在依赖文件大小信息前,不妨先实际读取一下文件(哪怕只读取一部分)。这种方法虽然增加了一次I/O操作,却能确保你获得的大小信息与后续操作的真实数据完全一致,从而避免因元数据不准而引发的难以排查的bug。文章最后强调,对于需要精确文件信息的场景,这种“以读取为准”的策略是更稳健的做法。

IT 累计浏览 1,462

在Windows 2003系统上安装配置exif 扩展

这篇讲的是在老旧的Windows 2003系统上,为满足一个特定程序的需求,如何从零开始安装和配置PHP的exif扩展。作者的出发点很实际:程序运行缺了这个扩展不行。文章详细记录了整个过程,特别是针对老系统可能遇到的典型坑点,比如特定版本的兼容性问题、依赖组件(如gd库)的预装、以及php.ini配置文件中那些容易被忽略的细节。文章不仅给出了可行的配置步骤,还隐含了在维护遗留系统时,如何通过精确的版本控制和配置来解决现代软件依赖的经验。对于需要在类似老旧环境中进行部署或维护的工程师来说,其中关于版本选择和故障排查的思路,能提供一份具体的参考。

IT 累计浏览 1,752

使用cwRsync实现windows下文件定时同步(备份)

这篇讲的是如何在Windows环境下搭建一套自动化的文件同步与备份方案。作者从Windows用户常见的痛点出发——系统自带的工具不够灵活,而企业或个人又常有定时备份关键文件的需求。 文章的核心方案是利用cwRsync这个开源工具。它本质上是Rsync在Windows上的移植版本,保留了Rsync高效、增量同步的强大特性。作者并没有停留在理论,而是给出了非常具体的实施路径:从下载服务端和客户端软件开始,手把手演示如何配置同步规则,并最终通过Windows任务计划程序来设置定时任务,实现完全自动化的运行。 整个流程的巧妙之处在于,用轻量级的工具组合解决了重量级的问题。最终效果是,你只需一次设置,就能让指定文件夹按照设定的时间周期,在本地不同目录或局域网内的另一台电脑间自动同步,形成一份可靠的备份。这对于需要保护重要数据、又不想依赖复杂商业软件的用户来说,提供了一个直接可用的技术蓝图。

IT 累计浏览 5,245

为什么国内还有那么多网站使用.NET架构?

这篇讲的是一个有趣的技术选型现象:在Node.js、Go、Java等技术席卷互联网的今天,为什么国内仍有不少知名网站选择坚守.NET架构?文章从具体案例切入,列举了包括电商、金融等领域在内的一批大型站点,并分析了它们共同的技术背景与历史沿革。 作者并未停留在表面的列举,而是深入探讨了几个核心原因:.NET框架本身成熟的工程化能力、与Windows生态深度集成的历史红利、以及Visual Studio等工具链带来的极高开发效率。文章特别指出,随着.NET Core的跨平台演进,一些团队开始利用其高性能特性重构关键服务,形成了一种“前端多技术栈、后端.NET核心化”的混合架构模式。 对比其他技术路线,作者认为.NET在国内的持续存在,既是技术路径依赖的体现,也反映了特定业务场景下对稳定性和开发效率的务实选择。对于正在做技术选型的团队来说,这篇文章提供的视角不是盲目追随潮流,而是从团队基因与业务需求出发进行冷静评估。

IT 累计浏览 4,668

nodejs教程:配置nodejs.exe的windows目录结构

这篇讲的是如何在Windows环境下直接配置nodejs.exe来搭建开发环境。作者从很多开发者觉得Cygwin配置不爽的实际痛点出发,提出了一种更简单的替代方案:直接使用官方nodejs.exe配合GitHub管理插件。 文章具体介绍了两个关键步骤。首先是PATH配置,作者提供了两种方法:把exe复制到Windows系统文件夹,或者在环境变量中手动添加路径。其次是插件管理,由于当时npm在Windows下不支持,作者推荐通过GitHub客户端下载插件,统一存放在node_modules文件夹中,并在代码中通过require直接引用。 整个方案思路清晰,操作步骤具体。作者还附上了自己的目录结构截图作为参考。对于早期在Windows上折腾Node.js的开发者来说,这种避开复杂环境依赖的“土办法”反而显得直接有效,尤其适合想快速跑起服务但不想被环境问题困扰的场景。

IT 累计浏览 2,616

如何在windows下用bat脚本定时备份mysql

这篇讲的是如何在Windows环境下,用一个简单的bat脚本来实现MySQL数据库的定时自动备份。作者从日常运维的需求出发,提供了一套可直接落地的脚本方案。 脚本的核心思路清晰:首先跳转到指定备份目录,通过变量设定带有日期的备份文件名和日志文件名。执行备份时,调用`mysqldump`命令,并用`--single-transaction`确保备份过程的一致性。备份完成后,脚本会自动调用WinRAR命令行工具将.sql文件压缩成.rar包,并删除原始的SQL文件,最后将操作时间记录到日志中。 这套方案虽短,但涵盖了路径管理、日志记录、文件压缩和清理这些备份脚本必备的要素。对于需要在Windows服务器上维护MySQL备份,又未使用复杂调度工具的用户来说,这个脚本提供了一个简单有效的自动化起点。

IT 累计浏览 5,054

Git安装使用手记

这篇讲的是作者在 Windows 环境下从零开始安装配置 Git 的完整实践记录。文章没有停留在基础的下载安装步骤,而是重点分享了几个新手容易栽跟头的“坑”。比如,安装后执行 `git` 命令提示“不是内部或外部命令”,作者指出这是由于环境变量 PATH 未正确配置,并详细演示了如何手动添加 `Git\cmd` 路径来解决。对于初次接触版本控制的开发者,文章还澄清了关于 SSH 密钥的常见疑惑,解释了在只有个人项目的场景下,并非必须配置 SSH,使用 HTTPS 方式克隆同样方便。 在实际使用部分,作者着重对比了 `git add .` 与 `git add *` 的区别,通过一个具体案例说明后者可能意外将不想要的文件(如 `debug.log`)加入暂存区,强调了明确指定文件的重要性。文章还介绍了如何设置用户信息、配置别名以简化常用命令(例如 `git st` 代表 `git status`),这些细节能有效提升日常工作效率。整体来看,这更像是一篇为 Windows 用户量身定制的 Git 避坑指南,把安装配置和初期使用中可能遇到的典型问题都梳理了一遍,对刚上手 Git 的开发者来说,能避免不少无谓的挫折。

IT 累计浏览 2,677

设计者更喜欢什么操作系统

这篇文章从网页设计领域二十年来的文化变迁出发,探讨了一个让许多从业者都感到好奇的具体问题:在每天打交道的设计工具背后,设计群体究竟更青睐哪种操作系统? 文章的核心并非简单罗列市场份额,而是深入分析了设计思维与操作系统特质之间的契合度。它指出,苹果的 macOS 长期以来凭借其稳定的色彩管理、直观的界面以及与创意软件(如Sketch、Figma)生态的深度整合,被视为设计领域的“默认选择”。然而,随着网页技术栈的多元化,Windows 平台凭借其硬件的可定制性、对各类插件和开发工具更开放的兼容性,也赢得了不少注重全流程工作或偏爱自定义环境的设计师。更进一步,文章甚至触及了 Linux 在极客型设计师中的小众但坚定的拥护者群体,他们看重的是其极致的控制力和免费开源的软件环境。 作者并没有给出一个绝对的答案,而是引导读者去思考:操作系统的“偏好”背后,实际上是工作流、软件生态和成本考量等多重因素的综合结果。对于正处在技术选型阶段的团队或个人而言,这种基于设计工作特质的横向对比,比单纯的性能参数更有参考价值。

IT 累计浏览 3,995

windows下使用vim(gvim)的不便及解决方案(1)-文件查找和软链接

这篇讲的是跨平台Vim用户在Windows环境下容易遇到的典型痛点。作者从日常使用场景出发,具体描述了在Windows中使用GVim时,文件查找功能受限、软链接操作不友好两大实际问题。文章剖析了这些不便的根源:Windows原生文件系统和命令行环境与Linux存在差异,导致部分依赖Linux特性的Vim插件或脚本无法无缝运行。 针对文件查找,文章对比了Windows下几种不同的查找方案,并给出了针对Vim优化的配置思路。对于软链接问题,则介绍了在Windows环境下创建和管理符号链接的替代方法,以及如何调整Vim配置来更好支持。文中提供的解决方案都紧扣Windows系统特性,具有很强的实操性。对于习惯在Windows上使用Vim办公的开发者来说,这些来自一线经验的总结能直接提升工作效率。