ls高级用法

假如我们有这样的一个文件夹,我们用tree命令查看它的目录结构: 用法1:列出/home/alvin/test_dir目录下所有文件及目录的详细资料 命令: ls -lR /home/alvin/test_dir/ 结果: [alvin@VM_0_16_centos test_dir]$ ls -lR /home/alvin/test_dir/ /home/alvin/test_dir/: total 28 -rw-rw-r– 1 alvin alvin 37 Nov 18 09:12 atb_aux.c -rw-rw-r– 1 alvin alvin 8 Nov 18 09:12 atb_can.c -rw-rw-r– 1 alvin alvin 24 Nov 18 09:12 atb_orch.c -rw-rw-r– 1 alvin alvin 5 Nov 18 09:12 atb_ota.c drwxrwxr-x 2 alvin alvin …

find命令详细解释

Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如权限、拥有者、修改日期/时间、文件大小等等。在这篇文章中,我们将学习如何使用 find 命令以及它所提供的选项来查找文件。 在绝大多数Linux发行版中,你都可以直接使用 find 命令而无需进行任何安装操作。如果你想在linux系统的命令行中变得特别高效,那么 find 是你必须掌握的命令之一。 find 命令的基本语法如下: $ find [path] [option] [expression] 一、基本用法 1. 列出当前目录和子目录下的所有文件 这个命令会列出当前目录以及子目录下的所有文件。 $ find . ./abc.txt ./subdir ./subdir/how.php ./cool.php 该命令与以下命令效果相同 $ find . $ find . -print 2. 查找特殊的目录或路径 下面的命令会查找当前目录下 test 文件夹中的文件,默认列出所有文件。 $ find ./test ./test ./test/abc.txt ./test/subdir ./test/subdir/how.php ./test/cool.php 下面的命令用于查找指定名称的文件。 $ find ./test -name “abc.txt” …

几个基本的Python算法

台阶问题/斐波纳挈 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 斐波那契解释: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……..这个数列从第3项开始,每一项都等于前两项之和。 如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2)。显然这是一个线性递推数列。 二分查找 快排 广度遍历和深度遍历二叉树 给定一个数组,构建二叉树,并且按层次打印这个二叉树 单链表逆置

Python爬去智联招聘,BI可视化

数据分析的过程如同烧一顿饭,先要数据采集(买菜),然后数据建模(配菜)、数据清洗(洗菜)、数据分析(做菜)、数据可视化(摆盘上菜)。 所以第一步,要采集/选择数据。 一、Python爬取智联招聘岗位信息(附源码) 选择智联招聘,通过Python来进行“BI工程师”的关键数据信息的爬取,这里大家也可以试着爬取自己岗位的关键词,如“数据分析师”、“java开发工程师 ”等。经过F12分析调试,数据是以JSON的形式存储的,可以通过智联招聘提供的接口调用返回。 那么我这边通过Python对智联招聘网站的数据进行解析,爬取了30页数据,并且将岗位名称、公司名称、薪水、所在城市、所属行业、学历要求、工作年限这些关键信息用CSV文件保存下来。 附上完整Python源码: import requests import json import csv from urllib.parse import urlencode import time def saveHtml(file_name,file_content): #保存conten对象为html文件 with open(file_name.replace(‘/’,’_’)+’.html’,’wb’) as f: f.write(file_content) def GetData(url,writer):#解析并将数据保存为CSV文件 response= requests.get(url) data=response.content saveHtml(‘zlzp’,data) #保存html文件 jsondata=json.loads(data) dataList=jsondata[‘data’][‘results’] #print(jsondata) for dic in dataList: jobName=dic[‘jobName’] #岗位名称 company=dic[‘company’][‘name’] #公司名称 salary=dic[‘salary’] #薪水 city=dic[‘city’][‘display’] #城市 jobtype = dic[‘jobType’][‘display’] #所属行业 eduLevel=dic[‘eduLevel’][‘name’] #学历要求 …

Docker命令总结

