无重复字符的最长子串题解集合 滑动窗口---双指针法 哈希表优化 数组(桶)代替哈希表 动态规划 ---- 滑动窗口—双指针法 思路: 这道题主要用到思路是:滑动窗口 什么是滑动窗口? len++; maxLength = max(maxLength, len); //然后end指针再继续后移 } return maxLength; } }; ---- 哈希表优化 temp = s[end]; //出现重复字符----注意:仅当s[start,end) 中存在s[end]时更新start //因为随着滑动窗口大小和位置的变化,可能某些数据原先已经存入了哈希表中 ] = end; len++; maxLength = max(maxLength, len); } return maxLength; } }; ---- 数组(桶)代替哈希表 注意:这里选择ascall码做桶,数组大小为128.因为ascall的范围是0----127,数组内所有元素初始值为-1,当某个字符出现时,就将其的ascall码对应在数组中的位置值改成当前字符下标
想听听你玩转的独门秘籍,更有机械键盘、鹅厂公仔、CODING 定制公仔等你来拿!
int add(int a, int b) { return a + b; } int main() { int a = 10; int b = 20; char c = 'a'; //a对应的ascall 码为97 //将字符c转化为ascall对应的数值与变量a相加 cout << add(a, c) << endl; cout << add(a, b) << endl; system("pause T> int add(T a, T b) { return a + b; } int main() { int a = 10; int b = 20; char c = 'a'; //a对应的ascall T> int add(T a, T b) { return a + b; } int main() { int a = 10; int b = 20; char c = 'a'; //a对应的ascall
2.用数组内元素ascall和当前位置(或出现的次数)建立新数组。新数组下标为该字符ascall、大小为出现的位置或次数。 3. 用一次循环筛选出符合特定条件的连续数据。 这里讲解一下思路: 第一步:先将所有的字符选择一个方式归类(便于后续遍历),这里的归类采用以每个字母的ascall值作为下标,其数组值为字符出现在题中的坐标信息。
""" str=input("请输入任意字符:") yin=shu=kong=qita=0 for i in str: # 小写字母a~z的ascall码对应为:65-91 # 大写字母A~Z的ascall码对应为:97-123 if(ord(i)>=97 and ord(i)<=122) or (ord(i)>=65 and ord(i)<=90):
Hive表操作二(管理表、外部表、分区表) *管理表 --我们目前所创建的表都是管理表,也叫内部表 --Hive会控制管理表数据的生命周期,Hive默认会将表数据存储在/user ,LOCATION告诉Hive数据位于哪个路径下 2.因为是外部表,所以Hive并非认为其完全拥有这份数据,删除该表时并不会删除这份数据,只会删除描述表的元数据信息 *管理表VS外部表 --可以用 DESCRIBE EXTENDED tablename语句的输出中查看到表是否是管理表或外部表 --对于管理表,可看到如下信息 ) 注:如果语句省略 EXTERNAL 关键字而源表是外部表的话,那么生成的新表也是外部表 如果语句省略 EXTERNAL 关键字而源表是管理表的话,那么生成的新表也是管理表 如果语句有EXTERNAL关键字而源表是管理表的话,那么生成的新表是外部表 *分区管理表 --管理表和外部表都可以加分区 eg:CREATE TABLE IF NOT
账户表/余额表/消费储蓄表 此表适用于购物车等金钱来往账面等等。
但是在我们常见的某些应用,比如Excel的表格中,我们发现表并不一定是线性表,Excel中的表就明显是二维的结构 ? 那么在数据结构中,我们会使用这种广义上的表吗? 答案是会,我们也会、或者说我们也能使用这样的非线性表。其实我们早就已经在使用这样的非线性表、广义表了,那就是多维数组。不难发现二维数组就可以抽象成Excel当中的表的样子。 可能会有人发现一个小小的问题,就是为什么我又将广义表叫作多重表呢? 这其实只是一个理解角度的不同而带来的不同叫法罢了,多重表这种叫法想表达的主要意思是表中的元素可以是另一个表,而这另一个表中的元素又可以是一个表,相当于“一重又一重”的表,所以叫多重表。 对于这样的应用场景,显然需要使用到一个多重表,准确的说是一个二维的多重表,其中一维表示课程,另一维表示学生,就像下面的图。那么提到二维的多重表,我们脑海中最先浮现的应该就是二维数组了? ?
常用于分库分表 1、批量删除 declare @outter int declare @inner int declare @tablePrefix varchar(30) declare @tableName delete from '+@tableName+'') set @inner=@inner+1 end set @inner=0 set @outter=@outter+1 end 2、批量建表
文章目录 外部表 内部表 分区表 分桶表 外部表 创建数据库 create database myhive; 选择数据库 use myhive; 创建外部表 ( external) create drop table techer; 再次查看 hadoop fs -ls /user/hive/warehouse/myhive.db/techer(数据依然存在) 内部表 创建数据库 create database myhive; 选择数据库 use myhive; 创建内部表 create table student(t_id string,t_name string) row 分桶表 是在已有的表结构之上新添加了特殊的结构 开启hive的桶表功能 set hive.enforce.bucketing=true; 设置桶(reduce)的个数 set mapreduce.job.reduces load data local inpath ‘/export/servers/hivedatas/course.csv’ into table course_common; 在基本表中查询数据插入到分桶表
表的高级操作:倾斜表&事务表 Hive倾斜表(Skewed Tables) 什么是倾斜表? 对于一列或多列中出现倾斜值的表,可以创建倾斜表(Skewed Tables)来提升性能。 但如果表A是Skewed Tables,A.id=1被设置为倾斜值,那么在执行表A与表B的Join操作时,会自动进行以下优化: 将B表中id=1的数据加载到内存哈希表中,分发到A表的所有Mapper任务中 set hive.exec.dynamic.partition.mode=nonstrict; 事务表的创建 首先对事务表进行创建,首先需要是ORC表,然后进行分桶,并在表中添加属性’transactional 假设有一张表名为t,分桶数量只有2的表,那它的文件结构应该是下面这种形式。 对于事务表,可以查看所有正在进行的事务操作: SHOW TRANSACTIONS; 事务表的压缩 随着对事务表的操作累积,delta文件会越来越多,事务表的读取会遍历合并所有文件,过多的文件数会影响效率
事实表与维度表 ? ? 前文介绍了一维表和二维表的异同及相互转换 今天再来解释一下事实表与维度表 先来看下表。回忆下,这是一维表二维表? ? 单行记录就能锁定全部信息,个别列存在数量重复,没二话,显然是一维表 那是不是结账系统里的订单表就是这副样子? 上图可见,流水表里把大量汉字换成字母/数字编码,将对表格大小起到重要作用 修改信息时也只要在维度表定位、变更一条记录即可,而不必在流水表里进行全表扫描。 那“事实表”也就不难理解了 ? 事实表:表格里存储了能体现实际数据或详细数值,一般由维度编码和事实数据组成 维度表:表格里存放了具有独立属性和层次结构的数据,一般由维度编码和对应的维度说明(标签)组成 现实工作中,维度表要设多广多深,
,本文详细介绍了三张至关重要的表:转发表、ARP表与路由表的在网络数据包转发功能中发挥的作用,以及它们协同工作的原理,顺便也会接着之前的文章继续谈谈交换机和路由器的一些事儿。 表是否有数据帧中目的MAC地址的匹配条目,如果有,则会根据MAC表中记录的对应端口将数据帧转发出去,这一转发方式称为“单播”(Unicast)。 在路由器中也有一张表,这张表叫做路由表,通过在网络节点上运行路由协议,记录并更新去往不同网段的路径信息。 小结 路由表负责记录一个网络到另一个网络的路径,路由器依赖路由协议及其确定的路由表完成三层,即网络层的数据转发工作。 参考资源 ---- [1] 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表 [2] 单播、多播(组播)和广播的区别 [3] 路由表详解 [4] 传输层协议概述 [5] MAC、IP和路由传输封装过程
在Hive数据仓库中,重要点就是Hive中的四个表。Hive 中的表分为内部表、外部表、分区表和分桶表。 内部表 默认创建的表都是所谓的内部表,有时也被称为管理表。 当我们删除一个管理表时,Hive 也会删除这个表中数据。管理表不适合和其他工具共享数据。 外部表称之为EXTERNAL_TABLE;其实就是,在创建表时可以自己指定目录位置(LOCATION);如果删除外部表时,只会删除元数据不会删除表数据; 具体的外部表创建命令,比内部表多一个LOCATION :」 创建内部表时:会将数据移动到数据仓库指向的路径; 创建外部表时:仅记录数据所在路径,不对数据的位置做出改变; 删除内部表时:删除表元数据和数据; 删除外部表时,删除元数据,不删除数据。 根据上面命令,成功创建了内部表、外部表、分区表和分桶表。
秋天 autumn Hive表操作三(修改表) 注:大多数表属性可以通过ALTER TABLE语句来进行修改,这种操作会修改元数据,但不会修改数据本身 *表重命名 eg: ALTER TABLE app RENAME TO user; *增加、修改和删除表分区 --ALTER TABLE tablename ADD PARTITION ... 语句用于为表(通常是外部表)增加一个新的分区 eg: ALTER TABLE app ADD IF NOT EXISTS PARTITION 即使是使用ALTER TABLE...ADD PARTITION 语句增加的分区,分区内的数据也是会同时和元数据信息一起被删除的 对于外部表,分区内数据不会被删除 pv,uv,增加了message字段,因为是ALTER语句,所以只有表的元数据信息改变了 *修改表属性 --可以增加附加的表属性或者修改已经存在的表属性,但是无法删除属性
rollup having Grouping(语文)=1 and Grouping(数学)=1 and Grouping(英语)=1 ---- SQL语句之普通行列转换 假设有张学生成绩表( Result)如下 Name Subject Result 张三 语文 73 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 建表: create distinct Subject from TABLE1) as a set @sql = @sql + ' from TABLE1 group by name' exec(@sql) 如果上述两表互相换一下 :即 表名(cj) 姓名 语文 数学 物理 张三 73 83 93 李四 74 84 94 想变成 Name Subject Result 张三 语文 73 张三 数学 83 张三 物理
Hive 内部表和外部表 示例 CREATE TABLE page_view( viewTime INT, userid BIGINT, page_url STRING, 创建外部表 如果数据已经存在HDFS的/user/hadoop/warehouse/page_view上了,如果想创建表,指向这个路径,就需要创建外部表: CREATE EXTERNAL TABLE page_view 有指定EXTERNAL就是外部表,没有指定就是内部表,内部表在drop的时候会从HDFS上删除数据,而外部表不会删除。 外部表和内部表一样,都可以有分区,如果指定了分区,那外部表建了之后,还要修改表添加分区。 外部表如果有分区,还可以加载数据,覆盖分区数据,但是外部表删除分区,对应分区的数据不会从HDFS上删除,而内部表会删除分区数据。
其实不管是内部表还是外部表都可以加location关键字指定hive表的存储路径,当然也可以不加,从这点看是没有区别的。 如果不加location那么不管是内部表还是外部表都会在默认的hive配置的hdfs路径下下新建一个和表名相同的文件夹。 3、删除表内部表和外部表的区别主要体现在删除表,将上面建立的四个表都删掉。 文件夹和external_location文件夹都存在,而内部表的两个文件夹都没了,这也就是内部表和外部表的区别: 内部表删除表时,对应的hdfs的路径下的文件会删掉;外部表删除表时,对应的HDFS的路径下的文件则不会删掉 4、总结建表时带有external关键字为外部表,否则为内部表内部表和外部表建表时都可以自己指定location删除表时,外部表不会删除对应的数据,只会删除元数据信息,内部表则会删除其他用法是一样的参考
data.sqlite') # 链接数据库 cur = mydb.cursor() # 创建游标cur来执行SQL语句 # 获取表名 # Tables 为元组列表 print Tables tbl_name = Tables[0][0] # 获取第一个表名 # 获取表的列名 cur.execute("SELECT * FROM {}".format(tbl_name)) col_name_list = [tuple[0] for tuple in cur.description] pprint.pprint(col_name_list) # 获取表结构的所有信息 cur.execute("PRAGMA
分布式数据库 TDSQL MySQL版是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。目前 TDSQL 已经为超过500+的政企和金融机构提供数据库的公有云及私有云服务,客户覆盖银行、保险、证券、互联网金融、计费、第三方支付、物联网、互联网+、政务等领域。TDSQL MySQL 版亦凭借其高质量的产品及服务,获得了多项国际和国家认证,得到了客户及行业的一致认可。
扫码关注腾讯云开发者
领取腾讯云代金券