自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Linux下安装MongoDB

偶数版本为稳定版,个人为了学习,选择较低版本5.0.30。

2024-11-04 10:00:24 304

原创 二叉树系列之一(求最近公共父节点)

1.考虑到最近,我们是不是可以想到,假如节点本身就是另一个节点的父节点,这时是不是就是最近的父节点了?2.判断条件给出来了,那我们开始思考方法:递归方法,那么上述的判断条件完全可以作为递归返回的过程。对于求父节点也是很常见的问题,该如何思考这个问题呢?

2024-09-05 10:00:08 237

原创 环境变量是什么?

通过符号链接或复制文件的方式,可以避免频繁修改PATH变量,保持其简洁。这样不仅使系统管理更为高效,还减少了潜在的路径冲突或错误。此外,这些方法也更符合系统管理的最佳实践,有助于保持操作系统的稳定和可维护性。

2024-08-08 04:40:14 542

原创 设计模式(持续更新)

抽象工厂:大厂的核心部门,一个具体工厂干很多核心业务。简单工厂:就是创业公司,一个人干多个活。工厂方法:外包,丢给你一个专门的业务。

2024-08-07 01:34:59 397

原创 基于Protobuf的RPC

Service、Controller、RpcChannle 我们可以简单的描述成下面的过程:1.调用本地的login调用UserServiceRpc_Stub的login2.new一个UserServiceRpc_Stub,并用SubRpcChannel初始化3.执行回调函数,并序列化成规定的格式:比如:header_size+header_str(service_name、method_name)+args_size+args_str。然后,直接通过网络发送出去。

2024-08-03 22:45:14 899

原创 多进程通信

这一机制允许正在运行的进程切换其正在执行的任务,而不需要创建新的进程,从而能够复用已有的进程ID和其他系统资源。当exec系统调用被触发时,操作系统需要首先找到并加载指定的可执行文件,然后重新初始化进程的内存布局,最后将控制权转移给新程序的入口点。从功能上来看,exec系统调用的核心作用是在当前进程中替换正在运行的代码和数据,实现程序的切换。而引起问题的是:父进程异常退出或者终止,子进程仍然在运行的情况下,这时子进程会有系统的守护进程交给。父进程退出之后,子进程退出之前的子进程状态都是僵尸进程。

2024-08-01 00:25:11 700

原创 VSCode远程连接:no such identity: C:\\Users\\WINDSUN\\.ssh\\id_rsa: No such file or directory

本人的错误是C:\\Users\\WINDSUN\\.ssh\\id_rsa不存在,但是我找C:\\Users\\WINDSUN\\.ssh发现不存在,那么我又去看,本地的秘钥嘛,发现是本地的秘钥路径出现了错误。将这个改成你本地ssh服务的秘钥。排查日志发现出现文件不存在的问题,没有仔细排查问题的存在,所以前面看了两个解决问题的错误的方法,这里留个脚印防止出现问题,因为我vscode登录经常出现问题。上面这篇博客对于常见的远程连接突然出错的解决思路。

2024-07-30 20:53:09 255

原创 VMware:VMnet0丢失问题Vmnet8丢失

出现这个问题的简单描述,就是centos配置NAT模式下的静态ip,配置成功后,发现Vmnet8没有了,然后照着网上的抄了不少。我们开始讲了VMnet0,VMnet1,VMnet8使用与三种模式:而VMnet-0丢失,我就想着自己创建一个不就好了。总结:VM就是一个软件层面的操作系统,没了就创建呗,不想真的网卡一样,他也是要借助本机的网卡来通信的,所以不要怕。先添加网络,因为你丢失了vmnet0,所以可以直接添加,然后就能成功了。直接将虚拟机接入宿主机所在的物理网络,使虚拟机成为一个独立的网络节点;

2024-07-20 03:11:59 543

原创 Git新手出现错误总结:1.配置ssh公钥问题2.提交代码容易出现的问题

将本地代码推到GitHub上,核心流程包括主要步骤。

2024-07-20 01:07:35 339

原创 Ubuntu虚拟机:Nginx安装的小坑:1.依赖包 2.版本问题 3.80端口占用

通过这些步骤,你应该能够正确安装 PCRE 库及其依赖项,并成功编译和安装 Nginx。比较直接干脆的的方法:sudo apt-get install nginx。2.查看传统的80(Nginx默认的端口)查看到底什么进程占用了这个端口号。直接修改成8080端口 即可。1.查看是不是已经启动了。

2024-07-19 00:18:48 651

原创 std::bind

