自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【算法系列】回溯

【代码】【算法系列】回溯。

2024-04-29 15:45:47 254

原创 C++并发编程之:条件变量(信号丢失、虚假唤醒)

有,producerThread 跟 consumerThread 是并行的,如果 producerThread 在 consumerThread 抵达 wait 之前就调用了 notify_one,那么这次的事件,consumerThread 就永远丢失了。总的来说是一种不可抗力的系统问题,亦即就算你调用 notify_one 的本意是唤醒一个线程继续,但有时候会有不止一条在 wait 的线程被唤醒。wait 在阻塞时,会先释放掉锁,这是自然的,因为此时休眠什么都不会做,拿锁是没有意义的。

2024-03-13 11:57:23 855

原创 C++模板技巧:Trait 搭配 enable_if 实现模板选择性实例化

我们偶然间聊到了这两个要素,于是心血来潮总结了一下。这篇文章需要一定的C++模板基础来阅读。

2024-03-11 15:36:54 400

原创 C++ 的左值右值和移动语义到底是什么?

相信很多人已经在无数地方看过无数关于左值右值的解释。看完之后面对一堆概念,甚至有些文章提出的公式僵化记忆点,很多人是一脸懵逼。我来提供一个比较简化的理解思路。所谓左值,是一个有可以操作的内存的变量。int a = 1;//栈上有内存地址//堆上有内存地址//静态变量区上有内存地址而相应的右值,则是两部分组成(个人分类)。一是字面量,类似 “立即数” ,编译后会变成指令区(代码区)的一个参数,而不需要进行额外存储,不存在内存地址;

2024-02-24 14:14:26 608

原创 C++奇淫巧计:如何自助控制对象的初始化和销毁

operator new 在上一篇文章里有解释,不细说了。我们可以用 placement new 从编译器里把对象初始化、析构的过程拿过来。手动决定 Test 的整个生命周期。出来后自动根据需求,或是默认构造函数或是拷贝构造函数或是隐式转换,拿到手后就能用,习以为常。的两个行为——内存分配、内存初始化。但我们其实可以精确控制。我们需要一个对象时,

2024-02-06 17:00:36 382 2

原创 C++奇淫巧计:如何快速观察内存分配

在不严肃的场景下,你想测试、跟踪自己的代码的内存分配,粗略评估有无错误的、意外的行为,怎么做?很简单,直接重写 new 操作符。我们用两个测试例子试用一下。

2024-02-06 12:17:04 299

原创 C++奇淫巧计:如何用奇怪的头文件 Header file 来补全代码

如你所见,两个头文件分别写了一个左花括号,一个右花括号。此时如果你的 IDE 够智能,这两个文件都会提示语法报错——毕竟只有一个花括号的代码是什么鬼?众所周知 { } 包含的是一个代码块 Chuck,代表了 main 函数的作用域。如果去掉花括号,main 函数无疑会编译失败。接着我们新定义两个头文件,left_brace.h、right_brace.h。头文件的 {、} 被展开到了 main 函数,自然就补全代码而正确了。奇迹发生了,这段诡异的代码,能够编译通过并正常运行。

2024-02-01 17:05:06 275

原创 C++ 奇淫巧计:如何用一行代码算出 Class 或者 Struct 里成员变量的内存偏移?

nullptr 相当于 0 ,解释为 Vector3* 指针之后,此指针编译器理解成在地址 0 处分配的 Vector3 指针。将此地址用 & 取值转换为 int 后即可输出,注意不可直接转换 (int)(null-ptr->x),原因后面会讲到。此时由 nullptr->x 即是 0 + x-offset。

2024-01-28 16:02:30 248

原创 vue3 tsx 写法下,一个有趣的、基础的渲染问题

tsx 的有趣的更新问题

2023-09-07 11:51:39 1012

原创 nestjs 基础、使用 passport 来进行鉴权

介绍 nestj 配合 passport 的鉴权过程

2023-08-14 17:25:25 970

原创 Docker网络教程(四)macvlan 网络教程

在这种网络下,Docker 宿主机在它的IP之上,允许接受多个 MAC 地址的请求,然后再将这些请求路由至对应的容器里。流通,Docker 会用它的 MAC 地址,把流量路由进你的容器里。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。),Docker使用其MAC地址将流量路由到你的容器。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。你需要 3.9 或者更高版本的 Linux 内核,4.0 以及以上的版本是更好的。如果你的设备叫别的名字,用对应的名字代替。

2023-06-09 10:54:10 3105 1

