精华内容
下载资源
问答
  • 是浏览器提供安全机制,限制来自不同源数据。如果当前页面URL地址和Ajax请求地址不同源,浏览器不允许得到服务器数据; 同源: 协议 http||https、域名和 port端口 都相同则同源,只要有一项不同...

    一、什么是跨域?跨域是如何产生的?

    • 同源策略:

    浏览器内置的规则!是浏览器提供的一种安全机制,限制来自不同源的数据。如果当前页面的URL地址和Ajax的请求地址不同源,浏览器不允许得到服务器的数据;

    • 同源:

    协议 http||https、域名和 port端口 都相同则同源,只要有一项不同就是不同源

    • 跨域:

    不同源就跨域

    跨域请求出现错误的条件: 浏览器同源策略 && 请求是ajax类型

    文件资源-不受同源限制

    通过页面内标签、直接在地址栏输入 / 文件资源是通过link script标签访问 url 的

    二、如何解决跨域?

    1.JSONP

    注意:

    JSONP和json没有任何关系

    JSONP需要前后台配合

    1.1实现原理:(另辟蹊径、瞒天过海)

    **走获取文件资源script这个方式**
    
    JSONP实现跨域请求的原理简单的说,就是动态创建<script>标签,然后利用<script>的src 不受同源策略约束来跨域获取数据。
    
    JSONP 由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的 JSON 数据。
    

    1.2 URL设置给 script 标签

    • 如果直接使用ajax的形式,提醒跨域报错;
      // 1.XHR这条路:
      // URL : http://www.liulongbin.top:3006/api/jsonp
    
      // XHR形式请求URL:被同源策略限制,不符合,浏览器报错!
      // $.ajax({
      //   url: "http://www.liulongbin.top:3006/api/jsonp"
      // });
    
    • 走文件资源的形式
    <script type="text/javascript">
       // 2.文件资源
       // JSONP:获取文件资源,压根不受同源策略限制;
       //        URL设置给 script 标签
       function fn (data) {
           console.log(data)
       }
    </script>
    
    
    <!-- 前端拿到是个什么?JS文件,JS代码(变量、函数) -->
    <!-- 后台要求:获取文件资源的时候,告诉后台前面函数名叫啥callback=fn -->
    <!-- 后台返回:约定好:文件内容:函数执行(); -->
    <!--          给大家把前端需要数据,作为函数实参传入,无形中可以拿到数据! -->
    
    <!-- 疑问:直接把JS文件里面直接写成数据!实现方案为什么不直接返回数据?反而返回是一个JS代码 函数执行(数据) -->
    <script type="text/javascript" src="http://www.liulongbin.top:3006/api/jsonp?callback=fn">
       // 上述URL返回的内容: hello({"message":"JSONP请求测试成功","data":{}}) 
    </script>
    
    • 改进 ↓
    <script type="text/javascript">
        function nihao (data) {
            console.log(data)
        }
    
    
        // 1.动态创建一个script标签
        var script = document.createElement('script');
    
        // 2.修改src属性
        script.src = 'http://www.liulongbin.top:3006/api/jsonp?callback=nihao&uname=lisi&age=12';
    
        // 3.把动态创建的script标签追加到head标签里面,发出请求;
        var head = document.getElementsByTagName('head')[0]
        head.appendChild(script);
    </script>
    

    1.2 jQuery封装JSONP

    • $.ajax() 该方法可以发送jsonp请求,但是jsonp请求本质上不是Ajax;

    • 和jsonp相关的两个属性 script.src = ‘xx地址?callback=nihao&uname=lisi&age=12’;

    • jsonp 属性的值为了迎合后端(后端根据该名称获取回调函数的名字);jsonp的值决定了等号左侧的那个名字

    • jsonpCallback 决定等号右侧的内容(服务端返回的函数调用的名称)
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    
    <body>
      <button>点击通过JSONP方式获取数据(JQ)</button>
    </body>
    <script src="./jquery.js"></script>
    <script type="text/javascript">
      let fn = function(data) {
        console.log(data);
      };
    
    
      // 现在带着大家用$.ajax方式实现JSONP
      $("button").click(function() {
    
        // 好处:JQ开发来说:友好;写法统一!
        //     不加ataType: 'jsonp':背后实现使用XHR
        //     加上:造script标签,设置src,添加到页面head结构;
        $.ajax({
          // ********************************基本写法够了
          // 内部实现过程就是上节优化写;不是XHR,造script标签;
          dataType: 'jsonp',
          url: "http://www.liulongbin.top:3006/api/jsonp",
          success: function(res) {
            console.log(res);
          },
    
    
          // ********************************灵活配置
          // 指定后面值:后台约定参数名
          // jsonp: 'callback',
          // 指定值:前端指定执行函数的名称
          // jsonpCallback: "fn"
        });
    
    
        // 细节:使用$.ajax无需关注函数名叫什么,自定内部会给函数起名字;
        //       默认参数名就是callback;(一般情况下所有后台默认使用callback)
        //       如果后台要求使用使用cb   配置jsonp: 'cb',
    
    
    
    
    
    
        // $.ajax
        // *******XHR:FormData POST  
        // processData: false,
        // contentType: false,
    
    
        // *******JSONP:文件资源
        // dataType: 'jsonp',
        // jsonp:"后台要求参数名",
        // jsonpCallback:"参数值"
    
    
    
      });
    </script>
    
    </html>
    
    • 特点:
    • script标签发出请求本身就是get,不支持别的请求方式

    • get请求传递的数据量有限制(URL地址的长度不超过8000个字符)

    2. CORS(跨域资源共享)

    浏览器同源政策及其规避方法

    跨域资源共享 CORS 详解

    • 一般都是后台设置
    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。
    
    它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
    
    • 在被请求的服务器中使用express框架的中间件进行相应的请求拦截从而进行响应头的配置(相当于将客户端添加到服务器可访问的白名单)。
    //拦截所有请求  3000端口服务器
    server.use((req, res, next) => {
    	// Access-Control-Allow-Origin 允许哪些客户端访问我
    	// * 代表允许所有的客户端访问我
    	server.header('Access-Control-Allow-Origin', '*');
    	// Access-Control-Allow-Methods 允许客户端使用哪些请求方法访问我
    	server.header('Access-Control-Allow-Methods', 'get,post');
    	next(); // 将控制权传递给下一中间件
    });
    
    
    • 在使用Ajax技术发送跨域请求时,默认情况下不会在请求中携带cookie信息,如需要连cookie信息一起传递到另一服务器则需要在客户端和服务器端进行以下配置:
    // 客户端
    // 对ajax对象进行设置 当发送跨域请求时,携带cookie信息
    xhr.withCredentials = true;
    
    // 服务器端   3000端口服务器
    // 在响应头中进行设置 允许客户端发送跨域请求时携带cookie信息
    res.header('Access-Control-Allow-Credentials', true);
    

    3.代理服务器 (这里讲述的是在vue中实现)

    首先我们先来认识一下vue项目中的环境变量

    • 认识环境变量-端口配置
    问题:前端项目启动时,占用端口号9528,是在哪里定义的呢?
    
    答:
    
    在vue.config.js中配置的。下边我们来学习一下它的用法,从而了解环境变量的使用。
    

    vue.config.js 就是vue项目相关的编译,配置,打包,启动服务相关的配置文件,它的核心在于webpack,相当于在webpack的基础上又做了一次抽象。官网地址: 地址

    下图是开发环境服务端口的在vue.config.js中 位置
    在这里插入图片描述
    我们看到上面的 process.env.port实际上是一个nodejs服务下的环境变量

    • 环境变量的配置文件
      在一些特殊的配置文件中定义环境变量
    文件名称 对应环境 说明
    .env.development 开发环境 当运行npm run dev 的时候会以此文件为配置文件,这个文件中可以定义针对开发环境的环境变量
    .env.production 生产环境 当运行npm run build:prod 的时候会以此文件为配置文件,这个文件中可以定义针对开发环境的环境变量
    .env.staging 模拟生产环境 可以理解为production环境的镜像, 尽最大可能来模拟产品线上的环境(硬件,网络拓扑结构,数据库数据)
    • 在项目运行的过程中,通过不同的命令,能加载不同的配置文件,从而获取不同的环境变量。
      在这里插入图片描述
    • 定义环境变量-示例

    key = value key表示环境变量的名称 value表示环境变量的值

        # just a flag
        ENV = 'development'
        
        # base api
        VUE_APP_BASE_API = '/dev-api'
    

    请注意,以 VUE_APP_ 开头的变量将通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中,建议以它开头来定义

        VUE_APP_NUM = 2000
    
    • 使用环境变量

    定义好环境变量之后,项目启动之后,它会自动被集成到process.env这个属性中。我们只需要通过下面的方式使用即可

        process.env.环境变量名
    

    注意:修改服务的配置文件,想要生效的话,必须要重新启动服务

    更多阅读:vue-cli 环境与变量

    • 小结
    1. 不同的环境(开发环境,生产环境,测试环境.......)可以设置不同的变量  
       开发环境  - >  development的文件      生产上线  -> production的文件  
    2. key = value    定义环境变量     process.env.环境变量名字
    3. 自定义的环境变量要以:VUE_APP_开头
    

    实现代理服务器

    代理转发(只有浏览器会出现跨域问题,服务器与服务器之间不会出现跨域问题)
    在ajax的基地在baseUrl的参数必须是相等地址,不能是绝对地址

    Vue-Cli配置代理转发

    在这里插入图片描述

    思路:

    在前端服务和后端接口服务之间 架设一个中间代理服务,它的地址保持和前端服务一致,那么:
    
    1. 中间服务和前端服务之间由于协议域名端口三者统一不存在跨域问题,可以直接发送请求
    2. 中间服务和后端服务之间由于并不经过浏览器没有同源策略的限制,可以直接发送请求
    
    这样,我们就可以通过中间这台服务器做接口转发,在开发环境下解决跨域问题,看起来好像挺复杂,其实vue-cli已经为我们内置了该技术,我们只需要按照要求配置一下即可。
    

    vue-cli解决跨域配置说明

    在vue.config.js配置文件中,有一项是devServer,它就是我们下边要操作的主角。

        module.exports = {
          devServer: {
            // ... 省略
           // 代理配置
            proxy: {
                // 如果请求地址以/api打头,就出触发代理机制
                // http://localhost:9588/api/login -> http://localhost:3000/api/login
                '/api': {
                //这里用了本机的服务器,所以写localhost,如果用了其他服务器把localhost换掉就好
                //比如:http://192.168.156.50:3000
                  target: 'http://localhost:3000' // 我们要代理的真实接口地址
                }
              }
            }
          }
        }
    

    基地址

    .env.development

        VUE_APP_BASE_API = '/api'
    

    api/user.js

        export function login(formData) {
          return request({
        /   url: 'api/sys/login',
        +   url: '/sys/login', // 前面的api就省略了
            method: 'POST',
            data: formData
          })
        }
    

    小结

    1. vue-cli集成了跨域代理功能-- 只能用在开发阶段。
    2. vue.config.js文件中,在devServe下按指定格式配置了proxy,再重启项目即可。

    特别强调:

    ajax的基地址baseUrl必须是相对地址,而不能是绝对地址
    
    展开全文
  • div常见三种清除浮动的方式 1.用父容器高度来解决清除浮动问题 合理创建标题,有助于目录生成 直接输入1次#,并按下space后,将生成1级标题。 输入2次#,并按下space后,将生成2级标题。 以此类推,我们支持...

    div的常见三种清除浮动的方式

    1.用父容器的高度来解决清除浮动问题

    ###代码举例

    <body>
        <div id="wraper">
            <div class="box floatleft"></div>
            <div class="box floatright"></div>
        </div>
    </body>
    
    <style>
    	#wraper{
    	    width: 300px;
    	   	height: 300px; 
    	   	margin: 0 auto;
    	    border: 1px solid black;
    	}
    	.box{
    	    height: 100px;
    	    width: 100px;
    	    border: 2px solid red;
    	}
    	.floatleft{
    	   float: left;
    	}
    	.floatright{
    	   float: right;
    	}
    </style
    

    效果如下图:
    在这里插入图片描述

    2.用多余的标签来解决清除浮动问题

    ###代码举例

    <body>
        <div id="wraper">
            <div class="box floatleft"></div>
            <div class="box floatright"></div>
            <!-- 清除浮动:兼容所有浏览器;性能最好 -->
            <div class="clearFloat"></div>
        </div>
    </body>
    
    <style>
    	#wraper{
    	    width: 300px;
    	   	margin: 0 auto;
    	    border: 1px solid black;
    	}
    	.box{
    	    height: 100px;
    	    width: 100px;
    	    border: 2px solid red;
    	}
    	.floatleft{
    	   float: left;
    	}
    	.floatright{
    	   float: right;
    	}
    	.clearFloat{
            clear: both;
        }
    </style
    

    效果如下图:
    在这里插入图片描述

    3.用伪类来解决清除浮动问题

    ###代码举例

    <body>
        <div id="wraper clearFloat">
            <div class="box floatleft"></div>
            <div class="box floatright"></div>
        </div>
    </body>
    
    <style>
    	#wraper{
    	    width: 300px;
    	   	margin: 0 auto;
    	    border: 1px solid black;
    	}
    	.box{
    	    height: 100px;
    	    width: 100px;
    	    border: 2px solid red;
    	}
    	.floatleft{
    	   float: left;
    	}
    	.floatright{
    	   float: right;
    	}
    	.clearFloat::after{
            content: '';
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }
        .clearFloat{
            zoom: 1;
        }
    </style
    

    产生的效果与效果图2一样,没有区别

    4.总结

    这里介绍了我用的比较多的三种方式来清理浮动,可以根据自己的喜好和项目的规定来选择清除浮动的方式。对于这三种方法给出一些建议:
    1.第一种方式我用的比较多的地方就是用来给导航条添加浮动,左一块、右一块,只要加一个高度就可以实现,但是要根据自己的需求,如果可以用弹性布局也可以就不用浮动了,还是得看情况。
    2.第二种方式兼容性比较好,推荐用,我们的项目还是得通过不同的浏览器去调试,个人推荐,并且代码量也是很少,只是会增加没有用的标签。
    3.第三种方式虽然代码比较多,但是它不用添加无用标签,也不用给父容器设置高度,也还算不错,可以根据自身选择。
    以上就是这三种方法的简单介绍,希望能帮到各位。

    展开全文
  • scanf() 是最灵活、最复杂、最常用的输入函数,上节我们已经进行了讲解,本节接着讲解剩下的函数,也就是字符输入函数和字符串输入函数。 输入单个字符 输入单个字符当然可以使用 scanf() 这个通用的输入函数,...

    scanf() 是最灵活、最复杂、最常用的输入函数,上节我们已经进行了讲解,本节接着讲解剩下的函数,也就是字符输入函数和字符串输入函数。

    输入单个字符

    输入单个字符当然可以使用 scanf() 这个通用的输入函数,对应的格式控制符为%c,上节已经讲到了。本节我们重点讲解的是 getchar()、getche() 和 getch() 这三个专用的字符输入函数,它们具有某些 scanf() 没有的特性,是 scanf() 不能代替的。

    1) getchar()

    最容易理解的字符输入函数是 getchar(),它就是scanf("%c", c)的替代品,除了更加简洁,没有其它优势了;或者说,getchar() 就是 scanf() 的一个简化版本。

    下面的代码演示了 getchar() 的用法:

    
     
    1. #include <stdio.h>
    2. int main()
    3. {
    4. char c;
    5. c = getchar();
    6. printf("c: %c\n", c);
    7.  
    8. return 0;
    9. }

    输入示例:

    @↙
    c: @

    你也可以将第 4、5 行的语句合并为一个,从而写作:

    char c = getchar();

    2) getche()

    getche() 就比较有意思了,它没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键,这是它和 scanf()、getchar() 的最大区别。请看下面的代码:

    
     
    1. #include <stdio.h>
    2. #include <conio.h>
    3. int main()
    4. {
    5. char c = getche();
    6. printf("c: %c\n", c);
    7.  
    8. return 0;
    9. }

    输入示例:

    @c: @

    输入@后,getche() 立即读取完毕,接着继续执行 printf() 将字符输出,所以没有按下回车键程序就运行结束了。

    注意,getche() 位于 conio.h 头文件中,而这个头文件是 Windows 特有的,Linux 和 Mac OS 下没有包含该头文件。换句话说,getche() 并不是标准函数,默认只能在 Windows 下使用,不能在 Linux 和 Mac OS 下使用。

    3) getch()

    getch() 也没有缓冲区,输入一个字符后会立即读取,不用按下回车键,这一点和 getche() 相同。getch() 的特别之处是它没有回显,看不到输入的字符。所谓回显,就是在控制台上显示出用户输入的字符;没有回显,就不会显示用户输入的字符,就好像根本没有输入一样。

    回显在大部分情况下是有必要的,它能够与用户及时交互,让用户清楚地看到自己输入的内容。但在某些特殊情况下,我们却不希望有回显,例如输入密码,有回显是非常危险的,容易被偷窥。

    getch() 使用举例:

    
     
    1. #include <stdio.h>
    2. #include <conio.h>
    3. int main()
    4. {
    5. char c = getch();
    6. printf("c: %c\n", c);
    7.  
    8. return 0;
    9. }

    输入@后,getch() 会立即读取完毕,接着继续执行 printf() 将字符输出。但是由于 getch() 没有回显,看不到输入的@字符,所以控制台上最终显示的内容为c: @

    注意,和 getche() 一样,getch() 也位于 conio.h 头文件中,也不是标准函数,默认只能在 Windows 下使用,不能在 Linux 和 Mac OS 下使用。

    对三个函数的总结

    函数 缓冲区 头文件 回显 适用平台
    getchar() stdio.h Windows、Linux、Mac OS 等所有平台
    getche() conio.h Windows
    getch() conio.h Windows


    关于缓冲区,我们将在下节《进入缓冲区(缓存)的世界,破解一切与输入输出有关的疑难杂症》中展开讲解。

    输入字符串

    输入字符串当然可以使用 scanf() 这个通用的输入函数,对应的格式控制符为%s,上节已经讲到了;本节我们重点讲解的是 gets() 这个专用的字符串输入函数,它拥有一个 scanf() 不具备的特性。

    gets() 的使用也很简单,请看下面的代码:

    
     
    1. #include <stdio.h>
    2. int main()
    3. {
    4. char author[30], lang[30], url[30];
    5. gets(author);
    6. printf("author: %s\n", author);
    7. gets(lang);
    8. printf("lang: %s\n", lang);
    9. gets(url);
    10. printf("url: %s\n", url);
    11.  
    12. return 0;
    13. }

    运行结果:

    YanChangSheng↙
    author: YanChangSheng
    C-Language↙
    lang: C-Language
    http://c.biancheng.net http://biancheng.net↙
    url: http://c.biancheng.net http://biancheng.net

    gets() 是有缓冲区的,每次按下回车键,就代表当前输入结束了,gets() 开始从缓冲区中读取内容,这一点和 scanf() 是一样的。gets() 和 scanf() 的主要区别是:

    • scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
    • gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。


    也就是说,gets() 能读取含有空格的字符串,而 scanf() 不能。

    总结

    C语言中常用的从控制台读取数据的函数有五个,它们分别是 scanf()、getchar()、getche()、getch() 和 gets()。其中 scanf()、getchar()、gets() 是标准函数,适用于所有平台;getche() 和 getch() 不是标准函数,只能用于 Windows。

    scanf() 是通用的输入函数,它可以读取多种类型的数据。

    getchar()、getche() 和 getch() 是专用的字符输入函数,它们在缓冲区和回显方面与 scanf() 有着不同的特性,是 scanf() 不能替代的。

    gets() 是专用的字符串输入函数,与 scanf() 相比,gets() 的主要优势是可以读取含有空格的字符串。

    scanf() 可以一次性读取多份类型相同或者不同的数据,getchar()、getche()、getch() 和 gets() 每次只能读取一份特定类型的数据,不能一次性读取多

     

    转载

    http://c.biancheng.net/view/1796.html

    展开全文
  • 而java中产生随机数的方法主要有三种:第一种:new Random()第二种:Math.random()第三种:currentTimeMillis()第一种需要借助java.util.Random类来产生一个随机数发生器,也是最常用的一种,构造函数有两个,Random...

    随机数的产生在一些代码中很常用,也是我们必须要掌握的。而java中产生随机数的方法主要有三种:

    第一种:new Random()

    第二种:Math.random()

    第三种:currentTimeMillis()

    第一种需要借助java.util.Random类来产生一个随机数发生器,也是最常用的一种,构造函数有两个,Random()和Random(long seed)。第一个就是以当前时间为默认种子,第二个是以指定的种子值进行。产生之后,借助不同的语句产生不同类型的数。

    种子就是产生随机数的第一次使用值,机制是通过一个函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。以后产生的随机数都与前一个随机数有关。以代码为例。

    1 public static voidmain(String[] args)2 {3   Random r = new Random(1);4   for(int i=0 ; i<5 ; i++)5 {6     int ran1 = r.nextInt(100);7 System.out.println(ran1);8 }9 }

    在我的编译器下产生的五个数均为85,88,47,13,54,如果采用Random r = new Random(),产生的随机数就不同,这就是确定种子导致的结果。

    而第二种方法返回的数值是[0.0,1.0)的double型数值,由于double类数的精度很高,可以在一定程度下看做随机数,借助(int)来进行类型转换就可以得到整数随机数了,代码如下。

    1 public static voidmain(String[] args)2 {3 int max=100,min=1;4 int ran2 = (int) (Math.random()*(max-min)+min);5 System.out.println(ran2);6 }

    至于第三种方法虽然不常用,但是也是一种思路。方法返回从1970年1月1日0时0分0秒(这与UNIX系统有关)到现在的一个long型的毫秒数,取模之后即可得到所需范围内的随机数。

    1 public static voidmain(String[] args)2 {3 int max=100,min=1;4 long randomNum =System.currentTimeMillis();5 int ran3 = (int) (randomNum%(max-min)+min);6 System.out.println(ran3);7

    8 }

    展开全文
  • SPI 通信原理比 I2C 要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准 SPI 是4根线,分别是 SSEL(片选,也写作 SCS)、SCLK(时钟,也写作 SCK)、MOSI(主机输出从机输入 ...
  • JavaScript-浏览器的三种弹窗方式前言一、常用的三种弹窗方式1.alert2.confirm方式3.弹窗输入总结 前言 本系列文章主要记录项目过程中重点的项目技术 一、常用的三种弹窗方式 1.alert //同步 阻断 alert("alert...
  • 网络中常用的三种拓扑汇聚技术

    千次阅读 2014-02-27 17:18:00
    拓扑汇聚技术  我们把概括或者抽象网络的物理拓扑细节以减少状态信息大小的过程称之为拓扑汇聚,汇聚后的拓扑用来进行路由计算。...现介绍三种常用的汇聚方式。 1、单节点汇聚(Single-node aggregation mod
  • 故网络请求是常用的操作,下面我介绍常用的三种方式, 第一是比较原始的方法,使用HttpURLConnection, 第二是Volley框架, 第三是xutils3框架。 1.HttpURLConnection方法 这是基于网络通信HTTP协议的网络请求,...
  • 根据三极管三个电极与输入输出端子连接方式,可归纳为三种:共发射极电路、共基极电路和共集电极电路;三种电路共同点:各有两个回路,一个输入回路一个输出回路,两个回路有一个公共端,而公共端是对交流信号而...
  • 常用的是通过tcp或者http去调用,通过发送请求去调用c/c++编写的cgi/fastcgi来实现,另外php还有一直接执行外部应用程序的方式,这种方式会影响到系统安全,容易被攻击者利用,所以使用的时候要谨慎处理好用户...
  • 恺撒加密法加密规则是:将原来的小写字母用字母表中其后面的第3个字母的大写形式来替换,大写字母按同样规则用小写字母替换,对于字母表中最后的三个字母,可将字母表看成是首未衔接的。如字母c就用F来替换,字母y用...
  • ASP.NET程序中常用的三三种代码 1. 打开新的窗口并传送参数:  传送参数: response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")  接收参数: ...
  • 工具:apache-tomcat-8.0.33 + ...这是最简单,最传统,也是最常用的种方式!  (2)双击tomcat的bin目录下的startup.bat 文件,若启动窗口中没有错误信息输出,即tomcat启动成功!  (3)打开浏览器窗口输入localho
  • 根据三极管三个电极与输入输出端子连接方式,可归纳为三种:共发射极电路、共基极电路和共集电极电路;三种电路共同点:各有两个回路,一个输入回路一个输出回路,两个回路有一个公共端,而公共端是对交流信号而...
  • 文章目录开发地址法再散列法拉链法 开发地址法 开放地址法有个非常关键的特征,就是所有输入的元素全部存放在...有几种常用的探查序列的方法: 线性探查 di=1,2,3,…,m-1;这种方法的特点是:冲突发生时,顺序查看
  • 本文主要介绍Spring与Mybatis三种常用整合方法,需要整合架包是mybatis-spring.jar,可通过链接http://code.google.com/p/mybatis/下载到。 1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件...
  • 本文主要介绍Spring与Mybatis三种常用整合方法,需要整合架包是mybatis-spring.jar,可通过链接 http://code.google.com/p/mybatis/下载到。  1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis...
  • 本文主要介绍Spring与Mybatis三种常用整合方法,需要整合架包是mybatis-spring.jar,可通过链接 http://code.google.com/p/mybatis/下载到。  1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis...
  • spring集成mybatis的三种方式

    千次阅读 2013-03-15 23:22:33
    本文主要介绍Spring与Mybatis三种常用整合方法,需要整合架包是mybatis-spring.jar,可通过链接 http://code.google.com/p/mybatis/下载到。 1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射...
  • 出发软键盘隐藏最常用的事件是文本框的 Did End on Exit,它在用户按软键盘中的 Done 键时发生。选中一个UITextField控件,点击鼠标右键弹出面板,鼠标左键按住 Did End on Exit 事件旁边的圆圈,然后拖曳到右侧 .h ...
  • 三种常用的方式 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式。 python script.py 0,1,2 10 python script.py -gpus=0,1,2 --batch-size=10 python script...
  • 本文主要介绍Spring与Mybatis三种常用整合方法,需要整合架包是mybatis-spring.jar,可通过链接 http://code.google.com/p/mybatis/下载到。   1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis...
  • Unity 三种常用人物移动方式,手机触屏移动,键盘移动,鼠标点击移动,在不同类型游戏中就可能会用到,不过不管是哪种移动方式,都是根据玩家的输入来获得主角移动朝向:x方向,y方向,在...
  • 在做网页时,常常使用弹窗,以上就是浏览器的三种弹窗方式: 1: alert 在测试时常用 2: confirm 可以套用if…else 来用 ,比如 :confirm点击了确定做什么事情,点击了取消又做什么事情 3: prompt 弹窗输入 ; ...
  • 变频器使用方式都是大同小异,介绍几种常用简单控制变频器方法。 一.变频器主电路接线方法: R S T这个接线端子是变频器电源进线端, 根火线接入。U V W是出线端接需要控制电机。 首先, 变频器有...
  • 便可以顺利安装第方库,这是最常用的。 方法二:手动下载第方库,在使用pip安装,这种方式需要手动下载安装包(压缩文件)。常用于网络比较差的情况(或者无网络)。具体步骤如下: step1:下载安装包 ...
  • Linux之vim的常用方式

    2019-09-29 08:56:06
    vim的三种模式 vim下有三种模式,分别是: 命令模式 刚进入vim时的模式,此状态下敲击键盘会被vim识别为命令,而非输入字符。比如此时按下i,并不会输入一个字符,i被当作了一个命令。 2.插入模式 当在命令...
  • C++求三个数最大值的三种方法

    千次阅读 2021-02-19 13:04:57
    这里我给出了初学者最常用的三种算法。 if语句嵌套的方式 这种方式是初学者最常用的一种方式,但并不是最简单的方式。 #include<iostream> using namespace std; int main() { int a, b, c; cout << ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,025
精华内容 410
关键字:

常用的三种输入方式是