24

Linux下权限设置中的数字与字符含义解释

linux系统文件夹644、755、777等权限设置详解 ,从左至右,第一位数字代表文件所有者的权限,第二位数字代表同组用户的权限,第三位数字代表其他用户的权限。

r 代表读(read),w 代表写(write),x 代表执行(execute)

读取(r):权限是二进制的100,十进制是4:
写入(w):权限是二进制的010,十进制是2;
执行(x):权限是二进制的001,十进制是1;

即:
r: 对应数值4 读取
w: 对应数值2 写入
x: 对应数值1 执行
-: 对应数值0 无权限

通过4、2、1的组合,得到以下几种权限:
若要 rwx 则 4+2+1=7 (读取+写入+执行)
若要 rw- 则 4+2=6 (读取+写入)
若要 r-x 则 4+1=5 (读取+执行)
若要 r– 则 =4 (读取)
若要 -wx 则 2+1=3 (写入+执行)
若要 -w- 则 =2 (写入)
若要 –x 则 =1 (执行)
若要 — 则 =0 (没有权限)

例如数字 755
第一位7等于4+2+1,rwx,所有者具有读取、写入、执行权限;
第二位5等于4+1+0,r-x,同组用户具有读取、执行权限但没有写入权限;
第三位5,同上,也是r-x,其他用户具有读取、执行权限但没有写入权限。

例如字符串 -rwxrw-r–
Linux下使用字符表示权限分成四段。
第一个表示文件类型,字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录
第二三四个字符“rwx”表示当前所属用户的权限。 数值表示为4+2+1=7,二进制是111
第五六七个字符“rw-”表示当前所属组的权限。 数值表示为4+2=6,二进制是110
第八九十个字符“r–”表示其他用户权限。 数值表示为4,二进制是100

Linux下的文件类型如下:
- 普通文件
d 目录(文件夹)
l 链接文件
b 块设备
c 字符设备

常用的linux文件权限数字代码与字符代码:
444 r–-r–-r–-
600 rw-------
644 rw-r–r–--
666 rw-rw-rw-
700 rwx------
744 rwxr–-r–-
755 rwxr-xr-x
777 rwxrwxrwx

linux下rwx权限数字解释
chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
范例:
chmod a=rwx file

chmod 777 file
效果相同
chmod ug=rwx,o=x file

chmod 771 file
效果相同
若用chmod 4755 filename可使此程序具有root的权限

想一次修改某个目录下所有文件的权限,包括子目录中的文件也要修改权限,要使用参数-R表示启动递归处理。
chmod -R 777 /home/user

24

判断python字典中key是否存在的两种方法

第一种方法:使用自带函数实现。

在python的字典的属性方法里面有一个has_key()方法,这个方法使用起来非常简单。

例:

第二种方法:使用in方法

上面两种方式,我更推荐使用第二种,因为has_key()是python2.2之前的方法,而且使用in的方法会更快一些。

最后告诉大家一点:除了使用in还可以使用not in,判定这个key不存在哦~

24

Python文件操作

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。

得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()

返回指定目录下的所有文件和目录名:os.listdir()

函数用来删除一个文件:os.remove()

删除多个目录:os.removedirs(r“c:\python”)

检验给出的路径是否是一个文件:os.path.isfile()

检验给出的路径是否是一个目录:os.path.isdir()

判断是否是绝对路径:os.path.isabs()

检验给出的路径是否真地存:os.path.exists()

返回一个路径的目录名和文件名:os.path.split()     eg os.path.split(‘/home/swaroop/byte/code/poem.txt’) 结果:(‘/home/swaroop/byte/code’, ‘poem.txt’)

分离扩展名:os.path.splitext()

获取路径名:os.path.dirname()

获取文件名:os.path.basename()

运行shell命令: os.system()

读取和设置环境变量:os.getenv() 与os.putenv()

给出当前平台使用的行终止符:os.linesep    Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’

指示你正在使用的平台:os.name       对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’

重命名:os.rename(old, new)

创建多级目录:os.makedirs(r“c:\python\test”)

创建单个目录:os.mkdir(“test”)

获取文件属性:os.stat(file)

修改文件权限与时间戳:os.chmod(file)

终止当前进程:os.exit()

获取文件大小:os.path.getsize(filename)
文件操作:
os.mknod(“test.txt”)        创建空文件
fp = open(“test.txt”,w)     直接打开一个文件,如果文件不存在则创建文件

关于open 模式:

w     以写方式打开,
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )

 

fp.read([size])                     #size为读取的长度,以byte为单位

fp.readline([size])                 #读一行,如果定义了size,有可能返回的只是一行的一部分

fp.readlines([size])                #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。

fp.write(str)                      #把str写到文件中,write()并不会在str后加上一个换行符

fp.writelines(seq)            #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

fp.close()                        #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。  如果一个文件在关闭后还对其进行操作会产生ValueError

fp.flush()                                      #把缓冲区的内容写入硬盘

fp.fileno()                                      #返回一个长整型的”文件标签“

