自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bobowen的博客

请君加油!

  • 博客(254)
  • 收藏
  • 关注

原创 【Go】通道:缓冲通道和非缓冲通道

非缓冲通道是Go语言中一种实现goroutine间同步通信的强大机制。通过确保每个发送操作都必须有一个对应的接收操作同时准备好,非缓冲通道可以精确控制数据的即时传递和goroutine的执行顺序。这种通道不仅是数据传输的渠道,也是协调并发操作的关键工具。通过非缓冲通道,Go程序能够以直接且同步的方式处理并发任务,从而保持高效和可靠的执行流程。简而言之,非缓冲通道是Go并发编程中不可或缺的同步神器缓冲通道在Go语言中是一种允许在没有接收方准备好时进行数据传输的通信机制。

2024-04-16 00:25:19 593

原创 【Go】 编码解码基础,encoding标准库:base64、binrary、json、xml、gob、hex、pem、csv

在 Go 语言中,通过encodingASN.1:适用于处理复杂的数据结构,常用于安全和网络协议中。Base64:用于在文本中表示二进制数据,广泛用于数据编解码。Binary:直接以二进制形式读写固定大小的数据,用于低层数据操作。JSON:处理现代网络通信中普遍使用的数据格式,易于数据交换。XML:用于标记化的数据表示,常见于配置文件和网络服务。CSV:用于读写简单的表格数据,广泛应用于数据导入导出。GOB:Go 特有的二进制格式,优化了同语言间的数据结构传输。HEX。

2024-04-16 00:10:17 727

原创 【Go】原子并发操作

Go语言中,原子并发操作是非常常用的,确保协程环境中对资源的共访是安全的。Go的包提供了一系列底层的原子性操作函数,允许你在基本数据类型上执行无锁的线程安全操作。使用原子操作可以避免在并发访问时使用互斥锁(mutexes),从而在某些情况下提高性能。

2024-04-15 22:07:07 746

原创 【Go语言】go语言简单的变量声明和结构体使用

go基础

2024-04-12 00:32:14 1021

原创 windows C++ 进程遍历、线程遍历模板。后附模板代码

进程遍历是windows软件必备需求,从安装到软件运行再到卸载我们或许都需要知道其他进程的信息。

2024-04-02 23:52:43 1020

原创 银河麒麟安装回退至GCC5.4.0 添加镜像源地址并设置其优先级。问题已解决

问题:因为软件依赖低版本的gcc,而新版银河麒麟gcc默认时高版本,考虑到软件适配应该考虑最低版本的麒麟系统,需要将gcc降级。过程中遇到问题,无法直接找到gcc5.4.0。

2024-03-30 16:39:21 271

原创 Windows C++:控制新进程的创建方式

///这些宏定义(值)是用于Windows操作系统中函数的标志,它们控制新进程的创建方式。(0x00000001):指示新进程被创建为调试进程,调用进程成为调试器。(0x00000002):仅调试创建的进程,不调试子进程。(0x00000004):新进程被创建后初始处于挂起状态,直到被调用。(0x00000008):新进程没有绑定到父进程的控制台上。(0x00000010):为新进程创建一个新的控制台窗口。(0x00000020):指定进程具有正常优先级。

2024-03-04 23:31:42 914

原创 Windows C++ SecurityImpersonation级别:线程临时采用另一个用户(客户端)的身份进行操作的能力

是 Windows 操作系统中安全模型的一个级别,用于描述一个线程临时采用另一个用户(客户端)的身份进行操作的能力。级别模拟时,服务或进程可以执行文件操作、访问数据库等,就像是在操作用户自己的数据一样,但不具备更高权限的操作能力。这些API使得在需要的时候可以切换到另一个用户的身份,完成特定任务后再恢复到原来的身份,从而保持了操作的安全性和有效性。:最高的模拟级别,允许服务器以客户端的身份在任何机器上执行操作。这个例子展示了用户模拟的基本模式,但在实际应用中,根据具体需求,可能还需要进一步的调整和完善。

2024-03-04 23:21:37 395

原创 Windows C++:深入理解Windows API:用户身份验证、访问令牌获取和权限管理

