万码F5GTP6P0
IP:上海
0关注数
0粉丝数
7获得的赞
北京独创时代科技有限公司
前端开发工程师
华东理工大学
本科
工作4年
编辑资料
链接我:

创作·135

全部
问答
动态
项目
学习
专栏
万码F5GTP6P0

非AI 背景的人如何入门大模型(一)?

可以可以
3
0
0
浏览量0
万码F5GTP6P0

问一下网站爬虫的原理

问一下网站爬虫的原理
0
0
0
浏览量159
万码F5GTP6P0

为什么要用form-data传输图片呢?

MDN 关于 FormData 第一行就说了什么是 FormData 和他的优势。FormData 接口提供了一种表示表单数据的键值对 key/value 的构造方式,并且可以轻松的将数据通过XMLHttpRequest.send() 方法发送出去,本接口和此方法都相当简单直接。如果送出时的编码类型被设为 "multipart/form-data",它会使用和表单一样的格式。关于 XHR 上传文件也可以不使用 FormData ,但是你需要像下面这个链接里面这样自己封装一个方法来拼接参数,构建一个文件上传表单,达到同样的效果。使用 XMLHttpRequest - Web API 接口参考 | MDN这样如果你是前端你可能就会很不爽,因为这需要你来拼接数据,达到最终的效果,而后端和你使用 FormData 上传处理的方式一样,因为 FormData 最终也会转成这种数据后发送。上面的方法你看起来会很不爽,但是有其他办法么,当然是有的: Base64 ,你可以把文件读入后使用 JS 把他转成 Base64 字符串,现在这个文件就是一个普通的 Base64 字符串了,然后这样你就可以把它作为一个 json 对象的值进行发送了,但是这样的坏处就是转码后的 Base64 字符串会比源文件的体积大 1/3,其次,因为这一部分你需要在用户设备上完成,如果文件太大,用户体验就会极差,其次,这样转 Base64,虽然你简单了,但是后台在接收到你的 Base64 字符串又要做另外的处理,后台可能就不会很爽了,他需要转码(占用大量资源)后再存储文件,而且他还要把你传递的数据作为一个简单表单来处理(因为在一些后端语言,处理标准的文件上传有统一的方法,甚至对于脚本语言,这一部分会使用 C 来进行处理进而提高效率,但是如果你这样做的话,后端就全部得自行在业务代码中处理)。现在,你应该就会明白为啥会有 FormData 这个接口了。
2
0
0
浏览量0
万码F5GTP6P0

在分布式架构下怎么做 csrf 防御?

如果你们已经做了Session共享那就放在Session中,如果没有做,那就放到redis等缓存中。
1
0
0
浏览量0
万码F5GTP6P0

div只有四个角有边框怎么实现?

