自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nvd11的专栏

it's a blank description

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

原创 LangChain 入门和一些基本名词概念

langchain 是一个用于构建基于大语言模型(LLM)的应用程序的框架。它提供了一些工具和组件,可以帮助开发者更轻松地创建和管理与LLM交互的应用程序。

2025-05-07 04:36:36 874

原创 理解数列和函数的极限

数列就是按照1定顺序排列的数字, 也可以理解为包含数字元素的队列a1a2a3ana1​a2​a3​...an​n∈Nn \in Nn∈N或者an\{ a_n \}an​n∈Nn \in Nn∈N其中ana_nan​叫做通项。

2024-12-28 23:16:39 798

原创 理解幂运算

在数学中,(0^0) 是一个有争议的话题。由于这是幂的基本定义, 没有什么解释的空间, 注意这里的n是自然数就行。跟1个数, 先求n方根, 再求m次方 , 两种方法的最终值是等价的。这是根据上面的公式$a^{m+n} =也是讲 1个数, 先求m次方, 求n方的根。一般情况下, 我们仍然认为0的0次方是1。= 0 因为任意个0相乘等于0 所以。如果幂是1个分数, 为什么是开放呢。推导方法与上面的公式是完全一样的。根据幂运算和开n次方的定义,相乘, 其中n是自然数。注意这里的n是自然数。0个任意数相乘都是1。

2024-12-26 23:20:29 1068

原创 理解反函数

设函数fA→B∀b∈B∃!a∈A→f−1ba那么f−1B→Af−1B→A就是fA→BfA→B的反函数其中f 必须是1个双射函数(同时满足单射和满射)理解函数的满射和双射。

2024-12-22 04:12:28 931

原创 理解函数的满射和双射

由我之前介绍陪域的文章可知, 陪域并不是值域, 而是值域的1个超集。对于函数定义的集合A 和 集合B, 其实集合B就是陪域所以满射函数离不开陪域的定义如果 1个函数的 陪域等与值域, 那么这个函数是满射函数, 反之亦然通常我们定义1个 有明确数学式的函数, 都是只包括数学式和定义域。但是如果定义1个满射函数的话, 往往需要带上陪域的定义例如下面的函数是1个满射函数fR−0∞fx2xfR−0∞fx2x这里的定义已经包括了定义域R 和 陪域0∞0∞。

2024-12-22 02:56:30 3754

原创 理解定义域,值域,和陪域(到达域)

定义域 和 值域很容易理解简单地讲:定义就是所有函数输入值的集合值域就是基于定义域, 所有函数输出值的集合例如:对于 函数fx2xx∈−22fx2xx∈−22定义域 就是 [-2, 2], 值域就是[0.25 , 4] 很明显定义域往往是 human 定义函数的一部分, 也就是讲定义域是人类来定义的.下面两个函数, 虽然数学式一样, 但是由于定义域不同, 他们实际上就是两个不同的函数fx1xx∈−∞0fx1xx∈−∞。

2024-12-21 02:42:30 1780

原创 理解奇函数和偶函数

对于函数f(x), 如果x是在f(x) 的定义内, 如果任意x , 都有f(-x) = -f(x) 那么f(x) 是奇函数f−x−fxx∈Dff−x−fxx∈Df很简单在函数图像里, 奇函数都是对于原点对称对于函数f(x), 如果x是在f(x) 的定义内, 如果任意x , 都有f(-x) = f(x) 那么f(x) 是偶函数f−xfxx∈Dff−xfxx∈Df在函数图像里, 偶函数都是对于y轴对称。

2024-12-17 03:39:58 1913

原创 理解单射函数

单射函数(Injective Function)是指一种函数,它满足以下条件:对于任意两个不同的输入值 x1 和 x2,如果 x1 ≠ x2,则函数的输出值 f(x1) 和 f(x2) 也必须不同,即 f(x1) ≠ f(x2)。换句话说,单射函数是指一个函数,它将不同的输入值映射到不同的输出值。

2024-12-17 02:32:48 1228

原创 Junit 5 - 理解Mockito,提高UT 覆盖率

当我是1个3年初级程序员时, 我被面试者问到1个问题: 如何保证你的开发任务交付质量当我是1个7年开发组长时, 我被面试者问到另1个问题:如何保证你的团队的代码质量, 减少rework。又若干年后, 我才明白当年我的回答是多么的傻嗨, 什么理解业务, 勤沟通, 代码review流程都是废话。真正的核心是测试!足够的单元测试!当你的下属提交pr时,顺便把 一份coverage 达到80% 的Junit testing report 放上jira, 你还不信任他这次任务的代码质量吗?

