当今时代,企业数据越发膨胀。数据是企业的价值,但数据处理也是一种技术挑战。在海量数据处理的场景,即使单机计算能力再强,也无法满足日益增长的数据处理需求。所以,分布式才是解决该类问题的根本解决方案。而在分布式领域,有两类典型产品,分别是分布式存储和分布式计算。用户只有将两者的特性充分利用,才可以真正发挥分布式架构的存储和计算能力。
本文介绍 SequoiaDB(分布式存储)和 Spark(分布式计算)两款产品的对接使用,以及在海量数据场景下如何提高统计分析性能。
01 SequoiaDB 与 SparkSQL 介绍
SequoiaDB 是一款开源的金融级分布式关系型数据库,支持标准 SQL 和事务功能,支持复杂索引查询、与 Hadoop、Hive、Spark 都有较深度的集成。SequoiaDB 在分布式存储功能上,较一般的大数据产品能提供更多的数据切分规则,包括:水平切分、范围切分、主子表切分(类似 partition 分区)和多维切分方式,用户可以根据不用的场景选择相应的切分方式,以提高系统的存储能力和操作性能。
Spark 近年来发展特别迅猛,使用 SparkSQL 做大数据处理和分析的开发者越来越多。SparkSQL 是 Spark 产品中一个组成部分,SQL 的执行引擎使用 Spark 的 RDD 和 Dataframe 实现。
SparkSQL 和另外一款流行的大数据 SQL 产品— Hive 有相似之处,但是两款产品还是有本质上的区别,最大的不同点在于执行引擎,Hive 默认支持 Hadoop 和 Tez 计算框架,而 SparkSQL 只支持 Spark RDD 计算框架,但是 SparkSQL 的拥有更加深度的执行计划优化和处理引擎优化。
02 SequoiaDB 与 SparkSQL 如何整合?
Spark 本身是一款分布式计算框架。它不像 Hadoop 一样,同时为开发者提供分布式计算和分布式存储,而是开放了存储层的开发接口,只要开发者按照 Spark 的接口规范实现了接口方法,任何存储产品都可以成为 Spark 数据计算的来源,同时也包括 SparkSQL 的数据来源。
SequoiaDB 是一款分布式数据库,能够为用户存储海量的数据,但是如果要对海量数据做统计、分析,还是需要借助分布式计算框架的并发计算性能,提高计算效率。所以 SequoiaDB 为 Spark开发了 SequoiaDB for Spark 的连接器,让 Spark 支持从SequoiaDB 中并发获取数据,再完成相应的数据计算。
Spark 和 SequoiaDB 对接方式比较简单,用户只要将 SequoiaDB for Spark 连接器 spark-sequoiadb.jar 和 SequoiaDB 的 java 驱动 sequoiadb.jar 加入到每个 Spark Worker 的 CLASSPATH 中即可。
例如,用户希望 SparkSQL 对接到 SequoiaDB,可以为 spark-env.sh 配置文件中增加 SPARK_CLASSPATH 参数,如果该参数已经存在,则将新 jar 包添加到 SPARK_CLASSPATH 参数上,如:
SPARK_CLASSPATH="/media/psf/mnt/sequoiadb-driver-2.9.0-SNAPSHOT.jar:/media/psf/mnt/spark-sequoiadb_2.11-2.9.0-SNAPSHOT.jar"
用户修改完 spark-env.sh 配置后,重启 spark-sql 或者 thriftserver 就完成了 Spark 和 SequoiaDB 的对接。
03 SequoiaDB 与 SparkSQL 性能优化
Spark SQL+SequoiaDB 的性能优化将会从 connector 计算技术原理、SparkSQL 优化、SequoiaDB 优化和 connector 参数优化4个方面进行介绍。
3.1 SequoiaDB for SparkSQL
A) connector 工作原理
Spark 产品虽然为用户提供了多种功能模块,但是都只是数据计算的功能模块。Spark 产品本身没有任何的存储功能,在默认情况下,Spark 是从本地文件服务器或者 HDFS 上读取数据。而 Spark 也将它与存储层的接口开放给广大开发者,开发者只要按照 Spark 接口规范实现其存储层连接器,任何数据源均可称为 Spark 计算的数据来源。
下图为 Spark worker 与存储层中 datanode 的关系。
图1
Spark 计算框架与存储层的关系,可以从下图中了解其原理。Spark master 在接收到一个计算任务后,首先会与存储层做一次通讯,从存储层的访问快照或者是存储规划中,得到本次计算任务所设计的所有数据的存储情况。存储层返回给 Spark master 的结果为数据存储的 partition 队列。
然后 Spark master 会将数据存储的 partition 队列中的 partition 逐个分配给给 Spark worker。Spark work 在接收到数据的 partition 信息后,就能够了解如何获取计算数据。然后 Spark work 会主动与存储层的 node 节点进行连接,获取数据,再结合 Spark master 下发给 Spark worker 的计算任务,开始数据计算工作。
图2
SequoiaDB for Spark 的连接器的实现原理和上述描述基本一致,只是在生成数据计算的 partition 任务时,连接器会根据 Spark 下压的查询条件到 SequoiaDB 中生成查询计划。
如果 SequoiaDB 能够根据查询条件做索引扫描,连接器生成的 partition 任务将是让Spark work 直接连接 SequoiaDB 的数据节点。
如果 SequoiaDB 无法根据查询条件做索引扫描,连接器将获取相关数据表的所有数据块信息,然后根据 partitionblocknum 和 partitionmaxnum 参数生成包含若干个数据块连接信息的 partititon 计算任务。
B) Connector 参数
SequoiaDB for Spark 连接器在 SequoiaDB 2.10之后进行了重构,提高 Spark 并发从SequoiaDB 获取数据的性能,参数也有相应的调整。
用户在 SparkSQL 上创建数据源为 SequoiaDB 的 table,建表模版如下:
create [temporary] [(schema)] using com.sequoiadb.spark options ();
SparkSQL 创表命令的关键字介绍:
1. temporary 关键字,代表该表或者视图是否为邻时创建的,如果用户标记了temporary 关键字,则该表或者视图在客户端重启后将自动被删除;
2. 建表时用户可以选择不指定表结构,因为如果用户不显式指定表结构,SparkSQL 将在建表时自动检测已经存在数据的表结构;
3. com.sequoiadb.spark 关键字为 SequoiaDB for Spark connector 的入口类;
4. options 为 SequoiaDB for Spark connector 的配置参数;
SparkSQL 建表例子如下:
create table tableName (name string, id int) using com.sequoiadb.spark options (host 'sdb1:11810,sdb2:11810,sdb3:11810', collectionspace 'foo', collection 'bar', username 'sdbadmin', password 'sdbadmin');
SparkSQL for SequoiaDB 的建表 options 参数列表如下:
表1
3.2 SparkSQL 优化
用户如果要使用 SparkSQL 对海量数据做统计分析操作,那么应该从3个方面进行性能调优:
1. 调大 Spark Worker 最大可用内存大小,防止在计算过程中数据超出内存范围,需要将部分数据写入到临时文件上;
2. 增加 Spark Worker 数目,并且设置每个 Worker 均可以使用当前服务器左右 CPU 资源,以提高并发能力;
3. 调整 Spark 的运行参数;
用户可以对 spark-env.sh 配置文件进行设置,SPARK_WORKER_MEMORY 为控制 Worker 可用内存的参数,SPARK_WORKER_INSTANCES 为每台服务器启动多少个 Worker 的参数。
如果用户需要调整 Spark 的运行参数,则应该修改 spark-defaults.conf 配置文件,对优化海量数据统计计算有较明显提升的参数有:
1. spark.storage.memoryFraction, 该参数控制 Worker 多少内存比例用户存储临时计算数据,默认为0.6,代表60%的含义;
2. spark.shuffle.memoryFraction, 该参数控制计算过程中 shuffle 时能够占用每个 Worker 的内存比例,默认为0.2,代表20%的含义,如果临时存储的计算数据较少,而计算中有较多的 group by, sort, join 等操作,应该考虑将spark.shuffle.memoryFraction 调大,spark.storage.memoryFraction 调小,避免超出内存部分需要写入临时文件中;
3. spark.serializer, 该参数设置 Spark 在运行时使用哪种序列化方法,默认为 org.apache.spark.serializer.JavaSerializer, 但是为了提升性能,应该选择 org.apache.spark.serializer.KryoSerializer 序列化。
3.3 SequoiaDB 优化
SparkSQL+SequoiaDB 这种组合,由于数据读取是从 SequoiaDB 中进行,所以在性能优化应该考虑三点
1. 尽可能将大表的数据分布式存储,所以建议符合二维切分条件的 table 应该采用主子表+ Hash 切分两种数据均衡方式进行数据分布式存储;
2. 数据导入时,应该避免同时对相同集合空间的多个集合做数据导入,因为同一个集合空间下的多个集合是共用相同一个数据文件,如果同时向相同集合空间的多个集合做数据导入,会导致每个集合下的数据块存储过于离散,从而导致在 Spark SQL 从SequoiaDB 获取海量数据时,需要读取的数据块过多;
3. 如果 SparkSQL 的查询命令中包含查询条件,应该对应地在 SequoiaDB 中建立对应字段的索引。
3.4 connector 优化
SequoiaDB for Spark 连接器的参数优化,主要分两个场景,一是数据读,另外一个是数据写入。
数据写入的优化空间较少,只有一个参数可以调整,即bulksize参数,该参数默认值为500,代表连接器向 SequoiaDB 写入数据时,以500条记录组成一个网络包,再向 SequoiaDB 发送写入请求,通常设置 bulksize 参数,以一个网络包不超过2MB为准。
数据读取的参数优化,用户则需要关注 partitionmode, partitionblocknum 和 partitionmaxnum 三个参数。
partitionmode ,连接器的分区模式,可选值有single、sharding、datablock、auto,默认值为auto,代表连接器智能识别。
1. single 值 代表 SparkSQL 在访问 SequoiaDB 数据时,不考虑并发性能,只用一个线程连接 SequoiaDB 的 Coord 节点,一般该参数在建表做表结构数据抽样时采用;
2. sharding 值 代表 SparkSQL 访问 SequoiaDB 数据时,采用直接连接 SequoiaDB 各个 datanode 的方式,该参数一般采用在 SQL 命令包含查询条件,并且该查询可以在 SequoiaDB 中使用索引查询的场景;
3. datablock 值 代表 SparkSQL 访问 SequoiaDB 数据时,采用并发连接 SequoiaDB 的数据块进行数据读取,该参数一般使用在SQL命令无法在 SequoiaDB 中使用索引查询,并且查询的数据量较大的场景;
4. auto 值 代表 SparkSQL 在向 SequoiaDB 查询数据时,访问 SequoiaDB 的方式将由连接器根据不同的情况分析决定。
04 总结
文章从 Spark、SequoiaDB 以及 SequoiaDB for Spark connector 三个方面向读者们介绍了海量数据下使用 SparkSQL+SequoiaDB 的性能调优方法。
文章中介绍的方法具有一定的参考意义,但是性能调优一直都是最考验技术人员的工作。技术人员在对分布式环境做性能调优时,需要综合考虑多个方面的数据,例如:服务器的硬件资源使用情况、Spark 运行状况、SequoiaDB 数据分布是否合理、连机器的参数设置是否正确、SQL 命令是否有调优的空间等,要想性能提升,重点是要求技术人员找到整个系统中的性能短板,然后通过调整不同的参数或者修改存储方案,从而让系统运行得更加高效。
你可能感兴趣的:(SequoiaDB巨杉数据库,教程)
Python日志模块
Python日志模块学习教程:b站王铭东老师Python中logging模块能够完成相关信息的记录,在debug时使用它事半功倍一、模块介绍日志级别DEBUG、INFO、WARNING、ERROR、CRITICAL默认是WARNING,当在WARNING或其之上时才被跟踪日志格式logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息一般使用
python-for-android 使用教程
沈昊冕Nadine
python-for-android使用教程python-for-androidTurnyourPythonapplicationintoanAndroidAPK项目地址:https://gitcode.com/gh_mirrors/py/python-for-android1.项目介绍python-for-android(p4a)是一个开发工具,用于将Python应用打包成可以在Android设
数据存储:使用Python存储数据到redis详解
数据知道
爬虫和逆向教程 python redis 数据库 非关系型数据库
更多内容请见:爬虫和逆向教程-专栏介绍和目录文章目录一.安装相关库和进行连接二、存储数据到Redis2.1存储字符串2.2存储列表2.3存储集合2.4有序集合类型2.5存储哈希三、数据的持久化与过期设置3.1持久化3.2过期设置四、其它操作4.1删除操作4.2关闭连接4.3使用连接池4.4处理异常五、总结在Python中,我们可以使用redis-py库来与Redis数据库进行交互。以下是如何将数据
Node.js REPL 教程
红衣大叔
nodejs帮助文档 node.js vim 编辑器
Node.jsREPL(Read-Eval-PrintLoop)是一个交互式环境,允许你直接输入和执行JavaScript代码,无需创建文件。它是学习Node.js、测试代码片段和调试的强大工具。启动REPL有几种方式可以启动Node.jsREPL:直接运行node命令:node在特定文件目录下启动(如果需要访问当前目录的模块):node使用环境变量(如设置特殊选项):NODE_REPL_HIST
mysql下载不是运作宝教程_MySQL下载与安装 8.0详细版
喵琛CC
mysql下载不是运作宝教程
MySQL下载与安装一、下载地址:https://dev.mysql.com/downloads/mysql/当前最新是8.0版本,我选择上一个最新的mysql-5.7.24-winx64.zip二、安装MySQL安装文件分两种.msi和.zip,.msi需要安装zip格式是自己解压,解压缩之后其实MySQL就可以使用了,但是要进行环境变量配置zip格式是自己解压我的电脑->属性->高级->环境变
《实战!用Java+Spring构建高并发电商秒杀系统(小学生都能懂的超详细教程)
大家好呀!今天咱们来聊一个特别刺激的话题——如何用Java和Spring框架打造一个能抗住百万流量的电商秒杀系统!⚡想象一下双11零点,几万人同时抢购限量商品,你的系统会不会直接"扑街"?别担心,跟着我一步步来,保证你能做出一个稳如老狗的秒杀系统!一、秒杀系统到底难在哪?首先咱们得明白,秒杀系统为啥这么难搞?主要是这四大"怪兽":高并发:几万人同时点"立即购买",服务器要炸超卖问题:库存就100件
Aider:27.6K Star!这个终端AI编程神器能用语音改代码,自动生成Git记录并提交,接入DeepSeek斩获编程基准最高分
蚝油菜花
每日 AI 项目与应用实例 AI编程 git 人工智能 开源
❤️如果你也关注AI的发展现状,且对AI应用开发感兴趣,我会每日分享大模型与AI领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!AI在线答疑->智能检索历史文章和开源项目->尽在微信公众号->搜一搜:蚝油菜花⌨️“每个CLI爱好者都该试试的AI编程革命:对着终端说话自动生成Gitcommit是怎样的体验?”大家好,我是蚝油菜花。如果你也经历过——在vim里卡了半小时,只为给函
C#上位机实战开发指南
ba_wang_mao
时隔半个多月,上位机教程终于写完第三章:Windows窗体程序,现开源给大家学习。有任何错误或者修改意见还请回贴指出,谢谢。【第三章】C#上位机实战开发指南.pdfhttps://www.firebbs.cn/thread-14611-1-1.html
医咖会免费STATA教程学习笔记——单因素方差分析
Unacandoit
stata 单因素方差分析
单因素方差分析和单因素回归分析相同1.单因素方差分析需要满足的假设:(1)因变量为连续变量(2)至少有一个分类变量(大于等于2类)(3)观测值相互独立(4)没有异常值(5)服从正态分布(6)方差齐性2.准备工作(1)导入数据集:webusesystolic,clear(2)检验是否存在异常值:方法一:图形——箱线图——在变量中选择systolic——确定方法二:grahboxsystolic,ov
RESTful API 安装使用教程
小奇JAVA面试
安装使用教程 restful 后端
一、RESTfulAPI简介REST(RepresentationalStateTransfer)是一种基于Web的架构风格,RESTfulAPI是使用HTTP协议并遵循REST原则设计的API接口。其核心思想是:使用标准HTTP方法(GET、POST、PUT、DELETE)对资源进行操作。RESTfulAPI通常用于构建前后端分离、微服务架构等系统,具备易理解、易扩展、易维护等优点。二、常用技术
PPOCRLabel 环境配置教程
ysh9888
人工智能 算法 计算机视觉 opencv
PPOCRLabel环境配置教程_哔哩哔哩_bilibili1安装conda2新建环境condacreate--nameppocrpython=3.8--channelhttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/condaactivateppocrpipinstall-rrequirements.txt-ihttps://pypi
MapReduce数据处理过程2万字保姆级教程
大模型大数据攻城狮
mapreduce 大数据 yarn cdh hadoop 大数据面试 shuffle
目录1.MapReduce的核心思想:分而治之的艺术2.HadoopMapReduce的架构:从宏观到微观3.WordCount实例:从代码到执行的完整旅程4.源码剖析:Job.submit的魔法5.Map任务的执行:从分片到键值对6.Shuffle阶段:MapReduce的幕后英雄7.Reduce任务的执行:从数据聚合到最终输出8.Combiner的魔法:提前聚合的性能利器9.Partition
超轻量级中文OCR项目使用教程
甄墨疆
超轻量级中文OCR项目使用教程chineseocr_lite超轻量级中文ocr,支持竖排文字识别,支持ncnn、mnn、tnn推理(dbnet(1.8M)+crnn(2.5M)+anglenet(378KB))总模型仅4.7M项目地址:https://gitcode.com/gh_mirrors/ch/chineseocr_lite1.项目介绍本项目是一个超轻量级的中文OCR(OpticalCha
【TVM 教程】如何处理 TVM 报错
ApacheTVM是一个深度的深度学习编译框架,适用于CPU、GPU和各种机器学习加速芯片。更多TVM中文文档可访问→https://tvm.hyper.ai/运行TVM时,可能会遇到如下报错:---------------------------------------------------------------AnerroroccurredduringtheexecutionofTVM.F
llama-cpp-python使用教程
try2find
llama python 开发语言
以下是llama-cpp-python的完整使用教程,涵盖安装、基础用法、高级功能(如GPU加速、多模态等)和常见问题解决。1.安装1.1基础安装(CPU版)pipinstallllama-cpp-python-ihttps://pypi.tuna.tsinghua.edu.cn/simple1.2启用GPU加速(CUDA)CMAKE_ARGS="-DGGML_CUDA=ON"pipinstall
Markdown 安装使用教程
小奇JAVA面试
安装使用教程 markdown
一、Markdown简介Markdown是一种轻量级标记语言,语法简洁、易读易写,广泛用于编写博客、文档、README文件等。它可以导出为HTML、PDF等格式,兼容各种平台如GitHub、Typora、VSCode等。二、Markdown编辑器推荐2.1桌面端编辑器平台特点TyporaWindows/macOS/Linux所见即所得,简洁高效VSCode+插件跨平台强大可扩展,开发者首选Mark
SVN 安装使用教程
小奇JAVA面试
安装使用教程 svn
一、SVN简介SVN(Subversion)是一个流行的集中式版本控制系统,用于跟踪文件的更改历史,常用于软件开发项目的代码管理。虽然Git更加流行,但SVN仍在很多传统企业和大型项目中被广泛使用。二、SVN安装2.1Windows安装(使用TortoiseSVN)下载地址:https://tortoisesvn.net/downloads.html安装后系统右键菜单会添加SVN功能;推荐安装中文
JSONLines和JSON数据格式使用教程
Cachel wood
现代程序设计技术 json jsonlines 贪心算法 算法 spark ajax 大数据
文章目录一、核心区别二、JSONLines的优势三、Python中使用JSONLines1.写入JSONLines文件2.读取JSONLines文件3.处理大文件示例四、常见工具支持1.命令行工具2.编程语言库五、适用场景选择六、注意事项总结JSONLines(简称jsonl或jl)和传统JSON都是用于存储结构化数据的格式,但它们的设计目标和使用场景有所不同。以下是详细对比和使用指南:一、核心区
Simscape入门教程
微小冷
机器人 Matlab simulink simscape 弹簧阻尼 multibody
文章目录物理网络连接到Simulink运行本文是官方教程构造物理模型的基本步骤的学习笔记,旨在建立一个带有控制器的质量-弹簧-阻尼系统。物理网络在命令行中输入sscnew,即可弹出Simscape模板,基于此模板即可组建其相应的物理网络。通过添加新模块、删除无关模块,连接其物理网络如下所有模块均在Simscape->FoundationLibrary->Mechanical中,具体包括需要的模块包
30分钟手把手搭建WordPress网站(有服务器优惠)
r***177
服务器 运维 Wordpress 搭建教程 网站搭建
bro,今天给你来一个超详细的WordPress搭建教程,从装宝塔面板开始,手把手教你。对了,趁现在雨云有新人活动,用我的专属链接注册还能拿5折券,后面我还会在积分商城发免费券,绝对划算!第一步:安装宝塔面板首先你得有个服务器,我推荐用雨云的,性价比高。用我的链接注册还能拿5折券:点击注册雨云账号,注册后绑定微信直接送5折券!优惠码"lxoffice"也可以直接用,但点链接更方便。装宝塔面板很简单
Linux下Redis安装配置全攻略(2024最新版)
「已注销」
linux redis 运维
手残党也能搞定的Redis安装指南还在为Linux安装Redis发愁?(别问我怎么知道的)今天这个保姆级教程绝对能让你爽到飞起!从零开始到完全可用只要10分钟,连小白都能轻松上手!(信我,真的)环境准备(超级重要)先确认你的Linux发行版(敲黑板!):#查看系统信息cat/etc/os-release推荐系统:Ubuntu20.04/22.04LTSCentOS7/8RockyLinux8/9安
2019年架构师系列教程:高并发Netty实战打造百万连接架构
不教书的塞涅卡
本文还有配套的精品资源,点击获取简介:本课程面向高级IT专业人士,旨在教授如何利用Netty框架设计和实现能够处理高并发连接的服务器架构。Netty是一个高性能、异步事件驱动的Java网络应用程序框架。课程将提升学员在系统架构设计和性能优化方面的技能,应对高并发场景挑战,特别是在金融、游戏、物联网等领域。1.Netty框架基础概念介绍Netty是一个高性能的网络应用框架,专为快速开发可维护的高性能
【PyTorch】教程:torch.nn.Mish
torch.nn.Mish原型CLASStorch.nn.Mish(inplace=False)定义Mish(x)=x∗Tanh(Softplus(x))\text{Mish}(x)=x∗\text{Tanh}(\text{Softplus}(x))Mish(x)=x∗Tanh(Softplus(x))图代码importtorchimporttorch.nnasnnm=nn.Mish()input
【PyTorch】教程:torch.nn.GELU
老周有AI~算法定制
PyTorch pytorch 深度学习 python
torch.nn.GELU原型CLASStorch.nn.GELU(approximate='none')参数approximate(str,optional)–gelu近似算法用none或者tanh,默认为none;定义高斯误差线性单元函数GELU(x)=x∗ϕ(x)\text{GELU}(x)=x*\phi(x)GELU(x)=x∗ϕ(x)其中ϕ(x)\phi(x)ϕ(x)为高斯分布的累积分布
Pillow 安装使用教程
小奇JAVA面试
安装使用教程 pillow microsoft 深度学习
一、Pillow简介Pillow是Python图像处理库PIL(PythonImagingLibrary)的友好分支,是图像处理的事实标准。它支持打开、编辑、转换、保存多种图像格式,常用于图像批量处理、验证码识别、缩略图生成等应用场景。二、安装Pillow2.1使用pip安装(推荐)pipinstallPillow2.2验证安装importPILprint(PIL.__version__)若无报错
python炫酷烟花表白源代码-python炫酷烟花表白源代码
weixin_37988176
天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花,工作之余也可以随时让程序为自己放一场烟花秀。python炫酷烟花表白源代码这个有趣的小项目并不复杂,只需一点可视化技巧,100余行Python代码和程序库Tkinter,最后我们就能达到下面这个效果:学完本教程后,你也能做出这样的烟花秀。整体概念梳理我们的整个理念比较简单。如上图示,我们这里通过让画
Cursor 使用教程:Java 单体架构中 AI 规则自定义的 CRUD 开发全流程
程序员岳彬
全栈开发 java 架构 人工智能 后端 AI编程 ai
一、Cursor自定义AI规则基础入门1.1什么是Cursor自定义AI规则Cursor是一款强大的AI编程助手,而自定义AI规则是Cursor中用于约束和指导AI行为的配置文件,它允许开发者根据项目的特定需求定制AI的响应方式。这些规则文件本质上是你与AI之间的"协议",告诉AI你的项目架构、编码规范、技术栈偏好等信息,从而让AI生成更符合你期望的代码和建议。简单来说,Cursor自定义AI规则
Flask 安装使用教程
小奇JAVA面试
安装使用教程 flask python 后端
一、Flask简介Flask是一个使用Python编写的轻量级Web应用框架,核心设计理念是简单易用、模块化扩展性强。Flask提供了路由、模板、请求响应等基本功能,适合构建中小型网站、RESTfulAPI、微服务架构等。二、环境准备2.1安装Python确保已安装Python3.7或以上版本:python--version如未安装,可前往:https://www.python.org/downl
go-micro教程 — 第一章 快速入门
go-micro教程—第一章快速入门1参考文档2所需依赖3安装micro3.1GoGet方式安装:3.2二进制版本3.3Docker镜像4运行micro服务4.1启动microserver服务4.2登录Micro4.3运行helloworld4.4查看运行结果4.4.1查看正在运行的服务的状态4.4.2查看服务的日志5调用服务5.1查看服务节点5.2使用API方式调用5.3客户端方式调用6创建服务
SFT(监督微调)详解:零基础入门到精通,一篇详细的入门教程!
AGI大模型老王
人工智能 程序员 大模型 学习 AI大模型 大模型微调 SFT
文章目录具体步骤如下:应用场景优点举例步骤1:预训练模型的选择步骤2:数据收集与标注步骤3:数据预处理步骤4:数据集划分步骤5:加载预训练模型步骤6:数据编码步骤7:创建数据加载器步骤8:定义训练过程步骤9:模型评估步骤10:模型保存零基础入门AI大模型一、全套AGI大模型学习路线二、640套AI大模型报告合集三、AI大模型经典PDF籍四、AI大模型商业化落地方案学习计划:资料领取SFT(监督微调
ViewController添加button按钮解析。(翻译)
张亚雄
c
<div class="it610-blog-content-contain" style="font-size: 14px"></div>// ViewController.m
// Reservation software
//
// Created by 张亚雄 on 15/6/2.
mongoDB 简单的增删改查
开窍的石头
mongodb
在上一篇文章中我们已经讲了mongodb怎么安装和数据库/表的创建。在这里我们讲mongoDB的数据库操作
在mongo中对于不存在的表当你用db.表名 他会自动统计
下边用到的user是表明,db代表的是数据库
添加(insert):
log4j配置
0624chenhong
log4j
1) 新建java项目
2) 导入jar包,项目右击,properties—java build path—libraries—Add External jar,加入log4j.jar包。
3) 新建一个类com.hand.Log4jTest
package com.hand;
import org.apache.log4j.Logger;
public class
多点触摸(图片缩放为例)
不懂事的小屁孩
多点触摸
多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参考一下
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener
有关浏览器窗口宽度高度几个值的解析
换个号韩国红果果
JavaScript html
1 元素的 offsetWidth 包括border padding content 整体的宽度。
clientWidth 只包括内容区 padding 不包括border。
clientLeft = offsetWidth -clientWidth 即这个元素border的值
offsetLeft 若无已定位的包裹元素
数据库产品巡礼:IBM DB2概览
蓝儿唯美
db2
IBM DB2是一个支持了NoSQL功能的关系数据库管理系统,其包含了对XML,图像存储和Java脚本对象表示(JSON)的支持。DB2可被各种类型的企 业使用,它提供了一个数据平台,同时支持事务和分析操作,通过提供持续的数据流来保持事务工作流和分析操作的高效性。 DB2支持的操作系统
DB2可应用于以下三个主要的平台:
工作站,DB2可在Linus、Unix、Windo
java笔记5
a-john
java
控制执行流程:
1,true和false
利用条件表达式的真或假来决定执行路径。例:(a==b)。它利用条件操作符“==”来判断a值是否等于b值,返回true或false。java不允许我们将一个数字作为布尔值使用,虽然这在C和C++里是允许的。如果想在布尔测试中使用一个非布尔值,那么首先必须用一个条件表达式将其转化成布尔值,例如if(a!=0)。
2,if-els
Web开发常用手册汇总
aijuans
PHP
一门技术,如果没有好的参考手册指导,很难普及大众。这其实就是为什么很多技术,非常好,却得不到普遍运用的原因。
正如我们学习一门技术,过程大概是这个样子:
①我们日常工作中,遇到了问题,困难。寻找解决方案,即寻找新的技术;
②为什么要学习这门技术?这门技术是不是很好的解决了我们遇到的难题,困惑。这个问题,非常重要,我们不是为了学习技术而学习技术,而是为了更好的处理我们遇到的问题,才需要学习新的
今天帮助人解决的一个sql问题
asialee
sql
今天有个人问了一个问题,如下:
type AD value
A  
意图对象传递数据
百合不是茶
android 意图Intent Bundle对象数据的传递
学习意图将数据传递给目标活动; 初学者需要好好研究的
1,将下面的代码添加到main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:/
oracle查询锁表解锁语句
bijian1013
oracle object session kill
一.查询锁定的表
如下语句,都可以查询锁定的表
语句一:
select a.sid,
a.serial#,
p.spid,
c.object_name,
b.session_id,
b.oracle_username,
b.os_user_name
from v$process p, v$s
mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]
征客丶
mysql osx
场景:在 mac osx 10.10 下安装 mysql 5.6 的二进制文件。
环境:mac osx 10.10、mysql 5.6 的二进制文件
步骤:[所有目录请从根“/”目录开始取,以免层级弄错导致找不到目录]
1、下载 mysql 5.6 的二进制文件,下载目录下面称之为 mysql5.6SourceDir;
下载地址:http://dev.mysql.com/downl
分布式系统与框架
bit1129
分布式
RPC框架 Dubbo
什么是Dubbo
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接
那些令人蛋痛的专业术语
白糖_
spring Web SSO IOC
spring
【控制反转(IOC)/依赖注入(DI)】:
由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
简单的说:对象的创建又容器(比如spring容器)来执行,程序里不直接new对象。
Web
【单点登录(SSO)】:SSO的定义是在多个应用系统中,用户
《给大忙人看的java8》摘抄
braveCS
java8
函数式接口:只包含一个抽象方法的接口
lambda表达式:是一段可以传递的代码
你最好将一个lambda表达式想象成一个函数,而不是一个对象,并记住它可以被转换为一个函数式接口。
事实上,函数式接口的转换是你在Java中使用lambda表达式能做的唯一一件事。
方法引用:又是要传递给其他代码的操作已经有实现的方法了,这时可以使
编程之美-计算字符串的相似度
bylijinnan
java 算法 编程之美
public class StringDistance {
/**
* 编程之美 计算字符串的相似度
* 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
* 1.修改一个字符(如把“a”替换为“b”);
* 2.增加一个字符(如把“abdd”变为“aebdd”);
* 3.删除一个字符(如把“travelling”变为“trav
上传、下载压缩图片
chengxuyuancsdn
下载
/**
*
* @param uploadImage --本地路径(tomacat路径)
* @param serverDir --服务器路径
* @param imageType --文件或图片类型
* 此方法可以上传文件或图片.txt,.jpg,.gif等
*/
public void upload(String uploadImage,Str
bellman-ford(贝尔曼-福特)算法
comsci
算法 F#
Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore zu 也为这个算法的发展做出了贡献。
与迪科
oracle ASM中ASM_POWER_LIMIT参数
daizj
ASM oracle ASM_POWER_LIMIT 磁盘平衡
ASM_POWER_LIMIT
该初始化参数用于指定ASM例程平衡磁盘所用的最大权值,其数值范围为0~11,默认值为1。该初始化参数是动态参数,可以使用ALTER SESSION或ALTER SYSTEM命令进行修改。示例如下:
SQL>ALTER SESSION SET Asm_power_limit=2;
高级排序:快速排序
dieslrae
快速排序
public void quickSort(int[] array){
this.quickSort(array, 0, array.length - 1);
}
public void quickSort(int[] array,int left,int right){
if(right - left <= 0
C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节
dcj3sjt126com
C语言
# include <stdio.h>
int main(void)
{
/*
1、一个变量的地址只用第一个字节表示
2、虽然他只使用了第一个字节表示,但是他本身指针变量类型就可以确定出他指向的指针变量占几个字节了
3、他都只存了第一个字节地址,为什么只需要存一个字节的地址,却占了4个字节,虽然只有一个字节,
但是这些字节比较多,所以编号就比较大,
phpize使用方法
dcj3sjt126com
PHP
phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,下面介绍一个它的使用方法,需要的朋友可以参考下
安装(fastcgi模式)的时候,常常有这样一句命令:
代码如下:
/usr/local/webserver/php/bin/phpize
一、phpize是干嘛的?
phpize是什么?
phpize是用来扩展php扩展模块的,通过phpi
Java虚拟机学习 - 对象引用强度
shuizhaosi888
JAVA虚拟机
本文原文链接:http://blog.csdn.net/java2000_wl/article/details/8090276 转载请注明出处!
无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。
引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Wea
.NET Framework 3.5 Service Pack 1(完整软件包)下载地址
happyqing
.net 下载 framework
Microsoft .NET Framework 3.5 Service Pack 1(完整软件包)
http://www.microsoft.com/zh-cn/download/details.aspx?id=25150
Microsoft .NET Framework 3.5 Service Pack 1 是一个累积更新,包含很多基于 .NET Framewo
JAVA定时器的使用
jingjing0907
java timer 线程 定时器
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
privatejava.util.Timer timer;
timer = newTimer(true);
timer.schedule(
newjava.util.TimerTask() { public void run()
Webbench
流浪鱼
webbench
首页下载地址 http://home.tiscali.cz/~cz210552/webbench.html
Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。
Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相
第11章 动画效果(中)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
windows下制作bat启动脚本.
sanyecao2314
java cmd 脚本 bat
java -classpath C:\dwjj\commons-dbcp.jar;C:\dwjj\commons-pool.jar;C:\dwjj\log4j-1.2.16.jar;C:\dwjj\poi-3.9-20121203.jar;C:\dwjj\sqljdbc4.jar;C:\dwjj\voucherimp.jar com.citsamex.core.startup.MainStart
Java进行RSA加解密的例子
tomcat_oracle
java
加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理解的密文;解密是将密文转换回纯文本。 数据的加解密属于密码学的范畴。通常,加密和解密都需要使用一些秘密信息,这些秘密信息叫做密钥,将纯文本转为密文或者转回的时候都要用到这些密钥。 对称加密指的是发送者和接收者共用同一个密钥的加解密方法。 非对称加密(又称公钥加密)指的是需要一个私有密钥一个公开密钥,两个不同的密钥的
Android_ViewStub
阿尔萨斯
ViewStub
public final class ViewStub extends View
java.lang.Object
android.view.View
android.view.ViewStub
类摘要: ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewSt