1.最近好久没有更新自己的博客了,一直在考虑自己应该写一些什么。4.2日从苏州回到南京的路上感觉自己的内心些崩溃和失落,我就不多说了? 猛然之间我认为自己需要找一下内心的平衡。决定开发属于自己一套快速开发的JS 框架。因为早前也一直想开发一套快速的JS 框架,但是种种原因一直没用突破点也就不了了之了,开发这套JS 的框架主要是为了方便自己使用以,及其他开发人员的使用。通用的功能包主要括JS 的校验 上传图片 视频 语音  以分页 时间插件的选择 和ajax 请求以及其他的第三方的插件的混合使用等等 。
2. 对于开发人员 无论是做PC端还是移动端使用传统的第三方插件比较多(主要包括JS 的验证 以及上传 文件插件的使用等等。虽然现在移动端使用JqueryWeUI 的比较多,但是还是脱离不了这些通用的功能),而且在多个页面使用大多数雷同的JS 造成了页面的JS 过多冗余,例如 首次加载页面过慢 直接影响到用户的体验,而且代码显示的过于冗余 以及繁琐 和复杂,如果有人离职了 造成了 后期维护人员 非常的头疼。所以基于这些原因以及和内心找到平衡我决定开发一套属于自己的快速开发的JS 框架,方便开发人员以及其他人员尽心学习和维护。
3.对于这个快速开发的JS 框架我想了好久,同时也琢磨了好久,到底什么才是我们需要的框架 高效 快捷  快速 方便 等等RapidDevelopmentFramework 就是具有这些个特点。因此我决定采用面向对象的方法进行封装属于自己的一套JS 类库。

4.废话不多说 直接上代码。以下代码全部采用面向对象的方法进行开发,如有部分的猿们理解不了多看看JavaScript 原理就适应了。

/****************************************************
*作者:LowKeyC
*说明:RapidDevelopmentFramework工具箱,版本2.0
*版本号:V2.0
*创建日期:2017年6月25日 星期日
*****************************************************/

