301 Moved Permanently

301 Moved Permanently


Powered by Tengine
tengine
  • 关于 运行javascript脚本 的搜索结果

回答

1.脚本语言。JavaScript 是一种解释型的脚本语言,C、C++等语言先编译后执行,而 JavaScript 是在程序的运行过程中逐行进行解释。 2.基于对象。JavaScript 是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。 3.简单。JavaScript 语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于 Java 基本语句和控制的脚本语言,其设计简单紧凑。 4.动态性。JavaScript 是一种采用事件驱动的脚本语言,它不需要经过 Web 服务器就可以对用户的输入做出响应。 5.跨平台性。JavaScript 脚本语言不依赖于操作系统,仅需要浏览器的支持。

茶什i 2019-12-02 03:18:10 0 浏览量 回答数 0

回答

1、脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。 2、基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。 3、简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。 4、动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。 5、跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支持JavaScript脚本语言,目前JavaScript已被大多数的浏览器所支持。

茶什i 2019-12-20 17:00:15 0 浏览量 回答数 0

回答

以前的JavaScript是不能多线程执行的,你在运行一段脚本的时候,如果有其它脚本正在请求,那这段脚本就只能等待。不过最新的html5支持Web worker功能,这个相当于让JavaScript可以多线程执行任务。

小旋风柴进 2019-12-02 02:14:08 0 浏览量 回答数 0

回答

首先的说明,非原生的程序,也就是脚本或者Java,.NET之类的都可以直接跨平台,前提是,有对应平台的运行时或者虚拟机,或者是Host,例如nodejs之类,JavaScript一般是运行在浏览器.而nodejs也就是一个JavaScript主机,类似与Microsoft的WSCript。所以只要有运行时什么的,打包很容易的。就从最简单的Shell脚本来说,在Windows上有Cygwin MSYS MSYS2移植了Bash,那么shell脚本就能够在Windows上运行,同样的在Linux上,如果有cmd以及对应命令的实现,那么Batch文件就能够在Linux中执行,但是,几乎没有多少人会将批处理移植到Linux,批处理本身来说,简单,还是简单。例如PowerShell,在Windows上非常强大,有些开发者期待能够在Linux Mac上运行,所以出现了一个Pash的开源项目,基于Mono框架。项目地址:http://pash.sourceforge.net/ Github:https://github.com/Pash-Project/Pash ,Shell脚本本质上的执行是主机解析然后执行的,这种的移植只要有解释器就行,也就是'host'。类似于Java,.NET语言,这种语言是编译型,但是生成的代码是一种虚拟机代码,JVM虚拟机,.NET虚拟机,执行的时候,虚拟机解释或者JIT,目前基本以JIT为主,这种移植的原理就得实现一个虚拟机,运行时,JIT能够把代码编译成对应的机器码。目前.NET Java都能实现跨平台。第三种,也就是wine之类的,这个最为复杂,例如Windows 目录下的system32目录下以来的dlls,wine都得实现,wine还得让这些dlls的后端能够调用Linux的API,借口等等,对于一个PE程序,wine还得实现PE程序(.exe)的加载,环境的初始化,还得虚拟出一个Windows NT的环境,wine目前已经能有不错的效果了。对于Windows,也有人基于Cygwin实现一个能够运行linux程序的host,目前没有最新消息。虚拟机不在本文讨论中。未完待续。

a123456678 2019-12-02 02:54:57 0 浏览量 回答数 0

回答

<1>.javascript减少网络传输。 在javascript这样的用户端脚本语言出现之前,传统的数据提交和验证工作均由用户端浏览器通过网络传输到服务器开发上进行。如果数据量很大,这对于网络和服务器开发的资源来说实在是一种无形的浪费。而使用javascript就可以在客户端进行数据验证。 <2>.javascript方便操纵html对象。 javascript可以方便地操纵各种页面中的对象,用户可以使用javascript来控制页面中各个元素的外观、状态甚至运行方式,javascript可以根据用户的需要“定制”浏览器,从而使网页更加友好。 <3>.javascript支持分布式应用 运算。 javascript可以使多种任务仅在用户端就可以完成,而不需要网络和服务器开发的参与,从而支持分布式应用 的运算和处理。

景凌凯 2020-02-06 15:05:18 0 浏览量 回答数 0

问题

【漏洞公告】微软“周二补丁日”—2017年7月

正禾 2019-12-01 20:55:31 18391 浏览量 回答数 1

回答

...svchost.exe fso操作 wscript.shellrun运行运行命令,执行svchost.exe 本地运行的后门。哈哈哈   这个是设置脚本语言的一般是asp项目使用,删了也没关系一般服务器都会默认vbscript 浏览器默认javascript回复 @在我的歌声里:用浏览器打开的话删了没关系啊备份一下然后放心的删大不了再还原好的,如果我在jsp中把这段代码删掉,会不会影响响应式和UI的效果啊???

爱吃鱼的程序员 2020-06-08 15:41:40 0 浏览量 回答数 0

回答

如下; <input type="text" id="test1" value=""/> js document.getElementById("test1").readOnly="readonly";只读 document.getElementById("test1").readOnly="";可读 document.getElementById("test1").disabled="disabled";失效 document.getElementById("test1").disabled="";有效 JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。 在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。[1]  为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。 答案来源网路哦,供您参考

问问小秘 2019-12-02 02:13:04 0 浏览量 回答数 0

回答

