获得徽章 0
#挑战每日一条沸点# 数组 @ @"12", @"34"
优点: 查询快index 遍历方便
缺点: 增删慢(找到第5个, 删掉, 678前移) 只能存储一种数据类型(新的tuple元组) 大小固定不方便扩容(int[10]就固定了)
链表
优点: 增删快(改变链表的指针)
缺点: 查询特别麻烦(先从头结点依次走下去)
双向链表
指针指向前后数据
@autoreleasepool
线性表
队列
queue, 里面放任务
堆栈
栈, 压栈, 先进后出, 页面pop
图
树
二叉树, 遍历, 顺序, 二叉树的翻转
二叉树既有链表的好处, 也有数组的好处
hash(散列表)
1-10 找到7, 遍历
二分法 减少了时间复杂度
一次到位, 直接通过key找到value, 字典的底层就是hash
哈希函数:f
1 - key - f(key) -> index=1
哈希 把值1放到index=1的位置,
11 12 13 15 18
浪费资源, 哈希函数没有设计好
f(key) = key - 10 = index 定义域key > 10
计算简单 + 分布均匀, 直接地址法, 数据分析法,
平方取中法(增大落差范围, 导致冲突降低), 哈希冲突
取余法
9 13 14 15 16 18 % 10
9 3 4 5 6 8
数据分析 - 位运算 - index - 取值
设计出一个合理的, 分布均匀的哈希函数(散列函数)很难
哈希冲突
平方取中法
9 13 14 15 16 18
81 169 196 225 256 324 -- 哈希冲突
继续哈希 - 再设计哈希函数
判断法 - 每一次移动
再平方法 - 减少你的操作
1112 22 32
1 + 2^2 = 5
1 + 2^2 + 3^2 = 14
拉链法 -
11 12 22 32 42 52
优点: 查询快index 遍历方便
缺点: 增删慢(找到第5个, 删掉, 678前移) 只能存储一种数据类型(新的tuple元组) 大小固定不方便扩容(int[10]就固定了)
链表
优点: 增删快(改变链表的指针)
缺点: 查询特别麻烦(先从头结点依次走下去)
双向链表
指针指向前后数据
@autoreleasepool
线性表
队列
queue, 里面放任务
堆栈
栈, 压栈, 先进后出, 页面pop
图
树
二叉树, 遍历, 顺序, 二叉树的翻转
二叉树既有链表的好处, 也有数组的好处
hash(散列表)
1-10 找到7, 遍历
二分法 减少了时间复杂度
一次到位, 直接通过key找到value, 字典的底层就是hash
哈希函数:f
1 - key - f(key) -> index=1
哈希 把值1放到index=1的位置,
11 12 13 15 18
浪费资源, 哈希函数没有设计好
f(key) = key - 10 = index 定义域key > 10
计算简单 + 分布均匀, 直接地址法, 数据分析法,
平方取中法(增大落差范围, 导致冲突降低), 哈希冲突
取余法
9 13 14 15 16 18 % 10
9 3 4 5 6 8
数据分析 - 位运算 - index - 取值
设计出一个合理的, 分布均匀的哈希函数(散列函数)很难
哈希冲突
平方取中法
9 13 14 15 16 18
81 169 196 225 256 324 -- 哈希冲突
继续哈希 - 再设计哈希函数
判断法 - 每一次移动
再平方法 - 减少你的操作
1112 22 32
1 + 2^2 = 5
1 + 2^2 + 3^2 = 14
拉链法 -
11 12 22 32 42 52
展开
评论
点赞
#挑战每日一条沸点# 账号安全
每个人分配独立的账号,赋予合理的权限,禁止相互借用。
数据库、大数据组件开通多个角色账号。比如只读、部分表读写、管理员等。当然还可以按实际需求细分。Hive、ODPS 的话也是可以实现单人单号的。
服务器登录。也是单人单号
公司内部应用账号。单人单号。
数据安全
至少做到表级别的权限控制,实在不行就分库。
ODS 层不对外开放,只对 ODS-DWD 层相关部分开发人员可见。
特别敏感数据,如用户年龄、号码、身份证好、地址等,应该放到专门的数据库里,数仓主库只存放用户 ID 和其它必须字段。例如年龄应该脱敏成年龄区间或开发特定的 UDF 转化函数。
每个人分配独立的账号,赋予合理的权限,禁止相互借用。
数据库、大数据组件开通多个角色账号。比如只读、部分表读写、管理员等。当然还可以按实际需求细分。Hive、ODPS 的话也是可以实现单人单号的。
服务器登录。也是单人单号
公司内部应用账号。单人单号。
数据安全
至少做到表级别的权限控制,实在不行就分库。
ODS 层不对外开放,只对 ODS-DWD 层相关部分开发人员可见。
特别敏感数据,如用户年龄、号码、身份证好、地址等,应该放到专门的数据库里,数仓主库只存放用户 ID 和其它必须字段。例如年龄应该脱敏成年龄区间或开发特定的 UDF 转化函数。
展开
评论
点赞
#挑战每日一条沸点# 版本库
.git
当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库。
.git文件另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。
工作区
本地项目存放文件的位置
可以理解成图上的workspace
暂存区 (Index/Stage)
顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区
本地仓库(Repository)
通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库
通常而言,HEAD指针指向的就是master分支
当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库。
.git文件另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。
工作区
本地项目存放文件的位置
可以理解成图上的workspace
暂存区 (Index/Stage)
顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区
本地仓库(Repository)
通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库
通常而言,HEAD指针指向的就是master分支
展开
评论
点赞
#挑战每日一条沸点# git config:用于配置Git的用户名、邮箱等信息。
git branch:用于查看、创建和删除分支。
git checkout:用于切换分支和撤销修改。
git add:用于将文件添加到暂存区。
git commit:用于提交暂存区的文件到本地仓库。
git push:将本地仓库的文件推送到远程仓库。
git merge:用于合并分支。
我们还介绍了一些常见的Git操作,如查看状态、比较差异、查看日志等。另外,我们还介绍了如何忽略某些文件和文件夹,以避免将它们纳入Git管理。
通过掌握这些基本概念和命令,我们能够更好地使用Git来管理项目的代码,进行分支管理、版本控制和团队协作。在实践中,我们可以根据具体的需求和项目情况来选择适当的命令和操作。请继续学习和探索Git的更多功能和用法,以提高开发效率和团队协作能力。
git branch:用于查看、创建和删除分支。
git checkout:用于切换分支和撤销修改。
git add:用于将文件添加到暂存区。
git commit:用于提交暂存区的文件到本地仓库。
git push:将本地仓库的文件推送到远程仓库。
git merge:用于合并分支。
我们还介绍了一些常见的Git操作,如查看状态、比较差异、查看日志等。另外,我们还介绍了如何忽略某些文件和文件夹,以避免将它们纳入Git管理。
通过掌握这些基本概念和命令,我们能够更好地使用Git来管理项目的代码,进行分支管理、版本控制和团队协作。在实践中,我们可以根据具体的需求和项目情况来选择适当的命令和操作。请继续学习和探索Git的更多功能和用法,以提高开发效率和团队协作能力。
展开
评论
1