JavaScript高级,ES6 笔记 第四天(防抖、节流、深拷贝,事件总线)
JavaScript高级,ES6 笔记 第四天(防抖、节流、深拷贝,事件总线)
目录
throw
try catch finally
浅拷贝
深拷贝
1、递归方式
2.loadsh
3.JSON(推荐)
call
apply
bind
节流
防抖
视频案例
事件总线
throw
抛出自定义错误
Please input a number between 5 and 10:
Test Input
try catch finally
try里面放可能会出错误的代码 catch是当发生错误时执行的,且有参数,代表错误本身,finally表示不管有没有错误都会执行
123
浅拷贝
浅拷贝与深拷贝都只针对 引用类型
浅拷贝拷贝的是值(其实也是地址)
但是这样有问题:
const obj={
age :18,
obj1:{
sex:1
}
}
let o = {...obj}
let o1={}
Object.assign(o1,obj)
o1.obj1.sex = 2
console.log(o1);
console.log(obj);//sex都为2
欠拷贝只直接拷贝最外一层的值,而对于obj1来说,最外层的值是他的地址,所以就直接把地址给了o1,改变o1时也会改变obj
深拷贝
直接拷贝对象 不是地址
1、递归方式
设置函数,当originValue里面还有引用数据类型时,再次调用自己,只是将originValue改为里面的引用数据类型
这里比较难的地方在于 obj.self = obj ,也就是在obj中创造了self指向自己
在深拷贝时,传入map = new WeakMap()用于记录已经生成的应用对象,当拷贝到self时,这个时候又需要创造一个obj对象,这时可以将map中存储好的obj直接拿出来赋值给它
2.loadsh
先去下载库,并引入js
Lodash 简介 | Lodash 中文文档 | Lodash 中文网
调用cloneDeep()
var oo = _.cloneDeep(obj)
console.log(oo);
3.JSON(推荐)
JSON 语法 | 菜鸟教程
但是JSON有个问题,如果 对象有 函数 或者 symbol 则无法解析
call
可以改变this指向,在调用的时候用,第一个值就是设置指向
let obj={
}
function fn(x,y){
console.log(this);
}
fn.call(obj,1,2)//obj
apply
也是改变this指向 ,类似,传参必须为数组,这个用的比较多
let obj={
}
function fn(x,y){
console.log(this);//obj
console.log(x+y);//3
}
fn.apply(obj,[1,2])
值得注意的是,当不匹配时:
let obj={
}
function fn(x){
console.log(this);//obj
console.log(x);//1
}
fn.apply(obj,[1,2])
不会将数组全部传入
提供了另外一种求最大值的方式
let aa = [1,4,5,8,9]
//Math.max(1,4,7,98)
console.log(Math.max(...aa));
console.log(Math.max.apply(null,aa));
bind
前面两种都必须要调用函数,这个不需要,返回值是函数,其实就是改变原函数的this得到了一个新函数
let aa = [1,4,5,8,9]
function fn(){
console.log(this);
}
fn.bind(null)//无输出
let fun = fn.bind(aa);
fun()//a
小应用,点击按钮禁用,两秒开启
点击禁用,两秒开启
这个地方把定时器的this改为了btn,因为bind(this)里面这个this还是btn
节流
在一定的时间内只能执行一次,不管触发了多少次,在这个时间内只执行一次
例子:div滑动时,200ms内只改变span一次
var start = 0
document.querySelector('div').addEventListener('mousemove',function(){
let now = Date.now()
if(now-start>=200){
document.querySelector('span').innerHTML =i++
start = now
}
})
每次调用函数时都将此时的时间赋给now,当now与start差别大于200毫秒时才会改变i,然后将现在的时间赋给start以进行下次函数
上面用的是时间差值的方法,也可以采用定时器的方法
这里再加了一个immediate 变量,具体原理参照 防抖
cancel
throttle
防抖
触发后n秒内只执行一次,但是如果这段时间内还触发了,则会重新计算时间
也就是说,在一定时间内我不停的进行高速的事件触发,但是只会在最后一次触发结束后进行执行
应用场景:输入框,一般是等我输入完了才会去匹配
例子:在div滑动时 停下来一秒钟才会改变span
document.querySelector('div').addEventListener('mousemove',function(){
if(timeget) clearTimeout(timeget)
timeget = setTimeout(function(){
document.querySelector('span').innerHTML =i++
},1000)
})
例子:再次采用函数实现,需求是对输入框,输入结束一段时间后反应,这里还提供了应该取消接口,可以在这段时间结束前 结束响应
cancel
再加一个立即执行功能,即在输入时,第一次输入马上响应,后面输入则等待一段时间,然后再次输入又马上响应
let mydebounce = function(fn,delay,immediate=false){
let timeout = null
let immediate_done = false
let _debounce = function(){
if(timeout) clearTimeout(timeout)
if(!immediate_done && immediate){
fn.apply(this)
immediate_done = true
return
}
timeout = setTimeout(()=>{
fn.apply(this)
immediate_done = false
},delay)
}
_debounce.cancel = function(){
if(timeout) clearTimeout(timeout)
immediate_done = false
}
return _debounce
}
定义了 immediate表示是否需要这个功能,immediate_done判断是否完成,当输入时,immediate为1,immediate_done为0时,会马上执行fn函数,然后使得immediate_done为1。在执行完时间间隔后,又将immediate_done为0
还可以将_debounce函数返回为promise,好处是在fn传入时有返回值的情况下,可以拿到这个返回值
let res = null
let _debounce = function () {
return new Promise((resolve, reject)=>{
if (timeout) clearTimeout(timeout)
if (!immediate_done && immediate) {
res = fn.apply(this)
resolve(res)
immediate_done = true
return
}
timeout = setTimeout(() => {
res = fn.apply(this)
resolve(res)
immediate_done = false
}, delay)
})
}
若fn有返回值,就可以通过.then得到
let ipt = document.querySelector('input')
let btn = document.querySelector('button')
let debounce = mydebounce(function () {
console.log(this.value);
return(111)
}, 1000)
ipt.addEventListener('input', debounce)
btn.addEventListener('click', debounce.cancel)
debounce().then(res=>{
console.log(res);
})
还可以使用lodash
节流
_.throttle(fn,300)
在300ms内只能执行一次fn函数
function fn(){
document.querySelector('span').innerHTML =i++
}
document.querySelector('div').addEventListener('mousemove',_.throttle(fn,300))
防抖
_.debounce(fn,300)
停下来300ms后才执行fn函数
function fn(){
document.querySelector('span').innerHTML =i++
}
document.querySelector('div').addEventListener('mousemove',_.debounce(fn,300))
视频案例
const video = document.querySelector('video')
video.onloadeddata = function(){
video.currentTime = localStorage.getItem('time')||0
}
video.ontimeupdate = _.throttle(function(){
localStorage.setItem('time',video.currentTime)
},1000)
得到video视频
每次打开页面都把存储中的time拿出来,赋值给视频的currentTime,即跳转到对应的时间
视频的时间发生改变时,添加防抖,每隔1s更新存储中的time值
实现每次页面打开可以返回上次视频播放的地方
事件总线
当项目中有很多组件,很多文件,当一个文件中的某一个事件触发,希望另外一个文件得到响应,就需要用到事件总线
这里我们自己用js实现
一般来说这个事件总线是一个对象,里面有emit函数 ,用于发送时间,也有on函数 ,用于接受事件
aaaa
因为on函数,对于一种事件的响应函数可能不止一个,所以需要eventMap来存储函数,其数据结构为{ eventname:[fn1,fn2]}
在emit时,先取得事件对应的函数数组,再以此执行
还可以写一个删除函数函数
off(eventname,fn){
let fns = this.eventMap[eventname]
if (!fns) return
for(let i=0;i
你可能感兴趣的:(前端,javascript,es6,前端)
使用Windows系统进行Node.js离线安装
YOUFDJ
windows node.js 编程
Node.js是一个基于ChromeV8引擎的JavaScript运行时,广泛用于服务器端开发。通常情况下,我们可以通过官方网站下载安装程序进行Node.js的安装,但有时候在没有网络连接的情况下,我们需要进行离线安装。本文将详细介绍如何在Windows系统下进行Node.js的离线安装。以下是进行Node.js离线安装的步骤:第一步:下载Node.js安装包首先,我们需要从官方网站或其他可信来源
2024年全新WebGIS开发学习方法
GIS好难学
学习方法 GIS
现在每天都有越来越多的企业依靠与地理信息位置相关的数据来改善运营和增加利润,包括:客户位置、货物位置等,这些数据信息现在已经成为许多业务逻辑中不可或缺的一部分。但是,很少有人同时会GIS和编程,程序员分为很多种,但是GIS开发通常是指前端+GIS开发,大部分做前端的程序员,不会GIS框架,这也是GIS开发人才或缺的重要原因之一。如果想往GIS开发方向发展,但在学习的时候感到困惑,可以看下本篇文章,
zswap 数据结构维护解析
仙度瑞拉快点跑
数据结构
zswap数据结构维护解析zswap是Linux内核中的一个前端压缩交换(swap)机制,它在内存中维护一个zpool来存储被压缩的页面,以减少磁盘I/O并提高性能。以下是zswap维护加解压相关数据结构的核心解析。1.zswap的核心数据结构1.1structzswap_entryzswap_entry结构体表示zswap维护的每个压缩页面的元数据。structzswap_entry{struc
字节跳动 后端开发 一面 面经
我喝AD钙
面经 java 后端 面试
2023-08-07字节跳动后端开发一面1自我介绍:学历背景-实习/项目-校园经历-获奖2介绍一下java全栈实习:业务-解决方案-工作-成果-反思3xx功能怎么做的:业务-表设计-前端原型-功能-前后端接口-后端实现4订单管理货物管理怎么做的:xxx5数据存储用的啥:mysql给主键常用字段加索引6货物限量怎么处理:java加锁(锁的比较与选择)/数据库事务(考虑了吗,为什么没用)7单体应用,某
前端面试100问!!
一只松
javascript es6
面试造火箭,工作拧螺丝!在技术圈毕竟只有百分之一的人能进入BAT,百分之九九的小伙伴只能在普通公司做这普通的事情,厌烦哪些标题党,我们抛开那些高大上的台词,回归到面试的本质。本课程帮助小伙伴们快速梳理知识,不会涉及到具体的很细节的知识点,关注面试本身。公司一般会从以下5个方面考察一个人的能力,本课程的100问是总结了最近2-3年常问的面试题,适合初中级前端工程师。1、HTML(5)和CSS3方面1
前端面试题---2022
每日一小知识
前端 html npm vscode node.js
*集大成之面试题,我们不做面试题的创作者,只做面试题的搬运工(侵必删)〇理论一个完整的URL解析过程1用户输入URL地址。2对URL地址进行DNS域名解获得IP地址。3建立TCP连接(三次握手)。4浏览器向web服务器发送一个HTTP请求报文。5服务器返回HTTP响应报文给客户端。6关闭TCP连接(四次挥手)。7浏览器解析文档资源并渲染页面。解析过程:浏览器解析的资源(html,svg,Xhtml
深入探索CSS:从基础到高级,解锁网页设计的无限可能
斯~内克
css css 前端
CSS(层叠样式表)是现代网页设计中不可或缺的一部分,它不仅决定了网页的外观和风格,还极大地影响了用户体验和交互效果。从简单的文本样式到复杂的布局设计,CSS的灵活性和强大功能使其成为前端开发的核心技术之一。本文将从CSS的基础概念出发,逐步深入到高级应用,带你全面了解CSS的魅力和实用性。一、CSS简介:网页设计的基石CSS是一种用于描述HTML或XML文档外观和格式的样式表语言。它的主要作用是
前后端数据传输加密:Python 与 Vue 的实践
风清扬【coder】
Web应用 vue.js python 前端
Python与Vue实现接口数据加密传输在当今互联网应用开发中,数据安全是重中之重。尤其是在前后端进行数据交互时,确保传输数据的保密性、完整性和可用性,是每一位开发者不可忽视的关键环节。本文将深入探讨如何运用Python后端和Vue前端技术,实现接口数据传输过程中的加密处理,为大家揭开数据安全保护的神秘面纱。加密基石:AES算法我们选用的加密算法是AES(AdvancedEncryptionSta
Vue实战指南 获取DOM、操作组件
DTcode7
Vue实战指南 VUE HTML web vue框架 前端
Vue实战指南获取DOM、操作组件引言获取DOM元素示例一:使用`ref`获取DOM元素示例二:使用`$el`访问根元素操作组件实例示例三:使用`methods`和`computed`属性示例四:使用`watch`属性监控变化示例五:使用`$emit`触发自定义事件实际开发中的使用技巧引言Vue.js是一个轻量级的前端框架,它允许开发者高效地构建交互式用户界面。在Vue应用中,有时我们需要直接操作
前端:HTML
00&00
前端 前端 html
HTML(超文本标记语言,HyperTextMarkupLanguage)是构建网页的标准标记语言。它被广泛用于创建和设计网页内容,使得文本、图像、链接、表格等元素能够在浏览器中以结构化的形式展示。以下是HTML的详细介绍:1.HTML的基本结构HTML文档通常由一系列嵌套的元素和标签构成,具有以下基本结构: 文档标题 欢迎使用HTML! 这是一个段落。``:声明文档类型,告知浏览器
前端必知必会-Vue动画Animations-Transition ‘name‘ 属性
编程岁月
前端 vue.js javascript
文章目录Transition'name'属性Transition‘name’属性如果您有多个组件,但您希望至少一个组件具有不同的动画,则需要为组件指定不同的名称以区分它们。我们可以使用name属性选择组件的名称,这也会更改过渡类的名称,以便我们可以为该组件设置不同的CSS动画规则。如果过渡名称属性值设置为‘swirl’,则自动可用的类现在将以‘swirl-’而不是‘v-’开头:swirl-ente
Spring MVC的工作流程
ItKevin爱java
javaweb java java Spring MVC
SpringMVC的工作流程是一个典型的MVC(Model-View-Controller)架构在Web开发中的应用。下面将详细描述SpringMVC的工作流程:一、用户发起请求用户请求:用户通过浏览器向服务器发送HTTP请求,这个请求首先被SpringMVC的前端控制器(DispatcherServlet)拦截。二、DispatcherServlet处理请求请求转发:DispatcherServ
python数据分析之爬虫基础:爬虫介绍以及urllib详解
web13765607643
python 数据分析 爬虫
前言在数据分析中,爬虫有着很大作用,可以自动爬取网页中提取的大量的数据,比如从电商网站手机商品信息,为市场分析提供数据基础。也可以补充数据集、检测动态变化等一系列作用。可以说在数据分析中有着相当大的作用!页面结构介绍这里主要介绍HTML的一些简单结构,需要一点前端的知识,可以根据情况直接跳过。Title姓名年龄性别张三18男铁锅炖大鹅小鸡炖蘑菇锅包肉奖励自己睡觉起床读书学习爬虫相关概念1、爬虫的概
人事管理系统设计与实现
AI天才研究院
DeepSeek R1 & 大数据AI人工智能大模型 AI大模型企业级应用开发实战 计算 计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
人事管理系统设计与实现1.背景介绍在现代企业管理中,人力资源管理是一个非常重要的环节。传统的人事管理方式效率低下,无法满足企业快速发展的需求。因此,开发一套功能完善、高效实用的人事管理系统就显得尤为重要。本文将详细介绍一个基于Web的人事管理系统的设计与实现过程,该系统采用B/S架构,后端使用Java语言,前端采用Vue.js框架。系统主要包括员工信息管理、招聘管理、考勤管理、薪酬管理、绩效考核等
java计算机毕业设计企业销售管理系统源代码+数据库+系统+lw文档
今晚的月亮真好看
java 开发语言
java计算机毕业设计企业销售管理系统源代码+数据库+系统+lw文档java计算机毕业设计企业销售管理系统源代码+数据库+系统+lw文档本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5.7/8.0源码地址:https://p
LeeCode 322-零钱兑换(经典 动态规划)
等风来0212
算法分享 leetcode javascript 算法 动态规划
322.零钱兑换(经典动态规划)前言博主是前大厂程序猿,不定期分享前端知识与算法。公众号:FECornerwx小程序:FECorner欢迎关注,一起探索知识~题目地址:322.零钱兑换(中等)标签:数组、动态规划题目描述:给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1
JavaScript--核心语法基础
丿狴犴λ
js javascript html 前端
JavaScript--核心语法基础1.编程语言2.js历史3.js的作用4.JS组成部分5.JS的使用5.1引入方式5.2script位置5.3语法规则5.46.变量(重点)6.1什么是变量?6.2创建变量6.3变量命名规则7、数据类型(重难点)7.1分类7.2基本数据类型7.3引用数据类型--对象(object)7.4数据类型的检测8.数据类型的转换8.1隐式转换8.2强制转换9.运算符9.1
webpack基础配置
吃杠碰小鸡
前端 前端工具库 webpack 前端 javascript
文章目录一、默认入口和默认出口二、资源配置三、输出文件3.1多文件入口3.2HtmlWebpackPlugin插件四、环境4.1环境变量4.2热更新五、代码分离5.1公共模块5.2懒加载5.3预获取/预加载模块六、缓存七、TreeShaking八、公共路径webpack是一个用于现代JavaScript应用程序的静态模块打包工具,在许多项目中都有应用,但是往往平台搭建以后很少去修改配置,熟悉基础配
政务大屏项目 Vue + DataV + Echarts 使用教程
苏鹃咪Healthy
政务大屏项目Vue+DataV+Echarts使用教程Big-Screen-Vue-Datav-Echarts政务大屏-前端(VUE+DataV+Echarts)项目地址:https://gitcode.com/gh_mirrors/bi/Big-Screen-Vue-Datav-Echarts1.项目目录结构及介绍此项目是基于Vue.js、DataV和Echarts的政务大屏可视化模板。以下是主
WPS 加载项开发说明
金山办公开发者
JSAPI二次开发 javascript
WPS加载项结构WPS加载项由自定义功能区和网页两部分组成。自定义功能区只需要一个配置文件,对应WPS加载项目录中的ribbon.xml文件;网页部分负责执行自定义功能区对应的逻辑功能。因为不需要显示网页,所以省略了HTML文件,并用main.js来引入所有的外部JavaScript文件;在这些JavaScript文件中通常包含了一系列用JavaScript实现的函数,这些函数与自定义功能区的功能
AI写代码新姿势:一个截图,代替千行代码
量子位
原创关注前沿科技量子位现在写代码,最fashion的“姿势”应该是什么?答案或许就是:截图。没错,就像这样,先随便找个网页,截取想要的那部分界面,然后“喂”给AI,并附上一句Prompt:参考这个页面,生成一个类似的HTML页面。只是一张图和一句话,AI就“唰唰唰”的把代码给写出来了。有了这个功能,前端程序员搞简单的页面代码可就方便太多了(甚至编程小白都可以尝试做网页)~而且这个AI啊,还不是国外
你曾经star学习的项目现在能看懂了吗?
github阅读
前言我有随时翻看GitHubStar的习惯,尤其是下载了GitHubApp后更加方便我查看了,后来我偶然翻到了自己曾经折腾过的项目LiteWebChat_Frame看了看文档忽然一个问题映入了我的脑海自己曾经因为没看懂而star的项目现在看懂了吗这也是我写文的缘由且也想和大家聊聊这件事三个阶段我又重新看了一遍我的Star,发现可分为三个阶段1.Minecraft及相关启动器2.命令行及后端3.前端
Python web基础知识,后端服务器开发,观点还停留在Java上吗!
道-闇影
python java web开发
极简生活,极简编程,简到极致,就是完美!在写CSDN的Python技能树体验五(web应用开发:Djiago、Tornado、Flask)—终于可以写点能看的了!之前,wc,提前剧透了!先对web开发做一个简要的说明,话不多说,往下看!web应用开发的含义web应用开发分为:前端网页开发,后端服务器开发,还有前后端的一个通信技术!各个部分需要哪些基础前端开发基础:HTML,CSS,JavaScti
ES6 特性全面解析与应用实践
李木子wb
es es6
1、letlet关键字用来声明变量,使用let声明的变量有几个特点:1)不允许重复声明2)块儿级作用域3)不存在变量提升4)不影响作用域链5)暂时性死区6)不与顶级对象挂钩在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”。该变量在声明之前使用都属于“暂时性死区“。应用场景:以后声明变量使用let就对了//声明变量格式leta;letb,c,d;lete=1
Canvas绘制简易雨滴碰撞效果
DTcode7
HTML网站开发 # canvas绘图 HTML 绘图 canvas JavaScript canvas绘图
Canvas绘制简易雨滴碰撞效果基本概念与作用说明示例一:基本的雨滴生成与移动HTML结构JavaScript逻辑示例二:添加碰撞检测更新JavaScript示例三:动态改变雨滴的速度和大小更新JavaScript示例四:添加用户交互更新JavaScript示例五:模拟风的影响更新JavaScript实际工作中的技巧在Web开发中,HTML5Canvas提供了一个强大且灵活的绘图环境,可以用来创建
最详细的Windows下安装node.js 和 npm大全
i建模
前端开发 node.js windows npm javascript typescript 前端框架
说明Node.js®是一个免费、开源、跨平台的JavaScript运行时环境,它让开发人员能够创建服务器Web应用、命令行工具和脚本。NPM的全称是NodePackageManager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。2020年3月17日,Github宣布收购npm,GitHub现在已经保证npm将永远免费。安装时一般要选择LTS版本,也就是长期
ES6笔记总结(Xmind格式):第二天
星河路漫漫
ES6笔记总结 es6 笔记 前端
Xmind鸟瞰图:简单文字总结:ES6知识总结Proxy(代理):1.作用:实现数据的私有化处理2.target目标对象handler处理函数3.处理函数中有两个方法:get,set4.读取数据会触发get方法,写入数据会触发set方法Reflect(反射)1.作用:用于拦截并操作JavaScript对象的方法2.提供与Object内置方法相同功能的方法3.提供更安全的操作4.作为Proxy的默认
ES6 笔记总结
js_user
前端基础 es6
1.变量var可以重复声明,无法限制修改,函数级(没有块级作用域)let不能重复声明,块级作用域,变量-可以修改const不能重复声明,块级作用域,常量-不能修改2.箭头函数1.方便如果只有一个参数,()可以省略如果只有一个return,{}可以省略修正this3.参数扩展1.收集剩余的参数functionshow(a,b,...args){剩余的参数必须是最后一个}展开数组展开后的效果,跟直接打
阮一峰ES6笔记总结
china-yun
JavaScript
ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有JScript和ActionScript)。日常场合,这两个词是可以互换的。let块级作用域(局部声明,局部使用)不存在变量提升
编程题 - 汽水瓶【JavaScript/Node.js解法】
幸运小圣
编程题 javascript node.js
“学如逆水行舟,不进则退。”——《增广贤文》目录汽水瓶题目:解答分析:js代码解答-ACM模式:代码通过:题解分析:简洁思路代码:汽水瓶题目:某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。输入描述:本题将会给出1=3){letnewBottles=Math.floor(val/3);totalBott
TOMCAT在POST方法提交参数丢失问题
357029540
java tomcat jsp
摘自http://my.oschina.net/luckyi/blog/213209
昨天在解决一个BUG时发现一个奇怪的问题,一个AJAX提交数据在之前都是木有问题的,突然提交出错影响其他处理流程。
检查时发现页面处理数据较多,起初以为是提交顺序不正确修改后发现不是由此问题引起。于是删除掉一部分数据进行提交,较少数据能够提交成功。
恢复较多数据后跟踪提交FORM DATA ,发现数
在MyEclipse中增加JSP模板 删除-2008-08-18
ljy325
jsp xml MyEclipse
在D:\Program Files\MyEclipse 6.0\myeclipse\eclipse\plugins\com.genuitec.eclipse.wizards_6.0.1.zmyeclipse601200710\templates\jsp 目录下找到Jsp.vtl,复制一份,重命名为jsp2.vtl,然后把里面的内容修改为自己想要的格式,保存。
然后在 D:\Progr
JavaScript常用验证脚本总结
eksliang
JavaScript javaScript表单验证
转载请出自出处:http://eksliang.iteye.com/blog/2098985
下面这些验证脚本,是我在这几年开发中的总结,今天把他放出来,也算是一种分享吧,现在在我的项目中也在用!包括日期验证、比较,非空验证、身份证验证、数值验证、Email验证、电话验证等等...!
&nb
微软BI(4)
18289753290
微软BI SSIS
1)
Q:查看ssis里面某个控件输出的结果:
A MessageBox.Show(Dts.Variables["v_lastTimestamp"].Value.ToString());
这是我们在包里面定义的变量
2):在关联目的端表的时候如果是一对多的关系,一定要选择唯一的那个键作为关联字段。
3)
Q:ssis里面如果将多个数据源的数据插入目的端一
定时对大数据量的表进行分表对数据备份
酷的飞上天空
大数据量
工作中遇到数据库中一个表的数据量比较大,属于日志表。正常情况下是不会有查询操作的,但如果不进行分表数据太多,执行一条简单sql语句要等好几分钟。。
分表工具:linux的shell + mysql自身提供的管理命令
原理:使用一个和原表数据结构一样的表,替换原表。
linux shell内容如下:
=======================开始 
本质的描述与因材施教
永夜-极光
感想 随笔
不管碰到什么事,我都下意识的想去探索本质,找寻一个最形象的描述方式。
我坚信,世界上对一件事物的描述和解释,肯定有一种最形象,最贴近本质,最容易让人理解
&
很迷茫。。。
随便小屋
随笔
小弟我今年研一,也是从事的咱们现在最流行的专业(计算机)。本科三流学校,为了能有个更好的跳板,进入了考研大军,非常有幸能进入研究生的行业(具体学校就不说了,怕把学校的名誉给损了)。
先说一下自身的条件,本科专业软件工程。主要学习就是软件开发,几乎和计算机没有什么区别。因为学校本身三流,也就是让老师带着学生学点东西,然后让学生毕业就行了。对专业性的东西了解的非常浅。就那学的语言来说
23种设计模式的意图和适用范围
aijuans
设计模式
Factory Method 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 适用性 当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
Abstr
Java中的synchronized和volatile
aoyouzi
java volatile synchronized
说到Java的线程同步问题肯定要说到两个关键字synchronized和volatile。说到这两个关键字,又要说道JVM的内存模型。JVM里内存分为main memory和working memory。 Main memory是所有线程共享的,working memory则是线程的工作内存,它保存有部分main memory变量的拷贝,对这些变量的更新直接发生在working memo
js数组的操作和this关键字
百合不是茶
js 数组操作 this关键字
js数组的操作;
一:数组的创建:
1、数组的创建
var array = new Array(); //创建一个数组
var array = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]
别人的阿里面试感悟
bijian1013
面试分享 工作感悟 阿里面试
原文如下:http://greemranqq.iteye.com/blog/2007170
一直做企业系统,虽然也自己一直学习技术,但是感觉还是有所欠缺,准备花几个月的时间,把互联网的东西,以及一些基础更加的深入透析,结果这次比较意外,有点突然,下面分享一下感受吧!
&nb
淘宝的测试框架Itest
Bill_chen
spring maven 框架 单元测试 JUnit
Itest测试框架是TaoBao测试部门开发的一套单元测试框架,以Junit4为核心,
集合DbUnit、Unitils等主流测试框架,应该算是比较好用的了。
近期项目中用了下,有关itest的具体使用如下:
1.在Maven中引入itest框架:
<dependency>
<groupId>com.taobao.test</groupId&g
【Java多线程二】多路条件解决生产者消费者问题
bit1129
java多线程
package com.tom;
import java.util.LinkedList;
import java.util.Queue;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.loc
汉字转拼音pinyin4j
白糖_
pinyin4j
以前在项目中遇到汉字转拼音的情况,于是在网上找到了pinyin4j这个工具包,非常有用,别的不说了,直接下代码:
import java.util.HashSet;
import java.util.Set;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin
org.hibernate.TransactionException: JDBC begin failed解决方案
bozch
ssh 数据库异常 DBCP
org.hibernate.TransactionException: JDBC begin failed: at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:68) at org.hibernate.impl.SessionImp
java-并查集(Disjoint-set)-将多个集合合并成没有交集的集合
bylijinnan
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.ut
Java PrintWriter打印乱码
chenbowen00
java
一个小程序读写文件,发现PrintWriter输出后文件存在乱码,解决办法主要统一输入输出流编码格式。
读文件:
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因
[天气与气候]极端气候环境
comsci
环境
如果空间环境出现异变...外星文明并未出现,而只是用某种气象武器对地球的气候系统进行攻击,并挑唆地球国家间的战争,经过一段时间的准备...最大限度的削弱地球文明的整体力量,然后再进行入侵......
那么地球上的国家应该做什么样的防备工作呢?
&n
oracle order by与union一起使用的用法
daizj
UNION oracle order by
当使用union操作时,排序语句必须放在最后面才正确,如下:
只能在union的最后一个子查询中使用order by,而这个order by是针对整个unioning后的结果集的。So:
如果unoin的几个子查询列名不同,如
Sql代码
select supplier_id, supplier_name
from suppliers
UNI
zeus持久层读写分离单元测试
deng520159
单元测试
本文是zeus读写分离单元测试,距离分库分表,只有一步了.上代码:
1.ZeusMasterSlaveTest.java
package com.dengliang.zeus.webdemo.test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.j
Yii 截取字符串(UTF-8) 使用组件
dcj3sjt126com
yii
1.将Helper.php放进protected\components文件夹下。
2.调用方法:
Helper::truncate_utf8_string($content,20,false); //不显示省略号 Helper::truncate_utf8_string($content,20); //显示省略号
&n
安装memcache及php扩展
dcj3sjt126com
PHP
安装memcache tar zxvf memcache-2.2.5.tgz cd memcache-2.2.5/ /usr/local/php/bin/phpize (?) ./configure --with-php-confi
JsonObject 处理日期
feifeilinlin521
java json JsonOjbect JsonArray JSONException
写这边文章的初衷就是遇到了json在转换日期格式出现了异常 net.sf.json.JSONException: java.lang.reflect.InvocationTargetException 原因是当你用Map接收数据库返回了java.sql.Date 日期的数据进行json转换出的问题话不多说 直接上代码
&n
Ehcache(06)——监听器
234390216
监听器 listener ehcache
监听器
Ehcache中监听器有两种,监听CacheManager的CacheManagerEventListener和监听Cache的CacheEventListener。在Ehcache中,Listener是通过对应的监听器工厂来生产和发生作用的。下面我们将来介绍一下这两种类型的监听器。
activiti 自带设计器中chrome 34版本不能打开bug的解决
jackyrong
Activiti
在acitivti modeler中,如果是chrome 34,则不能打开该设计器,其他浏览器可以,
经证实为bug,参考
http://forums.activiti.org/content/activiti-modeler-doesnt-work-chrome-v34
修改为,找到
oryx.debug.js
在最头部增加
if (!Document.
微信收货地址共享接口-终极解决
laotu5i0
微信开发
最近要接入微信的收货地址共享接口,总是不成功,折腾了好几天,实在没办法网上搜到的帖子也是骂声一片。我把我碰到并解决问题的过程分享出来,希望能给微信的接口文档起到一个辅助作用,让后面进来的开发者能快速的接入,而不需要像我们一样苦逼的浪费好几天,甚至一周的青春。各种羞辱、谩骂的话就不说了,本人还算文明。
如果你能搜到本贴,说明你已经碰到了各种 ed
关于人才
netkiller.github.com
工作 面试 招聘 netkiller 人才
关于人才
每个月我都会接到许多猎头的电话,有些猎头比较专业,但绝大多数在我看来与猎头二字还是有很大差距的。 与猎头接触多了,自然也了解了他们的工作,包括操作手法,总体上国内的猎头行业还处在初级阶段。
总结就是“盲目推荐,以量取胜”。
目前现状
许多从事人力资源工作的人,根本不懂得怎么找人才。处在人才找不到企业,企业找不到人才的尴尬处境。
企业招聘,通常是需要用人的部门提出招聘条件,由人
搭建 CentOS 6 服务器 - 目录
rensanning
centos
(1) 安装CentOS
ISO(desktop/minimal)、Cloud(AWS/阿里云)、Virtualization(VMWare、VirtualBox)
详细内容
(2) Linux常用命令
cd、ls、rm、chmod......
详细内容
(3) 初始环境设置
用户管理、网络设置、安全设置......
详细内容
(4) 常驻服务Daemon
【求助】mongoDB无法更新主键
toknowme
mongodb
Query query = new Query(); query.addCriteria(new Criteria("_id").is(o.getId())); &n
jquery 页面滚动到底部自动加载插件集合
xp9802
jquery
很多社交网站都使用无限滚动的翻页技术来提高用户体验,当你页面滑到列表底部时候无需点击就自动加载更多的内容。下面为你推荐 10 个 jQuery 的无限滚动的插件:
1. jQuery ScrollPagination
jQuery ScrollPagination plugin 是一个 jQuery 实现的支持无限滚动加载数据的插件。
2. jQuery Screw
S