2024-09-28 04:38:12 1156

原创 Java ETL - Apache Beam 简介

Apache Beam是一个用于大数据处理的开源统一编程模型。它允许用户编写一次代码,然后在多个批处理和流处理引擎上运行,如Apache Flink、Apache Spark和Google Cloud Dataflow等。Apache Beam提供了一种简单且高效的方式来实现数据处理管道,支持复杂的数据流转换和并行处理。通过Apache Beam,用户可以编写可移植且具有弹性的数据处理应用程序,从而更轻松地处理大规模数据集并实现高性能的数据处理。Apache Beam最初是由Google开发的。

2024-09-18 03:20:51 988

原创 K8S - Access Control 机制介绍

Kubernetes(K8s)的权限认证机制主要涉及认证(Authentication)和授权(Authorization)两个方面:Authentication 包括用户验证与 服务帐号(SA) 认证至于Authorization 授权方面, 就是我们常见的RBAC (Role-based Access Control)如下图, 其实一切对k8s集群的管理操作都是通过api service 去调用nodes 的kubelet 去完成。

2024-09-18 02:38:41 1680

原创 K8S - 用service account 登陆kubectl

刚安装好k8s时我就可以用kubectl 在master server里管理k8s的资源。这时我们是感觉不到 k8s的用户和权限管理存在的, 但是其实用户的配置都在kubeclt 的配置文件中/etc/kubernetes/admin.conf 中我们可以用下命令来查看当前正在用的帐号当我们把这个配置复制到另1台机器上, 那么那台机器也可以用kubernetes-admin 来登陆kubectl。

2024-09-15 03:46:16 802

原创 K8S - Volume - NFS 卷的简介和使用

在之前的文章里已经介绍了 K8S 中两个简单卷类型 hostpath 和 emptydir但是这两种卷都有同1个限制, 就是依赖于 k8s nodes的空间如果某个service pod中需要的volumn 空间很大, 这时我们就需要考虑网络磁盘方案, 其中NAS 类型的Volume 是常用且简单的选择之一。

2024-09-14 05:04:47 1560

原创 K8S - Emptydir - 取代ELK 使用fluentd 构建logging saidcar

Kubernetes中的EmptyDir是一种用于容器之间共享临时存储的空目录卷类型。EmptyDir卷在Pod内的容器之间共享,并且在Pod被删除时,其中的数据也会被删除。以下是EmptyDir卷的一些关键特点:临时存储:EmptyDir卷用于临时存储数据。当Pod被删除时,EmptyDir中的数据也会被删除。容器共享:EmptyDir卷可以在同一个Pod中的多个容器之间共享数据。这对于需要在容器之间共享数据的场景非常有用。

2024-09-09 03:41:34 1484 1

原创 Sonarqube 和 Sonar-scanner的安装和配置

所谓sonarqube 就是代码质量扫描工具。官网:在个人开发学习中用处不大, 我草, 我的代码质量这么高需要这玩意?但是在公司项目中, 这个可是必须的, 你永远都不知道你的队友写了什么进git 仓库至于SanarScanner 就是1个本地工具, 用于把你的代码push 到SonarQube server 用于分析参考:steps:args:- '-c'- |set -xpwdargs:- '-c'- |set -xwhoamipwdls -l。

2024-09-08 02:23:42 1970

原创 fluentd 简介,日志收集并导入BigQuery

Fluentd 是一个开源的数据收集器,旨在实现日志数据的统一收集、处理和转发。它支持多种数据源和数据格式,并具有灵活性和可扩展性,使得在大规模分布式系统中处理日志数据变得更加容易。以下是 Fluentd 的一些关键特点和优势:多源数据收集:Fluentd 支持从各种数据源收集数据,包括日志文件、系统日志、应用程序日志、传感器数据等。数据格式转换:Fluentd 可以将不同格式的数据转换为统一的格式,使其更容易进行处理和分析。

2024-09-06 03:15:34 1754

原创 k8s - Volume 简介和HostPath的使用

官方定义:hostPath 卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中。虽然这不是大多数 Pod 需要的,但是它为一些应用提供了强大的逃生舱。简单来讲就是让k8s node 的目录or 文件map在你的POD 容器里至于为什么上面提到的逃生舱, 是因为假如你的POD 崩溃了or 被shutdown, 我们仍然可以在node对应的path上找到我们想要的数据(前提是把相应的数据output 到hostpath)但是 官方并不推荐使用hostpath 把数据输出到node上。