std::bind的主要作用是将函数及其参数绑定在一起,以便在异步操作完成时能够正确调用。通过占位符_1和_2,我们可以在绑定时预留位置给将来传入的实际参数。这种方式在异步编程中非常常见,因为它允许我们在启动异步操作时定义好回调函数及其参数。

2024-07-12 00:30:47 174

原创 reactor模式和proactor模式

在服务器开发中,Reactor模式和Proactor模式是两种常见的事件处理设计模式,主要用于处理多并发连接和高效的I/O操作。它们的主要区别在于事件处理的时机和方式。下面详细介绍这两种模式及其应用。Reactor模式是一种,它依赖于事件分发器来监听并分发事件。具体来说,Reactor模式的核心思想是当某个事件发生时,事件分发器(Reactor)通知相应的事件处理器(Handler)来处理该事件。selectpollepollProactor模式是一种,它依赖于操作系统或框架提供的异步操作支持。

2024-07-12 00:02:06 876

原创 IO多路复用

初始化:创建多路复用实例(如注册文件描述符:将需要监视的文件描述符及其感兴趣的事件(如可读)添加到多路复用实例中。监视事件:调用epoll_wait等系统调用阻塞等待事件发生。处理事件:事件发生后,处理相应的文件描述符上的 I/O 操作。重复监视:处理完当前事件后,继续监视文件描述符上的新事件,循环执行上述步骤。这种逻辑允许程序在高效地处理多个 I/O 操作的同时,避免了创建大量线程或进程的开销,提高了资源利用率和程序的整体性能。

2024-07-11 11:11:51 1024

原创 linux系统的零拷贝 (Zero-Copy)

零拷贝的基本原理是尽可能减少在数据传输过程中涉及的内存拷贝次数。传统的 I/O 操作通常会涉及多次数据拷贝,例如从磁盘到内核缓冲区,再从内核缓冲区到用户缓冲区,最后从用户缓冲区到网络缓冲区。在计算机系统中,零拷贝是一种技术,旨在在数据传输过程中避免不必要的内存拷贝操作,从而提高性能。零拷贝通常用于文件传输、网络数据传输等场景,通过减少 CPU 和内存带宽的占用来提高系统的整体性能。是最常用的零拷贝技术之一,通常用于将文件数据发送到网络套接字。都是用于实现零拷贝的系统调用,但它们的用途和机制有所不同。

2024-07-11 09:55:36 757

原创 Sleep 操作和 Wait 操作

操作是一个使当前线程或进程进入休眠状态的机制,直到指定的时间过去或特定条件满足。具体来说,它会让线程暂停执行一段时间,这段时间内该线程不会消耗 CPU 资源。系列函数获取其终止状态的进程。虽然僵尸进程不再执行代码,但它仍占据着进程表中的一个条目。僵尸进程(Zombie Process)是指一个已经终止但其父进程尚未调用。操作通常用于进程同步,特别是父进程等待子进程结束的情况。等函数,可以暂停执行,直到一个或多个子进程终止,然后继续执行。

2024-07-11 09:27:15 455

原创 算法-刷题总结ListNode

将ListNode基本算法喜欢出现的一点tips总结一下。

2024-07-11 00:54:43 292

原创 Linux安装msql的小坑:

这个一般可以看见你有什么问题。个人问题:桌面下载的没有设置密码即在mysql_secure_installation这个环节出现问题,搜了几个问题的汇总。看着有点头晕。主要的坑在于,有的是要不启动mysql的,有的是要启动mysql的,对于不经常使用的人来说,云里雾里。

2024-07-10 18:04:02 285

原创 VM虚拟机配置静态网络(问题Vmnet丢失)

在NAT模式下,虚拟机可以访问外部网络,同时也可以与主机进行通信。虚拟机通过主机的IP地址进行网络访问,主机充当了虚拟机和外部网络之间的路由器。在Host-Only模式下,虚拟机之间和虚拟机与主机之间可以进行通信,但虚拟机无法直接访问外部网络。vmnet0:vmnet0是VMware中虚拟网络的一部分,通常用于主机上的桥接模式。它允许虚拟机与主机上的物理网络进行通信,并可以与其他计算机或网络设备进行通信。动态配置:经常是借助vm来达到比如程序的测试,操作系统,编译的理解。3.修复注册表CCLeaner。

2024-06-15 17:37:28 264

原创 C++:动态联编之虚函数

这才是要动态联编的关键,即在调fr,fp函数的时候,如果不使用动态联编,在编译调用函数的时候,不知道到底该调用什么哪一个函数代码(即对上述fr,fp虚函数进行重写的时候),采用动态联编可以直接编译,不管到底使用那个虚函数块,因为虚函数采用了。多态的问题直接面临的就是,使用基类引用或者指针来调用派生类对象,因为上述两种方式可以通过将基类引用或者指针来指向派生类对象来调用基类的方法,但反过来却不可以。两个不同的联编对应不同的任务。例如:类C的代码,函数原型的定义(重载)都可以通过静态联编确定代码块。

2024-06-05 21:48:31 329

原创 内存管理中的堆与数据结构的堆

兰格的堆设计的初衷是为了应对计算机科学领域中复杂、不断变化和不确定的需求。这种动态内存分配机制极大地提高了程序的灵活性和效率,使得程序能够更好地适应不同的内存需求和场景。因此,回到背景角度,内存可以看做是一个有序的数组,而内存的动态分配和回收的过程就是对于数据的插入和删除的过程,因此堆的数据结构的操作,就是对于内存的管理。: 放置操作系统相关的代码和数据。:将内存分为固定的一些内存区,很明显会产生区内碎片,同时对于内存的利用率不高。因为是动态的分配,所以涉及到一些内存分配的算法:如最佳,最坏等。

2024-05-31 21:52:16 323

原创 C++库(静态库与动态库)与编译预处理

在生成可执行文件的过程中,源程序文件中的所有代码行都参加编译,但有时候希望对其中的一部分内容只在满足一定的条件下才进行编译,也就是对一部分内容指定编译的条件,也有的时候,希望当满足某条件时对一组语句进行编译,而当条件不满足时编译另外一组语句,这都叫条件编译。综合起来,这句话强调了动态库在编译时不会被归档到可执行文件中,而是以一种动态加载的方式存在,并且在编译过程中需要生成符号表来描述库中的符号信息,以确保在程序运行时能够正确地加载和链接动态库。因此,动态库没有归档文件(如静态库中的。

2024-04-23 21:48:42 1127 1

原创 C++中几种常见的可调用对象

void foo(int x) { // do something}// 定义函数指针类型typedef void (*FuncPtr)(int);// 创建函数指针对象并进行调用FuncPtr ptr = foo;ptr(10); struct Functor { void operator()(int x) { // do something }};Functor functor;functor(10); auto lambda = [](int

2024-02-19 14:04:53 504 1

原创 C++:泛化,全特化,偏化(部分特化)的区分

谈谈个人的理解:泛化是对模版的多态的处理思路,

2024-01-02 11:06:35 1512 1

原创 C++:对于模版类重载()实现可调用对象的功能

我们可以将类对象变为可调用对象,并实现类似函数的行为和逻辑。这对于函数对象、函数指针的封装以及实现函数式编程概念非常有用。时,我们实际上是定义了一个成员函数或非成员函数,该函数将在对象被调用时执行。,并将其作为函数调用的方式来使用,传递了两个参数3和4。,我们可以将对象变得可调用,就像调用函数一样,传递参数并返回结果。被视为一种特殊的运算符,它可以使对象像函数一样被调用。,才能创建可调用对象。在上述代码中,我们定义了一个模板类。,并在其中重载了函数调用运算符。函数中,我们创建了一个。

2023-12-30 16:37:44 374

原创 C++:函数指针int(*FunType)(int, int)与函数指针类型别名typedef int(*FunType)(int, int)的区别

/ 声明函数指针类型。是两种不同的函数指针类型定义方式,它们之间的区别在于语法和使用方式。// 声明并初始化函数指针。// 声明并初始化函数指针。,用于表示指向具有相同签名的函数的函数指针类型。,它表示指向具有相同签名的函数的函数指针类型。这是直接定义了一个函数指针类型。

2023-12-30 15:47:25 667

转载 SQL(structured query language)的语句分类及详细解析

可跳转到原链接阅读文章只为记录学习防止日后找文章麻烦1)DDL:数据定义语言 关键字有:create(创建),drop(删除) ,truncate(删除表结构,再创一张表),alter(修改)2)DQL:数据查询语言 关键字有:select3)DML:数据操作语言 关键字有:insert(插入),update(更改),delete(删除)4)TCL:事务控制语言 关键字有:begin,savepoint,rollback,commit5)DCL:数据控制语言 关键字有 :gr...

2022-03-02 23:48:06 169

原创 关于Android的刚开始安装时HAXM在intel文件下为空的问题

Technical Library这个是网站直接跳转搜索HAMX

2021-09-11 10:33:34 236

原创 严重 [http-nio-8080-exec-1] org.apache.catalina.core.AprLifecycleListener.init An incompatible version

有关ider再关联tomcat的时候发送错误404,这个时候这需要将tomcat的lib包放入项目下

2021-06-19 14:18:24 1465

空空如也

空空如也

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

TA关注的人

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