/*PC端或者移动端只需要引用 jquery-1.7.1  以上版本即可*/
/*RapidDevelopmentFramework库是依赖于于Jquery类库进行重新封装的一套开发的框架*/
/*目的是为了方便开发人员进行快速的进行开发:主要包括通用的的验证,以及弹出的消息框 以及浏览器的信息,以及一些PC 以及移动端通用的功能的封装*/ /*基于当前主流的开发的语言都可以进行使用.NET Java PHP Python ,Ruby 等等其他的一些开发语言*/ var RapidDevelopmentFramework =
{
//浏览器的信息
BrowserInfo: {
//版本信息
Versions: function () {
var u = navigator.userAgent;
var app = navigator.appVersion;
return {//移动终端浏览器版本信息
trident: u.indexOf("Trident") > -1, //IE内核
presto: u.indexOf("Presto") > -1, //opera内核
webKit: u.indexOf("AppleWebKit") > -1, //苹果、谷歌内核
gecko: u.indexOf("Gecko") > -1 && u.indexOf("KHTML") == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf("Android") > -1 || u.indexOf("Linux") > -1, //android终端或者uc浏览器
iPhone: u.indexOf("iPhone") > -1 || u.indexOf("Mac") > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf("iPad") > -1, //是否iPad
webApp: u.indexOf("Safari") == -1 //是否web应该程序,没有头部与底部
};
},
//语言信息
Language: (navigator.browserLanguage || navigator.language).toLowerCase()
}, //encodeURI,十六进制转义序列进行加密
EncodeURIString: function (_String)
{
if (_String != null && _String != "")
{
return encodeURI(_String);
}
return "";
}, //使用decodeURI进行在后台进行 十六进制的转义的序列进行解密
DecodeURIString:function(_String)
{
if(_String!=null && _String!="")
{
return decodeURI(_String);
}
return "";
}, //通过JS 来进行获取JS 的本地的时间 例如 2017/6/25/19:34
GetDateTimeString: function () {
//获取当前的时间
var date = new Date();
var seperator1 = "-";
var seperator2 = ":";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9)
{
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9)
{
strDate = "0" + strDate;
}
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + " " + date.getHours() + seperator2 + date.getMinutes() + seperator2 + date.getSeconds();//进行获取本地的时间的年月日以及时分秒 if(currentdate!=null && currentdate!="")
{
return currentdate;
}
return "";
}, //获取本地的经度以及纬度火星文进行获取
GetLocation:function(_LocationID){
var Location= document.getElementById("_LocationID");
function getLocation() {
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else
{
Location.innerHTML = "此浏览器暂时不支持!";
}
}
function showPosition(position)
{
Location.innerHTML = "Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude;
}
},
//通用的验证 手机 电话 以及数字 IP 地址 脚本 以及HTML和 密码 特殊的字符 以及SQL 注入 JS 注入等等
Validate: {
//检查手机号码格式
CheckPhone: function (_MPhoneNumber) {
var filter = /(^13\d{9}$)|(^14)[5,7]\d{8}$|(^15[0,1,2,3,5,6,7,8,9]\d{8}$)|(^17)[6,7,8]\d{8}$|(^18\d{9}$)/g;
return filter.test($.trim(_MPhoneNumber));
},
//检查固定电话格式
CheckTelephone: function (_MPhoneNumber) {
var filter = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
return filter.test($.trim(_MPhoneNumber));
},
//检查邮箱格式
CheckMail: function (_EMail) {
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return filter.test($.trim(_EMail));
},
//检查半角英数字
CheckString: function (_String) {
var filter = /^[\w]+$/;
return filter.test($.trim(_String));
},
//判断正数
CheckPNumber: function (_Number) {
var reg = /^\d+(?=\.{0,1}\d+$|$)/
if (reg.test($.trim(_Number))) {
return true;
}
return false;
},
//判断正数
CheckNumber: function (_Number) {
var reg = /^\\d+$/;
if (reg.test($.trim(_Number))) {
return true;
}
return false;
},
//检查正整数
CheckInt: function (_String) {
var filter = /^[0-9]*[1-9][0-9]*$/;
return filter.test($.trim(_String));
},
//检查数字
CheckNumberInt: function (_String) {
var filter = /^[0-9]*$/;
return filter.test($.trim(_String));
},
//检查证密码用(6~20位字母数字组合)
CheckPassWord: function (_String) {
var filter = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]{6,20})$/;
return filter.test($.trim(_String));
},
//检查decimal(8,2)
CheckDecimal: function (_String) {
var filter = /^(?!.{12,}$)\d+(\.\d{1,2})?$/;
return filter.test($.trim(_String));
}, //检查HTML和JS脚本进行
CheckHTML: function (_String) {
var filter = RegExp("[<>]");
return filter.test(_String);
}, //JS 脚本的检查 转化为转义字符 防止JS 攻击
CheckReplace: function (_String) {
return _String.replace(/[<>&"]/g, function (c) { return { '<': '<', '>': '>', '&': '&', '"': '"' }[c]; });
}, //JS 转化 HTML 防止JavaScript 脚本的攻击
CheckReplaceHtml: function (_String) {
var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"' };
return _String.replace(/&(lt|gt|nbsp|amp|quot);/ig, function (all, t) { return arrEntities[t]; });
}, //检查输入的特殊的字符
SpecialChar: function (_String) {
var Pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]");
//关于特殊的字符的验证
if (Pattern.test($.trim(_String))) {
return false;
}
return true;
}, //IP地址的验证
IPAddressUrl: function (_String) {
var Pattern = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
if (Pattern.test($.trim(_String))) {
return false;
}
return true;
},
//检查移动客户端
CheckMobile: function () {
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
return true;
}
else {
return false;
}
}, // 检查 SQL 注入 URL
CheckSqlUrl: function (_String) {
var sUrl = location.search.toLowerCase();
var sQuery = sUrl.substring(sUrl.indexOf("=") + 1);
re = /select|update|delete|truncate|join|union|exec|insert|drop|count|'|"|;|>|<|%/i;
if (re.test(sQuery)) {
return true;
}
return false;
}, //检查SQL 普通输入的注入
CheckSqlForm: function (_String) {
re = /select|update|delete|exec|count|'|"|=|;|>|<|%/i;
if (re.test(_String.value)) {
_String.value = "";
_String.className = "errInfo";
_String.focus();
return false;
}
return true;
}, }, //对话框
Dialog: {
//提示窗口
NotifyBox: function () { },
//弹框消息,默认使用
MessageBox: function () { },
//加载Load
LoadingObject: function () {
},
//取消Loading
UnLoadingObject: function () {
}
}, //AJAX 异步进行传输数据 并进行响应
RequestAjaxServiceAction: {
//BL请求方法
BLRequest: function () {
//先判断是否需要对请求对象进行Enable
var BLParameter;
var LoadingIDList;
var ArgLength = arguments.length;
switch (ArgLength) {
case 1:
BLParameter = arguments[0];
break;
case 2:
BLParameter = arguments[0];
LoadingIDList = arguments[1];
break;
default:
break;
}
//BL请求实体(请求的队形)
var MyBLRequestContainer = new Object();
MyBLRequestContainer.FunctionRouteName = BLParameter.FunctionRouteName;
MyBLRequestContainer.RequestObjectString = JSON.stringify(BLParameter.BLRequestObject);//JSON序列化
var PostDataString = JSON.stringify(MyBLRequestContainer);//JSON序列化
//成功回调
var SuccessFunction = function (Result, State, JQXHR) {
var MyBLResponseObject = new Object();
MyBLResponseObject = JSON.parse(JSON.parse(Result).ResponseObjectString);//JSON反序列化
BLParameter.BLResponse.Success(MyBLResponseObject);
} //失败回调
var ErrorFunction = function (Result, State, JQXHR) {
if (BLParameter.Debug == true) {
//是否Debug
alert(JSON.stringify(Result));
}
else {
alert("回调失败!");
}
} //主要是此处的异步的请求 进行调用Ajax 进行请求
$.ajax({
type: "POST",
url: MyBLRequestContainer.FunctionRouteName,//进行调用的路由的名称
data: PostDataString,//传输的数据 将传统的对象转化为JSON 字符串
success: SuccessFunction,//响应成功后的函数
error: ErrorFunction,//响应失败后的函数
dataType: "text",
contentType: "text/plain; charset=utf-8"
});
}
}, //动作的管理跳转的URL的字符串的解析
Action: {
//跳转页面
GoToPage: function (URL) {
window.location.href = URL;
},
//跳转到错误页面
GoToError: function () {
//跳转到错误页面
RapidDevelopmentFramework.Action.GoToPage("跳转到报错页面404!");
}
}, ///上传图片的处理
FileInputPicture: {
//是否选择上传图片 false否,true是
IsInput: false,
//图片数据 全部用二进制的数据进行存储
ImageData: null,
//图片类型,1 jpeg 2png
ImageType: 1,
//初始化
Init: function (AddImage_FileInput, Add_divUpdateImg) {
//先进行图片的销毁
$("#" + Add_divUpdateImg).fileinput("destroy");
var FileInputObject = $("#" + Add_divUpdateImg);
FileInputObject.val("");
var PreFileInputDomObject = FileInputObject[0];
PreFileInputDomObject.outerHTML = PreFileInputDomObject.outerHTML;
var NewFileInputObject = FileInputObject.clone();
FileInputObject.before(NewFileInputObject);
FileInputObject.remove(); //初始化数据
FileInputPicture.ImageData = null;
FileInputPicture.IsInput = false;
FileInputPicture.ImageType = 1; //初始化新增图片上传
$("#" + AddImage_FileInput).fileinput({
showUpload: false,
showCaption: false,
browseClass: "btn btn-success",
allowedFileTypes: ["image"],
allowedFileExtensions: ["jpg", "png"],
language: "zh",
maxFileCount: 1,
browseLabel: "选择图片",
browseIcon: "<i class=\"fa fa-picture\"></i> ", //选择APP启用页图片
previewFileIcon: "<i class='fa fa-king'></i>"
});
//新增图片清除上传
$("#" + AddImage_FileInput).on("fileclear", function (event) {
//初始化数据
$("#" + Add_divUpdateImg).show();
FileInputPicture.ImageData = null;
FileInputPicture.IsInput = false;
FileInputPicture.ImageType = 1;
}); //新增图片重置上传
$("#" + AddImage_FileInput).on("filereset", function (event) {
//初始化数据
$("#" + Add_divUpdateImg).show();
FileInputPicture.ImageData = null;
FileInputPicture.IsInput = false;
FileInputPicture.ImageType = 1;
}); //选择图片后触发
$("#" + AddImage_FileInput).on("fileloaded", function (event, file, previewId, index, reader) {
$("#" + Add_divUpdateImg).hide();
FileInputPicture.ChangeInput(file);
});
},
//选择文件上传
ChangeInput: function (MyFile) {
//隐藏编辑时图片
// $("#Add_imgUpdate").hide();
//检验是否为图像文件
if (!(MyFile.type == 'image\/jpeg' || MyFile.type == 'image\/png')) {
RapidDevelopmentFramework.Dialog.MessageBox("请上传jpeg或png格式的图片文件!", function () {
//图片不符合规定,重新初始化上传控件
FileInputPicture.Init();
});
return;
}
else {
var MaxSize = 1 * 1024 * 1024;
var size = MyFile.size;
if (size > MaxSize) {
RapidDevelopmentFramework.Dialog.MessageBox("请上传小于1M的图片文件!", function () {
//图片不符合规定,重新初始化上传控件
FileInputPicture.Init();
});
return;
}
var MyFileReader = new FileReader();
MyFileReader.onload = function (evt) {
var TempImage = this.result;
var img = new Image();
img.src = this.result;
//避免图片渲染导致图片高度和宽度不能读出来
img.onload = function () {
var width = img.width,
height = img.height;
//长宽比例
var Proportion = width / height;
Proportion = Proportion.toFixed(2); if (Proportion == 1) {
if (MyFile.type == 'image\/jpeg') {
TempImage = TempImage.replace('data:image/jpeg;base64,', '');
FileInputPicture.ImageType = 1;
} else {
if (MyFile.type == 'image\/png') {
TempImage = TempImage.replace('data:image/png;base64,', '');
FileInputPicture.ImageType = 2;
}
}
//图片数据
FileInputPicture.ImageData = TempImage;
//已经上传图片
FileInputPicture.IsInput = true;
} else {
RapidDevelopmentFramework.Dialog.MessageBox("图片宽高比为1:1,且大小不能超过1M!", function () {
//初始化增加合作伙伴Logo文件上传
FileInputPicture.Init();
return;
});
}
}
};
MyFileReader.readAsDataURL(MyFile);
} }
}, //时间控件的初始化作为参数的是时间控件的标签的ID
DataTimeCalender: function (StarTime, EndTime) {
//初始化时间控件 开始时间控件的初始化 开始时间一定要小于结束的时间
$('#' + StarTime).datetimepicker({
language: 'zh-CN',//显示中文
format: 'yyyy-mm-dd',//显示格式
minView: "month",//设置只显示到月份
autoclose: true,//选中自动关闭
todayBtn: true//显示今日按钮
}).on('change', function (ev) {
var startDate = $('#' + StarTime).val();
$("#" + StarTime).datetimepicker('setStartDate', startDate);
$("#" + StarTime).datetimepicker('hide'); }); //结束时间控件初始化 只能选择精确到今天的时间 其他时间超过的时间不可以选择
$('#' + EndTime).datetimepicker({
language: 'zh-CN',//显示中文
format: 'yyyy-mm-dd',//显示格式
minView: "month",//设置只显示到月份
autoclose: true,//选中自动关闭
todayBtn: true//显示今日按钮
}).on('change', function (ev) {
var EndTime = $('#' + EndTime).val();
$("#" +StarTime).datetimepicker('setEndDate', EndTime);
$("#" +EndTime).datetimepicker('hide');
}); }, ///上传视频的处理
FileInputVideo: {
//是否选择上传视频 false否,true是
IsInput: false,
//视频数据
VideoData: null,
//视频类型,1 mp4 2 其他类型的视频
VideoType: 1,
//初始化
Init: function (AddVideo_FileInput,Add_divUpdateVideo) {
//先进行视频的数据的销毁
$("#"+AddVideo_FileInput).fileinput("destroy");
var FileInputObject = $("#"+AddVideo_FileInput);
FileInputObject.val("");
var PreFileInputDomObject = FileInputObject[0];
PreFileInputDomObject.outerHTML = PreFileInputDomObject.outerHTML;
var NewFileInputObject = FileInputObject.clone();
FileInputObject.before(NewFileInputObject);
FileInputObject.remove();
//初始化数据
FileInputVideo.VideoData = null;
FileInputVideo.IsInput = false;
FileInputVideo.VideoType = 1; //初始化新增视频上传
$("#" + AddVideo_FileInput).fileinput({
showUpload: false,
showCaption: false,
browseClass: "btn btn-success",
allowedFileTypes: ["video"],
allowedFileExtensions: ["mp4"],
language: "zh",
maxFileCount: 1,//选择的视频的个数
browseLabel: "选择视频",
browseIcon: "<i class=\"fa fa-picture\"></i> ", //选择APP启用页视频
previewFileIcon: "<i class='fa fa-king'></i>"
});
//新增视频清除上传
$("#" + AddVideo_FileInput).on("fileclear", function (event) {
//初始化数据
$("#" + Add_divUpdateVideo).show();
FileInputVideo.VideoData = null;
FileInputVideo.IsInput = false;
FileInputVideo.VideoType = 1;
}); //新增视频重置上传
$("#" + AddVideo_FileInput).on("filereset", function (event) {
//初始化数据
$("#" + Add_divUpdateVideo).show();
FileInputVideo.VideoData = null;
FileInputVideo.IsInput = false;
FileInputVideo.VideoType = 1;
}); //选择视频后触发
$("#" + AddVideo_FileInput).on("fileloaded", function (event, file, previewId, index, reader) {
$("#"+Add_divUpdateVideo).hide();
FileInputVideo.ChangeInput(file); });
},
//选择文件上传
ChangeInput: function (MyFile) {
//隐藏编辑时视频
//检验是否为视频文件1.avi, 2.wma, 3.flash, 4.mp4,5.3GP 其他格式的视频目前没有编写后期完善
if (!(MyFile.type == 'video\/mp4'))
{
RapidDevelopmentFramework.Dialog.MessageBox("请上传mp4视频文件!", function () {
//视频不符合规定,重新初始化上传控件
FileInputVideo.Init();
});
return;
}
else
{
var MaxSize = 1 * 8192 * 8192;
var size = MyFile.length;
if (size > MaxSize) {
RapidDevelopmentFramework.Dialog.MessageBox("请上传小于20M的视频文件!", function () {
//视频不符合规定,重新初始化上传控件
FileInputVideo.Init();
});
return;
}
var MyFileReader = new FileReader();
MyFileReader.onload = function (evt) {
var TempVideo = this.result; if (MyFile.type == 'video\/mp4') {
TempVideo = TempVideo.replace('data:video/mp4;base64,', '');
FileInputVideo.VideoType = 1;
} else {
TempVideo = null;
FileInputVideo.VideoType = 2;
}
//视频数据
FileInputVideo.VideoData = TempVideo; //已经上传视频
FileInputVideo.IsInput = true; };
MyFileReader.readAsDataURL(MyFile);
} }
},
//上传音频
UploadAudio: function()
{ }, //分页控件的初始化
PagePagination: function () { }, };

  

  

