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源码学习中的阻碍知识)
别人能伤害你,是你允许的。
1125198e6b7d
不要对别人抱有太大期望,保护自己的最佳方式,就是从不高估自己在别人心中的份量。能伤害你的从来不是别人的无情,而是你心存幻想的坚持。及时止损,不盼望就不会失望。相识很久的关系,明明内心很不舒服,却还要装作若无其事的样子,强撑着去面对。一次又一次为了迎合而迎合,自我qipian,精神内耗。对于那些不能带给你任何积极能量的人,我们真正要做的就是及时止损。伤害你的人从来没想过帮助你成长,真正让你成长的是你
Flink中的SQL Client和SQL Gateway
BigDataMLApplication
flink flink sql gateway
Flink中的SQLClient和SQLGateway对比目录定义基本原理适用场景主要区别常用运维命令示例官方链接正文1.定义SQLClient:FlinkSQLClient是一种用于提交和执行FlinkSQL语句的命令行界面或图形界面工具。SQLGateway:FlinkSQLGateway是一个独立的服务,它允许客户端通过RESTfulAPI将SQL查询提交到Flink集群。2.基本原理SQL
LeetCode1047:删除字符串中的所有相邻重复项
一个小猴子`
LeetCode 算法 数据结构 c++ leetcode
题目描述给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在“abbaca”中,我们可以删除“bb”由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串“aaca”,其中又只有“a
生活中的鸡毛蒜皮-----心情琐碎记录
安家妈妈
陪孩子打预防针回来时的小发现今天天气特别的好,阳光灿烂,太阳晒得人暖融融的。可惜这么好的天气就不去郊游,而是去打预防针疫苗。孩子已经六岁了,这是最后的一次接种疫苗打针。昨天晚上接到电话,还有一点担心孩子会害怕,会不会紧张,来医院会不会怕到不敢进去。试想哪一个孩子听到打针会不紧张呢?结果过程居然顺利的不可思议,没有紧张也没有害怕,也没有反复的问。来到社区医院的大楼,还觉得非常有趣好玩的样子。为了让她
读思001 ‖ 变负能为正能,变压力为动力
你不懂夜的黑
今天起开始写一个言说文集连载,重点为读写思考收获和感想,也收录生活和工作中开悟到的点滴,仍然是一个碎片式的思考积累。希望这样的思考能启迪我的生活智慧,开悟我的思想境界,也算是一个修心的过程吧。这个连载不定期更新,重在积累生活和工作中的随思碎思,或许也是一厢情愿的一个梦。也或许这个梦是我坚持说下去的一个重要理由。读思001变负能为正能,变压力为动力1从来没有一种哲学能解决一切问题,也从来没有一种药能
《对我而言危险的他》:“假千金”归来,携手神秘霸总共破迷局
入骨影评
由樊治欣李墨之主演的都市悬疑爱情剧《对我而言危险的他》在网上平台一次性播出全集。虽然是个小成本网剧,呈现出来的效果却十分有诚意。剧中从车祸到坠海、再到徒手灭火等惊险场面都是实景拍摄和主演们的无替身上场。说起樊治欣这个名字可能大家都不熟悉,但提起他演过的剧,大家都不陌生。饰演过《暗格里的秘密》中的学长苏柏从的樊治欣在这部剧中饰演霸总严星呈,即便同样戴着眼镜,却给人不一样的观感。该剧主要讲述了女主沈漫
花气袭人知昼暖
柒侠传
花气袭人知昼暖高一七班黄韵熹37号花袭人,原名花珍珠,位列金陵十二钗又副册中的第二位。“袭人”这一称呼源于“花气袭人知昼暖”这一诗句,是宝玉给起的。想起来便觉得暖融融的,一如花袭人温柔的笑容。但花袭人着实是令人又爱又怕的角色。第二十一回的回目将她赞作“贤袭人”,脂砚斋在一旁批道“当得起”。花袭人对宝玉的确是一片真心。她为劝宝玉收敛他那成日在大观园里与姐姐妹妹“厮混”的性子,假借家人赎回的机会,软语
SpringMVC设置全局异常处理器
水岸齐天
java spring
文章目录背景分析使用@ControllerAdvice(@RestControllerAdvice)+@ExceptionHandler实现全局异常全局异常处理-多个处理器匹配顺序存在一个类中存在不同的类中对于过滤器和拦截器中的异常,有两种思路可以考虑背景在项目中我们有需求做一个全局异常处理,来规范所有出去的异常信息。参考:官方文档分析首先ControllerAdvice(RestControll
一年又一年
微凉意思
睡到半天嗓子突然干痒,忍不住想要咳嗽又怕惊扰了熟睡的宝宝,强撑着困意爬起来倒,猛一回头看到墙上的日历,赫然写着2021年,顿时一个激灵睡意全无。都说2020年是极不平凡的一年,在疫情的阴影笼罩下我们胆战心惊,我记得年初疫情肆虐的时候,恰逢产假的我闲赋在家,每天看着群里各种消息,本就产后的我更加胡思乱想,有时候看着襁褓中的宝宝,我甚至在想我把他带到这病毒肆虐的世界,若没有能力护他周全可如何是好。看着
1.计算机处理器架构+嵌入式处理器架构及知识
vv 啊
arm-linux学习 linux 系统架构
目录一:x86-64处理器架构二:Intel80386处理器(i386)1.i3862.i686三:嵌入式Linux知识:1.MinGW2.GNU计划2.1GNU工具链概述此次只分享英特尔和ADM处理器有关于x86的架构,至于嵌入式处理器架构请查看https://en.wikipedia.org/wiki/List_of_ARM_processors一:x86-64处理器架构x86-64,也称为x
200719:重拾优点?
问谁逝舟
小时候的哪些优点,现在想重新拾回?——题记:《惜福阅历(SisypheCalendar)》2020.01.04还是先来审题吧。这句话中的关键信息就在于“重拾小时候的优点”。小时候的优点,当然是在曾经的生活中,给我们带来过好处,有其被自己或是被社会认可的价值。而它跟“重拾”搭配在一起,就颇耐人寻味了。重拾,意味着曾经失落,也意味着它对当下还有价值。那么问题来了,既然曾经它是有价值的,既然对当下还有价
入伏(五)
喜马ma
图片发自App入伏13今天我看见很多蜻蜓在飞飞得很低想起小学时学的那点知识在这闷热的午后真能来一场暴雨太过瘾了入伏14有点像瓢虫的昆虫喜欢吃葡萄叶喜欢交配在炎热的夏天如果你在葡萄园看见两只昆虫它们不是在吃葡萄叶就是在交配请记住它们的名字叫葡萄十星红甲
【嵌入式模块】步进电机使用总结
记录无知岁月
# 嵌入式设备 嵌入式硬件 步进电机
关于本博客 此前上了一门课《自动控制元件》,但是由于学时有限,讲到步进电机就不讲了,留下了一个小遗憾,导致需要使用步进电机时就有点懵,于是找了一篇博客,链接在这里,推荐具有电机知识(如直流电机,异步电机等)的朋友看,如果完全不懂,建议先啃书。
v-for 实例
琪33
v-for实例v-for实例{{item}}{{index+1}}:{{student.name}}-{{student.age}}varapp=newVue({el:'#app',data:{items:[53,23,76,14,54,36,28],students:[{name:'jspang',age:32},{name:'Panda',age:30},{name:'PanPaN',age:
常用API---初始化,话题和服务对象创建,回旋/头函数,时间(如:获取当前时刻,持续时间执行频率,休眠,定时器等),运行频率,定时器,节点生命周期,日志相关API
李卓璐
机器人 人工智能 c++
初始化ROS节点ros::init(argc,argv,“name”,options);作用:ros初始化函数参数: 1.argc—封装实参的个数(n+1个->有一个是自身); 2.argv—封装参数的数组; 3.name—为节点命名(唯一性); 4.options—节点启动项,解决节点重名问题。返回值:void使用: 1.argc和argv的使用: 如果按照ROS中的特定格式传入实参,那么RO
有一种思念叫故乡
那时光
无意中翻看空间中的老照片,看到了几年前在老家拍的一组照片,不禁又勾起了关于故乡的记忆......我出生在一个小山村,东面是一座连绵的小山,西面是一条蜿蜒的小河,南面是一片开阔的田野,田野的尽头是一片小树林......这些,是我儿时趴在窗前就可以看到的风景。这山、这河、这林,承载了我童年的大部分欢乐;那田野则让我在童年过早的理解了生活的艰辛。也许正是这种反差,故乡成了我无法忘却的记忆。(一)父母都是
C#中的PLINQ和LINQ的效率对比
搬砖的诗人Z
C# c# linq 开发语言
PLINQ(ParallelLINQ)和LINQ(LanguageIntegratedQuery)都是.NET框架中的功能,用于对集合进行查询和操作。它们之间的主要区别在于并行处理能力。LINQ:LINQ是一种用于在.NET应用程序中进行数据查询和操作的语言集成功能。它提供了一种统一的方式来查询各种数据源,如集合、数组、XML、数据库等。LINQ是在单线程环境中执行查询操作的,因此对于大型数据集或
npm 搭建 Vite 项目
渺小的虫子
viter 前端 javascript 开发语言
兼容性注意Vite需要Node.js版本>=12.0.0。1、使用npm安装Viter$npminitvite@latest使用npm初始化项目#npm6.xnpminitvite@latestmy-vue-app--templatevue#npm7+,需要额外的双横线:npminitvite@latestmy-vue-app----templatevue2、配置路由:npminstallvue-
地低为海人低为王
缘梦草
地低为海,人低为王。低,高之基,高,低之顶。谦虚才能收益,咄咄逼人会招损。高粱熟了,头会低下。受益反而会深藏不露。捧人之术,把人捧高,然后控制。受控之人,大都是虚荣心作祟。活成别人想象中的样子,像别人想象中那么有面子的活着是悲哀的。穷不可怕,怕的是虚荣心。当你好面子,你就会被控制。一旦受虚荣心控制,你不得不谨小慎微的维护面子,付出多余的能量,希望得到别人的一句赞。面子就是金子打造的牢笼,让你在赞美
2022-03-10
花满三春
梦想花开六月的风吹在我的脸上,在我的心里留下了遗憾,看着这惨不忍睹的分数,我收起了我的年少轻狂。天气很热,但我的心很冷,我盯着镜子中的自己,握紧了拳头,眼睛红红的,突然,一行晶莹的液体从我脸上滑落,那些晶莹的液体不断地在我脸上落下,唉?镜子中的我脸怎么有泪痕?哦,我原来哭了,我笑了,我不知道我到底在笑什么,是笑我怎么这么懦弱,还是笑我这么不争气。努力复习了这么久,小考才考这么点分,我放任我的泪水,
图论记录之最短路迪杰斯特拉
Just right
算法 图论 java 开发语言
简述思想这个思想能用一句话来概括,精简到的极致:每次找到一个最短距离的点并更新起点到各个点的最短距离如果要可视化的话,B站搜索Dijksra算法,有视频讲解伪代码写到这里,其实是想整一个动画的,这样效果更好点,但由于种种原因所以就拖一下intdijkstr(){dist[1]=0;其余的点的距离全部初始化为真无穷,不要写成int的最大值迭代n次将不在s中的,且距离最近的点给tsj即先到t,再加上t
linux基础命令(一)
运维搬运工
linux linux 服务器 centos
Linux基础命令1、设置主机名1.1、hostname查看主机名[root@ansible~]#cat/etc/hostnameansible或[root@ansible~]#hostnameansible注意:主机名中不允许使用下划线“_”,可以用短横线“-”1.2、hostname临时修改主机名#临时修改直接修改的是内存中的,重启会失效[root@ansible~]#hostnameansi
【转载】SSD测试第一神器——FIO
running_sheep
转自:[http://www.ssdfans.com]对于SSD性能测试来说,最好的工具莫过于FIO了。FIO是Jens开发的一个开源测试工具,功能非常强大,本文就只介绍其中一些基本功能。线程,队列深度,Offset,同步异步,DirectIO,BIO使用FIO之前,首先要有一些SSD性能测试的基础知识。线程指的是同时有多少个读或写任务在并行执行,一般来说,CPU里面的一个核心同一时间只能运行一个
C#WPF窗口类 Window详解
未来无限
C#WPF程序设计 c# wpf window 类 详解
本文详解C#WPF窗口类Window。目录定义Window窗体属性Window窗体事件实例演示定义WPF中的Window继承于ContentControl,内部可以承载一个Content,当然,借助于ItemsControl或Panel,Content也可以向下添加多个
虚拟 DOM 的优缺点有哪些
咕噜签名分发
前端 javascript 开发语言
虚拟DOM(VirtualDOM)技术作为现代前端开发中的重要组成部分,已经成为了众多流行前端框架的核心特性。它的引入为前端开发带来了诸多优势,同时也需要我们认真思考其潜在的考量。下面简单的介绍一下虚拟DOM技术的优势与缺点,深入探讨其在实际应用中的影响。提升性能虚拟DOM的最大优势之一是提升页面性能。通过比较前后两次虚拟DOM树的差异,最小化实际DOM操作,从而减少页面重渲染时的性能消耗。这种优
vue 通信方式
hx_1199
vue.js 前端
1、props和$emit父组件向子组件传递数据是通过props传递的,子组件传递给父组件是通过$emit触发事件来做到的。父组件this.$emit("update:page",newVal)-->importChildfrom'./child'exportdefault{name:"Father",components:{Child,},data(){return{articleList:['
计划比盲目做重要
一祉微笑
坚持分享第99天。一次次会议提醒着老师们假期余额不足,马上面临停机状态。50多天掐指而过,想想放假时的计划,对照如今的完成情况,感觉差太远。想着好好看书,如今50多天过去了第6本还处在未完待续状态;想着假期好好陪陪孩子,在玩中学一些知识,如今想想,孩子学的真不多;想着暑假坚持跑步,有时还是容易给自己找借口,休息三两天。给这个假期一个综合评价,只能说只完成了计划的百分之五六十。想想为什么临近开学没达
新注册的阿里云账号有哪些优惠?阿里云新用户必看优惠大合集
阿里云最新优惠和活动汇总
很多用户看到阿里云各种活动中的云服务器、云数据库、企业邮箱等云产品都仅限新用户购买之后,都纷纷直接注册了阿里云新账号之后购买,其实,阿里云新用户不仅可以优惠购买活动中的各种云产品,还有很多优惠,下面是“阿里云最新优惠和活动汇总”整理汇总的阿里云新用户必看优惠大合集。新注册的阿里云账号在购买活动中的云产品之前,还有免费领云产品通用代金券、抽取无门槛代金券、免费试用云服务器和正式购买云服务器等阿里云产
Golang标准库fmt深入解析与应用技巧
walkskyer
golang标准库 golang java 数据库
Golang标准库fmt深入解析与应用技巧前言fmt包的基本使用打印与格式化输出函数Print系列函数格式化字符串格式化输入函数小结字符串格式化基本类型的格式化输出自定义类型的格式化输出控制格式化输出的宽度和精度小结错误处理与fmt使用fmt.Errorf生成错误信息fmt包与错误处理的最佳实践小结日志记录与fmtfmt包在日志记录中的应用结合log包使用fmt进行高级日志处理小结fmt与IOfm
Flutter运行flutter doctor 命令长时间未响应如何解决
咕噜签名分发-淼淼
flutter
Hello大家好!我是咕噜铁蛋!在移动应用开发领域,Flutter以其高效、跨平台的特性吸引了众多开发者的关注。然而,在使用Flutter进行项目开发时,开发者可能会遇到各种问题,其中之一就是运行flutterdoctor命令时长时间未响应。今天铁蛋将深入探讨这一问题的成因、解决方案以及相关的Flutter环境配置知识。一、Flutter与flutterdoctor命令简介Flutter是Goog
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