cassandra数据库入门-4
插入数据
在表中创建数据
您可以使用命令 INSERT 将数据插入表中一行的列中。 下面给出了在表中创建数据的语法。
INSERT INTO <tablename> (<column1 name>, <column2 name>....) VALUES (<value1>, <value2>....) USING <option>
例子
让我们假设有一个名为 emp 的表,其中包含列(emp_id、emp_name、emp_city、emp_phone、emp_sal),您必须将以下数据插入到 emp 表中。
emp_id | emp_name | emp_city | emp_phone | emp_sal |
---|---|---|---|---|
1 | ram | Hyderabad | 9848022338 | 50000 |
2 | robin | Hyderabad | 9848022339 | 40000 |
3 | rahman | Chennai | 9848022330 | 45000 |
cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,emp_phone, emp_sal) VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,emp_phone, emp_sal) VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,emp_phone, emp_sal) VALUES(3,'rahman', 'Chennai', 9848022330, 45000);
确认
插入数据后,使用SELECT语句验证数据是否已经插入。 如果您使用 SELECT 语句验证 emp 表,它将为您提供以下输出。
cqlsh:tutorialspoint> SELECT * FROM emp;emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+-----------+----------+------------+---------1 | Hyderabad | ram | 9848022338 | 500002 | Hyderabad | robin | 9848022339 | 400003 | Chennai | rahman | 9848022330 | 45000(3 rows)
使用 Java API 创建数据
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;public class Create_Data {public static void main(String args[]){//queriesString query1 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)"+ " VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);" ;String query2 = "INSERT INTO emp (emp_id, emp_name, emp_city,emp_phone, emp_sal)"+ " VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);" ;String query3 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)"+ " VALUES(3,'rahman', 'Chennai', 9848022330, 45000);" ;//Creating Cluster objectCluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();//Creating Session objectSession session = cluster.connect("tp");//Executing the querysession.execute(query1);session.execute(query2);session.execute(query3);System.out.println("Data created");}
}
更新数据
更新表中的数据
UPDATE 是用于更新表中数据的命令。 更新表中的数据时使用以下关键字 -
Where - 此子句用于选择要更新的行。
Set - 使用此关键字设置值。
Must - 包括构成主键的所有列。
更新行时,如果给定行不可用,则 UPDATE 会创建一个新行。 下面给出的是 UPDATE 命令的语法 -
UPDATE <tablename> SET <column name> = <new value> <column name> = <value>.... WHERE <condition>
现在让我们将 robin 的 emp_city 更新为德里,并将他的薪水更新为 50000。下面给出的是执行所需更新的查询。
cqlsh:tutorialspoint> UPDATE emp SET emp_city='Delhi',emp_sal=50000WHERE emp_id=2;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;public class Update_Data {public static void main(String args[]){//queryString query = " UPDATE emp SET emp_city='Delhi',emp_sal=50000"//Creating Cluster objectCluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();//Creating Session objectSession session = cluster.connect("tp");//Executing the querysession.execute(query);System.out.println("Data updated");}}
查询数据
使用 Select 子句读取数据
SELECT 子句用于从 Cassandra 中的表中读取数据。 使用此子句,您可以读取整个表格、单个列或特定单元格。 下面给出的是 SELECT 子句的语法。
SELECT FROM <tablename>
以下示例显示如何使用 SELECT 子句读取整个表。 在这里,我们正在读取一个名为 emp 的表。
cqlsh:tutorialspoint> select * from emp;emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+-----------+----------+------------+---------1 | Hyderabad | ram | 9848022338 | 500002 | null | robin | 9848022339 | 500003 | Chennai | rahman | 9848022330 | 500004 | Pune | rajeev | 9848022331 | 30000(4 rows)
阅读必填栏目
以下示例显示如何读取表中的特定列。
cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;emp_name | emp_sal
----------+---------ram | 50000robin | 50000rajeev | 30000rahman | 50000 (4 rows)
Where 子句
使用 WHERE 子句,您可以对所需的列施加约束。 其语法如下 -
SELECT FROM <table name> WHERE <condition>;
注意 - WHERE 子句只能用于作为主键的一部分或在其上具有二级索引的列。
在下面的示例中,我们正在读取薪水为 50000 的员工的详细信息。首先,将二级索引设置为列 emp_sal。
cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal); cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;emp_id | emp_city | emp_name | emp_phone | emp_sal --------+-----------+----------+------------+---------1 | Hyderabad | ram | 9848022338 | 500002 | null | robin | 9848022339 | 500003 | Chennai | rahman | 9848022330 | 50000
使用Java API
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;public class Read_Data {public static void main(String args[])throws Exception{//queriesString query = "SELECT * FROM emp";//Creating Cluster objectCluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();//Creating Session objectSession session = cluster.connect("tutorialspoint");//Getting the ResultSetResultSet result = session.execute(query);System.out.println(result.all());}
}
删除数据
您可以使用命令 DELETE 从表中删除数据。 其语法如下 -
DELETE FROM <identifier> WHERE <condition>;
以下语句删除最后一行的 emp_sal 列 -
cqlsh:tutorialspoint> DELETE emp_sal FROM emp WHERE emp_id=3;
删除整行
以下命令从表中删除整行。
cqlsh:tutorialspoint> DELETE FROM emp WHERE emp_id=3;
使用Java API
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;public class Delete_Data {public static void main(String args[]){//queryString query = "DELETE FROM emp WHERE emp_id=3;";//Creating Cluster objectCluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();//Creating Session objectSession session = cluster.connect("tp");//Executing the querysession.execute(query);System.out.println("Data deleted");}
}
CQL 数据类型
CQL 提供了一组丰富的内置数据类型,包括集合类型。 除了这些数据类型,用户还可以创建自己的自定义数据类型。 下表提供了 CQL 中可用的内置数据类型列表。
数据类型 | 关键字 | 描述 |
---|---|---|
ascii | strings | 表示 ASCII 字符串 |
bigint | bigint | 表示 64-bit signed long |
blob | blobs | 表示任意常数 bytes |
Boolean | booleans | 表示 true or false |
counter | integers | 表示 计数器 column |
decimal | integers, floats | 表示 decimal |
double | integers | 表示64-bit IEEE-754 floating point |
float | integers, floats | 表示 32-bit IEEE-754 floating point |
inet | strings | 表示 IP地址 IPv4 or IPv6 |
int | integers | 表示 32-bit signed int |
text | strings | 表示 UTF8字符串 |
timestamp | integers, strings | 表示 timestamp |
timeuuid | uuids | 表示 UUID |
uuid | uuids | 表示 1 或 4 |
UUID | ||
varchar | strings | 表示uTF8字符串 |
varint | integers | 表示任意精度整数 |
集合类型
Cassandra 查询语言还提供了集合数据类型。 下表提供了 CQL 中可用的集合列表。
集合 | 描述 |
---|---|
list | 列表是一个或多个有序元素的集合。 |
map | 映射是键值对的集合。 |
set | 集合是一个或多个元素的集合。 |
用户定义的数据类型
Cqlsh 为用户提供了创建自己的数据类型的便利。 下面给出了处理用户定义的数据类型时使用的命令。
CREATE TYPE - 创建用户定义的数据类型。
ALTER TYPE - 修改用户定义的数据类型。
DROP TYPE - 删除用户定义的数据类型。
DESCRIBE TYPE - 描述用户定义的数据类型。
DESCRIBE TYPES - 描述用户定义的数据类型。
CQL集合
CQL 提供了使用集合数据类型的便利。 使用这些集合类型,您可以将多个值存储在单个变量中。 本章介绍如何在 Cassandra 中使用集合。
列表
列表用于以下情况
要保持元素的顺序,并且
一个值要存储多次。
您可以使用列表中元素的索引获取列表数据类型的值。
使用列表创建表
下面给出的示例创建了一个包含两列(名称和电子邮件)的示例表。 要存储多封电子邮件,我们使用列表。
CREATE TABLE data(name text PRIMARY KEY, email list<text>)
将数据插入列表
将数据插入列表中的元素时,请在方括号 [ ] 内输入以逗号分隔的所有值,如下所示。
cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu', ['abc@gmail.com','cba@yahoo.com'])
更新列表
下面给出了一个示例,用于更新名为 data 的表中的列表数据类型。 在这里,我们正在向列表中添加另一封电子邮件。
cqlsh:tutorialspoint> UPDATE data ... SET email = email +['xyz@tutorialspoint.com'] ... where name = 'ramu';
确认
如果您使用 SELECT 语句验证表,您将得到以下结果 -
cqlsh:tutorialspoint> SELECT * FROM data;name | email
------+--------------------------------------------------------------ramu | ['abc@gmail.com', 'cba@yahoo.com', 'xyz@tutorialspoint.com'](1 rows)
Set
Set 是一种数据类型,用于存储一组元素。 集合的元素将按排序顺序返回。
使用 Set 创建表
以下示例创建一个包含两列的示例表,名称和电话。 为了存储多个电话号码,我们使用 set。
CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);
将数据插入集合
在将数据插入集合中的元素时,在花括号 { } 内输入以逗号分隔的所有值,如下所示。
INSERT INTO data2(name, phone)VALUES ('rahman', {9848022338,9848022339});
更新集合
以下代码显示如何更新名为 data2 的表中的集合。 在这里,我们正在向集合中添加另一个电话号码。
cqlsh:tutorialspoint> UPDATE data2... SET phone = phone + {9848022330}... where name = 'rahman';
确认
如果您使用 SELECT 语句验证表,您将得到以下结果 -
cqlsh:tutorialspoint> SELECT * FROM data2;name | phone
--------+--------------------------------------rahman | {9848022330, 9848022338, 9848022339}(1 rows)
Map
Map 是一种数据类型,用于存储元素的键值对。
以下示例显示如何创建一个包含两列(名称和地址)的示例表。 为了存储多个地址值,我们使用 map。
CREATE TABLE data3 (name text PRIMARY KEY, address map<timestamp, text>);
将数据插入Map
将数据插入Map中的元素时,在花括号 {} 内输入所有键:值对,以逗号分隔,如下所示。
INSERT INTO data3 (name, address)VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );
更新Map
以下代码显示如何更新名为 data3 的表中的地图数据类型。 这里我们改变的是key office 的值,也就是说,我们改变的是一个叫robin 的人的办公室地址。
cqlsh:tutorialspoint> UPDATE data3... SET address = address+{'office':'mumbai'}... WHERE name = 'robin';
确认
如果您使用 SELECT 语句验证表,您将得到以下结果 -
cqlsh:tutorialspoint> select * from data3;name | address
-------+-------------------------------------------robin | {'home': 'hyderabad', 'office': 'mumbai'}(1 rows)
CQL 用户定义的数据类型
CQL 提供了创建和使用用户定义数据类型的便利。 您可以创建一个数据类型来处理多个字段。 本章说明如何创建、更改和删除用户定义的数据类型。
创建用户定义的数据类型
命令 CREATE TYPE 用于创建用户定义的数据类型。 其语法如下 -
CREATE TYPE <keyspace name>. <data typename> ( variable1, variable2).
例子
下面给出了创建用户定义数据类型的示例。 在此示例中,我们正在创建一个包含以下详细信息的 card_details 数据类型。
属性 | 属性名 | 数据类型 |
---|---|---|
credit card no | num | int |
credit card pin | pin | int |
name on credit card | name | text |
cvv | cvv | int |
Contact details of card holder | phone | set |
cqlsh:tutorialspoint> CREATE TYPE card_details (... num int,... pin int,... name text,... cvv int,... phone set<int>
... );
注意 - 用于用户定义数据类型的名称不应与保留类型名称一致。
确认
使用 DESCRIBE 命令验证创建的类型是否已创建。
CREATE TYPE tutorialspoint.card_details (num int,pin int,name text,cvv int,phone set<int>);
更改用户定义的数据类型
ALTER TYPE - 命令用于改变现有的数据类型。 使用 ALTER,您可以添加新字段或重命名现有字段。
向类型添加字段
使用以下语法将新字段添加到现有的用户定义数据类型。
ALTER TYPE typename ADD field_name field_type;
以下代码将新字段添加到 Card_details 数据类型。 在这里,我们添加了一个名为 email 的新字段。
cqlsh:tutorialspoint> ALTER TYPE card_details ADD email text;
确认
使用 DESCRIBE 命令验证是否添加了新字段。
cqlsh:tutorialspoint> describe type card_details; CREATE TYPE tutorialspoint.card_details (num int,pin int,name text,cvv int,phone set<int>,);
重命名类型中的字段
使用以下语法重命名现有的用户定义数据类型。
ALTER TYPE typename RENAME existing_name TO new_name;
例子:
cqlsh:tutorialspoint> ALTER TYPE card_details RENAME email TO mail;
验证:
cqlsh:tutorialspoint> describe type card_details; CREATE TYPE tutorialspoint.card_details (num int,pin int,name text,cvv int,phone set<int>,mail text);
删除用户定义的数据类型
DROP TYPE 是用于删除用户定义数据类型的命令。 下面给出了删除用户定义数据类型的示例。
例子
在删除之前,使用 DESCRIBE_TYPES 命令验证所有用户定义数据类型的列表,如下所示。
cqlsh:tutorialspoint> DESCRIBE TYPES; card_details card
从这两种类型中,删除名为 card 的类型,如下所示。
cqlsh:tutorialspoint> drop type card;
使用 DESCRIBE 命令验证数据类型是否被丢弃。
cqlsh:tutorialspoint> describe types;card_details
写在最后
推荐大家在实际的环境中使用ScyllaDB,ScyllaDB是用C++重写的Cassandra,其官网宣称其每节点每秒可处理100万TPS。ScyllaDB完全兼容Apache Cassandra,拥有比Cassandra多10X倍的吞吐量,并降低了延迟。ScyllaDB是性能优异的NoSQL列存储数据库。
ScyllaDB在垃圾收集或者Compaction的时候不需要暂停(但是通过压测和Longevity测试发现Compaction的过程中对性能还是有很大影响)。
ScyllaDB在常规生产负载的时候可以添加或删除节点(通过nodetool来同步数据)。
ScyllaDB是一个P2P的分布式系统,集群中各节点之间相互平等。其数据分布于集群中的各节点,各节点之间每秒钟交换一次信息。
其每个节点使用Commit Log提交日志捕获写操作来保持数据的正确性。数据首先被写入MemTable(内存中的数据结构)中。当MemTable满后数据被写入SSTable(存储在硬盘上的数据文件)中。
用户可以使用类似于SQL的CQL来查询数据。用户可以链接至集群中的任意节点。
在集群中,一个Keyspace代表关系数据库中的一个数据库。一个Keyspace中可以包含多个表。
相关文章:
cassandra数据库入门-4
插入数据 在表中创建数据 您可以使用命令 INSERT 将数据插入表中一行的列中。 下面给出了在表中创建数据的语法。 INSERT INTO <tablename> (<column1 name>, <column2 name>....) VALUES (<value1>, <value2>....) USING <option> 例子…...
微服务学习——分布式搜索
初识elasticsearch 什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域…...
ChatGPT根据销售数据、客户反馈、财务报告,自动生成报告,并根据不同利益方的需要和偏好进行调整?
该场景对应的关键词库(24个): 汇报对象身份(下属、跨部门平级、领导)、销售数据(销售额、销售量、销售渠道)、财务报告(营业收入、净利润、成本费用)、市场分析…...
Flask开发之环境搭建
目录 1、安装flask 2、创建Flask工程 编辑 3、初始化效果 4、运行效果 5、设置Debug模式 6、设置Host 7、设置Port 8、在app.config中添加配置 1、安装flask 如果电脑上从没有安装过flask,则在命令行界面输入以下命令: pip install flask 如果电…...
Java集合框架与ArrayList、LinkedList的区别
文章目录 Java集合框架与ArrayList、LinkedList的区别集合框架ArrayList特点操作 LinkedList特点操作 区别代码实践注意事项 Java集合框架与ArrayList、LinkedList的区别 在Java中,集合框架是非常重要的一部分。集合框架提供了各种数据结构和算法,可以方…...
python-pandas库
目录 目录 目录 1.pandas库简介(https://www.gairuo.com/p/pandas-overview) 2.pandas库read_csv方法(https://zhuanlan.zhihu.com/p/340441922?utm_mediumsocial&utm_oi27819925045248) 1.pandas库简介(http…...
C++学习day--01 C生万物
1、C/C学习中遇到的问题: 1. 大部分初学者,学习 C/C 都是从入门到放弃。 C/C太难吗? 2. 90% 以上的初学者,学完 C/C 以后,考试完了,书看完了, 但还是不会做项目 是学的不够好吗࿱…...
链表及链表的常见操作和用js封装一个链表
最近在学数据结构和算法,正好将学习的东西记录下来,我是跟着一个b站博主学习的,是使用js来进行讲解的,待会也会在文章后面附上视频链接地址,大家想学习的可以去看看 本文主要讲解单向链表,双向链表后续也会…...
源码安装工具checkinstall使用
每当从源码包编译程序时,安装过程很愉快,但当你想删除时,就很费脑筋了,你可能要去找你当时编译的目录执行make unistall,当然更可能的是,你早就把源码包给删除了,对于强迫症来说,这显…...
离散数学集合论
集合论 主要内容 集合基本概念 属于、包含幂集、空集文氏图等 集合的基本运算 并、交、补、差等 集合恒等式 集合运算的算律,恒等式的证明方法 集合的基本概念 集合的定义 集合没有明确的数学定义 理解:由离散个体构成的整体称为集合,…...
TypeScript 基础
类型注解 类型注解:约束变量的类型 示例代码: let age:number 18 说明:代码中的 :number 就是类型注解 解释:约定了类型,就只能给变量赋值该类型的值,否则,就会报错 错误演示:…...
MySQL InnoDB引擎 和 Oracle SGA
MySQL InnoDB引擎和Oracle SGA有以下异同: 异同点: 两者都是用来管理数据存储和访问的。 它们都可以通过调整参数来优化性能。 它们都支持事务处理和ACID属性。 它们都可以通过备份和恢复来保护数据。 异点: MySQL InnoDB引擎是一种存储…...
JAVA开发与运维(web生产环境部署)
web生产环境部署,往往是分布式,和开发环境或者测试环境我们一般使用单机不同。 一、部署内容 1、后端服务 2、后台管理系统vue 3、小程序 二、所需要服务器 5台前端服务器 8台后端服务 三、所需要的第三方组件 redismysqlclbOSSCDNWAFRocketMQ…...
普通人,自学编程,5个必备步骤
天给大家分享个干货哈 普通人自学编程 想学成找到一份工作甚至进大厂 非常有效且必备的5个步骤 文章最后 还给大家提供了一些免费的学习资料 记得提前收藏起来 相信很多人在最开始学编程的时候 上来就是去网上找一套视频 或者买一本书直接开干 这种简单粗暴的方法其实是不对的 …...
kubernetes安全框架RBAC
目录 一、Kubernetes 安全概述 二、鉴权、授权和准入控制 2.1 鉴权(Authentication) 2.2 授权(Authorization) 2.3 准入控制 三、基于角色的权限访问控制: RBAC 四、案例:为指定用户授权访问不同命名空间权限 一、Kubernetes 安全概述 K8S安全控…...
【大数据面试题大全】大数据真实面试题(持续更新)
【大数据面试题大全】大数据真实面试题(持续更新) 1)Java1.1.Java 中的集合1.2.Java 中的多线程如何实现1.3.Java 中的 JavaBean 怎么进行去重1.4.Java 中 和 equals 有什么区别1.5.Java 中的任务定时调度器 2)SQL2.1.SQL 中的聚…...
Linux [常见指令 (1)]
Linux常见指令 ⑴ 1. 操作系统1.1什么事操作系统1.2选择指令的原因 2.使用工具3.Linux的指令操作3.1mkdir指令描述:用法:例子 mkdir 目录名例子 mkdir -p 目录1/ 目录2/ 目录3 3.2 touch指令描述:用法:例子 touch 文件 3.2pwd指令描述:用法:例子 pwd 3.4cd指令描述:用法:例子 c…...
进程控制下篇
进程控制下篇 1.进程创建 1.1认识fork / vfork 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程 #include<unistd.h> int main() {pid_t i fork;return 0; }当前进程调用fork,…...
PS学习笔记(零基础PS学习教程)
很多新手学习PS不知从何下手,做设计的第一阶段肯定是打牢基础,把工具用熟练;本期特别为大家整理了PS入门的学习笔记,把每个工具的用法整理了下来,在使用过程中有哪里不清楚的可以翻看来看看~ 一、ps的工作界面的介绍 …...
如何构建数据血缘系统
1、明确需求,确定边界 在进行血缘系统构建之前,需要进行需求调研,明确血缘系统的主要功能,从而确定血缘系统的最细节点粒度,实体边界范围。 例如节点粒度是否需要精确到字段级,或是表级。一般来说&#x…...
IPsec中IKE与ISAKMP过程分析(主模式-消息3)
IPsec中IKE与ISAKMP过程分析(主模式-消息1)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息2)_搞搞搞高傲的博客-CSDN博客 阶段目标过程消息IKE第一阶段建立一个ISAKMP SA实现通信双发的身份鉴别和密钥交换&…...
深度学习技巧应用10-PyTorch框架中早停法类的构建与运用
大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用10-PyTorch框架中早停法类的构建与运用,文章将介绍深度学习训练过程中的一个重要技巧—早停法,以及如何在PyTorch框架中实现早停法。文章将从早停法原理和实践出发,结合实际案例剖析早停法的优缺点及在PyTorch中的应…...
Linux文件系统权限
目录标题 文件权限文件和目录的一般权限文件的权限针对三类对象进行定义文件和目录中,r、w、x的作用 设置文件和目录的一般权限修改文件或目录的权限—chmod(change mode)命令权限值的表示方法—使用3位八进制数表示权限值的表示方法—使用字符串表示修改文件或目录…...
ctfshow之_萌新web1至web7
一、访问在线靶场ctfshow ctf.showhttps://ctf.show/challenges如下图所示,进入_萌新赛的web1问题: 如上图所示,页面代码提示id1000时,可以查询到flag,进行如下尝试: 如下图所示,传入参数id1时…...
HPDA的资料
HPDA,英文全称为High Performance Data Analysis,直译为高性能数据分析。 适用场景 机器学习大数据分析 技术挑战 大量的元数据操作数据的同步随机读写高IOPOS的小IO请求高带宽的文件请求 技术关键字 存算分离移动计算大I/O直通,小I/O聚…...
项目管理软件可以用来做什么?这篇文章说清楚了
项目管理软件是用来干嘛的,就得看对项目的理解。项目是为创造独特的产品、服务或成果而进行的临时性工作。建造一座大楼可以是一个项目,进行一次旅游活动、日常办公活动、期末考试复习等也都可以看成一个项目。 项目管理不善会导致项目超时、超支、返工、…...
ETL工具 - Kettle 转换算子介绍
一、Kettle 转换算子 上篇文章对 Kettle 中的输入输出算子进行了介绍,本篇文章继续对转换算子进行讲解。 下面是上篇文章的地址: ETL工具 - Kettle 输入输出算子介绍 转换是ETL里面的T(Transform),主要做数据转换&am…...
界面设计的读书笔记
所见即所得,属于绝大多数的人。 所想即所想,属于极少数的人。 当复杂度,超出了大脑的负荷,人会觉得很累,直到放弃追求。 地图的显示,必须有足够多的描述性的数据。 点信息 :标签,位…...
C#底层库--自定义进制转换器(可去除特殊字符,非Convert.ToString方式)
系列文章 C#底层库–程序日志记录类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–MySQLBuilder脚本构建类(select、insert、update、in、带条件的SQL自动生成) 本文链接:https://blog.csd…...
Doris(24):Doris的函数—聚合函数
1 APPROX_COUNT_DISTINCT(expr) 返回类似于 COUNT(DISTINCT col) 结果的近似值聚合函数。 它比 COUNT 和 DISTINCT 组合的速度更快,并使用固定大小的内存,因此对于高基数的列可以使用更少的内存。 select city,approx_count_distinct(user_id) from site_visit group by c…...
wordpress如何搭建网站/域名免费注册0元注册
flutter学习(5) GridView Gridview是网格布局 文章目录flutter学习(5) GridView一.GridView常用属性二.GridView.count 实现网格布局三.GridView.builder实现网格布局一.GridView常用属性 二.GridView.count 实现网格布局 看这个 import package:flutter/material.dart; import…...
html企业网站怎么做/网络推广都需要做什么
创建工程 修改字符串资源 打开/res/values/strings.xml文件。 点击Add按钮,添加字符串,输入字符串的name 和value 新建的工程含有三个已有字符串 新建颜色资源color.xml 使用资源颜色和字符串资源 颜色:R.color.red_gb 字符串:R.s…...
女生做网站推广/地推网推平台
lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子: deff(x): returnx**2printf(4)Python中使用lambda的话,写成这样 g lambdax : x**2printg(4)lambda表达式在很多编程语言都有对应的实现。比如C#…...
cms模板/百度app优化
按变量的生存周期来划分,Linux变量可分为两类,它们的修改方法如下:(1)永久的:需要修改配置文件,变量永久生效。 常见的配置文件包括: (1-1)/etc/profil…...
安全教育平台登录入口/优化大师免费安装下载
大多数人引荐Linux,基本上都会说Linux让你更高效、更优异。然而工具只是工具。然而工具只是工具。然而工具只是工具。优异程序员和不优异程序员的差异首先是态度上的差异。他们有自个的理想,考虑许多,不管是项目开端之前还是在项目进行中&…...
美国做调查的网站/短视频seo系统
据国外媒体报道,惠普公司8月23日宣布,计划以16亿美元竞购虚拟存储制造商3PAR。而在一周前,戴尔公司曾出价11.5亿美元收购此公司。 惠普是在给3PAR的董事长和CEO的信中透露其收购价格的。惠普执行副总裁兼首席战略和技术官谢恩罗宾逊ÿ…...