css3 可以用 background 实现,如下: .rect { position: absolute; top: 20px; left: 20px; width: 100px; height: 100px; background: linear-gradient(to left, #f00, #f00) left top no-repeat, linear-gradient(to bottom, #f00, #f00) left top no-repeat, linear-gradient(to left, #f00, #f00) right top no-repeat, linear-gradient(to bottom, #f00, #f00) right top no-repeat, linear-gradient(to left, #f00, #f00) left bottom no-repeat, linear-gradient(to bottom, #f00, #f00) left bottom no-repeat, linear-gradient(to left, #f00, #f00) right bottom no-repeat, linear-gradient(to left, #f00, #f00) right bottom no-repeat; background-size: 1px 20px, 20px 1px, 1px 20px, 20px 1px; } <div class="rect"></div> 其实我觉得还不如用 border-image 实现来得简单,不过 border-image 要切图,
1
0
0
浏览量0
万码F5GTP6P0

你们是怎么布署前端代码(前端自动化,构建)?

前端已经进入规模化生产时代了。更新答案: 「大公司里怎样开发和部署前端代码?」https://github.com/fouber/blog/issues/6 三架马车: Yeoman + Grunt + Bower。自动构建啥的当然用Grunt啦。
1
0
0
浏览量0
万码F5GTP6P0

如何实现百分比条形和tgi图的组合?

解决方案 Solution你可以使用@VisActor/VChart实现想要的效果。VChart允许多个series组合在一张图表中,仅需要将图表类型设为common,并在series中添加柱状图和折线图的series,修改折线图的线样式为虚线,点样式为矩形,即可实现图中效果。为了实现柱图与线图使用不同的坐标轴,在axes中,需要配置3个坐标轴:左侧的band轴,底部线图的linear轴,除此之外还需要给柱图配置一个linear轴。你可以将该轴放置在顶部并将visible设为false,并通过调整max属性,指定轴的范围,实现图中的效果。代码示例 Code Example图表spec如下:{ type: 'common', data: [ { "id": "data", "values": [ { "x": "2015-09-24", "y": 0.6 }, { "x": "2015-09-25", "y": 0.7 }, { "x": "2015-09-26", "y": 0.71 }, { "x": "2015-09-27", "y": 0.65 }, { "x": "2015-09-28", "y": 0.53 }, { "x": "2015-09-29", "y": 0.55 } ]}, { "id": "data2", "values": [ { "x": "2015-09-24", "y": 40 }, { "x": "2015-09-25", "y": 25 }, { "x": "2015-09-26", "y": 31 }, { "x": "2015-09-27", "y": 37 }, { "x": "2015-09-28", "y": 28 }, { "x": "2015-09-29", "y": 22 } ] } ],series: [ { type: 'bar', id:'barSeries', direction:'horizontal', dataId:'data', yField: 'x', xField: 'y', }, { type: 'line', id:'lineSeries', direction:'horizontal', dataId:'data2', yField: 'x', xField: 'y', line:{ style:{ lineDash:[2,5] } }, point:{ style:{ symbolType:'rect', size:10, scaleX:1, scaleY:10, } } } ], axes: [ { orient: 'left', seriesId:['barSeries','lineSeries'], type: 'band', grid: { visible: true } }, { orient: 'top', type: 'linear', max:1.2, seriesId:['barSeries'], grid: { visible: true }, visible:false }, { orient: 'bottom', type: 'linear', seriesId:['lineSeries'], grid: { visible: true }, } ], }结果展示 Results在线效果参考:https://codesandbox.io/s/bar-chart-and-tgi-chart-8fkprk?file=...Online demo:https://codesandbox.io/s/bar-chart-and-tgi-chart-8fkprk?file=...相关文档 Related DocumentationVChart组合图教程:https://visactor.bytedance.net/vchart/guide/tutorial_docs/Cha...组合图配置项:https://visactor.bytedance.net/vchart/option/commonChart#typegithub:https://github.com/VisActor/VChart
0
0
0
浏览量0
万码F5GTP6P0

前端自动化测试是干嘛的?

从必要性来看,我觉得不测试就像开车闯红灯,不一定会出事,但是代码量越来越大,开车的路越来越长时,总有一天会出事。 假如有个项目: function Swiper (el, options) { if (typeof el === 'string') { this.el = document.getElementById(el) } else { this.el = el } console.log('a swiper is created') } 单元测试 内容:测试你项目中的单元。一个函数可以是一个单元,一个子模块可以是一个单元 目的:自动化,驱使你更好的设计(比如耦合性强的代码写单元测试时会发现很难),不耍流氓 如果没有测试类库,我想对上面的代码进行测试的话,可能会这样做: 写个demo.html,引入上面的代码 测试传元素id实例化的情况 测试传元素本身实例化的情况 测试swiper其他功能 并且最好能在控制台上console.log一些东西,告诉我当前正在测什么,测试结果是怎么样的 测试框架,就是帮助你完成上面的过程,归类测试用例,输出进度,测试结果,给出报告等。如mocha 断言库,则是让你除了===之外,有很多其他手段去做比较,而且可读性很强,比如:this.obj.should.have.property('id').which.is.a.Number()。 相关的库有:chai, should.js,专门测http的superagent等 看Vue源码中怎么写单元测试: Karma是一个测试工具,能让你的代码在浏览器环境下测试。需要它的原因在于,你的代码可能是设计在浏览器端执行的,在node环境下测试可能有些bug暴露不出来;另外,浏览器有兼容问题,karma提供了手段让你的代码自动在多个浏览器(chrome,firefox,ie等)环境下运行。如果你的代码只会运行在node端,那么你不需要用karma。 覆盖率 单元测试的目的是,将你的项目划分成小单元,每个单元测试中尽量设计case将代码逻辑中的每个分支到运行到,这样所有单元的测试跑下来,项目中的每行代码最好都被跑过一次,即覆盖率尽量去靠近100%。 如果对上面Swiper的代码只测试了:new Swiper(document.getElement('mountNode'))的情况的话,那么覆盖率就只有50%,所以要补上new Swiper('mountNode')的单元测试跑另外一个分支。 对于小项目而言,考虑到所有分支,不是难事,但是对于Vue这样的项目,做到100%的覆盖率,感觉很变态。 工具:istanbul E2E测试 端到端测试,主要是测业务,绝大部分情况是指在浏览器上对某个网站进行某个的操作,比如:登录。 拿nightwatch首页例子来看: 我没有用过nightwatch,但是也很容易就看出来这是在测试登录google并且输入一个关键词进行搜索业务的端到端的过程。能看到这个库提供了很多功能,来模拟人在页面上进行的操作,从而代替人的点击输入操作,来完成自动化的E2E测试。 也可以看看Vue项目中的E2E测试在测些什么东西: 有没有很熟悉,这是在对官网上的几个示例进行测试,因为页面,就是Vue的业务。 现实 凤凰传奇:测试不是你想写,想写就能写~ 写测试很花时间,可能比写项目代码更久,而且项目代码的变动,测试都要改。因此,国内绝大部分公司,没有开发人员去写测试的环境,只靠测试人员去保证软件质量。如果你在一家要求你勤勤恳恳写测试的公司里,请珍惜。 测试能改善设计,去看Martin Fowler的测试驱动一本书。
0
0
0
浏览量0
万码F5GTP6P0

一张图片仅 1M 左右,但可以直接让浏览器卡死、CPU 拉满,是什么原因导致的?

这个图(是PNG格式的)分辨率很大(20556 × 12224),但是颜色少,所以可以压缩到很小,但又因为分辨率大,解码渲染时要花费很大的内存和CPU,这张图有alpha通道,应该是卡在透明度合成计算上https://bomb.codes/bombs
0
0
0
浏览量0
万码F5GTP6P0

好用的route hashchange 类似history.js 思路

还不快来试试我的?Q.js 是一个炒鸡轻量的前端单页路由框架。 轻量、快速、极简 https://github.com/itorr/q.js 为了更好的利用缓存以及更少的后端支援,Q.js放弃了 HTML5 State,通过#!格式的 url hach 重现了 url 路由功能。 无 JavaScript 库依托,可随意搭配使用 源代码不及百行压缩后 834byte 支持 IE6+ Chrome Safari FF 未做情况判定,使用 Q.js 必然会注册 window.Q 万物之死始我们先来一段简单的 Hello Worldhtml<!DOCTYPE html> <meta charset="UTF-8"> <div id="m"></div> <script src="q.js"></script> <script> Q.reg('home',function(){ document.getElementById('m').innerHTML='Hallo World'; }); Q.init({ index:'home'/* 首页地址 */ }); </script> 打开例子后,浏览器会从 http://simple.com/ 跳转到 http://simple.com/#!home ,并且在页面显示 Hallo World。如此,您的第一个通过 Q.js 实现的 URL 路由就工作了~ 接着我们再详细说明下,如何让 Q.js 工作的。注册URL在 Q.js 中,提供 关键字 和 正则表达式 两种注册 URL 方式。 关键字注册 URL 在 Q.js 中效率最高、但需要按照关键字模式规划 URL,在前者不能满足需求情况下可以使用正则注册法~ 使用正则表达式注册URL可能会不同程度的增加运行时间(极不明显),在允许的情况下请优先使用关键字注册 URL~ 接下来我们通过规划一个 blog 的URL,来学习如何使用 Q.js 注册URL。首页我们先从首页开始~在注册之前我们分析一下注册首页 URL 都有哪些需求: 1. 首先首页有一个固定格式 2. 在大部分情况下不需要在 URL 中体现参数传递 3. 是打开域名时的默认展示页首先我们通过注册一个固定页面 home ,回调不期待传值javascriptQ.reg('home',function(){ console.log('打开了首页'); /* JavaScript 代码 */ }); 通过以上代码 访问 #!home 时,就会触发后面的回调。在回调中我们修改页面 DOM 实现页面无刷新变换内容。 (这部分不在本篇文档所述范畴)按照这样的方法,同理 我们也可以实现 类似 关于 #!about、友情链接 #!friend 等等页面的注册。实现了首页的 URL 注册之后,我们要在打开网页时默认跳转到 home 页。Q.js 的启动,由 Q.init 函数实现。=javascriptQ.init({ index:'home'/* 首页地址 如果访问到不能访问页面也会跳回此页 */ }); 在 init 的启动参数里面附带 index 参数,这样我们访问页面时就会默认打开 #!home如果觉得 #!home 中的 ! 不符合预期,这…也是可以改的~javascriptQ.init({ key:'^_^', /* url里#和url名之间的分割符号 默认为感叹号 */ index:'home' /* 首页地址 不可访问路径也会跳回此地址 */ }); 可以通过任意符合 URI 规范的字符串分割,甚至也可以设置为空。 设置为空时,Google等现代搜索引擎可能无法按照路由地址实现索引。请谨慎设置 文章页和翻页文章页和首页不太一样、只有URL的一部分是相同的,需要通过URL中的不同部分区分不同文章页,不是默认打开页。 文章页有一个固定的格式 需要在URL中体现文章唯一ID Q.js 关键字模式时,参数之间通过 / 分割,请根据顺序进行 URL 规划javascriptQ.reg('article',function(aid){ if(!aid) return alert('传入参数不正确,请确认您访问的地址。'); console.log('打开了文章,文章唯一ID为:'+aid); /* JavaScript 代码 */ }); 注册之后访问页面 #!article/123 即可触发 article 页面回调,并传入 参数1 "123" Q.js 不判断传入数据类型,请务必在回调中确认数据格式 翻页可文章页传值方式基本一致,在这里不重述分类页分类页其实和文章页很相似、只是参数一变成了分类名称,内容较多时需要传递下当前页码 分类页有一个固定的格式 需要在URL中体现分类唯一名称 可能会有页码信息 依据上面的要求,我们依旧使用关键字注册模式,注册一个名为 category 的 url 预设两个参数 分类唯一名称 cstr ,页码 pagejavascriptQ.reg('category',function(cstr,page){ if(!cid) return alert('传入参数不正确,请确认您访问的地址。'); if(!page)/* 如果 */ page=1; console.log('打开了分类页面,分类名称是: '+cstr); console.log('当前页面:'+page); /* 下面这段伪代码依托iTorr.js 仅作参考 */ /* 根据分类唯一名称和页码发起 AJAX 请求 */ $.x('/api/category/'+cstr+'/page/'+page,function(d){ console.log(d); /* 在这里修改页面DOM */ }); }); 访问 #!category/photo 会传入 photo 到 category 的回调函数 访问 #!category/photo/2 会传入 photo 和 2 到 category 的回调函数参数二不存在时,需要在回调函数内进行处理~导航条有了这些 URL 之后,我们还需要一个导航条来提供页面之间的入口, 导航条需要在每次页面变更时修改导航条样式,指示当前打开的页面。我们的 HTML 一般是这样的html<nav> <a href="#!home" class="active">首页</a> <a href="#!about">关于</a> <a href="#!friend">友情链接</a> </nav> CSS 一般是这样的CSSnav{line-height:2em;} nav a{display:inline-block;vertical-align:top;padding:0 .5em;} nav a.active{background:#369;color:#FFF;} 这时候我们需要在每次 URL 变更时,通过 JavaScript 动态修改 nav 中的 active class 的位置,以修改样式。javascript/* 这段伪代码依托iTorr.js 仅作参考 */ var navchange=function(L){/* 每次有url变更时都会触发pop回调 */ /* L 为当前回调函数名称(目前仅支持关键字回调情况) */ var a;//临时变量 if(a=$('nav a.active')) //如果存在这个DOM a.className=''; //修改它的ClassName if(a=$('nav a[href="#!'+L+'"]')) //如果存在这个DOM a.className='active';//修改它的ClassName }; Q.js 提供了 Q.pop 事件,可以通过注册 Q.pop 实现在每次 URL 变更时发生回调, Q.pop 事件和其他 URL 事件不发生冲突,并在其他 URL 回调函数之前运行,请注意触发时机。注册和修改 Q.pop 有多种途径。可以放在启动函数中注册,比如:javascriptQ.init({ /* ...各种其他参数... */ pop:navchange //注册 pop 函数 }); 也可以通过 关键字注册javascriptQ.reg('pop',navchange); 甚至可以直接修改 Q.popjavascriptQ.pop=navchange 请注意,使用 Q.js 请避免使用 Q.js 保留关键字为 URL 地址 保留关键字包括:reg,pop,go,V到这里,我们的简单的博客差不多就能用啦~ 还剩下一个正则注册 URL 没有说,正则注册在关键字判定前进行判定,不论注册前后,请注意判定顺序。所以也因为这样,我们关键字判定中的关键字部分可以用正则表达式注册法替代。 但是如果我们依旧想用保留关键字,用正则注册法是这样实现的javascriptQ.reg(/pop/,function(){ console.log('pop事件'); }); 正则注册法需要在正则里指定可能传入的值以上我们的博客URL规划基本就已经完成啦~如何实现更加丰富的 url 格式关键字注册法虽然方便,但仅仅支持 关键字/参数1/参数2/参数3 这种格式,想要实现更多不科学的 URL 格式,可以通过正则注册法~ 比如视频网站的链接,由v开头后面跟数字ID的情况,预期必然会有参数一 并且为数字javascriptQ.reg(/v(\d+)/,function(vid){ console.log('pop事件 参数一:'+vid); }); 这样访问 http://simple.com/#!v1234567 就会传递值 1234567 给回调函数。我想在 JavaScript 里知道当前在哪个页面如何实现?访问 Q.lash 变量即可返回当前页面关键字 Q.lash 目前仅可返回关键字注册的 URL,预计会在下次版本更新时增加正则支持。 如何通过JavaScript跳转到特定链接因为在 Q.js 中!关键字是可以被修改的,如果通过JavaScript实现URL跳转,可以调用 q.go 函数JavaScriptQ.go('category/code'); 当然,大部分情况我们推荐使用 HTML 原生的 a 标签 link 通过访客触发,进行跳转HTML<a href="#!category/code">代码分类</a> 以上。
0
0
0
浏览量0
万码F5GTP6P0

微信小程序的自定义组件中使用canvas在真机上不显示绘制内容

你的控制台有没有报错呢,下载的图片域名有加入白名单吗?
0
0
0
浏览量0
万码F5GTP6P0

element UI 表格问题:如何能让某个表格字体颜色变为指定色?

看下面的栗子把,看完你就明白了! <el-table-column label="升级状态"> <template scope="scope"> <span v-if="scope.row.upgrade_resule=== 1">升级成功</span> <span v-else style="color: red">升级失败</span> </template> </el-table-column>
0
0
0
浏览量0
万码F5GTP6P0

element的loading动画出现的很慢?

loading指令人家是这么写的 恩,就是只有绑定和更新,并没有插入。而自定义的指令生命周期大约是这样的所以个人认为在table组件的mounted方法中的内容是不能loading的。而table组件中它干的事情是 可以看到有doLayout方法,所以如果你已经看到表格结构了,说明布局已经完成了。所以我觉得,源生的loading指令应该是不能达到你的需求的。考虑下其他方法吧。
0
0
0
浏览量0
万码F5GTP6P0

Element-UI的dialog弹窗的右上角的叉号和灰曾点击后都不能关闭弹窗

<el-dialog title="" :visible.sync="dialogTableVisible" :before-close="ai_dialog_close"> <el-tree :data="gridData" show-checkbox default-expand-all node-key="id" ref="tree" :default-checked-keys="defaulttreevalue" highlight-current :props="defaultProps"> </el-tree> </el-dialog> =================== ai_dialog_close(){ this.dialogTableVisible = false; }, ==============================还有查看下版本,之前1.2.9版本,死活不显示弹窗。更新1.3.1版本后就显示了
0
0
0
浏览量0
万码F5GTP6P0

mysql PHP 如何实现空间距离的检索 计算配送范围

这些数据都是用离线脚本跑的,不是实时计算的
0
0
0
浏览量0
万码F5GTP6P0

现在我在学习MySQL,问问怎么复制粘贴数据库.

SQL命令: SOURCE *.sql; SELECT * FROM 表 INTO OUTFILE '路径文件名'FIELDS TERMINATED BY ','ENCLOSED BY '"'LINES TERMINATED BY 'rn'; LOAD DATA LOCAL INFILE '路径文件名' INTO TABLE 表FIELDS TERMINATED BY ','LINES TERMINATED BY 'rn'; cmd 命令:mysql -u root -p 库 < *.sqlmysqldump -u root -p 库 > *.sql
0
0
0
浏览量0
万码F5GTP6P0

dolphindb中如何设置某个数据节点单独的参数配置?

在cluster.cfg中,可以使用以下4种方式指定配置参数的值:使用节点的别名。节点的别名在cluster.nodes中定义。nodeA.volumes = D:/DFSRoot/nodeA nodeB.volumes = D:/DFSRoot/nodeB使用别名和通配符("%"和"?")。"?"表示单个字符,"%"表示0,1或多个字符。%8821.volumes = /DFSRoot/data8821 %8822.volumes = /DFSRoot/data8822 DFSnode?.maxMemSize=16使用宏变量<ALIAS>。对于具有两个数据节点nodeA和nodeB的集群:volumes = /DFSRoot/<ALIAS>相当于:nodeA.volumes = /DFSRoot/nodeA nodeB.volumes = /DFSRoot/nodeB集群中的所有节点使用相同的参数值:maxConnections=64 maxMemSize=12
0
0
0
浏览量0
万码F5GTP6P0

删除dolphindb表的指定行

对于分布式表,DolphinDB不支持删除单条记录,仅支持以分区为单位删除批量数据。一般碰到这种情况就把所在分区数据读出来,进行更新后再回写。
0
0
0
浏览量0
万码F5GTP6P0

请问 SQL (mysql) 如何查询相同 ID下某一列全部相同的 sql 语句怎么写?

select * from (select wextid,result from t_test group by wextid,result) a group by wextid having count(1)=1 and result = 'error'
0
0
0
浏览量0
万码F5GTP6P0

分类信息的多层级分类是怎样设计的?

没人回答,我来抛砖。分别为不同的分类建立属性表,保存每个产品的属性值。你说的多维分类其实就是按不同的属性来分类检索。为每一个类型建立一张属性表,比如楼主那个样例,有区域、租金、厅/室、方式、品牌等属性,以此为例 产品ID 区域ID 租金 厅数 室数 方式 品牌 1 510703 1000 1 2 整套 [NULL] 2 110103 5000 2 3 整套 我爱我家 3 110228 2000 1 1 单间 中原地产 这只是最基本的属性,其中区域使用的区划码。方式和品牌没有使用枚举主要是可能还会有其它扩展。如果系统做得够复杂,这些东西也需要单独的表来维护。代码中,对于每一种类型的产品,在登记的时候向这张表插入数据。在检索的时候,先根据检索条件大致确定产品的分类,进入分类检查页面之后再列出详细的属性以供选择。对于多值属性,可以采用逗号分隔等方式保存(varchar(n)),用 like 查询,诸如此类。
0
0
0
浏览量0
万码F5GTP6P0

mysql查询语句优化,请问这条语句有还能再优化吗?

SELECT ip.query, b.name, b.cover, ip.co AS VALUE FROM ( SELECT query, COUNT(ip_times.query) AS co FROM ip_times WHERE DATE_SUB(CURDATE(), INTERVAL 100 DAY) <= DATE(ip_times.date) AND path = '/GetBookById' GROUP BY ip_times.query ORDER BY co DESC LIMIT 23 ) ip LEFT JOIN books b ON ip.query = b.id
0
0
0
浏览量0
万码F5GTP6P0

请教MySql中使用表子查询时,试着先排序后分组,出现排序失效的原因?

5.7的吧?5.7以后对排序的sql解析做了优化,子查询中的排序是会被忽略的5.6你这样写是没问题的,5.7的话需要换一换了,使用聚合函数取出你要的记录再关联原表获取第一条记录或者使用组内排序生成行号后再按行号取第一条也行
0
0
0
浏览量0
万码F5GTP6P0

前端怎么进行组件化的开发,以及如何解决组件之间依赖的关系?

可以用webpack,目前最火的前端构建工具。只要加载loader,你想引用什么模块就引用什么模块。我司现在使用的是webpack+react,组件化太方便了。
0
0
0
浏览量0
万码F5GTP6P0

网站英文用户名保留字的问题

感谢 @gaosboy 和 @felix021。避免保留字问题的最简单的方法就是像 @gaosboy说的加个命名空间。看了一些网站的URL设计也是这样: http://www.v2ex.com/member/airyland http://www.douban.com/people/airyland/另外需要考虑的:不允许纯数字小于4个字符的保留可能应用于二级域名的保留 (@felix021)保留与保留字部分字形相似的字符,如o=0,l=>1 (@felix021)关于可能的保留字,找到了Quora 上的一个问题:How do sites prevent vanity URLs from...整理后的一个列表:about account activate add admin administrator api app apps archive archives auth better blog cache cancel careers cart changelog checkout codereview compare config configuration connect contact create delete direct_messages documentation download downloads edit email employment enterprise facebook faq favorites feed feedback feeds fleet fleets follow followers following friend friends gist group groups help home hosting hostmaster idea ideas index info invitations invite is it job jobs json language languages lists login logout logs mail map maps mine mis news oauth oauth_clients offers openid order orders organizations plans popular post postmaster privacy projects put recruitment register remove replies root rss sales save search security sessions settings shop signup sitemap ssl ssladmin ssladministrator sslwebmaster status stories styleguide subscribe subscriptions support sysadmin sysadministrator terms tour translations trends twitter twittr unfollow unsubscribe update url user weather webmaster widget widgets wiki ww www wwww xfn xml xmpp yaml yml
0
0
0
浏览量0
万码F5GTP6P0

如何在 javascript 中实现 unload 延迟跳转 或 有效的不访问网络、不抢光 CPU 的 sleep 方法?

我写一个同步阻塞的sleep吧,这是我在学习setTimeout时看别人的测试例子。//占cpu的做法 var sleep=function(delayTime){ var startTime=new Date(); while(new Date()-startTime<=delayTime){ } }; //jquery Deferred function wait(ms) { var deferred = $.Deferred(); setTimeout(deferred.resolve, ms); // We just need to return the promise not the whole deferred. return deferred.promise(); } // Use it wait(5500).then(function () { alert('hahahaah'); // Do something brilliant here! });
0
0
0
浏览量0
万码F5GTP6P0

关于z-index的疑问

1,当使用position和z-index之后会创建新的stacking context结构2,创建stacking context之后,内部的元素的从后向前的创建顺序如下:Within each stacking context, the following layers are painted in back-to-front order: 1,the background and borders of the element forming the stacking context. 2,the child stacking contexts with negative stack levels (most negative first). 3,the in-flow, non-inline-level, non-positioned descendants. 4,the non-positioned floats. 5,the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks. 6,the child stacking contexts with stack level 0 and the positioned descendants with stack level 0. 7,the child stacking contexts with positive stack levels (least positive first).`` 3,当z-index不为auto时,创建新的stacking context,此时.box的border和background是属于1所描述的情况,所以始终是在最下面的4,当z-index不存在,此时不创建新的stacking context,此时.box的3这种情况。故当设置z-index小于0时,即前面的2,就可以使.box覆盖在伪元素之上啦 参考:z-index-when using pseudocss stacking context
0
0
0
浏览量0
万码F5GTP6P0

css如何选中某个table的第n列?

table td:nth-child(n){}
0
0
0
浏览量0
万码F5GTP6P0

css两栏布局,高度问题

-margin+padding http://jsfiddle.net/eedWk/12/把http://jsfiddle.net/eedWk/12/show拖到地址栏看效果。点击按钮一次加300px,右栏增加到3000px以后,左栏若高度不够将无法自动填充到等于右栏。注意,CSS里面所有位置设置的3000px可变,但这个值必须提供,它正比于左栏自动能够填充到的最大可能高度。
0
0
0
浏览量0
万码F5GTP6P0

css sprites该如何书写类名呢?

其实差别可能不大吧,这取决于个人习惯。如果真的要比较的话,两种写法我更偏向于后者,因为后者更有利于维护。可以想象的是,如果在每一个需要用到Sprites图的元素加一个.all_img类名,那么对于后期做小范围修改的成本肯定是前者比后者高的。例如.topbar类因为某种原因不需要用到Sprites图了,那么取消background-image属性肯定是后者比前者快的。因为前者需要找到相应元素,而后者只需要找到对应类名。当然,如果用LESS或者SASS的话,这种比较就没有任何意义了。
0
0
0
浏览量0
万码F5GTP6P0

前端开发浏览器兼容性测试工具?以及各浏览器的分级?

浏览器兼容测试环境下面的每个环境上下文都是互斥的: winxp + IE6 / 搜狗 / 360 win7 + ie9(可以使用其 ie7 / ie8 兼容模式来测试 IE7 和 IE8 ) / 搜狗 / 360 / opera / firefox / chrome win7 + ie10 win7 或 xp + ie8 或 ie7(可忽略) mac + safari / firefox / chrome (可忽略) win8.1 + ie11 (不需要) 每一个选项都应该是一台远程或本地的测试机器,或者是一个vmware虚拟机,装有原生对应版本浏览器的操作系统。1 主要是用于测试IE6,而360/搜狗的内核,有可能与装了原生IE8+和360/搜狗的系统不太一样。之前遇到的一个例子是:localStorage在装了winxp+ie6的360上面,只要用到,就会报错,除非使用try catch语句包裹它,而winxp+ie8的360上面,就可以正常使用。(之后未再印证这个bug360有没有修复)2 建议作为大家的开发环境,可以涵盖非常大比例的浏览器兼容部分。3: “过了前2的测试,但3测试失败”?这里有一个原因。4 我几乎没有遇到“过了前3的测试,但4测试失败”的问题,IE9的IE8/IE7兼容模式可以很好地把相应的bug发掘出来,这个环境可忽略,但QA最好不要放过这里。5 mac机器的浏览器和windows的浏览器还是有一些区别的,比如说滚动事件和windows完全不一样,如果做到的交互涉及滚动的托管之类的,一定要用mac测测,但是考虑到用户群非常少,所以要求不这么严苛的话,可以忽略。6 ie11出现以后,其实和现代浏览器已经没有什么区别,没有必要额外测试。update:微软又自作多情地在sdk里面取消了margin-bottom的支持,如果你用html5和js编写的win8的app的页面还用于浏览器的web app话,还是得测。最后,不要相信IE Tester,不要相信Microsoft Expression 4 Superview的交互模式的结果,我吃了N遍“IE Tester自测通过但QA用原生低版本IE测出bug”的亏。浏览器的分级太困了这里mark一下回头再补完……
0
0
0
浏览量0
万码F5GTP6P0

用户个例的怪事

问题描述 页面正式上线之后,有用户反馈页面一直报错。无法正常交互 相关信息 和用户进行了沟通之后,进行了联调发现 用户在4G环境和wifi环境都能正常访问app,但是app中的其中一个内嵌H5页面点击进入之后。向后端发起的ajax请求一直处于0的状态。 其一 其他内嵌页面都是正常的 其二 只有这个用户个例,其他用户正常 其三 ajax方法是通用方法,内嵌页面方法一致 不知道有没有遇到过同类型的问题。最后查出的原因是什么。
0
1
0
浏览量189
万码F5GTP6P0

进入页面时如果在一个异步请求里渲染了一个DOM结构,那么和这个DOM结构相关的交互js都要写在请求完成的回调函数里吗

就是说我进入页面的时候要请求一个表格数据,但是我还要操作这个表格。编辑删除之类的。在异步请求完成时后的回调函数里我可以循环遍历将数据插入表格,但是后期的操作呢,以及操作之后又产生的ajax请求呢?都要写在完成的回调函数里嘛?那么整个页面就是一个大的ajax里边套着渲染DOM,操作DOM,还有各种操作DOM产生的新的ajax了。我不知道这样做合理不合理。如图所示:
0
1
0
浏览量142
万码F5GTP6P0

ajax fetch获取不到数据提示需要跨域(肯定没有跨域)

http://aabb:8088/Customer/index 请求 http://aabb:8088/Service/ $.ajax({ url:'http://aabb:8088/Service/', type:'GET', success:function(data){ console.log(data) } }) XMLHttpRequest cannot load http://aabb:8088/Service/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://aabb:8088' is therefore not allowed access. 请求的url换成/Service/就正常了,请问这是为什么?
0
1
0
浏览量169
万码F5GTP6P0

for循环中请求数据接口

for循环请求数据接口,for循环出不同的值,作为请求接口的参数。这种请情况怎么处理?否则接口还没请求完成,for循环就已经执行完了
0
1
0
浏览量201
万码F5GTP6P0

tp5 ajax token令牌的问题

在用thinkphp5做项目的时候,ajax提交为了安全携带token,但是遇到一个问题,以编辑按钮为例,一个页面只有第一次点击的时候是成功的,第二次点击时就会提示令牌错误.前端代码: <tr> <td></td> <td>1</td> <td>yxg</td> <td>$1</td> <td> <div class="btn-group" role="group" aria-label="..."> <button type="button" class="btn btn-info editTag" onclick=editOne('{:url("index/index/delmulti")}','1');>编辑</button> </div> </td> </tr> <tr> <td></td> <td>2</td> <td>abc</td> <td>$2</td> <td> <div class="btn-group" role="group" aria-label="..."> <button type="button" class="btn btn-info editTag" onclick=editOne('{:url("index/index/delmulti")}','2');>编辑</button> </div> </td> </tr> /*------------------jquery的代码------------*/ /*ajax 提交封装函数 集成torken */ function editOne(url,id){ var token='{$Request.token}'; $.ajax({ url:url, type:"POST", dataType:"text", data:{'id':1,'__token__':token}, }) .done(function(data) { console.log(data); }) .fail(function() { alert(data.msg); }) .always(function() { console.log("complete"); }); } 控制器中的处理代码: public function delmulti(){ session_id()||session_start(); $request = \think\Request::instance(); $data=$_POST; echo $_SESSION['think']['__token__']; $validate=new Validate([ 'id'=>'require|token', ]); if(!$validate->check($data)){ $res['msg']=$validate->getError(); $res['session']=$_SESSION['think']; $res['token']=$_POST['__token__']; $res['newtoken']= $request->token(); $jres=json_encode($res,JSON_UNESCAPED_UNICODE); echo($jres); }else{ $res['msg']='success'; $res['session']=$_SESSION['think']; $res['token']=$_POST['__token__']; $res['newtoken']= $request->token(); $jres=json_encode($res,JSON_UNESCAPED_UNICODE); echo($jres); } } 根据网上的帮助,发现问题的原因在于ajax的token没有更新,使用完后需要在页面中动态更新token的值.我现在在控制器中返回了新的token值,怎么才能让ajax提交时使用新的token值了?
0
1
0
浏览量136
万码F5GTP6P0

gulp里http-proxy-middleware的使用

在gulp里使用http-proxy-middleware配置了代理的服务 gulp.task('connect', function() { connect.server({ root: './dist', livereload: true, port: 8080, middleware: function(connect, opt) { return [ proxy('/api/', { target: 'http://10.10.16.3/', changeOrigin:true }) ] } }); }); 在html文件中,我这么请求 $.get("/api/rest/ap/ssid/?user_name=hztelin&user_password=jygjG2301&group_name=default", function(result){ console.log(result); }); 为什么请求不成功呢?
0
1
0
浏览量129
万码F5GTP6P0

有一个ajax请求需要在三个ajax请求之后发起,其中之前的三个ajax可以并行,如何优雅的实现这种写法?

我有一个接口,需要在三个接口都调用成功之后执行,不知道怎么写
0
1
0
浏览量134
万码F5GTP6P0

不同ip地址,不同域名,能通过cors跨域吗?

问题是这样的,可能之前问的有点不好,现在修改下。我用wampserver建立两个站点ajax.com和ajax2.com,两个域名指向的ip地址分别为127.0.0.1,127.0.0.2,但端口同为80(不知怎么改为不同的端口),现在我想在ajax.com下的html文件,发送数据,同时请求ajax2.com的php文件内容,数据一起返回。 <script>function createCORSRequest(method, url, data) { var xhr = new XMLHttpRequest(); if ("withCredentials" in xhr) { xhr.open(method, url, true); //true指的是异步 } else if (typeof XDomainRequest != "undefined") { xhr = new XDomainRequest(); xhr.open(method, url); } else { xhr = null; } if (method === "post") { xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(data); } else if (method === "get") { xhr.send(null); } return xhr; } var request = createCORSRequest("post", "http://ajax2.com/AJAX/05-XMLHTTPRequest-test.php","name=jack&age=20"); if (request) { request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { console.log(request.responseText); } }; } </script> <?php header("Content-Type:application/json;charset=utf-8"); header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Methods:GET,POST'); header('Access-Control-Allow-Headers:x-requested-with,content-type'); header('Access-Control-Allow-Headers: NCZ'); echo '请求成功'; echo $_POST['name'].' '.$_POST['age']; ?> 这样就算是成功通过cors跨域了吧,然后呢,我是想找个线上的api来测试下,但找不到,能否给个例子看看,感激不尽。还有就是像这种接口这么调用获取数据?网址http://www.bejson.com/knownjs...,例如我想获取京东的数据,该怎么写?
0
1
0
浏览量216
万码F5GTP6P0

跨域(CORS) 解决方案中,为什么 Access-Control-Allow-Methods 不起作用?

首先,通过阅读Mozilla的官方文档,对CORS的解决方案进行了理解。然后,自己动手做实验来验证一下这个方案。结果,发现当我在“Access-Control-Allow-Methods”中未设置“POST”时,页面上的POST仍然可以发送成功。无法理解,请各位赐教!如下是我的请求截图:按照Mozilla的官方文档上的关于“Preflighted requests”这段的描述:第一张图应该是“预检”的请求,它的“Request Method”的确为“OPTIONS”,而且返回的response的Header中,“Access-Control-Allow-Methods”的值为"GET,PUT,DELETE",并未包含“POST”,所以理论上POST请求应该是无法发送的才是。 但是,从第二张图来看,POST类型的请求仍然被发送了。这是怎么回事呢?想不通。 PS:我使用 Chrome、Firefox、Safari测试了,都是同样的结果。 追加 或者说,我想实现在跨域的时候,禁止客户端使用POST请求,要怎么设置才行呢? 添加测试代码 实现 CORS的filter /** * Servlet Filter implementation class CorsFilter */ @WebFilter("/*") public class CorsFilter implements Filter {/** * Default constructor. */ public CorsFilter() { } /** * @see Filter#destroy() */ public void destroy() { } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; String currentOrigin = request.getHeader("Origin"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "GET,PUT,DELETE"); response.setHeader("Access-Control-Allow-Headers", "Content-type"); // response.setHeader("Access-Control-Allow-Headers", "xxx"); chain.doFilter(req, resp); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { } } 测试用的 ajax $.ajax({ "type" : "POST", "url" : "http://ip:port/bcdae/v1/user/file/1", "contentType" : "application/json", "data" : JSON.stringify({ "id" : "123", "text" : "test" }), "success" : function(msg){ $("#corsRes").text(msg); } });
0
1
0
浏览量127
万码F5GTP6P0

XMLHttpRequest Level2中如何监测文件上传服务器的进度?

在XMLHttpRequest2级中添加了progress事件可以监测文件下载的进度,那文件上传进度如何检测? xhr.onprogress=function (e) { console.log(e.positon); console.log(e.totalSize); } 以上代码运行输出的是undefined,在javascript高级程序设计第三版中写到:‘progress事件会在浏览器接收到新数据时候触发,该事件会接收到一个event对象,其中包含三个额外属性,lengthComputable、position、totalSize’这是为什么?如何实现文件上传进度条?
0
1
0
浏览量204
万码F5GTP6P0

chrome 关于refused to set unsage header "content-length" 如何解决

我使用php+ajax学习进行网站建设,当使用 xmlHttp.setRequestHeader("content-length",Querystring.length); 时,在chorme里出现了这个错误,在webkit的浏览器里都会出现这个问题,请问如何解决呢? 它提示,这是不安全吗。那么该如何改呢?
0
1
0
浏览量117
万码F5GTP6P0

JS中用JQuery的ajax批量请求URL

如题我需要批量请求一批URL,代码类似如下:for(var j=0;j<UrlList.length;j++){ $.ajax({ async:true, cache:false, timeout:5000, type:"GET", url:UrlList[j], complete:ajaxComplete }); } 如上代码,当请求完成之后在ajaxComplete函数里处理数据,并让数据与请求的URL相关联,但这个URL该怎么得到呢,XMLHttpRequest中好像没有相关的属性或方法。求大伙儿不吝指点,定当感激不尽!
0
1
0
浏览量191
万码F5GTP6P0

Ajax提交表单,所以有没有Form标签有关系吗?

Ajax提交表单,所以有没有Form标签有关系吗?
0
1
0
浏览量202
万码F5GTP6P0

jquery ajax程序问题

$(function(){ $.post("{:u('Index/ajax_load_cartNum')}",function(msg) { var oGoodsNum = document.getElementById('cartGoodsNum'); if(msg.flag) { oGoodsNum.innerHTML = msg.cartGoodsNum; } else { oGoodsNum.innerHTML = 0; } },'json') }); 这个ajax程序我放在HTML页面就没问题(Url:http://www.lanxiang.com/Index/ajax_load_cartNum.html), 但是一旦单独出来js文件 ajax的请求的URL路径就会多出来一个Public目录(Url:http://www.lanxiang.com/Public/%7B:u('Index/ajax_load_cartNum')%7D),页面里面有 这个标签
0
1
0
浏览量194
万码F5GTP6P0

ajax能跨域post吗?

因为目前的项目需要ajax跨域向另一台服务器传大量值,目前跨域ajax也只有$.getJSON的形式,GET貌似不能满足传大量数据的要求,想问一下牛人怎样ajax跨域post
0
1
0
浏览量198
万码F5GTP6P0

ajax传值到php页面,存入session。在其他页面调用不到存入的session值

有人遇到过这样的现象吗,利用ajax去请求到a.php页面,然后在a.php页面用session存储ajax传过来的值,然后在b.php页面调用session中的值,但是空的
0
1
0
浏览量145
万码F5GTP6P0

ajax与form表单提交

目前遇到一个问题,就是在提交一个post请求之前,需要出发一个ajax请求验证一些条件,当条件满足之后,才提交post请求。 post请求提交时,想打开一个新的窗口,因为原窗口会弹出一个弹窗,供用户其他操作,所以想用提交form表单实现。 但是在ajax请求中出发document.forms['form_id'].submit(),会被浏览器禁止。貌似form的submit时间必须由click时间完成。 目前的解决办法很别扭,就是在ajax请求验证之后,弹出一个窗口,让用户点击里面的按钮,出发form表单提交。所以,想问一下大家有没有好的解决办法,多谢。目前的场景是使用支付宝支付时遇到的。 我想的流程是,当用户下单时,弹出一个新的页面,出发post请求,原页面会弹出其它提醒。 例如: 下单页面:付款新页面:原页面弹出提醒:
0
1
0
浏览量147
万码F5GTP6P0

用ajax同时触发多个ajax请求

用ajax同时触发多个ajax请求 比如有10个get请求,我想让他们同时触发,同时去请求。
0
1
0
浏览量126
万码F5GTP6P0

如何调用微信开放平台登录接口

在调用微信开放平台时遇到一个问题,使用ajax获取token时,出错。1、type为json时,出现:“ No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '(XX网站域名)' is therefore not allowed access.”2、type为jsonp时,能在chrome的控制台看到返回的数据,但是console里出现:“Uncaught SyntaxError: Unexpected token ”;也无法把返回的数据写到HTML里。以下是代码: <p>第一步,获取code</p> <button id="btn1">用微信登录</button> <p>获取code</p> <button id="btn2">获取code</button> token:<p id="token"></p> openid:<p id="openid"></p> <p>获取用户信息</p> <button id="btn3">获取用户信息</button> <P>姓名:</P><p id="name"></p> <p>头像:</p><img src="" id="img"> <script src="../scripts/jquery-2.1.1.min.js"></script><script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js&quot;></script> var hey = { locationSearch: (function () { var search = window.location.search.substring(1), obj = {}; if (search) { var arr = search.split("&"), length = arr.length; while (length) { var attr = arr[--length].split("="); obj[decodeURIComponent(attr[0])] = !!attr[1] ? decodeURIComponent(attr[1]) : undefined; } } return obj; }()) }; // 第一步,获取Code var btn1=$("#btn1"); var APPID="H";(这里H是一个假设值) var REDIRECT_URI=encodeURIComponent("http://www.XXXXX.com/test/logintext_wechat.html"); var SCOPE="snsapi_login"; btn1.on("click",function(){ window.open("https://open.weixin.qq.com/connect/qrconnect?appid="+APPID+"&redirect_uri="+REDIRECT_URI+"&response_type=code&scope="+SCOPE+"&state=STATE#wechat_redirect") }); // 第二步,获取accessToken var btn2=$("#btn2"); var CODE=hey.locationSearch.code; var SECRET="W";(这里W是一个假设值) var tokenUrl="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+APPID+"&secret="+SECRET+"&code="+CODE+"&grant_type=authorization_code"; btn2.on("click", function () { $.ajax({ url:tokenUrl, type:"get", dataType:"JSONP", success:function(data){ var token=data.access_token; var openid=data.openid; $("#token").html(token); $("#openid").html(openid); } }) }); // 第三步,获取用户信息 var btn3=$("#btn3"); btn3.on("click",function(){ var token3= $("#token").html(); var openid3=$("#openid").html(); var ajaxUrl="https://api.weixin.qq.com/sns/userinfo?access_token="+token3+"&openid="+openid3; $.ajax({ url:ajaxUrl, type:"get", dataType:"JSONP", success:function(data){ var name=$("#name"); var img=$("#img"); $(name).html(data.nickname); $(img).attr("src",data.headimgurl); } }) }) 在第二步获取token时就已经出错了,麻烦有调用微信登录接口的能够指教我一下,谢谢~~
0
1
0
浏览量117
万码F5GTP6P0

求一份浏览器中html css javascript jquery ajax的渲染顺序与原理!!

基于工作会使用到成熟的插件,那么浏览器的渲染顺序的问题就显得尤为突出,所以想要一份浏览器中html css javascript jquery ajax的渲染顺序与原理!!回答好,会点赞哦!!!!!
0
1
0
浏览量114

履历

前端开发工程师
北京独创时代科技有限公司
2022.07-至今
,
前端开发工程师
上海治熵信息科技有限公司
2021.06-2022.06
,
前端开发工程师
上海磐扬酒店管理有限公司
2019.08-2021.06
,
前端开发工程师
上海易正软件技术服务有限公司
2018.03-2019.08
,
项目经理
上海赢式信息科技有限公司
2015.05-2018.02
,
华东理工大学
本科
2020.09-2023.06
,
齐齐哈尔大学
本科
2019.09-2021.06
,
黑龙江建筑职业技术学院
大专
2014.09-2017.06
,
长沙理工大学
大专
2013.09-2016.06