5. 因为RapidDevelopmentFramework.JS 全部都是基于面向对象进行开发的,所以在使用此框架的时候 ,直接调用里面的方法即可 方便 快捷高效,使用起来非常的方便。后期我会继续的进行完善这一套JS 类库的封装更多通用的方法。

以上内容全部是基于原创,如需引用 请进行标明请尊重个人的成果 谢谢!!!

封装的一套简单轻量级JS 类库(RapidDevelopmentFramework.JS)的更多相关文章

  1. 简单轻量级的一套JS 类库(RapidDevelopmentFramework.JS)

    1.最近好久没有更新自己的博客了,一直在考虑自己应该写一些什么.4.2日从苏州回到南京的路上感觉自己的内心些崩溃和失落,我就不多说了? 猛然之间我认为自己需要找一下内心的平衡.决定开发属于自己一套快速 ...

  2. 一套简单的web即时通讯——第一版

    前言 我们之前已经实现了 WebSocket+Java 私聊.群聊实例,后面我们模仿layer弹窗,封装了一个自己的web弹窗 自定义web弹窗/层:简易风格的msg与可拖放的dialog,生成博客园 ...

  3. 一套简单可依赖的Javascript库

    还是[百度]的产品——Tangram不是我偏心,百度不是我亲戚这东西看上去确实不错 Tangram是一套简单可依赖的Javascript库,主要分为Base和Component两部分.Base提供了开 ...

  4. 基于js-spark-md5前端js类库,快速获取文件Md5值

    js-spark-md5是歪果仁开发的东西,有点多,但是我们只要一个js文件即可,具体类包我存在自己的oschina上,下载地址:https://git.oschina.net/jianqingwan ...

  5. 超酷的实时颜色数据跟踪javascript类库 - Tracking.js

    来源:GBin1.com 今天介绍这款超棒的Javascript类库是 - Tracking.js,它能够独立不依赖第三方类库帮助开发人员动态跟踪摄像头输出相关数据. 这些数据包括了颜色或者是人, 这 ...

  6. 使用express+shell在服务器上搭建一套简单的前端部署系统

    前言 个人项目越来越多,部署需要频繁操作服务器,所以手动搭建一套简单的部署系统. 效果如图 其中包含 原生html+css+js项目,单页面react, vue, angular项目,实现了一键打包发 ...

  7. Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js

    Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一  三个基本的特性:封装.继承与多态1 1.2. 魔 ...

  8. Aurelia – 模块化,简单,可测试的 JS 框架

    Aurelia 是下一代 JavaScript 客户端框架,利用简单的约定来激发你的创造力.凭借其强大的专注于开发经验, Aurelia 可以使您不仅创造惊人的应用程序,同时也享受这个过程.它经过精心 ...

  9. 封装常用的js(Base.js)——【01】理解库,获取节点,连缀,

    封装常用的js(Base.js)——[01]理解库,获取节点,连缀,  youjobit07 2014-10-10 15:32:59 前言:       现如今有太多优秀的开源javascript库, ...

