Other

ClickHouse VS SQLServer数据库 后续(2)

上文发了之后,有人说要和SSAS对比,还有人说要在SQLServer建一个列数据库来对比 SQL2012 之后开始有列存储, 但要在2016SP1之后才在Express版开放, 之前都是在Enterprise版才有, 我在win10安装了最新SQLServer 2019 Express版, 把订单日期字段加上列存储索引 --建立列索引用时42秒 create nonclustered columnstore index PK_tblSale_ColumnStore on [taobao].[dbo].[tblSale](date) 执行分组查询语句没有改善 SELECT Convert(varchar(8) , date, 112) as date,count(*) as dayCnt FROM [taobao].[dbo].[tblSale] group by Convert(varchar(8) , date, 112) order by Convert(varchar(8) , date, 112) 难道是因为datetime用convert转成字符,不能用索引??? 新建一列纯粹用字符的, 用时7分09秒更新2亿条数据 alter table tblSale add dateYMD varchar(10) update tblSale set dateYMD= (select Convert(varchar(8) , date, 112)) from tblSale  用新字段做groupby,用时44秒 SELECT dateYMD as date,count(*) as dayCnt FROM [taobao].

Android Framework实战视频--init进程的bootanimation启动源码分析(补充Android 10部分的BootAnimation的启动源码分析)

课程答疑和新课信息:QQ交流群:422901085进行课程讨论 FrameWork入门课视频链接:https://edu.csdn.net/course/detail/30298 FrameWork实战课1视频链接:https://edu.csdn.net/course/detail/30275 FrameWork跨进程通信视频链接:https://edu.csdn.net/course/detail/35911 专题博客系列: Android 8.1 zygote 启动过程源码 Android Framework实战视频–Zygote的fork进程篇 Android Framework实战视频–SystemServer启动篇 Android Framework实战视频–SystemServer启动FallbackHome篇 Android Framework实战视频–FallbackHome进程启动及Activity启动篇 Android Framework实战视频–FallbackHome结束启动Launcher篇 Android Framework实战视频–BootAnimation的启动源码分析(Android8.1) Android Framework实战视频–init进程的bootanimation启动源码分析(补充Android 10部分的BootAnimation的启动源码分析) Android Framework实战视频–BootAnimation的启动源码分析(补充Android 10部分的差异) 提示:针对有的同学可能代码较新这里基于Android 10源码对init部分进行分析 针对Android init进程启动property service的启动部分流程如下: init进程的入口main函数已经不在init.cpp而是在main.cpp 路径如下: system/core/init/main.cpp int main(int argc, char** argv) { if __has_feature(address_sanitizer) __asan_set_error_report_callback(AsanReportCallback); endif if (!strcmp(basename(argv[0]), ueventd)) { return ueventd_main(argc, argv); } if (argc > 1) { if (!strcmp(argv[1], subcontext)) { android::base::InitLogging(argv, &android::base::KernelLogger); const BuiltinFunctionMap function_map; return SubcontextMain(argc, argv, &function_map); } if (!

7. Spark SQL

1.分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。 SparkSQL出现的原因  hive是shark的前身,shark是sparkSQL的前身,sparkSQL产生的根本原因是其完全脱离了hive的限制,hive是hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序复杂性。同时也由于MapReduce的计算执行效率很慢,因此spark SQL就这样出来,就是将spark SQL转换成RDD,然后提交到集群上执行,这样效率就非常快。 SparkSQL的起源  在三四年前,Hive可以说是SQL on Hadoop的唯一选择,负责将SQL编译成可扩展的MapReduce作业。鉴于Hive的性能以及与Spark的兼容,Shark项目由此而生。  Shark即Hive on Spark,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。  Shark的最大特性就是快和与Hive的完全兼容,且可以在shell模式下使用rdd2sql()这样的API,把HQL得到的结果集,继续在scala环境下运算,支持自己编写简单的机器学习或简单分析处理函数,对HQL结果进一步分析计算。 SparkSQL的发展  在2014年7月1日的Spark Summit上,Databricks宣布终止对Shark的开发,将重点放到Spark SQL上。  Databricks表示,Spark SQL将涵盖Shark的所有特性,用户可以从Shark 0.9进行无缝的升级。  Databricks推广的Shark相关项目一共有两个,分别是Spark SQL和新的Hive on Spark(HIVE-7292)  Databricks表示,Shark更多是对Hive的改造,替换了Hive的物理执行引擎,因此会有一个很快的速度。然而,不容忽视的是,Shark继承了大量的Hive代码,因此给优化和维护带来了大量的麻烦。 2.简述RDD 和DataFrame的联系与区别? 区别: RDD是分布式的java对象的集合,但是对象内部结构对于RDD而言却是不可知的。 DataFrame是一种以RDD为基础的分布式数据集,提供了详细的结构信息,相当于关系数据库中的一张表。 联系: 1.都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利。 2、都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action才会运算。 3.都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出 4、三者都有partition的概念。 5.三者有许多共同的函数,如filter,排序等。 3.DataFrame的创建与保存 3.1 PySpark-DataFrame创建: spark.read.text(url)    spark.read.json(url)   spark.read.format(text).load(people.txt)   spark.

VSCode使用 SSH密钥 连接Linux

环境介绍 VSCode 正在运行的虚拟机---servera 准备工作 在VSCode安装 Remote-ssh 插件 实体机能够ping通虚拟机 实体机生成并配置ssh密钥 在 poweshell 上 使用ssh-keygen 命令生成ssh密钥对 使用 xshell 工具连接servera,将生成的公钥粘贴至~/.ssh/authorized_keys文件中 编辑实体机的config文件 Host [主机名] User [登录用户] Hostname [主机IP地址] IdentityFile [生成的私钥文件位置] 在servera中编辑配置文件,只能密钥连接 vim /etc/ssh/sshd.service 使用`/Pass`搜索 找到`PasswordAuthentication` no---表示可使用用户名密码登录 yes---表示仅允许使用密钥登陆 再次连接时便可以直接连接servera

