面包屑思维模型实战模型错题集结构手册流程手册自我检测专题模块
-
微信小程序前端微信小程序前端易错点收集查看
-
css/less/sass样式控制在开发过程中的一些样式控制bug规避查看
-
tp5开发小程序tp5开发小程序时错误积累查看
-
PHP错题集PHP在实际开发过程中遇到的问题查看
-
MySql数据库使用MySql在实际开发中遇到的错误总结查看
-
TP5错题集积累tp5框架在实际开发过程中遇到的问题查看
-
uni-app爬坑主要用于uni-app项目中遇到的一些问题查看
-
Vue.js易错收集vue.js项目常见错误收集整理查看
-
uni-app开发微信小程序uni-app开发微信小程序的一些爬坑积累查看
-
LinuxLinux在部署、开发、运维时遇见的错误积累查看
-
安全设计常见安全设计查看
-
Redis项目中使用redis的相关错误积累查看
-
前端特效前端特效相关错题集查看
最新博文
-
关闭调试模式,异常时便不会返回含php错误信息的html页面
thinkphp关闭调试模式,异常时便不会返回含php错误信息的html页面
阅读更多风口下的猪2019-06-25【thinkphp】
-
as应对当前类和use引用的类同名
thinkphp在实际开发过程中经常以文件路径即命名空间区分不同类,这时经常会出现控制器里的类名和模型里的类名相同。如果控制器类直接use模型类,因为同名缘故会报错。解决方法除了直接new /....实例化,还可以在use后加as给引入类起别名。
例如:
控制器中的test.php想使用模型里的test.php,则可以as起别名
eg:use api/model/test as testModel
阅读更多风口下的猪2019-06-25【thinkphp】
-
位宽
计算机网络一.位宽定义
位宽就是内存或显存一次能传输的数据量。简单地讲就是一次能传递的数据宽度,就像公路的车道宽度,双向四车道、双向六车道,当然车道越多一次能通过的汽车就越大,所以位宽越大,一次性能舆的数据就越多,对显卡来说对性能的提高很明显。市场上的常见显存位宽有128位、192位、256位、384位、512位和1024位六种,人们习惯上叫的128位、256位显卡、384位显卡、512位显卡和1024位显卡就是指其相应的显存位宽。显存位宽越高,性能越好价格也就越高,因此中高位宽的显存更多应用于高端显卡,而普通显卡基本都采用128位显宽,而1024位显卡属于顶级了。三.显存带宽计算
显存带宽=显存频率X显存位宽/8,那么在显存频率相当的情况下,显存位宽将决定显存带宽的大小。同样显存频率为500MHz的128位和256位显存,那么它俩的显存带宽将分别为:128位=500MHz*128∕8=8GiB/s,而256位=500MHz*256∕8=16GiB/s,是128位的2倍,可见显存位宽在显存数据中的重要性。四.显存实质
显卡的显存是由一块块的显存芯片构成的,显存总位宽同样也是由显存颗粒的位宽组成,显存位宽=显存颗粒位宽×显存颗粒数。显存颗粒上都带有相关厂家的内存编号,可以去网上查找其编号,就能了解其位宽,再乘以显存颗粒数,就能得到显卡的位宽。
阅读更多风口下的猪2019-06-11【计算机网络】
-
总线
计算机网络总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。
总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。
在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。
总线可同时传输的数据数就称为宽度(width),以比特为单位,总线宽度愈大,传输性能就愈佳。
总线的带宽(即单位时间内可以传输的总数据数)为:总线带宽 = 频率 x 宽度(Bytes/sec)。
当总线空闲(其他器件都以高阻态形式连接在总线上)且一个器件要与目的器件通信时,发起通信的器件驱动总线,发出地址和数据。其他以高阻态形式连接在总线上的器件如果收到(或能够收到)与自己相符的地址信息后,即接收总线上的数据。发送器件完成通信,将总线让出(输出变为高阻态)。
阅读更多风口下的猪2019-06-11【计算机网络】
-
telnet命令的使用方法
软件开发Telnet 命令使用方法
Telnet 命令允许您与使用 Telnet 协议的远程计算机通讯。运行 Telnet 时可不使用参数,以便输入由 Telnet 提示符 (Microsoft Telnet>) 表明的 Telnet 上下文。可从 Telnet 提示符下,使用 Telnet 命令管理运行 Telnet 客户端的计算机。
Telnet 客户端命令提示符接受以下命令:
open : 使用 openhostname 可以建立到主机的 Telnet 连接。
close : 使用命令 close 命令可以关闭现有的 Telnet 连接。
display : 使用 display 命令可以查看 Telnet 客户端的当前设置。
send : 使用 send 命令可以向 Telnet 服务器发送命令。支持以下命令:
ao : 放弃输出命令。
ayt : “Are you there”命令。
esc : 发送当前的转义字符。
ip : 中断进程命令。
synch : 执行 Telnet 同步操作。
brk : 发送信号。
上表所列命令以外的其他命令都将以字符串的形式发送至 Telnet 服务器。例如,sendabcd 将发送字符串 abcd 至 Telnet 服务器,这样,Telnet 会话窗口中将出现该字符串。
quit
使用 quit 命令可以退出 Telnet 客户端。
set
使用带有下列参数之一的 set 命令为当前会话配置 Telnet 客户端。
bsasdel
Backspace 将作为删除而发送。
codeset option
阅读更多风口下的猪2019-06-09【软件开发】
-
Telnet是什么意思又是什么协议 Telnet有什么作用及功能
软件开发Telnet是什么协议?
Telnet服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用Telnet协议来工作。那么,什么是Telnet协议?它都具备哪些特点呢?
Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:
1)Telnet定义一个网络虚拟终端为远程系统提供一个标准接口。客户机程序不必详细了解远程系统,他们只需构造使用标准接口的程序;
2)Telnet包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项;
3)Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。
Telnet有什么用?
Telnet提供远程登录功能,使得用户在本地主机上运行Telnet客户端,就可登录到远端的Telnet服务器. 在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作. 这样就可以在本地远程操作和控制服务器。
阅读更多风口下的猪2019-06-09【软件开发】
-
复杂项目,含多个js库,当前库采用ajax时,$.get()参数问题
JavaScriptjs采用ajax中的$.POST或者$.GET等方法时。
一.容易出现的问题:
如果是在复杂库里会出现以下两种尴尬:
(1)使用../或者./ds到请求文件路径。会提示请求错误,请求报头中的请求路径总会带上当前js文件的路径放在前面,例如"http://localhost/rew/direfer/http://localhost/thinkphp/admin/index/cds"
$.post(".././thinkphp/admin/index/cds",function(data){
$("#imagelists").append('<div>'+data[0]+'</div>');
});
(2)使用http://或者://直接用网站根目录。此时又可能会因为会同源策略被误判成跨域,只得采用CORS(Cross-Origin Resource Sharing跨域资源共享)来完成,增加麻烦。
$.post("http://thinkphp/admin/index/cds",function(data){
$("#imagelists").append('<div>'+data[0]+'</div>');
});
二.解决方法:
向window对象注入一个url属性,即注册一个url全局变量,然后在$.POST或者$.GET中使用,这种方法特别适用于tp5这种单一访问入口的框架。
window.url="{:url('system/component/filesLis')}"
$.post(window.url,function(data){
$("#imagelists").append('<div>'+data[0]+'</div>');
});
阅读更多风口下的猪2019-06-09【JavaScript】
-
js全局变量的实质
JavaScript我们知道在javascript中定义全局变量有2种方式,本质上是等价的,都是向window对象注入属性或者方法。
// global.js
var g_name = "aty";
window. g_age = 25;
当global.js加载的时候,浏览器的全局对象window就会多出2个属性:g_name和g_age。
阅读更多风口下的猪2019-06-09【JavaScript】
-
js模块化编程—require()调用模块
JavaScriptrequire()调用模块主要是写在主模块main.js当中,实现main.js主模块调用各个模块的功能。
(1)语法结构
require(["depend"],function(de){
de.showAge();
de.showName();
});
表示调用depend模块,并调用其showAge和showName方法。
(2)注意点
回调函数中的参数列表要与模块数组参数顺序一一对应。可以不同名,但位置一定正确,不然不能正确调用模块的参数或者方法。
阅读更多风口下的猪2019-06-09【JavaScript】
-
js模块化编程–define()定义模块
JavaScriptdefine()定义模块主要有两种方式,即无依赖(独立模块)和有依赖两种方式。
一.无依赖(独立模块)
(1)语法结构:
define(
function(){
return{
test1:function(){},
test2:function(){}
}
}
);
在这个js文件中定义了一个模块,返回了一个对象,其包含两个方法用以外部文件调用,这是定义一个独立的模块;
(2)案例:
定义一个独立模块test.js
define(
function(){
return{
name:"张三",
age:22
}
}
);
这里定义了一个test模块,返回了包含name和age的一个对象,供其他模块调用.
二.有依赖
定义有依赖的模块,必须要define()增加模块数组参数
(1)语法结构
define(['test'],function(test){
return{
showName:function(){
console.log( test.name);
},
showAge:function(){
console.log(test.age);
}
}
});
这里定义了一个模块,其依赖于test模块,需要注意的是,requirejs默认js文件名为模块名,test模块即对应于test.js文件,在这个模块中,第一个参数是需要依赖的外部模块名称,是一个数组,也可以依赖多个,第二个参数是一个function,其形参test对应着test模块,所以在showName,showAge方法中课直接调用test的属性或方法;
阅读更多风口下的猪2019-06-09【JavaScript】
-
requirejs小结(1)
JavaScriptrequirejs遵循AMD规范,requirejs是一个容器,其含义包含三部分:
曾经,我们将一些js组件放到不同的文件,然后通过script标签引入,如果几个组件有依赖,那么要小心了,必须将被依赖的放到前面,否则的话会出现xxx is undefined或者xxx is not a function之类的错误。比如bootstrap显然是依赖jquery核心库的,所以jquery核心库文件必须先引入。项目小组件少依赖简单还好,要是项目大组件多依赖复杂就糟糕了。所以我们经常使用requirejs去开发js库比较多的项目。
只要按照requirejs规范写,会从一个根开始检查依赖,根据这些依赖关系自动的帮助我们插入script标签,我们不就再也不用纠结哪个标签应该放在前,哪个该放在后了。
- 所有js功能封装成一个库,使html页面引入js简洁;
- 调用某一函数或者库时,自动理清各库之间的依赖关系;
- 按需加载。
一.资源加载顺序
requirejs在项目中主要涉及到require.js本身和主模块main.js(主要用于配置和总调)以及模块js
加载顺序是require.js->main.js->mod.js(各模块)
二.requirejs的核心要决:
“两函数、一配置、一属性”
(一)data-main属性
requirejs需要一个根(主模块)来作为搜索依赖的开始,data-main用来指定这个根(主模块)。
<script src="scripts/require.js" data-main="scripts/main"></script>
这里就指定了根是main.js,只有直接或者间接与main.js有依赖关系的模块才会被插入到html中。
优化写法:
为了避免失去响应,require.js的引入采用defer和async异步加载,因为async在IE浏览器中不支持,所以两个属性共用。例如:
<script src="js/require.js" defer async="true" data-main="scripts/main"></script>
(二)require.config() 配置
require.config()在main.js的头部区域使用,用于自定义引入各种依赖(可以js可以css),而且路径不是默认与main.js在同一目录,可以定义。
通过这个函数可以对requirejs进行灵活的配置,其参数为一个配置对象json格式,配置项及含义如下:
baseUrl——用于加载模块的根路径。
paths——用于映射不存在根路径下面的模块路径。
shims——配置在脚本/模块外面并没有使用RequireJS的函数依赖并且初始化函数。假设underscore并没有使用 RequireJS定义,但是你还是想通过RequireJS来使用它,那么你就需要在配置中把它定义为一个shim。
deps——加载依赖关系数组
例如:
require.config({
//默认情况下从这个文件开始拉去取资源
baseUrl:'scripts/app',
//如果你的依赖模块以pb头,会从scripts/pb加载模块。
paths:{
pb:'../pb'
},
// load backbone as a shim,所谓就是将没有采用requirejs方式定义
//模块的东西转变为requirejs模块
shim:{
'backbone':{
deps:['underscore'],
exports:'Backbone'
}
}
});
(三)require()函数
该函数用于调用定义好的模块,可以是用define函数定义的,也可以是一个shim。
require()遵循AMD规范,其有两个参数:一个是模块数组,一个是回调函数。语法如下:
require(["param1,param2,param3"], function(param1,param2,param3){}
);
这里有几个注意点:
1.["param1,param2,param3"]中的param1、param2等是需引入模块的名称;
2.回调函数中的参数列表中,模块名以参数形式传入该函数,从而可以在回调函数内部就可以使用这些模块;
3.回调函数中的参数不一定要以模块名称传入,只要参数列表中位置确定,还可以使用其他符号表示,像_、!?等。例如
require(["param1,param2,param3"], function(param1,+,param3){});
可以用+作为实例化的对象,使用param2中的方法和属性
4.require()必须是前面的依赖模块加载成功后才能执行后面的回调函数。
例子如下:
//app.js
require(['logger'], function (logger) {//调用define定义的logger模块
logger.test("大熊");
console.log(logger.name);
});
//输出结果:
//大熊你好!
//不确定(取决于a模块的f方法)
//我是私有函数
//一个属性
(四)define()函数
该函数用于定义模块
define函数就受两个参数。
* 第一个是一个字符串数组,表示你定义的模块依赖的模块,这里依赖模块;
* 第二个参数是一个函数,参数是注入前面依赖的模块,顺序同第一参数顺序。在函数中可做逻辑处理,通过return一个对象暴露模块的属性和方法,不在return中的可以认为是私有方法和私有属性。例如:
//定义模块logger.js
define(["a"], function(a) { //依赖模块a'use strict';
function info() {
console.log("我是私有函数");
}
return {
name:"一个属性",
test:function(a){
console.log(a+"你好!");
a.f();
info();
}
}
});
(五)总结
define()是定义模块,其也需要依赖模块,require()是调用模块,调用的模块可以来自于define定义的也可以是一个shim。
阅读更多风口下的猪2019-06-09【JavaScript】