requireJS的基本用法
requireJS的基本用法
引言
目前项目中的前端架构采用的是RequireJS+AngularJS,小编在工作之余对这个前端框架比较感兴趣,在开始的
时候对这个框架不是很懂,因为里面有很多平台自己封装的东西,所以在理解起来不是很容易,经过这一段时间在项
目中的运用有了一定的理解,下面先来总结总结一下其中的一个技术点——RequireJS的基本用法。
基本介绍
RequireJS是一个JavaScript文件或者模块的加载器。它可以提高JavaScript文件的加载速度,避免不必要的
堵塞。它针对于在浏览器环境中使用做过专门的优化,但它也可以在其他的JavaScript环境中使用,像Node.js一样
可以在服务器上运行。说了这么多废话,其实它为我们提供了两种思路解决大量加载js文件带来的问题:
1、模块化组织JS
2、异步加载js文件
为什么需要用RequireJS?
当我们业务比较负载时候我们有时候需要在一个页面中引入大量的js文件,之前的ITOO中会见到一个页面引入
了很多的js文件,原先我们的写法是这样的:
这样写的有很多的缺点:
1、页面在加载的时候从上往下开始加载和渲染的,当页面有很多分散的JS文件的时候,页面会先加载和解析
头部的js文件(同步加载),此时页面渲染就被堵塞了,如果这些js文件请求的数量比较多,那么网页失去响应的时
间就会加长。
2、如果js文件之间是有相互依赖关系的,那么我们的js文件引入的顺序需要我们一定要注意,依赖性大的文件
一定在最后引入,但是当依赖关系非常复杂的时候,代码的编写和维护就非常复杂了。
然上面引入JS时候,对于第1点:首先:我们可以放在底部去加载,把所有JS放在
之前去,这样就会解决
了游览器堵塞的问题,其次我们可以把所有的JS文件打包成一个JS文件,但是依赖性(也就是顺序)我们还是没有办法
解决掉,所以我们引入了requireJS(优点:1、实现JS文件的异步加载,避免网页被堵塞。2、管理模块之间的依赖
性,便于代码的编写和维护。)。
requireJS的基本语法及用法
1、在官网上下载requireJS包,在我们页面的头部引入require.js文件,基本用法如下:
RequirJS测试
sync属性表明文件需要异步加载,IE不支持这个属性,只支持defer,所以上面把这2个属性都加上。接下来,看
看requireJS启动加载脚本的初始化方式,requireJS支持属性 data-main 这个属性来加载初始化的JS文件,其中
app.js文件也即是我们的入口(主)文件,如果我们的app.js文件的内容为空的话,加载顺序如下:
定义模块文件
首先看一个Demo的目录结构(webstorm开发):
RequireJS编写模块不同于其他脚本文件,它良好的使用define来定义一个作用域避免全局空间污染,它可以显
示出其依赖关系,并以函数(定义此模块的那个函数)参数的形式将这些依赖进行注入。大家如果对JS中的闭包比较熟
悉的话,这个东西非常的好理解,因为在我看来它就是解决js闭包解决的问题。
b.js中我们写一个简单例子:
/**
* Created by zhenghao on 2016/7/4.
*/
define(function(){
var add = function(x,y) {
return x + y;
};
return {
add : add
}
});
在入口文件app.js中写入一下内容:
/**
* Created by zhenghao on 2016/7/4.
*/
require(['app/b'], function (m){
console.log(m.add(1,3));
});
我们会在浏览器的console界面看到输入4,说明我们调用成功了,我们来看一下加载顺序:
当然我们也可以编写简单的键值对直接返回一个对象,从而解决全局变量的问题,如下:
a.js文件的内容:
/**
* Created by zhenghao on 2016/7/4.
*/
define(function () {
return {
color: "black",
size: "unisize"
}
});
app.js初始化文件:
require(['app/a'], function (m){
console.log(m);
});
运行结果:
直接返回一个对象,通过使用上面的方法我们可以想到可以解决全局变量概念,比如全局变量全部使用define函数
包围,什么时候需要全局变量的话,直接require([‘XX’],function(XX){})这样调用下,同时所有的JS都是异步
的,并不会堵塞加载。
requireJS配置项介绍
1、baseUrl :指定本地模块的基准目录,即本地模块的路径是相对于那个目录的,该属性通常有requireJS加载
时的data-main属性指定。比如如下代码
app.js文件的内容:
requirejs.config({
baseUrl: 'RequireJS/app'
});
requirejs(['a','b','c'],function(a,b,c){
});
我们在浏览器中看到如下请求路径:
如上可以看到,View.html和RequireJS是同一个目录下的,都是放在requireJS文件夹里面的,所以定义
baseUrl:’RequireJS/app’ 会自动解析成 requireJSService/RequireJS/app/ 所以
requirejs([‘a’,’b’,’c’])的话,会自动到requireJSService/RequireJS/app/目录下去查找a.js,b.js,
c.js.找到了就可以加载出来.
如果未显示设置baseUrl,则默认值是加载require.js的html所处的位置,如果使用了data-main属性的话,则该
路径变成了baseUrl.如下代码:
app.js文件的内容:
requirejs(['a','b','c'],function(a,b,c){
});
如上显示:默认情况下是从data-main文件入口去加载RequireJS/app.js代码的,但是现在app.js中并没有设置
config配置项,所以使用requirejs([‘a’,’b’,’c’],function(a,b,c))的时候会继续加载RequireJS下面的
a.js,b.js,c.js,如果找到就加载,没有找到就显示404 not found,如上所示。
2、path :paths是映射那些不直接放在baseUrl指定的目录下的文件,设置paths的起始位置是相对于baseUrl
的,除非该path设置是以”/”开头或含有URL协议(http://或者https://).
app.js文件的内容如下:
requirejs.config({
baseUrl: 'RequireJS/lib',
paths: {
app: '../app'
}
});
requirejs(['app/a'],function(a){
});
可以看到paths是相对于baseUrl配置项生成的,baseUrl:’RequireJS/lib’下的所有js文件,但是paths下的
app:’../app’是相对于js/lib下设置的,’..’的解析到js目录下,然后就解析成RequireJS/app下,再
require([‘app/a’]),就解析到RequireJS/app/a.js了。
当我们把baseUrl注释掉的话,a.js可定就找不到了,此时加载的路径如下:
requirejs.config({
//baseUrl: 'RequireJS/lib',
paths: {
app: '../app'
}
});
requirejs(['app/a'],function(a){
})
3、skim参数: 理论上,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。但是实际
上,虽然已经有一部分流行的函数库(比如jQuery)符合AMD规范,更多的库并不符合,而skim解决了使用非AMD方式
定义的模块(如jquery插件)及其载入顺序,为那些没有使用define()来声明依赖关系,设置模块的”浏览器全局变量
注入”型脚本做依赖和导出配置。
app.js中的代码如下:
require.config({
baseUrl: 'RequireJS/lib',
paths: {
'app': '../app',
'temp':'../app/depBase',
'jquery':'../lib/jquery-1.7.1',
'a':'../app/a'
},
shim: {
'temp': { exports:'_',deps: ['jquery'] }
}
});
require(['temp','a'],function(base){
console.log(base);
});
文件加载顺序及加载结果
require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用
来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名
称;(2)deps数组,表明该模块的依赖性。
4、map参数: 对于给定的模块前缀,使用一个不同的模块ID来加载该模块。这个手段在大型项目中是非常重要
的,比如我们不同的模块需要加载不同版本的jquery文件,这就需要我们用到这个map来给我们解决了,比如我们
a.js文件需要依赖jquery-1.7.1,而我们的b.js文件需要依赖jquery-1.8.0。请看下面例子:
app.js文件中的代码:
requirejs.config({
map: {
'app/a': {
'jquery': 'RequireJS/lib/jquery-1.7.1.js'
},
'app/b': {
'jquery': 'RequireJS/lib/jquery-1.8.0.min.js'
}
}
});
/*require(['app/a'],function(jq){
});*/
require(['app/b'],function(jq){
});
a.js文件和b.js文件中的内容如下:
define(function (require, exports, module) {
var a = require(['jquery']);
});
define(function (require, exports, module) {
var b = require(['jquery']);
});
我们只加载b.js文件的时候的文件加载结果:
如果我们只加载a.js文件,那么我们会看到加载的是jquery-1.7.1.js文件。
5.config参数 :这个和我们c#中的配置文件一样,我们一般将易变的或者application级别的信息配置在
config里面,同样这个东西在requireJS中也是支持的,但是这就需要我们提供一种手段将里面的配置的信息传递到
每一个模块中,基于requirejs.config()的config配置项来实现。要获取这些信息的模块可以加载特殊的依
赖 ”moudle” ,并调用module.config().
app.js文件中的代码:
requirejs.config({
config: {
'app/c': {
name: '郑浩'
},
'app/d': {
age: 18
}
}
});
require(['app/c'],function(c){
console.log(c);
});
require(['app/d'],function(d){
console.log(d);
});
c.js文件和d.js文件中的代码如下:
define(function (require, exports, module) {
//其值是'郑浩'
var size = module.config().name;
return size;
});
define(['module'], function (module) {
var color = module.config().age;
return color;
});
最后赠送
其实require和我们之前过的ajax或者$http有类似地方就是在回调函数上面,当我们在加载出错的时候会走第二个
回调函数,代码如下:
require(['b'], function ($) {
//Do something with $ here
}, function (err) {
alert(err)
});
小结
以上就是小编对requireJS的一些理解和总结,其中的例子都是对现在项目中一个缩影,上面讲解的一些属性和
参数都在我们项目中出现过,也是我们在使用requireJS经常用到的一些基本知识,里面有一些东西还不是很明白,
需要在项目中继续学习和研究,希望对读者有些帮助
你可能感兴趣的:(转载)
Android GreenDao介绍和Generator生成表对象代码
目录(?)[-]介绍创建工程转载请注明:http://blog.csdn.net/sinat_30276961/article/details/50052109最近无意中发现了GreenDao,然后查看了一些资料后,发现这个数据库框架很适合用,于是乎,查看了官网的api,并自己写了一个小应用总结一下它的使用方法。介绍按照国际惯例,在开篇,总要先介绍一下什么是GreenDao吧。首先需要说明的是Gr
如何学好图像处理——从小白到大神?
chentengkui
图像处理
如何学好图像处理——从小白到大神?标签:图像处理学习方法2016-02-2617:4818439人阅读评论(25)收藏举报分类:学习方法与方法论(13)版权声明:本文为博主原创文章,未经博主允许不得转载。什么是数字图像处理?历史、以及它所研究的内容。说起图像处理,你会想到什么?你是否真的了解这个领域所研究的内容。纵向来说,数字图像处理研究的历史相当悠久;横向来说,数字图像处理研究的话题相当广泛。数
高铁站违规撑伞识别误检率↓79%:陌讯多模态融合算法实战解析
2501_92722744
算法 人工智能 目标检测 计算机视觉 目标跟踪
原创声明本文为原创技术解析,核心技术参数与架构参考自《陌讯技术白皮书》,禁止未经授权的转载与改编。一、行业痛点:密集场景下的违规撑伞识别难题在高铁站、地铁站等交通枢纽,违规撑伞(如非雨天在站台、通道内持伞)可能引发客流拥堵、设备刮擦等安全隐患。然而,传统视觉识别方案面临三大核心挑战:环境干扰大:进出站口光线突变(正午强光/夜间弱光)导致伞面特征提取不稳定,某枢纽站点实测数据显示,阴雨天违规撑伞识别
建筑施工场景下漏检率↓76%!陌讯多模态融合算法在工程安全监控的落地实践
2501_92722744
大数据 算法 目标跟踪 人工智能 计算机视觉 目标检测
原创声明本文为原创技术解析,核心技术参数与架构设计引用自《陌讯技术白皮书》,转载请注明来源。一、行业痛点:建筑施工监控的技术瓶颈建筑施工场景的安全监控长期面临多重技术挑战:数据支撑:据《2023建筑施工安全自动化监控报告》显示,传统监控系统对“未佩戴安全帽”“高空抛物”等危险行为的漏检率超35%,误报率高达42%,导致安全事故响应滞后[7]。场景难点:工地存在强光直射(正午阳光)、动态遮挡(塔吊/
想踩着我往上爬的闺蜜,栽了!
木木爱电影
来源微信公众号:芒小芒,如需转载请联系该公众号,谢谢。011999年7月,一出考场,我就感觉自己考砸了。收拾完行李,家都没回,我直接投奔在城里做服装生意的表哥。表哥早些年在南方工厂打工,攒下资本,从小摊起,打拼七八年,终于在这座省会城市市中心商厦里占据一席之地。表哥店里只卖女装,二十来平米的空间,摆着一件件设计新颖、做工精良的时装——表哥说,世界上最好挣的就是孩子和女人的钱。服装这个行业,不干不知
【WLAN】【调试】如何使用Wireshark分析加密的WiFi数据包
花神庙码农
wireshark 802.11 WIFI 报文 解密
作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)博客主页:花神庙码农,地址:https://blog.csdn.net/qxhgd系列专栏:WLAN技术如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!!关注✨、点赞、收藏、评论。如需转载请参考转载须知!!如何使用Wireshark分析加密的WiFi数据包引言加密方式上的限制解密报文操作编辑
RK3568笔记九十一:QT环境搭建
殷忆枫
RK3568学习笔记 笔记
若该文为原创文章,转载请注明原文出处。记录按照正点原子给的手册搭建QT环境参考《09【正点原子】ATK-DLRK3568_Qt开发环境搭建V1.2.pdf》一、安装1、下载https://mirrors.sau.edu.cn/qt/archive/online_installers/4.6/qt-unified-linux-x64-4.6.0-online.run2、赋予可执行权限chmod+xq
RK3568笔记九十二:QT使用Opencv显示摄像头
殷忆枫
RK3568学习笔记 笔记
若该文为原创文章,转载请注明原文出处。测试使用QT调用Opencv的API显示摄像头,板子为正点原子的RK3568,最终想实现的是在RK3568平台上使用Qt框架进行部署,利用NPU推理加速视频目标识别。此篇为测试功能代码为正点原子提供的代码,直接用来测试,在未看代码时一直不明白怎么添加opencv的库,后面明白了,只增加了下面的两行:CONFIG+=link_pkgconfigPKGCONFIG
【三维目标检测】Complex-Yolov4详解(二):模型结构
Coding的叶子
Python三维点云实战宝典 Complex-Yolo Complex-Yolov4 三维目标检测 目标检测 python
本文为博主原创文章,未经博主允许不得转载。本文为专栏《python三维点云从基础到深度学习》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/124017716”。Complex-Yolo网络模型的核心思想是用鸟瞰图BEV替换Yolo网络输入的RGB图像。因此,在完成BEV处理之后,模型的训练和推理过程基本和Yolo完全一致。Yolov
再谈fpga开发(fpga运行效率高的三大原因)
嵌入式-老费
再谈FPGA开发 fpga开发
【声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:
[email protected] 】fpga其实大家都不陌生,大家都知道fpga介于软件和硬件之间,适合处理底层信号的东西,运算速度比较快。知道多一点的同学,可能还知道fpga可以同时处理多个数据。再多一点的东西,可能就不清楚了。fpga本身频率不高,200M都算是很高的频率了。因此,毋庸置疑,fpga的效率就是在于它的并发性,这可以很大
【高频考点精讲】手写Web Worker通信:从主线程到子线程,掌握多线程编程技巧
全栈老李技术面试
前端高频考点精讲 前端 javascript html css 面试题 react vue
手写WebWorker通信:从主线程到子线程,掌握多线程编程技巧作者:全栈老李更新时间:2025年5月适合人群:前端初学者、进阶开发者版权:本文由全栈老李原创,转载请注明出处。今天咱们聊聊WebWorker这个前端性能优化的"核武器"。我是全栈老李,一个喜欢把复杂技术讲简单的技术博主。为什么需要WebWorker?想象你在餐厅点单,如果只有一个服务员(主线程),他既要接待顾客,又要去后厨炒菜,
动态链接库(Dynamic Link Library)学习笔记
peixian2003
编程
经常忘记http://blog.csdn.net/yxin1322/article/details/638156动态链接库(DynamicLinkLibrary)学习笔记作者:yxin1322blog:http://blog.csdn.net/yxin1322转载请注明出处我对动态链接和动态链接库的概念并不陌,但一直以来就停留在概念的层面上,没有更深入的了解。今天抽空看了一下有关动态链接和动态链接
数据库管理工具Navicat Premium 12
mythmayor
Tools 数据库 数据库管理工具 数据库管理 Navicat Premium Navicat
转载请注明出处:https://blog.csdn.net/mythmayor/article/details/89560919NavicatPremium是一套多连接数据库开发工具,让你在单一应用程序中同时连接多达七种数据库:MySQL、MariaDB、MongoDB、SQLServer、SQLite、Oracle和PostgreSQL,可一次快速方便地访问所有数据库。安装包及破解教程下载:已将
【OpenCV基础】凸包检测、Harris角点检测、Canny边缘检测
:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】:文章若有幸对你有帮助,可点赞收藏⭐不迷路:内容若有错误,敬请留言指正!原创文,转载请注明出处文章目录一、凸包检测API1.drawContours2.convexHull全部代码-有滑动条效果展示部分代码-无滑动条二、Harris角点检测角
打电话识别误报率↓82%:陌讯轻量化部署算法实战解析
2501_92474790
人工智能 算法 智慧城市 计算机视觉 目标检测 目标跟踪
原创声明:本文内容基于独立技术解析,部分数据引用自“陌讯技术白皮书”,严禁未经授权转载。摘要:针对边缘计算优化和复杂场景鲁棒性挑战,本文解析陌讯视觉算法在打电话识别中的轻量化部署方案。实测显示,该方案在误报率指标上较基线提升显著,适用于安防监控等场景。一、行业痛点打电话识别在安防监控中面临严峻挑战。行业报告显示,公共场所有效行为识别误报率超35%(来源:2024年《智能安防白皮书》)。具体难点包括
电线杆鸟巢识别误报率↓72%:陌讯多模态融合算法实战解析
2501_92474779
算法 人工智能 目标跟踪 计算机视觉 机器学习
原创声明本文为原创技术解析文章,核心技术参数与架构描述参考自《陌讯技术白皮书》,转载请注明来源。一、行业痛点:电线杆鸟巢识别的现实挑战电力巡检领域中,电线杆鸟巢被列为重要安全隐患之一。据电力行业运维报告显示,传统机器视觉系统在该场景下存在三大核心问题:复杂背景干扰:鸟巢与枯枝、塑料杂物的视觉特征高度相似,导致误报率超35%环境适应性差:逆光、阴雨等天气下识别准确率骤降40%以上边缘部署瓶颈:变电站
驾乘场景下漏检率↓76%!陌讯动态特征融合算法在安全带穿戴识别中的实战优化
2501_92474779
人工智能 目标跟踪 计算机视觉 算法 目标检测
原创声明本文为原创技术解析,核心技术参数与架构设计引用自《陌讯技术白皮书》,禁止未经授权的转载与篡改。一、行业痛点:安全带穿戴识别的现实挑战据交通部2023年道路运输安全报告显示,货运车辆与网约车的安全带穿戴识别场景中,传统算法存在三大核心问题:复杂光照干扰:逆光场景下(如清晨/傍晚行车),安全带特征被强光淹没,误报率高达52%;动态遮挡难题:驾驶员衣物(如外套、背包)覆盖安全带时,漏检率常超35
岸边垃圾识别准确率↑32%:陌讯多模态融合算法实战解析
2501_92474745
深度学习 人工智能 算法 目标检测 计算机视觉 视觉检测
原创声明本文为原创技术解析,核心技术参数与架构设计引用自《陌讯技术白皮书》,转载请注明来源。一、行业痛点:岸边垃圾识别的三大技术瓶颈岸边垃圾监测是水环境治理的重要环节,但传统视觉方案始终面临难以突破的技术壁垒:复杂背景干扰:岸边植被、岩石、水面反光等与垃圾目标特征高度相似,某环保机构报告显示,传统模型误将水草识别为塑料袋的概率超35%;动态环境鲁棒性不足:早晚光照差异(逆光场景亮度差可达2000l
Coze 开源了!所有人都可以免费使用了
Immerse666
开源 COZE 工作流 智能体 人工智能
大家好,我是Immerse,一名独立开发者、内容创作者、AGI实践者。关注公众号:#沉浸式趣谈,获取最新文章(更多内容只在公众号更新)个人网站:https://yaolifeng.com也同步更新。转载请在文章开头注明出处和版权信息。我会在这里分享关于编程、独立开发、AI干货、开源、个人思考等内容。如果本文对您有所帮助,欢迎动动小手指一键三连(点赞、评论、转发),给我一些支持和鼓励,谢谢!今天字节
使用 MySQLRouter 部署 InnoDB ClusterSet
转载并翻译:https://www.percona.com/blog/innodb-clusterset-deployment-with-mysqlrouter/这篇博文将介绍InnoDBClusterSet环境的基本设置,该环境通过将主InnoDBCluster与备用位置/不同数据中心的一个或多个副本关联起来,为InnoDBCluster部署提供容灾能力。InnoDBClusterSet通过特定
念头(转载)
缘匠
我看到的人,都是被我念头定义之后的人;我看到的事,都是被我念头定义之后的事;我看到的物,都是被我念头定义之后的物;我看到的世界,都是被我念头定义之后的世界;我看到的自己,都是被我念头定义之后的自己;我认为的真相,都是被我念头定义之后的真相。外面没有别人,只有我的念头。我都活在自己念头的世界里:要么天堂,要么地狱,要么一会儿天堂,要么一会儿地狱。我的感觉好,就是心中升起好的念头;我的感觉不好,就是心
代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南
生信学习者1
代谢组数据分析 (2025版) 数据分析 数据挖掘 r语言 数据可视化
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!文章目录介绍加载R包数据准备原始数据处理导入massDataset数据对象交互图数据探索更新样本表格信息峰分布情况缺失值情况数据清洗数据质量评估去除噪声代谢特征过滤立群样本填补缺失值数据标准化和整合预处理后评估代谢物注释增加MS2图谱到数据对象数据库1注释数据库2注释数据库3注释结果统计分析剔除无注释代谢物追踪数据对象的相
中国合伙人
半栊
转载人:陈诗瑶梦想是什么,梦想就是一种让你感到坚持就是幸福的东西。年轻气盛的时候如果被人欺负了,总会恨恨地想以后一定要混出个名堂来,好让人刮目相看,可当真有这么一天的时候,却又想不起去恨了,原来真正的强大是宽容,不是原谅别人,而是放过自己。不要总是在过去的回忆里缠绵,昨天的太阳,晒不干今天的衣裳。
一人
歪枣裂瓜耶
我独自行走在世界的每个角落留下一个个脚印我曾站在山顶俯视也曾面朝大海也曾走在拥挤的人潮然而还有某些角落我未曾触碰我有一个小梦想活着的时候走遍每处力所能及的地方世界之大我愿每个角落留下我的足印PS:原创作品,请勿转载,谢谢!
Java8新特性详解
菩提石
java JAVA小知识 java8 新特性
转载于:https://www.cnblogs.com/onetwo/p/8526374.html前言:Java8已经发布很久了,很多报道表明Java8是一次重大的版本升级。在JavaCodeGeeks上已经有很多介绍Java8新特性的文章,例如PlayingwithJava8–LambdasandConcurrency、Java8DateTimeAPITutorial:LocalDateTime
RK3568笔记九十三:基于RKNN Lite的YOLOv5目标检测
殷忆枫
RK3568学习笔记 笔记 YOLO
若该文为原创文章,转载请注明原文出处。一、介绍Yolov5是一种目标检测算法,属于单阶段目标检测方法,是在COCO数据集上预训练的物体检测架构和模型系列,它代表了Ultralytics对未来视觉AI方法的开源研究,其中包含了经过数千小时的研究和开发而形成的经验教训和最佳实践。最新的YOLOv5v7.0有YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x等,除了目标检测,
FBI教你读心术
我喜欢杀生丸
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!http://www.ufochn.com/forum.php?mod=viewthread&tid=4747&extra=page%3D1FBI教你破解身体语言第一部分前言我知道你在想什么坐在桌子另一端的那个男
“星链”计划对通信及互联网产业影响何在
Lzb6
学号:20000300056姓名:刘照标转载自公众号赛迪智库作者赵燕温晓军【嵌牛导读】2019年5月24日,美国SpaceX公司以一箭多星的方式发射了60颗“星链”卫星,引起全球高科技业界的广泛关注。马斯克的SpaceX公司于2015年提出“星链”计划,预计到2025年完成卫星组网部署,将向全球终端用户提供至少1Gbps/秒、最高可达23Gbps/秒的低延迟、高带宽的网络宽带服务。“星链”计划的实
七步定位 OceanBase 登录报错
爱可生开源社区
mysql oceanbase 数据库 ActionDB
本文将为大家总结OceanBase集群登录时常见报错“Accessdenied”的排查步骤。作者:何文超,爱可生南区交付服务部DBA团队成员。主要负责MySQL故障处理,MySQL高可用架构改造,OceanBase相关技术支持。爱好足球,羽毛球。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文约600字,预计阅读需要3分钟。问题背景近期,生产环境通过客户端工具可正常
玄幻小说 《圣爱》 第五十二章 复仇之矛(上)
碧海潮生2019
作者:极天圣洺欢迎转载!转载注明“作者:极天圣洺”即可。图片发自App圣爱第一部跨世之恋第五十二章复仇之矛(上)有诗为证:“众花遮眼心迷离,万相云烟是非地,错综因缘际会时,苦海浮沉何待日!叹世人,望月之人何数几,何数几?肉眼凡胎,只在轮回,苦海无边,唯回头,方有禅悟向月明!得悟几何,叹兮!怜兮!不争兮!自心作的是,莫论他人!概莫是矣!”正文这是一个极为朴素的茅草屋,茅草屋周围,有八个光膜覆盖的通道
对股票分析时要注意哪些主要因素?
会飞的奇葩猪
股票 分析 云掌股吧
众所周知,对散户投资者来说,股票技术分析是应战股市的核心武器,想学好股票的技术分析一定要知道哪些是重点学习的,其实非常简单,我们只要记住三个要素:成交量、价格趋势、振荡指标。
一、成交量
大盘的成交量状态。成交量大说明市场的获利机会较多,成交量小说明市场的获利机会较少。当沪市的成交量超过150亿时是强市市场状态,运用技术找综合买点较准;
【Scala十八】视图界定与上下文界定
bit1129
scala
Context Bound,上下文界定,是Scala为隐式参数引入的一种语法糖,使得隐式转换的编码更加简洁。
隐式参数
首先引入一个泛型函数max,用于取a和b的最大值
def max[T](a: T, b: T) = {
if (a > b) a else b
}
因为T是未知类型,只有运行时才会代入真正的类型,因此调用a >
C语言的分支——Object-C程序设计阅读有感
darkblue086
apple c 框架 cocoa
自从1972年贝尔实验室Dennis Ritchie开发了C语言,C语言已经有了很多版本和实现,从Borland到microsoft还是GNU、Apple都提供了不同时代的多种选择,我们知道C语言是基于Thompson开发的B语言的,Object-C是以SmallTalk-80为基础的。和C++不同的是,Object C并不是C的超集,因为有很多特性与C是不同的。
Object-C程序设计这本书
去除浏览器对表单值的记忆
周凡杨
html 记忆 autocomplete form 浏览
&n
java的树形通讯录
g21121
java
最近用到企业通讯录,虽然以前也开发过,但是用的是jsf,拼成的树形,及其笨重和难维护。后来就想到直接生成json格式字符串,页面上也好展现。
// 首先取出每个部门的联系人
for (int i = 0; i < depList.size(); i++) {
List<Contacts> list = getContactList(depList.get(i
Nginx安装部署
510888780
nginx linux
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源
java servelet异步处理请求
墙头上一根草
java 异步返回 servlet
servlet3.0以后支持异步处理请求,具体是使用AsyncContext ,包装httpservletRequest以及httpservletResponse具有异步的功能,
final AsyncContext ac = request.startAsync(request, response);
ac.s
我的spring学习笔记8-Spring中Bean的实例化
aijuans
Spring 3
在Spring中要实例化一个Bean有几种方法:
1、最常用的(普通方法)
<bean id="myBean" class="www.6e6.org.MyBean" />
使用这样方法,按Spring就会使用Bean的默认构造方法,也就是把没有参数的构造方法来建立Bean实例。
(有构造方法的下个文细说)
2、还
为Mysql创建最优的索引
annan211
mysql 索引
索引对于良好的性能非常关键,尤其是当数据规模越来越大的时候,索引的对性能的影响越发重要。
索引经常会被误解甚至忽略,而且经常被糟糕的设计。
索引优化应该是对查询性能优化最有效的手段了,索引能够轻易将查询性能提高几个数量级,最优的索引会比
较好的索引性能要好2个数量级。
1 索引的类型
(1) B-Tree
不出意外,这里提到的索引都是指 B-
日期函数
百合不是茶
oracle sql 日期函数 查询
ORACLE日期时间函数大全
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
Year:
yy two digits 两位年 显示值:07
yyy three digits 三位年 显示值:007
线程优先级
bijian1013
java thread 多线程 java多线程
多线程运行时需要定义线程运行的先后顺序。
线程优先级是用数字表示,数字越大线程优先级越高,取值在1到10,默认优先级为5。
实例:
package com.bijian.study;
/**
* 因为在代码段当中把线程B的优先级设置高于线程A,所以运行结果先执行线程B的run()方法后再执行线程A的run()方法
* 但在实际中,JAVA的优先级不准,强烈不建议用此方法来控制执
适配器模式和代理模式的区别
bijian1013
java 设计模式
一.简介 适配器模式:适配器模式(英语:adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。 &nbs
【持久化框架MyBatis3三】MyBatis3 SQL映射配置文件
bit1129
Mybatis3
SQL映射配置文件一方面类似于Hibernate的映射配置文件,通过定义实体与关系表的列之间的对应关系。另一方面使用<select>,<insert>,<delete>,<update>元素定义增删改查的SQL语句,
这些元素包含三方面内容
1. 要执行的SQL语句
2. SQL语句的入参,比如查询条件
3. SQL语句的返回结果
oracle大数据表复制备份个人经验
bitcarter
oracle 大表备份 大表数据复制
前提:
数据库仓库A(就拿oracle11g为例)中有两个用户user1和user2,现在有user1中有表ldm_table1,且表ldm_table1有数据5千万以上,ldm_table1中的数据是从其他库B(数据源)中抽取过来的,前期业务理解不够或者需求有变,数据有变动需要重新从B中抽取数据到A库表ldm_table1中。
HTTP加速器varnish安装小记
ronin47
http varnish 加速
上午共享的那个varnish安装手册,个人看了下,有点不知所云,好吧~看来还是先安装玩玩!
苦逼公司服务器没法连外网,不能用什么wget或yum命令直接下载安装,每每看到别人博客贴出的在线安装代码时,总有一股羡慕嫉妒“恨”冒了出来。。。好吧,既然没法上外网,那只能麻烦点通过下载源码来编译安装了!
Varnish 3.0.4下载地址: http://repo.varnish-cache.org/
java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度
bylijinnan
java
public class LongestSymmtricalLength {
/*
* Q75题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。
* 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
*/
public static void main(String[] args) {
Str
学习编程的一点感想
Cb123456
编程 感想 Gis
写点感想,总结一些,也顺便激励一些自己.现在就是复习阶段,也做做项目.
本专业是GIS专业,当初觉得本专业太水,靠这个会活不下去的,所以就报了培训班。学习的时候,进入状态很慢,而且当初进去的时候,已经上到Java高级阶段了,所以.....,呵呵,之后有点感觉了,不过,还是不好好写代码,还眼高手低的,有
[能源与安全]美国与中国
comsci
能源
现在有一个局面:地球上的石油只剩下N桶,这些油只够让中国和美国这两个国家中的一个顺利过渡到宇宙时代,但是如果这两个国家为争夺这些石油而发生战争,其结果是两个国家都无法平稳过渡到宇宙时代。。。。而且在战争中,剩下的石油也会被快速消耗在战争中,结果是两败俱伤。。。
在这个大
SEMI-JOIN执行计划突然变成HASH JOIN了 的原因分析
cwqcwqmax9
oracle
甲说:
A B两个表总数据量都很大,在百万以上。
idx1 idx2字段表示是索引字段
A B 两表上都有
col1字段表示普通字段
select xxx from A
where A.idx1 between mmm and nnn
and exists (select 1 from B where B.idx2 =
SpringMVC-ajax返回值乱码解决方案
dashuaifu
Ajax springMVC response 中文乱码
SpringMVC-ajax返回值乱码解决方案
一:(自己总结,测试过可行)
ajax返回如果含有中文汉字,则使用:(如下例:)
@RequestMapping(value="/xxx.do") public @ResponseBody void getPunishReasonB
Linux系统中查看日志的常用命令
dcj3sjt126com
OS
因为在日常的工作中,出问题的时候查看日志是每个管理员的习惯,作为初学者,为了以后的需要,我今天将下面这些查看命令共享给各位
cat
tail -f
日 志 文 件 说 明
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信
[应用结构]应用
dcj3sjt126com
PHP yii2
应用主体
应用主体是管理 Yii 应用系统整体结构和生命周期的对象。 每个Yii应用系统只能包含一个应用主体,应用主体在 入口脚本中创建并能通过表达式 \Yii::$app 全局范围内访问。
补充: 当我们说"一个应用",它可能是一个应用主体对象,也可能是一个应用系统,是根据上下文来决定[译:中文为避免歧义,Application翻译为应
assertThat用法
eksliang
JUnit assertThat
junit4.0 assertThat用法
一般匹配符1、assertThat( testedNumber, allOf( greaterThan(8), lessThan(16) ) );
注释: allOf匹配符表明如果接下来的所有条件必须都成立测试才通过,相当于“与”(&&)
2、assertThat( testedNumber, anyOf( g
android点滴2
gundumw100
应用服务器 android 网络应用 OS HTC
如何让Drawable绕着中心旋转?
Animation a = new RotateAnimation(0.0f, 360.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
a.setRepeatCount(-1);
a.setDuration(1000);
如何控制Andro
超简洁的CSS下拉菜单
ini
html Web 工作 html5 css
效果体验:http://hovertree.com/texiao/css/3.htmHTML文件:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>简洁的HTML+CSS下拉菜单-HoverTree</title>
kafka consumer防止数据丢失
kane_xie
kafka offset commit
kafka最初是被LinkedIn设计用来处理log的分布式消息系统,因此它的着眼点不在数据的安全性(log偶尔丢几条无所谓),换句话说kafka并不能完全保证数据不丢失。
尽管kafka官网声称能够保证at-least-once,但如果consumer进程数小于partition_num,这个结论不一定成立。
考虑这样一个case,partiton_num=2
@Repository、@Service、@Controller 和 @Component
mhtbbx
DAO spring bean prototype
@Repository、@Service、@Controller 和 @Component 将类标识为Bean
Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类
java 多线程高并发读写控制 误区
qifeifei
java thread
先看一下下面的错误代码,对写加了synchronized控制,保证了写的安全,但是问题在哪里呢?
public class testTh7 {
private String data;
public String read(){
System.out.println(Thread.currentThread().getName() + "read data "
mongodb replica set(副本集)设置步骤
tcrct
java mongodb
网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下:
首先先去下载一个mongodb最新版,目前最新版应该是2.6
cd /usr/local/bin
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz
tar -zxvf mongodb-linux-x86_64-2.6.0.t
rust学习笔记
wudixiaotie
学习笔记
1.rust里绑定变量是let,默认绑定了的变量是不可更改的,所以如果想让变量可变就要加上mut。
let x = 1; let mut y = 2;
2.match 相当于erlang中的case,但是case的每一项后都是分号,但是rust的match却是逗号。
3.match 的每一项最后都要加逗号,但是最后一项不加也不会报错,所有结尾加逗号的用法都是类似。
4.每个语句结尾都要加分