ARTS Week 5
Nov 25, 2019 ~ Dec 1, 2019
Algorithm
深度优先搜索--书籍分配
题目描述:有b1~b5五本书,要分配给五个学生,分别是a1~a5。但每个学生都有其喜欢的书,要检查是否可以让每位同学都获得自己喜欢的书。书籍喜好表如下(Y表示喜欢):
| b1 | b2 | b3 | b4 | b5 | |
|---|---|---|---|---|---|
| a1 | Y | Y | Y | ||
| a2 | Y | Y | Y | ||
| a3 | Y | ||||
| a4 | Y | Y | |||
| a5 | Y |
思路
- 每本书对于每个人的状态都是“未分配”状态
- 为其中一个人分配一本他喜欢的书,分配后将该书标记为“已分配”,可能会出现以下两种情况:
- 若分配完所有书,则说明产生了一个合理的方案。输出该方案,继续尝试有无新的方案。
- 若分配到下一个人没有可控分配的他喜欢的书,则退回上一状态重新分配
实现
# 检查该学生是否喜欢这本书
def judge(j, k):
name = student[k]
book = books[j]
if book in like[name]:
return True
else:
return False
# 打印一种结果
def answer(L):
print('一种分配方案为:')
for i in range(n):
print(student[i], '->', L[i])
# 深度优先搜索
def book_dfs(L, k):
if k == n:
answer(L)
else:
for j in range(n):
if judge(j, k) and visited[j] == 0:
# j本书分配给第k个人是否合理
L[k] = books[j]
visited[j] = 1
book_dfs(L, k+1)
visited[j] = 0
student = ['a1', 'a2', 'a3', 'a4', 'a5']
books = ['A', 'B', 'C', 'D', 'E']
like = {'a1':['A','B','D'], 'a2':['B','C','E'], 'a3':['B'], 'a4':['A','C'], 'a5':['D','E']}
Review
如何保护好自己的密码免遭侵害,可以阅读火狐给出的建议,英文原文
了解黑客的工作方式
- 最初的目标不是针对具体某个人的信息,而是许多人的信息。
- 所有的数据都是有价值的,信息可以被用来出售,尝试其他账户等
- 有的密码是很弱的,很容易被猜测出来,可以参考2018年最差的100个密码,密码
123456位于榜首 - 一个密码可以解开多个账户。我相信大部分人总或多或少的账户密码是相同的。
- 黑客不在乎你有多少钱。参见第2条
数据泄漏后怎么办
- 阅读泄漏的时间,因为泄漏未必会被即时发现,有一定的滞后性,可能是几天几个月甚至几年
- 检查自己是否注册过该账户,虽然很少发生
- 尽快更改密码,不仅要更改被泄露账户的密码,也要修改密码相同的其他账户密码
- 如果收到了其他损失,比如金钱、信用,请及时联系相关部门处理
如何创建强密码
先查看2018年排名前25的弱密码
1 123456
2 password
3 123456789
4 12345678
5 12345
6 111111
7 1234567
8 sunshine
9 qwerty
10 iloveyou
11 princess
12 admin
13 welcome
14 666666
15 abc123
16 football
17 123123
18 monkey
19 654321
20 !@#$%^&*
21 charlie
22 aa123456
23 donald
24 password1
25 qwerty123
- 增加特殊字符,将英文字符替换为特殊字符,比如
password->p@ssword! - 避开具有个人信息或者名人信息的单词
- 尽量避免多个账号使用同一个密码
- 使用密码管理器,比如
1Password,LastPass,Dashlane,Bitwarden。 - 使用双重身份验证
采取步骤保护在线身份
- 警惕公共Wi-Fi网络
- 及时更新系统、软件
- 警惕钓鱼网站、钓鱼邮件
- 为每个帐号创建不同的密码
- 使用密码管理器
5个关于密码管理器荒诞的说法
- 密码管理器不值得信赖
- 密码管理器不是100%,所以我拒绝使用
- 将我所有的密码存储在一个地方使得他们更容易获得
- 记住我所有密码比信任技术更安全。当然,这个更好,前提是你能记住所有密码
- 设置密码管理器很麻烦,相信我,花一点儿时间去设置是值得的
采取进一步措施保护
通过定期查看信用,银行卡等信息来发现是否存在泄漏。
Tips
- Python中自带的列表操作,大部分都是在原列表上操作。而不会返回产生新的列表。
Review提到的密码管理器的主密码一定要采取高强度的密码,同时要加强保管!
Share
推荐一个网站,可以检查邮箱注册帐号是否存在泄漏,链接。若想提高自己的密码的安全性,可以参考本文的Review部分
ARTS Week 5的更多相关文章
- KDE声音服务器 arts
KDE声音服务器 arts arts介绍arts是KDE的核心声音系统,支持多音频流.全双工.网络声音请求.ALSA与OSS驱动后端.JACK声音服务器后端等扩展,它既是声音服务器,也 提供一套音频软 ...
- 【ARTS】01_21_左耳听风-201900401~201900407
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_20_左耳听风-20190325~20190331
zz## ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 ...
- 【ARTS】01_19_左耳听风-20190318~20190324
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_18_左耳听风-20190311~20190317
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_17_左耳听风-20190304~20190310
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_16_左耳听风-20190225~20190303
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_15_左耳听风-20190218~20190224
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_14_左耳听风-20190211~20190217
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_13_左耳听风-20190204~20190210
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
随机推荐
- Spring Security 实战干货: 简单的认识 OAuth2.0 协议
1.前言 欢迎阅读 Spring Security 实战干货 系列文章 .OAuth2.0 是近几年比较流行的授权机制,对于普通用户来说可能每天你都在用它,我们经常使用的第三方登录大都基于 OAuth ...
- Android系统启动过程分析
Android系统启动过程分析 一.Android平台架构 首先贴一张Android系统架构图方便理解整个Android架构,这可以让我们从整体上对整个启动流程有个大概认知. 可以看出整个架构由5部分 ...
- iOS多线程编程原理及实践
摘要:iOS开发中,开发者不仅要做好iOS的内存管理,而且如果你的iOS涉及多线程,那你也必须了解iOS编程中对多线程的限制,iOS主线程的堆栈大小为1M,其它线程均为512KB,且这个限制开发者是无 ...
- CTO说|非容器化应用怎么玩多云?Kubernetes不管我们管啊
Kubernetes已经成为容器编排系统的事实标准,是现在主流的跨云容器化应用操作系统. 但是,Kubernetes的目标并不是容器本身,而是承载其上的应用,本质上是为了解决(容器化)应用上云这个难题 ...
- Java ArrayList类的简单介绍
ArrayList类的说明: ArrayList类是List接口的实现类,java.util.ArrayList集合数据存储的结构是数组结构. 特点: 元素增删慢,查找快.(由于日常开发中使用最多的功 ...
- Spring Boot2 系列教程 (十) | 实现声明式事务
前言 如题,今天介绍 SpringBoot 的 声明式事务. Spring 的事务机制 所有的数据访问技术都有事务处理机制,这些技术提供了 API 用于开启事务.提交事务来完成数据操作,或者在发生错误 ...
- P3369 【模板】普通平衡树 01Trie树
P3369 [模板]普通平衡树 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入xx数 删除xx数(若有多个相同的数,因只删除一个) 查询xx数的排名(排名 ...
- MySQL日志及索引
MySQL物理结构: MySQL它是通过文件系统对数据进行储存和管理,从物理结构上分为日志文件和数据文件 日志文件: 日志文件记录了数据库操作的信息和一些错误信息,我们常用的日志文件有:错误日志.二进 ...
- 力扣337——打家劫舍 III
这一篇也是基于"打家劫舍"的扩展,需要针对特殊情况特殊考虑,当然其本质还是动态规划,优化时需要考虑数据结构. 原题 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃 ...
- Oracle设置序列方法
create sequence SEQ_LoanApplicantGuarantee minvalue 1 nomaxvalue start with 1 increment by 1 nocycle ...