深度学习练习-1.神经网络和深度学习-第二周-Python基础和Numpy(选做)

Python Basics with Numpy (optional assignment) Welcome to your first assignment. This exercise gives you a brief introduction to Python. Even if you’ve used Python before, this will help familiarize you with functions we’ll need. Instructions: - You will be using Python 3. - Avoid using for-loops and while-loops, unless you are explicitly told to do so. - Do not modify the (# GRADED FUNCTION [function name]) comment in some cells.

CentOS 7安装PostgreSQL 10教程

网上的教程多多少少都有遗漏,没办法,只好自己整理一篇教程 1. 卸载旧版本 # 检查安装的版本 rpm -qa | grep postgres # 卸载上面打印出的结果 (有依赖关系的,要按顺序卸载) rpm -e postgresql_xxx_... ... ... 获取yum源 先到官网根据配置获取正确的链接:https://www.postgresql.org/download/linux/redhat/ yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm 安装 yum install postgresql10 yum install postgresql10-server 初始化、开启服务 /usr/pgsql-10/bin/postgresql-10-setup initdb systemctl enable postgresql-10 systemctl start postgresql-10 修改默认用户密码,创建新用户 切换到Linux用户postgres su - postgres -bash-4.2$ psql 修改postgres密码 postgres=# \password postgres # Enter new password: # Enter it again: # postgres=# \q 创建新用户和数据库 例:用户名:dbuser 密码:123456 数据库名:userdb

Anacoda基本使用

这里只列举最最常用的命令 创建新的环境 conda new -n env_name python=X.X -n后跟环境名称 python=后跟python版本号,如2.7, 3.6 查看所有环境 conda env list 切换/退出环境 source activate env_name source deactivate 或者 activate env_name deactivate 查看环境已安装包 conda list 当前环境下安装包 conda install package_name 当conda库找不到指定包的时候也可以用pip,也可以直接用pip pip install package_name 指定环境安装包 conda install -n env_name package_name 更新包 #指定环境 conda update -n env_name package_name #当前环境 conda update package_name 删除包 #指定环境 conda remove -n env_name package_name #当前环境 conda remove package_name 添加Anaconda的TUNA镜像 conda config --add channels https://mirrors.

Windows、CentOS安装Anaconda

为了在一台主机上实现Python2和Python3共存,我试过一些网上推荐的方法,但是基本都有某些问题,目前我觉得最方便的方法是用安装anaconda来进行管理,因为anaconda是数据科学和机器学习环境的标准管理工具,默认会下载数据科学和机器学习相关的库,如果不需要可以下载简化版Miniconda。 1.官网下载安装包 Anaconda https://www.anaconda.com/download/ Miniconda https://conda.io/miniconda.html Windows直接点击下载按钮,CentOS 执行以下命令: mkdir /opt/python cd /opt/python wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh 2.安装 window直接按程序提示安装,CentOS执行以下命令: bash AnacondaX-x.x.x-Linux-x86_64.sh 安装过程中可以一路Enter,也可以根据需要安装。 Windows安装完可能需要配置环境变量,CentOS还需要: echo 'export PATH="/opt/anaconda/anaconda3/bin:$PATH"' >> ~/.bashrc 3.检查 conda -V 打印出版本号,即为安装成功!

Python面试-7-算法题

编程题 1 台阶问题/斐波那契 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2) 第二种记忆方法 def memo(func): cache = {} def wrap(*args): if args not in cache: cache[args] = func(*args) return cache[args] return wrap @memo def fib(i): if i < 2: return 1 return fib(i-1) + fib(i-2) 第三种方法 def fib(n): a, b = 0, 1 for _ in xrange(n): a, b = b, a + b return b 2 变态台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

Python面试-6-数据结构

数据结构 1 红黑树 红黑树与AVL的比较: AVL是严格平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多; 红黑是用非严格的平衡来换取增删节点时候旋转次数的降低; 所以简单说,如果你的应用中,搜索的次数远远大于插入和删除,那么选择AVL,如果搜索,插入删除次数几乎差不多,应该选择RB。 红黑树详解: https://xieguanglei.github.io/blog/post/red-black-tree.html 教你透彻了解红黑树: https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/03.01.md

Python面试-5-网络

网络 1 三次握手 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数 A。 服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK 的确认码应为 A+1,SYN/ACK 包本身又有一个随机序号 B。 最后,客户端再发送一个ACK。当服务端受到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包序号被设定为收到的确认号 A+1,而响应则为 B+1。 2 四次挥手 注意: 中断连接端可以是客户端,也可以是服务器端. 下面仅以客户端断开连接举例, 反之亦然. 客户端发送一个数据分段, 其中的 FIN 标记设置为1. 客户端进入 FIN-WAIT 状态. 该状态下客户端只接收数据, 不再发送数据. 服务器接收到带有 FIN = 1 的数据分段, 发送带有 ACK = 1 的剩余数据分段, 确认收到客户端发来的 FIN 信息. 服务器等到所有数据传输结束, 向客户端发送一个带有 FIN = 1 的数据分段, 并进入 CLOSE-WAIT 状态, 等待客户端发来带有 ACK = 1 的确认报文. 客户端收到服务器发来带有 FIN = 1 的报文, 返回 ACK = 1 的报文确认, 为了防止服务器端未收到需要重发, 进入 TIME-WAIT 状态.

Python面试-4-数据库