fp.isatty()                                      #文件是否是一个终端设备文件(unix系统中的)

fp.tell()                                         #返回文件操作标记的当前位置,以文件的开头为原点

fp.next()                                       #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

fp.seek(offset[,whence])              #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。

fp.truncate([size])                       #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

 

目录操作:
os.mkdir(“file”)                   创建目录
复制文件:
shutil.copyfile(“oldfile”,”newfile”)       oldfile和newfile都只能是文件
shutil.copy(“oldfile”,”newfile”)            oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
复制文件夹:
shutil.copytree(“olddir”,”newdir”)        olddir和newdir都只能是目录,且newdir必须不存在
重命名文件(目录)
os.rename(“oldname”,”newname”)       文件或目录都是使用这条命令
移动文件(目录)
shutil.move(“oldpos”,”newpos”)   
删除文件
os.remove(“file”)
删除目录
os.rmdir(“dir”)只能删除空目录
shutil.rmtree(“dir”)    空目录、有内容的目录都可以删
转换目录
os.chdir(“path”)   换路径

Continue reading

24

使用Python分割(SQL)大文件

最近重装服务器系统,备份了某网站的数据库文件,备份在一个sql文件中了,大小为100M+,在导入新数据库时因为文件过大,使用phpmyadmin无法导入。

使用notepad打开是时相当的慢,又卡死,无法手动分割文件内容,所以想到了Python来解决。

下面代码写得还不够严谨,但是基本可以解决分割sql大文件的功能。

功能:

1、输入行号,打印此行内容

2、输入起始行号(不含)和结束行号(含),打印区间的内容

3、输入要分割的文件名和要把几个表信息保存在一个文件中(默认把10个表保存在一个文件中)

注:需要修改main函数segm参数默认值

Continue reading

23

10 种机器学习算法的要点(附 Python 和 R 代码)

也许我们生活在人类历史上最关键的时期:从使用大型计算机,到个人电脑,再到现在的云计算。关键的不是过去发生了什么,而是将来会有什么发生。

工具和技术的民主化,让像我这样的人对这个时期兴奋不已。计算的蓬勃发展也是一样。如今,作为一名数据科学家,用复杂的算法建立数据处理机器一小时能赚到好几美金。但能做到这个程度可并不简单!我也曾有过无数黑暗的日日夜夜。

谁能从这篇指南里受益最多?

我今天所给出的,也许是我这辈子写下的最有价值的指南。

这篇指南的目的,是为那些有追求的数据科学家和机器学习狂热者们,简化学习旅途。这篇指南会让你动手解决机器学习的问题,并从实践中获得真知。我提供的是几个机器学习算法的高水平理解,以及运行这些算法的 R 和 Python 代码。这些应该足以让你亲自试一试了。

6941baebjw1ewidibxxjnj20dr09etay

我特地跳过了这些技术背后的数据,因为一开始你并不需要理解这些。如果你想从数据层面上理解这些算法,你应该去别处找找。但如果你想要在开始一个机器学习项目之前做些准备,你会喜欢这篇文章的。

广义来说,有三种机器学习算法

1、 监督式学习

工作机制:这个算法由一个目标变量或结果变量(或因变量)组成。这些变量由已知的一系列预示变量(自变量)预测而来。利用这一系列变量,我们生成一个将输入值映射到期望输出值的函数。这个训练过程会一直持续,直到模型在训练数据上获得期望的精确度。监督式学习的例子有:回归、决策树、随机森林、K – 近邻算法、逻辑回归等。

2、非监督式学习

工作机制:在这个算法中,没有任何目标变量或结果变量要预测或估计。这个算法用在不同的组内聚类分析。这种分析方式被广泛地用来细分客户,根据干预的方式分为不同的用户组。非监督式学习的例子有:关联算法和 K – 均值算法。

3、强化学习

工作机制:这个算法训练机器进行决策。它是这样工作的:机器被放在一个能让它通过反复试错来训练自己的环境中。机器从过去的经验中进行学习,并且尝试利用了解最透彻的知识作出精确的商业判断。 强化学习的例子有马尔可夫决策过程。

常见机器学习算法名单

这里是一个常用的机器学习算法名单。这些算法几乎可以用在所有的数据问题上:

  1. 线性回归
  2. 逻辑回归
  3. 决策树
  4. SVM
  5. 朴素贝叶斯
  6. K最近邻算法
  7. K均值算法
  8. 随机森林算法
  9. 降维算法
  10. Gradient Boost 和 Adaboost 算法

Continue reading

23

七步精通Python机器学习

开始。这是最容易令人丧失斗志的两个字。迈出第一步通常最艰难。当可以选择的方向太多时,就更让人两腿发软了。

从哪里开始?

本文旨在通过七个步骤,使用全部免费的线上资料,帮助新人获取最基本的 Python 机器学习知识,直至成为博学的机器学习实践者。这篇概述的主要目的是带领读者接触众多免费的学习资源。这些资源有很多,但哪些是最好的?哪些相互补充?怎样的学习顺序才最好?