1.defer属性 浏览器会并行下载 file.js和其它有 defer 属性的script,而不会阻塞页面后续处理。defer属性在IE 4.0中就实现了,超过10多年了!Firefox从 3.5 开始支持defer属性 。 注:所有的defer脚本保证是按顺序依次执行的。 2.async属性 async属性是HTML5新增的。作用和defer类似,但是它将在下载后尽快执行,不能保证脚本会按顺序执行。它们将在onload 事件之前完成。 Firefox3.6、Opera 10.5、IE 9和 最新的Chrome 和 Safari 都支持 async 属性。可以同时使用 async 和 defer,这样IE 4之后的所有IE 都支持异步加载。 3.动态创建DOM方式 (使用的最多) 1 2 3 4 5 6 7 8 9 10 11 12 13 PS: 这里插一句addEventListener() 也是常考的知识点之一: addEventListener() 方法用于向指定元素添加事件句柄。 使用 removeEventListener() 方法来移除 addEventListener() 方法添加的事件句柄。 语法:element.addEventListener(event, function, useCapture) event (必须)字符串,指定事件名。注意: 不要使用 “on” 前缀。 例如,使用 “click” ,而不是使用 “onclick”。 function (必须)指定要事件触发时执行的函数。当事件对象会作为第一个参数传入函数。 事件对象的类型取决于特定的事件。例如, “click” 事件属于 MouseEvent(鼠标事件) 对象。 useCapture (可选)布尔值,指定事件是否在捕获或冒泡阶段执行。【true:事件句柄在捕获阶段执行; false:默认,事件句柄在冒泡阶段执行】 1 2 3 4 5 6 7 8 该实例使用 addEventListener() 方法来向按钮添加点击事件。 点我 效果如图: 4.使用Jquery的getScript()方法 1 2 3 $.getScript("outer.js",function(){//回调函数,成功获取文件后执行的函数 console.log("脚本加载完成") }); 从源码可以看出,这个方法最后还是调用了jQuery.ajax()来请求了js文件的。 5.使用setTimeout延迟方法的加载时间 延迟加载js代码,给网页加载留出时间 1 2 3 4 5 6 7 8 9 10 6.让js最后加载 例如引入外部js脚本文件时,如果放入html的head中,则页面加载前该js脚本就会被加载入页面,而放入body中,则会按照页面从上倒下的加载顺序来运行javascript的代码~~~ 所以我们可以把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度。 上述方法5,6也会偶尔让你收到Google页面速度测试工具的“延迟加载javascript”警告。所以这里的解决方案将是来自Google帮助页面的推荐方案。 1 2 3 4 5 6 7 8 9 10 11 12 //这些代码应被放置在标签前(接近HTML文件底部) 这段代码意思是等到整个文档加载完后,再加载外部文件“defer.js”。 使用此段代码的步骤: 复制上面代码 粘贴代码到HTML的标签前 (靠近HTML文件底部) 修改“defer.js”为你的外部JS文件名 确保你文件路径是正确的。例如:如果你仅输入“defer.js”,那么“defer.js”文件一定与HTML文件在同一文件夹下。 注意:这段代码直到文档加载完才会加载指定的外部js文件。因此,不应该把那些页面正常加载需要依赖的javascript代码放在这里。而应该将JavaScript代码分成两组。一组是因页面需要而立即加载的javascript代码,另外一组是在页面加载后进行操作的javascript代码(例如添加click事件或其他东西)。这些需等到页面加载后再执行的JavaScript代码,应放在一个外部文件,然后再引进来。

景凌凯 2020-04-03 22:00:38 0 浏览量 回答数 0

问题

我开发了一个云爬虫开发框架,可以在云上编写和运行爬虫

cangbaotu 2019-12-01 21:19:41 3887 浏览量 回答数 3

回答

“Script error.”有时也被称为跨域错误。当网站请求并执行一个托管在第三方域名下的脚本时,就可能遇到该错误。最常见的情形是使用 CDN 托管 JS 资源。 为了更好地理解,假设以下 HTML 页面部署在 http://test.com 域名下: 假设 foo 方法调用了一个未定义的 bar 方法: // another-domain.com/app.js function foo() { bar(); // ReferenceError: bar is not a function } 页面运行之后,捕获到的异常信息如下: "Script error.", "", 0, 0, undefined 其实这并不是一个 JavaScript Bug。出于安全考虑,浏览器会刻意隐藏其他域的 JS 文件抛出的具体错误信息,这样做可以有效避免敏感信息无意中被不受控制的第三方脚本捕获。因此,浏览器只允许同域下的脚本捕获具体错误信息,而其他脚本只知道发生了一个错误,但无法获知错误的具体内容。 请参考 Webkit 源码: bool ScriptExecutionContext::sanitizeScriptError(String& errorMessage, int& lineNumber, String& sourceURL) { KURL targetURL = completeURL(sourceURL); if (securityOrigin()->canRequest(targetURL)) return false; errorMessage = "Script error."; sourceURL = String(); lineNumber = 0; return true; } 了解了 “Script error.”的产生原因之后,接下来看看如何解决这个问题。 解法 1:开启 CORS(Cross Origin Resource Sharing,跨域资源共享) 为了跨域捕获 JavaScript 异常,可执行以下两个步骤: 添加 crossorigin="anonymous" 属性。 此步骤的作用是告知浏览器以匿名方式获取目标脚本。这意味着请求脚本时不会向服务端发送潜在的用户身份信息(例如 Cookies、HTTP 证书等)。 添加跨域 HTTP 响应头。 Access-Control-Allow-Origin: * 或者 Access-Control-Allow-Origin: http://test.com 说明 大部分主流 CDN 默认添加了 Access-Control-Allow-Origin 属性。以下是阿里 CDN 的示例: $ curl --head https://retcode.alicdn.com/retcode/bl.js | grep -i "access-control-allow-origin" => access-control-allow-origin: * 完成上述两步之后,即可通过 window.onerror 捕获跨域脚本的报错信息。回到之前的案例,页面重新运行后,捕获到的结果是: => "ReferenceError: bar is not defined", "http://another-domain.com/app.js", 2, 1, [Object Error] 解法 2(可选):try catch 难以在 HTTP 请求响应头中添加跨域属性时,还可以考虑 try catch 这个备选方案。 在之前的示例 HTML 页面中加入 try catch: 再次运行,输出结果如下: => ReferenceError: bar is not defined at foo (http://another-domain.com/app.js:2:3) at http://test.com/:15:3 => "Script error.", "", 0, 0, undefined 可见 try catch 中的 Console 语句输出了完整的信息,但 window.onerror 中只能捕获“Script error”。根据这个特点,可以在 catch 语句中手动上报捕获的异常。 // 参考本文末尾的相关文档“前端监控 API 使用指南” __bl.error(error, pos); 说明 尽管 try catch 方法可以捕获部分异常,但推荐采用解法 1。

保持可爱mmm 2020-03-28 20:31:54 0 浏览量 回答数 0

回答

从PHP 5.1.0开始,您可以使用date_default_timezone_set()函数设置脚本中所有日期/时间函数使用的默认时区。 对于MySql(引自“ MySQL服务器时区支持”页面) 在MySQL 4.1.3之前,服务器只能在启动时设置的系统时区运行。从MySQL 4.1.3开始,服务器维护多个时区设置,其中一些可以在运行时修改。 您感兴趣的是时区的每个连接设置,您将在脚本开始时使用该设置 SET timezone = 'Europe/London'; 至于检测客户端时区设置,您可以使用一些JavaScript来获取该信息并将其保存到cookie,然后在后续页面读取中使用它来计算正确的时区。 //Returns the offset (time difference) between Greenwich Mean Time (GMT) //and local time of Date object, in minutes. var offset = new Date().getTimezoneOffset(); document.cookie = 'timezoneOffset=' + escape(offset); 或者,您可以为用户提供选择自己的时区的选择权。

保持可爱mmm 2019-12-02 03:15:28 0 浏览量 回答数 0

问题

最大限度利用 JavaScript 和 Ajax 性能:报错

kun坤 2020-06-05 22:56:50 0 浏览量 回答数 1

问题

jQuery/Javascript 变量问题

a123456678 2019-12-01 20:25:10 726 浏览量 回答数 1

回答

技巧: 《程序员面试宝典》这本书有Java、C++等各种版本,主要介绍笔试面试常考的题,有些知识点真的很细,非常值得看。 数据结构和算法: 《编程之美》里面的编程题经常考到,有些可能比较难。 《剑指offer》这个是强烈推荐的,掌握解决问题的思路很重要。比如以空间换时间、动态规划等。 《数据结构》这个不用多说,链表、树、图是经常考到的。 《算法导论》有精力的话,可以选择性的看一看。 《编程珠玑》 语言: 《深入浅出MFC》 《深度探索C++对象模型》介绍C++面向对象中的构造函数、虚函数等,看完之后能理解程序的运行结果了。 《C++ Primer》大量C++的基础,不过基础不太好的同学建议看谭浩强的《C++程序设计》。 《Effective C++》 《Java编程思想》 《大象Thinking in UML》 《JavaScript 权威指南》 《C++标准程序库》 《STL源码剖析》 设计模式: 《设计模式》 《HeadFirst设计模式》 脚本语言: 《Python学习手册》 掌握一门脚本语言很必要,最好有工程实践。 操作系统方面: 《Linux程序设计-鸟哥的私房菜》。 《UNIX网络编程》 不但要会基本命令,最好能在linux环境下有编程经验。 《深入理解计算机系统》个人觉得这本书并不好。 数据库: 没有发现更好的,要会基本的SQL命令。

沉默术士 2019-12-02 01:19:49 0 浏览量 回答数 0

问题

JS脚本运行报错,被调函数的形参总是提示未定义?报错

爱吃鱼的程序员 2020-06-22 22:15:06 0 浏览量 回答数 1

回答

您有一个正确的想法,所以这是继续的方法:onclick处理程序在客户端的浏览器中运行,因此您不能直接调用PHP函数。相反,您需要添加一个JavaScript函数(如上所述),该函数使用AJAX调用PHP脚本并检索数据。使用jQuery,您可以执行以下操作: One Two Three 然后,将您的PHP代码放入一个单独的文件中:(data.php在上面的示例中已将其称为) 0 ) { $row = mysql_fetch_array( $results ); echo $row['para']; } ?>来源:stack overflow

保持可爱mmm 2020-05-17 11:43:12 0 浏览量 回答数 0

回答

我们在《深入分析Java的编译原理》中提到过,为了让Java语言具有良好的跨平台能力,Java独具匠心的提供了一种可以在所有平台上都能使用的一种中间代码——字节码(ByteCode)。 有了字节码,无论是哪种平台(如Windows、Linux等),只要安装了虚拟机,都可以直接运行字节码。 同样,有了字节码,也解除了Java虚拟机和Java语言之间的耦合。这话可能很多人不理解,Java虚拟机不就是运行Java语言的么?这种解耦指的是什么? 其实,目前Java虚拟机已经可以支持很多除Java语言以外的语言了,如Kotlin、Groovy、JRuby、Jython、Scala等。之所以可以支持,就是因为这些语言也可以被编译成字节码。而虚拟机并不关心字节码是有哪种语言编译而来的。 经常使用IDE的开发者可能会发现,当我们在Intelij IDEA中,鼠标右键想要创建Java类的时候,IDE还会提示创建其他类型的文件,这就是IDE默认支持的一些可以运行在JVM上面的语言,没有提示的,可以通过插件来支持。 目前,可以直接在JVM上运行的语言有很多,今天介绍其中比较重要的九种。每种语言通过一段『HelloWorld』代码进行演示,看看不同语言的语法有何不同。 Kotlin Kotlin是一种在Java虚拟机上运行的静态类型编程语言,它也可以被编译成为JavaScript源代码。Kotlin的设计初衷就是用来生产高性能要求的程序的,所以运行起来和Java也是不相上下。Kotlin可以从 JetBrains InteilliJ Idea IDE这个开发工具以插件形式使用。 Hello World In Kotlin fun main(args: Array<String>) { println("Hello, world!") } Groovy Apache的Groovy是Java平台上设计的面向对象编程语言。它的语法风格与Java很像,Java程序员能够很快的熟练使用 Groovy,实际上,Groovy编译器是可以接受完全纯粹的Java语法格式的。 使用Groovy的一个重要特点就是使用类型推断,即能够让编译器能够在程序员没有明确说明的时候推断出变量的类型。Groovy可以使用其他Java语言编写的库。Groovy的语法与Java非常相似,大多数Java代码也匹配Groovy的语法规则,尽管可能语义不同。 Hello World In Groovy static void main(String[] args) { println('Hello, world!'); } Scala Scala是一门多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala经常被我们描述为多模式的编程语言,因为它混合了来自很多编程语言的元素的特征。但无论如何它本质上还是一个纯粹的面向对象语言。它相比传统编 程语言最大的优势就是提供了很好并行编程基础框架措施了。Scala代码能很好的被优化成字节码,运行起来和原生Java一样快。 Hello World In Scala object HelloWorld { def main(args: Array[String]) { System.out.println("Hello, world!"); } } Jruby JRuby是用来桥接Java与Ruby的,它是使用比Groovy更加简短的语法来编写代码,能够让每行代码执行更多的任务。就和Ruby一样,JRuby不仅仅只提供了高级的语法格式。它同样提供了纯粹的面向对象的实现,闭包等等,而且JRuby跟Ruby自身相比多了很多基于Java类库 可以调用,虽然Ruby也有很多类库,但是在数量以及广泛性上是无法跟Java标准类库相比的。 Hello World In Jruby puts 'Hello, world!' Jython Jython,是一个用Java语言写的Python解释器。Jython能够用Python语言来高效生成动态编译的Java字节码。 Hello World In Jython print "Hello, world!" Fantom Fantom是一种通用的面向对象编程语言,由Brian和Andy Frank创建,运行在Java Runtime Environment,JavaScript和.NET Common Language Runtime上。其主要设计目标是提供标准库API,以抽象出代码是否最终将在JRE或CLR上运行的问题。 Fantom是与Groovy以及JRuby差不多的一样面向对 象的编程语言,但是悲剧的是Fantom无法使用Java类库,而是使用它自己扩展的类库。 Hello World In Fantom class Hello { static Void main() { echo("Hello, world!") } } Clojure Clojure是Lisp编程语言在Java平台上的现代、函数式及动态方言。 与其他Lisp一样,Clojure视代码为数据且拥有一套Lisp宏系统。 虽然Clojure也能被直接编译成Java字节码,但是无法使用动态语言特性以及直 接调用Java类库。与其他的JVM脚本语言不一样,Clojure并不算是面向对象的。 Hello World In Clojure (defn -main [& args] (println "Hello, World!")) Rhino Rhino是一个完全以Java编写的JavaScript引擎,目前由Mozilla基金会所管理。 Rhino的特点是为JavaScript加了个壳,然后嵌入到Java中,这样能够让Java程序员直接使用。其中Rhino的JavaAdapters能够让JavaScript通过调用Java的类来实现特定的功能。 Hello World In Rhino print('Hello, world!') Ceylon Ceylon是一种面向对象,强烈静态类型的编程语言,强调不变性,由Red Hat创建。 Ceylon程序在Java虚拟机上运行,​​可以编译为JavaScript。 语言设计侧重于源代码可读性,可预测性,可扩展性,模块性和元编程性。 Hello World In Ceylon shared void run() { print("Hello, world!"); } 总结 好啦,以上就是目前主流的可以在JVM上面运行的9种语言。加上Java正好10种。如果你是一个Java开发,那么有必要掌握以上9中的一种,这样可以在一些有特殊需求的场景中有更多的选择。推荐在Groovy、Scala、Kotlin中选一个。

montos 2020-06-01 17:04:25 0 浏览量 回答数 0

问题

18款在线代码片段测试工具

老毛哈哈 2019-12-01 21:05:05 9388 浏览量 回答数 0

回答

富文本内容要替换掉js代码主要防止xss,不是防止注入,防注入参数化写数据库就好了,或者将单引号替换为实体对象在做一些网站(特别是bbs之类)时,经常会有充许用户输入html样式代码,却禁止脚本的运行的需求, 以达到丰富网页样式,禁止恶意代码的运行。 当然不能用 htmlencode 和 htmldecode 方法,因为这样连基本的html代码会被禁止掉。 我在网上搜索,也没有找到好的解决办法,倒是收集了一些脚本攻击的实例: 其它基本控件的 on...事件中的代码 iframe 和 frameset 中载入其它页面造成的攻击 有了这些资料后,事情就简单多了,写一个简单的方法,用正则表达式把以上符合几点的代码替换掉: -C# public string wipescript(string html) { system.text.regularexpressions.regex regex1 = new system.text.regularexpressions.regex(@"<script[\s\S]+</script *>",system.text.regularexpressions.regexoptions.ignorecase); system.text.regularexpressions.regex regex2 = new system.text.regularexpressions.regex(@" href *= *[\s\S]*script *:",system.text.regularexpressions.regexoptions.ignorecase); system.text.regularexpressions.regex regex3 = new system.text.regularexpressions.regex(@" on[\s\S]*=",system.text.regularexpressions.regexoptions.ignorecase); system.text.regularexpressions.regex regex4 = new system.text.regularexpressions.regex(@"<iframe[\s\S]+</iframe *>",system.text.regularexpressions.regexoptions.ignorecase); system.text.regularexpressions.regex regex5 = new system.text.regularexpressions.regex(@"<frameset[\s\S]+</frameset *>",system.text.regularexpressions.regexoptions.ignorecase); html = regex1.replace(html, ""); //过滤<script></script>标记 html = regex2.replace(html, ""); //过滤href=javascript: (<a>) 属性 html = regex3.replace(html, " _disibledevent="); //过滤其它控件的on...事件 html = regex4.replace(html, ""); //过滤iframe html = regex5.replace(html, ""); //过滤frameset return html; } 此方法输入可能包含脚本的html代码,返回则就是干净的代码了。 c#中过滤html的正则表达式 TempContent 表示包含有html的字符串; TempContent = System.Text.RegularExpressions.Regex.Replace(TempContent,"<[^>]+>","");至少一个 TempContent = System.Text.RegularExpressions.Regex.Replace(TempContent,"<[^>]*>","");任意个

小旋风柴进 2019-12-02 02:02:39 0 浏览量 回答数 0

回答

网页上有错误的解决方法: 1、点击“开始”菜单,打开“运行”。 2、输入regsvr32 jscript.dll后选择“确定”。 出现提示后,点击确定。 3、再次输入regsvr32 vbscript.dll选择“确定”。 再一次出现提示后,确定。 4、经过以上两次成功提示,说明已成功修复IE组件,将浏览器的过滤等功能关闭后,清除一下浏览器的缓存(工具->Internet选项->删除Cookies),点浏览器上的工具——然后再选择最下面的Internet选项,再点 Internet删除文件(记得勾上删除所有脱机内容),确定后,然后再重新打开浏览器尝试。 网页上有错误的原因 1、Javascript出现错误或服务器错误会导致网页上有错误。 2、第一个可能性比较大的是网页本身的问题。也就是服务端的问题。 3、如今很多的网站页面的代码都是套用一些模板,而原模板的所有js(javascript)脚本可能又没有被完全用到。 4、加之设计者的水平或是疏忽等问题。导致在页面上找不到js对象。就会显示出网页有问题的现象。 5、第二个可能是电脑本身问题。比如浏览器的版本。或是他的页面需要某些插件或组件。而你的电脑上没有安装或是被屏蔽。也可能造成这个现象。 “答案来源于网络,供您参考” 希望以上信息可以帮到您!

牧明 2019-12-02 02:16:53 0 浏览量 回答数 0

问题

【精品问答】python百大常见问题与答案详解

祖安文状元 2020-02-24 17:56:41 363 浏览量 回答数 1

回答

js 的阻塞特性:所有浏览器在下载 JS 的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。直到 JS 下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。为了提高用户体验,新一代浏览器都支持并行下载 JS,但是 JS 下载仍然会阻塞其它资源的下载(例如.图片,css文件等)。 由于浏览器为了防止出现 JS 修改 DOM 树,需要重新构建 DOM 树的情况,所以就会阻塞其他的下载和呈现。 嵌入 JS 会阻塞所有内容的呈现,而外部 JS 只会阻塞其后内容的显示,2 种方式都会阻塞其后资源的下载。也就是说外部样式不会阻塞外部脚本的加载,但会阻塞外部脚本的执行。 CSS 怎么会阻塞加载了?CSS 本来是可以并行下载的,在什么情况下会出现阻塞加载了(在测试观察中,IE6 下 CSS 都是阻塞加载) 当 CSS 后面跟着嵌入的 JS 的时候,该 CSS 就会出现阻塞后面资源下载的情况。而当把嵌入 JS 放到 CSS 前面,就不会出现阻塞的情况了。 根本原因:因为浏览器会维持 html 中 css 和 js 的顺序,样式表必须在嵌入的 JS 执行前先加载、解析完。而嵌入的 JS 会阻塞后面的资源加载,所以就会出现上面 CSS 阻塞下载的情况。 嵌入JS应该放在什么位置? 1. 放在底部,虽然放在底部照样会阻塞所有呈现,但不会阻塞资源下载。 2. 如果嵌入JS放在head中,请把嵌入JS放在CSS头部。 3. 使用 defer(只支持IE) 4. 不要在嵌入的JS中调用运行时间较长的函数,如果一定要用,可以用 setTimeout 来调用 Javascript无阻塞加载具体方式: 1. 将脚本放在底部。 还是放在head中,用以保证在js加载前,能加载出正常显示的页面。

小柯卡力多 2019-12-02 03:23:33 0 浏览量 回答数 0

回答

步骤1 首先打开ajax-comment-pager文件夹里的ajax-comment-pager.php文件,这个文件就是整个插件的核心。我们可以看到细心的MG12对插件的每一个模块都做了注释。 我们要做的是先分析这个插件是怎么运行的,程序结构是怎样的。 下面解释一下各个模块的作用: l10n:提供插件的本地化语言,在整合是可以忽略; options:用于配置插件参数; AJAX function:处理AJAX请求,并返回相应的结果,核心中的核心; add to WordPress:加载插件运行所需的JS脚本和CSS样式文件。 到这里,插件的运行机制已经呼之欲出。 首先由add to WordPress加载所需的文件->在点击评论翻页时发出AJAX请求->AJAX function模块获取options里的参数,处理AJAX请求并返回结果->add to WordPress事先加载的脚本把AJAX function返回的结果插入到评论列表位置。 步骤2 在充分了解插件的结构以后,我们开始提取所需的代码,先把cpage_ajax和commentpager_head改名,我给这两个函数名同意加上了“bolo_”前缀。这一步是为了避免和原来的插件产生冲突,改名的方法推荐先复制原来的函数名,改名后用新函数名全部替换原函数名。 接下来把ajax-comment-pager.css和ajax-comment-pager.js复制到主题文件夹里。水平高一点的童鞋们,在这一步就可以整合css和js文件了,如果你不会整合这两个文件则需要在主题的header.php里加载这两个文件,并且在加载ajax-comment-pager.js前需要先输出以下代码: <script type="text/javascript">//< ![CDATA[ var ajaxCommnetsPagerCommentsId = "thecomments" //thecomments是评论列表的ID,请根据自己的主题自行修改 var ajaxCommnetsPagerAjaxLoader = "Loading..." //]]></script> 步骤3 把 AJAX function 模块的所有代码复制到主题的functions.php里,我们还需要修改一下。 我们的目的是直接把最适合我们主题的参数整合进去,所以options,callback method name 和 type 这几部分都可以删去,并充新补上$callback和$type这两个变量。 $callback是自定义评论样式的名字,一般是custom_comment,请自行查看主题配置。 $type是翻页是需要显示的内容,只显示评论则是&type=comment,只显示pingback则是&type=pings,两者都显示则留空。 在这里我设置为: $callback = 'custom_comment'; //我的主题里评论样式名为custom_comment $type = '&type=comment'; //只显示评论 步骤4 在打开comments.php,在合适的地方加上: <span id="cp_post_id">< ?php echo $post->ID; ?></span> 如果你不知道什么地方是“合适的地方”,那就把这句代码加到任一个前吧。

小旋风柴进 2019-12-02 01:59:33 0 浏览量 回答数 0

问题

前端面试经典题目合集

小柯卡力多 2019-12-01 22:06:33 14 浏览量 回答数 0

回答

哪种框架(以任何语言)最适合Ember.js的答案基本上是:“任何”。您可能将Ember视为具有文档脚本模式的框架(例如Backbone或普通的旧jQuery),其中服务器呈现文档,而javascript逐渐将其行为增强为静态的内容。最好将Ember视为微型Cocoa / Android,将浏览器定位为运行时环境,而不是特定的移动平台。 无论环境如何,客户端应用程序都适用于任何语言和任何服务器应用程序Web框架。只要该应用使用HTTP并支持发送数据(不仅是呈现页面),就可以了。您甚至不必将JSON用作数据格式,尽管这是当今大多数人选择的格式。 要回答您的其他问题: 身份验证是网络上的服务器问题,因此Ember与它无关。将整个应用程序放在登录页面后面,然后使用所需的任何身份验证机制。如果需要在身份验证之前公开应用程序的某些部分,我只需要在身份验证之前和之后公开一个完全不同的版本(或具有不同路由器的相同版本)。否则,您将发现isAuthenticated乱堆的检查路线和模板。 您可能会为浏览器编写一个完整的客户端应用程序,其原因是任何人都可以在任何地方构建客户端应用程序的原因:有状态性和数据传输成本。Web设计无状态。您可以通过会话获得基本的状态信息,如果您的应用程序可以看作一系列文档,那就足够了。只需完全跳过具有客户端应用程序的步骤,然后将客户端设备视为愚蠢的文档查看器即可。如果您有更复杂的状态需求,则需要在客户端环境本身中进行处理。一旦确定这是必要的,您就会发现发送数据比发送页面或页面片段便宜得多。因此,您的服务器应用程序(以您想要的任何设计模式)都将公开数据,而客户端应用程序(以MVC的模式)将消耗,显示,并允许浏览和与这些数据进行交互。如果您的客户端位于在iPhone上运行的ObjC / Cocoa,在Android上运行的Java,在Roku上运行的BrightScript,在浏览器中运行的Ember或什至为需要远程数据的Windows应用程序供电的C#中,这都是正确的。

祖安文状元 2020-02-23 16:08:06 0 浏览量 回答数 0

问题

适用于AMH面板的Nginx平滑升级Tengine1.4.6

thisisdong 2019-12-01 21:15:39 8031 浏览量 回答数 1

回答

详细解答可以参考官方帮助文档 Q: ossfs适合什么样的程序? ossfs能把oss bucket挂载到本地,如果您使用的软件没有支持OSS,但您又想让数据能自动同步到OSS,那么ossfs是很好的选择。 Q: ossfs有什么局限性? 由于数据需要经过网络同步到云端,ossfs在性能和功能上可能与本地文件系统有差距。如果您想让数据库等对io要求很高的应用跑在ossfs挂载的盘上,请慎重考虑。和本地文件系统具体差异: 随机或者追加写文件会导致整个文件的重写。 元数据操作,例如list directory,性能较差,因为需要远程访问OSS服务器。 文件/文件夹的rename操作不是原子的。 多个客户端挂载同一个oss bucket时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等等。 不支持hard link。 Q: ossfs一定要阿里云的机器才能用么? ossfs不限制一定要阿里云的内网才可以使用,外网机器依然可以使用。 Q: ossfs能不能同时挂载多个OSS bucket? 可以的,在passwd-ossfs文件中写入多个OSS配置信息即可。支持不同帐号的OSS。 Q: 我在yum/apt-get安装ossfs,遇到conflicts with file from package fuse-devel的错误,请问是怎么回事? 您的系统中存在老版本的fuse,请先使用相关的包管理器卸载,再重新安装ossfs。 Q: ossfs工作不正常,如何debug? 您可以使用在挂载时,加上-d -o f2参数,ossfs会把日志写入到系统日志中。在centos系统中,在/var/log/messages中。 您也可以在挂载时使用-f -d -o f2参数,ossfs会把日志输出到屏幕上。 Q: 为什么我在mount时遇到 ossfs: unable to access MOUNTPOINT /tmp/ossfs: Transport endpoint is not connected这样的错误? 请先umount对应的目录。 请检查您在使用ossfs挂载时,填入的url参数是否正确,是否和bucket/access key id/access key secret匹配。 特别注意:url中不包含bucket的名字。例如:您在oss控制台中看到bucket的域名是这样的:ossfs-test-1.oss-cn-hangzhou.aliyuncs.com。那么填入的url则是:http://oss-cn-hangzhou.aliyuncs.com。 Q: ossfs提示ossfs: unable to access MOUNTPOINT /tmp/odat: No such file or directory 这是您未创建该目录导致的,在挂载前需要创建对应目录。 Q: 我把bucket挂载到本地后,ls目录,却收到operation not permitted错误,这是为什么? 请检查您的bucket中,是否包含目录名含有不可见字符的OSS object。文件系统对文件/目录名有更严格的限制,因此会收到上述错误。使用其他工具对这些object重命名后,ls就能正确显示目录内容了。 Q: 我的一个目录下有非常多的文件,为什么ls该目录很慢? 假设一个目录下有n个文件,那么ls该目录至少需要n次OSS http requests。在文件非常多的时候,这可能造成严重的性能问题。 您可以采用下面两个办法优化: 通过-omax_stat_cache_size=xxx参数增大stat cache的size,这样第一次ls会较慢,但是后续的ls就快了,因为文件的元数据都在本地cache中。默认这个值是1000,大约消耗4MB内存,请根据您机器内存大小调整为合适的值。 使用ls -f命令,这个命令会消除与OSS的n次http请求。 具体参见issue 13。 Q: ossfs挂载时如何设置权限? 如果要允许其他用户访问挂载文件夹,可以在运行ossfs的时候指定allow_other参数: ossfs your_bucket your_mount_point -ourl=your_endpoint -o allow_other 为什么使用allow_other参数,仍然不能访问文件? 注意:allow_other是赋予挂载目录其他用户访问的权限,不是里面的文件!如果您要更改文件夹中的文件,请用chmod命令。 allow_other默认赋予挂载目录777权限,我想让挂载目录的权限为770,该怎么办? 可以通过umask来设置,参见这里。 Q: 如果要使挂载的文件夹(/tmp/ossfs)属于某个user: 方法一: 如果要使挂载的文件夹(/tmp/ossfs)属于某个user,则需要以user的身份创建挂载文件夹和使用ossfs: sudo -u user mkdir /tmp/ossfs sudo -u user ossfs bucket-name /tmp/ossfs 方法二: 首先通过id命令获得指定用户的uid/gid信息。例如获取www用户的uid/gid信息:id www;然后挂载时指定uid/gid参数: ossfs your_bucket your_mountpoint -ourl=your_url -ouid=your_uid -ogid=your_gid 注意:uid/gid都是数字。 Q: 我不是root用户,如何umount ossfs挂载的目录 fusermount -u your_mountpoint Q: 如何开机自动挂载ossfs? Step 1 首先请参考使用说明,把bucket name,access key id/secret等信息写入/etc/passwd-ossfs,并将该文件权限修改为640。 echo your_bucket_name:your_access_key_id:your_access_key_secret > /etc/passwd-ossfs chmod 640 /etc/passwd-ossfs Step 2 接下来针对不同的系统版本,设置方式有所不同 Step 2A 通过fstab的方式自动mount(适用于ubuntu14.04, centos6.5) 在/etc/fstab中加入下面的命令 ossfs#your_bucket_name your_mount_point fuse _netdev,url=your_url,allow_other 0 0 其中上述命令中的your_xxx信息需要根据您的bucket name等信息填入。 保存/etc/fstab文件。执行mount -a命令,如果没有报错,则说明设置正常。 到这一步,ubuntu14.04就能自动挂载了。centos6.5还需要执行下面的命令: chkconfig netfs on Step 2B 通过开机自启动脚本mount(适用于centos7.0及以上的系统) 在/etc/init.d/目录下建立文件ossfs,把模板文件中的内容拷贝到这个新文件中。并将其中的your_xxx内容改成您自己的信息。 执行命令:chmod a+x /etc/init.d/ossfs 上述命令是把新建立的ossfs脚本赋予可执行权限。您可以执行该脚本,如果脚本文件内容无误,那么此时oss中的bucket已经挂载到您指定的目录下了。 执行命令:chkconfig ossfs on 上述命令是把ossfs启动脚本作为其他服务,开机自动启动。 好了,现在ossfs就可以开机自动挂载了。总结起来,如果您是ubuntu14.04和centos6.5,您需要执行Step 1 + Step 2A;如果您是centos7.0系统,您需要执行Step 1 + Step 2B。 Q: 遇到fusermount: failed to open current directory: Permission denied错误如何解决? 这是fuse的一个bug,它要求当前用户对当前目录(非挂载目录)有读权限。解决的办法就是cd到一个有读权限的目录再运行ossfs命令 Q: 我需要以www用户挂载ossfs,此时如何设置开机自动挂载? 参照上面的问题的解答,Step 1照做,对Step 2B稍加修改,修改/etc/init.d/ossfs中的命令为: sudo -u www ossfs your_bucket your_mountpoint -ourl=your_url 设置自启动脚本中允许使用sudo,编辑/etc/sudoers,将其中的Defaults requiretty这行改为#Defaults requiretty(注释掉) Q: 遇到fusermount: failed to open current directory: Permission denied错误如何解决? 这是fuse的一个bug,它要求当前用户对当前目录(非挂载目录)有读权限。解决的办法就是cd到一个有读权限的目录再运行ossfs命令。 Q: 使用ECS挂载ossfs,如何避免因后台程序扫描文件而产生费用? 程序扫描ossfs挂载的目录,会转换成向OSS的请求,如果请求次数很多,会产生费用(1分钱/1万次)。如果是updatedb,可以通过修改/etc/updatedb.conf让它跳过。具体做法是: 在PRUNEFS =后面加上fuse.ossfs 在PRUNEPATHS =后面加上挂载的目录 如何确定是哪个进程扫了我的目录? 首先安装auditd: sudo apt-get install auditd 启动auditd: sudo service auditd start 设置监视挂载目录: auditctl -w /mnt/ossfs 在auditlog中可以查看是哪些进程访问了这个目录:ausearch -i | grep /mnt/ossfs Q: 使用ossfs上传到OSS的文件Content-Type全是”application/octet-stream”是怎么回事? ossfs通过查询/etc/mime.types中的内容来确定文件的Content-Type,请检查这个文件是否存在,如果不存在,则需要添加: 对于ubuntu可以通过sudo apt-get install mime-support来添加 对于centos可以通过sudo yum install mailcap来添加 也可以手动添加,每种格式一行,每行格式为:application/javascript js Q: 如何使用supervisor启动ossfs? 安装supervisor,在ubuntu中执行sudo apt-get install supervisor 建立一个目录,编辑ossfs的启动脚本:mkdir /root/ossfs_scripts vi /root/ossfs_scripts/start_ossfs.sh写入如下数据:# 卸载 fusermount -u /mnt/ossfs # 重新挂载,必须要增加-f参数运行ossfs,让ossfs在前台运行 exec ossfs my-bucket my-mount-point -ourl=my-oss-endpoint -f 编辑/etc/supervisor/supervisord.conf,在最后加入下面一段:[program:ossfs] command=bash /root/ossfs_scripts/start_ossfs.sh logfile=/var/log/ossfs.log log_stdout=true log_stderr=true logfile_maxbytes=1MB logfile_backups=10 运行supervisor:supervisordsupervisord 确认一切正常:ps aux | grep supervisor # 应该能看到supervisor进程 ps aux | grep ossfs # 应该能看到ossfs进程 kill -9 ossfs # 杀掉ossfs进程,supervisor应该会重启它, 不要使用killall, 因为killall发送SIGTERM,进程正常退出,supervisor不再去重新运行ossfs ps aux | grep ossfs # 应该能看到ossfs进程如果出错,请检查/var/log/supervisor/supervisord.log和/var/log/ossfs.log。 Q: 遇到”fuse: warning: library too old, some operations may not work”怎么办? 出现的原因是:ossfs编译时所使用的libfuse版本 比运行时链接到的libfuse版本高。这往往是用户自行安装了libfuse导致的。使用我们提供的rpm包安装ossfs,无需再安装libfuse。 在CentOS-5.x和CentOS-6.x上我们提供的rpm包里包含了libfuse-2.8.4,如果在运行的时候环境中有libfuse-2.8.3,并且ossfs被链接到了旧版本的fuse上,就会出现上述warning。 如何确认ossfs运行时链接的fuse版本? 运行ldd $(which ossfs) | grep fuse 例如结果是”/lib64/libfuse.so.2”,那么通过ls -l /lib64/libfuse*可以看到fuse的版本 如何让ossfs链接到正确的版本? 首先通过rpm -ql ossfs | grep fuse找到libfuse的目录 例如结果是”/usr/lib/libfuse.so.2”,则通过LD_LIBRARY_PATH=/usr/lib ossfs …运行ossfs 我能忽略这个WARNING吗? 最好不要,见这个bug Q: 为什么用ossfs看到的文件信息(例如大小)与其他工具看到的不一致? 因为ossfs默认会缓存文件的元信息(包括大小/权限等),这样就不需要每次ls的时候向OSS发送请求,加快速度。 如果用户通过其他程序(例如SDK/官网控制台/osscmd等)对文件进行了修改,那么有可能在ossfs中看到的文件信息 没有及时更新。 如果想禁止ossfs的缓存,那么可以在挂载的时候加上如下参数:-omax_stat_cache_size=0

2019-12-01 23:15:16 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 Q: ossfs适合什么样的程序? ossfs能把oss bucket挂载到本地,如果您使用的软件没有支持OSS,但您又想让数据能自动同步到OSS,那么ossfs是很好的选择。 Q: ossfs有什么局限性? 由于数据需要经过网络同步到云端,ossfs在性能和功能上可能与本地文件系统有差距。如果您想让数据库等对io要求很高的应用跑在ossfs挂载的盘上,请慎重考虑。和本地文件系统具体差异: 随机或者追加写文件会导致整个文件的重写。 元数据操作,例如list directory,性能较差,因为需要远程访问OSS服务器。 文件/文件夹的rename操作不是原子的。 多个客户端挂载同一个oss bucket时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等等。 不支持hard link。 Q: ossfs一定要阿里云的机器才能用么? ossfs不限制一定要阿里云的内网才可以使用,外网机器依然可以使用。 Q: ossfs能不能同时挂载多个OSS bucket? 可以的,在passwd-ossfs文件中写入多个OSS配置信息即可。支持不同帐号的OSS。 Q: 我在yum/apt-get安装ossfs,遇到conflicts with file from package fuse-devel的错误,请问是怎么回事? 您的系统中存在老版本的fuse,请先使用相关的包管理器卸载,再重新安装ossfs。 Q: ossfs工作不正常,如何debug? 您可以使用在挂载时,加上-d -o f2参数,ossfs会把日志写入到系统日志中。在centos系统中,在/var/log/messages中。 您也可以在挂载时使用-f -d -o f2参数,ossfs会把日志输出到屏幕上。 Q: 为什么我在mount时遇到 ossfs: unable to access MOUNTPOINT /tmp/ossfs: Transport endpoint is not connected这样的错误? 请先umount对应的目录。 请检查您在使用ossfs挂载时,填入的url参数是否正确,是否和bucket/access key id/access key secret匹配。 特别注意:url中不包含bucket的名字。例如:您在oss控制台中看到bucket的域名是这样的:ossfs-test-1.oss-cn-hangzhou.aliyuncs.com。那么填入的url则是:http://oss-cn-hangzhou.aliyuncs.com。 Q: ossfs提示ossfs: unable to access MOUNTPOINT /tmp/odat: No such file or directory 这是您未创建该目录导致的,在挂载前需要创建对应目录。 Q: 我把bucket挂载到本地后,ls目录,却收到operation not permitted错误,这是为什么? 请检查您的bucket中,是否包含目录名含有不可见字符的OSS object。文件系统对文件/目录名有更严格的限制,因此会收到上述错误。使用其他工具对这些object重命名后,ls就能正确显示目录内容了。 Q: 我的一个目录下有非常多的文件,为什么ls该目录很慢? 假设一个目录下有n个文件,那么ls该目录至少需要n次OSS http requests。在文件非常多的时候,这可能造成严重的性能问题。 您可以采用下面两个办法优化: 通过-omax_stat_cache_size=xxx参数增大stat cache的size,这样第一次ls会较慢,但是后续的ls就快了,因为文件的元数据都在本地cache中。默认这个值是1000,大约消耗4MB内存,请根据您机器内存大小调整为合适的值。 使用ls -f命令,这个命令会消除与OSS的n次http请求。 具体参见issue 13。 Q: ossfs挂载时如何设置权限? 如果要允许其他用户访问挂载文件夹,可以在运行ossfs的时候指定allow_other参数: ossfs your_bucket your_mount_point -ourl=your_endpoint -o allow_other 为什么使用allow_other参数,仍然不能访问文件? 注意:allow_other是赋予挂载目录其他用户访问的权限,不是里面的文件!如果您要更改文件夹中的文件,请用chmod命令。 allow_other默认赋予挂载目录777权限,我想让挂载目录的权限为770,该怎么办? 可以通过umask来设置,参见这里。 Q: 如果要使挂载的文件夹(/tmp/ossfs)属于某个user: 方法一: 如果要使挂载的文件夹(/tmp/ossfs)属于某个user,则需要以user的身份创建挂载文件夹和使用ossfs: sudo -u user mkdir /tmp/ossfs sudo -u user ossfs bucket-name /tmp/ossfs 方法二: 首先通过id命令获得指定用户的uid/gid信息。例如获取www用户的uid/gid信息:id www;然后挂载时指定uid/gid参数: ossfs your_bucket your_mountpoint -ourl=your_url -ouid=your_uid -ogid=your_gid 注意:uid/gid都是数字。 Q: 我不是root用户,如何umount ossfs挂载的目录 fusermount -u your_mountpoint Q: 如何开机自动挂载ossfs? Step 1 首先请参考使用说明,把bucket name,access key id/secret等信息写入/etc/passwd-ossfs,并将该文件权限修改为640。 echo your_bucket_name:your_access_key_id:your_access_key_secret > /etc/passwd-ossfs chmod 640 /etc/passwd-ossfs Step 2 接下来针对不同的系统版本,设置方式有所不同 Step 2A 通过fstab的方式自动mount(适用于ubuntu14.04, centos6.5) 在/etc/fstab中加入下面的命令 ossfs#your_bucket_name your_mount_point fuse _netdev,url=your_url,allow_other 0 0 其中上述命令中的your_xxx信息需要根据您的bucket name等信息填入。 保存/etc/fstab文件。执行mount -a命令,如果没有报错,则说明设置正常。 到这一步,ubuntu14.04就能自动挂载了。centos6.5还需要执行下面的命令: chkconfig netfs on Step 2B 通过开机自启动脚本mount(适用于centos7.0及以上的系统) 在/etc/init.d/目录下建立文件ossfs,把模板文件中的内容拷贝到这个新文件中。并将其中的your_xxx内容改成您自己的信息。 执行命令:chmod a+x /etc/init.d/ossfs 上述命令是把新建立的ossfs脚本赋予可执行权限。您可以执行该脚本,如果脚本文件内容无误,那么此时oss中的bucket已经挂载到您指定的目录下了。 执行命令:chkconfig ossfs on 上述命令是把ossfs启动脚本作为其他服务,开机自动启动。 好了,现在ossfs就可以开机自动挂载了。总结起来,如果您是ubuntu14.04和centos6.5,您需要执行Step 1 + Step 2A;如果您是centos7.0系统,您需要执行Step 1 + Step 2B。 Q: 遇到fusermount: failed to open current directory: Permission denied错误如何解决? 这是fuse的一个bug,它要求当前用户对当前目录(非挂载目录)有读权限。解决的办法就是cd到一个有读权限的目录再运行ossfs命令 Q: 我需要以www用户挂载ossfs,此时如何设置开机自动挂载? 参照上面的问题的解答,Step 1照做,对Step 2B稍加修改,修改/etc/init.d/ossfs中的命令为: sudo -u www ossfs your_bucket your_mountpoint -ourl=your_url 设置自启动脚本中允许使用sudo,编辑/etc/sudoers,将其中的Defaults requiretty这行改为#Defaults requiretty(注释掉) Q: 遇到fusermount: failed to open current directory: Permission denied错误如何解决? 这是fuse的一个bug,它要求当前用户对当前目录(非挂载目录)有读权限。解决的办法就是cd到一个有读权限的目录再运行ossfs命令。 Q: 使用ECS挂载ossfs,如何避免因后台程序扫描文件而产生费用? 程序扫描ossfs挂载的目录,会转换成向OSS的请求,如果请求次数很多,会产生费用(1分钱/1万次)。如果是updatedb,可以通过修改/etc/updatedb.conf让它跳过。具体做法是: 在PRUNEFS =后面加上fuse.ossfs 在PRUNEPATHS =后面加上挂载的目录 如何确定是哪个进程扫了我的目录? 首先安装auditd: sudo apt-get install auditd 启动auditd: sudo service auditd start 设置监视挂载目录: auditctl -w /mnt/ossfs 在auditlog中可以查看是哪些进程访问了这个目录:ausearch -i | grep /mnt/ossfs Q: 使用ossfs上传到OSS的文件Content-Type全是”application/octet-stream”是怎么回事? ossfs通过查询/etc/mime.types中的内容来确定文件的Content-Type,请检查这个文件是否存在,如果不存在,则需要添加: 对于ubuntu可以通过sudo apt-get install mime-support来添加 对于centos可以通过sudo yum install mailcap来添加 也可以手动添加,每种格式一行,每行格式为:application/javascript js Q: 如何使用supervisor启动ossfs? 安装supervisor,在ubuntu中执行sudo apt-get install supervisor 建立一个目录,编辑ossfs的启动脚本:mkdir /root/ossfs_scripts vi /root/ossfs_scripts/start_ossfs.sh写入如下数据:# 卸载 fusermount -u /mnt/ossfs # 重新挂载,必须要增加-f参数运行ossfs,让ossfs在前台运行 exec ossfs my-bucket my-mount-point -ourl=my-oss-endpoint -f 编辑/etc/supervisor/supervisord.conf,在最后加入下面一段:[program:ossfs] command=bash /root/ossfs_scripts/start_ossfs.sh logfile=/var/log/ossfs.log log_stdout=true log_stderr=true logfile_maxbytes=1MB logfile_backups=10 运行supervisor:supervisordsupervisord 确认一切正常:ps aux | grep supervisor # 应该能看到supervisor进程 ps aux | grep ossfs # 应该能看到ossfs进程 kill -9 ossfs # 杀掉ossfs进程,supervisor应该会重启它, 不要使用killall, 因为killall发送SIGTERM,进程正常退出,supervisor不再去重新运行ossfs ps aux | grep ossfs # 应该能看到ossfs进程如果出错,请检查/var/log/supervisor/supervisord.log和/var/log/ossfs.log。 Q: 遇到”fuse: warning: library too old, some operations may not work”怎么办? 出现的原因是:ossfs编译时所使用的libfuse版本 比运行时链接到的libfuse版本高。这往往是用户自行安装了libfuse导致的。使用我们提供的rpm包安装ossfs,无需再安装libfuse。 在CentOS-5.x和CentOS-6.x上我们提供的rpm包里包含了libfuse-2.8.4,如果在运行的时候环境中有libfuse-2.8.3,并且ossfs被链接到了旧版本的fuse上,就会出现上述warning。 如何确认ossfs运行时链接的fuse版本? 运行ldd $(which ossfs) | grep fuse 例如结果是”/lib64/libfuse.so.2”,那么通过ls -l /lib64/libfuse*可以看到fuse的版本 如何让ossfs链接到正确的版本? 首先通过rpm -ql ossfs | grep fuse找到libfuse的目录 例如结果是”/usr/lib/libfuse.so.2”,则通过LD_LIBRARY_PATH=/usr/lib ossfs …运行ossfs 我能忽略这个WARNING吗? 最好不要,见这个bug Q: 为什么用ossfs看到的文件信息(例如大小)与其他工具看到的不一致? 因为ossfs默认会缓存文件的元信息(包括大小/权限等),这样就不需要每次ls的时候向OSS发送请求,加快速度。 如果用户通过其他程序(例如SDK/官网控制台/osscmd等)对文件进行了修改,那么有可能在ossfs中看到的文件信息 没有及时更新。 如果想禁止ossfs的缓存,那么可以在挂载的时候加上如下参数:-omax_stat_cache_size=0

2019-12-01 23:15:17 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 Q: ossfs适合什么样的程序? ossfs能把oss bucket挂载到本地,如果您使用的软件没有支持OSS,但您又想让数据能自动同步到OSS,那么ossfs是很好的选择。 Q: ossfs有什么局限性? 由于数据需要经过网络同步到云端,ossfs在性能和功能上可能与本地文件系统有差距。如果您想让数据库等对io要求很高的应用跑在ossfs挂载的盘上,请慎重考虑。和本地文件系统具体差异: 随机或者追加写文件会导致整个文件的重写。 元数据操作,例如list directory,性能较差,因为需要远程访问OSS服务器。 文件/文件夹的rename操作不是原子的。 多个客户端挂载同一个oss bucket时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等等。 不支持hard link。 Q: ossfs一定要阿里云的机器才能用么? ossfs不限制一定要阿里云的内网才可以使用,外网机器依然可以使用。 Q: ossfs能不能同时挂载多个OSS bucket? 可以的,在passwd-ossfs文件中写入多个OSS配置信息即可。支持不同帐号的OSS。 Q: 我在yum/apt-get安装ossfs,遇到conflicts with file from package fuse-devel的错误,请问是怎么回事? 您的系统中存在老版本的fuse,请先使用相关的包管理器卸载,再重新安装ossfs。 Q: ossfs工作不正常,如何debug? 您可以使用在挂载时,加上-d -o f2参数,ossfs会把日志写入到系统日志中。在centos系统中,在/var/log/messages中。 您也可以在挂载时使用-f -d -o f2参数,ossfs会把日志输出到屏幕上。 Q: 为什么我在mount时遇到 ossfs: unable to access MOUNTPOINT /tmp/ossfs: Transport endpoint is not connected这样的错误? 请先umount对应的目录。 请检查您在使用ossfs挂载时,填入的url参数是否正确,是否和bucket/access key id/access key secret匹配。 特别注意:url中不包含bucket的名字。例如:您在oss控制台中看到bucket的域名是这样的:ossfs-test-1.oss-cn-hangzhou.aliyuncs.com。那么填入的url则是:http://oss-cn-hangzhou.aliyuncs.com。 Q: ossfs提示ossfs: unable to access MOUNTPOINT /tmp/odat: No such file or directory 这是您未创建该目录导致的,在挂载前需要创建对应目录。 Q: 我把bucket挂载到本地后,ls目录,却收到operation not permitted错误,这是为什么? 请检查您的bucket中,是否包含目录名含有不可见字符的OSS object。文件系统对文件/目录名有更严格的限制,因此会收到上述错误。使用其他工具对这些object重命名后,ls就能正确显示目录内容了。 Q: 我的一个目录下有非常多的文件,为什么ls该目录很慢? 假设一个目录下有n个文件,那么ls该目录至少需要n次OSS http requests。在文件非常多的时候,这可能造成严重的性能问题。 您可以采用下面两个办法优化: 通过-omax_stat_cache_size=xxx参数增大stat cache的size,这样第一次ls会较慢,但是后续的ls就快了,因为文件的元数据都在本地cache中。默认这个值是1000,大约消耗4MB内存,请根据您机器内存大小调整为合适的值。 使用ls -f命令,这个命令会消除与OSS的n次http请求。 具体参见issue 13。 Q: ossfs挂载时如何设置权限? 如果要允许其他用户访问挂载文件夹,可以在运行ossfs的时候指定allow_other参数: ossfs your_bucket your_mount_point -ourl=your_endpoint -o allow_other 为什么使用allow_other参数,仍然不能访问文件? 注意:allow_other是赋予挂载目录其他用户访问的权限,不是里面的文件!如果您要更改文件夹中的文件,请用chmod命令。 allow_other默认赋予挂载目录777权限,我想让挂载目录的权限为770,该怎么办? 可以通过umask来设置,参见这里。 Q: 如果要使挂载的文件夹(/tmp/ossfs)属于某个user: 方法一: 如果要使挂载的文件夹(/tmp/ossfs)属于某个user,则需要以user的身份创建挂载文件夹和使用ossfs: sudo -u user mkdir /tmp/ossfs sudo -u user ossfs bucket-name /tmp/ossfs 方法二: 首先通过id命令获得指定用户的uid/gid信息。例如获取www用户的uid/gid信息:id www;然后挂载时指定uid/gid参数: ossfs your_bucket your_mountpoint -ourl=your_url -ouid=your_uid -ogid=your_gid 注意:uid/gid都是数字。 Q: 我不是root用户,如何umount ossfs挂载的目录 fusermount -u your_mountpoint Q: 如何开机自动挂载ossfs? Step 1 首先请参考使用说明,把bucket name,access key id/secret等信息写入/etc/passwd-ossfs,并将该文件权限修改为640。 echo your_bucket_name:your_access_key_id:your_access_key_secret > /etc/passwd-ossfs chmod 640 /etc/passwd-ossfs Step 2 接下来针对不同的系统版本,设置方式有所不同 Step 2A 通过fstab的方式自动mount(适用于ubuntu14.04, centos6.5) 在/etc/fstab中加入下面的命令 ossfs#your_bucket_name your_mount_point fuse _netdev,url=your_url,allow_other 0 0 其中上述命令中的your_xxx信息需要根据您的bucket name等信息填入。 保存/etc/fstab文件。执行mount -a命令,如果没有报错,则说明设置正常。 到这一步,ubuntu14.04就能自动挂载了。centos6.5还需要执行下面的命令: chkconfig netfs on Step 2B 通过开机自启动脚本mount(适用于centos7.0及以上的系统) 在/etc/init.d/目录下建立文件ossfs,把模板文件中的内容拷贝到这个新文件中。并将其中的your_xxx内容改成您自己的信息。 执行命令:chmod a+x /etc/init.d/ossfs 上述命令是把新建立的ossfs脚本赋予可执行权限。您可以执行该脚本,如果脚本文件内容无误,那么此时oss中的bucket已经挂载到您指定的目录下了。 执行命令:chkconfig ossfs on 上述命令是把ossfs启动脚本作为其他服务,开机自动启动。 好了,现在ossfs就可以开机自动挂载了。总结起来,如果您是ubuntu14.04和centos6.5,您需要执行Step 1 + Step 2A;如果您是centos7.0系统,您需要执行Step 1 + Step 2B。 Q: 遇到fusermount: failed to open current directory: Permission denied错误如何解决? 这是fuse的一个bug,它要求当前用户对当前目录(非挂载目录)有读权限。解决的办法就是cd到一个有读权限的目录再运行ossfs命令 Q: 我需要以www用户挂载ossfs,此时如何设置开机自动挂载? 参照上面的问题的解答,Step 1照做,对Step 2B稍加修改,修改/etc/init.d/ossfs中的命令为: sudo -u www ossfs your_bucket your_mountpoint -ourl=your_url 设置自启动脚本中允许使用sudo,编辑/etc/sudoers,将其中的Defaults requiretty这行改为#Defaults requiretty(注释掉) Q: 遇到fusermount: failed to open current directory: Permission denied错误如何解决? 这是fuse的一个bug,它要求当前用户对当前目录(非挂载目录)有读权限。解决的办法就是cd到一个有读权限的目录再运行ossfs命令。 Q: 使用ECS挂载ossfs,如何避免因后台程序扫描文件而产生费用? 程序扫描ossfs挂载的目录,会转换成向OSS的请求,如果请求次数很多,会产生费用(1分钱/1万次)。如果是updatedb,可以通过修改/etc/updatedb.conf让它跳过。具体做法是: 在PRUNEFS =后面加上fuse.ossfs 在PRUNEPATHS =后面加上挂载的目录 如何确定是哪个进程扫了我的目录? 首先安装auditd: sudo apt-get install auditd 启动auditd: sudo service auditd start 设置监视挂载目录: auditctl -w /mnt/ossfs 在auditlog中可以查看是哪些进程访问了这个目录:ausearch -i | grep /mnt/ossfs Q: 使用ossfs上传到OSS的文件Content-Type全是”application/octet-stream”是怎么回事? ossfs通过查询/etc/mime.types中的内容来确定文件的Content-Type,请检查这个文件是否存在,如果不存在,则需要添加: 对于ubuntu可以通过sudo apt-get install mime-support来添加 对于centos可以通过sudo yum install mailcap来添加 也可以手动添加,每种格式一行,每行格式为:application/javascript js Q: 如何使用supervisor启动ossfs? 安装supervisor,在ubuntu中执行sudo apt-get install supervisor 建立一个目录,编辑ossfs的启动脚本:mkdir /root/ossfs_scripts vi /root/ossfs_scripts/start_ossfs.sh写入如下数据:# 卸载 fusermount -u /mnt/ossfs # 重新挂载,必须要增加-f参数运行ossfs,让ossfs在前台运行 exec ossfs my-bucket my-mount-point -ourl=my-oss-endpoint -f 编辑/etc/supervisor/supervisord.conf,在最后加入下面一段:[program:ossfs] command=bash /root/ossfs_scripts/start_ossfs.sh logfile=/var/log/ossfs.log log_stdout=true log_stderr=true logfile_maxbytes=1MB logfile_backups=10 运行supervisor:supervisordsupervisord 确认一切正常:ps aux | grep supervisor # 应该能看到supervisor进程 ps aux | grep ossfs # 应该能看到ossfs进程 kill -9 ossfs # 杀掉ossfs进程,supervisor应该会重启它, 不要使用killall, 因为killall发送SIGTERM,进程正常退出,supervisor不再去重新运行ossfs ps aux | grep ossfs # 应该能看到ossfs进程如果出错,请检查/var/log/supervisor/supervisord.log和/var/log/ossfs.log。 Q: 遇到”fuse: warning: library too old, some operations may not work”怎么办? 出现的原因是:ossfs编译时所使用的libfuse版本 比运行时链接到的libfuse版本高。这往往是用户自行安装了libfuse导致的。使用我们提供的rpm包安装ossfs,无需再安装libfuse。 在CentOS-5.x和CentOS-6.x上我们提供的rpm包里包含了libfuse-2.8.4,如果在运行的时候环境中有libfuse-2.8.3,并且ossfs被链接到了旧版本的fuse上,就会出现上述warning。 如何确认ossfs运行时链接的fuse版本? 运行ldd $(which ossfs) | grep fuse 例如结果是”/lib64/libfuse.so.2”,那么通过ls -l /lib64/libfuse*可以看到fuse的版本 如何让ossfs链接到正确的版本? 首先通过rpm -ql ossfs | grep fuse找到libfuse的目录 例如结果是”/usr/lib/libfuse.so.2”,则通过LD_LIBRARY_PATH=/usr/lib ossfs …运行ossfs 我能忽略这个WARNING吗? 最好不要,见这个bug Q: 为什么用ossfs看到的文件信息(例如大小)与其他工具看到的不一致? 因为ossfs默认会缓存文件的元信息(包括大小/权限等),这样就不需要每次ls的时候向OSS发送请求,加快速度。 如果用户通过其他程序(例如SDK/官网控制台/osscmd等)对文件进行了修改,那么有可能在ossfs中看到的文件信息 没有及时更新。 如果想禁止ossfs的缓存,那么可以在挂载的时候加上如下参数:-omax_stat_cache_size=0

2019-12-01 23:15:17 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SSL证书 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 2020中国云原生 阿里云云栖号