数据库 1 事务 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 彻底理解数据库事务: http://www.hollischuang.com/archives/898 2 数据库索引 推荐: http://tech.meituan.com/mysql-index.html MySQL索引背后的数据结构及算法原理 聚集索引,非聚集索引,B-Tree,B+Tree,最左前缀原理 3 Redis原理 Redis是什么? 是一个完全开源免费的key-value内存数据库 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets Redis数据库 ​ 通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求。在使用缓存的时候,redis比memcached具有更多的优势,并且支持更多的数据类型,把redis当作一个中间存储系统,用来处理高并发的数据库操作 速度快:使用标准C写,所有数据都在内存中完成,读写速度分别达到10万/20万 持久化:对数据的更新采用Copy-on-write技术,可以异步地保存到磁盘上,主要有两种策略,一是根据时间,更新次数的快照(save 300 10 )二是基于语句追加方式(Append-only file,aof) 自动操作:对不同数据类型的操作都是自动的,很安全 快速的主–从复制,官方提供了一个数据,Slave在21秒即完成了对Amazon网站10G key set的复制。 Sharding技术: 很容易将数据分布到多个Redis实例中,数据库的扩展是个永恒的话题,在关系型数据库中,主要是以添加硬件、以分区为主要技术形式的纵向扩展解决了很多的应用场景,但随着web2.0、移动互联网、云计算等应用的兴起,这种扩展模式已经不太适合了,所以近年来,像采用主从配置、数据库复制形式的,Sharding这种技术把负载分布到多个特理节点上去的横向扩展方式用处越来越多。 Redis缺点 是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。 4 乐观锁和悲观锁 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。 乐观锁与悲观锁的具体区别: http://www.cnblogs.com/Bob-FD/p/3352216.html 5 MVCC ​ 全称是Multi-Version Concurrent Control,即多版本并发控制,在MVCC协议下,每个读操作会看到一个一致性的snapshot,并且可以实现非阻塞的读。MVCC允许数据具有多个版本,这个版本可以是时间戳或者是全局递增的事务ID,在同一个时间点,不同的事务看到的数据是不同的。 MySQL的innodb引擎是如何实现MVCC的 innodb会为每一行添加两个字段,分别表示该行创建的版本和删除的版本,填入的是事务的版本号,这个版本号随着事务的创建不断递增。在repeated read的隔离级别(事务的隔离级别请看这篇文章)下,具体各种数据库操作的实现: select:满足以下两个条件innodb会返回该行数据: 该行的创建版本号小于等于当前版本号,用于保证在select操作之前所有的操作已经执行落地。 该行的删除版本号大于当前版本或者为空。删除版本号大于当前版本意味着有一个并发事务将该行删除了。 insert:将新插入的行的创建版本号设置为当前系统的版本号。 delete:将要删除的行的删除版本号设置为当前系统的版本号。 update:不执行原地update,而是转换成insert + delete。将旧行的删除版本号设置为当前版本号,并将新行insert同时设置创建版本号为当前版本号。 其中,写操作(insert、delete和update)执行时,需要将系统版本号递增。

Python面试-3-操作系统

操作系统 1 select,poll和epoll 其实所有的I/O都是轮询的方法,只不过实现的层面不同罢了. 这个问题可能有点深入了,但相信能回答出这个问题是对I/O多路复用有很好的了解了.其中tornado使用的就是epoll的. selec,poll和epoll区别总结 基本上select有3个缺点: 连接数受限 查找配对速度慢 数据由内核拷贝到用户态 poll改善了第一个缺点 epoll改了三个缺点. 关于epoll的: http://www.cnblogs.com/my_life/articles/3968782.html 2 调度算法 先来先服务(FCFS, First Come First Serve) 短作业优先(SJF, Shortest Job First) 最高优先权调度(Priority Scheduling) 时间片轮转(RR, Round Robin) 多级反馈队列调度(multilevel feedback queue scheduling) 常见的调度算法总结:http://www.jianshu.com/p/6edf8174c1eb 实时调度算法: 最早截至时间优先 EDF 最低松弛度优先 LLF 3 死锁 原因: 竞争资源 程序推进顺序不当 必要条件: 互斥条件 请求和保持条件 不剥夺条件 环路等待条件 处理死锁基本方法: 预防死锁(摒弃除1以外的条件) 避免死锁(银行家算法) 检测死锁(资源分配图) 解除死锁 剥夺资源 撤销进程 死锁概念处理策略详细介绍:https://wizardforcel.

Python面试-2-语法(二)

Python语言特性(下) 16 单例模式 ​ 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 __new__()在__init__()之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。单例模式是指创建唯一对象,单例模式设计的类只能实例 这个绝对常考啊.绝对要记住1~2个方法,当时面试官是让手写的. 1 使用__new__方法 class Singleton(object): def __new__(cls, *args, **kw): if not hasattr(cls, '_instance'): orig = super(Singleton, cls) cls._instance = orig.__new__(cls, *args, **kw) return cls._instance class MyClass(Singleton): a = 1 2 共享属性 创建实例时把所有实例的__dict__指向同一个字典,这样它们具有相同的属性和方法. class Borg(object): _state = {} def __new__(cls, *args, **kw): ob = super(Borg, cls).__new__(cls, *args, **kw) ob.__dict__ = cls._state return ob class MyClass2(Borg): a = 1 3 装饰器版本 def singleton(cls, *args, **kw): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls(*args, **kw) return instances[cls] return getinstance @singleton class MyClass: .