是 Windows API 中的一个函数,它允许程序以另一个用户的身份创建一个新进程。这通常用于服务或进程需要以不同于启动该服务或进程的用户的权限执行任务时。使用可以实现高级的权限管理和安全性,特别是在需要精细控制进程权限的情况下。验证用户身份:使用LogonUser函数验证远程用户的凭证。获取用户令牌:验证成功后,LogonUser会返回一个令牌,该令牌代表了用户的身份。创建新进程:使用函数以获取的用户令牌创建新进程,该进程将以指定用户的身份运行。// 用户凭证。

2024-03-04 23:13:03 951

原创 问题解决:各版本的vc_redist下载地址 缺少msvcr100.dll、msvcr120.dll、msvcr140.dll

Visual C++ Redistributable for Visual Studio各版本的官方链接

2024-03-04 22:51:38 944

原创 C++面试 -云原生-架构能力:云原生简单介绍

云原生(Cloud Native)是一种构建和运行应用程序的方法,旨在充分利用云计算框架的弹性、可扩展性和敏捷性。它侧重于如何最大化在云环境中的效能,而不仅仅是将传统应用迁移到云上。云原生技术允许开发者构建和部署应用程序的方式,能够在公有云、私有云和混合云等多种环境中灵活运行。

2024-02-29 00:34:18 1772 1

原创 C++面试 -分布式架构-架构能力:剩余内容

分布式Trace允许开发者追踪一个请求通过系统中各个微服务的完整路径,帮助定位延迟的根源和潜在的性能瓶颈。负载均衡是分布式系统中分配网络或应用程序流量的技术,通过将入站流量平均分配到多个服务器上,它可以提高网站、应用程序和数据库的可用性和性能。负载均衡器可以基于不同的策略(如轮询、最少连接数、源IP哈希等)来分配请求,从而避免任何单一点的过载,确保系统的高可用性和伸缩性。:API网关是面向微服务架构的入口点,它负责请求路由、组合和协议转换,以提供更加优化的客户端到各个微服务的通信。

2024-02-29 00:13:20 445

原创 C++面试 -分布式架构-架构能力:主流rpc框架

微服务架构中,RPC(Remote Procedure Call)框架扮演着至关重要的角色,它允许服务间进行高效、轻量级的通信。在面试中,了解一些主流的微服务RPC框架可以帮助你更好地展示你的技术背景和项目经验。面试时,除了简单介绍这些框架外,如果你有实际使用这些框架的经验,那么讨论你在项目中如何使用它们,以及使用中遇到的挑战和解决方案会更加有帮助。此外,对于每个框架的选择和性能优化也是面试中可能探讨的主题。

2024-02-29 00:08:03 564

原创 C++面试 -分布式架构-架构能力:一致性算法

一致性算法在分布式系统中扮演着至关重要的角色,主要用于确保系统中的多个副本之间能够达到一致的状态。在分布式计算环境中,由于网络延迟、分区、节点故障等问题,维持数据的一致性是一个挑战。一致性算法能够帮助系统在面对这些挑战时,确保数据的准确性和可靠性。

2024-02-29 00:05:28 432

原创 C++面试 -分布式架构-架构能力:分布式事务的学习

分布式事务是分布式系统中保证数据一致性和完整性的一种机制。在多个独立的数据库或服务中进行操作时,分布式事务确保所有操作要么全部成功,要么全部失败。这对于构建可靠的分布式应用至关重要。在面试中,理解分布式事务的基本概念、类型、实现方式和挑战是非常重要的。下面详细介绍分布式事务的关键点。

2024-02-29 00:01:28 1088

原创 C++面试 -分布式架构-架构能力:rpc服务寻址

RPC服务寻址是分布式系统中确保服务可发现性和可连接性的基石,它使得客户端能够透明地定位和调用网络上的远程服务。通过服务注册、服务发现和负载均衡三个核心步骤,RPC服务寻址桥接了服务提供者和消费者之间的通信,实现了服务的动态管理和高效调用。关键挑战在于实时更新服务状态以应对服务实例的动态变化、优化服务发现过程以降低延迟、提升通信安全性以防止数据泄露和未授权访问,以及实现跨多环境的服务管理。应对这些挑战的策略包括实施健康检查、租约机制、安全通信协议、以及环境敏感的配置管理。

2024-02-27 00:15:55 1073 1

原创 C++ 面试 -分布式架构-架构能力:简单rpc协议设计和框架搭建

