/me/profile2.jpg

Linux入门

目录结构 /bin (/usr/bin, /usr/local/bin): binary,存放最经常使用的命令 /sbin (/usr/sbin, /usr/local/sbin): s: super user, 存放系统管理员使用的系统管理程序 /home: 存放普通用户的主目录,每个用户都有一个自己的目录 /root: 超级权限者的用户主目录(This is not the root (/) filesystem. It is the home directory for the root user.) /lib: 系统开机所需要最基本的动态连接共享库,类似Windows的DLL文件。几乎所有应用程序都需要用到这些共享库 /etc: 系统管理所需要的配置文件和子目录 /usr: 用户的很多应用程序和文件都放在这个目录下,类似Windows的program files目录 /proc,/srv,/sys: 内核相关目录(不要轻易修改) /dev: 硬件以文件的形式存放在该处 /media: U盘,光驱,等等 /mnt: 用户临时挂载的文件系统 /opt: 存放安装软件 /usr/local: 存放安装软件所安装的目录,一般是通过编译源码的方式安装的程序 /var: 存放经常被修改的东西,比如日志文件 Vi/Vim快捷键 拷贝当前行yy, 拷贝当前行以下的5行5yy,粘贴p 删除当前行dd, 删除当前行以下的5行5dd 查找关键词/keyword,下一个出现n 显示行号:set nu,隐藏行号:set nonu 阅览最首行gg最末行G 撤销输入动作u 移动光标至第20行20+shift g 开关重启命令 1 2 3 4 5 6 sync # 把内存数据同步到磁盘,以下操作前先执行该命令 shutdown -h now # 立即关机 shutdown -h 1 # 1min 关机 shutdown -r now # 立即重启 halt # 等同于关机 reboot # 立即重启 用户管理 1 2 3 4 5 6 7 8 9 10 useradd xiaoming # 自动创建home下同名目录 passwd xiaoming # 指定密码 userdel xiaoming # 删除用户xiaoming,home下其目录会保留 userdel -r xiaoming # 删除用户xiaoming,home下其目录不会保留 su - xiaoming # 切换用户登陆, 权限不足会给提示,exit返回到原先用户 groupadd zuming # 创建组 groupdel zuming # 删除组 useradd -g zuming xiaoming # 创建用户时,指定组 id xiaoming # 查询用户信息 usermod -g zuming2 xiaoming # 修改用户所在组 用户配置文件在: /etc/passwd (用户id,组id,家目录,shell) 组配置文件在:/etc/group 口令配置文件(密码,登录信息):/etc/shadow(加密的) 实用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 man ls # 显示ls用法 help cd # 显示cd用法 touch filename # 创建空文件 cat -n filename | more # 打开文件内容(只读方式), -n 显示行号,more分页显示 more filename # 按页显示文件,空格翻页,Enter下一行,ctrl+f/b less filename # 分页查看,lazy加载,利于显示大文件 "less is more" ls -l > filename # 重定向(覆盖) ls -l >> filename # 追加(append到尾部) head -n 5 filename # 只显示文件前5行(默认10行) tail -n 5 filename # 只显示文件后5行(默认10行) -f追踪文件更新,日志监控经常用 date "+%Y-%m-%d %H:%M:%S" # 按格式显示当前年月日时分秒,“+”必要, -s设定 cal # 显示当前日历 find [scope] [-name 文件名, -user 用户, -size 文件大小] grep [-n 显示匹配行行号, -i 忽略大小写] 查找内容 源文件 cat hello.

Precision和Recall

什么是精确率(precision)与召回率(recall)? Precision和Recall是衡量模型预测能力的指标。在简单的分类问题(种类数=2)中,根据实际答案与模型预测,可分为如下4种情况: True Positive (TP) - 正确预测了阳类 True Negative (TN) - 正确预测了阴类 False Positive (FP) - 错误预测了阳类(实际为阴类) False Negative (FN) - 错误预测了阴类(实际为阳类) 注:True和False表示预测是否正确,Positive和Negative表示预测结果 精准率和召回率定义: Precision = TP / (TP + FP) Recall = TP / (TP + FN) 他们区别在分母不同,所取值范围均为0~1 如何理解Precision和Recall? 信息检索中,Precision又叫查准率(找得对),Recall又叫查全率(找得全)。 举个例子,池塘有大龙虾30只,小龙虾70只。我们发明了一只捕大龙虾神器专捕大龙虾。神器一网下去,捕到大龙虾20只,小龙虾5只。那么: 精准率 = 20 /(20 + 5) = 0.80 召回率 = 20 / 30 = 0.67 我们来看3个极端神器的Precision和Recall。 神器谨慎版:只捕了一只,且为大龙虾。Precision = 1/1 = 1.0, Recall = 1/30 = 0.

