一. 简介 上一篇文章Vite+Electron快速构建一个VUE3桌面应用(二)——动态模块热重载完成了开发时的动态模块热重载功能,现在是时候来看看怎么完成最后一步——打包了。
二. 思路 先说结论,重点还是在于mainWindow.loadURL()。
打包后还是加载http://localhost:3000是无法运行的,因此,此处需要先用vite打包好,然后使用electron-builder加载vite打包后的文件进行打包。
为了代码能够根据不同环境在运行时加载http://localhost:3000,在打包时加载文件,此处需要使用环境变量来切换生产和开发环境。
三. 实现 1. 环境变量 此处使用环境变量NODE_ENV来切换生产和开发环境,生产环境为NODE_ENV=production,开发环境为NODE_ENV=development,若有其它如release等环境可在此基础上拓展。
2. 创建electron文件夹 在项目根目录下创建文件夹electron,将main.js和preload.js文件移动进来。其结构如下所示:
. ├── README.md ├── electron │ ├── main.js │ └── preload.js ... 若还是不太明白可以看看源码中文件结构。
3. 编辑electron/main.js 该文件主要是需要根据环境变量切换electron加载的内容,修改内容如下:
mainWindow.loadURL( NODE_ENV === 'development' ? 'http://localhost:3000' :`file://${path.join(__dirname, '../dist/index.html')}` ); 修改后的完整内容如下:
// electron/main.js // 控制应用生命周期和创建原生浏览器窗口的模组 const { app, BrowserWindow } = require('electron') const path = require('path') const NODE_ENV = process.env.NODE_ENV function createWindow () { // 创建浏览器窗口 const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { preload: path.
一、PromptSelectionResult : 是 AutoCAD .NET API 中的一个类,位于 Autodesk.AutoCAD.EditorInput 命名空间下。它代表了用户在 AutoCAD 编辑器中进行图形对象选择操作的结果。
当你通过 Editor 类的 GetSelection() 方法(或者其他类似的方法)请求用户在绘图区选择一个或多个实体时,AutoCAD 会返回一个 PromptSelectionResult 对象。这个结果对象包含了以下关键信息:
Status:表示选择操作的状态,可以是 PromptStatus.OK(用户成功选择了对象)、PromptStatus.Cancel(用户取消了选择操作)或其他状态。
Value:如果 Status 为 PromptStatus.OK,那么 Value 属性将是一个 SelectedObjectCollection 对象,包含了用户所选的所有实体的信息。每一个 SelectedObject 都包含了被选中实体的 ObjectId 和其他可能的相关数据。
Keywords:在某些特定的选择提示中,可能会涉及到关键词匹配。此属性包含了一组用户输入的关键词。
使用 PromptSelectionResult 可以根据用户的选择来执行相应的后续处理,如获取选定实体的详细信息、修改实体属性或者执行与所选实体相关的其他操作。例如:
using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; // 初始化AutoCAD应用和编辑器 Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; // 创建选择过滤器并获取用户选择结果 PromptSelectionFilter filter = new PromptSelectionFilter(new TypedValue[] { /* 过滤条件 */ }); PromptSelectionResult selRes = ed.
5.2 映射(map,flatMap) 一个非常常见的数据处理套路就是 从某些对象中选择信息。比如在SQL里,你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。
5.2.1 对流中每一个元素应用函数(map) 流支持map方法,它会接受一个函数作为参数。这个函数会被应用到每个元素上,并将其映射成一个新的元素(使用映射一词,是因为它和转换类似,但其中的细微差别在于它是“创建一个新版本”而不是去“修改”)。
<R> Stream<R> map(Function<? super T, ? extends R> mapper); List<Integer> dishNameLengths = menu.stream() .map(Dish::getName) .map(String::length) .collect(toList()); 5.2.2 流的扁平化(flatMap) <R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper); 给定单词列表["Hello","World"],你想要返回列表["H","e","l", "o","W","r","d"]。 List<String> uniqueCharacters = words.stream() .map(w -> w.split("")) ←将每个单词转换为由其字母构成的数组 .flatMap(Arrays::stream) ←将各个生成流扁平化为单个流 .distinct() .collect(Collectors.toList()); 一言以蔽之,flatmap方法把一个流中的每个值都换成另一个流,然后把所有的流连接起来成为一个流。
为巩固对于map和flatMap的理解,如下测试:
给定[1, 2, 3, 4, 5],应该返回[1, 4, 9, 16, 25]。 List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); List<Integer> squares = numbers.
前言 本文只会讲解最常用的加、减、乘、除,点乘(或叫矩阵乘法)、还有广播机制。
本文代码 链接提取码:1024 第1部分:基础数学计算 使用NumPy进行基本的数学运算是十分直观和简单的。下面我们将展示一些基本的加、减、乘、除运算。
和一个数字加减乘除 让我们首先创建一个简单的数组:
import numpy as np arr = np.array([[1, 2], [-1, 4]]) 现在,我们将展示如何把一个整数与数组中的每个元素进行加减乘除。
和整数3的乘法 arr * 3 该操作将会输出:
array([[ 3, 6], [-3, 12]]) 和整数3的加法 arr + 3 该操作将会输出:
array([[4, 5], [2, 7]]) 和整数3的减法 arr - 3 该操作将会输出:
array([[-2, -1], [-4, 1]]) 和整数3的除法 arr / 3 该操作将会输出:
array([[ 0.33333333, 0.66666667], [-0.33333333, 1.33333333]]) 相同形状矩阵之间的加减乘除 当两个矩阵形状相同,NumPy允许进行元素级的运算。
相同形状矩阵之间的乘法 A = np.array([[1, 2], [-1, 4]]) B = np.array([[2, 0], [3, 4]]) A * B 输出结果是:
最近有很多小伙伴私信我关于双Y轴图的绘制方法? 这里我就直接给出Python-matplotlib绘制方法和R-ggplot2的绘制方法,主要的知识点如下:
Matplotlib-Axes.twinx()方法添加副轴
ggplot2-sec.axis()绘制双轴
所有内容都已免费新增到我们的系统可视化课程中,有需要可以咨询呀!
Matplotlib-Axes.twinx()方法添加副轴 这里我们直接就给出数据预览和可视化设计的代码,图中部分代码我们再做详细解释,数据预览如下:
自定义的颜色字典year_color构造代码如下:
color = ("#51C1C8", "#E96279", "#44A2D6", "#536D84", "#51C1C8", "#E96279", "#44A2D6", "#536D84") year = artist_01.index.to_list() year_color = dict(zip(year,color)) year_color 可视化代码如下:
plt.style.use('fivethirtyeight') fig,ax = plt.subplots(figsize=(8,4),dpi=200,facecolor='white',edgecolor='white') ax.set_facecolor('white') x = np.arange(0,len(artist_01),1) y = artist_01['data01'].values #绘制连接点的线 line = ax.plot(x,y,color='#333333',lw=1.,zorder=2) #绘制不同散点图 scatter_out = ax.scatter(x,y,s=500,zorder=1,color='white',ec='grey',alpha=.7,lw=.5) for i in artist_01.index.to_list(): scatter = ax.scatter(x[i],y[i],s=180,zorder=3,ec='k',lw=.4,color=year_color[i]) scatter_in = ax.scatter(x,y,s=30,zorder=3,color="#333333") #定制化绘制(设置图表风格) ax.grid(color='gray',lw=.5,alpha=.5) #设置网格 ax.tick_params(left=False,bottom=False,labelbottom=False,labelsize=10,colors='gray')#设置刻度 ax.set_ylim(bottom=-3,top=43)#设置轴范围 ax.set_yticks(np.arange(0, 45, step=5)) #设置刻度标签 ax.set_xticks(np.arange(-.5, 8, step=.5)) #添加横线(修饰) ax.axhline(y=0,color='#45627C',lw=3) #添加数字标签 label_text = {"
NodeJS开发中,要在Express中实现一个在线人数统计系统,可以用下面的思路:
数据结构: 使用一个对象来存储每个 IP 地址的最后访问时间。
当有请求到来时:
1、检查该 IP 地址是否已存在于对象中。
2、如果存在,更新其访问时间。
3、如果不存在,将其添加到对象中,并记录当前时间。
定时清除: 在每次处理请求时,检查对象中是否存在时间超过10分钟的 IP 地址,并将其从对象中删除。
以下是一个简单的实现示例:
const express = require('express'); const app = express(); const IP_OBJECT = {}; // 用于存储 IP 地址及其最后访问时间 app.use((req, res, next) => { const ip = req.ip; // 或使用 req.headers['x-forwarded-for'] 获取客户端真实IP,如果经过了反向代理 let lastAccess; if (IP_OBJECT[ip]) { // 如果 IP 已存在,更新其访问时间 lastAccess = Date.now(); } else { // 如果 IP 不存在,添加到对象中并记录当前时间 IP_OBJECT[ip] = lastAccess = Date.now(); } // 清除超过10分钟的数据 for (const ip in IP_OBJECT) { if (Date.
目录
-------------------- 创建 CephFS 文件系统 MDS 接口 --------------------
//客户端操作
-------------------- 创建 Ceph 块存储系统 RBD 接口 --------------------
//linux客户端操作
//快照分层
//快照展平
-------------------- 创建 Ceph 对象存储系统 RGW 接口 --------------------
-------------------- OSD 故障模拟与恢复 --------------------
-------------------- 创建 CephFS 文件系统 MDS 接口 -------------------- //服务端操作
1)在管理节点创建 mds 服务
cd /etc/ceph
ceph-deploy mds create node01 node02 node03
2)查看各个节点的 mds 服务
ssh root@node01 systemctl status ceph-mds@node01
ssh root@node02 systemctl status ceph-mds@node02
ssh root@node03 systemctl status ceph-mds@node03
3)创建存储池,启用 ceph 文件系统
环境: macos m1 , python3.10.x
背景 做视频切片, 使用moviepy 中VideoFileClip进行截取视频。 报错:
Unknown encoder 'libmp3lame' The audio export failed because FFMPEG didn't find the specified codec for audio encoding (libmp3lame). Please install this codec or change the codec when calling to_videofile or to_audiofile. For instance for mp3: 解决思路 该问题表示, FFMPEG 没有关联上 libmp3lame。
一般解决思路:
1、安装lame
下载 lame-3.99.5.tar.gz , 然后安装
cd lame ./configure make make install 但是我在该步骤中出现错误:
checking build system type... configure: error: /bin/sh .
晁盖等七人排了座次,大家商定在黄泥冈附近动手,正好邀请白胜参与,这样七人对应七星聚义,白胜对应北斗上的白光。
却说大名府梁中书收买了十万贯庆贺生日礼物,准备派杨志去押送。梁中书本意派军士押送,杨志说这一路强盗太多,太招摇了不安全,提出用禁军伴挑夫,悄悄的走。
临走的时候,梁中书说再派谢都管和两个虞候跟他一起上路,杨志担心他们不听调遣,梁中书特意吩咐他们三个都听杨志的。
当时正是酷暑时节,刚开始还是趁早晨天凉的时候走,中午天热的时候休息,后来为了安全,改成九点到下午三点赶路,正是日头最热的时候。一路上杨志督促禁军赶路,轻则痛骂,重则用籐条打,两个虞候虽然没有挑担子,也是气喘吁吁,大家都有怨言。
一天快到中午的时候,大家来到一个土冈子,杨志想让大家过去再休息,但是大家跑到土冈子的松树林子里躺下就不想起来了,即使杨志拿鞭子抽也白搭。杨志发现还有七个贩卖枣的人并七辆车,也在林子里休息。
押送生辰纲真是个辛苦活,同样Linux下WIFI的配置也不容易。
Ubuntu下wifi 无线网络的配置
首先安装相关库 sudo apt install network-manager wpasupplicant wireless-tools
配置文件 然后到/etc/netplan目录下,配置50-cloud-init.yaml文件。如果没有这个文件,可以手工写,也可以cp同目录下的00-installer-config-wifi.yaml文件到50-cloud-init.yaml文件。
具体文件内容:
network: version: 2 renderer: NetworkManager wifis: wlp3s0: dhcp4: true access-points: "wifiname": password: "wifipass" "wifiname2": password: "password2" 这里面的wifiname和wifiname2就是两个wifi的名字,可以使用如下命令,找到wifi端口,然后再找到wifi的名字:
ifconfig -a
sudo iw dev wlp3s0 scan
当然也可以过滤一下输出: sudo iw dev wlp3s0 scan |grep SSID
找到的SSID就是前面50-cloud-init.yaml文件中的wifiname参数。
然后sudo netplan try 测试一下,没报错的话就确认通过。若报错再回去改50-cloud-init.yaml文件。
配置好后,若netplan try测试通过,回车确认即可。非常有把握的话,可以直接使用netplan apply 接受配置。
注意netplan命令需要sudu权限。
还有一种查看wifi的信号的方法,就是使用iwlist scanning 命令,这条命令会列出详细的wifi信号,如名字、信道、信号强度等。
不一会儿,来了个挑酒去村里卖的汉子,杨志这边的人都想买酒吃,杨志打骂禁止,说当心有蒙汗药。那几个枣贩子买了一桶,交钱的时候占便宜舀了另一桶一瓢喝,那汉子不依,又把那瓢酒夺回来倒回桶里。
杨志一行人看别人喝酒没问题,剩下的一桶里枣贩子也喝了半瓢,就放下了戒心买了酒,然后大家很快就喝光了。那七个枣贩子对着他们说:倒了倒了。结果大家真的都倒了,眼睁睁看着那七人把金银宝贝装上车子运走了。
原来那七个人就是晁盖、吴用、公孙胜、刘唐和三阮。那个挑酒是白日鼠白胜,原本酒里没有下药,但是那半瓢吃过之后放了药,白胜夺回来倒回去,整桶酒就被下了蒙汗药了。这个计策是吴用定的,叫做“智取生辰纲” 。
杨志先醒过来,责怪众人说:丢了生辰纲,我怎么回去见梁中书啊,就要从黄泥冈往下跳。
🌈个人主页:聆风吟
🔥系列专栏:数据结构、网络奇遇记
🔖少年有梦不应止于心动,更要付诸行动。
文章目录 📋前言一. 什么是AIGC?二. AIGC如何运作?2.1 步骤一:收集数据2.2 步骤二:模型训练2.3 步骤三:内容生成2.4 步骤四:反馈和改进 三. AIGC的主要特征3.1 文本生成3.2 图像生成3.3 语音生成3.4 视频生成 四. AIGC关键技术能力五. AIGC常用软件5.1 ChatGPT5.2 Midjourney5.3 Stable Diffusion5.4 文言一心 六. AIGC的优势和挑战6.1 优势6.2 挑战 七. 书籍推荐7.1 书籍介绍7.2 作者简介7.3 购买链接&粉丝福利 参与活动方式文末详见。
📋前言 随着人工智能技术的不断发展,我们进入了一个信息爆炸的时代,信息量庞大,但也难免产生了信息过载的问题。为了解决这一问题,人工智能生成内容技术(AIGC)应运而生。
生成式人工智能AIGC(Artificial Intelligence Generated Content)是人工智能1.0时代进入2.0时代的重要标志。
一. 什么是AIGC? AIGC是一种新的人工智能技术,它的全称是Artificial Intelligence Generative Content,即人工智能生成内容。
它是一种基于机器学习和自然语言处理的技术,能够自动产生文本、图像、音频等多种类型的内容。这些内容可以是新闻文章、小说、图片、音乐,甚至可以是软件代码。AIGC系统通过分析大量的数据和文本,学会了模仿人类的创造力,生成高质量的内容。
二. AIGC如何运作? 通过单个大规模数据的学习训练,令AI具备了多个不同领域的知识,只需要对模型进行适当的调整修正,就能完成真实场景的任务。AIGC的工作原理可以分为以下几个步骤:
2.1 步骤一:收集数据 AIGC 需要大量的数据来学习和理解人类创作的内容。这些数据可以包括书籍、文章、图片、音频和视频等各种形式的媒体。
2.2 步骤二:模型训练 基于收集的数据,AIGC利用深度学习模型进行训练。这些模型通常是神经网络,它们通过学习文本、图像或音频的模式和语法规则来生成新内容。
2.3 步骤三:内容生成 一旦模型训练好,它就可以开始生成内容。用户可以输入一些基本的信息或要求,然后AIGC会根据这些信息生成相应的内容。这可以是新闻文章、小说、音乐、绘画等各种类型的作品。
2.4 步骤四:反馈和改进 AIGC通常会用户的反馈,用于改进接收的内容。这有助于模型不断学习并提高生成质量。
三. AIGC的主要特征 现阶段国内AIGC多以单模型应用的形式出现,主要分为文本生成、图像生成、视频生成、音频生成,其中文本生成成为其他内容生成的基础。
3.1 文本生成 文本生成(AI Text Generation),人工智能文本生成是使用人工智能(AI)算法和模型来生成模仿人类书写内容的文本。它涉及在现有文本的大型数据集上训练机器学习模型,以生成在风格、语气和内容上与输入数据相似的新文本。
在信息技术与互联网快速发展的今天,传统的园区管理方式已无法满足时代对效率与智能化的追求。数据中台作为企业数字化转型的核心,正引领着智慧园区的发展趋势。一个集成了数据中台的智慧园区,不仅能有效地整合资源,优化管理流程,还能为园区企业和居住人群提供更加智能、便捷的服务体验。但如何构建一个高效的“数据中台智慧园区”呢?本篇文章将为您揭晓。
数据中台:园区智能核心
数据中台是建立在云计算平台之上的数据资源管理系统,它通过数据的采集、存储、加工、分析和展现,支撑企业或组织的业务决策。对于智慧园区而言,数据中台能够从众多零散的数据源中提取有价值的信息,并对这些信息进行分析和利用,为园区管理者提供科学决策的依据。
智慧园区:数字化生态社区
智慧园区指的是利用物联网、大数据、云计算等高新技术对园区进行全面智能化改造的楼宇或片区。在数据中台的支持下,智慧园区能够实现环境监测、能源管理、交通指导、安全保障等功能,大大提升园区运营效率和居民生活品质。
结合数据中台的智慧园区建设
云平台架构建设:构建数据中台智慧园区首先是搭建一个可扩展的云平台架构,实现数据的灵活存储和高效处理。
数据源接入与整合:智慧园区中,通过物联网设备连接园区内的所有数据源,包括监控设备、传感器、门禁系统等,并将数据汇总至数据中台。
数据分析与智能决策:利用数据中台深度学习与分析能力,对园区数据进行处理,实现智能化决策支持,提升运营效率。
服务输出与应用场景落地:将数据中台的分析结果转化为具体的应用场景,如智能停车引导、能耗监控优化、安防预警等。
数据中台智慧园区的实际案例
一个具体的“数据中台智慧园区”案例是上海张江高科技园区。在这里,数据中台对接了园区的多个数据系统,通过智能分析,园区管理人员可以实时监控能耗情况,优化资源配置。此外,园区内部交通也利用大数据进行智能调度,显著提高了出行效率。
未来趋势:数据中台智慧园区的持续升级
未来的数据中台智慧园区将更加注重数据的深度融合与实时反馈,以及通过人工智能技术提高数据处理能力,实现更为精细化的管理与服务。园区居民将享受到从停车引导、环境控制到健康监护等全方位的智能服务,真正实现科技与生活的和谐共融。
1、在src下新建三个文件夹 (.env.local、.env.test 和 .env.prod) 2、配置信息 .env.local VUE_APP_ENV=local VUE_APP_API_URL=http://localhost:8080 .env.test VUE_APP_ENV=test VUE_APP_API_URL=http://124.220.110.203:9090/ .env.prod VUE_APP_ENV=prod VUE_APP_API_URL=http://124.220.110.203:9090/ 3、修改启动脚本 修改本地启动脚本、测试打包脚本和生产打包脚本以使用环境变量
修改启动脚本: 在package.json文件中,找到scripts字段下的对应脚本,并修改为如下所示:
"scripts": { "dev": "vue-cli-service serve --mode local", "build:test": "vue-cli-service build --mode test", "build:prod": "vue-cli-service build --mode prod" } 注意:VUE_APP_ENV=local的值要与--mode local相对应
4、在 Vue 项目的代码中,可以使用process.env访问定义的环境变量。 // 创建axios实例 const request = axios.create({ baseURL: process.env.VUE_APP_API_URL, // 设置baseUrl timeout: 6000 // 设置超时时间 }) 5、现在,你可以使用相应的脚本来启动开发服务器、测试打包和生产打包了。例如,在命令行中运行以下命令: 本地启动:npm run dev测试打包:npm run build:test生产打包:npm run build:prod
2846. 边权重均等查询 题目描述: 现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重为 wi 的边。
另给你一个长度为 m 的二维整数数组 queries ,其中 queries[i] = [ai, bi] 。对于每条查询,请你找出使从 ai 到 bi 路径上每条边的权重相等所需的 最小操作次数 。在一次操作中,你可以选择树上的任意一条边,并将其权重更改为任意值。
注意:
查询之间 相互独立 的,这意味着每条新的查询时,树都会回到 初始状态 。从 ai 到 bi的路径是一个由 不同 节点组成的序列,从节点 ai 开始,到节点 bi 结束,且序列中相邻的两个节点在树中共享一条边。 返回一个长度为 m 的数组 answer ,其中 answer[i] 是第 i 条查询的答案。
文章目录 概要整体架构流程技术名词解释两个类的声明鉴权生成(Token)MainActivity代码(Java)小结 概要 最近做了个大作业,是用AndroidStudio获取Onenet上面数据的。
本文介绍两个方法,GET()和POST()。用的是java语言,kotlin语言可以直接搜kotlin,get方法,和java的没什么区别。
整体架构流程 首先要引入依赖和库,比如联网的,Okhttp的库
然后是核心的GET和POST代码,这里要注意的是鉴权,我找了好久才在官网找到安全鉴权的方式。(这里吐槽一下Onenet的开发者文档的可查询性实在是太弱了)
最后是获取到返回数据。
技术名词解释 1,Okhttp:OkHttp是一个开源的Java库,用于处理HTTP请求。它是Square公司开发的,设计简单而灵活,是Android开发中广泛使用的HTTP客户端。
示例代码:
import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class OkHttpExample { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.baidu.com") .build(); try (Response response = client.newCall(request).execute()) { System.out.println(response.body().string()); } } } 2,安全鉴权:在OkHttp中,.header 方法用于设置HTTP请求头。通过这个方法,你可以添加自定义的请求头信息。以下是一个简单的示例,演示如何在OkHttp中使用.header方法:
import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class OkHttpHeaderExample { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); // 构建请求时使用 .
看书标记——R语言 Chapter 2 序列的数据挖掘2.1 模式2.1.1 Eclat 频繁项集的挖掘用法用eclat找到成年人行为的相似点查找数据集中的频繁项目集中于最高频率的示例 2.1.2 arulesNBMiner用法为频繁集挖掘Agrawal数据 2.1.3 Apriori用法评估购物篮中的关联 2.1.4 用TraMineR确定序列用法确定训练和职业中的序列 2.1.5 序列相似点用法示例 【数据科学:R语言实战 2】 Chapter 2 序列的数据挖掘 2.1 模式 eclat:用于项集模式检测,常用购物车
arules:确定数据集中的项目共现
apriori:学习数据集中的关联规则
TraMineR:挖掘序列的R包
2.1.1 Eclat 频繁项集的挖掘 寻找行为相似的模式,通过数据中的交集来估算同时频繁出现事件候选项(购物车项目)的支持度,然后通过对频繁候选项进行测试来证实数据集中的模式。
用法 Eclat可以使用arules包中的eclat()函数
参数
data 待分析的数据矩阵
parameter ECParameter或列表对象。ECParameter(support:界定最小支持度0.1;minlen:包含最小容量1;maxlen:包含最大容量10;target:界定了待挖掘关联项集的类型.)
control ECControl或列表的对象。ECControl(sort:1、2升序、-1降序、0未分类、-2事务容量和的降序;verbose:显示进度信息) 用eclat找到成年人行为的相似点 library(“arules”) data(“Adult”) dim(Adult) summary(Adult) 查找数据集中的频繁项目 data(“Adult”) itemsets <- eclat(Adult) itemsets.sorted <- sort(itemsets) itemsets.sorted[1:5] #仅看前五个集合 未要求资本损失或资本利得、美国人、白种人
集中于最高频率的示例 将范围缩减至数据集中出现的最高频率,调节minlen参数
itemsets <- eclat(Adult, parameter=list(minlen=9)) inspect(itemsets) 2.1.2 arulesNBMiner arulesNBMiner 用于寻找一个集合中两个及以上项目的共现。底层模型即负二项式模型,允许高度偏态次数分配,我们会观察到,项目集频率正出现在数据子集合中。
用法 NBMiner()
参数
看书标记——R语言 Chapter 1 模式的数据挖掘1.1 聚类分析1.1.1 k-means聚类用法示例 1.1.2 k-medoids聚类用法示例1.1.3 分层聚类用法示例 1.1.4 期望最大化(EM)用法示例 1.1.5 密度估计用法示例 1.2 异常检测1.2.1 显示异常值示例 1示例 2示例 3 1.2.2 计算异常值示例 1(用name函数创建异常)示例 2(DMwR中的lofactor函数) 1.3 关联规则(购物篮分析)用法示例 【数据科学:R语言实战 1】 Chapter 1 模式的数据挖掘 1.1 聚类分析 1.1.1 k-means聚类 步骤:
(1)从数据中选取k随机行(质心)
(2)使用Lloyd’s算法确定集群
(3)与质心的距离对每个数据点进行分配
(4)将质心重新用与其相关的所有点的平均值代替
(5)对与质心距离最近的数据重新分配
(6)循坏3、4,直到数据不再分配
第三步表示k-means无法与相当稀疏的数据或者有较多异常值的数据一起工作,另外,集群最好有线性形状。
用法 kmeans()
参数
x 待分析的数据矩阵
centers 集群数量
iter.max 最大迭代次数
nstart 随机集的使用次数
algorithm 算法Hartigan-Wong、Lloyd、Forgy、MacQueen.
trace跟踪信息属性
cluster集群分配
centers集群中心
totss总平方和
withinss每个聚类平方和的向量
tot.withinss距离平方和总量
betweenss聚类组间平方和
size每个聚类的数据点数量
iter执行迭代的次数
ault专家诊断 示例 x <- rbind(matrix(rnorm(100, sd = 0.
文章目录 一、云原生产品创新二、云原生架构设计三、云原生商业模式变革《云原生落地 产品、架构与商业模式》适读人群编辑推荐内容简介目录 随着云计算技术的不断发展,云原生已经成为企业数字化转型的重要方向。接下来将从产品、架构和商业模式三个方面,探讨云原生落地的实践路径,帮助企业更好地应对数字化转型的挑战,实现业务的快速发展。CSDN程序边界
一、云原生产品创新 容器化部署:通过Docker等容器技术,实现应用的快速部署、自动化运维,提高资源利用率和管理效率。
CSDN程序边界
微服务架构:将复杂的单体应用拆分为多个独立的微服务,降低模块间的耦合度,提高系统的可扩展性和可维护性。
持续集成与持续交付(CI/CD):通过自动化的构建、测试、部署流程,实现快速迭代和高质量交付。
DevOps文化:打破开发与运维的界限,实现团队协作和快速反馈,提升企业的敏捷性和竞争力。
二、云原生架构设计 基于云的基础设施:采用云计算平台作为底层基础设施,实现弹性伸缩、高可用性和灾备能力。
CSDN程序边界
面向服务的架构(SOA):通过服务化的方式,实现系统间的解耦和标准化接口,降低系统集成的复杂度。
API网关:作为系统的入口,实现流量控制、安全防护和服务治理等功能,提高系统的健壮性和稳定性。
分布式存储与计算:利用分布式数据库、分布式文件系统等技术,实现数据的高可用、高性能访问。
三、云原生商业模式变革 以客户为中心:关注客户需求,提供个性化、差异化的产品和服务,实现客户价值的最大化。
CSDN程序边界
数据驱动决策:通过对海量数据的分析挖掘,为企业决策提供有力支持,提高决策效率和准确性。
平台化运营:构建开放的平台生态,整合各类资源,实现产业链的协同发展。
创新驱动发展:不断探索新技术、新模式,推动企业持续创新,抢占市场先机。
总之,云原生作为一种新兴的技术理念和实践方法,正在深刻影响着企业的产品开发、架构设计和商业模式。企业应积极拥抱云原生,加快数字化转型步伐,实现业务的快速增长和持续发展。
《云原生落地 产品、架构与商业模式》 适读人群 本书主要适合于以下读者:
应用架构师云原生平台架构师技术产品规划或者设计人员企业技术决策人员,比如CTO 编辑推荐 多位云原生产品规划及架构专家联袂推荐。资深云计算与产品专家从CIO/CTO视角,高度总结十余年洞见与落地经验,节省千万资本。从客户分析、市场分析、商业模式、产品与技术架构五大维度,透彻分析企业落地云原生的全生命周期方案,解行业燃眉之急。基础设置自动化+激活业务创新+降本增效=企业数字化转型,助力企业战略性发展。 内容简介 全书分为4大部分15章:
第一部分,生态剖析(3章):第1章从云原生的缘起和历史说起,破除对云原生本质理解的一些概念上的误区,第二章重点说明了云原生的市场现状、发展以及相关话题,使得读者对云原生的市场价值以及规模有所了解,第三章重点讲述实施云原生的条件,以及相关的总论,全景式的了解云原生的实施落地、产品和技术情况,并同时给出什么才是成熟的云原生平台的标准的论断,为后面篇章提供了指南。
CSDN程序边界
第二部分,《云原生的实施》(7章),根据第1部分总论,展开对云原生平台产品、技术架构进行论述,涉及到容器底座、可观察性、PaaS、devops、云原生中间件以及自动化交付等内容,从市场需求分析、产品规划设计到技术架构入手,全面的介绍云原生平台的构建。
第三部分,《商业模式》(3章),从云原生价值主张入手,全面说明云原生不同的云交付形态下的变化、以及对应的服务售卖模型和定价方式。
第四部分,《实例分析》(2章),根据前面介绍的内容,从两个客户角度,一个从平台提供商角度说明落地实践,另一个从业务企业角度说明落地实践,是对上面章节内容的总结和运用,力图从实践出发,从组织升级、业务升级、技术架构升级等维度阐述落地的步奏、问题和解决方案等,为读者提供落地实践的参考。
目录 前 言 第一部分 起源、演化与商业模式 第1章 为云而生 2 1.1 什么是云原生 2 1.2 云原生的历史及其原则 5 1.3 谁是云原生的客户 7 1.4 谁是云原生的用户 12 1.5 云原生对企业的影响 18 1.6 本章小结 19 第2章 云原生生态圈 20 2.1 云需要怎样的云原生 20 2.
目录
1、存储基础
2、Ceph 简介
3、Ceph 优势
4、Ceph 架构
5、Ceph 核心组件
6、OSD 存储后端
7、Ceph 数据的存储过程
8、Ceph 版本发行生命周期
-------------------- 基于 ceph-deploy 部署 Ceph 集群 --------------------
//部署 Ceph 集群
//资源池 Pool 管理 1、存储基础 //单机存储设备
●DAS(直接附加存储,是直接接到计算机的主板总线上去的存储)
IDE、SATA、SCSI、SAS、USB 接口的磁盘
所谓接口就是一种存储设备驱动下的磁盘设备,提供块级别的存储
●NAS(网络附加存储,是通过网络附加到当前主机文件系统之上的存储)
NFS、CIFS、FTP
文件系统级别的存储,本身就是一个做好的文件系统,通过nfs接口在用户空间输出后,客户端基于内核模块与远程主机进行网络通信,把它转为好像本地文件系统一样来使用,这种存储服务是没办法对它再一次格式化创建文件系统块的
●SAN(存储区域网络)
SCSI协议(只是用来传输数据的存取操作,物理层使用SCSI线缆来传输)、FCSAN(物理层使用光纤来传输)、iSCSI(物理层使用以太网来传输)
也是一种网络存储,但不同之处在于SAN提供给客户端主机使用的接口是块级别的存储
#单机存储的问题
●存储处理能力不足
传统的IDE的IO值是100次/秒,SATA固态磁盘500次/秒,固态硬盘达到2000-4000次/秒。即使磁盘的IO能力再大数十倍,也不够抗住网站访问高峰期数十万、数百万甚至上亿用户的同时访问,这同时还要受到主机网络IO能力的限制。
●存储空间能力不足
单块磁盘的容量再大,也无法满足用户的正常访问所需的数据容量限制。
●单点故障问题
单机存储数据存在单点故障问题
//商业存储解决方案
EMC、NetAPP、IBM、DELL、华为、浪潮
//分布式存储(软件定义的存储 SDS)
Ceph、TFS、FastDFS、MooseFS(MFS)、HDFS、GlusterFS(GFS)
存储机制会把数据分散存储到多个节点上,具有高扩展性、高性能、高可用性等优点。
#分布式存储的类型
●块存储(例如硬盘,一般是一个存储被一个服务器挂载使用,适用于容器或虚拟机存储卷分配、日志存储、文件存储)
就是一个裸设备,用于提供没有被组织过的存储空间,底层以分块的方式来存储数据
●文件存储(例如NFS,解决块存储无法共享问题,可以一个存储被多个服务器同时挂载,适用于目录结构的存储、日志存储)
是一种数据的组织存放接口,一般是建立在块级别的存储结构之上,以文件形式来存储数据,而文件的元数据和实际数据是分开存储的
●对象存储(例如OSS,一个存储可以被多服务同时访问,具备块存储的高速读写能力,也具备文件存储共享的特性,适用图片存储、视频存储)
基于API接口提供的文件存储,每一个文件都是一个对象,且文件大小各不相同的,文件的元数据和实际数据是存放在一起的
2、Ceph 简介 Ceph使用C++语言开发,是一个开放、自我修复和自我管理的开源分布式存储系统。具有高扩展性、高性能、高可靠性的优点。
Ceph目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack,Kubernetes都可与Ceph整合以支持虚拟机镜像的后端存储。
粗略估计,我国70%—80%的云平台都将Ceph作为底层的存储平台,由此可见Ceph俨然成为了开源云平台的标配。目前国内使用Ceph搭建分布式存储系统较为成功的企业有华为、阿里、中兴、华三、浪潮、中国移动、网易、乐视、360、星辰天合存储、杉岩数据等。 3、Ceph 优势 ●高扩展性:去中心化,支持使用普通X86服务器,支持上千个存储节点的规模,支持TB到EB级的扩展。
<view style="width: 90%;height: 260px;background: #f5f5f5;margin: auto;"> <canvas type="2d" id="myCanvas" style="width: 100%; height: 100%;" bindtouchstart="start" bindtouchmove="move" bindtouchend="end" ></canvas> </view> const app = getApp() Page({ data: { ctx:'', }, onLoad: function () { this.initcanvas(); }, initcanvas(){ //初始化画布 const query = wx.createSelectorQuery() query.select('#myCanvas') .fields({ node: true, size: true }) .exec((res) => { const canvas = res[0].node const ctx = canvas.getContext('2d') const dpr = wx.getSystemInfoSync().pixelRatio;//缩放级别 canvas.width = res[0].width * dpr canvas.height = res[0].height * dpr ctx.
根据Github Trendings的统计,今日(2024-01-26统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下:
开发语言项目数量Python项目4Jupyter Notebook项目2HTML项目1Shell项目1Dockerfile项目1非开发语言项目1Go项目1Rust项目1 高级英语学习指南 创建周期:2427 天开发语言:HTMLStar数量:31378 个Fork数量:3697 次关注人数:31378 人贡献人数:22 人Open Issues数量:22 个Github地址:https://github.com/byoungd/English-level-up-tips.git项目首页: https://byoungd.github.io/English-level-up-tips/ 一个高级的学习英语指南,可能会给你带来很多好处。
Rust 语言圣经:全面深入的 Rust 教程 创建周期:1998 天开发语言:RustStar数量:20806 个Fork数量:1828 次关注人数:20806 人贡献人数:250 人Open Issues数量:59 个Github地址:https://github.com/sunface/rust-course.git项目首页: https://course.rs Rust 语言圣经是一本全面而深入的教程,涵盖了从入门到精通 Rust 所需的所有知识。它设计了深思熟虑的结构,以生动流畅的风格编写,避免了典型的技术书籍干燥和晦涩。该书还包括诸如性能优化、手把手实现链表、Cargo 和 Tokio 使用指南、异步编程、标准库分析、WASM 等高级主题。它提供了各种应用场景的实用代码片段,以及练习题,以增强初学者和经验丰富的程序员的学习体验。
大型语言模型(LLMs)课程 创建周期:221 天开发语言:Jupyter Notebook协议类型:Apache License 2.0Star数量:18166 个Fork数量:1760 次关注人数:18166 人贡献人数:2 人Open Issues数量:19 个Github地址:https://github.com/mlabonne/llm-course.git项目首页: https://mlabonne.github.io/blog/ 大型语言模型(LLMs)课程分为三个部分:LLM基础涵盖数学、Python和神经网络的基本知识,LLM科学家专注于使用最新技术构建最佳的LLMs,而LLM工程师专注于创建基于LLMs的应用程序并部署它们。
OpenGFW:灵活易用的Linux上GFW开源实现 创建周期:41 天开发语言:Go协议类型:Mozilla Public License 2.0Star数量:1966 个Fork数量:118 次关注人数:1966 人贡献人数:1 人Open Issues数量:9 个Github地址:https://github.com/apernet/OpenGFW.git OpenGFW 是一个灵活、易于使用的开源 GFW 在 Linux 上的实现,旨在比真实的 GFW 更强大,并在家用路由器上提供网络主权。然而,该项目仍处于早期开发阶段,使用时需谨慎。该项目正在寻求贡献者,特别是帮助实现更多协议的分析器。