连接数据库

1.下载sqljdbc.jar的压缩包,解压之后,将sqljdbc4.jar复制粘贴到你项目的WEB-INF的lib目录下  2如图所示 右击  3 在navicat中新建数据库.  4在eclipse中新建一个 NewFile.jsp   <%@ page language=java contentType=text/html; charset=UTF-8 pageEncoding=UTF-8%><%@page import=java.sql.*%><!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd><html><head><meta http-equiv=Content-Type content=text/html; charset=UTF-8><title>测试</title></head><body><% try{ Class.forName(com.mysql.jdbc.Driver); String url = jdbc:mysql://localhost:3306/javaweb; String username = root; String password = 1234; Connection conn = DriverManager.getConnection(url,username,password); out.print(数据库连接成功!); conn.close(); } catch(Exception e){ out.print(数据库连接失败!); out.print(错误信息:+e.toString()); }%></body></html> 5连接成功  

知识分享之数据库(1)

SQL的概述 Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。 SQL的分类 1、DDL(Data Definition Language) 数据定义语言,用来操作数据库、表、列等; 常用语句:CREATE、 ALTER、DROP 2、DML(Data Manipulation Language) 数据操作语言,用来操作数据库中表里的数据;常用语句:INSERT、 UPDATE、 DELETE 3、DCL(Data Control Language) 数据控制语言,用来操作访问权限和安全级别; 常用语句:GRANT、DENY 4、DQL(Data Query Language) 数据查询语言,用来查询数据 常用语句:SELECT 数据库的三大范式 1、第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。 2、第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。 3、第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。 数据库的数据类型 1.整数类型 根据数值取值范围的不同MySQL 中的整数类型可分为5种,分别是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。最常用的为INT类型的 2.浮点数类型和定点数类型 在MySQL数据库中使用浮点数和定点数来存储小数。 浮点数的类型有两种:单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。 而定点数类型只有一种即DECIMAL类型。 3.字符串类型 在MySQL中常用CHAR 和 VARCHAR 表示字符串。 两者不同的是:VARCHAR存储可变长度的字符串。 当数据为CHAR(M)类型时,不管插入值的长度是实际是多少它所占用的存储空间都是M个字节; 而VARCHAR(M)所对应的数据所占用的字节数为实际长度加1。

如何统计nginx日志下访问量最多的IP,并做排序

[root@web logs]# cat access.log | awk -F '{print $1}' |sort |uniq -c |sort -rn 79 xxx.23.132.13 4 113.xx.1xx.111 3 11x.136.xxx.131 2 18x.1xx.220.xx 1 2x6.2xx.206.xx [root@web logs]# cat access.log | awk -F '{print $1}' |sort |uniq -c |sort -rn |head -n 2 79 xxx.23.132.13 4 113.xx.xxx.111 [root@web logs]# cat access.log | awk -F '{print $1}' |sort |uniq -c |sort -rn |head -n 2 |less   解释:uniq的一个特性,检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的;所以需要先进行排序,然后进行统计,再进行逆向排序。 参数解读: sort:  -r:逆序输出排序结果

mysql (3):进阶篇(中)

四 视图/存储过程/触发器 4.1 视图 4.1.1 介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 4.1.2 语法 1). 创建 CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ] 2). 查询 查看创建视图语句:SHOW CREATE VIEW 视图名称; 查看视图数据:SELECT * FROM 视图名称 ...... ; 3). 修改 方式一: CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ] 方式二: ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ] 4).

mysql原子性_MySQL事务的原子性

weixin_39630247 于 2021-01-18 23:25:44 发布 274 收藏 1文章标签: mysql原子性版权一、事务的ACID特性: 1)原子性 2)一致性 3)隔离性 4)持久性 二、对于事务的原子性(A)我们知道事务中的操作要么都做要么都不做。对于这一点许多人有错误的理解,我们来看一个例子: 1) mysql> select * from t4; +----+------+ | id | name | +----+------+ | 1 | A | | 2 | B | | 3 | C | +----+------+ 3 rows in set (0.00 sec) 2)开启一个事务 mysql> start transaction; Query OK, 0 rows affected (0.00 sec) mysql> update t4 set name='AA' where id=1; Query OK, 1 row affected (0.

docker部署redis(远程访问)

首先要保证linux安装了docker,然后服务器端口开放了6379 运行命令拉取redis镜像,其中latest可以修改为指定版本号 docker pull redis:latest 运行命令下载默认的redis.conf wget https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf -O redis.conf 运行命令创建文件夹,用来映射配置文件 mkdir -p /docker/redis/conf mkdir -p /docker/redis/data 把3中下载的redis.conf移动到4中的conf文件夹中 修改redis.conf文件 requirepass xxxxx #设置密码 bind 127.0.0.1 #注释掉,可以允许外网访问 protected-mode no #yes改成no启用保护模式 运行命令,运行镜像,其中 -v 后面映射的目录为上面创建的文件夹地址 docker run -d --privileged=true -p 6379:6379 --restart always -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redis redis redis-server /etc/redis/redis.conf --appendonly yes 解释: -d -> 后台运行 -p 6379:6379 -> 绑定宿主机端口 --name myredis -> 指定容器名字 --restart always -> 开机启动 --privileged=true -> 提升容器内权限 -v /docker/redis/conf:/etc/redis/redis.