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

思路

  1. 每本书对于每个人的状态都是“未分配”状态
  2. 为其中一个人分配一本他喜欢的书,分配后将该书标记为“已分配”,可能会出现以下两种情况:
  • 若分配完所有书,则说明产生了一个合理的方案。输出该方案,继续尝试有无新的方案。
  • 若分配到下一个人没有可控分配的他喜欢的书,则退回上一状态重新分配

实现

# 检查该学生是否喜欢这本书
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

如何保护好自己的密码免遭侵害,可以阅读火狐给出的建议,英文原文

了解黑客的工作方式

  1. 最初的目标不是针对具体某个人的信息,而是许多人的信息。
  2. 所有的数据都是有价值的,信息可以被用来出售,尝试其他账户等
  3. 有的密码是很弱的,很容易被猜测出来,可以参考2018年最差的100个密码,密码123456位于榜首
  4. 一个密码可以解开多个账户。我相信大部分人总或多或少的账户密码是相同的。
  5. 黑客不在乎你有多少钱。参见第2条

数据泄漏后怎么办

  1. 阅读泄漏的时间,因为泄漏未必会被即时发现,有一定的滞后性,可能是几天几个月甚至几年
  2. 检查自己是否注册过该账户,虽然很少发生
  3. 尽快更改密码,不仅要更改被泄露账户的密码,也要修改密码相同的其他账户密码
  4. 如果收到了其他损失,比如金钱、信用,请及时联系相关部门处理

如何创建强密码

先查看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
  1. 增加特殊字符,将英文字符替换为特殊字符,比如password->p@ssword!
  2. 避开具有个人信息或者名人信息的单词
  3. 尽量避免多个账号使用同一个密码
  4. 使用密码管理器,比如1Password, LastPass,Dashlane, Bitwarden
  5. 使用双重身份验证

采取步骤保护在线身份

  1. 警惕公共Wi-Fi网络
  2. 及时更新系统、软件
  3. 警惕钓鱼网站、钓鱼邮件
  4. 为每个帐号创建不同的密码
  5. 使用密码管理器

5个关于密码管理器荒诞的说法

  1. 密码管理器不值得信赖
  2. 密码管理器不是100%,所以我拒绝使用
  3. 将我所有的密码存储在一个地方使得他们更容易获得
  4. 记住我所有密码比信任技术更安全。当然,这个更好,前提是你能记住所有密码
  5. 设置密码管理器很麻烦,相信我,花一点儿时间去设置是值得的

采取进一步措施保护

通过定期查看信用,银行卡等信息来发现是否存在泄漏。

Tips

  1. Python中自带的列表操作,大部分都是在原列表上操作。而不会返回产生新的列表。
  2. Review提到的密码管理器的主密码一定要采取高强度的密码,同时要加强保管!

Share

推荐一个网站,可以检查邮箱注册帐号是否存在泄漏,链接。若想提高自己的密码的安全性,可以参考本文的Review部分

ARTS Week 5的更多相关文章

  1. KDE声音服务器 arts

    KDE声音服务器 arts arts介绍arts是KDE的核心声音系统,支持多音频流.全双工.网络声音请求.ALSA与OSS驱动后端.JACK声音服务器后端等扩展,它既是声音服务器,也 提供一套音频软 ...

  2. 【ARTS】01_21_左耳听风-201900401~201900407

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  3. 【ARTS】01_20_左耳听风-20190325~20190331

    zz## ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 ...

  4. 【ARTS】01_19_左耳听风-20190318~20190324

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  5. 【ARTS】01_18_左耳听风-20190311~20190317

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  6. 【ARTS】01_17_左耳听风-20190304~20190310

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  7. 【ARTS】01_16_左耳听风-20190225~20190303

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  8. 【ARTS】01_15_左耳听风-20190218~20190224

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  9. 【ARTS】01_14_左耳听风-20190211~20190217

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  10. 【ARTS】01_13_左耳听风-20190204~20190210

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

随机推荐

  1. echo 传义序列

    echo 传义序列:\a 警示字符\b 退格\c 输出中忽略最后的换行符\f 清屏\n 换行\r 回车\t 水平制表符\v 垂直制表符\\ 反斜杠字符\0ddd 将字符表示成1到3位的八进制数值

  2. Centos7 编译安装PHP7

    Centos7 编译安装PHP7 编译安装的方式可以让组件等设置更加合理,但需要你对PHP的代码及各种配置非常的熟悉,以下为大致的安装流程,大家可以参考 1.下载编译工具 yum groupinsta ...

  3. ASP.Net Core 3.0 中使用JWT认证

    JWT认证简单介绍     关于Jwt的介绍网上很多,此处不在赘述,我们主要看看jwt的结构.     JWT主要由三部分组成,如下: HEADER.PAYLOAD.SIGNATURE HEADER包 ...

  4. VS从标准输入读入文件

    1.点击[生成],在对应目标平台[64 or 32]文件夹下的[release]或[debug]下找到可执行文件 2.读取销售记录文件 1)打开cmd,将销售记录文件和可执行文件放在同一文件夹下 2) ...

  5. Antd组件库使用方法

    零.介绍: Ant design,是阿里巴巴的蚂蚁金服公司设计的一套适应用于web端和移动端网页的Ui组件库,组件好看,非常适合React框架使用. 官网:https://ant.design/ind ...

  6. TCP/IP协议与HTTP协议(二)

    TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据. 1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过 ...

  7. transient简介

    当一个对象实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的 ...

  8. KMO检验和Bartlett球形检验

    KMO检验和Bartlett球形检验因子分析前,首先进行KMO检验和巴特利球体检验,KMO检验系数>0.5,(巴特利特球体检验的x2统计值的显著性概率)P值<0.05时,问卷才有结构效度, ...

  9. 16. 产生Javadoc

    过程与export >> javadoc一致,需要注意的是字符集的设置. -encoding UTF-8 -charset UTF-8 export >> javadoc : ...

  10. EFCore-脚手架Scaffold发生Build Failed问题的终极解决

    大家在使用EntityFrameworkCore的DBFirst的脚手架(Scaffolding)时应该遇到过Build Failed的错误,而没有任何提示,我也遇到过不少次,目前已经完美解决并将排查 ...