在Linux中ln命令用来为文件创建连接,连接类型分为硬连接(Hard Link)和符号连接(Symbolic Link)两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。 |
硬连接是指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型系统都会给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的,一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接,所以只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个硬连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接符号连接(Symbolic Link),也叫软连接。软链接文件又类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,该文件实际上是一个文本文件,其中包含着另一文件的位置信息。
通过实验加深理解 创建不同的类型的文件连接root@Orangepi:~/test# touch file1 #创建一个测试文件 root@Orangepi:~/test# ln file1 file2 #创建file的一个硬连接文件file2 root@Orangepi:~/test# ln -s file1 file3 #创建file的一个符号连接文件file3 root@Orangepi:~/test# ls -li #-l参数以单列格式输出文件信息,-i参数输出文件的inode节点信息 total 0 28125 -rw-r--r-- 2 root root 0 Feb 16 08:29 file1 28125 -rw-r--r-- 2 root root 0 Feb 16 08:29 file2 31463 lrwxrwxrwx 1 root root 5 Feb 16 08:30 file3 -> file1
从上面的结果中可以看出,硬连接文件file2与原文件file1的inode节点相同,均为28125,然而符号连接文件的inode节点不同。
分别对文件进行操作root@Orangepi:~/test# cat >>file1 <<EOF #向文件file1追加内容 > 12345 > EOF root@Orangepi:~/test# cat file1 #输出文件file1内容 12345 root@Orangepi:~/test# cat file2 #输出文件file2内容 12345 root@Orangepi:~/test# cat file3 #输出文件file3内容 12345 root@Orangepi:~/test# rm file1 #删除文件file1 root@Orangepi:~/test# cat file2 12345 root@Orangepi:~/test# cat file3 cat: file3: No such file or directory
通过上面的测试可以看出:当删除原始文件file1后,硬连接文件file2不受影响,但是符号连接文件file1无效。
总结依此你可以做一些相关的测试,可以得到以下全部结论:
1. 删除符号连接file3,对文件file1,file2无影响;
2. 删除硬连接file2,对文件file1,file3也无影响;
3. 删除原文件file1,对硬连接文件file2没有影响,但是会导致符号连接file3失效;
4. 同时删除原文件file1以及硬连接文件file2,整个文件才会真正的被删除。
本文原创地址: http://www.linuxprobe.com/ln-command-linux.html
本文来自博客园,作者:linux_pro,转载请注明原文链接:http://www.cnblogs.com/linuxpro/p/17416844.html
区别主要区别在与args[0]的值,在C语言当中args[0]是C语言编译出的当前二进制的名称,而在Java当中却是第一个参数的值。代码演示C语言代码如下:#include<stdio.h> intmain(intargc,char*argv[]) { printf("argc=%d,argv=%s",argc,argv[0]); return0; }复制使用gccargs_test.c编译上面代码并且执行结果如下:Java代码如下:packagecom.zeekling.arg; publicclassArgsTest{ publicstaticvoidmain(String[]args){ System.out.println(args[0]); } }复制编译之后执行下面命令(代码工程详见:https://git.zeekling.cn/zeekling/test_java):java-classpath/home/zeek/project/test_java/target/classescom.zeekling.arg.ArgsTest
以前版本的微信小游戏有一个飞机大战的游戏,学完python之后我试着写了下程序去基本实现这个游戏的部分功能,下面是小游戏飞机大战的python代码注:python中部分代码转自crossin编程教室importpygame importrandom fromsysimportexit#向sys模块借用个exit函数来退出程序 #定义一个敌机类 classEnemy: defrestar(self): #重置敌机位置与速度 self.x=random.randint(100,600) self.y=random.randint(-200,-80) self.speed=random.random()+0.4 def__init__(self): self.restar() self.image=pygame.image.load('enermy.jpg') defmove(self): ifself.y<800: self.y+=self.speed#向下移动 else: self.restar() #定义一个bullet类,封装子弹相关的数据和方法 clas
计算机的发展历史有多长?真正意义上的计算机诞生,距今也只有80多年的时间。80年,对于每一个人来说,是很长的时间,但对于整个历史来说,只是短短的一瞬间。从第一代电子计算机的发明,到今天互联网的蓬勃发展,不得不说是人类文明的一大奇迹。今天,小灰写下这篇文章,希望和大家一起感受这段波澜壮阔的历史进程。史前时代1642年科学家帕斯卡(B.Pascal)发明的机械计算机,可用于计算加减法。1834年英国数学家查尔斯·巴贝奇设计了分析机,采用打孔纸带作为输入输出方式。1842年阿达·洛芙莱斯(AdaLovelace)发明了第一个计算机程序,用于在分析机上计算伯努利数。她也因此成为了史上第一位程序员。诞生之初1936年艾伦·图灵提出了“图灵机”的理论模型,为现代计算机的逻辑工作方式奠定基础。1937年阿塔纳索夫-贝瑞计算机(Atanasoff–BerryComputer,简称ABC计算机)问世,它是世界上第一台电子计算机。1946年世界上第一台“可编程”计算机ENIAC诞生。教科书上说它是世界上第一台电子计算机,这是错误的。(实际上ABC计算机是第一)1949年世界上第一台“冯·诺依曼体系结构”的
思路:用朴素的方法实现的话,时间复杂度为O(n^n)。因为只需要从板的集合中取出最短的两块,并且把长度为两块长度之和的板加入集合中即可,所有使用优先队列就可以高效的实现。一共需要进行O(n)次O(logN)的操作,因此总的时间复杂度为O(Nlogn)。#include<bits/stdc++.h> #definemaxn100003 usingnamespacestd; intl[maxn]; boolsolve(){ llans=0; priority_queue<int,vector<int>,greater<int>>que; for(inti=0;i<n;i++){ que.push(l[i]); } while(que.size()>1){ intl1,l2; l1=que.top(); que.pop(); l2=que.top(); que.pop(); ans+=l1+l2; que.push(l1+l2); } cout<<ans<&
<viewclass='box'> <viewclass='row'bindtap='inputFocus'> <viewclass="{{index==active?'active':''}}"wx:for="{{Length}}"wx:key="index"> <inputtype="number"value="{{entryList.length>=index+1?entryList[index]:''}}"disabled></input> </view> </view> <inputtype="number"class='entry'maxlength="{{Length}}"focus="{{i
对于听力障碍人士来说,如果不能识别到一些紧急情况可能会带来危险,比如火警,或枪声等。 我们看到技术正在各个层面给人类生活带来便利,但是同时技术对特定人群仍然忽视,产品和服务仍然停滞不前。 一些公司在做出一些有益的尝试,如Kickstarter的项目,来自Furenexo的SoundSense。 此项目于2016年众筹,并且最终众筹并未成功。 这可能与产品本身的功能有关系,因为此产品仅仅对较大声音做出识别并通过振动,LED闪烁的方式提醒用户,但并不能较为精准的识别不同的声音类型,如告警和枪声等。 硬件,算法,和人工智能技术的持续进步现在已经有能力在设备端以极小的功耗支持声音事件的识别,如SensorySoundID即可支持边缘侧的离线声音事件的识别。如果在支持特定声音的识别后,如各种警报音,各种告警音,各种特定安全事件,如枪声,呼叫,爆炸,玻璃破碎等声音事件和场景识别后,再次众筹的话,产品应该会有机会获得更好的市场反馈。 详细内容,参见- https://www.sensory.com/sound-identification-scene-analysis/
第四篇云管理容器化设备星云(Nebula)架构介绍星云(Nebula)架构是基于以下的技术思路设计的: 安全限制多,甚至禁止开放任何端口与设备CPU无关,支持x86与ARM平台;与边缘应用无关,支持EdgeXFoundry和其他可以容器封装运行的框架;与数据分析云服务无关,支持私有部署和公有云服务;支持大批量安装,也允许小规模部署;支持在设备和云上的、端到端的多租户运行模式。 星云服务支持EdgeXFoundry边缘计算框架,已经开放免费公测,有意尝试的用户可以联系我们注册试用,并索取含详细信息的安装和使用手册。系统安装星云(Nebula)服务是基于容器化、微服务架构进行设计,缺省以虚机OVA方式安装。与上一篇介绍的Pallas架构类似,虽然Nebula服务是以OVA方式封装的,但它并不依赖于特定的虚拟化基础设施或者云平台才能安装。从技术上讲,完全可以将其OVA转换成其他格式,或者在任何支持OVA格式的云平台上安装。星云(Nebula)服务对资源的基本需求是:CPU:2个虚拟CPU核心内存:8GB存储:150GB它的安装过程与普通OVA类似,完成后就可以通过管理员登录了。厂商入口安装完
前言假如要你实现一个可以识别表达式的简易计算器,你会怎么实现?例如用户输入:3+5*(2-4)复制可以直接得出计算结果:-7。对于人类来说,我们很容易计算出来,因为我们从左往右看,看到后面括号时,知道括号内的计算优先级最高,因此可以先计算括号内的,然后反过来计算乘法,最后计算加法,得到最终结果。后缀表达式而对于计算机来说,实际也可以采用类似的顺序,先记录存储3为a,然后存储5为b,计算2-4结果存入c,再然后计算b*c存储d,最终计算a+d得到最终结果。而这种计算过程的操作顺序可描述如下(把操作符号放在操作数后面):3524-*+复制这种记法叫做后缀或逆波兰记法(而我们平常见到的叫中缀记法),它的特点是不需要用括号就能表示出整个表达式哪部分运算先进行,也就是说不需要考虑优先级,这非常符合计算机的处理方式。这种记法很容易使用我们前面介绍的栈来求值,但是前提是需要将中缀表达式先转换为后缀表达式。对于这种转换,我们也可以使用前面介绍的《栈-C语言实现》或者将要介绍的树来完成,因篇幅有限,本文不准备介绍。接下来将会介绍如何利用中缀表达式进行求值。利用栈实现中缀表达式求值前面也说到,所谓中缀表达
【新智元导读】百度搜索大换血:向海龙辞职,沈抖晋升为高级副总裁,搜索公司战略转型为移动生态事业群组。百度公司董事长兼CEO李彦宏宣布,搜索公司战略转型为移动生态事业群组,沈抖晋升为高级副总裁,全面负责移动生态事业群组。向海龙即日起辞去百度高级副总裁、搜索公司总裁职务。 北京时间5月17日(美国东部时间5月16日),百度公布了2019年第一季度未经审计的财务报告。本季度百度营收241亿元人民币(约合35.9亿美元),同比增长15%,移除业务拆分收入影响,同比增长21%。当天,百度公司董事长兼CEO李彦宏在内部财报信中还宣布,搜索公司战略转型为移动生态事业群组,沈抖晋升为高级副总裁,全面负责移动生态事业群组。向海龙即日起辞去百度高级副总裁、搜索公司总裁职务。向海龙本人回应:正常离职,将要创业。内部信全文各位百度同学: 2019已经过去了三分之一,我们身处的世界正在经历着急剧的变化。产业价值链不断受到冲击,新旧动能面临转换,外部环境的不确定、竞争的加剧,导致整个科技行业都进入震荡期,百度公司也不例外。从公司第一季度财报的表现来看,有喜有忧。一方面,我们的移动业务、人工智能业务增长势头依然
李根唐旭发自凹非寺 量子位报道|公众号QbitAI万万没想到,工作不见了。人工智能概念护体的无人商店——新零售运动的先锋,不单要消灭线上线下的界限,还有未来便利店里的人类工作。资本还在背后推波助澜:巨头们登场加码布局,创新项目纷纷热钱在手。各种无人商店简直忽如一夜春风来,千树万树梨花开。△温馨提示:图片可以点击放大?无人商店真的能颠覆零售么?与其急于回答这个问题,不如先跟量子位一起看看无人商店的现状。其实目前的无人商店模式并非完全相同,主要可以分为两类。“终极型”无人商店视频内容△新闻报道里的淘咖啡 以亚马逊的AmazonGo、阿里巴巴的淘咖啡等为代表,利用卷积神经网络、深度学习、机器视觉、生物识别,生物支付等实现完全商店完全无人化,并且在售卖商品的类别品类方面也限制不大。比如AmazonGo,以亚马逊帐号体系支撑,先人脸识别确认身份,再通过摄像头完成对物识别——跟踪判断顾客拿走了谁放下了谁,同时还有专门摄像头会通过手势识别判断顾客是否将货物置于购物篮还是只是看看然后放回原处,最后在通过顾客运动轨迹跟踪,为最后真正精确结算铺路。阿里巴巴刚展出的淘咖啡也类似,唯一的不同是,在最后结算阶段
随着大数据应用得日益广泛,与大数据相关的话题也越来越被大家所热议。在IT界,大数据同样是热门。作为学生党的我,最近也在研究关于大数据的内容。作为一个技术迷,总是会想尝试一些新鲜的东西。前一段时间学习了Hadoop之后,又想开始体验Spark。那么现在就讨论一下关于Spark的话题。Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台。它立足于内存计算,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和图计算等多种计算范式,是罕见的全能选手。就大数据集而言,对典型的迭代机器学习、即席查询(ad-hocquery)、图计算等应用,Spark版本比基于MapReduce、Hive和Pregel的实现快上十倍到百倍。其中内存计算、数据本地性(locality)和传输优化、调度优化等该居首功,也与设计伊始即秉持的轻量理念不无关系。那么,天下武功,唯快不破,看到这里当然是以一种很激动的心情想要去学习它了。那么问题也来了,通过百度等各种小道消息打听到,Spark是采用Scala语言设计的,要想学好Spark,Scala这一关必须是要过的,并且像Twitter、Linkedin等这些公司都
卡方检验/列联表资料的卡方检验在临床中非常常见!因为最近又有一批临床数据要进行统计,所以趁机把卡方检验的R语言实现再重新梳理一遍。这篇文章涵盖了孙振球,徐勇勇《医学统计学》第4版卡方检验章节中的所有内容。课本电子版和配套数据已上传到QQ群,需要的朋友加群下载即可。课本封面本期目录:不同类型卡方检验的选择四格表资料的卡方检验方法1方法2配对四格表资料的卡方检验四格表资料的Fisher确切概率法行x列表资料的卡方检验多个样本率的比较样本构成比的比较双向无序分类资料的关联性检验双向有序分组资料的线性趋势检验多个样本率间的多重比较Cochran-Mantel-Haenszel卡方统计量检验频数分布拟合优度卡方检验不同类型卡方检验的选择课本中关于四格表资料的卡方检验的方法选择以及RxC表资料的检验方法选择做了非常好的总结,在这里一并和大家分享一下:四格表资料的方法选择:当n(样本量)≥40且所有的T(期望频数)≥5时,用χ2检验的基本公式或四格表资料之χ2检验的专用公式;当P≈α时,改用四格表资料的Fisher确切概率法;当n≥40但有1≤T<5时,用四格表资料χ2检验的校正公式,或改用四
前言 最近有准备一篇干货,但想了想还是先放放,眼看年关将近,写点其他对大家有用的内容。 今年见了不少人被割韭菜,下半年尤为严重,这种情形甚至在技术行业蔓延,令人深感大环境的复杂变化,以及诸多同行对工作生活的紧张与紧迫感,弥漫着一股压抑的氛围。 所以我写这篇文章情真意切,希望大家不要做被割韭菜的人,副业可以适当了解、接触,但作为程序员请千万不要老想着副业。 我会通过本篇一一解析给大家听,若有不妥之处,还望多多包涵。 暂时没时间看的可以收藏一下,我相信本篇一定会对沉迷副业的你有所改变。 大环境 大环境一旦变化,所有人都会有感触,从疫情之后各行各业受冲击,我在广州的前同事那两年有不少都失业了,尤其是面向实体行业的技术公司,因为客户受到巨大冲击,他们的饭碗也随之打碎一地。 反倒是一些面向事业单位的技术公司侥幸逃过一劫,要么就是面向医疗行业这样的公司,因为疫情反而变成了刚需,项目反倒变多了。 再就是大公司会压榨中小公司的生存空间,比如我所在的三线城市,以前根本看不到阿里、腾讯、东软、比亚迪等这些大公司的影子,但疫情之后这些老油条立马把业务辐射了过来,和小城市的各种战略合作也随之而来,抢占
我们用vue-cli搭建的项目执行npmbuild后本地打开页面空白,如果才能查看npmrunbuild之后的结果呢 首先我们看一下提示 Tip:builtfilesaremeanttobeservedoveranHTTPserver. Openingindex.htmloverfile://won'twork.复制 这段话的意思就是说:构建文件务必放在一个HTTP服务器。直接打开index.html文件将不工作,那如何本地查看呢:(1)到项目目录下的config文件夹里的index.js文件中,将build对象下的assetsPublicPath中的“/”,改为“./”即可,就在前面加个点就可以了, 现在再重新打包一次npmrunbuild,刷新你的页面,就可以看到啦 (2)还有一种就是借助http-server: 首先我们需要安装它命令npminstallhttp-server-g,然后执行npmrunbuild,之后进入打包的目录我这里是cddist然后执行http-server就可以了
Makefile基本上就是【目标】(target)【关联】(dependencies)和【动作】三者所组成的一系列规则。而make就会根据Makefile的规则来决定如何编译(comile)和连接(link)程序。 自己编写(适用于小型项目): 其中Makefile为: 运用autoconf,automake自动生成makefile(适用于大型项目): 如图为automake,autoconf生成makefile的过程(简化)。 为一个项目源文件生成makefile并make的步骤如下: 操作在包含源文件的项目目录下进行。 (1).运行autoscan,生成文件configure.scan。 (2).修改configure.scan,改名为configure.ac。 (3).运行aclocal,生成aclocal.m4。 (4).运行autoheader,生成文件configure.h.in。configure.in里有宏AC_CONFIG_HEADER()时用。 (5).运行autoconf,生成configure。 (6).为源文件编写Makefie.am,每一个包含源文件
Kafka-Eagle框架可以监控Kafka集群的整体运行情况,在生产环境中经常使用。 6.1MySQL环境准备 Kafka-Eagle的安装依赖于MySQL,MySQL主要用来存储可视化展示的数据。如果集群中之前安装过MySQL可以跨过该步。 6.2Kafka环境准备 1)关闭Kafka集群 [atguigu@hadoop102scripts]$shkf.shstop --------停止hadoop102Kafka------- --------停止hadoop103Kafka------- --------停止hadoop104Kafka------- 复制 2)修改/opt/module/kafka/bin/kafka-server-start.sh命令中 修改如下参数值: if["x$KAFKA_HEAP_OPTS"="x"];then exportKAFKA_HEAP_OPTS="-Xmx1G-Xms1G" fi 复制 为 if["x$KAFKA_HEAP_OPTS"="x"];then exportKAFKA_HEAP_OPTS="-server-Xms2G-Xmx2G-
/*换肤*/varli=colorbtn.find('a');li.on('click',function(){varself=$(this);varv=self.attr("data-val");<!DOCTYPEhtml<htmllang="en"<head> <!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <metahttp-equiv="X-UA-Compatible"content="chrome=1,ie=edge"> <linkhref="skin/default/skin.css"rel="stylesheet"type="text/css"id="skin"/> <title>index</title> </head&