RPC协议定义了客户端和服务器之间交换消息的格式。请求ID:唯一标识每个请求,用于匹配请求和响应。方法名:客户端想要远程调用的方法或函数名称。参数列表:调用远程方法时需要的参数。RPC(远程过程调用)协议是一种允许程序代码像调用本地过程一样直接调用在远程计算机上的过程的协议。它抽象了底层网络通信的复杂性,让开发者可以专注于业务逻辑的实现。RPC协议的核心组成部分通常包括请求ID、方法名和参数列表。序列化和反序列化是数据交换和持久化的关键技术。

2024-02-26 23:56:23 1072 3

原创 C++面试 -操作系统-架构能力:系统网络性能评估与优化

系统网络性能评估与优化是指对计算机系统中的网络部分进行评估分析,并采取一系列措施来提升网络性能的能力。在面试中,涉及这一主题的问题可能会围绕以下几个方面展开。在C++面试中,可能会涉及到网络性能优化相关的技术或者数据结构的选择。总之,系统网络性能评估与优化涉及到多个方面的知识,包括网络原理、操作系统、编程语言等,需要综合考虑各种因素来进行系统性能的优化和改进。

2024-02-25 14:21:58 527

原创 C++面试 -操作系统-架构能力:磁盘 I/O 性能优化

因此,不需要通过系统调用来读取或写入文件,也不需要进行额外的数据拷贝操作,从而减少了系统调用和数据拷贝的开销,提高了读写的效率。在写入和读取数据时,对齐的数据结构可以直接以连续的块进行写入和读取,而无需进行额外的填充或者调整,从而减少了磁盘 I/O 操作的次数,提高性能。将多次小的磁盘 I/O 操作合并为少数几次大的操作可以降低系统调用的开销,提高性能。:对齐的数据结构可以保证数据的完整性,避免了因为内存对齐问题而导致的数据损坏或者不完整的情况。不同的文件系统对磁盘 I/O 的性能有不同的影响。

2024-02-25 13:58:27 1049 1

原创 C++面试 -操作系统-架构能力:内存问题分析与性能优化

在面试中,除了理论知识外,展示你在实际项目中解决内存问题和优化性能的经验也非常重要。可以通过分享你在项目中遇到的具体问题、采取的解决方案以及优化后的效果来展示你的能力和经验。

2024-02-25 13:24:39 505 1

原创 C++面试基础 -操作系统-架构能力:如何高效利用CPU缓存

高效利用CPU缓存是优化代码以提高性能的重要方面。局部性原理时间局部性:利用最近使用的数据很可能会在不久的将来再次被使用。因此,频繁访问相同的数据可以提高缓存命中率。空间局部性:在处理连续内存块时,相邻的内存单元很可能会被一起缓存。因此,访问相邻内存单元的数据可以充分利用CPU缓存。数据结构的布局优化数据结构的布局以最大程度地利用CPU缓存。例如,将紧密相关的数据放置在相邻的内存位置,使用数组而不是链表可以提高空间局部性。缓存友好的算法选择算法时要考虑其对CPU缓存的利用程度。

2024-02-25 13:22:34 1080

原创 C++面试 -操作系统-安全能力:内存溢出、内存泄漏的原因与解决

内存溢出是指程序在执行过程中,请求分配的内存超过了系统所能提供的内存大小或者进程所能使用的内存大小。这通常会导致程序崩溃或异常终止。程序中申请了大量的动态内存,但未正确释放,导致内存耗尽。在这个示例中,函数会不断地申请大量的动态内存,但是没有释放。每次循环都申请了100万个int大小的内存,这会导致内存耗尽,最终可能导致程序崩溃或异常终止。要解决这个问题,需要在动态内存分配后适时释放已申请的内存。可以使用delete或delete[]

2024-02-25 13:06:18 1343

原创 C++面试 -操作系统-安全能力:死锁的危害、出现原因、解决方法

死锁是计算机科学中一个非常重要的概念,特别是在多线程、并发编程以及数据库管理系统等领域中。

2024-02-25 12:50:47 613

原创 C++面试 -操作系统-代码能力:进程间通信

管道(Pipe)管道是一种半双工的通信方式,它创建了一个管道文件描述符,允许具有父子关系的进程之间进行通信。一般用于具有亲缘关系的进程之间通信,如父子进程。管道是通过创建一个管道文件(FIFO)在内存中进行通信的。命名管道(Named Pipe)命名管道是一种特殊的文件,允许无关的进程通过文件系统进行通信。命名管道在文件系统中有对应的路径名,因此不限于亲缘关系的进程,任何进程都可以通过路径名来访问命名管道。信号(Signal)信号是一种异步通信机制,用于通知进程发生了某种事件。

