Object.keys() 延申:Object.keys().map() 一道面试题应用考察 27题 传送门:https://www.jianshu.com/p/d35a406acdc6
一、语法:
参数:对象 返回值:对象可枚举属性的字符串数组
二、应用
处理对象,返回可枚举的属性数组
处理数组,返回索引值数组
let arr=[1,2,3,4,5]
处理字符串,返回索引值数组
let str="sszmq"
https://www.cnblogs.com/llcdxh/p/9476347.html Object.defineProperty() 数据劫持
let Person={}
Object.defineProperty(Person,'name',{
value:'jack',//值
configurable:false, //是否可以再次配置
writable:true, //是否可以改变
enumerable:true //描述属性是否会出现在for in 或者Object.keys()得遍历中
})
https://www.jianshu.com/p/8fe1382ba135
vue的核心数据的监听,数组/对象深度遍历绑定,重写数组中的push/pop/shift/unshift/splice/sort/reverse七个方法
vue依赖收集做标记,如何做的标记还是不明白
vue数据依赖收集的精髓:
vue的双向数据绑定原理:
通过component 渲染 函数形成虚拟dom,然后进行虚拟dom中用到的data定义属性进行dep 数据依赖收集(发布者),做标记,添加观察者(watcher),移除观察者,通知所有订阅者进行执行回调,修改视图中的data,。当数据修改的时候就是执行setter就会触发dep发布者的notify通知所有订阅者,执行回调修改视图。
vue得虚拟dom
把真实得dom树抽象成一颗javascript对象构成得抽象树,如果每次修改了dom都去重绘整个视图层,很消耗性能,这个时候我们通过虚拟得dom和真实得dom树去进行比较,差异修改,修改以后经过diff算法得出一些需要修改得最小单位,再将这些小单位得视图进行更新。这样就减少了很多不需要得dom操作,大大提高了性能
diff算法
diff算法是通过同层得树节点进行比较而非对逐层搜索遍历得方式
patch得实现方法
/*createPatchFunction的返回值,一个patch函数*/
return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {
/*vnode不存在则直接调用销毁钩子*/
if (isUndef(vnode)) {
if (isDef(oldVnode)) invokeDestroyHook(oldVnode)
return
}
let isInitialPatch = false
const insertedVnodeQueue = []
if (isUndef(oldVnode)) {
// empty mount (likely as component), create new root element
/*oldVnode未定义的时候,其实也就是root节点,创建一个新的节点*/
isInitialPatch = true
createElm(vnode, insertedVnodeQueue, parentElm, refElm)
} else {
/*标记旧的VNode是否有nodeType*/
/*Github:https://github.com/answershuto*/
const isRealElement = isDef(oldVnode.nodeType)
if (!isRealElement && sameVnode(oldVnode, vnode)) {
// patch existing root node
/*是同一个节点的时候直接修改现有的节点*/
patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly)
} else {
if (isRealElement) {
// mounting to a real element
// check if this is server-rendered content and if we can perform
// a successful hydration.
if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
/*当旧的VNode是服务端渲染的元素,hydrating记为true*/
oldVnode.removeAttribute(SSR_ATTR)
hydrating = true
}
if (isTrue(hydrating)) {
/*需要合并到真实DOM上*/
if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
/*调用insert钩子*/
invokeInsertHook(vnode, insertedVnodeQueue, true)
return oldVnode
} else if (process.env.NODE_ENV !== 'production') {
warn(
'The client-side rendered virtual DOM tree is not matching ' +
'server-rendered content. This is likely caused by incorrect ' +
'HTML markup, for example nesting block-level elements inside ' +
', or missing
. Bailing hydration and performing ' +
'full client-side render.'
)
}
}
// either not server-rendered, or hydration failed.
// create an empty node and replace it
/*如果不是服务端渲染或者合并到真实DOM失败,则创建一个空的VNode节点替换它*/
oldVnode = emptyNodeAt(oldVnode)
}
// replacing existing element
/*取代现有元素*/
const oldElm = oldVnode.elm
const parentElm = nodeOps.parentNode(oldElm)
createElm(
vnode,
insertedVnodeQueue,
// extremely rare edge case: do not insert if old element is in a
// leaving transition. Only happens when combining transition +
// keep-alive + HOCs. (#4590)
oldElm._leaveCb ? null : parentElm,
nodeOps.nextSibling(oldElm)
)
if (isDef(vnode.parent)) {
// component root element replaced.
// update parent placeholder node element, recursively
/*组件根节点被替换,遍历更新父节点element*/
let ancestor = vnode.parent
while (ancestor) {
ancestor.elm = vnode.elm
ancestor = ancestor.parent
}
if (isPatchable(vnode)) {
/*调用create回调*/
for (let i = 0; i < cbs.create.length; ++i) {
cbs.create[i](emptyNode, vnode.parent)
}
}
}
if (isDef(parentElm)) {
/*移除老节点*/
removeVnodes(parentElm, [oldVnode], 0, 0)
} else if (isDef(oldVnode.tag)) {
/*Github:https://github.com/answershuto*/
/*调用destroy钩子*/
invokeDestroyHook(oldVnode)
}
}
}
/*调用insert钩子*/
invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch)
return vnode.elm
}
当老节点和新节点相同得时候才会执行patchVnode,如果为同一个节点 就进行patchVnode,否则创建新得dom。 怎样得算相同得sameVnode 当节点得key,tag,iscomment,是否data包含了具体得一些数据信息,一个VnodeData类型, 当标签是input得时候,type也要相同 这里key,tag,iscomment是vue源码Vnode中讲到得,dom渲染属性,
patchVnode得规则是这样得
如果新旧vnode都是静态得,同时他们得key相同(代表同一节点)并且新得vnode时clone或者标记了once(v-once,只渲染一次,)那么只需要替换elm以及componentIntance即可
新老节点均有children子节点,则对子节点进行diff操作
如果老节点没有子节点而新节点存在子节点,先清空老节点DOM的文本内容,然后为当前DOM节点加入子节点
当新节点没有子节点而老节点有子节点的时候,则移除该DOM节点的所有子节点。
当新老节点都无子节点的时候,只是文本的替换。
vue得template得编译
这个时候我们就结合一下vue的生命周期图示 新建vue实例,初始化事件,注入,初始化data,然后去render,渲染,判断是否指定el选项,如果有在判断是否指定template,如果是就讲template编译到render函数中,如果没有就将el外部的html作为template编译。当没有指定el选项的时候执行$mount(el)函数
mount函数主要做了什么?
处理template,变成render函数,render最终会返回一个Vnode(虚拟dom节点)供页面渲染,或者在_update的时候,经过patch与之前的Vnode节点进行比较,得出差异然后将这些差异渲染到真实的dom中。 render函数不存在的时候才会编译tempate,否则优先使用render template会被编译成语法树
我们可以看到最外层的div是这颗AST的根节点,节点上有许多数据代表这个节点的形态,比如static表示是否是静态节点,staticClass表示静态class属性(非bind:class)。children代表该节点的子节点,可以看到children是一个长度为4的数组,里面包含的是该节点下的四个div子节点。children里面的节点与父节点的结构类似,层层往下形成一棵AST。 再来看看由AST得到的render函数
with(this){
return _c( 'div',
{
/*static class*/
staticClass:"main",
/*bind class*/
class:bindClass
},
[
_c( 'div', [_v(_s(text))]),
_c('div',[_v("hello world")]),
/*这是一个v-for循环*/
_l(
(arr),
function(item,index){
return _c( 'div',
[_c('p',[_v(_s(item.name))]),
_c('p',[_v(_s(item.value))]),
_c('p',[_v(_s(index))]),
_c('p',[_v("---")])]
)
}
),
/*这是v-if*/
(text)?_c('div',[_v(_s(text))]):_c('div',[_v("no text")])],
2
)
}
代码中的_c,_l都是vue源码中定义的
/*处理v-once的渲染函数*/
Vue.prototype._o = markOnce
/*将字符串转化为数字,如果转换失败会返回原字符串*/
Vue.prototype._n = toNumber
/*将val转化成字符串*/
Vue.prototype._s = toString
/*处理v-for列表渲染*/
Vue.prototype._l = renderList
/*处理slot的渲染*/
Vue.prototype._t = renderSlot
/*检测两个变量是否相等*/
Vue.prototype._q = looseEqual
/*检测arr数组中是否包含与val变量相等的项*/
Vue.prototype._i = looseIndexOf
/*处理static树的渲染*/
Vue.prototype._m = renderStatic
/*处理filters*/
Vue.prototype._f = resolveFilter
/*从config配置中检查eventKeyCode是否存在*/
Vue.prototype._k = checkKeyCodes
/*合并v-bind指令到VNode中*/
Vue.prototype._b = bindObjectProps
/*创建一个文本节点*/
Vue.prototype._v = createTextVNode
/*创建一个空VNode节点*/
Vue.prototype._e = createEmptyVNode
/*处理ScopedSlots*/
Vue.prototype._u = resolveScopedSlots
/*创建VNode节点*/
vm._c = (a, b, c, d) => createElement(vm, a, b, c, d, false)
你可能感兴趣的:(vue源码学习中的阻碍知识)
我们大多在食用二次知识――论知识的阶级性
Yo有灵L0
不论是《美丽新世界》,还是《未来简史》,对人类未来的预计都没有很美好。这其中包含了太多集权的观点。即:人类的绝大多数资源被极少数人所掌控,而绝大多数人沦为平庸。在《美丽新世界》里,阶级的划分直接由人为控制出生来决定;在《未来简史》里,当人们把越来越多的事情交给算法去处理之后,人类自身则降至被动的地位。这些看起来和知识不搭边?不,知识这条路,竟然也存在着阶级划分。这种阶级划分,有自身的因素,也有环境
悟第三天作业
f50de842b0c5
第三天实修对破框法中的“托付心态”的理解和认识。托付心态:从今天开始,我知道我是有能力的,我也相信我有这个能力,我相信我的这个能力一定能够让我更好,从今天开始我要对我的生命负责任,我要做回生命主人的权利。我不把我的幸福和一切成功的机会寄托在任何人的身上,我要为自已的幸福和成功负责,我要对我的人生负责,我是有能力负责的,我完全的相信我自己。我相信我从来都是有能力的,很多的能力都深深的埋藏在了我的心里
解决报错:node:internal/errors:496 ErrorCaptureStackTrace(err);
lvchaoq
debug vue
报错信息我使用npminitvue@latest创建项目时出现如下报错node:internal/errors:496ErrorCaptureStackTrace(err);^TypeError[ERR_IMPORT_ASSERTION_TYPE_MISSING]:Module“file:///D:/develop/nodejs/node_cache/_npx/2f7e7bff16d1c534/n
webpack将组件vue进行编译混淆,并能正常使用编译之后的文件
web前端神器
vue.js 前端 javascript
介绍:我们在开发的过程中有很多组件都需要复用,特别是我们耗费了好几天时间写出来的组件,比如自己写的表格组件,流程图组件等。总之都是自己不断测试,不断编写耗费了大把的精力写的。直接用到自己的项目中倒是无所谓,如果是把自己写的组件给别人,这里就涉及到自己的劳动成功了,特别是项目尾款还没到账的情况下,代码都给别人了对自己是很不利的。所以这节课的内容很重要,教大家如何将自己的写的vue组件用webpack
Event Loop 在浏览器和 Node.js 中的区别
阿珊和她的猫
node.js 前端
前端开发工程师、技术日更博主、已过CET6阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1牛客高级专题作者、打造专栏《前端面试必备》、《2024面试高频手撕题》、《前端求职突破计划》蓝桥云课签约作者、上架课程《Vue.js和Egg.js开发企业级健康管理项目》、《带你从入门到实战全面掌握uni-app》文章目录一、事件循环的阶段浏览器Node.js二、微任务队列的处理浏览器Node
20190417小确幸
yzy杨
1、同事耐心地教我使用一种电子工具,特别地感谢同事教会了许多知识。2、晚上向远方的朋友聊了一会儿工作和今日临时遇到的事,朋友教了我一些经验和方法,特别感谢遇见,感谢让我成长的朋友们。3、傍晚妈妈打来电话让我帮她进点货,忙完工作的事,晚上去顺利地进好了货,然后弟弟和他的朋友来把货拉回了家。以前这些事都不用我做的,也感觉很多事是不会做的,现在因为没有选择,反而变得越来越勇敢。可以一个去做很多事情,即使
2个网卡配置相同ip 华为交换机_网络工程师必会知识点(上篇):华为交换机绑定客户端IP+MAC+端口...
882看看
2个网卡配置相同ip 华为交换机
交换机绑定客户端IP+MAC+端口,主要是为了防止别人没有授权的条件下,随意加入到网络当中操作,为了防止这种不安全的行为的出现,为了我们网络的安全,可以绑定授权的IP以及MAC,这样一来就不会出现IP地址被盗用出现网络安全威胁的情况。DHCPSnooping是DHCP的一种安全特性,主要应用在交换机上,作用是屏蔽接入网络中的非法的DHCP服务器。即开启DHCPSnooping功能后,网络中的客户端
对象存储和文件存储之间的区别?
数据信息存储功能对于企业来说是十分重要的,企业会将业务中的数据存放在一个安全的位置,避免其受到网络攻击或损坏,给企业造成一定的经济损失,而在存储方面有文件存储、对象存储和块存储等多种方式,本文就来为大家介绍一下对象存储和文件存储之间的区别!对象存储是被称为基于对象的存储技术,主要是针对离散单元的处理和解决方式,其中对象可以是指任何形式的数据信息,比如文件信息和视频图片等,能够通过唯一ID访问数据对
BGP服务器该如何处理不同的路由策略?
wanhengidc
服务器 运维
BGP(边界网关协议)是现在互联网社会中的重要基石,主要功能是在不同的自治系统之间交换路由信息,为了能够保障数据流畅稳定的传输,BGP服务器需要对于各种路由策略进行灵活的处理,那么对于不同的路由策略BGP服务器该怎样进行处理呢?BGP服务器在运行的过程中,在选择最佳的路由路径时会考虑到多个属性,BGP会优先选择具有最高本地优先级的路由,当多个路由都具有相同的优先级,则会优先选择经过最少自治系统的路
生命中的一束微光
朔雪纷飞
很多人不需要再见,因为只是路过而已,遗忘就是我们给曾经的最好纪念。元旦假期的第三天,也是最后一天,蜷缩在屋子里,什么都不想干,什么都不想做,就任大脑空白,看着天花板发呆。完全背离了临放假时的计划,可能是因为昨天中午的一场噩梦,也可能是因为昨天晚上跟原来很投缘的一个前同事的聊天,总之,整个人有点儿丧。吃过早饭,百无聊赖滴刷着抖音,推送了一部小说,就一股脑滴上番茄去搜,竟然找到了,然后就看了一下午的小
快乐的周五
轩小豆
今天下午,第一节课。我们上的是围棋,我们围棋学的是:“《老虎口》。”老虎口吃完了白棋,就开花,这叫老虎口后又开花。我们还学了乌龟壳,撒网。真有意思呀,我喜欢上围棋课,能学到各种有趣的知识。今天下午,第三节课,我们评选的好少年,有:“杨特长,知礼仪,会学习,…………………”还有很多好少年,我评选了有担当,老师说:“你们觉得这些人数里面谁有担当?”同学们说:“王子轩!王子轩!”我被选上了,好少年有担当
“趟着走”还是换种方式
水墨烟岚
如果把家长教育孩子比作走路一种方式,那么“趟着走”也是其中的一种。谁都不知道要翻越一座山峰会遇到什么人、碰到什么事、经过什么样的路,承受什么样的跌倒之痛,甚至会有什么样的狂风暴雨、什么样的断桥低谷。但是人生总要前行,无论是否愿意,不管准备是否充足。“趟着走”,一边低头拉车,一边抬头看路。低头拉车会很累,但再累也得脚踏实地;抬头看路就能看到希望,探视到目标,但得把眼下的事做好。所有的物质享受都会成为
从“父母与子女无恩”一论看亲子关系
给我一杯奶茶我还能学
人与人之间的交集关系,实在复杂。由于自然界生物基因的传承,人类自发地组建并完善了“家庭”这一概念,也正是因为如此,人们才有了内外亲疏之的区分。“内”、“亲”,大多形容的就是血缘关系,更明确点来说,指的是亲子关系。即我们与父母的关系,我们与子女的关系。《中华人民共和国婚姻法》中的第二十一条的规定就写道:父母对子女有抚养教育的义务;子女对父母有赡养扶助的义务。法律描述的亲子关系,意味着人们必须承担起教
ADC模块在电路中的存在形式与主控(MCU)的关系
、我是男生。
单片机 嵌入式硬件
四、ADC模块在电路中的存在形式与主控(MCU)的关系这是电子工程师必须彻底理解的要点!ADC的存在形式主要有三种:独立ADC芯片(DiscreteADCIC):存在形式:一个单独的物理芯片(如TIADS1248,ADIAD7799)。与MCU关系:ADC芯片完成模拟信号采样、保持、量化、编码的全部工作。MCU通过数字通信接口(SPI,I2C,Parallel)向ADC发送控制命令(启动转换、选择
经典人生语录,为了自己想过的生活,勇于放弃一些东西
然若一
为了自己想过的生活,勇于放弃一些东西。这个世界没有公正之处,你也永远得不到两全之计。若要自由,就得牺牲安全。若要闲散,就不能获得别人评价中的成就。若要愉悦,就无需计较身边人给予的态度。若要前行,就得离开你现在停留的地方。多微笑,做一个开朗热忱的女人;多打扮,做一个美丽优雅的女人;多倾听,做一个温柔善意的女人,多看书,做一个淡定内涵的女人;多思考,做一个聪慧冷静的女人。记住为自己而进步,而不是为了满
电影清单No.10 《有熊谷守一在的地方》
一粒微尘_
#电影清单#10/50冲田修一山崎努、树木希林。电影来自于一位真实的人物,被称为画坛仙人的熊谷守一,是日本非常著名的画家。电影没有要突出什么主题,很像是拿着一台摄像机记录这两位老人和来到他们家中的人的日常,他们做什么就拍什么,熊谷守一在他的院子里呆了30年,从来没有出过门,他每天和家中的植物、动物、昆虫呆在一起,所以每一个角落、每一株植物他都很清楚,他会趴在地上很久来观察蚂蚁,发现原来蚂蚁是先用左
孩子大脑发育高峰期,父母千万不要错过!
智秦数字出版
大脑发育从出生到3岁时最明显。宝宝大脑容量在5岁时已经发育了90%。越来越多的研究表明了早期教育的重要性,然而,早教并不是指单纯的知识灌输,重点在于大脑的开发,思维的训练.家长做些什么可以帮助孩子大脑发育?儿童教育专家给出了以下建议●●●1、在换尿布时、洗澡时、吃东西时经常和孩子说话。2、提供一个良好的环境,让宝宝有机会发展他的所有感觉——看、听、闻、触摸、尝。3、经常抚触孩子。4、说出物品的名字
『助教培训项目』
夕怡芯
为了感谢各位学习伙伴一直在萨提亚传播中的付出和贡献,为了让各位伙伴更加的专业、严谨和精进,让更多的人可以通过萨提亚模式获得帮助和成长,经过家和萨提亚教育学院的认真考虑,推出了家和萨提亚学院义工,助教培养项目。18年11月项目正式起航。我们不是一次又一次的来此寻求他人的治疗,而是彼此支持与相互学习,体验到自己与他人的珍贵与丰富,带着适合自己的方法回去练习与实践,因而拥有越来越强大与安稳的生命力,面对
贴现思维
翁玲子
图片发自App得到的课程买了不少,最近空闲一翻,发现大多数都是只读了一半就撩那里了,无意中翻了一篇香帅的课程读了读。《如何用贴现思维思考个人价值》“贴”是现在,“现”是折扣,贴现可以试着未来价值和现在价值之间的折算,这个折算比率就是贴现率。例如:明年的100元,现在值95元,这个贴现率5%,老师用一个故事讲述了这个概念,好新鲜又很真实。同时我们生活中的很多长期决策中必备的一种思维。庸俗的鸡汤故事一
飞算 JavaAI:全程智能引导开发,十倍提效让你快速成为 Java 高手
飞算JavaAI开发助手
java 开发语言
在Java开发领域,高效完成项目开发、提升开发技能是每一位开发者的追求。而飞算JavaAI的出现,为开发者带来了全新的开发体验,它实现从需求分析、软件设计到工程代码生成的全程智能引导,一气呵成,能十倍提效,助力程序员一天成为Java高手,成为Java开发中的得力助手。飞算JavaAI的智能引导采用全自动线性引导模式,通过五个步骤帮助开发者完成需求拆解、设计、工程代码生成,助力开发者高质量快速完成功
学习EOS的心得
墨鱼随记
还有三个月EOS原本预定主网上线的日子就到了。。我原本已经写过两篇文章写下了我对于EOS的看法,对EOS的一点看法和EOS的风险,现在又学习了一点关于EOS的知识,分享出来。1,EOS的代币是拥有1%就可以使用1%EOS系统上的资源,持有EOS代币的人可以出租EOS获得回报。2,EOS的秘钥是可以找回的,但是要预先设定制定的人,指定的人只能帮忙找回,对账号无权干涉。3,EOS使用的是DPOS共识算
Python爬虫实战:批量下载小红书笔记图片的全流程技术解析
Python爬虫项目
2025年爬虫实战项目 python 爬虫 笔记 开发语言 音视频 github
1.引言:为什么要爬取小红书笔记图片小红书作为新兴的生活方式分享平台,聚集了大量高质量原创笔记内容,涵盖时尚、美妆、旅游、美食等多领域。笔记中的图片往往是内容的核心,批量下载小红书笔记图片,有助于:内容归档与备份数据分析与用户行为研究图像识别与机器学习训练电商推广及内容再加工但小红书对内容保护做得较好,爬取难度较高,需要结合多技术手段突破。2.小红书平台特点与爬取难点动态加载与API接口多变:页面
基于Python的Google Patents专利数据爬取实战:从入门到精通
Python爬虫项目
2025年爬虫实战项目 python 开发语言 爬虫 scrapy selenium
摘要本文将详细介绍如何使用Python构建一个高效的GooglePatents专利爬虫,涵盖最新技术如Playwright浏览器自动化、异步请求处理、反反爬策略等。文章包含完整的代码实现、性能优化技巧以及数据处理方法,帮助读者全面掌握专利数据采集技术。1.引言在当今知识经济时代,专利数据已成为企业技术研发、市场竞争分析的重要资源。GooglePatents作为全球最大的专利数据库之一,收录了来自全
什么时候开始行动都不晚
我的心里每天绽放一朵花
新岗位一晃快一年了,对于业务还是稀里糊涂,好多问题不会处理,反正有两个骨干顶着,即使轮到我值班有问题他们也会出面解答,所以就这么混着。再说还有一个老员工比我还混得厉害,我担心什么呢!每次培训没我,无所谓,心安理得。也不想去钻研,那么多需要记的,太难记住了,我也不想费那个力气,每天就是上上班玩玩手机。又一次培训,三人都去了,留我一人。没有想象中的手足无措,慌张混乱,没那么多问题,解决不了的也就打电话
《此生未完成》:除了生死,其他都是小事
绿茵下
于娟,一名海归女博士,她知识渊博、学贯中西。当她准备用自己的满腹学识报效祖国,为家庭出力的时候,被查出乳腺癌晚期。在她生命的最后时光,她写下了十多万字的“生死日记”——《此生未完成》。这本《此生未完成》是于娟留给忙忙碌碌的世人的“遗产”。这份“遗产”沉重而珍贵,她告诉我们,除了生死,其他都是小事。01生命的遗憾于娟在发现自己得了乳腺癌的时候,已经是晚期了。化疗带给他的不仅是身体的痛苦,更多的是来自
成为有知识的人:一些基本原则
蕴韵1236
真实的学习是多种要素的联结和整合。一、陈述性知识的发展当人们对正学习的某个领域有较好的知识基础时,他们学得最好。有许多精细的图式和脚本引导,新的材料将会变得更有意义,而且在长时记忆网络中有许多可能的节点,它们可以将新旧信息联结起来。1、使教学富有意义有意义的课堂,是使用对学生有意义的词汇来呈现的;有意义的课堂应该组织良好,不同知识点之间应有清晰的联系;有意义的课堂能够通过例子和对比,自然地利用旧信
HashMap的加载因子为什么选择0.75?
弹钢琴的崽崽
为什么HashMap需要加载因子?HashMap的底层是哈希表,是存储键值对的结构类型,它需要通过一定的计算才可以确定数据在哈希表中的存储位置:staticfinalinthash(Objectkey){inth;return(key==null)?0:(h=key.hashCode())^(h>>>16);}//AbstractMappublicinthashCode(){inth=0;Iter
6+1高效课堂
清澈与明亮
高效“6+1”课堂的基本形态,是由两部分组成的,第一部分是高效“6+1”课堂模式中的“6”,是指课堂教学中依次进行的六个环节,包括“导、思、议、展、评、检”6个教学环节;第二部分是高效6+1模式中的“1”,谓之“练或做”,这是在课后自习中进行的一个教学环节。高效“6+1”课堂模式的创立、特色、应用、成果及模式解析【特色】通过高效“6+1”课堂带来的变化有:①颠覆了原有的课堂面貌;②推动了教师观念与
历史上的今天7月14日,维也纳战役,法国大革命,最早的选美比赛
文史走廊
7月14日是公历一年中的第195天,离全年的结束还有170天(闰年则还有171天)。“安莫安于知足;危莫危于多言;乐莫乐于好善;苦莫苦于多贪。”1、汉武帝刘彻诞生公元前156年7月14日(农历公元前156年6月9日),汉武帝刘彻诞生。汉武帝刘彻(公元前156年7月14日/8月10日——公元前87年3月29日,距今已2106年),中国西汉皇帝(公元前141—前87年在位)。西汉王朝是中国封建王朝史上
Zephyr开发指南——编程语言支持(Minimal libc)
wayne2018
Zephyr jvm
Minimallibc最基本的C库,被称为“最小libc”,是Zephyr代码库的一部分,并提供了标准C库的最小子集,以满足Zephyr及其子系统的需求,主要是在字符串操作和显示领域。它的占用空间非常低,适用于不依赖于ISOC标准库中较少使用的部分的项目。它还可以与许多不同的工具链一起使用。最小的libc实现可以在主Ziphyr树中的lib/libc/minimal实现中找到。动态内存管理通过选择
java短路运算符和逻辑运算符的区别
3213213333332132
java基础
/*
* 逻辑运算符——不论是什么条件都要执行左右两边代码
* 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的
* 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&&)。
*
* 并联电路两个开关只要有一个开关闭合,电路就会通。
* 类似于短路或(||),只要有其中一个为true(开关闭合)是
Java异常那些不得不说的事
白糖_
java exception
一、在finally块中做数据回收操作
比如数据库连接都是很宝贵的,所以最好在finally中关闭连接。
JDBCAgent jdbc = new JDBCAgent();
try{
jdbc.excute("select * from ctp_log");
}catch(SQLException e){
...
}finally{
jdbc.close();
utf-8与utf-8(无BOM)的区别
dcj3sjt126com
PHP
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如
JAVA Annotation之定义篇
周凡杨
java 注解 annotation 入门 注释
Annotation: 译为注释或注解
An annotation, in the Java computer programming language, is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, pa
tomcat的多域名、虚拟主机配置
g21121
tomcat
众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但是项目用到的是tomcat,配来配去总是不成功。查了些资料才总算可以,下面就跟大家分享下经验。
很多朋友搜索的内容基本是告诉我们这么配置:
在Engine标签下增面积Host标签,如下:
<Host name="www.site1.com" appBase="webapps"
Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )
510888780
linux capistrano
1.ssh -v
[email protected] 出现
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
错误
运行状况如下:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuratio
log4j的用法
Harry642
java log4j
一、前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中
mysql、sqlserver、oracle分页,java分页统一接口实现
aijuans
oracle jave
定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量
oracle分页:
select * from ( select mytable.*,rownum num from (实际传的SQL) where rownum<=pageEnd) where num>=pageStart
sqlServer分页:
 
Hessian 简单例子
antlove
java Web service hessian
hello.hessian.MyCar.java
package hessian.pojo;
import java.io.Serializable;
public class MyCar implements Serializable {
private static final long serialVersionUID = 473690540190845543
数据库对象的同义词和序列
百合不是茶
sql 序列 同义词 ORACLE权限
回顾简单的数据库权限等命令;
解锁用户和锁定用户
alter user scott account lock/unlock;
//system下查看系统中的用户
select * dba_users;
//创建用户名和密码
create user wj identified by wj;
identified by
//授予连接权和建表权
grant connect to
使用Powermock和mockito测试静态方法
bijian1013
持续集成 单元测试 mockito Powermock
实例:
package com.bijian.study;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import or
精通Oracle10编程SQL(6)访问ORACLE
bijian1013
oracle 数据库 plsql
/*
*访问ORACLE
*/
--检索单行数据
--使用标量变量接收数据
DECLARE
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
select ename,sal into v_ename,v_sal
from emp where empno=&no;
dbms_output.pu
【Nginx四】Nginx作为HTTP负载均衡服务器
bit1129
nginx
Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:
负载均衡的好处
增加可用资源
增加吞吐量
加快响应速度,降低延时
出错的重试验机制
Nginx主要支持三种均衡算法:
round-robin
l
jquery-validation备忘
白糖_
jquery css F# Firebug
留点学习jquery validation总结的代码:
function checkForm(){
validator = $("#commentForm").validate({// #formId为需要进行验证的表单ID
errorElement :"span",// 使用"div"标签标记错误, 默认:&
solr限制admin界面访问(端口限制和http授权限制)
ronin47
限定Ip访问
solr的管理界面可以帮助我们做很多事情,但是把solr程序放到公网之后就要限制对admin的访问了。
可以通过tomcat的http基本授权来做限制,也可以通过iptables防火墙来限制。
我们先看如何通过tomcat配置http授权限制。
第一步: 在tomcat的conf/tomcat-users.xml文件中添加管理用户,比如:
<userusername="ad
多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
bylijinnan
java 多线程
public class IncDecThread {
private int j=10;
/*
* 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
* 两个问题:
* 1、线程同步--synchronized
* 2、线程之间如何共享同一个j变量--内部类
*/
public static
买房历程
cfyme
2015-06-21: 万科未来城,看房子
2015-06-26: 办理贷款手续,贷款73万,贷款利率5.65=5.3675
2015-06-27: 房子首付,签完合同
2015-06-28,央行宣布降息 0.25,就2天的时间差啊,没赶上。
首付,老婆找他的小姐妹接了5万,另外几个朋友借了1-
[军事与科技]制造大型太空战舰的前奏
comsci
制造
天气热了........空调和电扇要准备好..........
最近,世界形势日趋复杂化,战争的阴影开始覆盖全世界..........
所以,我们不得不关
dateformat
dai_lm
DateFormat
"Symbol Meaning Presentation Ex."
"------ ------- ------------ ----"
"G era designator (Text) AD"
"y year
Hadoop如何实现关联计算
datamachine
mapreduce hadoop 关联计算
选择Hadoop,低成本和高扩展性是主要原因,但但它的开发效率实在无法让人满意。
以关联计算为例。
假设:HDFS上有2个文件,分别是客户信息和订单信息,customerID是它们之间的关联字段。如何进行关联计算,以便将客户名称添加到订单列表中?
&nbs
用户模型中修改用户信息时,密码是如何处理的
dcj3sjt126com
yii
当我添加或修改用户记录的时候对于处理确认密码我遇到了一些麻烦,所有我想分享一下我是怎么处理的。
场景是使用的基本的那些(系统自带),你需要有一个数据表(user)并且表中有一个密码字段(password),它使用 sha1、md5或其他加密方式加密用户密码。
面是它的工作流程: 当创建用户的时候密码需要加密并且保存,但当修改用户记录时如果使用同样的场景我们最终就会把用户加密过的密码再次加密,这
中文 iOS/Mac 开发博客列表
dcj3sjt126com
Blog
本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息。
本博客列表涉及的文章内容支持 定制化Google搜索,特别感谢 JeOam 提供并帮助更新。
本博客列表也提供同步更新的OPML文件(下载OPML文件),可供导入到例如feedly等第三方定阅工具中,特别感谢 lcepy 提供自动转换脚本。这里有导入教程。
js去除空格,去除左右两端的空格
蕃薯耀
去除左右两端的空格 js去掉所有空格 js去除空格
js去除空格,去除左右两端的空格
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
SpringMVC4零配置--web.xml
hanqunfeng
springmvc4
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。
ServletContainerInitializer:启动容器时负责加载相关配置
package javax.servlet;
import java.util.Set;
public interface ServletContainer
《开源框架那些事儿21》:巧借力与借巧力
j2eetop
框架 UI
同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。
故事1:巧借力,乌鸦也可以吃核桃
有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。
核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,
JQuery EasyUI 验证扩展
可怜的猫
jquery easyui 验证
最近项目中用到了前端框架-- EasyUI,在做校验的时候会涉及到很多需要自定义的内容,现把常用的验证方式总结出来,留待后用。
以下内容只需要在公用js中添加即可。
使用类似于如下:
<input class="easyui-textbox" name="mobile" id="mobile&
架构师之httpurlconnection----------读取和发送(流读取效率通用类)
nannan408
1.前言.
如题.
2.代码.
/*
* Copyright (c) 2015, S.F. Express Inc. All rights reserved.
*/
package com.test.test.test.send;
import java.io.IOException;
import java.io.InputStream
Jquery性能优化
r361251
JavaScript jquery
一、注意定义jQuery变量的时候添加var关键字
这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:
$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的
二、请使用一个var来定义变量
如果你使用多个变量的话,请如下方式定义:
. 代码如下:
var page
在eclipse项目中使用maven管理依赖
tjj006
eclipse maven
概览:
如何导入maven项目至eclipse中
建立自有Maven Java类库服务器
建立符合maven代码库标准的自定义类库
Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。
我们平时用IDE开发都是把所需要的类库一股脑的全丢到项目目录下,然后全部添加到ide的构建路径中,如果用了SVN/CVS,这样会很容易就 把
中国天气网省市级联页面
x125858805
级联
1、页面及级联js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&l