FROM [:] [AS ]: 设置基础镜像 FROM alpine:latest RUN [“executable”, “param1”, “param2”]: 执行shell脚本。进来少使用RUN,因为没执行一次 docker就会增加一层只读层。 RUN /bin/bash -c ‘source $HOME/.bashrc; echo $HOME’等同于RUN /bin/bash -c ‘source $HOME/.bashrc; echo $HOME’等同于RUN [“/bin/bash”, “-c”, “source $HOME/.bashrc; echo $HOME”] CMD [“executable”,”param1″,”param2″] [“param1″,”param2”] command param1 param2: DockerFile中只有一个CMD,多于一个将执行最后一个。它的意思差不多就是启动容器后执行的默认命令。 FROM *:*CMD [“catalina.sh”, “run”] LABEL = = … : 镜像标签 LABEL “com.example.vendor”=”ACME Incorporated”LABEL com.example.label-with-value=”foo”LABEL version=”1.0″LABEL description=”This …

深度学习(卷积网络)简介

理解卷积神经网络CNN,特别是对第一次接触卷积神经网络的人来说,经常会对诸如卷积核、滤波器、通道等概念和他们的堆叠架构感到困惑。然而卷积是强大且高度可扩展的概念,在本文中,我们将逐步分解卷积操作的原理,将他与标准的全连接网络联系起来,并且探索如何构建一个强大的视觉层次,使其成为高性能的图像特征提取器。 二维卷积:操作 二维卷积是一个相当简单的操作:从卷积核开始,这是一个小的权值矩阵。这个卷积核在 2 维输入数据上「滑动」,对当前输入的部分元素进行矩阵乘法,然后将结果汇为单个输出像素。 一个标准的卷积 卷积核重复这个过程知道遍历了整张图片,将一个二维矩阵转换为另一个二维矩阵。输出特征实质上是在输入数据相同位置上的加权和(权值是卷积核本身的值)。 输入数据是否落入这个「大致相似区域」,直接决定了数据经过卷积核后的输出。这意味着卷积核的尺寸直接决定了生成新的特征时汇合了多少(或几个)输入特征。 这与全连接层完全相反。在上面的例子中,我们的输入特征为 5*5=25,输出数据为 3*3=9. 如果我们使用标准的全连接层,就会产生一个 25*9=225 个参数的权值矩阵,每个输出都是所有输入数据的加权求和。卷积操作允许我们只用 9 个参数来实现这个变换,每个输出特性不用「查看」每个输入特征,而是只是「查看」来自大致相同位置的输入特征。请注意这一点,因为这对我们后面的讨论至关重要。 Padding 和 Strides 在我们继续介绍卷积神经网络之前,介绍两种卷积层中常用的技术:Padding 和 Strides Padding:如果你看到上面的动画,那么会注意到在卷积核滑动的过程中,边缘基本会被「裁剪」掉,将 5*5 特征矩阵转换为 3*3 的特征矩阵。边缘上的像素永远不在卷积核的中心,因为内核没有任何东西可以扩展到边缘之外。这并不理想,因为我们经常希望输出的尺寸等于输入。 一些 padding 操作 Padding 做了一些非常机智的办法来解决这个问题:用额外的「假」像素(通常值为 0, 因此经常使用的术语「零填充」)填充边缘。这样,在滑动时的卷积核可以允许原始边缘像素位于其中心,同时延伸到边缘之外的假像素,从而产生与输入相同大小的输出。 Striding:运行卷积层时,我们通常希望输出的尺寸是比输入更低。这在卷积神经网络中是常见的,在增加信道数量的同时空间尺寸减小。其中一种方法是使用池化层(例如,取每 2×2 网格的平均值/最大值将空间维度减半)。还有一种方法是使用 Striding: 一个步长为 2 的卷积操作 Stride 的想法是改变卷积核的移动步长跳过一些像素。Stride 是 1 表示卷积核滑过每一个相距是 1 的像素,是最基本的单步滑动,作为标准卷积模式。Stride 是 2 表示卷积核的移动步长是 2,跳过相邻像素,图像缩小为原来的 1/2。Stride 是 3 …

10大经典排序

1、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 1.1 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成。 1.2 动图演示 1.3 代码实现 /** * 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 * 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 * * @param numbers * 需要排序的整型数组 */ public static void bubbleSort(int[] numbers) { int temp = 0; int size = numbers.length; for (int i = 0; i < size – 1; i++) { …