我假定本文的读者不是以下任何领域的专家:

▪  机器学习

▪  Python

▪  任何 Python 的机器学习、科学计算、数据分析库

如果你有前两个领域其一或全部的基础知识,可能会很有帮助,但这些也不是必需的。在下面几个步骤中的前几项多花点时间就可以弥补。

Continue reading

24

$GLOBALS["HTTP_RAW_POST_DATA"]不能获取到POST数据

$GLOBALS["HTTP_RAW_POST_DATA"]不能获取到POST数据,有两种可能性:

第一是PHP版本大于5.3,第二是php.ini文件中register_globals值没有设置为Off;

php://input数据总是跟$GLOBALS["HTTP_RAW_POST_DATA"]相同,

但是php://input比$GLOBALS["HTTP_RAW_POST_DATA"]更凑效,且不需要特殊设置php.ini

所以代码可以像下面这样写:

个人还是选择使用第一种方法,因为它不需要配置php.ini文件。

在项目应用中,如摄像头拍照,上传保存,就可以用到php://input。客户端拍照后,把图片流传送到服务端,服务端使用file_get_getcontents(‘php://input’)就能获取到图片流,然后把图片流保存到一个文件,这个文件就是图片了。

微信公共平台php中用$GLOBALS["HTTP_RAW_POST_DATA"]收不到信息的话,可以使用上面方法处理。

Posted in PHP
25

TortoiseSVN项目文件夹红色感叹号的解决方案

当带有感叹号的最下层的文件夹下没有需要提交的文件时的解决方案如下:

假定目录为(项目的根目录为aa文件夹,dd及上层文件夹有红色感叹号): d:\aa\bb\cc\dd\ee

TortoiseSVN项目文件夹红色感叹号,是因为本地代码与库没有保持一致,那么就找到带有红色感叹号的最下层的文件夹(dd),进入到这个文件夹(dd),右键提交项目(注意使用“合并”功能);

完成后查看cc文件夹是否带有红色感叹号,如果有,那么再次使用上面方法;

依次向上查找解决。

我就是这样解决的,如果你解决不了,那可以联系我一起研究一下。

 

SVN安装步骤及配置方法

 

25

Navicat Premium不用注册码、不用破解即可永久正常使用

Navicat Premium是个好东东啊,但是做为开发者来讲感觉花那一千多二千来元我想一般人都不会这么玩的啊。

虽然不是经常使用Navicat Premium,但是感觉它还是很方便的。

Navicat Premium的14天试用过期了,我也是苦苦找了很长时间的注册码,没有下载破解版本,因为害怕中招儿,所以一般的时候我都不会使用破解版的。

突然一个点子闪现在头脑中,那就是让我的电脑穿越回过去吧,完美解决!

为防止官方发现漏洞而修复,我上面说得很隐含,应该不难理解吧?!

如果还没理解那我也没办法了。要么就加我QQ,加的时候验证问题回答:mrdede.com

01

安装了VM但是网络适配器中没VMnet0

VMnet0网卡是桥接到本地网卡的(它是有独立的局域网IP的,相当是你的局域网中的另一台电脑),这是一个功能,不需要新建网络连接,所以在网络适配器列表中就找不到VMnet0,但若本地有多个网卡,就找不见真正的网卡了。

现在电脑一般有多块网卡,一块无线、一块有线、一块蓝牙。另外,还可能有微软虚拟的路由器。VMnet0默认是自动桥接到物理网卡(N个网卡都被桥接),所以就找不见真正的网卡了。若要正常使用,还需要手动指定VMnet0桥接到你电脑的实际上网使用的网卡上。

如果是WIFI连接上网的,那就找到那个无线网卡,如果是有线上网就找到有线的网卡。

问题:
1.主机ping不到虚拟机的IP;
2.虚拟机不能桥接;

VM中修改设置的方法如下:

1、打开VMware Workstation软件,依次点击:编辑 >> 虚拟网络编辑器;
2、在弹出对话框中选中名称为VMnet0项,依次点击:VMnet信息 >> 桥接模式 >> 桥接到 ,点击下拉,选中当前使用的网络连接的名字,确定。
3、查看虚拟机的网络适配器,网络连接设置为桥接模式,确定。
4、开机虚拟系统(我测试的系统是CentOS 6.5),查看记下IP。
5、使用主机ping 虚拟机IP。
完成。

注意:

此方法中人对我个人碰到的问题进行记录与分享,而且每个人的电脑环境也都是不同的,所以同样是不同桥接,出错的根源不一定相同,解决方案也就不一定相同,要客观看待。

在使用360的自动优化功能时一定要查看每一项优化内容,它很有可能会把一些服务给关闭的,本人一般都是手动优化的。

另外有人还说没有VMnet1和VMnet8的,就我个人来讲必须使用桥接的,因为需要做不同系统的测试学习、网站搭建研究等,比如在虚拟机中研究linux系统。