PostgreSQL的系统视图pg_stats

PostgreSQL的系统视图pg_stats pg_stats 是 PostgreSQL 提供的一种系统视图,用于展示当前数据库中的统计信息。这些统计信息由数据库内部的自动统计过程通过 ANALYZE 命令收集,它们帮助查询规划器做出更好的执行决策,从而优化查询性能。 pg_stats 视图的结构 以下是 pg_stats 视图的主要列及其含义: schemaname:表所在的模式名称。tablename:表的名称。attname:列的名称。inherited:统计信息是否包含从继承表中继承的数据。null_frac:列中空值的比例。avg_width:列中其它值的平均宽度(以字节为单位)。n_distinct:列中不同值的估计数量。most_common_vals:最常见的值列表。most_common_freqs:最常见值的频率列表。histogram_bounds:直方图的边界值列表。correlation:列值顺序与物理存储顺序的相关性。most_common_elems: 最常见元素的数组(如果列为数组类型)。most_common_elem_freqs: 最常见元素的频率数组(如果列为数组类型)。elem_count_histogram: 数组大小的直方图(如果列为数组类型)。 查询 pg_stats 视图 可以使用以下 SQL 语句查询 pg_stats 视图,以获取某表或某列的统计信息: 查询特定表的统计信息 SELECT schemaname, tablename, attname, null_frac, avg_width, n_distinct, most_common_vals, most_common_freqs, correlation FROM pg_stats WHERE tablename = 't1'; white=# SELECT white-# schemaname, white-# tablename, white-# attname, white-# null_frac, white-# avg_width, white-# n_distinct, white-# most_common_vals, white-# most_common_freqs, white-# correlation white-# FROM white-# pg_stats white-# WHERE white-# tablename = 't1'; schemaname | tablename | attname | null_frac | avg_width | n_distinct | most_common_vals | most_common_freqs | correlation ------------+-----------+---------+-----------+-----------+------------+------------------+-------------------+------------- yewu1 | t1 | id | 0 | 4 | -1 | | | 1 yewu1 | t1 | name | 0 | 10 | -1 | | | 0.

[AIGC] awk 和 sed

在Unix系统中,有两种强大的用于文本操作的命令工具,它们就是awk和sed。这两个命令工具是每个Linux用户必备的知识之一,尤其对于需要进行文本处理或数据抽取的开发者来说,更加重要。 在实际开发过程中,我们常常需要处理各种数据、日志、配置文件,而这些工作,awk和sed就能够起到事半功倍的效果。 文章目录 Awk 和 Sed 简介深入分析和掌握awk和sedawk初探awk的基本语法awk的工作原理awk中的变量 sed 初探sed基本语法:sed工作原理:sed 地址和地址范围sed 命令sed 应用实例 Awk 和 Sed 简介 Awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或者其它命令的输出。它支持用户自定义函数和动态正则表达式等强大功能。 Sed(stream editor)是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件所有的行处理完毕。因此,sed和管道(|)配合可以将数据进行加工,而和重定向配合可以把加工后的数据放到文件里。Sed可以处理磁盘文件里的数据,但它是把数据先读到内存中处理后,再屏幕上显示出来,而处理过程中,数据仍在磁盘文件里,而原来的文件内容并没有改变。 深入分析和掌握awk和sed 接下来我会写一篇详细的教程来深入学习和掌握awk和sed这两个强大的文本处理工具,会针对初学者使用一些简单清晰的例子来讲解它们。看完我相信你对Awk和Sed会有一个全面深入的了解。 awk初探 Awk是一种编程语言,用于在unix/linux下对文本和数据进行处理。根据这篇文章,我们可以看到以下一些Awk命令的基本示例: awk的基本语法 一般地,awk命令的格式如下: awk 'pattern {action}' file(s) 这里,awk从file(s)中读取行,如果pattern匹配,则执行action。 awk的工作原理 当awk命令运行时,它将会进行以下步骤: 从一或多个文件(或stdin)中读取记录(默认情况下,一个记录就是一行)。对每一条记录,从头到尾测试是否匹配每个模式。如果记录符合某个模式,则执行该模式所关联的动作。继续处理输入文件,直到全部读取完毕。 例如,以下命令对于文件(file.txt)中每一行,如果该行匹配到模式(“3”),则打印出该行: awk '/3/ {print $0}' file.txt awk中的变量 Awk提供了很多内建变量来帮助我们进行操作,具体可以参阅这篇文章。例如,以下命令可以打印出文件(file.txt)的总行数: awk 'END {print NR}' file.txt 其实当然,还有很多关于Awk的其他强大功能,像是数组和内置函数等等,但这就不在这篇指南的讨论范围之内了。更深入的学习,我推荐你去阅读这本书。 当探索和使用sed(流编辑器)时,以下是一些您需要了解的基本概念和语法。 sed 初探 sed基本语法: sed <options> '<command>' <file> 其中,options是可选的,用于指定sed的一些选项;command是sed命令,用于指定要执行的操作;file是要处理的文件。 sed工作原理: sed按行逐步读取输入文件,对每一行应用指定的命令,并输出结果。默认情况下,sed将原始文件内容直接写回到标准输出,也可以通过重定向将输出保存到文件中。 sed 地址和地址范围 在sed命令中,可以使用地址或地址范围来定位要操作的行。地址可以是行号、正则表达式、以及特殊的模式空间标记(如$表示最后一行)。 sed 命令 sed提供了多个命令,用于执行各种操作,如查找替换、删除行、添加行等。常用的sed命令包括: s/pattern/replacement/:在每一行中查找匹配指定模式的内容,并替换为指定的内容。d:删除匹配指定条件的行。a:在指定条件的行后插入新行。i:在指定条件的行前插入新行。p:打印指定条件的行。n:读取下一行,并从该行开始执行后续命令。 sed 应用实例 以下是一些sed的应用实例:

