- 博客(16)
- 收藏
- 关注
原创 【LeetCode】岛屿问题 (并查集UnionFind+DFS+BFS)
二维矩阵 grid 由 0 (土地)和 1 (水)组成。岛是由最大的4个方向连通的 0 组成的群,封闭岛是一个 完全 由1包围(左、上、右、下)的岛。链接:https://leetcode.cn/problems/number-of-closed-islands。来源:力扣(LeetCode)请返回 封闭岛屿 的数目。
2023-03-29 02:00:47 390
原创 【Hive】函数
指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的改变而变化。当前行往前n行数据往后n行数据起点表示从前面的起点,表示到后面的终点往前第n行数据往后第n行数据把有序窗口的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。注意:n必须为int类型。
2022-12-26 21:44:01 610
原创 【Hive】四个By
有些情况下,我们需要控制某个特定行应该到哪个reducer,通常是为了进行后续的聚集操作。distribute by 类似 MR 中 partition(自定义分区),进行分区,结合sort by使用。对于distribute by进行测试,一定要分配多 reduce 进行处理,否则无法看到distribute by的效果。Order By:全局排序,只有一个 Reducer。先按照部门编号分区,再按照员工编号降序排序。ASC(ascend):升序(默认)查询员工信息按工资降序排列。
2022-12-26 15:56:14 350
转载 【Hive】优化
某个特定的 job 可能包含众多的阶段,而这些阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个 job 的执行时间缩短。有时虽然某个key为空对应的数据很多,但是相应的数据不是异常数据,必须要包含在join的结果中,此时我们可以表a中key为空的字段赋一个随机的值,使得数据随机均匀地分布到不同的reducer上。当 input 的文件都很大,任务逻辑复杂,map 执行非常缓慢的时候,可以考虑增加 map 数,来使得每个 map 处理的数据量减少,从而提高任务的执行效率。
2022-12-26 01:45:14 234
原创 NoSQL--MongoDB基础
MongoDB是为快速开发互联网Web应用而设计的数据库系统MongoDB的设计目标是简洁、灵活、作为Web应用栈的一部分MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。(BSON)
2022-10-29 20:57:38 817
原创 MySQL--事务
在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。比如:用户信息和订单信息分别在两个MySQL实例存储,用户管理系统删除用户信息,需要分别删除用户信息及用户的订单信息,由于数据分布在不同的数据实例,需要通过不同的数据库链接去操作数据,此时产生分布式事务。,例如用户注册送积分事务、创建订单减库存事务、银行转账事务等都是分布式事务。
2022-10-21 15:18:34 185
原创 CAP理论
(事务的一致性指的是事务的一致性状态。而CAP理论中的C可以把它理解成副本一致性是一个值的关系,即所有副本中的一个值,它们都是一样的。最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。在实际系统设计时,不能极端,只有一致性没有可用性的系统是脆弱的,而只有可用性没有一致性的系统是没有价值的。同一份意味着所有的数据节点里面的数据要是一致的;三写的情况下,要三个副本都写入成功才可返回成功,出现网络分区后,无法实现这一点,最终会返回报错,所以没有保证A,但保证了C。
2022-10-17 16:20:46 291
转载 Python:爬虫乱码
在所有的编解码方式中,ASCII码字符对应的二进制表示都是一样的。编、解码要相对应,才能不损失数据原本的意义,我们才不会误解数据;数据以编码方式1进行编码的到字节流,那么这段字节流必须以对应的解码方式1进行解码,才可以得到原始的数据;否则这段字节流可能会:1、解码成别的数据(按照解码方式2,这一段二进制位对应了别的字符);2、解码失败(按照解码方式2,这一段二进制位可能不对应任何字符)。
2022-10-14 01:54:44 2833
原创 Python爬虫tips
情况2: 滑块位置和距离都会变化。需要获取缺口的x坐标,注意到缺口颜色较其他位置更灰,则当原色通道连续十次都是灰色时可认为已经处在缺口处。情况1: 拼图滑块形状差不多,使用qq截图可以看到距离(多刷新几次尝试对比),发现距离也差不多,取个平均数,因为滑块拼图不需要精确对准。注意:为了不被判定为爬虫,需要模拟人为拖动滑块。即,先拖动超出范围(平均数+5),然后再拖回来(平均数-7),最后松开。(url已省略,代码仅作方法记录)。
2022-10-12 12:39:39 282
原创 Python深拷贝与浅拷贝
copy.copy 对于可变类型,会进行浅拷贝copy.copy 对于不可变类型,不会拷贝,仅仅是指向a = [ 11 , 22 , 33 ] b =(11 , 22 , 33) c = copy . copy(a) # 当使用copy.copy来完成浅拷贝时,它会检测拷贝的数据类型是否可变,如果是则拷贝顶层,否则拷贝引用 d = copy . copy(b) # 相当于 d = b print(id(a) , id(c)) # 地址不同 print(id(b) , id(d)) # 地址同。
2022-09-21 16:07:26 443
原创 Python生成器
通过列表推导式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的 list,从而节省大量的空间。只记录生成数据的方式(算法),而不事先生成且存储这些数据。
2022-09-20 19:12:48 256
原创 Python迭代器(Iterator)
iter1.凡是可作用于 for循环的对象都是 Iterable 类型;2.但是可作用于 next()函数的对象都是 Iterator 类型;3.集合数据类型如 list、dict、str 等是 Iterable 但不是 Iterator, 不过可以通过 iter() 函数获得一个 Iterator 对象。
2022-09-17 19:18:01 6348
原创 Python多线程&多进程&协程
一次性开辟一些线程,我们用户直接给线程池提交任务,线程任务的调度交给线程池来完成。协程:当程序遇见了IO操作的时候,可以选择性的切换到其他任务上。在微观上是一个任务一个任务的进行切换,切换条件一般就是IO操作;在宏观上,我们能看到的其实是多个任务在一起进行;(以上所讲,都是在单线程的条件下)
2022-09-14 03:10:27 418
原创 MySQL--锁
MySQL中的锁,按照粒度分为三类:1.全局锁:锁定数据库中的所有表2.表级锁:每次操作锁住整张表3.行级锁:每次操作锁住对应的行数据。
2022-09-09 01:43:04 238
原创 MySQL运维--主从复制
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库(Master)同时向多台从库(Slave)进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。
2022-09-08 12:51:05 720 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人