原创 Docker网络教程(二)host 网络教程

网络驱动只适用于Linux主机,不支持Docker Desktop for Mac、Docker Desktop for Windows或Docker EE for Windows Server。本系列的教程涉及直接绑定在 Docker 宿主机网络上而不隔离网络的独立容器的联网问题。进程直接运行在 Docker 宿主机上而不是在容器中的隔离程度相同。这个过程要求Docker主机上的80端口是可用的。容器,直接绑定到 Docker 宿主机的80端口。检查所有的网络接口,确保没有新的接口被创建出来。

2023-06-09 10:53:27 1597

原创 Docker网络教程(三)overlay 网络教程

演示了如何创建和使用你自己的自定义 overlay 网络,以连接服务。建议在生产环境中运行的服务使用这个方法。

2023-06-09 10:52:13 2889

原创 Docker网络模型(八)使用 macvlan 网络

网络驱动为每个容器的虚拟网络接口分配一个MAC地址,使其看起来像一个直接连接到物理网络的物理网络接口。在这种情况下,你需要在你的Docker主机上指定一个物理接口来用于。如果你的应用程序可以使用 bridge(在单个Docker主机上)或 overlay(在多个Docker主机上通信)来工作,从长远来看,这些解决方案可能更好。由于IP地址耗尽或 "VLAN扩散"(即在你的网络中拥有不适当的大量唯一MAC地址的情况),你的网络很容易在无意中被破坏。你甚至可以用不同的物理网络接口来隔离你的。

2023-06-08 18:32:49 2019

原创 Docker网络教程(一)bridge 网络教程

在这个例子中,我们再次启动了两个alpine容器,但不同的是,我们把它们连接到我们已经创建的一个叫做alpine-net网络的用户定义的网络。这些容器没有连接到默认的bridge网络。然后我们启动第三个alpine容器,它连接到bridge网络,但没有连接到alpine-net,第四个alpine容器则同时连接到两个网络。创建alpine-net网络。你不需要用标志来指定使用的是 bridge 驱动,因为 bridge 就是默认的方式。但例子里还是展示了如何指定它。Inspect 一下。

2023-06-08 18:31:50 2844

原创 Docker网络模型(九)禁用容器网络

通过在容器内执行一些常见的网络命令来检查容器的协议栈。在容器内,只有回环设备被创建。下面的例子说明了这一点。如果你想完全禁用容器上的协议栈,你可以在启动容器时使用。第二个命令返回空,因为容器中没有路由表。标志,因此会被自动销毁。

2023-06-08 18:31:27 1261

原创 Docker网络模型(七)使用 IPvlan 网络

(讨论下来)一个要点是,操作者有能力将他们的物理网络映射到他们的虚拟网络中,以便将容器整合到他们的环境中,而不需要进行操作上的大改动。Linux 的实现是非常轻量级的,因为它们不是使用传统的 Linux 网桥进行隔离,而是与一个 Linux 接口或子接口相关联,以执行网络之间的分离和与物理网络的连接。网络路由器上的次选地址是很常见的,因为一个地址空间有可能有用完的情况,此时可以在三层的 VLAN接口上增加一个次选地址,或者通常称为 "交换机虚拟接口"(SVI)。该子网是隔离的,除非上游网络在VLAN。

2023-06-08 18:30:41 1769

原创 Docker网络模型(六)使用 host 网络

在这种情况下,控制流量(与管理 swarm 和服务有关的流量)依然通过 overlay 网络传递,单独的 swarm 服务容器则使用 Docker daemon 的宿主机网络和端口发送数据。Host 模式网络在优化性能方面很有用,在容器需要处理大量端口的情况下也很有用,因为它不需要网络地址转换(NAT),而且不会为每个端口创建 "用户区代理(userland-proxy,关键字 docker-proxy)"。模式且绑定了80端口的容器,那么该容器的应用程序就可以在宿主机 IP 地址的80号端口上使用。

2023-06-08 18:30:21 1578

原创 Docker网络模型(五)使用 overlay 网络

大多数用户从来不需要配置ingress网络,但 Docker 允许你这样做。如果自动选择的子网与你的网络上已经存在的子网相冲突,或者你需要定制其他的底层网络设置,如 MTU 大小,这时就会很有用。自定义ingress网络的过程包括移除并重新创建它。这通常是在你在 swarm 中创建任何服务之前完成的。如果你有一些服务已经公开过端口(用 -p 或者 --publish),那在你删除ingress网络之前,这些服务需要被先被删除。在没有ingress网络时,没有公开端口的服务继续运行,但无负载均衡。

