高效码农

撰写、分享国内外先进的IT技术

高效码农 发布的文章

November 27, 2023

IPC - Unix 域套接字

在上一篇文章中,我们讨论了命名管道机制来实现进程间通信。本文将介绍另一种称为 Unix 域套接字的内容。套接字是 Unix 网络的抽象。当我们想到网络时,我们会想到沟通。构成互联网的工具主要涉及创建和维护计算机之间的通信管道。我们的操作系统提供了其中一些工具。既然这些都是通信工具,那么如果我们可以使用操作系统提供的一些高质量且可靠的工具来使进程能够相互聊天呢?好消息!事实证明它确实存在,这就...
November 26, 2023

IPC-命名管道

在上一篇文章中,我们介绍了进程间通信及其不同的机制。我们将从第一个命名管道或 FIFO 文件开始!命名管道是一种建立在匿名管道结构之上的机制。您的常规 Unix 管道实际上是匿名管道。要了解命名管道,我们需要了解匿名管道。匿名管道匿名管道是由内核创建和维护的内存缓冲区。该缓冲区有两个文件描述符用于引用它,一个用于读取,另一个用于写入。read您可以使用带有write适当描述符的系统调用来读取...
November 25, 2023

宝塔 nginx必须使用域名访问

网站域名和IP可以同时访问会影响网站的SEO权重,所以会在设置Nginx不允许IP访问;而且IP访问也会增加网站的风险在第一个加载的server区域内添加如下配置代码:if ( $host !~ 'xugj520.cn' ){ rewrite ^(/.*)$ https://www.xugj520.cn permanent; }
November 25, 2023

IPC-消息队列

消息队列有两种类型的消息队列 - System V 和 POSIX。它们之间有很多相似之处,也有细微的差别。本文重点介绍 System V,因为它是受更广泛支持的类型。简单来说,消息队列是消息的链接列表。操作系统可以维护多个已发送消息的列表,每个列表都由唯一的整数标识符引用。消息通过附加到列表来发送,并通过从列表头部弹出来接收。该列表由操作系统内核管理并存储在内存中。列表的内存存储允许异步通...
November 24, 2023

PHP 8.3

已发布!PHP 8.3 是 PHP 语言的主版本更新。它包含了许多新功能, 它包含了许多新功能,例如:类常量显式类型、只读属性深拷贝,以及对随机性功能的补充。一如既往,它还包括性能改进、错误修复和常规清理等。类型化类常量 RFCPHP < 8.3interface I { // We may naively assume that the PHP constant is alwa...
November 24, 2023

IPC - 简介

您是否想过两个进程如何在一台设备中进行通信?我猜您想到了使用文件 I/O API 的文件[1],是的,这可以工作,但是在将数据写入受监视文件时发出警报会涉及一定程度的复杂性。您也可以想到网络,这也是可行的。但这将涉及选择端口和设置所有网络恶作剧。所以我们消除了文件 I/O 和网络。我们还能如何让两个进程进行通信呢?在讨论“如何”之前,我们先来谈谈“什么”。两个进程通信意味着什么?这叫什么?这...
November 14, 2023

HarmonyOS开发:DevEco Studio通义灵码安装教程

步骤1已安装 DevEco Studio 的情况下:DevEco Studio 菜单下点击 Preferences -》Plugins下载离线包安装1、下载 DevEco Studio 的 zip 安装包;点击下载离线安装包2点击导航-插件,点击设置图标,下拉菜单中单击从本地安装插件, 选择下载的 zip 文件后安装。步骤3重启 DevEco Studio,重启成功后登录阿里云账号,即刻...
November 10, 2023

spring bot 集成 weblogic的客户端 对接JMS

使用场景客户现有weblogic jms 队列服务,需要我们编程对接。开发框架为spring bot maven报错信息:javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.Cla...
October 20, 2023

Python pandas 使用技巧

一、 pd.to_datetime 格式化日期报错:ValueError: time data "2023-10-14T18:44:36-07:00" doesn't match format "%Y-%m-%d %H:%M:%S", at position 0. You might want to try: - passing `format...
September 8, 2023

第五章:计算机中的翻译器

到目前为止,每次我谈到阅读和写作记忆时都有点空洞。例如,ELF 文件指定要加载数据的特定内存地址,那么为什么不同进程尝试使用冲突内存时不会出现问题呢?为什么每个进程似乎都有不同的内存环境?另外,我们到底是怎么到这里的?我们知道这execve是一个用新程序替换当前进程的系统调用,但这并不能解释如何启动多个进程。它绝对没有解释第一个程序是如何运行的——哪只鸡(进程)产下(产卵)所有其他鸡蛋(其他...
September 3, 2023

第四章:ELF

我们现在已经非常了解了execve。在大多数路径的末尾,内核将到达包含要启动的机器代码的最终程序。通常,在实际跳转到代码之前需要一个设置过程 - 例如,程序的不同部分必须加载到内存中的正确位置。每个程序需要不同数量的内存来处理不同的事情,因此我们有标准文件格式来指定如何设置要执行的程序。虽然 Linux 支持许多此类格式,但迄今为止最常见的格式是ELF(可执行和可链接格式)。记号笔在纸上画画...
September 2, 2023

第三章:程序运行

到目前为止,我们已经介绍了 CPU 如何执行从可执行文件加载的机器代码、什么是基于环的安全性以及系统调用如何工作。在本节中,我们将深入了解 Linux 内核,首先了解程序是如何加载和运行的。我们将专门研究 x86-64 上的 Linux。为什么?Linux 是一款功能齐全的生产操作系统,适用于桌面、移动和服务器用例。Linux 是开源的,因此只需阅读其源代码就可以非常容易地进行研究。我将在本...
September 1, 2023

第二章:多任务处理

假设您正在构建一个操作系统,并且希望用户能够同时运行多个程序。不过,您没有精美的多核处理器,因此您的 CPU 一次只能运行一条指令!幸运的是,您是一位非常聪明的操作系统开发人员。您发现可以通过让进程轮流使用 CPU 来伪造并行性。如果您循环遍历这些进程并运行每个进程中的几条指令,那么它们都可以响应,而不会出现任何单个进程占用 CPU 的情况。但是如何从程序代码中夺回控制权来切换进程呢?经过一...
August 31, 2023

第一章:基础知识

在撰写本文时,让我一次又一次感到惊讶的一件事是计算机是多么简单。我仍然很难不让自己感到兴奋,期待比实际存在的更复杂或抽象!如果在继续之前你应该记住一件事,那就是一切看似简单的事情实际上就是那么简单。这种简单性非常美丽,但有时又非常非常令人讨厌。让我们从计算机的核心工作原理开始。计算机是如何设计的计算机的中央处理单元(CPU)负责所有计算。这是大奶酪。沙赞阿拉卡布拉姆。当你启动计算机时,它就会...