获得徽章 0
#挑战每日一条沸点# 大O表示法的时间复杂度大致可以分为以下几个级别:


O(1) :常数级别,无论输入多大,它执行的步数都是恒定的,不会因为输入变大而变大,哈希表的查找就是这个级别。


O(N) :线性级别,随着输入变大耗费的步数也正向相关,遍历算法就是这个级别。


O(logN) :对数级别,输入每变大一倍,耗费步骤则增加1,二分查找算法属于这个级别。


O(N²) :平方级别,随着输入的变大所耗费的步数会成倍增加,一般当你的算法使用双层for循环就是这个级别,比如冒泡排序。
展开
评论
#挑战每日一条沸点# server_audit 审计插件优势:

丰富的审计内容:包括用户连接,关闭,DML操作,存储过程,触发器,事件等。
灵活的审计策略:可以自定义审计事件,例如过滤掉select查询,或者排除审计某个用户等。
灵活方便:免费使用且安装方便,可以在线开启和停用审计功能。

server_audit 审计插件劣势:

开启审计会增加数据库的性能开销,并占用磁盘空间。
日志格式不够丰富,不能自定义输出格式。
展开
评论
#挑战每日一条沸点# 原子性
原子性要求,事务是一个不可分割的执行单元,事务中的所有操作要么全都执行,要么全都不执行。


一致性
一致性要求,事务在开始前和结束后,数据库的完整性约束没有被破坏。
隔离性
事务的执行是相互独立的,它们不会相互干扰,一个事务不会看到另一个正在运行过程中的事务的数据。
持久性
持久性要求,一个事务完成之后,事务的执行结果必须是持久化保存的。即使数据库发生崩溃,在数据库恢复后事务提交的结果仍然不会丢失。
展开
评论
#挑战每日一条沸点# 数组 @ @"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
展开
评论
#挑战每日一条沸点# 账号安全


每个人分配独立的账号,赋予合理的权限,禁止相互借用。


数据库、大数据组件开通多个角色账号。比如只读、部分表读写、管理员等。当然还可以按实际需求细分。Hive、ODPS 的话也是可以实现单人单号的。


服务器登录。也是单人单号


公司内部应用账号。单人单号。


数据安全

至少做到表级别的权限控制,实在不行就分库。
ODS 层不对外开放,只对 ODS-DWD 层相关部分开发人员可见。
特别敏感数据,如用户年龄、号码、身份证好、地址等,应该放到专门的数据库里,数仓主库只存放用户 ID 和其它必须字段。例如年龄应该脱敏成年龄区间或开发特定的 UDF 转化函数。
展开
评论
#挑战每日一条沸点# Write-Behind 与 Write-Through 最大的区别在于,前者是数据首先写入缓存,一段时间后(或通过其他触发器)再将数据写入 Database,并且这里涉及到的写入是一个异步操作。这种方式下,Cache 和 DB 数据的一致性不强,对一致性要求高的系统要谨慎使用,如果有人在数据尚未写入数据源的情况下直接从数据源获取数据,则可能导致获取过期数据,不过对于频繁写入的场景,这个其实非常适用。
展开
评论
#挑战每日一条沸点# 算法
在计算机领域里,算法是一系列程序指令,用于处理特定的运算和逻辑问题。 衡量算法优劣的主要标准是时间复杂度和空间复杂度。
数据结构
数据结构是数据的组织、管理和存储格式,其使用目的是为了高效地访问和修改数据。 数据结构包含数组、链表这样的线性数据结构,也包含树、图这样的复杂数据结构。
时间复杂度
时间复杂度是对一个算法运行时间长短的量度,用大O表示,记作 T(n)=O(f(n))。 常见的时间复杂度按照从低到高的顺序,包括O(1)、O(logn)、O(n)、 O(nlogn)、O(n2 )等。
展开
评论
#挑战每日一条沸点# 版本库👉.git

当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库。
.git文件另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。



工作区

本地项目存放文件的位置
可以理解成图上的workspace



暂存区 (Index/Stage)

顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区



本地仓库(Repository)

通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库
通常而言,HEAD指针指向的就是master分支
展开
评论
#挑战每日一条沸点# 互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。
评论
#挑战每日一条沸点# http/1.1规定了以下请求方法(注意,都是大写):
GET: 通常用来获取资源
HEAD: 获取资源的元信息
POST: 提交数据,即上传数据
PUT: 修改数据
DELETE: 删除资源(几乎用不到)
CONNECT: 建立连接隧道,用于代理服务器
OPTIONS: 列出可对资源实行的请求方法,用来跨域请求
TRACE: 追踪请求-响应的传输路径
展开
评论
#挑战每日一条沸点# git config:用于配置Git的用户名、邮箱等信息。

git branch:用于查看、创建和删除分支。

git checkout:用于切换分支和撤销修改。

git add:用于将文件添加到暂存区。

git commit:用于提交暂存区的文件到本地仓库。

git push:将本地仓库的文件推送到远程仓库。

git merge:用于合并分支。

我们还介绍了一些常见的Git操作,如查看状态、比较差异、查看日志等。另外,我们还介绍了如何忽略某些文件和文件夹,以避免将它们纳入Git管理。

通过掌握这些基本概念和命令,我们能够更好地使用Git来管理项目的代码,进行分支管理、版本控制和团队协作。在实践中,我们可以根据具体的需求和项目情况来选择适当的命令和操作。请继续学习和探索Git的更多功能和用法,以提高开发效率和团队协作能力。
展开
评论
下一页
个人成就
文章被点赞 7
文章被阅读 1,368
掘力值 134
收藏集
0
关注标签
2
加入于