2023-06-08 18:29:52 1943

原创 Docker网路模型(四)使用 bridge 网络

用户定义的 bridge 提供容器之间的自动 DNS 解析。在默认 bridge 下的容器只能通过 IP 地址访问彼此,除非使用 --link 选项,此选项已经标记为遗弃状态。而在用户定义的 bridge 网络,容器间可以通过主机名或者别名来解析彼此的地址。想象有一个应用栈,包含了一个网页前端跟一个数据库后端。假设你分别命名两种容器为web和db,无论应用栈在哪个 Docker 宿主机跑着,web容器都能够连接db容器里面的数据库。

2023-06-08 18:29:31 1997

原创 Docker网络模型(三)代理服务器

字段的配置对 Docker client 连接的所有的 daemons 都会生效。但是,配置只会对接下来新的容器跟构建起作用,已有的则不会受影响。当你调用构建时,代理相关的构建参数会根据 Docker client 配置文件中的代理设置自动预填充。把代理环境变量集成到镜像里也可能导致安全问题,因为这些代理环境配置里可能会包含一些敏感的信息。不幸的是,目前还没有一个标准来定义网络客户端应该如何处理代理环境变量,也没有定义它们的格式。Docker 的构建跟容器都会用到在这个配置文件里的信息。

2023-06-08 18:28:45 1476

原创 Docker网络模型(二)容器网络

使用之后,容器中会创建一条防火墙规则,将容器的端口跟 Docker 宿主机中的端口映射起来。容器能看到的,是一张配置好 IP 地址、网关、路由表、DNS 服务跟其他网络信息的网卡。同样的,容器的主机名默认是容器在 Docker 里的ID号。将一个已经存在的容器连接到一个不同的网络的时候,类似的也可以在指令里用。将一个已经存在的容器连接到一个不同的网络的时候,可以使用。一个容器并没有它连接的网络类型的信息。命令把一个运行中的容器连接到多个不同的网络。标志,给这个容器在对应的网络中起一个额外的网络别名。

2023-06-08 18:27:57 1517

原创 Docker网络模型(一)概述

Docker 容器和服务(Service) 很强大的原因之一,是你可以将它们互联,或者干脆将它们连接到Docker 之外的地方去。Docker 容器和服务甚至不需要知道它们是否被部署在 Docker 上,又或者需要知道它们的对端(peer)是不是 Docker 服务(workload)。无论你的 Docker 跑在Linux、Windows 又或者是它们的混合体之中,你都可以用 Docker 来对这些容器和服务进行平台无关的管理。

2023-06-08 18:25:14 1532

原创 利用vlan交换机(网管交换机)打trunk实现单线复用

装修的时候,一般来说留两根网线到客厅的电视位是最好的。一根给电视,一根给AP或者客厅用网设备。但事与愿违,开发商一般只会留一根网线过去。一根网线的情况下,普通用法无法区分 IPTV 跟普通用网。此时需要用两个 vLan 交换机来进行打通连接。介绍【单线复用】前,先笔记一下交换机的几个关键知识。

2023-05-11 17:20:42 2690 1

原创 网络设备:集线器、网桥、交换机、路由的由来

两台设备之间的通讯,只能是中间加一个小盒子将两头连起来,然后开始传输数据。真·P2P(物理)。这样的通讯方式显然很麻烦,互联的方式要么纯靠手工拔插网线,很难多人同时通讯,要么就需要接驳各种一对一的线路,网中设备加一减一都需要相应维护其余设备的网线。当然还有一些变体方式,比如组成环状、树状等等,但缺点都比较明显(但可一定优化),就是个体设备的加减维护麻烦不清晰。

2023-05-06 15:48:41 343

原创 TS双工Steam Duplex 最简例子

5、Duplex 在给出 4次的 index 之后,才 push(null) ,意味着EOF。如果在此之后push会报错 Error [ERR_STREAM_PUSH_AFTER_EOF]: stream.push() after EOF;4、stdout 会在 pipe 初始时,尝试读取一次,触发了 Duplex 的 read;3、将 Duplex pipe 进标准输出流(stdout);2、将标准输入流(stdin) pipe 进 Duplex;1、建立一个自定义Duplex;

2023-04-23 17:23:10 177

原创 P2P中的NAT技术