2024-09-01 23:19:27 1592 5

原创 K8S - 理解volumeMounts 中的subpath

在上一篇文章中介绍了springboot 中如何实时读取外部配置文件的内容。

2024-09-01 04:37:32 2264

原创 springboot service如何动态读取外部配置文件

在项目中, 读取外部配置文件的需求很常见例如。

2024-08-26 04:06:27 1332

原创 K8S - Secret 的简介和使用

Kubernetes(k8s)中的 Secret 是一种用于存储敏感信息的 Kubernetes 资源对象,如密码、API 密钥、证书等。Secret 被设计为用于安全地存储和管理敏感数据,并且可以通过 Volume 或环境变量的方式将这些数据提供给 Pod 中的容器。简单来讲, K8S 的secret 和 configmap 的作用都是存放configuration 配置数据但是 configmap 不适合存放证书, 密码等敏感数据。

2024-08-18 01:07:30 1013

原创 Docker - 深入理解Dockerfile中的 RUN, CMD 和 ENTRYPOINT

这个特性很重要例子:定义1个 docker file构建镜像正常执行时会输出hhihhhih但是我们可以在docker run 命令后面加上命令覆盖掉CMD 定义的命令hello这个特性相当重要, 可以让我们的容器部署更加灵活。

2024-08-17 17:55:40 3943

原创 K8S - ConfigMap的简介和使用

Kubernetes中的ConfigMap 是用于存储非敏感数据的API对象,用于将配置数据与应用程序的镜像分离。ConfigMap可以包含键值对、文件或者环境变量等配置信息,应用程序可以通过挂载ConfigMap来访问其中的数据,从而实现应用配置的动态管理。ConfigMap的使用有助于提高应用程序的可移植性、可伸缩性和可维护性。简单来讲, configmap 是用来存储app的配置或者容器的环境变量的, 避免这些配置hard code 在容器内。

2024-08-16 00:54:56 1437

原创 K8S ingress 初体验 - ingress-ngnix 的安装与使用

1个ingress controller 可以对应多个ingress 吗?答: 可以的如果1个ingress 的controller 配有多个ingress instance, 里面的配置会冲突吗?如果有相同的path 设置答: 会冲突, 所以要保证多个ingress instance 的配置中 path 互相不重复如果一个 Ingress 控制器对应两个 Ingress 资源,并且这两个 Ingress 的配置中具有相同的路径,那么会发生冲突。

2024-07-12 03:16:18 1386

原创 K8S - 在集群内反向代理外部资源 - headless service 的使用

referring:无头服务(Headless Services)有时你并不需要负载均衡,也不需要单独的 Service IP。遇到这种情况,可以通过显式设置 集群 IP(spec.clusterIP)的值为 "None" 来创建无头服务(Headless Service)。你可以使用无头 Service 与其他服务发现机制交互,而不必绑定到 Kubernetes 的实现。

2024-06-24 02:23:26 1389

原创 K8S - 理解ClusterIP - 集群内部service之间的反向代理和loadbalancer

集群内部通信:ClusterIP 为 Service 提供了一个虚拟的内部 IP 地址,用于在 Kubernetes 集群内的其他组件和服务之间进行通信。其他 Pod 可以通过该虚拟 IP 地址和 Service 的端口来访问该 Service。内部负载均衡:ClusterIP 实现了基于轮询算法的负载均衡,它将请求均匀地分发给 Service 关联的后端 Pod。这意味着无论有多少个后端 Pod,它们都可以被平等地访问,从而实现负载均衡和高可用性。

2024-06-23 21:07:00 2254

原创 K8S - 实现statefulset 有状态service的灰度发布

参考理解 什么是 滚动更新,蓝绿部署,灰度发布 以及它们的区别。

2024-06-23 00:49:00 828

原创 理解 什么是 滚动更新,蓝绿部署,灰度发布 以及它们的区别

滚动更新,蓝绿部署,灰度发布这3种 现代化的 发布模式相信很多人都听过, 但是并不是都能正确理解他们的作用和区别。

2024-06-22 23:53:00 1746

原创 K8S -理解StatefulSet - 部署有状态应用

有状态服务(Stateful Service):有状态服务是指在处理请求期间维护和跟踪用户状态或会话信息的服务。这意味着服务在多个请求之间保持状态,并且需要在请求之间共享和使用这些状态信息。通常,有状态服务会将用户数据存储在内存、数据库或其他持久化存储中,并使用该状态来处理后续请求。有状态服务通常需要进行会话管理和状态同步,以确保正确处理和维护用户状态。无状态服务(Stateless Service):无状态服务是指在处理请求期间不维护任何用户状态或会话信息的服务。

