有时需要进行规律性的重复操作,需要用到程序中的循环语句。循环语句是由循环体及循环的终止条件两部分组成。循环语句是在一定条件下反复执行一段程序的流程结构,被反复执行的程序称为循环体。循环是否结束,取决于循环的终止条件。1 Lua中的循环方式循环类型描述while在条件为 true 时,循环体被重复执行。循环前先检查条件是否为 truefor重复执行指定语句,重复次数可在 for 语句中控制repea
变量在使用前,需要首先进行声明,即创建该变量。程序在编译前,需要知道如何给变量开辟存储区域,用于存储变量的值。lua 中的变量有三种类型:全局变量局部变量表中的域lua中的变量,如果没有使用修改符 local ,则都是全局变量,即使是在语句块或者函数中。只有使用 local 修改的变量,才是局部变量。局部变量的作用域为从声明位置开始,到所在语句块结束。变量的默认值都为 nil。a = 20 loc
1 算术运算符lua中的算术运算符如下表 运算符说明+加法-减法*乘法/除法//整除,对除数取整,舍去所有小数部分^指数(幂计算)%取模(求余计算)print(10 + 2) print(10 - 2) print(10 * 2) print(9 / 2) print(9 // 2) print(9 % 2) print(10 ^ 2)执行后输出如下:12 8 20 4.5 4 1 100.02
lua 是动态类型语言,变量使用前不需要定义类型,在使用时直接赋值即可。1 基本数据类型值可以存储在变量中,作为参数传递或作为结果返回。lua中有八个基本数据类型:nil 只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)boolean 布尔类型, true 和 falsenumber 双精度浮点数string 字符串,可由一对单引号或双引号表示user
1 注释单行注释-- 单行注释多行注释--[[ 多行注释 ]]2 标识符标识符用于定义变量,作为变量名在程序中使用。以字母及下划线开头,可以包含数字。需要注意的是:不能定义为下划线+大写字母,避免与Lua中的保留字冲突;标识符中不能包含@ $ % 等特殊字符;lua中字母区分大小写3 全局变量在默认情况下,变量都是全局变量。全局变量使用前不需要声明,给变量赋值后即创建这个全局变量,访问一个没有进行
1 安装开发插件在 idea 或 vscode 中安装 lua 的开发插件 EmmyLua2 创建工程在 idea 中创建一个新的工程工程的类型选择 lua输入工程名及目标目录在工程结构的SDK中设置lua在本地安装目录在工程结构的modules中选择 lua3 编写第一个lua程序在工程下添加程序包,并创建lua程序文件,需要注意的是,这里应该选择的是 New Lua File在文件中输入如下代
应用场景是当今游戏领域使用最广泛的脚本语言之一。搭配 OpenResty 使用,可以扩展Nginx服务器的功能,使用者仅需要编写Lua代码就能轻松完成业务逻辑。与 Redis 结合。Adobe Photoshop Lightroom 搭配 Lua 编写插件。与游戏结合: C/C++语言实现的服务器引擎内核,其中包括最核心的功能,比如网络收发、数据库查询、游戏主逻辑循环等。通常将这一层称为引擎层。
Lua是啥?官网 https://www.lua.orgLua这个名字在葡萄牙语中的意思是“美丽的月亮”,诞生于巴西的大学实验室。这是一个小巧、高效且能够很好的和C语言一起工作的编程语言。在脚本语言领域中,Lua因为有资格作为游戏开发的备选方案(如愤怒的小鸟中都有大量使用),所以它也是最快、最高效有脚本语言之一。编程语言机器语言由0和1组成,人类无法阅读和理解汇编语言由一些特定指令构成,学习成本高
在上一篇文章中介绍了CIFAR10数据的获取,今天这篇文章对其继续进行优化,创建神经网络并打印出网络层次。1 增加引用引入torch中的神经网络import torch.nn as nn import torch.nn.functional as fun2 是否使用CUDA在获取CIFA10数据前,首先对GPU是否存在进行判断:首先使用CUDA;如果没有CUDA,再选择CPUdevice = to
1 创建数据库分别创建两个数据库,并在数据库中创建两个相同的表。这里创建的数据库是: shardingjdbc1,shardingjdbc2并在数据库下创建两张表:orders, order\_infoCREATE TABLE orders (id INT(11) NOT NULL AUTO\_INCREMENT,customer VARCHAR(50) NULL DEFAULT '0' COLL
1 介绍是一个完全集成的独立wiki和验收测试框架。1.1、协作工具由于FitNesse是一个wiki web服务器,它的入门和学习曲线非常低,这使得它成为一个优秀的工具,可以与业务涉众进行协作。1.2、测试工具FitNesse中创建的wiki页面作为测试运行。规范可以针对应用程序本身进行测试,从而导致规范和实现之间的来回转换。1.3、它是开源的FitNesse是一个开源项目。代码库不属于任何公司
1 核心概念真实表 物理表。逻辑表 不考虑数据的实际存放位置,将分别存放在不同数据库分片中的数据,仍然使用同一个名称来操作的表结构的名称。这个名称就是逻辑表的表名。数据节点 在分片之后,数据实际存放在某个数据库分片的位置信息。如节点1、节点2。绑定表 指的是分片规则一致的关系表(主表、子表)。子表数据与有关联关系的主表数据,将存储在同一个数据库分片中。可以提
1 使用过程1.1 maven依赖在项目的pom.xml文件中加入以下内容<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>4.1.1</
1 ShardingJDBC 是什么Sharding-JDBC 是 Apache ShardingSphere 生态圈中一款开源的分布式数据库第三方组件。ShardingSphere 由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar 3款相互独立的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,适用于 Java 同构、异构语言、容
1 CIFAR10cifar10 的官方网址:<http://www.cs.toronto.edu/~kriz/cifar.html>是由32\*32像素的60000张图片组成的数据集,50000张图片用于训练,10000张图片用于测试,其中有10个类别,每个类别有6000张图片,分类之间彼此独立,不会重叠,因此是一个单标签多分类的问题。2 读取CIFAR10数据首先在对图像做预处理,
1 Mycat-web1.1 介绍Mycat-web 是 Mycat 可视化运维的管理和监控平台。Mycat-web 引入了 Zookeeeper 作为配置中心,可以管理多个节点。Mycat-web 主要管理和监控 Mycat 的流量、连接、活动线程和内存等资源,具有IP白名单和告警邮件等功能,可以对SQL执行进行统计,并分析慢SQL和高频SQL等。为我们进行SQL优化提供支持。1.2
在mycat的 server.xml 配置文件中有一个标签 firewall 是用来设置防火墙。whitehost 用来设置白名单;blacklist 用来设置SQL操作的黑名单。1 白名单1.1 设置通过白名单设置,可以实现来自指定IP的指定用户对mycat的访问。而未在设置中出现的用户或IP,则禁止访问。修改 server.xml 配置文件,进行如下修改<host host="192.1
1 user标签在mycat中,对逻辑库的读写权限进行了限制。通过 server.xml 配置文件中的 user 标签进行设置。name 访问mycat逻辑库的用户名password 属性,用户对应的密码schemas 属性,应用连接的逻辑库,可以配置成一个或多个readOnly 属性,应用访问逻辑库所具有的权限:true 为只读,只能查询,不能进行插入、删除、修改操作;false 为读写权限,可
1 HAProxy单点故障在上一篇文章里,我们在一台机器上安装了HAProxy,实现了MyCat服务的集群。但是这样的架构中,只有一个HAProxy服务,一旦这个服务发生了宕机,集群将不可用,这就是所谓的单点故障。那么怎么进一步提高HAProxy的高可用,从而解决单点故障的问题呢?通过Keepalived可以实现。2 解决方案在多个节点上安装HAProxy,并在每个HAProxy节点上安装Keep
1 创建第二套mycat环境新建一台虚拟机,并安装mycat。这里进入到第一台虚拟机中的mycat目录,将原虚拟机中的mycat目录整个拷贝到新服务器中:cd /usr/localscp -r mycat/ root@192.168.137.4:$PWD进入到新服务器中,同样需要安装JAVA,并将mycat及JAVA的可执行目录配置到环境变量中。vi /etc/profile在文件末尾添加环境变量
1 问题我们通过使用MyCat,对MySQL数据库实现了读写分离,但是由于MyCat是单节点服务,当访问端所有压力到达mycat后,可能会引发单点故障。2 MyCat集群架构通过增加MyCat节点,实现后端MySQL的负载均衡。然后在MyCat之上,再增加HAProxy的部署,通过HAProxy实现MyCat集群的负载均衡。2.1 HAProxy一个开源的、高性能的基于TCP(第四层协议)和HTT
1 主键重复之前创建了 PAYMENT_ADDRESS 数据表,根据 area\_id 的值,进行分片设置。那么在实际使用当中,虽然我们在建表时将 id 字段设置为了主键,但该主键的作用域仅在单个分片的数据库中起作用。当数据被分到不同的数据库分片中,该设置就会失去作用了。我们的分片规则是:100000-300000=0300001-900000=1在下图中,因为 AREA_ID=100
1 场景当我们要记录用户在使用系统期间相关操作时,会产生大量数据,可以根据日期,将其平均分布到所有数据库分片中,以分散单节点压力。2 实现原理按日期分片,需要设定日期的格式和日期范围。3 修改配置文件3.1 修改 schema.xml 文件在 schema 节点下新添加一个用于按日期分片的 table 节点,这里使用的数据表为 user_logs。name 用于分片的数据表 user_logs;d
1 问题取模前边介绍了根据表中某一个字段进行取模运算后的余数,来对数据表的存储进行分片,这种分片对数据实现的分片,带有随机性;枚举也介绍了将表中的某一个字段,按照我们指定的存储节点,将其保存到我们期望的数据库节点中,这种分片对用户是透明的。但是,枚举的方式,一次仅能设置一条,假如数据量很大时,这将变得很难维护。范围于是,就有了范围约定的分片模式,我们可以对一个范围内的数据设置分片规则,从而解决了需
1 实现原理有些业务需要按照一定规则来存放数据,这个分片规则需要由我们自己来定义。如我们在某东下单后,系统会根据收货地址,调用对应的区域仓库,安排发货。这类业务,就可以采用本条规则来实现。2 实现过程2.1 修改 schema.xml 文件在schema.xml文件中,增加用于分片枚举的表及其配置信息<table name="order_locations" dataNode="
1 实现方式之前在对数据表进行水平拆分时,已经使用了取模运算。是根据数据表中的某一个字段,有些地方说必须整型,其实除整型类型的字段外,这里可适用于所有字段,对其进行十进制的求模运算,将运算结果作为mycat的路由结果。缺点:可以分散数据库的写压力; 不足:如果查询语句中加入了范围,那么就需要mycat对查询到的结果进行合并。当数据量非常大时,这种跨库查询且需要合并查询结果的操作,将消耗更多的资源和
1 问题在实际的业务中,有些表中的数据非常稳定,几乎不会发生更新,比如用来存储行政区划数据,或者国家地区数据,这些数据稳定的表,也被称为字典表。字典表的特征:变动不频繁总体数据量变化不大数据规模不大,一般多在十万条以内那么在实现了分片的情况时,对业务数据进行分片后,业务表与这些字典表之间如果需要进行关联查询,此时就成为了一个亟需解决的问题。2 全局表为了解决上述问题,在Mycat中引入
1 问题在实际工作中,经常会遇到多张表进行 join 查询的操作,例如 orders 表被我们做了水平拆分,表中记录分散存储在两个数据分片中,但是 order_details 表并没有做分片,因此在对这两张表做 join 查询时,数据库1仅能在分片后的数据中进行查询,数据库2因为没有找到 order_details 表而返回空,那么整个查询结果将是实际结果的一个子集。mycat中的join查询结果
垂直拆分,解决了单库容量过大的问题,但是对于单表记录过大的问题,并没有解决。1 水平拆分按照数据表中某个字段的某种规则,将记录分散到多个库中,每个库该表中存储一部分记录,所有库中该表的记录并集,为该表所有记录的数据全集。可以将其理解为按照数据的行进行拆分,就是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中。2 实现分表2.1 选择要拆分的表MySQL单表存储数据条数,是存在瓶
1 问题随着我们的系统用户不断增加,产出的内容和数据量将不断增长,单台数据库数据量因为过大,将会导致查询速率降低,严重影响用户体验。为了提高查询速度,可以优化查询的SQL语句,加大数据库服务器的内存,优化数据库表结构和索引,虽然能从一定程度上使效率得到提升,但对于数据记录达到千万级的数据表,其优化的效果仍会大打折扣。2 垂直拆分2.1 垂直分表将数据表按列拆分,可将一张列比较多的表拆分为多张表。当
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号