2、使用openpyxl库:不支持的 .xls格式,支持的格式:.xlsx、.xlsm、.xltx、.xltm,可以将.xls 转化为 xlsx格式
- 安装openpyxl,使用 pip install openpyxl
- 导入:import | from openpyxl import xxx
2、读取的步骤 1、读取单元格数据
获取表格的工作簿对象(用到 openpyxl中的load_workbook模块)得到表单,通过sheet名称 — sheet获取单元格 — cell获取单元格数据 — cell.value 实战演练:
excel表格如下:
代码实战:
from openpyxl import load_workbook import pathlib # 获取excel的相对路径 cur_path = pathlib.Path(__file__).absolute() excel_path = cur_path.parent/"testcase64.xlsx" # 第一步,获取表格的工作簿对象 wb = load_workbook(excel_path) print(wb) # <openpyxl.workbook.workbook.Workbook object at 0x03EFCD60> # 第二步,得到表单——sheet sheet = wb["login"] print(sheet) # 第三步,获取单元格数据 cell = sheet.cell(row=1,column=3) print(cell) # 第四步,获取单元格数据 -- value cell_value = sheet.
想要达到的效果 注意使用的是fastjson
TestA这个类里面有一个字段,类型是一个枚举类EnumS,当使用JSON转String的时候,这个时候转出来的结果就是展示枚举的枚举名称
序列化 不要枚举名称,需要获取枚举中的内容,需要加上两种注解,分别为:
@JSONType(serializeEnumAsJavaBean = true)//加到枚举类上面 @JSONField(name = "枚举字段名")//加到枚举字段上面 完整版如下
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONType; /** * @Version 1.0 * @Author:xh * @Date:2024/4/11 * @Content: */ @JSONType(serializeEnumAsJavaBean = true) public enum EnumS { ONE(1, "one"), TWO(2, "two"); @JSONField(name = "value") private int value; @JSONField(name = "name") private String name; EnumS(int value, String name) { this.value = value; this.name = name; } public int getValue() { return value; } public void setValue(int value) { this.
1.将电脑和手机连接到同一WIFI 2.手机连接usb,连接到AndroidStudio,和平时连线调试一样。 3.打开AndroidStudio下方Terminal便可以开始输入adb命令。 4.输入 adb devices 命令查看设备 adb devices 效果如下
5.设置设备端口号命令 adb tcpip 5555 端口号5555可以随意写不占用即可。 adb tcpip 5555 效果如下 6.查看手机设备IP地址然后输入命令链接设备 adb connect 192.168.50.97:5555 IP 和端口号替换成自己得即可。 adb connect 192.168.50.97:5555 效果如下 连接成功
在MySQL中,我们经常会需要取整数。本篇文章将详细介绍MySQL中取整数的多种方法。
一、使用ROUND函数 ROUND函数用于将一个数四舍五入到指定的小数位数。如果小数位数为0,则返回整数部分。
为小数位数。
SELECT ROUND(3.14159, 0); -- 结果为3
SELECT ROUND(3.14159, 1); -- 结果为3.1
SELECT ROUND(3.14159, 2); -- 结果为3.14
二、使用CEILING函数 CEILING函数用于将一个数向上取整到最接近的整数。
CEILING(x)
其中,x为要取整的数。
SELECT CEILING(3.14159); -- 结果为4
三、使用FLOOR函数 FLOOR函数用于将一个数向下取整到最接近的整数。
FLOOR(x)
其中,x为要取整的数。
SELECT FLOOR(3.14159); -- 结果为3
四、使用TRUNCATE函数 TRUNCATE函数用于截取一个数的小数部分,返回指定位数的数字。
为小数位数。
SELECT TRUNCATE(3.14159, 0); -- 结果为3
SELECT TRUNCATE(3.14159, 1); -- 结果为3.1
SELECT TRUNCATE(3.14159, 2); -- 结果为3.14
大家好,今天我们来详细介绍一下ControlNet的预处理器IP-Adapter。简单来说它就是一个垫图的功能,我们在ControlNet插件上传一张图片,然后经过这个预处理器,我们的图片就会在这张上传的图片的基础上进行生成。该预处理器提供的垫图功能,让SD的实用性再上一个新的台阶,在很多方面将彻底改变SD的使用流程。
一.Ip-Adapter是什么
IP-Adapter,它的全称是 Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models,翻译成中文就是:用于文本到图像扩散模型的文本兼容图像提示适配器,名字有些长,读起来也很拗口。不过我们可以简单的理解就是图片提示或者垫图。
IP-Adapter是腾讯研究院出品的一个新的ControlNet模型,旨在使预训练的文本到图像扩散模型能够生成具有图像提示的图像。使用Stable Diffusion的同学深知提示词的重要性,无论是文生图还是图生图,我们都需要撰写相应的提示词以展现特定元素。为了避免生成不符合期望的内容,我们还需编写反向提示词。提示词可以说是图片的灵魂。
然而,Stable Diffusion 本身支持的提示词都是文本提示词,仅使用文本提示生成所需的图像是非常棘手的,因为它通常涉及复杂的提示工程。文字提示的另一种选择是图片提示,俗话说:“一张图片胜过千言万语”。
IP-Adapter是一种有效的轻量级适配器,用于实现预训练文本到图像扩散模型的图像提示能力。IP-Adapter的关键设计是分离文本特征和图像特征的交叉注意层的解耦交叉注意机制。仅具有 22M 参数的 IP-Adapter 就可以达到与微调图像提示模型相当甚至更好的性能。
IP-Adapter由两部分组成:图像编码器从图像提示中提取图像特征,以及具有解耦交叉注意机制的自适应模块将图像特征嵌入到预训练的文本到图像扩散模型中。
如果想深入研究IP-Adapter可以参照以下文档。
论文资料:https://ip-adapter.github.io/
项目地址:https://github.com/tencent-ailab/IP-Adapter
二. Ip-Adapter的安装
ControlNet中的IP Adapter控制模型相对较新,需要把ControlNet的模型更新到1.1.400以上的版本才可以。升级完成后在预处理器里找到IP-Adapter的选项了。
不过预处理器里没有模型也会报错的。
您需要下载这2个预处理器模型放到/extensions/sd-webui-controlnet/annotator/downloads/clip_vision/目录下面即可。
控制模型的下载
地址:https://huggingface.co/h94/IP-Adapter/tree/main
其中,models文件夹下面是适用于SD1.5模型的,下面红框中的2个是目前我们使用最多的。
sdxl_models文件夹下面是适用于SDXL模型的。
下载完成后放到/extensions/sd-webui-controlnet/models/目录下面即可。
三. IP-Adapter的使用(官网)
在IP-Adapter官网有很多使用效果实例,我们先直观的看一下,以便对IP-Adapter的应用有一个直观的了解和感受。
(1)一张图片在不同大模型下的不同效果。
(2)图生图
(3)局部重绘
(4)图像提示+文本提示
(5) IP_Adapter与T2I-Adapter结合使用
(6)SDXL1.0
IP-Adapter不仅在图像质量方面优于其他方法,而且生成的图像与参考图像能更好地对齐。
四. Ip-Adapter的初体验
下面我们使用一个最简单的实例来体验一下IP-Adapter的具体使用。
这里我们不使用任何正向提示词和反向提示词。
文生图相关参数设置
采样器:DPM++2M Karras
采样迭代步数:30
图片宽高:保持和上传图片的宽高一致即可
ControlNet参数设置如下:
相关参数设置如下:
控制类型:选择"IP-Adapter"
预处理器:ip-adapter_clip_sd15
模型:ip-adapter_sd15_plus(最大程度的还原原参考图,建议选择该模型)
控制权重:设置为0.5。
这里我们选择不同的大模型看一下生成图片的效果。
原图:
下面是不同真人模型下生成图片的效果图。
主体的脸型、发型、服装、姿势和参考图都挺像的,背景也基本都是相同的内容,只是不同的大模型也会有大模型各自的特色。
我们将IP-Adapter控制模型为ip-adapter_sd15。
主体的脸型、发型与参考图挺像的,背景,人物姿势和服装在不同的大模型下发生了一些变化,可见ip-adapter_sd15生成图片的相似度不如ip-adapter_sd15_plus。
三、VMware 虚拟机上配置 Ubuntu 安装环境 3.1、在 VMware 新建一个虚拟机 在 VMware 新建一个虚拟机,具体如下图所示:
3.2、配置类型选择自定义 配置类型选择自定义,然后点击下一步,具体如下图所示:
3.3、虚拟机硬件兼容性选择默认 虚拟机硬件兼容性选择默认即可,然后点击下一步,具体如下图所示:
3.4、安装客户机操作系统 安装客户机操作系统,这里我们选择稍后安装操作系统,然后点击下一步,具体如下图所示:
3.5、选择客户机操作系统 选择客户机操作系统,这里我们选择 Linux,版本选择 Ubuntu 64位(自身电脑配置为 32 位的同学选择 Ubuntu 即可),具体如下图所示:
3.6、选择 Ubuntu 安装目录 选择 Ubuntu 安装目录,根据自身需要选择,具体如下图所示:
3.7、处理器配置 处理器配置,根据自身需要选择,具体如下图所示:
3.8、设置虚拟机内存 设置虚拟机内存,根据自身需要选择,我一般设置 2G,具体如下图所示:
3.9、设置网络类型 设置网络类型,网络连接使用默认即可,即使用网络地址转换,具体如下图所示:
3.10、设置 I/O 控制器类型 设置 I/O 控制器类型,我们使用推荐即可,具体如下图所示:
3.11、设置磁盘类型 设置磁盘类型,我们使用推荐即可,具体如下图所示:
3.12、选择磁盘 选择磁盘,我们选择创建新虚拟磁盘,具体如下图所示:
3.13、设置磁盘容量 设置磁盘容量,这里我一般选择 20G,具体如下图所示:
3.14、选择自定义硬件 来到这个页面,我们选择自定义硬件,具体如下图所示:
进入界面后,点击使用 ISO 映像文件(M),添加我们已下载好的 ubuntu 的 iso 镜像文件,再点击关闭,具体如下图所示:
3.15、设置好之后打开虚拟机 设置好之后打开虚拟机,具体如下图所示:
四、VMware 虚拟机上安装 Ubuntu 4.1、点击安装 Ubuntu 等待一会进入此界面,左侧选择中文,点击安装 Ubuntu,具体如下图所示:
前言 Android Automotive 是一个基本 Android 平台,可运行 IVI 系统中预安装的 Android 应用以及可选的第二方和第三方 Android 应用。
本系列文档将会系统的介绍 Android Automotive 的功能、架构、逻辑等。模块逻辑将从 应用api接口、系统服务、底层服务,各层展开介绍。本篇文档将从整体的角度描述 Android Automotive,例如,定义、功能、架构等,后续将从各层展开详细描述。
下一篇:AndroidAutomotive模块介绍(二)应用及接口介绍
正文 1、介绍 1.1 定义 什么是 Android Automotive?
Android Automotive 是一个基本 Android 平台,可运行 IVI (In-Vehicle Infotainment)系统中预安装的 Android 应用以及可选的第二方和第三方 Android 应用。
Android Automotive 可为车载信息娱乐系统和车机提供开放性、自定义和规模化特性。开放性在免费的开源代码库中提供基本的车载信息娱乐功能,可进一步提升效率。借助自定义特性,实现人员能够在适当的情况下实现商品的差异化。规模化特性是通过 Android 的通用框架、语言和 API 来实现的,所有这些都使得全球数十万 Android 开发者的开发专长和成品软件得以重复使用。
1.2 发展 1.2.1 Android O 版本特性 Google 在 Android O 版本上新增了 Treble 化,对 Android 系统的框架进行了一次较大的改变,打算彻底解决 Android 系统碎片化的问题,让制造商以更低的成本、更轻松、更快速的将设备升级到新版的 Android 系统,Google 称这个架构为 Treble 架构。Android O 版本之前的系统架构中,Android Framework 与 Android Hal 是打包成一个 system.
前言 前面的文章中,描述了 Android Automotive 的框架中应用、Framework 层服务等知识,本篇文章将会继续按照 Android Automotive 框架介绍 Vehicle Hal 层服务的内容。
上一篇:AndroidAutomotive模块介绍(三)CarService服务
正文 1、VehicleHal 介绍 本篇文档将对 Andorid Automotive 框架中 VehicleHal 层展开介绍。VehicleHal 即为车辆硬件抽象层的定义。可以理解为 Android Automotive OS 中的硬件抽象层接口,包括车辆属性和方法;各厂商制造商会根据定义的 Hal 接口,实现定制化的模块服务。
VehicleHal 是链接 Android Automotive Car Services 与制造商实现车辆控制服务进程的桥梁,通过标准化接口对上层提供服务,对于服务的实现依赖厂商的定制化,可以忽略汽车制造商的具体实现,也就是说 CarService 调用 VehicleHal 定义的标准接口,厂商实现这些接口。
2、VehicleHal 模块功能 2.1 rc 文件 VehicleHal 的代码路径为:android/hardware/interfaces/automotive/vehicle/2.0/default。路径下有 android.hardware.automotive.vehicle@2.0-service.rc 文件,在开机阶段通过此 rc 文件,将 VehicleHal 进程启动,下面来看下 android.hardware.automotive.vehicle@2.0-service.rc 文件的定义
service vendor.vehicle-hal-2.0 /vendor/bin/hw/android.hardware.automotive.vehicle@2.0-service class hal user vehicle_network group system inet 2.2 编译 对于 VehicleHal 的编译,可以对以下两个 Android.
跳实际上是两个步骤之间的被称之为行集的数据行缓存,行集的大小可以在转换的设置里定义。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。当行集空了,丛行集读取数据的步骤停止读取,直到行集里又有可读的数据行
2.5.5 元数据 每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据。
通常包含下面一些信息:
名称:数据行里的字段名是唯一的。
数据类型:字段的数据类型。
格式:数据显示的方式,如 Integer 的 #、0.00
长度:字符串的长度或者 BigNumber 类型的长度。
精度:BigNumber数据类型的十进制精度。
货币符号:¥
小数点符号:十进制数据的小数点格式。不同文化背景下小数点符号是不同的,一般是点“.”或 逗号“,”
分组符号:数值类型数据的分组符号,不同文化背景下数字里的分组符号也是不同的,一般是点“.”或逗号“,”或单引号 ’
2.5.6 数据类型 数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合,字段包含下面几种数据类型。
String:字符类型数据
Number:双精度浮点数。
Integer:带符号长整型(64位)。
BigNumber:任意精度数据。
Date:带毫秒精度的日期时间值。
Boolean:取值为true和false的布尔值。
Binary:二进制字段可以包含图像、声音、视频及其他类型的二进制数据。
2.5.7 并行 跳的这种基王行集缓在的规则允许每个步骤都是由一个独立的线程运行,这样并发程度最高。这一规则也允许数据以最小消耗内存的数据流的方式来处理。在数据仓库里,我们经常要处理大量数据,所以这种高并发低消耗的方式也是 ETL 工具的核心需求。
对于 kettle 的转换,不能定义一个执行顺序,因为所有步骤都以并发方式执行:当转换启动后,所有步骤都同时启动,从它们的输入跳中读取数据,并把处理过的数据写到输出跳,直到输入跳里不再有数据,就中止步骤的运行。当所有的步骤都中止了,整个转换就中止了。
如果你想要一个任务沿着指定的顺序执行,那么就要使用下面所讲的“作业”!
2.5.8 作业 作业(Job),负责定义一个完成整个工作流的控制,比如将转换的结果发送邮件给相关人员。因为转换(transformation) 以并行方式执行,所以必须存在一个串行的调度工具来执行转换,这就是Kettle 中的作业。
第3章 Kettle的转换
===============================================================================
3.1 Kettle输入控件
输入是转换里面的第一个分类, 输入控件也是转换中的第一大控件, 用来抽取数据或者生成数据。输入是ETL里面的E (Extract),主要做数据提取的工作。
由于Kettle中自带的输入控件比较多,本文只挑出开发中经常使用的几个输入控件来进行讲解,详情如下图:
3.1.1 CSV文件输入 CSV 文件是一个用逗号分隔的固定格式的文本文件,这种文件后缀名为.csv,可以用Excel或者文本编辑器打开。在企业里面一般最常见的 ETL 需求就是将 csv 文件转换为 excel 文件,如果用 Kettle 来做这个 ETL工作,就需要用到本章节讲解的CSV文件输入控件。
任务:熟悉CSV文件输入控件,并尝试将CSV文件转换成Excel文件(可参考上面的快速体验案例)。
步骤名称:可以修改,但是在同一个转换里面要保证唯一 性, 见名知意
ERROR: Ignored the following versions that require a different python version: 1.6.2 Requires-Python >=3.7,<3.10; 1.6.3 Requires-Python >=3.7,<3.10; 1.7.0 Requires-Python >=3.7,<3.10; 1.7.1 Requires-Python >=3.7,<3.10
ERROR: Could not find a version that satisfies the requirement opencv-python==4.7.0.72 (from versions: none)
ERROR: No matching distribution found for opencv-python==4.7.0.72
查到了个较好的解决方法,就是更新pip
python3 -m pip install --upgrade pip
更新一下,再进行pip安装就没有问题了。
仅记录~~
文章目录 1 引言2 项目背景3 技术栈和工具选择4 数据爬取4.1 爬虫设计4.2 代码实现4.3 数据保存4.4 关键点分析 5 数据处理与分析5.1 数据清洗5.2 数据分析5.3 关键点分析 6 完整代码以及结果展示7 小分享 1 引言 本文将指导你如何通过Python从高德地图爬取中国城市地铁站数据,并使用Pandas及Matplotlib进行数据分析和可视化。我们将深入探讨爬虫代码的设计与实现,着重讲解数据获取、处理和分析的关键步骤。从技术细节到实际应用,本文旨在提供一个实战示例,展示如何利用编程技能解锁城市地铁数据的潜力,为进一步的城市规划和交通管理研究提供数据支持。
2 项目背景 城市地铁作为公共交通的重要组成部分,其数据反映了城市的交通动脉和发展蓝图。随着数据分析技术的发展,从地铁数据中提取信息,不仅可以优化日常出行,还能为城市规划和公共资源分配提供决策支持。尽管如此,地铁数据通常不易直接获取,需要通过特定手段进行采集。
选择高德地图作为数据源,是因为它提供了详尽的城市地铁信息,包括站点名称、位置坐标等,适合进行此类分析。本项目通过编写Python爬虫,自动化地从高德地图API获取数据,然后利用Pandas进行数据清洗和整理,最终通过Matplotlib和Seaborn进行数据的可视化分析,旨在揭示城市地铁网络的基本特征和潜在价值。此过程不仅展示了数据科学在城市交通领域的应用,也提供了一个实用的技术示例,供同领域研究者或爱好者参考。
3 技术栈和工具选择 本项目的实现主要依赖于Python,一个在数据科学和自动化领域广泛应用的编程语言。Python凭借其强大的库支持和简洁的语法,成为本项目的首选。下面是项目中关键技术和工具的概览及选择理由:
Requests库:用于发起HTTP请求。选择Requests是因为它简单易用,可以快速从网络上获取数据。Pandas库:负责数据处理和分析。Pandas提供了DataFrame对象,非常适合于处理表格数据,易于数据筛选、清洗和处理。Matplotlib和Seaborn库:用于数据可视化。这两个库能够生成高质量的图表,帮助我们从视觉上理解数据模式和趋势。JSON库:处理JSON数据格式。高德地图API返回的数据格式为JSON,使用Python内置的JSON库可以方便地解析这些数据。 4 数据爬取 为了分析城市地铁网络,首先需要从高德地图API获取相关数据。本部分将详细介绍爬虫的设计与实现过程,包括如何构造请求、解析数据,并将数据保存为可用格式。
4.1 爬虫设计 爬虫的核心任务是自动化地发送请求到高德地图的API,并处理返回的数据。高德地图提供了一个接口,通过城市的ID和名称可以返回该城市地铁的详细信息,包括站点名称、位置坐标等。
4.2 代码实现 使用Python的requests库发送HTTP GET请求,获取地铁数据。然后,利用json库解析这些数据。以下是一个简化的示例代码:
import requests import json import pandas as pd def get_metro_data(cityid, cityname): url = f'http://map.amap.com/service/subway?1469083453978&srhdata={cityid}_drw_{cityname}.json' response = requests.get(url) data = json.loads(response.text) # 解析数据 metro_info = [] for line in data['l']: for station in line['st']: metro_info.
前言
现在终于可以介绍 Stable Diffusion 除了文生图 (txt2img) 之外最重要的功能:图生图 (img2img)。顾名思义,除了根据正向和反向提示词之外,还需要基于一张图片生成图。这个模式下功能很多我们挨个说
img2img
图生图模式下的默认功能,我们先看一下主界面:
上面还是正面提示词和负面提示词,接着是一个上传图片的区域,写着「Drop Image Here - or - Click to Upload」。然后就是相关参数,大部分在文生图里面已经见过,只有Resize mode、Denoising strength是新增的,我们挨个介绍:
Resize mode。当上传图片尺寸和要生成的图的尺寸不同时,需要选择调整大小方案。
Sampling Method 用于去噪,平衡生成图的速度和质量。内置多种算法可供选择。目前看起来 DPM++ 2M Karras 用的比较多。
Sampling Steps 是去噪过程的采样步骤数。越多越好,但需要更长的时间。一般在 20-28 之间。
宽度和高度 (Width/Height),输出图像的大小。按需调整即可。
Batch Count 批次数量,我更愿意用下面的 Batch size 调整生产图的总数。
Batch size,每一批次要生成的图像数量。可以在测试提示时多生成一些,因为每个生成的图像都会有所不同。生成的图像总数等于 Batch Count 乘以 Batch size。
CFG (Classifier Free Guidance) scale,提示词相关性, 用于控制模型应在多大程度上遵从您的提示。他有几个只可选: 1 (大多忽略你的提示),3 (更有创意),7 (遵循提示和自由之间的良好平衡),15 (更加遵守提示),30 (严格按照提示操作),常用的是 7,做个平衡。测试时可以换这个值体验区别。
Denoising strength。降噪强度,常翻译成「重绘幅度」,取值范围是 0-1,描述新生成的图片与原图的相似程度,数值越小,采样越少,相似度越高,算的越快 (采样数 = Denoising strength* Sampling Steps)
选择你需要的安装,当然mac我是选择勾画出来的部分 安装 1、下载完成之后双击安装即可
2、验证成功之后就会出现下面这个界面,毫不犹豫的next 3、输入账号,没有账号去官网注册一下,也可以直接在下图中注册,我有账号,直接输入后点击next
4、勾选I have… , 点击继续
5、点击继续
6、指定安装目录,点击继续
7、下面这一步你需要选择你需要的插件,如果你电脑吃的消全选也没啥问题,选择好之后点击继续,接下来需要等待一段时间,毕竟要下载几个G的插件嘛,耐心等待吧
8、看到下面这个界面当然是I have,然后继续
9、点击安装,耐心等待即可
10、出现这个页面之后,点击完成
11、安装完成之后显示,可以创建项目了
配置环境变量 1、未配置之前终端输入 :qmake -v
2、依旧更新~/.bash_profile文件,默认情况下该文件不存在。这与linux基本上一致。
Shell代码
?
12345vi ~/.bash_profile``export QTDIR=/Users/guojun/Qt5.14.2/5.14.2/clang_64``export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH ``export PATH=$QTDIR/bin:$PATH ``source ~/.bash_profile 3、运行qmake,打印版本信息。至此QT配置成功。
4、选择Xcode( Xcode can be downloaded from Apple’s developer website (including older versions of Xcode). Once installed, choosing an Xcode installation is done using the xcode-select tool.)
?
123$ sudo xcode-``select --``switch /Applications/Xcode.app``$ xcode-``select -print-path``/Applications/Xcode.app/Contents/Developer 5、 The xcrun command can then be used to find a particular tool in the toolchain.
使用Ollama在本地运行AI大模型 1.下载:2.配置环境变量3.安装4.下载并运行模型5.整合界面UI 本次本人用到的软件汇总:百度网盘下载 1.下载: https://github.com/ollama/ollama/releases
2.配置环境变量 我的电脑-右键-属性-系统-高级系统设置-环境变量-【系统环境变量】新建
变量名:OLLAMA_MODELS (固定变量名)
变量值:E:\Ollama\Lib (写自己要存放的路径)
先配置好这个变量,这个是ollama的存储路径。
不配置也可以,不配置的话就会放到默认位置,建议还是修改下存储路径,方便后续使用。
3.安装 直接install即可。
安装完成后,cmd查询下:ollama --version
如果查询不到,重启下电脑即可。
我这里是因为我直接把ollama给关了,所以出现了警告,不过也同样可以看到ollama客户端的版本。
ollama的其他命令可以通过ollama help来获取
4.下载并运行模型 谷歌最新开源gemma:
最低条件:
2B版本需要2G显存
7B版本需要4G显存
7B的其他版本需要更大 打开命令提示符窗口下载运行模型:
访问:https://ollama.com/library选择自己想要的模型,复制下载命令即可.
这里选择拉取gemma7b版本来试试:ollama run gemma:7b
全量版模型拉取运行命令
ollama run gemma:2b-instruct-fp16
ollama run gemma:7b-instruct-fp16
ollama命令:
查看已有模型:ollama list 下载完成后即在运行(只下载的话,就用ollama pull去拉取即可)
接下来可以直接在命令行窗口进行问答
拉取的模型可以在存储目录blobs下看到
5.整合界面UI Ollama WebUI、open-webui等。
需要在docker环境中运行,windows本地docker已经被我搞掉了,只有虚拟机里面才有docker环境。
虚拟机占用内存,破电脑性能一般般,不打算搞了。这个搞起来也还好,就是拉下镜像运行容器就行了。JAN AI:https://jan.ai/ 下载windows版本客户端(开源的)
1)下载安装后修改下数据存储路径(随便要不要改),修改完重启即可。
2)修改ai模型源:
E:\Ollama\JANAI\engines\openai.json
(上一步中的数据存储路径下,找到engines\openai.json进行修改)
{ "full_url": "http://localhost:11434/v1/chat/completions" } 3)添加模型配置:记得把里面的注释去掉。
E:\Ollama\JANAI\models\底下创建一个文件夹mine-gemma-7b(名字随便,我把models底下其他的文件夹都挪走备份了,方便管理而已)然后在底下创建个model.json文件
{ "sources": [ { "filename": "gemma:7b", # 模型名称 "
但对于 streamlit 来说,请你相信我,这是一个你可以无脑去学习的框架,我之所以这么说,是因为我相信终有一天,你一定能用得上它。
Streamlit 是一个用于机器学习、数据可视化的 Python 框架,它能几行代码就构建出一个精美的在线 app 应用。
它能做什么,取决于你想干什么?
streamlit 的功能强大,要学习的函数虽然多,但非常容易上手,学习成本却远比 前端+Flask 来得低得低。接下来,我会一一介绍。
# 1. 如何安装?
===========
和安装其他包一样,安装 streamlit 非常简单,一条命令即可
➜ pip install streamlit
考虑到 streamlit 会附带安装比较多的工具依赖包,为了不污染当前的主要环境,我使用 venv 新建一个虚拟环境。
➜ python3 -m venv .
然后使用如下命令进入该虚拟环境
➜ source ./venv/bin/activate
接下来,再安装 streamlit ,命令在上边。
安装的包比较多(数了下竟然接近 92 个?),过程也会很久,需要点耐心
➜ pip list | wc -l
92
在安装过程中,可能会遇到一些问题,但也不一定,这取决于你的机器,如遇到问题请自行借助搜索引擎解决。
# 2. 入门示例
==========
Streamlit 提供了一些入门示例,执行如下命令即可
➜ streamlit hello
执行后 streamlit 会自动打开浏览器加载一个本地页面 http://localhost:8501/
这里面有很多的 demo,你可以看一下,这些 Demo 还有对应的配套代码
目录
一、实时数仓的需求与挑战
二、构建极速易用的实时数仓架构
三、解决方案
3.1 如何实现数据的增量与全量同步
3.1.1 增量及全量数据同步
3.1.2 数据一致性保证
3.1.3 DDL 和 DML 同步
Light Schema Change
Flink CDC DML 和DDL同步
3.2 如何基于Flink实现多种数据集成
3.3 如何选择数据模型
3.3.1 DUPLICATE 明细模型
3.3.2 AGGREGATE 聚合模型
3.3.3 UNIQUE KEY 主键模型
3.4 如何构建数仓分层
3.4.1 微批调度
3.4.2 物化视图与Rollup
3.4.3 多表物化视图
3.5 如何应对数据更新
3.5.1 高并发数据更新
3.5.2 部分列更新
3.6 如何进一步提升查询性能
3.6.1 智能物化视图
3.6.2 分区分桶裁剪
3.6.3 索引查询加速
3.6.4 执行层查询加速
四、行业最佳实践
4.1 跨境电商
4.2 运营服务商
4.3 供应链企业
原文大佬的这篇Doris+Flink构建实时数仓的实战文章整体写的很深入,这里直接摘抄下来用作学习和知识沉淀。如有侵权请告知~
文章介绍如何基于Doris和Flink快速构建一个极速易用的实时数仓,包括数据同步、数据集成、数仓分层、数据更新、性能提升等方面的具体应用方案。
推荐理由后记赠书活动 每日一句正能量 黎明时怀着飞扬的心醒来,致谢爱的又一天,正午时沉醉于爱的狂喜中休憩,黄昏时带着感恩归家,然后在内心为所爱的祈祷中入眠,让赞美的歌谣停留在唇间。
前言 随着大数据时代的来临,处理和分析海量数据成为了一项重要的挑战。为了应对这一挑战,Hadoop生态系统应运而生。Hadoop生态系统是一个开源的、可扩展的解决方案,它由三大核心部件组成,分别是Hadoop分布式文件系统(HDFS)、Hadoop分布式计算框架(MapReduce)和Hadoop分布式存储和计算平台(YARN)。这三个部件共同协作,提供了一个高效和可靠的大数据处理平台。本文将对Hadoop生态系统的这三大部件进行详细解析,以帮助读者更好地理解Hadoop生态系统的工作原理和优势。
进入大数据阶段就意味着进入NoSQL阶段,更多的是面向OLAP场景,即数据仓库、BI应用等。
大数据技术的发展并不是偶然的,它的背后是对于成本的考量。集中式数据库或者基于MPP架构的分布数据库往往采用的都是性能稳定但价格较为昂贵的小型机、一体机或者PC服务器等,扩展性相对较差;而大数据计算框架可以基于价格低廉的普通的硬件服务器构建,并且理论上支持无限扩展以支撑应用服务。
在大数据领域中最有名的就是 Hadoop 生态,总体来看,它主要由三部分构成:底层文件存储系统 HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)、资源调度计算框架 Yarn(Yet Another Resource Negotiator,又一个资源协调者)以及基于 HDFS 与 Yarn的上层应用组件,例如 HBase、Hive 等。一个典型的基于 Hadoop 的应用如下图所示。
▲图 一个典型的 Hadoop 应用
01 HDFS HDFS 被设计成适合运行在通用硬件(Commodity Hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点,例如典型的 Master-Slave 架构(这里不准备展开介绍),也有不同点,HDFS 是一个具有高度容错性的系统,适合部署在廉价的机器上。关于HDFS 这里主要想说两点,默认副本数的设置以及机架感知(Rack Awareness)。
HDFS 默认副本数是 3,这是因为 Hadoop 有着高度的容错性,从数据冗余以及分布的角度来看,需要在同一机房不同机柜以及跨数据中心进行数据存储以保证数据最大可用。因此,为了达到上述目的,数据块需要至少存放在同一机房的不同机架(2 份)以及跨数据中心的某一机架(1 份)中,共 3 份数据。
机架感知的目的是在计算中尽量让不同节点之间的通信能够发生在同一个机架之 内,而不是跨机架,进而减少分布式计算中数据在不同的网络之间的传输,减少网络带 宽资源的消耗。例如当集群发生数据读取的时候,客户端按照由近到远的优先次序决定 哪个数据节点向客户端发送数据,因为在分布式框架中,网络 I/O 已经成为主要的性能瓶颈。
只有深刻理解了这两点,才能理解为什么 Hadoop 有着高度的容错性。高度容错性是Hadoop 可以在通用硬件上运行的基础。
02 Yarn Yarn 是继 Common、HDFS、MapReduce 之 后 Hadoop 的又一个子项目, 它是在MapReduceV2 中提出的。
NC是一款用于端口测试、扫描的网络工具。在Flink学习中,主要用于创建端口输入数据模拟数据流。
二、NC工具安装-Linux yum install nc 三、NC工具安装-Windows 1.官网下载 地址为:
https://eternallybored.org/misc/netcat/
注意!!!
Windows系统会报病毒,如果有杀毒软件要全部关掉,自带的defender关掉或者弹出安全报警时选择执行允许,下载及第一次使用时均会报警,如果只在下载时允许运行时未允许,会报连接拒绝。
2.解压并配置环境变量 将下载的压缩包解压 到可执行文件这一层的目录
配置环境变量 由于我的电脑桌面未创建此电脑快捷方式,打开设置进入配置:
Windows->设置->关于->高级系统设置
把解压后到执行文件的路径添加到Path最后,加英文分号结束。
点击确定保存配置。
四、NC工具使用 Windows+R运行cmd窗口安装验证 输入命令出现帮助信息即安装成功 nc -h 输入命令’nc -lp port '打开90000(自定端口号)端口发送消息。 nc -lp 90000 打开另一个cmd窗口输入命令‘nc localhost 90000’监听消息。 nc localhost 90000 输入消息回车发送,发送后在监听窗口可以看到。 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
174 道运维工程师面试题128道k8s面试题108道shell脚本面试题200道Linux面试题51道docker面试题35道Jenkis面试题78道MongoDB面试题17道ansible面试题60道dubbo面试题53道kafka面试18道mysql面试题40道nginx面试题77道redis面试题28道zookeeper 总计 1000+ 道面试题, 内容 又全含金量又高
174道运维工程师面试题 1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
继续安装:
make make install 进入nginx安装目录,修改其配置文件:
cd /usr/local/nginx/conf vi nginx.conf 增加以下内容:
location /M00 {
root /home/yuqing/fastdfs/data;
ngx_fastdfs_module;
}
新建一个软连接:
ln -s /home/yuqing/fastdfs/data /home/yuqing/fastdfs/data/M00 复制并修改mod_fastdfs.conf文件:
cp mod_fastdfs.conf /etc/fdfs/ vi /etc/fdfs/mod_fastdfs.conf 修改了这里:
tracker_server=10.0.0.42:22122
(复制这两个文件到fdfs配置文件,要不无法访问nginx)
(# cp /home/fastdfs-5.11/conf/http.conf /etc/fdfs/)
(# cp /home/fastdfs-5.11/conf/mime.types /etc/fdfs/)
重启nginx:
/usr/local/nginx/sbin/nginx -s stop; /usr/local/nginx/sbin/nginx 报错:浏览器无法访问
查看nginx错误日志 如下
ERROR - file: ini_file_reader.c, line: 631, include file “http.conf” not exists, line: “#include http.conf”
ERROR - file: /home/packages/fastdfs-nginx-module-master/src/common.c, line: 163, load conf file “/etc/fdfs/mod_fastdfs.
一、zookeeper官网下载二、JDK环境安装三、zookeeper安装 1.zookeeper解压 2.zookeeper配置文件介绍 克隆服务器 1.网络检查 2.集群配置3.启动集群4.错误记录 一、zookeeper官网下载 下载地址:https://archive.apache.org/dist/zookeeper/找到对应的版本下载 二、JDK环境安装 直接使用 yum 命令在线安装 yum install -y java-1.8.0-openjdk.x86_64 环境变量配置 sudo vi /etc/profile export JAVA\_HOME=/usr/local/jdk1.8.0_291/ export JRE\_HOME=${JAVA\_HOME}/jre export CLASSPATH=.:${JAVA\_HOME}/lib:${JRE\_HOME}/lib export PATH=${JAVA\_HOME}/bin:$PATH 重新加载配置文件 sudo source /etc/profile 三、zookeeper安装 1.zookeeper解压 首先将下载的 apache-zookeeper-3.5.9-bin.tar.gz 上传到服务器解压安装至 /usr/local/目录下 tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /usr/local/ 如下图重命名为 zookeeper mv apache-zookeeper-3.5.9-bin zookeeper 如下图 2.zookeeper配置文件介绍 进入 zookeeper 配置文件 usr/local/zookeeper/conf/给 zoo_sample.cfg 配置文件重命名为 zoo.cfg mv zoo_sample.cfg zoo.cfg 配置文件介绍 # The number of milliseconds of each tick # 用于计算基础的实际单位 tickTime=2000 # The number of ticks that the initial # synchronization phase can take # 初始化时间 initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement # 选举时间 syncLimit=5 # the directory where the snapshot is stored.