2024-02-25 02:39:12 1143

原创 C++面试 -操作系统-代码能力:物理内存和虚拟内存

总的来说,物理内存和虚拟内存在计算机系统中起着互补的作用。物理内存提供了快速的数据访问速度和有限的存储容量,而虚拟内存通过将数据暂时存储到磁盘上来扩展物理内存,从而允许系统运行更多的程序并提供内存保护机制。物理内存是计算机系统中实际的内存硬件,通常以RAM的形式存在。用于存储正在运行的程序的指令和数据,以及操作系统及其内核的代码和数据。其大小有限,受计算机硬件限制,访问速度快。虚拟内存是一种计算机内存管理技术,通过将部分存储器的内容暂时移到硬盘上来扩展物理内存的效果。

2024-02-25 02:23:19 845

原创 C++面试 -操作系统-代码能力:磁盘文件系统、虚拟文件系统与文件缓存

当谈论磁盘文件系统、虚拟文件系统和文件缓存时,这些是计算机系统中关键的组成部分,它们协同工作以实现文件管理和数据存储的功能。

2024-02-25 02:15:18 1281

原创 C++面试 -操作系统-代码能力:CPU的上下文切换、中断处理与系统调度

这三个概念密切相关,上下文切换和中断处理是系统调度的基础,而系统调度又会影响上下文切换和中断处理的频率和效果。理解它们对于理解操作系统的工作原理和系统性能优化至关重要。重要性上下文切换:上下文切换直接影响到程序的性能和响应速度。频繁的上下文切换会导致系统开销增加,降低系统的整体性能。因此,编写高效的程序需要尽量减少上下文切换的发生,比如避免不必要的线程或进程切换,合理设计任务的并发执行。中断处理:对于需要及时响应外部事件的应用,良好的中断处理机制可以保证系统对外部事件的及时响应。

2024-02-25 01:15:14 1076

原创 C++面试 -操作系统-代码能力:用户态和内核态的基本概念、区别

用户态用户应用程序运行在用户态下,例如浏览器、文本编辑器等。这些应用程序不能直接访问系统资源,而是通过系统调用来请求操作系统提供的服务,比如文件读写、网络通信等。内核态操作系统内核运行在内核态下,它负责管理系统资源,调度进程,处理中断等。内核态下的代码可以直接访问系统资源,执行特权指令。当用户应用程序需要执行一些特权操作时(比如访问硬件设备),就需要通过系统调用切换到内核态,让操作系统内核来完成这些操作。

2024-02-24 23:53:38 974

原创 C++面试 -操作系统-代码能力:线程、进程的概念、创建与调度

在操作系统的上下文中,理解线程和进程的概念、创建和调度机制是非常重要的。这些概念不仅是计算机科学的基础知识,也是面试中常见的问题。下面是关于线程、进程的概念、创建与调度的详细介绍。

2024-02-23 01:12:35 809

原创 C++面试 -操作系统-代码能力:linux系统性能监控命令的使用

在Linux系统管理和故障排查中,使用性能监控工具是非常重要的。这些工具可以帮助你理解系统的当前状态,包括CPU使用率、内存占用、磁盘活动、网络状况等。下面是一些常用的Linux系统性能监控命令的详细介绍,这些都是面试中常见的知识点。

2024-02-23 01:01:25 772

原创 C++面试 -操作系统-代码能力:程序的编译与运行

程序的编译和运行是软件开发中的基本环节,尤其是在使用编译型语言(如C/C++、Java等)进行开发时。这个过程涉及将人类可读的源代码转换成机器能够执行的指令,然后运行这些指令来完成既定的任务。下面是这一过程的详细介绍,以及在面试中可能需要了解的相关概念。

2024-02-23 00:50:36 370

原创 C++ Linux -操作系统-代码能力:常用的文件、目录操作命令使用

在面试中,掌握基本的文件和目录操作命令是非常重要的,尤其是在Unix或Linux环境下。这些命令不仅在日常工作中非常实用,也能体现出你对操作系统的熟练程度。

2024-02-23 00:47:52 394

