当今时代,企业数据越发膨胀。数据是企业的价值,但数据处理也是一种技术挑战。在海量数据处理的场景,即使单机计算能力再强,也无法满足日益增长的数据处理需求。所以,分布式才是解决该类问题的根本解决方案。而在分布式领域,有两类典型产品,分别是分布式存储和分布式计算。用户只有将两者的特性充分利用,才可以真正发挥分布式架构的存储和计算能力。
本文介绍 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巨杉数据库,教程)
OpenAI-Compatible Edge-TTS API 使用教程
马琥承
OpenAI-CompatibleEdge-TTSAPI使用教程openai-edge-ttsFree,high-qualitytext-to-speechAPIendpointtoreplaceOpenAI,Azure,orElevenLabs项目地址:https://gitcode.com/gh_mirrors/op/openai-edge-tts1.项目介绍本项目提供了一个本地化的、与Ope
飞算 JavaAI 2.0.0和 AI 编程技术设计的 120 章 Java 系统教程
AI编程员
001AI传统&编程语言 002AI编程工具汇总 003AI编程作品汇总 开发语言 深度学习 pillow AI编程 人工智能
以下是基于飞算JavaAI2.0.0和AI编程技术设计的120章Java系统教程,涵盖从基础到高阶、理论到实践的全栈知识体系,结合经典案例与企业级项目实战,适合零基础到架构师的学习路径:第一部分:基础入门(第1-30章)Java开发环境配置JDK21+IntelliJIDEA+飞算AI插件安装第一个AI生成的HelloWorld程序基础语法与AI辅助编程数据类型、变量、运算符飞算AI:自动生成算法
python中random中uniform怎么用_Python中的random.uniform()函数教程与实例解析
weixin_39763640
random.uniform()函数教程与实例解析1.uniform()函数说明random.uniform(x,y)方法将随机生成一个实数,它在[x,y]范围内。2.uniform()的语法与参数2.1语法#_*_coding:utf-8_*_importrandomrandom.uniform(x,y)或#_*_coding:utf-8_*_fromrandomimportuniformuni
Python Flask Web教程004:Flask 变量规则
若北辰
flask python 前端
FlaskWeb教程004:Flask变量规则1.Flask变量规则2.实例3.转换器构建规则4.规范的URL5.路由尾部有无斜杠的区别路由尾部斜杠的影响推荐使用带尾斜杠的路由结论1.Flask变量规则通过向规则参数添加变量部分,可以动态构建URL。此变量部分标记为。它作为关键字参数传递给与规则相关联的函数。2.实例在以下示例中,route()装饰器的规则参数包含附加到URL'/hello’的。因
Cesium 实战 05 - 标绘编辑功能系列之编辑线段对象(Linestring | Polyline)
非科班Java出身GISer
Cesium 实战教程 cesium 编辑线 cesium 修改线 编辑 polyline cesium编辑line cesium修改line 修改 polyline cesium编辑标绘线
Cesium实战-标绘编辑功能系列之编辑线段对象(Linestring|Polyline)核心代码完整代码在线示例本来想着标绘功能是比较基础的功能,而且网上一搜一堆,就不在教程里放了。后来觉得,标绘也是项目实战中非常常用的,网上虽然教程挺多,但是由于质量参差不齐,版本各不一致。本教程系列还是加上比较合适,主要是在线示例可以更好的帮助到需要的GISer。标绘编辑功能系列包含=编辑点、编辑线、编辑面,
Cesium快速入门到精通系列教程十:实现任意多个蜂巢似六边形组合
duansamve
cesium cesium
要实现完美的正六边形蜂巢排列,关键在于精确计算每个六边形的顶点位置和排列方式。以下是Cesium1.106中优化后的完整实现方案:正六边形几何原理正六边形的特性:所有边长相等(设为radius)中心到每个顶点的距离相等(外接圆半径)相邻六边形中心间距为√3*radius行间距为1.5*radiusCesium.Ion.defaultAccessToken='你的defaultAccessToken
Cesium快速入门到精通系列教程十一:Cesium1.74中高性能渲染上万Polyline
duansamve
cesium cesium
在Cesium1.74中,高性能渲染大量线条的核心在于PrimitiveAPI的批量处理、着色器优化和数据合并策略。以下是结合多个技术方案的最佳实践和完整代码实现:一、高性能渲染方案选择PrimitiveAPI批量渲染优势:直接操作几何体实例,减少Entity的开销,支持合并几何数据降低DrawCall。关键类:PolylineGeometry+GeometryInstance+Primitive
H5液态玻璃背景效果实现
木木黄木木
html5 css javascript
H5液态玻璃背景效果实现教程在现代网页设计中,动态和交互式的背景效果可以大大提升用户体验。本教程将详细介绍如何使用HTML5技术实现一个美观、流畅的液态玻璃背景效果,无论你是初学者还是有经验的开发者,都能轻松掌握。效果预览本教程提供了两种实现方式:基础版本:使用Canvas2DAPI实现,适合初学者,兼容性好高级版本:使用WebGL和GLSL着色器实现,效果更加逼真,但复杂度更高两个版本都具有以下
【Flask开发】嘿马文学web完整flask项目第2篇:2.用户认证,Json Web Token(JWT)【附代码文
flaskpython前端后端
教程总体简介:2.目标1.1产品与开发1.2环境配置1.3运行方式1.4目录说明1.5数据库设计2.用户认证JsonWebToken(JWT)3.书架4.1分类列表5.搜索5.3搜索-精准&高匹配&推荐6.小说6.4推荐-同类热门推荐7.浏览记录8.1配置-阅读偏好8.配置9.1项目部署uWSGI配置启动9.部署10.1异常和日志10.补充10.2flask-restful1.项目目录实现3.数据
第 1 部分 - 序列化
pythondjango
介绍本教程将介绍如何创建一个简单的在线代码高亮WebAPI。在此过程中,将介绍DjangoRESTFramework的各个组件,并让你全面了解它们是如何协同工作的。本教程内容较为深入,所以在开始之前,你可能需要准备一块饼干和一杯你最喜欢的饮料。如果你只是想快速了解内容,可以查看快速入门文档。注意:本教程的代码可在GitHub上的encode/rest-framework-tutorial仓库中找到
前端领域Node.js环境搭建详细教程
前端视界
前端艺匠馆 前端 node.js ai
前端领域Node.js环境搭建详细教程关键词:Node.js、环境搭建、NPM、版本管理、前端开发摘要:本文是面向前端开发者的Node.js环境搭建全流程指南。我们将从Node.js的核心作用讲起,用“快递站”“魔法翻译机”等生活比喻拆解技术概念,逐步讲解Windows/macOS/Linux三平台的安装步骤、版本管理工具nvm的使用、镜像源配置技巧,最后通过一个“静态网页服务器”实战案例验证环境
ROS学习笔记5:常用API和模块导入
前言本人ROS小白,利用寒假时间学习ROS,在此以笔记的方式记录自己每天的学习过程。争取写满15篇(5/15)。环境:Ubuntu20.04、ROS1:noetic环境配置:严格按照下方学习链接的教程配置,基本一次成功。学习链接:【Autolabor初级教程】ROS机器人入门对应链接文档:ROS机器人入门课程《ROS理论与实践》笔记绝大部分代码使用Python语言编写。本期关键词:初始化,话题服务
OpenCV图像添加水印
一、前言在数字图像处理中,为图片添加水印是一项常见且重要的技术。无论是版权保护、品牌宣传还是防止未经授权的使用,水印都能发挥重要作用。OpenCV作为一款强大的计算机视觉库,提供了丰富的功能来实现各种水印效果。本教程将详细介绍如何使用OpenCV为图像添加文字水印和图片水印。二、环境准备在开始之前,请确保已安装以下环境:Python3.xOpenCV库(可通过pipinstallopencv-py
安装黑苹果时提示未能与服务器,安装黑苹果遇到的问题与解决记录
草莓味儿柠檬
安装黑苹果时提示未能与服务器
前言–这篇文章讲了啥?这篇文件是我在安装黑苹果时遇到的问题与解决办法的总结所以更注重的是发现问题解决问题,关于黑苹果教程自己上网上找吧,资源非常多所以安装方面可能就几句话带过了1.硬件配置电脑型号戴尔Inspiron5680台式电脑操作系统Windows1064位家庭版处理器英特尔Corei5-8400主板戴尔0PXWHK(z370芯片组),找efi驱动首先按照这个主板来就行(z370)内存三星D
《网络安全自学教程》- SQL注入漏洞详解
士别三日wyx
《网络安全自学教程》 sql 数据库 网络安全 安全 web安全
《网络安全自学教程》SQL注入的原理其实很简单:由于后端过滤不严格,把用户输入的数据当成SQL语句执行了。SQL注入1、SQL注入常出现在哪些功能?2、SQL注入危害3、SQL注入分类4、判断是否存在SQL注入5、SQL注入方式6、SQL注入防御6.1、预编译1、SQL注入常出现在哪些功能?凡是涉及「数据库操作的功能」,都有可能存在SQL注入,比如:搜索框等查询功能。用户注册/用户登录功能。密码找
使用 Simulink 来实现一个简化的电动汽车动力总成控制系统模型
xiaoheshang_123
手把手教你学 MATLAB 专栏 MATLAB 开发项目实例 1000 例专栏 数据结构 simulink matlab
目录一、引言教程目标二、准备工作三、实现步骤详解✅步骤1:创建Simulink模型✅步骤2:添加电机与控制器模型✅步骤3:电池管理系统(BMS)✅步骤4:能量回收系统✅步骤5:连接各模块并设置仿真参数示例连线代码:设置仿真参数:✅步骤6:结果可视化✅步骤7:完整框图结构示意(文字版)四、运行仿真并测试效果五、结论与拓展方向✅本章收获:后续建议拓展方向:手把手教你学Simulink——电动车辆的动力
如何设计一款现代化风格的博客主题程序呢? LeleBlog - 现代化Typecho博客主题
独立开发者阿乐
原创 深度学习 人工智能 算法 源代码管理 学习方法 技术美术
文章目录LeleBlog-Typecho主题目录主题介绍✨主题特性主题架构安装教程使用指南主题设置基本设置首页设置公告设置界面元素侧边栏设置生日倒计时社交链接友情链接与信息文章编辑兼容插件❓常见问题配套主题插件更多干货1.如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞”“✍️评论”“收藏”一键三连哦!LeleBlog-Typecho主题一款为Typecho开发的现代化、功能丰富的博客主题
第 5 部分 - 关系与超链接 API
pythondjango
目前我们API中的关系是通过使用主键来表示的。在教程的这一部分中,我们将通过使用超链接来代替主键,从而提高API的内聚性和可发现性。为我们的API根创建一个端点现在我们已经有了"snippets"和"users"的端点,但我们没有一个单一的API入口点。为了创建一个入口点,我们将使用一个普通的基于函数的视图以及我们之前介绍的@api_view装饰器。在你的snippets/views.py中添加:
探秘 SELinux Notebook:安全增强的利器与实践指南
纪亚钧
探秘SELinuxNotebook:安全增强的利器与实践指南去发现同类优质开源项目:https://gitcode.com/在网络安全日益重要的今天,SELinux(Security-EnhancedLinux)作为Linux内核的安全模块,提供了强制访问控制机制,极大地增强了系统的安全性。而SELinuxNotebook则是为了帮助用户更好地理解和使用SELinux的一款交互式教程平台。它将复杂
我的世界进阶模组开发教程——机械动力的数据生成(1)
lemon_sjdk
我的世界
机械动力注册元素的方式是依赖registrateAPI来实现注册的,这个API和之前说的GlitchCore库所用的注册方式高效多了,不管是开发效率还是可维护性,都比bop式注册好多了,因此学习第三篇和第四篇文章是重中之重代码解析:Create模组主类(Create.java)核心字段解析基础标识字段ID="create":模组唯一标识符,用于资源定位(如create:gear)。NAME="Cr
我的世界1.20.1forge模组开发进阶教程——Geckolib动画实体(3)
lemon_sjdk
java 我的世界 模组开发
注意:本章涉及大量的geckolib底层代码,补充讲解了上一节没讲的,如果看不懂请去学习JavaGeoEntity////Sourcecoderecreatedfroma.classfilebyIntelliJIDEA//(poweredbyFernFlowerdecompiler)//packagesoftware.bernie.geckolib.animatable;importjavax
我的世界1.20.1forge模组开发进阶教程——序列化(1)
lemon_sjdk
java 我的世界 mc forge模组开发 序列化
mc的序列化在《Minecraft》(MC)中,序列化指将游戏数据(如方块、实体、玩家状态等)转换为可存储或传输的格式。这是游戏运行、存档保存和网络通信的关键技术。以下是Minecraft中常见的序列化方式及其用途:一、序列化在Minecraft中的作用存档数据持久化将玩家建筑、地图、物品栏等数据保存到硬盘(如.minecraft/saves中的区域文件)。网络传输服务器与客户端同步方块更新、实体
我的世界进阶模组开发教程——地形生成(1)
lemon_sjdk
我的世界 forge模组开发 进阶教程 java
找到mc的屎山代码,找到net.minecraft.world.level.levelgen包,我们来看看mc是如何完成地形生成的SurfaceRules代码结构与核心功能解析该代码是Minecraft世界生成模块中地表规则(SurfaceRules)的核心实现,用于控制地形表面的方块生成逻辑。以下从多角度进行拆解分析:一、顶层结构解析1.静态条件定义(ConditionSource)public
Alluxio EnterpriseAI on K8s 部署教程
Alluxio
kubernetes 容器 云原生
AlluxioEnterpriseAIonK8s部署视频教程视频为AlluxioEnterpriseAIonK8s部署视频教程。下面内容将主要介绍如何通过Operator(Kubernetes管理应用程序的扩展)在Kubernetes上安装Alluxio。1.系统要求Kubernetes至少1.19版本的Kubernetes集群,支持特性门控确保集群的Kubernetes网络策略允许应用程序(Al
我的世界模组开发进阶教程——机械动力的数据生成(2)
lemon_sjdk
我的世界 模组开发 java
==这篇文字继续来看看机械动力的数据生成==Create源码AssetLookupAssetLookup是Minecraft模组开发中用于简化数据生成的工具类,专注于自动处理方块(Block)和物品(Item)的模型(Model)文件路径生成与状态映射。其核心功能是根据规则动态构造资源路径,并适配不同状态(如供电状态、指示器数值)的模型。以下从两个维度详细解析:一、String...语法:Java
第 3 章:神经网络如何学习
鱼摆摆拜拜
神经网络 学习 人工智能
第3章:神经网络如何学习在第二章中,我们详细了解了神经网络的静态结构:由神经元组成的层,以及连接它们的权重和偏置。现在,我们将进入整个教程最核心的部分:神经网络是如何从数据中"学习"的?这个学习过程是一个动态的、不断调整自身参数以求更佳预测的过程。我们将通过四个关键概念来揭示这个秘密:前向传播(ForwardPropagation):数据如何通过网络产生一个预测?损失函数(LossFunction
【PyTorch】2024保姆级安装教程-Python-(CPU+GPU详细完整版)
金枝玉叶9
程序员知识储备1 程序员知识储备2 程序员知识储备3 python pytorch 人工智能
【PyTorch】2024保姆级安装教程(CPU+GPU详细完整版)PyTorch是当前最受欢迎的深度学习框架之一。本文将详细讲解在Python环境中安装PyTorch,包括CPU和GPU版本的全方位指南。一、前置环境首先确保已安装Python环境,推荐使用Python3.8或以上版本。验证Python安装:python--versionpip--version推荐使用虚拟环境(如conda或ve
Bootstrap 5学习教程,从入门到精通,Bootstrap 5 侧边栏导航(Offcanvas) 语法知识点及案例(26)
知识分享小能手
Bootstrap5 前端开发 网页开发 bootstrap 学习 前端 typescript javascript html css
Bootstrap5侧边栏导航(Offcanvas)语法知识点及案例一、Offcanvas语法知识点1.基本结构Offcanvas由以下几个主要部分组成:触发按钮(通常带有data-bs-toggle="offcanvas"属性)Offcanvas容器(带有.offcanvas类)关闭按钮(通常放在offcanvas内部)2.核心类.offcanvas:主容器.offcanvas-start/.o
Bootstrap 5学习教程,从入门到精通,Bootstrap 5 表单语法知识点及案例(28)
知识分享小能手
前端开发 Bootstrap5 网页开发 bootstrap 学习 前端 typescript html css javascript
Bootstrap5表单语法知识点及案例Bootstrap5提供了强大而灵活的表单控件和布局选项。一、基础表单结构Bootstrap5表单需要以下基本结构:基础表单示例Bootstrap5基础表单邮箱地址我们不会将您的邮箱分享给其他人。密码记住我提交二、表单控件1.输入框(Input)Bootstrap5提供了多种输入框样式:文本输入邮箱输入密码输入数字输入日期输入2.文本域(Textarea)文
Bootstrap 5学习教程,从入门到精通,Bootstrap 5 滚动监听(Scrollspy)语法知识点及案例代码(25)
知识分享小能手
网页开发 Bootstrap5 前端开发 bootstrap 学习 前端 javascript typescript html css
Bootstrap5滚动监听(Scrollspy)语法知识点及案例代码Bootstrap5的Scrollspy组件允许根据用户的滚动位置自动更新导航链接的激活状态。这对于创建具有固定导航栏的单页网站特别有用,能够提升用户体验和导航的便捷性。一、Scrollspy语法知识点1.基本结构要使用Scrollspy,需要以下几个关键部分:导航栏(Navbar):包含指向页面不同部分的链接。目标容器(Tar
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