随机推荐

  1. C++用法总结

    1.C++的绝对值符号 如果是整形的,就是abs() 如果是浮点型的,是fabs() 这两个函数都从属于库函数math.h #include <cmath> or #include< ...

  2. 一个查询ip地址的mysql数据库--ip2nation

    http://ip2nation.com/ip2nation/Sample_Scripts/Country_Based_Redirect 并且已经集成进了laravel:https://github. ...

  3. Oracle 数据库创建(图形界面操作)

    Oracle 创建数据库图文分解: 1. 选择所有程序->Oracle-OraDb11g_home1->Configuration and Migration Tools -> Da ...

  4. 终端复用工具 tmux 基本操作教程

    简介 在 Linux 操作环境下,终端操作是发挥 Linux 强大命令功能的重要途径,但在本地主机操作中,针对不同任务开启不同的终端,在使用时进行频繁的终端切换在某些场合下是一种使人分心和疲惫的操作, ...

  5. awk.md

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的行编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分 ...

  6. Spring-IOC BeanFactory运行时动态注册bean

    在spring运行时,动态的添加bean,dapeng框架在解析xml的字段时,使用到了动态注册,注册了一个实现了FactoryBean类! 定义一个没有被Spring管理的Controller pu ...

  7. 【洛谷】【treap/堆】P2073 送花

    [题目描述:] 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花束,他不断地向里面添加花.他有以下几种操作: 操作 含义 1 W C 添加一朵美丽值为W,价格为C的花. 3 小 ...

  8. 搭建高可用mysql系列(2)-- Percona XtraDB Cluster 安装

    本文主要介绍在 centos 下 Percona XtraDB Cluster(下文简称PXC) 的安装, 个人的系统版本信息如下: [root@c2-d09 worker]# more /etc/r ...

  9. 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践

    20155314 2016-2017-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验知识点总结 (一)敏捷开发与XP 软件工程:把系统 ...

  10. sqoop-1.4.7 搭建

    sqoop搭建环境:   jdk1.8    hadoop分布式集群(HDFS)     HIVE(看使用情况) 下载网址:http://sqoop.apache.org/ 建议: sqoop1.4. ...