2024-06-22 22:55:11 2321

原创 VPC Access Connector 介绍 - 让 Non-VPC product 也可以访问VPC Network内的资源

在GCP 上, VPC product 指的是属于某个制定的vpc subnet, 具有至少1个 该 subnet 的内网ip的产品某些dataflow job (指定了 可选参数subnet )Cloud Composer (基于airflow)而 Non VPC product 通常是1个共用产品和 server less 的平台,例如:5. Pubsub。

2024-06-19 02:30:43 1228

原创 K8S - 用kubectl远程访问内网的k8s集群

在之前的文章介绍过, 通过任何node 的主机, 用kubectl 管理集群是很简单。

2024-06-10 00:45:25 2137

原创 摆脱Jenkins - 使用google cloudbuild 部署 java service 到 compute engine VM

在之前 介绍 cloud build 的文章中已经介绍过, 用cloud build 去部署1个 spring boot service 到 cloud run 是很简单的, 因为部署cloud run 无非就是用gcloud 去部署1个 GAR 上的docker image 到cloud run 容器。

2024-06-09 05:33:17 986 1

原创 创建google cloud storage notification 的权限问题

Google 文档也不是很靠谱, 更新并不是非常及时。

2024-06-08 13:31:04 629

原创 Google Cloudbuild yaml file 中 entrypoint 和 args 的写法

id: 显示在 cloud build logs 里的item 名字name: docker 镜像名字 - 下面的命令会在这个镜像的1个容器instance 内执行entrypoint: 执行的命令入口 , 只能有1个对象args: 命名的参数, 它是1个list问题来了, 如何理解深而慢是entrypoint 和 argsentrypoint 就是执行的命令 bin file 名字, args 是参数, 不能混淆中cat 就entrypoint。

2024-06-01 21:41:40 1126

原创 理解 numpy 中的布尔索引

布尔索引是一种通过使用布尔值(True或False)数组来选择数组中的元素的方法。布尔数组的长度必须与源数组相同,它指示了哪些元素应该被选择或过滤。通过使用布尔索引,我们可以根据指定条件来选择数组中的元素,这些条件可以是基于元素值的比较、逻辑运算符的组合或其他布尔表达式。简单来将, 布尔索引就是让 1个 boolean dtype 的adarray 作为另1个adarry 的 filter, 所以 布尔索引更应该是个filter 而不是 index。

2024-05-20 00:26:37 1704

原创 理解numpy中的切片访问

numpy 中的一维数组的切片方法与 python 内置的list 切片类似.arr[0轴上的切片, 1轴上的切片…, n-1轴上的切片]规则, 其实是基于1维数组的。

2024-05-19 21:17:33 286

原创 理解 numpy 中数组的索引访问

与python 普通的数组 (list) 一样。numpy 中的ndarray 一样是支持 正向索引 和 负数索引如图如上图 array[1] 和 array[-8] 都是指向 同1个元素 8。

2024-05-19 19:29:58 390

原创 numpy 多维数组的轴顺序

我要获取第2行第1个元素(4) 必须用 arr[1,0] , 因为arr[x,y] 中 x是0轴的index, y是1轴的index, 它们的顺序不能乱。其中竖向的是0轴, 横向的是1轴, 他们的顺序不能乱, 因为我们必须以正确的顺序获取元素。所以0轴 所对应的元素是 多个 1维数组, 而1轴(最深轴) 对应的是标量。上图中我用不同的颜色表示第4维, 实际上将多个3维数组 构建称1个4维数组。竖向的轴不再是0轴, 而表示深度的才是0轴, 如上图。这时, 0轴 对应的元素就是2维数组(矩阵)

2024-05-19 05:21:17 550

原创 Python 利用迭代器or生成器,让小内存也能处理大文件

首先准备1个log 文件 app.log 它有60000 行数据。

2024-05-13 01:51:30 345

原创 Python生成器使用场景2 - 处理无限队列 - 节省cpu 资源

什么是无限队列?例如常见的斐波那契数列, 自然数队列等这次我们用素数队列来举个例子。

2024-05-13 00:44:26 629

原创 Python 生成器常用场景一 取代普通迭代器

在上一篇文章已经简单介绍了生成器 是 一种特殊的迭代器而的确, 大部分普通的迭代器是可以被生成器取代的, 以达到简化代码的目的。

2024-05-12 23:23:58 336

空空如也

空空如也

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

TA关注的人

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