原创 C++面试:TCP和UDP的基本原理&http协议基础与应用&http协议相关知识

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP/IP协议族中,TCP负责在两个应用程序之间建立一个可靠的通信连接。: 数据以字节流的形式发送,TCP负责将数据正确且完整地传送到接收方。: 可靠传输(通过序列号、确认应答、超时重传等机制),流量控制(通过滑动窗口实现),拥塞控制(通过慢启动、拥塞避免、快速重传、快速恢复算法实现)。

2024-02-21 22:11:46 1190

原创 C++面试:SQL注入、web shell攻击的危害和规避方法

SQL注入和Web Shell攻击是两种常见的网络安全威胁,它们可以对系统造成严重的危害。了解它们的工作原理、危害以及如何规避是网络安全防护的基本要求。下面将详细介绍这两种攻击的基础知识、危害和规避方法。

2024-02-21 21:45:20 1039

原创 C++面试:数据库的权限管理&数据库的集群和高可用

++面试:数据库的权限管理&数据库的集群和高可用

2024-02-21 21:10:12 884

原创 C++面试:数据库的连接池管理

数据库连接池管理是一个在软件开发中常见的优化策略,特别是在需要频繁访问数据库的场景中。它主要用于减少数据库连接的开销,提高数据库操作的效率。在面试中,掌握数据库连接池的基本概念、实现机制、以及它的优缺点是非常重要的。

2024-02-03 00:15:59 1097

原创 C++面试:事务的隔离级别和实践原理

在读未提交的隔离级别下,一个事务可以读取到其他事务未提交的数据更改。这种级别的主要特征是它不提供任何对并发事务的修改隔离。因此,事务A可以看到事务B所做的修改,即使这些修改还没有被事务B提交。这种行为使得读未提交的隔离级别提供了最低程度的隔离,从而最大化了并发访问数据库的能力。在读提交隔离级别下,一个事务在执行过程中只能看到其他事务已经提交的更改。这意味着,如果一个事务在执行期间,另一个事务提交了对某些数据的修改,那么这些修改在第一个事务的后续操作中就会变得可见。

2024-02-03 00:09:10 959

原创 C++面试:数据库不同存储引擎的区别以及如何选择

总结一下,MySQL支持多种存储引擎,每种引擎都有其特定的用途和优势。InnoDB特点: 支持ACID事务、行级锁定、外键约束。适用场景: 适合需要事务处理、高并发和数据完整性的应用,如在线交易、金融系统。MyISAM特点: 提供高速读取、表级锁定、全文搜索支持,但不支持事务。适用场景: 适用于读密集型应用,如Web内容展示、数据仓库。特点: 数据存储在内存中,提供快速访问,但数据不持久。适用场景: 适合临时数据存储和快速数据访问,如缓存、临时表。Archive。

2024-02-01 00:54:03 923

原创 C++面试:事务的使用以及其ACID特性

事务是数据库管理系统中的一个重要概念,主要用于保证数据库操作的完整性和一致性。在面试中,理解事务及其ACID特性是基本要求。以下是对事务及其ACID特性的详细解释和示例。

2024-01-31 00:07:07 443

原创 C++面试:表结构设计规范

表结构设计是数据库设计的重要组成部分,它直接影响了数据库的性能和可扩展性。在面试中,了解表结构设计的规范和最佳实践是非常重要的。以下是表结构设计的关键规范和示例。

2024-01-30 23:58:42 1228

VNC Viewer windows端远程工具

直接能使用的VNC Viewer。 介绍:VNC Viewer是一款远程桌面软件,它允许用户在不同的计算机或设备之间进行远程连接和控制。VNC代表“Virtual Network Computing”(虚拟网络计算),是一种远程桌面协议,它可以让用户通过网络远程控制另一台计算机。 使用VNC Viewer,用户可以在任何地方远程控制其他计算机。例如,您可以使用VNC Viewer从家里的电脑连接到您在办公室的计算机,或者从笔记本电脑连接到您的台式机。 VNC Viewer有多种不同的版本,可以在多个平台上使用,包括Windows、Mac、Linux、iOS和Android。该软件非常易于使用,只需要输入要连接的计算机的IP地址和端口号即可。此外,它还提供了多种安全选项,以确保远程连接是安全的。 总之,VNC Viewer是一款非常实用的远程控制工具,适用于个人和商业用途。

2023-02-16

windows子进程获取父进程id,并获得父进程生死状态

windows子进程获取父进程ID 具体参考:https://blog.csdn.net/weixin_44120785/article/details/127569712?spm=1001.2014.3001.5502

2022-10-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除