网络广告是如何用cookie来追踪用户的?

什么是Cookie 参考 Web客户端追踪(上)-Cookie追踪 网络广告代理商是如何通过 cookie 收集用户信息的? - LO的回答 - 知乎 RTB广告竞价系统的算法介绍 你是如何被广告跟踪的? - 巴伐利亚啤酒馆的文章 - 知乎 第一方Cookie和第三方Cookie 第一方Cookie与第三方Cookie的区别 第一方和第三方cookie是什么? ETP,ITP,NO-TP,是时候把第三方Cookie讲清楚了

从Pandas到PySpark

PySpark的特性 Immutable Changes create new object references Old versions are unchanged Lazy Compute does not happen until output is requested Pandas VS PySpark Load CSV 1 2 3 4 5 # Pandas df = pd.read_csv("datafile.csv") # PySpark df = spark.read.options(header=True, inferSchema=True).csv("datafile.csv") View Dataframe 1 2 3 4 5 # Pandas df # PySpark df.show() Columns & Data Types 1 2 3 4 5 6 7 # Pandas df.

Git与Github使用

1. Git概述 Git这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。 2. 常用命令 设置用户签名 git config --global user.name 用户名 设置用户签名 git config --global user.email 邮箱 注意:这里设置用户签名和将来登陆Github的账号没有任何关系。 初始化本地库 git init 查看本地库状态 git status 将工作区的文件添加到暂存区 git add 文件名 将暂存区的文件提交到本地库 git commit -m "日志信息" 文件名 查看版本信息(HEAD经过的历史记录) git reflog 查看版本详细信息 git log 版本穿梭 git reset --hard 版本号 (版本号可以通过git reflog查询)通过HEAD^或HEAD~移动HEAD到相对位置 注意:上图中,链表结构从新版本指向旧版本,merge情况下指向两个父(旧)版本。 勘误:命令行结果中版本号应为i8fe5。左图中未显示8d83a版本号。 3. 分支操作 查看分支 git branch -v 创建分支 git branch 分支名 切换分支 git checkout 分支名 合并分支 git merge 分支名(在master分支上,合并hot-fix分支) 删除分支 git branch -d 分支名 冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。

Leetcode:位运算

while位 342. Power of Four (easy) 简述:判断是否为4的幂 思路:mask挪位置 联系:出自693 1 2 3 4 5 6 7 8 9 10 11 12 13 # class Solution(object): # def isPowerOfFour(self, num): # """ # :type num: int # :rtype: bool # """ # base = 1 while base <= num: # if base == num: # return True # 要点1-1: 偶数位为1 base <<= 2 # return False 476. Number Complement (easy) 简述:将所给数二进制取反输出对应十进制

Leetcode:树的Traversal

In-Order 230. Kth Smallest Element in a BST (medium) 简述:在BST中,求第k小的值 思路:inorder,记录遍历idx 联系:模板题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # class Solution(object): # def kthSmallest(self, root, k): # """ # :type root: TreeNode # :type k: int # :rtype: int # """ # self.idx, self.res = 0, None # self.k = k # self.

Leetcode:树的Divide & Conquer

Title -- 100. Same Tree (easy) 简述:判断两棵二叉树是否相同 思路:分治法 联系:模板题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None # class Solution(object): # def isSameTree(self, p, q): # """ # :type p: TreeNode # :type q: TreeNode # :rtype: bool # """ # if p is None and q is None: # return True # if p is None or q is None: # return False return p.

Leetcode:二分查找

模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # def binarySearch(nums, target): # if len(nums) == 0: # return -1 # start, end = 0, len(nums) - 1 while start + 1 < end: # 要点3-1 mid = (start + end) // 2 # 要点3-2: python动态数据类型 # if nums[start] < target: start = mid # 要点3-3: mid不+-1 # else: # end = mid # if nums[start] == target: # return start # if nums[end] == target: # return end # return -1 找位置 34.

Foundational Finance for Strategic Decision Making

Coursera specializations offered by UM Course I Time Value of Money Simple Future Value (FV) PV = Present Value (unit: $) FV = Present Value (unit: $) n = # of Periods (#) r = Interest Rate (%, not $) > 0 (assumption) Insight: A dollar today is worth more than a dollar tomorrow. You cannot compare money across time. Example: Power of Compounding! Peter Minuit bought the Manhattan Island from Native Americans for $24 in 1626.