上网搜时,可能看到 NAT 是为了解决 “IPv4地址短缺问题” ,而其实更本质上来说,这是一个路由拥有自洽内网系统的一个必要功能——对于外界来说,传输层IP包的沟通对象是 NAT 网关设备,再由网关转发给对应的子网设备来通讯,这样就能很好的让子网自洽而不用顾及外部的网络环境。简而言之,NAT 的工作原理是一个 IP、Port 的转换过程,NAT = Network Address Translation。显然它的本质问题,是如何建立并维护起【NAT设备的外网地址 <—> 内网设备地址】的映射关系。

2023-04-21 16:59:41 593

原创 排除 CloudFront 502 ERROR The request could not be satisfied 问题

项目需求,在 Cloud Front 上部署了一个全球加速,加速后端的一个api。结构如下:比如,客户端发起,经过 CNAME 记录,关联到最近的 Cloud Front 节点后,CF转发请求给源,API 后端服务器做出处理后,再将结果原路返回。这个时候访问 https://www.natsusao.com 出现了这个场面:502 错误,证明客户端到 CF 是通的,但在回溯源站的过程中出了错。这世上没有玄学,这种情况肯定有解释。于是我一一展开可能的问题的排查。

2023-04-13 17:29:56 5395 2

原创 一文解释 Linux ext 文件系统原理

本文系统性介绍一下【ext文件系统】。文章不深入细节,而从更宏观的角度去解释理解文件系统的逻辑运作,可加强对Linux文件系统的逻辑理解。

2023-04-06 19:46:14 357

原创 为什么用AWS的CloudFront加速后端时,带不上来token?

这大概率是因为用了默认的 AWS 策略。这种策略下,是屏蔽掉所有的客户端请求头的。而权限信息往往在 auth头里带上。于是后端就收不到验证了。用 CF 代理后端的时候,有时候会发生权限无效的问题。亦即明明登录成功了,后续的操作还是 403。直接启用 AWS 内置的 AllViewr 策略放通所有头即可。选用后问题就可以得到解决了。

2023-03-30 14:33:31 187

原创 为什么 ls 跟 du 看起来的大小不一样?

在查看同一个文件的大小的时候,可以用 ls 或者 du 指令。细心的使用者有时候会发现它们显示出来的大小是不一样的。

2023-03-22 18:39:46 1523

原创 Nginx配置后台Backend的同时代理静态文件的方法

比较简单就不赘述了,作用就是将 www.sample.net 代理到 8000 的后端去(比如谷歌广告需要在主域名下加一个 ad.txt 来反广告作弊)。如果增加一个需求,某某个请求需要访问本地的某某个静态文件,而不是 8000 怎么做呢?

2023-03-21 17:04:35 545

原创 PVE的网络模型

PVE 的网络设置、网络模型介绍,Linux Bridge 介绍

2023-03-20 17:42:12 7293

原创 PVE世界常见的存储格式,qcow2/raw/vmdk

pve 之上的虚拟机,需要依托硬盘使用。虚拟机的硬盘实际上是分配在宿主机的一个块文件,然后由 pve 核心转换使用。其中,pve 常用的有两种格式,qcow2 跟 raw。vmware 有自己的格式 vmdk。这三种格式的虚拟硬盘文件都有工具相对应转换。

2023-03-17 18:21:49 8551

原创 Http 提交数据的五种方式

介绍一下大部分情况下 http 的传参

2023-03-09 17:11:47 637

原创 大白话解释前端的引擎、合批和shader等概念

偶尔听到客户端聊到这些技术方案、优化问题的时候,如果不是非常了解客户端的技术,会被绕进去而停留在一个名词阶段而不甚理解。比如只知道小图片打成图集有利于优化,却不知道为什么。其实抛开比较具体的技术细节,这个过程是可以用比较纯逻辑的流程来描述的。这样的描述可能在专业的前端眼里看来很浅显,但对没有长时间前端经验却有程序经验的人来说是一个很好的理解 “纲领”。写下来也是为了以后自己能时不时翻开想起。因为也是自己的笔记,所以就想到哪写到哪了。至此对标题的大概介绍完毕,内容基于本人的粗浅了解,欢迎指正。

2023-02-19 19:32:35 660

原创 Nestjs 如何获取请求的 IP

nestjs获取ip

2023-02-07 14:54:53 1952

原创 【神经网络与深度学习】第一章 使用神经网络来识别手写数字

第一章内容,待续

2022-11-06 20:47:46 592

原创 关于【神经网络与深度学习】这本书

机器学习序章

2022-11-06 13:57:36 542

原创 Linux 路由表匹配原则

linux路由表

2022-08-31 04:22:39 1582

空空如也

空空如也

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

TA关注的人

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