chrome-base源码分析(1)macros模块

Chrome-base源码分析(2)之Macros模块 Author:Once Day Date:2024年6月29日 漫漫长路,才刚刚开始… 全系列文章请查看专栏: 源码分析_Once-Day的博客-CSDN博客 参考文档: macros - Chromium Code SearchChrome base 库详解:工具类和常用类库_base::repeatingcallback-CSDN博客For Developers (chromium.org)手动代码中包含C++20 __VA_OPT__错误的类函数宏-腾讯云开发者社区-腾讯云 (tencent.com) 文章目录 Chrome-base源码分析(2)之Macros模块1. 概述2. concat.h3. if.h4. is_empty.h5. remove_parens.h 1. 概述 chrome-base源码中macros模块是一个比较简单的模块,定义了一些简单的宏,有五个源文件,下面一一介绍。 2. concat.h 源码如下: // A macro that expands to the concatenation of its arguments. If the arguments // are themselves macros, they are first expanded (due to the indirection // through a second macro). This can be used to construct tokens.

【C++】 ——【模板初阶】——基础详解

目录 1. 泛型编程 1.1 泛型编程的概念 1.2 泛型编程的历史与发展 1.3 泛型编程的优势 1.4 泛型编程的挑战 2. 函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 2.6 函数模板的特化 2.7 函数模板的使用注意事项 2.8 函数模板的高级用法 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 3.3 类模板的特化 3.4 类模板成员函数的定义 3.5 类模板的使用注意事项 3.6 类模板的高级用法 结论 专栏:C++学习笔记 第一卷:C++ ———前言知识 第二卷:【C++】——入门基础知识 第二卷升华:【C++】——入门基础知识超详解 第三卷:第一篇【C++】————类与对象(上)-基础知识 第三卷:第一篇升华:剖析【C++】——类与对象(上)超详解——小白篇 第三卷:第二篇:剖析【C++】——类与对象(中)——小白篇—超详解 第三卷:第三篇:剖析【C++】——类和对象(下篇)——超详解——小白篇 第四卷:【C/C++】——小白初步了解——内存管理 在C++中,模板是一种强大的特性,可以实现代码的泛型编程,从而减少代码的重复,提高代码的复用性和可维护性。本文将详细讲解C++模板,涵盖以下几部分内容: 泛型编程函数模板类模板 1. 泛型编程 1.1 泛型编程的概念 泛型编程是一种编程范式,旨在编写与类型无关的代码,使得同一段代码能够处理不同的数据类型。这种编程方式提高了代码的通用性和复用性。在C++中,模板是实现泛型编程的核心机制。 1.2 泛型编程的历史与发展 泛型编程的概念最早由Alexander Stepanov和David Musser在1980年代提出。1990年代,泛型编程在C++标准模板库(STL)的实现中得到了广泛应用。STL提供了一组基于模板的容器、算法和迭代器,这些组件极大地提高了C++程序的效率和灵活性。 1.3 泛型编程的优势 代码复用:模板允许开发人员编写一次代码,适用于多种数据类型,减少了代码的重复。类型安全:模板在编译时进行类型检查,避免了运行时错误。高效:模板在编译时实例化,生成的代码与手写的特定类型代码一样高效。 1.

【C++深度探索】继承机制详解(一)

hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页:大耳朵土土垚的博客 💥 所属专栏:C++入门至进阶 这里将会不定期更新有关C++的内容,希望大家多多点赞关注收藏💖💖 目录 1.继承的概念2.继承定义2.1定义格式2.2访问限定符2.3继承方式 3.基类和派生类对象赋值转换4.继承中的重定义(隐藏)5.派生类的默认成员函数✨构造函数✨拷贝构造✨赋值运算符重载✨析构函数 6.结语 1.继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类或子类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。 2.继承定义 2.1定义格式 下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。 //基类或父类 class Person { public: void Print() { cout << "name:" << _name << endl; cout << "age:" << _age << endl; } protected: string _name = "peter";// 姓名 int _age = 18; //年龄 }; //派生类或子类 class Student : public Person { protected: int _stuid; // 学号 int _major; //专业 }; 2.2访问限定符 C++类的访问限定符用于控制类的成员(包括成员变量和成员函数)在类的外部的可访问性。C++中有以下三种访问限定符:

分治精炼宝库-----快速排序运用(⌯꒪꒫꒪)੭

目录 一.基本概念: 一.颜色分类: 二.排序数组: 三.数组中的第k个最大元素: 解法一:快速选择算法 解法二:简单粗暴优先级队列 四.库存管理Ⅲ: 解法一:快速选择 解法二:简单粗暴排序 解法三:简单粗暴优先级队列 一.基本概念: 🐻在计算机科学中,分治法是一种很重要的算法。字面上的解释就是“分而治之”,就是把一个复杂的问题分成两个或则更多个相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算。n=2时,只要作一次比较即可排好序。n=3时只要作3次比较即可,…。而当n较大时,问题就不那么容易处理了。要想直接解决一个规模较大的问题,有时是相当困难的。🧐分治策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。 当我们对分治算法有了以上的一定了解后,来练习几道题目加深理解~~ 注(本文承接上文:分治精炼宝库----归并排序应用( ´◔︎ ‸◔︎`)_用分治法归并排序-CSDN博客) 一.颜色分类: 说明:这里我们用到的快速排序会使用数组分三块的思想(下文会详细说明),从数组中随机取一个元素key,将数组划分为三个区域,区域① < key ,区域 ② = key ,区域③ > key 题目链接:75. 颜色分类 - 力扣(LeetCode) 算法思路: 使用左指针left和右指针right来划分数组,初始时left为-1,right为数组长度n。遍历数组nums,使用变量i作为当前遍历的索引。如果nums[i]等于0,则将nums[i]与left+1位置的值交换,并将left和i都加1。如果nums[i]等于1,则继续遍历下一个值。如果nums[i]等于2,则将nums[i]与right-1位置的值交换,并将right和i都减1。重复步骤4-6,直到遍历完成整个数组。 核心步骤: 代码详解: class Solution { public void sortColors(int[] nums) { //将数组划分为三个区域[0,1,2] int n = nums.length; for(int i = 0,left = -1,right = n;i < right;){ if(nums[i] == 0){ swap(nums,++left,i++); }else if(nums[i] == 1){ i++; }else{ swap(nums,--right,i); } } } public void swap(int[] nums,int i,int j){ int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } } 运行结果:

AI陪伴产品的情感设计:从孤独感到恋爱感评分:9/10

本文主要阐述三个话题: 1. 市面上有哪些AI陪伴产品? 2. 我们团队要怎么做? 3. 为什么要做? 市面上有哪些陪伴类产品? Role-play(角色扮演) 在当前市场上,有不少以角色扮演为核心的AI陪伴产品,例如筑梦岛、talkie、Paradot、Janitorai、Venusai、Chub、酒馆sally tavern等。这些产品都属于Role-play类,让用户体验不同的角色和世界观,最接近这种体验的可能是剧本杀。Role-play的优缺点也都非常明显。 优点: 1. 新鲜刺激:体验多样性丰富,是介于小说和游戏之间的一种新型媒介,几乎可以提供无限的剧情走向体验。 2. 丰富的体验:用户可以沉浸在各种虚拟角色和世界中,获得丰富的体验。 缺点: 1. 深度链接难:很难和众多虚拟角色产生深度链接,玩家始终在扮演一个「他者」。 2. 核心任务:这些角色的核心任务是推进剧情,而不是关心用户的个人体验。 Role-play的生态位主要是探索、猎奇感、虚拟体验。未来可能会向更好的视觉、听觉感官发展,甚至可能成为某种互动短剧或冒险游戏的形态。然而,Role-play对用户的想象力消耗很大,普通用户如果没有训练有素的文学想象力,剧情的发展可能会迅速坍缩。 乙女游戏 乙女游戏如《恋与深空》和《世界之外》,以高品质的3D视觉和声音体验以及情绪价值验证了情绪市场的购买力。 优点: 1. 高品质体验:3D视觉和声音体验非常出色,带给用户沉浸感。 2. 情绪价值:用户能够获得较高的情绪价值。 缺点: 1. 团队管理问题:产品各个模块一致性差,美术风格不统一。 2. 内容质量下降:主线剧情团队无法稳定产出后续剧情,剧本内容质量下降严重。 3. 玩法割裂:核心gameplay玩法和剧情割裂,复杂的氪金系统影响用户体验和产品寿命。 早期的Replika Replika是我们研究最多的,可以说我们最早的动机就是做一个更好的Replika。 优点: 1. 高质量的prompt:市面上和PI不相上下的prompt水平。 2. 多模态尝试:有记忆系统,支持web、mobile、XR多端同步。 3. 市场教育:教育了「人机恋」市场。 缺点: 1. 团队一致性差:产品团队的一致性差,架构主要由web出身的人主导,渲染层被单独拎出来,没有互动设计。 2. 基座升级问题:基座是GPT-3,可能出于成本考虑没有跟进升级。 Digi有不错的画面渲染表现和卡通夸张的角色动画,聊天能力尚可,但缺乏长期记忆和其他互动形式,产品还处于早期阶段。 情绪疗愈 PI、Rosebud、林间聊愈室和好心情都是情绪疗愈类的产品。 PI: 1. 优点:prompt打磨得很好,有不错的chat基座能力。 2. 缺点:缺乏记忆系统和具象化的形象,容易被当成心理咨询工具使用。 Rosebud: 在自我探寻和心理干预方面有一些不错的灵感。 林间聊愈室: 团队很关心心理学方法的使用,产品构建得很温柔,有很多值得学习的细节。 VR游戏/黄油 VR女友、VAM、TOGETHER BnB、黑白妹和箱娘/桌宠都是较为热门的VR游戏和黄油产品。 VAM: 我们超级喜欢VAM!搞黄色永远是技术的第一驱动力。VAM就是VR版的sally tavern,社区反馈很好,技术点可以被打磨得更易用,更精美,让更多普通消费者可以开箱即用。 VR女友:

docker k8s

1、docker是什么? 将环境和程序一起打包给到 服务器运行的工具软件。 2、基础镜像base image是什么? 操作系统:用户空间、内核空间 阉割操作系统,利用其的用户空间(因为应用程序运行在用户空间),文件系统,依赖库打包成一个类似“压缩包”的文件。这就是所谓的基础镜像base image。 3、dockerfile是什么? 有了base image还不够,我们还需安装一些依赖和创建一些文件夹,最后才是运行我们的目标应用程序。因此我们将所有的要做的事情以命令行的形式分行列举出来,类似于一份todo List。像这份列清楚了从操作系统到应用服务启动需要做哪些事情的清单文件就是所谓的dockerfile。 4、container image(容器镜像)是什么 dockerfile只是描述了做哪些事情,并没开始做,用命令docker build执行的时候,docker软件就按照dockerfile说明,一行行构建环境加应用程序,最终将这个环境和应用程序打包成一个类似“压缩包”的东西,我们把它称之为容器镜像。 只要将容器镜像传到任意一台服务器对该“压缩包”进行“解压缩”,就可以同时运行环境和程序。 5、registry是什么? 服务器那么多,挨个将容器镜像传到上去,压力给到发送方的网络带宽了。 因此弄一个镜像仓库,通过docker push到镜像仓库,有需要的服务器通过docker pull将镜像拉到机器上,这个负责管理镜像仓库推拉能力的服务叫做docker registry。 6、容器是什么? 通过指令docker pull在服务器上拿到容器镜像,通过docker run,将这个类似压缩包的容器镜像进行解压缩,获得一个独立的环境和应用程序,并运行起来,这样一个独立的环境和应用程序就是所谓的容器。我们可以在一个操作系统上同时跑多个容器,且这些容器互相独立和隔离。 7、容器和虚拟机的关系 区别:容器不带操作系统,虚拟机带有一个操作系统。容器只包含核心依赖库和配置文件等必要组件,它利用一个namespace的能力,让它看起来像一个独立的操作系统。再利用一个cgroup的能力限制它能使用的计算资源。因此容器是一个自带独立运行环境的特殊进程,底层用的是宿主机的操作系统内核。 8、docker 的架构原理 经典的client-server架构。client对应docker-cli,sever对应docker daemon。我们在命令行里敲docker命令,使用的就是docker-cli,docker-cli会解析我们输入的command命令,然后调用docker daemon守护进程提供的restful-api,守护进程收到命令后,会根据命令创建和管理各个容器。 docker daemon架构: docker daemon分成docker server和engine两层。docker server是个http服务器,负责对外提供操作容器和镜像api。接口接收到api请求后,会分发任务给engine层,engine层负责创建job,由job实际执行各种工作。 不同的docker命令会执行不同类型的job任务。 (1)docker build命令执行过程。 job根据dockerfile指令,像包洋葱皮似的一层层构建容器镜像文件。 (2)docker pull/push命令执行过程。 镜像推拉操作,job会根据外部的docker registry交互将镜像上传/下载。 (3)docker run命令执行过程。 job基于镜像文件调用containerd组件,驱使runC组件创建和运行容器。 9、docker compose是什么?多个容器一整套的部署。 docker容器本身是一个特殊的进程,但我们想部署多个容器,且对这些容器的顺序有一定的要求。比如一个博客,先启动数据库,再启动身份验证服务,最后启动博客微服务。因此普通做法是依次启动服务,但有更优雅的启动方式,通过一个yaml文件,写清楚要部署的容器有哪些,以及部署顺序,以及容器占有的cpu和内存信息。只需要通过docker compose命令解析yaml文件,将容器们一键按照顺序部署,就完成一整套的部署。 10、docker swam 它解决的是一整套服务,在多台服务器上的集群部署问题。如在a服务器上坏了,可以部署到b服务器上。还能根据需要对应用做扩缩容。 11、docker和k8s的关系。 k8s它会在多台node的服务器上调度pod进行部署和扩缩容。每个pod含有多个container,每个container本质上是一个服务进程。 k8s和swam的功能很像。 docker部署的容器就是k8s调度的pod里的container,它们都叫容器。docker compose基于多个docker container创建一整套服务,其实就是k8s里的pod。而docker swarn做的事情和k8s一样,本质就是在调度pod。 k8s称之为容器编排引擎,将它理解为以api编程的方式管理安排各个容器的引擎。

记一次小程序渗透

这次的小程序渗透刚好每一个漏洞都相当经典所以记录一下。 目录 前言 漏洞详情 未授权访问漏洞/ 敏感信息泄露(高危) 水平越权(高危) 会话重用(高危) 硬编码加密密钥泄露(中危) 参数溢出(低危) 跨域资源共享不当(低危) 总结 前言 关于小程序渗透的方法在前面文章有提及,可以自行去查看学习。 APP渗透总结_app渗透测试 和 web一样么-CSDN博客 漏洞详情 未授权访问漏洞/ 敏感信息泄露(高危) 这是一个经典的漏洞,当抓取数据包出现通过openid或者number等进行查询信息时,可以将这个条件删去,查看是否存在未授权访问漏洞。 把这个openid删去,发现可以未授权访问所有用户的信息 更改pagesize即可获取所有人员的信息,这是一个非常严重的信息泄露。 水平越权(高危) 可以通过修改openid来访问他人的信息列表(openid可以从上面信息泄露获得),造成水平越权漏洞。 修改openid,查看他人的信息列表 会话重用(高危) 测试用户退出系统后服务器的session还未失效。即使用户已经退出登录,攻击者依然可以修改用户的信息。 先在登录时抓取用户修改信息的数据包,然后退出登录,重放数据包,发现修改信息成功。 硬编码加密密钥泄露(中危) 可以使用unvelir工具对小程序apk进行反编译,然后使用Fortify工具进行代码扫描,扫描出来代码中出现硬编码加密密钥,也使用微信开发者工具查看反编译后的源代码找到硬编码的加密密钥。 这里的是一个百度地图的加密密钥,攻击者如果获取密钥,可以进行大量请求地图服务资源进行消耗,从而影响正常用户的使用体验;以及可以利用密钥创建虚假的活动中心、停车等信息,引导用户前往,算一个中危漏洞。 参数溢出(低危) 参数溢出也是一个非常常见的漏洞,主要出现在输入框内,由于前端没有进行限制,导致攻击者可以输入长字符串,引发服务器崩溃。 跨域资源共享不当(低危) 系统允许服务器响应任意来源的请求,存在跨域资源共享配置不当。 抓取数据包,修改origin参数,查看返回包数据 总结 总的来说,在遇到根据ID类似查询的,要有意识尝试未授权访问漏洞,因为可能主要的思路还是进行水平越权,也要关注会话重用,这一个肯定是多数没有了解到的,另外的硬编码加密密钥这种就比较少出现了,参数溢出和跨域资源共享这两个也要足够敏锐。(这些话是作者的心理独白,对自己的警示)。

百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现

百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现 尼恩:百亿级数据存储架构起源 在40岁老架构师 尼恩的读者交流群(50+)中,经常性的指导小伙伴们改造简历。 经过尼恩的改造之后,很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会,拿到了大厂机会。 这些机会的来源,主要是尼恩给小伙伴 改造了简历,植入了亮点项目、黄金项目。 尼恩的 亮点项目、黄金项目 需要持续迭代。下一个亮点项目、黄金项目是:百亿级数据存储架构。 同时,小伙伴在面试时,经常遇到这个面试难题。比如,前几天一个小伙伴面试字节,就遇到了这道题 阿里面试:百亿级数据存储,怎么设计? 字节面试:百亿级数据存储,只是分库分表吗? 于是,尼恩组织小伙伴开始研究和 设计 《百亿级数据存储架构》,帮助大家打造一个新的黄金项目,实现大厂的梦想。 已经发布的文章包括: 字节面试:百亿级存储,怎么设计?只是分库分表? 100亿级任务调度篇:从0到1, 从入门到 XXLJOB 工业级使用 高并发搜索ES圣经:从0到1, 从入门到 ElasticSearch 工业级使用 超级底层:10WQPS/PB级海量存储HBase/RocksDB,底层LSM结构是什么? 一:百亿级 海量存储数据服务的业务背景 很多公司的业务数据规模庞大,在百亿级以上, 而且通过多年的业务积累和业务迭代,各个业务线错综复杂,接口调用杂乱无章,如同密密麻麻的蛛网,形成了难以理清的API Call蜘蛛网。 API 调用蜘蛛网 如图 所示: 这种API 调用蜘蛛网的特点是: 第一,各个业务线互相依赖。A向B要数据,B向C请求接口,C向A需求服务,循环往复,令人目不暇接。 第二,各自为政,独立发展。各业务线各有财产,各自为营,宛如诸侯割据,拥兵自重。各自一滩、烟囱化非常严重。 第三,无休止的跑腿成本、无休止的会议沟通成本,沟通和协调成本让人望而生畏。 如何降低成本,降本增效, 迫切需要进行各个业务线的资源的整合、数据的整合、形成统一的海量数据服务,这里成为为数智枢纽(Data Intelligence Hub)服务/ 或者百亿级 数据中心服务,通过 统一的 数智枢纽(Data Intelligence Hub)服务 将这错综复杂的蜘蛛网变成简明的直线班车。 数智枢纽(Data Intelligence Hub)服务 / 或者百亿级 数据中心服务 如下图 所示: 数智枢纽(Data Intelligence Hub)服务/ 或者百亿级 数据中心服务带来的几个优势: 第一,将省去不必要的接口调用。业务穿插不再混乱,减少无休止的会议沟通,解决数据难以获取、速度缓慢的问题。 第二,统一数据中心将大大节省产品和开发人员的时间,提升整体工作效率。各个业务线在新的系统下将协同作战,资源高效利用,真正实现事半功倍。

jenkins 发布服务到linux服务器

1.环境准备 1.1 需要一台已经部署了jenkins的服务器,上面已经集成好了,jdk、maven、nodejs、git等基础的服务。 1.2 需要安装插件 pusblish over ssh 1.3 准备一台额外的linux服务器,安装好jdk 2.流程描述 2.1 配置jenkins,包括pushlish over ssh,这里就不过多介绍maven、git、jdk等的配置了,这些全部在全局工具配置里面配置就行了。 2.2 创建jenkins任务,配置相关脚本。 2.3 部署服务到另一台服务器。 3.jenkins配置 3.1 配置publish over ssh 打开系统配置,找到 publish over ssh配置项 这里的参数重点说下: name:ssh的名称。 hostname:主机ip。 username:用户名。 remote directory:这个主要是指你远程主机的目标目录,说白了就是你要把你打好的包,放到哪个目录下,这里你可以配根目录,也可以直接配到最终目录,可以在创建任务时与其进行组装。 点击高级进行密码配置 至此,pushlish over ssh 配置完成。 3.2 创建jenkins任务 3.2.1创建一个自由风格的软件项目 git配置就不过多描述了,创建凭证,配置git地址,就行了 在构建环境中的项目里,选择图中勾选的这个,这个通过英文大概意思就行,在执行构建之前,可以通过ssh执行命令,我这里配置了一个执行脚本停掉java项目的命令。 在name中选择在上一步创建的publish over ssh。 在exec command 配置命令。 name下的高级 verbose output in console,可以勾上,用来查看脚本的执行日志。 3.2.2 配置打包等的执行命令 在build steps 中配置相关脚本 3.2.2 配置打包后要执行的相关命令 点击增加构建步骤 选择send files or execite commands over ssh.

完美世界|单机版合集(共22个版本)

前言 我是研究单机的老罗,今天给大家带来的是完美世界的单机版合集,一共22个版本。本人亲自测试了一个版本,运行视频如下: 完美世界|单机版合集 先看所有的版本的文件,文件比较大,准备好空间,差不多每个版本都有20G左右。 我随便抽了个 完美世界国内版138V78端 版本搭建,下面介绍下我搭建的步骤。(全部版本会在下面搭建步骤给出) 我们先解压 03.完美世界国内版138V78端.7z ,这个是虚拟机镜像文件。 此游戏架设需要安装虚拟机, 没有虚拟机的请移步: 啥都搞的程序员:虚拟机VM12_安装视频教程_安装激活1 赞同 · 0 评论文章 虚拟机安装好后,首先打开虚拟机,左上角编辑->虚拟网络编辑器, 选择VMnet8 ,下面更改设置, 然后在选择VMnet8 ,修改成下面设置192.168.200.0,确定 然后在虚拟机里面左上角文件,分别打开 剑侠U镜像 和 剑侠XP镜像 的vmx文件: 文件我已经整理好了: gitee颠康姆/hadluo/game_code4.git , 上面所有版本的文件也在里面。 打开后,虚拟机的左边会出现这个系统: 我们打开镜像,开启虚拟机(弹框点击:我已移动该虚拟机),等待出现下面后。 我们输入账号root , 密码:123456 登录到linux系统。(输入密码时,会无反应,但是实际已经输入了),输完回车登录: 登录之后,我们输入启动命令: ./start 等待一两分钟后,我们启动客户端, 解压 “04.完美世界赤炎赞歌 客户端-版本号1274.zip”,然后启动 启动后会进入游戏,但是看不到下面界面,我们需要按下 ESC 键,就出来了。 注册账号: http://192.168.200.100/iweb/ 然后我们输入账号登录游戏,记得勾选强制登录。 GM工具 后台地址: http://192.168.200.100/iweb/ 用户名:admin 后台密码:123456

c# 往window注册表写入数据后,未写入指定的路径

c# 往window注册表写入数据后,未写入指定的路径 最近在用c#开发一个往注册表写入数据的一个项目,发现将输入写入 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell 这个路径时,数据并没写入到这个路径里面的注册表,而是写入 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MyLogin 解决方案:创建c#项目时不要选择.net framework框架,要选.net core框架。我自己选择的是.net core 5.0的版本

苹果电脑畅玩《魔兽世界巫妖王之怒》怀旧服国服 苹果电脑怎么玩魔兽世界手游?PD虚拟机能玩魔兽世界吗 Mac运行Windows游戏

2024年6月27日,万众期待的经典游戏魔兽世界重启中国服务器,并开启了免费畅玩服务,一直到7月10日都不会消耗游戏时间,不用充值点卡,很多Mac电脑用户也想第一时间回归体验。 特殊说明:由于魔兽世界国服刚刚回归,所以进服人数过多,导致可能存在无法进入游戏的情况,这并不是软件问题导致,请耐心排队等待。经网友测试分享,MacBook Air M1 8GB 低配置版本也可以成功安装运行游戏。 虽然魔兽世界本身是跨平台的游戏,支持Windows和Mac系统,由于官方版本更新不同步等情况,有些玩家可能会考虑在虚拟机中运行游戏,以便同时享受其他操作系统的优势。本文将探讨如何在苹果电脑畅玩《魔兽世界巫妖王之怒国服》怀旧服教程。 魔兽世界是暴雪娱乐(Blizzard Entertainment)开发的,支持Mac和Windows两大平台。要在Mac上直接运行魔兽世界,可以按照以下步骤进行: 一、直接在Mac上玩魔兽世界 1. 下载和安装游戏客户端: - 访问暴雪并下载Battle.net应用程序。 - 安装Battle.net应用程序,并使用你的暴雪账号登录。 - 在Battle.net应用程序中找到魔兽世界,点击安装,选择适合的安装路径并等待安装完成。 2. 配置游戏设置: - 安装完成后,打开魔兽世界客户端,进入游戏设置。 - 调整图像设置和其他选项,以获得最佳的游戏体验。 3. 运行游戏: - 点击“播放”按钮,开始游戏,享受魔兽世界的奇幻冒险。 二、使用Parallels Desktop虚拟机玩魔兽世界 Parallels Desktop(简称PD)是一款流行的虚拟机软件,允许Mac用户在其设备上运行Windows应用程序。一些玩家可能会问,是否可以在PD虚拟机中运行魔兽世界。以下是具体步骤和注意事项: 1. 安装Parallels Desktop: - 下载并安装Parallels Desktop。 Parallels Desktop Mac标准永久版免费体验:https://souurl.cn/xmgwMz - 根据提示安装Windows操作系统,配置好虚拟机环境。 2. 安装Windows和Battle.net: - 在虚拟机中启动Windows操作系统。 - 下载并安装Battle.net应用程序。 - 在Battle.net应用程序中下载并安装魔兽世界。 3. 配置虚拟机设置: - 确保分配足够的CPU和内存资源给虚拟机,以确保游戏流畅运行。 - 开启3D加速功能,提高游戏的图形性能。 4. 运行魔兽世界: - 在虚拟机的Windows环境中打开魔兽世界客户端,开始游戏。 三、使用CrossOver类虚拟机软件玩魔兽世界 准备工作: 1、下载CrossOver软件。 2、下载Windows版战网客服端【官方下载地址】 3、保持网络环境通畅和足够的电脑硬盘空间,用于下载游戏本体 安装游戏教程: 1、安装CrossOver软件。【点击查看安装教程】 CrossOver24 Mac中文免费安装包:https://souurl.

【每日刷题】Day77

【每日刷题】Day77 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 159. 库存管理 III - 力扣(LeetCode) 2. LCR 075. 数组的相对排序 - 力扣(LeetCode) 3. 1346. 检查整数及其两倍数是否存在 - 力扣(LeetCode) 1. LCR 159. 库存管理 III - 力扣(LeetCode) //思路:TopK问题,堆排序。 void Swap(int* x,int* y) { int tmp = *x; *x = *y; *y = tmp; } //向下调整 void AdjustDown(int* arr,int parents,int size) { int child = parents*2+1; while(child<size) { if(child+1<size&&arr[child+1]<arr[child]) child++; if(arr[child]<arr[parents]) Swap(&arr[child],&arr[parents]); else break; parents = child; child = parents*2+1;

【C语言】--分支和循环(1)

🍿个人主页: 起名字真南 🧇个人专栏:【数据结构初阶】 【C语言】 目录 前言1 if 语句1.1 if1.2 else1.3 嵌套if1.4 悬空else 前言 C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构。 我们可以用if、switch实现分支结构,for、while、do while实现循环结构。 1 if 语句 1.1 if if(表达式) { 语句 } 表达式成立(为真),则执行语句,表达式不成立(为假),则语句不执行。 在C语言中 0 表示假,非 0 表示真。 例子:输入一个整数判断是否为偶数 #include<stdio.h> int main() { int num = 26; if (num % 2 == 0) { printf("偶数"); } return 0; } 1.2 else else语句一般是和if语句一起使用 if(表达式) { 语句一 } else { 语句二 } 上面的示例表示如果表达式成立则执行语句一,如果条件不成立则执行语句二。 一个if只对应一个else 例子:输入一个整数判断是奇数则输出奇数,不是则输出偶数。 #include<stdio.h> int main() { int num = 0; scanf("

使用Python绘制极坐标图

使用Python绘制极坐标图 极坐标图极坐标图的优点使用场景 效果代码 极坐标图 极坐标图(Polar Chart)是一种图表类型,用于显示在极坐标系中的数据。极坐标图使用圆形坐标系,角度表示一个变量的值,半径表示另一个变量的值。常用于显示周期性数据或具有方向性的数据信息。 极坐标图的优点 展示周期性数据:极坐标图非常适合展示周期性数据,如风向、潮汐、市场周期等。直观显示方向性:极坐标图可以直观显示数据的方向性和对称性。多变量比较:极坐标图可以同时显示多个变量的数据,便于比较和分析。 使用场景 气象数据:如风速和风向的关系。市场周期:如市场销售数据的季节性变化。生物节律:如生物钟的周期性活动。方向数据:如交通流量的方向分布。 效果 代码 import plotly.express as px import pandas as pd # 示例数据 data = { '方向': ['北', '东北', '东', '东南', '南', '西南', '西', '西北'], '值': [1, 2, 3, 4, 5, 4, 3, 2] } df = pd.DataFrame(data) # 创建极坐标图 fig = px.line_polar(df, r='值', theta='方向', line_close=True, title='极坐标图示例') # 显示图表 fig.show()

小白学python(第四天)顺序与分支篇

这几天因为个人原因,python篇会更新比较慢,还望大家谅解,那么废话不多说,我们现在就进入正题 顺序篇 这个没啥好说的,就是自上而下,依次执行 分支篇 条件(if)语句语法格式: if 条件: 语句 语句 注意:if语句的执行语句前需要有缩进,且if的条件不能用括号。 if-else语句的语法格式: if 条件: 语句 else: 语句 if - else if -else语句语法格式: if 条件: 语句 elif 条件2 语句 else: 语句 注意:if的条件后的冒号不能少,else后面也有冒号 文章总结 if语句模板: if 条件: 语句 #语句前的空格不能少哦 else:#if和else后都有冒号 语句 补充: 类型转换格式: 变量名 = 类型(变量名) 那么今天的python内容就先到这里了,我们下次见

力扣每日一题 6/30 记忆化搜索/动态规划

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 494.目标和【中等】 题目: 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。 返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。 示例 1: 输入:nums = [1,1,1,1,1], target = 3 输出:5 解释:一共有 5 种方法让最终目标和为 3 。 -1 + 1 + 1 + 1 + 1 = 3 +1 - 1 + 1 + 1 + 1 = 3 +1 + 1 - 1 + 1 + 1 = 3 +1 + 1 + 1 - 1 + 1 = 3 +1 + 1 + 1 + 1 - 1 = 3 示例 2:

Android Studio添加依赖 新版 和 旧版 的添加方式(Gradle添加依赖)(Java)

旧版的(在线添加) 1找 文件 在项目的build.gradle文件中添加依赖(在下面的节点中添加库 格式 ’ 组 :名字 : 版本号 ‘ ) dependencies { implementation 'com.example:library:1.0.0' } implementation '组:名字:版本号' 添加完成之后上方会出现如下图提示(点击现在同步)(Sync Now)(同步完成即可) 新版的(在线添加) 1找到如下文件 2在如下节点中添加图(格式 implementation (“组”,“名字”,“版本号”)) 之后在点击如下的提示现在同步即可 同步完成即可 离线版(新版与旧版的区别不大) MQTT库下载地址 1下载库 创建libs目录(如果尚未创建): 在你的Android项目的app目录下,创建一个名为libs的目录(如果还没有这个目录的话)。 将下载的文件放入libs目录: 将下载的aar或jar文件复制到libs目录中 2 3将文件复制到刚创建的文件中 4将库添加到问项目中(右键系统会自动添加到项目中)