自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

有问题 ! 请留言 !

一个不断踮砖学习的程序员

  • 博客(157)
  • 收藏
  • 关注

原创 兼容所有浏览器的js简单手动复制粘贴文本方法

兼容所有浏览器的js简单手动复制粘贴文本方法因为比较简单所以就简短说三步:创建一个不显示在页面上的textarea/input标签将需要复制的值设置到标签的value属性上获取标签dom调用select方法选中所有内容,调用document.execcommand('copy')执行复制完事!其实就是模拟手动选中复制的操作代码://html<textarea value=...

2020-04-09 20:00:51 1302

原创 js的eventloop中的宏任务和微任务理解,实现对setTimout定时器补偿

js的eventloop中的宏任务和微任务理解,实现对setTimout定时器补偿写有关宏任务和微任务的优秀博文有很多已经差不多讲的很详细,写这边博客并不是要做一个补充, 大略只是对自己学习理解做一个记录补充,同时进行分享。有助于输出推动学习。外文链接:https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/...

2020-03-26 20:12:47 580

原创 一道简单的算法题 -立方体堆叠计算面积-容斥原理(js/golang实现)

一道简单的算法题 -立方体堆叠计算面积-容斥原理(js/golang实现)刷了一下算法题,分别用js和golang实现了一遍,比较简单的容斥问题题目在长度为N的正方形网格上, 堆叠立方体,计算堆叠后整个物体的表面积?用例//输入[ [1, 2, 3], [1, 0, 0], [1, 0, 1]]//输出解题思路容斥原理:(引用百度)在计数时,必须注意没有重复,没...

2020-03-26 15:26:09 2550

原创 观察者及发布订阅模式区别详解及js实现

观察者模式和发布订阅模式的概念在项目开发中很常见 ,这里记录一下自己的理解,详解一下两者的区别的并分别用代码实现来直观体现两者区别,便于日后温故知新观察者模式​ 观察者模式别名也叫发布-订阅模式,但是发布订阅模式其实只是观察者模式中的一种具体的实现方式通常我们所说的观察者和发布订阅模式的区别,其实只是把观察者模式的一种原始的实现方式和现在的流行的发布订阅实现方式对比)。​ 好了,现在先...

2020-03-19 21:13:17 871

原创 算法导论 - 红黑树及红黑树平衡的详细解析个人理解

算法导论 - 红黑树及红黑树平衡的详细解析个人理解红黑树一种数据结构,效率极高,插入和删除的操作的时间复杂度都是logn,虽然红黑树对于前端来说基本很少用到,但是作为一个目标是全栈的程序员来说,算法的学习是很必要的,so … 图是"借的",字都是自己打的,也依据了自己的理解数组 链表数组特点是元素在内存中紧挨着存储,因而优点是定位快(O(1)),缺点是插入删除慢(O(n));而链表则不...

2020-01-17 17:58:56 1332 2

原创 react Context/Provider/Consumer传参使用

react Context/Provider/Consumer传参使用react context这个api很少用到,所以一直不太清楚如何使用,最近在看antd的项目源码时,发现在组件中有类似Template.Comsumer的写法,一时没反应过来,本着碰到不懂得都要追根究底的原则,下面好好学习一下,Context这个api的使用Context作用上下文(Context) 提供了一种通过...

2019-08-06 11:49:51 6524

原创 时间复杂度及空间复杂度直白理解/快排/冒泡

时间复杂度及空间复杂度直白理解/快排/冒泡常常在算法类的文章里看到时间复杂度,空间复杂度的名词,但是对其中的意思不是很清楚,但是大概是知道,复杂度代表了一个算法的运行效率,复杂度越大说明这个算法运行效率越差,但是在一些数据统计的项目中,使用的数量级是无法估量的, 所以算法的效率问题就尤为重要时间复杂度定义标准定义 (from wiki)在计算机科学中,算法的时间复杂度(Time co...

2019-08-02 11:52:13 616

原创 子元素绝对定位跟随父元素overflowscroll滚动问题

子元素绝对定位跟随父元素overflowscroll滚动问题写项目的时候忽然遇到一个问题, 子元素固定定位,父元素设置 overflow:scroll超出部分滚动, 结果固定定位的元素仍然会随着滚动条滚动, 按照原先的理解,父元素内部滚动是不会影响固定定位的元素的原先代码样例:<div class="box"> <div class="child-1">&lt...

2019-07-21 20:31:44 14337 3

原创 go解决golang.org/x包无法下载问题

go解决golang.org/x包无法下载问题由于golang.org资源被墙,所以很常用的golang.org/x内的包无法被下载,通常直接导入github上的镜像资源作为代替,具体方法//创建golang.org/x文件夹mkdir -p $GOPATH/src/golang.org/x//进入x文件夹,从gihub上导入对应的库cd $GOPATH/src/golang.org/x...

2019-07-13 11:48:35 3607

原创 小星球-小程序(go/echo实战项目)

小星球-小程序(go/echo实战项目)学习go有一段时间,一直想做一个完整的项目加深自己的学习,同时提高自己的水平. 于是有了这个小星球项目,主要功能是创建一个存储情侣之间共同照片的相册,以及一些附加功能,之后会在博客上写一些开发中的问题合技术问题 ,that’s all基本技术架构前后端分离架构前端小程序 — 暂时打算直接用原生写h5端 — 暂时不开发后端数据库各类用户...

2019-07-11 19:12:39 1076

原创 Go语言通过反射用字符串字段给结构体变量赋值理解reflect的使用

Go语言通过反射用字符串字段给结构体变量赋值理解reflect的使用我们知道给一个结构体变量直接赋值可以直接写死a := struct { name string age int }{ name: "haha", age: 1, }a.name = "hahaha"**但是如果我们需要用一个字符串字段给结构体变量赋值,因为字符串有可能是动态传入或者动态获取的,所以就需...

2019-05-07 20:26:20 3484 1

原创 Go通过SSH部署项目到服务器

Go通过SSH部署项目到服务器学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,这篇是主文件,利用利用之前写的几个方法完成部署下面直接看代码,使用了上面封装的这几种方法func main() { var conf = config.GetConfig() var ( err error sftpClient *sftp.C...

2019-05-06 19:02:38 736

原创 Go获取解析本地Config配置文件

Go获取解析本地Config配置文件学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,我们希望再工具打包后,还可以在外面配置参数,所以我们在本地放一个config.txt文件用于配置直接看代码(注释清晰)//创建了一个结构体,里面分别是本地服务器/测试服/正式服的一些部署需要的信息//这里字段必须是大写开头,因为接下来需要用反射给属性赋值,大写才...

2019-05-06 18:48:59 3935

原创 Go语言使用钉钉机器人推送消息

Go语言使用钉钉机器人推送消息学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,我们希望再部署开始之前和部署结束后推送钉钉消息创建一个钉钉机器人这个比较简单添加完后会给你一个webhook就是我们发送消息的地址推送消息show code!func SendDingMsg(msg string) {//请求地址模板 webHook :=...

2019-05-06 18:47:56 4776

原创 Go通过ssh删除远程文件或递归遍历删除远程文件夹

Go通过ssh删除远程文件或递归遍历删除远程文件夹学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,上传文件的文件,可能之前已经不输过一次,所以需要把原始文件删除首先删除文件的方法//这个很简单,就是直接删除func removeFile(sftpClient *sftp.Client, remotePath string) { sftpCli...

2019-05-06 18:47:07 1235

原创 Go通过ssh上传文件或遍历上传文件夹

Go通过ssh上传文件或遍历上传文件夹学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,所以我们需要用代码远程上传文件首先上传文件的方法func uploadFile(sftpClient *sftp.Client, localFilePath string, remotePath string) { //打开本地文件流 srcFile,...

2019-05-06 18:45:50 2015 1

原创 Go语言利用ssh连接服务器

Go语言利用ssh连接服务器学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,需要完成部署的第一步就需要连接远程服务器打开 ssh server首先我们想要利用ssh连接服务器的前提是服务器打开了ssh server,ssh 分为client和server端 ,如果打开了client可以连接远程服务器,打开了server就可以被连接.因为linu...

2019-05-06 18:44:15 4626 1

原创 React接收excel文件下载导出功能封装

React接收excel文件下载导出功能封装因为最近项目又需求要导出excel,所以封装了这部分的功能,对fetch的封装做了修改,使之后的调用导出功能更为方便首先这个项目请求是对fetch进行过封装的 ,如果对fetch有了解的话,我们知道fetch种response返回的是一个实现了Body接口的对象, 所以可以使用Body接口中的方法 json()处理json,blob ()处理成...

2019-04-25 15:47:09 3373 1

原创 React的onPaste必须点击一次元素才能起作用问题

React的onPaste必须点击一次元素才能起作用问题最近在封装一个图片组件的过程中,有一个需求是需要能够复制粘贴上传图片, 因为React中有自带的合成事件onPaste绑定事件,但是出现一个问题是, 鼠标直接放在上面,并不能触发onPaste事件 .使用了各种方法都不行 handlePaste = (e)=> { console.log(e) } ....

2019-04-10 19:33:40 1464 1

原创 React中Suspense及lazy()懒加载及代码分割原理和使用的理解

React Suspense lazy() 懒加载 代码分割 code splitingSuspense和lazy()都是react中比较新的特性,在项目中使用还比较少,但是学习一下有助于在后面的项目中使用,同样可以一窥React未来的发展方向React.lazy()概括顾名思义lazy()方法是用来对项目代码进行分割,懒加载用的.只有当组件被加载,内部的资源才会导入为什么需要懒加载在React的项目中...

2019-04-03 17:00:49 12737

原创 BizCharts多折线图字段别名,Tooltip和legnd分别设置

BizCharts多折线图字段别名,Tooltip和legnd分别设置项目中用到了BizCharts,但是多折线图的Tooltip浮动提示和legnd图例的字段名直接用的是字段的名字,但是字段名并不能直接设置别名,所以解决起来比较麻烦,需要在Tooltip和legnd中都设置模板,而字段名的类型是key, 文档不是很全,找了很长时间,所以记录一下Tooltip修改 <Geom ...

2019-04-01 14:14:22 6614

原创 TCP拥塞控制和流量控制区别含义深刻理解

TCP拥塞控制和流量控制区别含义深刻理解因为最近学习了TCP/IP协议,学习TCP其中内部的两个很大的特点,就是流量控制和拥塞控制两个优化数据传输的方法,因为两者有很多细节的知识,所以再这里记录一下,希望能很直白清楚的解释这两个概念,也方便记忆和理解.拥塞控制和流量控制是TCP用来解决传输数据中产生的一些问题,而采取的两种优化方法,两者作用上的区别流量控制是为了解决发送方和接收方速度...

2019-03-27 20:57:03 12542 1

原创 React Component vs PureComponent/memo的理解以及性能优化

Component vs PureComponent的理解以及性能优化因为现在很多组件常继承PureComponent,虽然两者都可以用来继承一个组件类但是,他们之间是有区别的,PureComponent是对Component的性能优化,下面就来详细写下为什么Component比较两者之前我们要先了解两者的渲染时机,Component在 state改变,props改变,调用this.s...

2019-03-22 17:40:33 1048

原创 直白理解javascript中函数柯里化,偏函数,反函数柯里化

直白理解javascript中函数柯里化,偏函数,反函数柯里化因为之前有写过一篇理解函数式编程的,但是讲到函数式编程就必须提到函数柯里化, 函数柯里化是函数式编程中很常见的写法,这篇也是看了很多篇大佬的文章综合理解,下面是个人的一写简洁,希望能够更直白的理解上面这些定义函数柯里化定义官方定义: 是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受...

2019-03-22 15:01:15 379

原创 ant design中 Select/Dropdown/DatePicker/TimePicker放在Modal中时,不更随model滚动

在使用ant design过程中发现,当再Modal中使用时,浮动的下拉菜单时间选择菜单等不随Modal的滚动而一起滚动,有时候会被部分遮挡.这是因为浮动层都是默认以body定位的,而Modal层滚动的时候body整体页面并没有滚动,所以导致浮动层不会跟随滚动. 解决方法就是使用Select中的getPopupContainer和DatePicker中的getCalendarContainer属...

2019-03-19 15:51:03 2095

原创 vue数据绑定中defineProperty清晰解析和set和get使用,不懂就问

defineProperty清晰解析和set和get使用,不懂就问都知道vue中的数据绑定就是用object.defineProperty以及其中的set和get实现的,所以理解vue的内部原理之前就需要理解object.defineProperty.因为很多关于这个的解释博客都写得很难理解,所以自己写一下自己的理解.概念Object.defineProperty(obj, prop, ...

2019-03-18 22:04:10 2196

原创 兼容所有浏览器, 关闭记住密码的input的自动填充功能

当你在登陆页面选择了记住密码,会导致在后面修改密码的输入框中,直接自动填充密码.想要古娜彼自动填充.方法一:在表单中创建一个不显示的input且type等于password<input type="password" style="position: absolute;z-index: -999">由于密码直接填充到这个input中所以不会在真正的input上显示方法二...

2019-03-18 19:07:14 7715 3

原创 小程序get/post/上传文件请求用promise封装

小程序的wx.request没有对传过来的请求进行处理,对于各种状态进行处理,所以需要在代码里封装,这里是直接写app.jsl里的,get和post的封装.首先写通用headerheader header: { 'app_code': &quot;DAFENGBAODAI&quot;, 'client': 'miniProgram', 'imei': 'idfv', ...

2019-03-07 18:45:28 1222

原创 ant design/react 利用setTimeout解决表单还未加载,动态校验的问题

ant design/react 利用setTimeout解决表单还未加载,动态校验的问题在写项目中出现一个问题,在表单中用一个A控件控制另一个B控件显示隐藏,当A控件切换的时候,同时校验B控件,这时候会出现B控件内就算有初始值也会检验报错, 因为当校验代码执行的时候,B控件还没有加载出来,因为两个操作都在同一个eventloop里.handleVisible() { this.set...

2019-03-05 18:59:32 1499

原创 父元素内多个子元素,子元素根据内容确定高度,子元素和最高的子元素等高

父元素内多个子元素,子元素根据内容确定高度,子元素和最高的子元素等高父元素中有多个子元素,父元素高度不确定,子元素高度不确定以内容的高度确定,但是这时候要求子元素等高,也就是按照子元素中内容最多的那个元素的高度确定所有元素的高度,这种需求以普通的布局是很难实现的.&lt;body&gt; &lt;div class="father"&gt; &lt;div class="child...

2019-02-27 19:04:32 2035

原创 ant design中Select,Option动态加载,设置初始值无法默认选中项问题

一般遇到表单回显的问题的时候,会使用initialValue设置初始值 {form.getFieldDecorator('name', {initialValue:current.name})(&lt;Input placeholder="请输入姓名" /&gt;)}但是发现动态加载的Option选项的Select,无法选中指定项,而是直接显示绑定的值,检测得到Option中的key必须是...

2019-02-27 17:37:23 13458 13

原创 dva中effect内调用另一个effect的,实现put阻塞式调用的方法

dva中effect内调用另一个effect的,实现put阻塞式调用的方法在项目中通常会有在一个effect中调用另一个effect的需求,实现方法就是直接使用put *a({ payload}, {put, call,take}) { try { console.log(a) yield put({type: 'b',payload: {}}...

2019-02-21 20:25:47 16506 1

原创 ant design表单校验踩坑

antd的表单校验有很多预设规则,类型如下string: Must be of type string. This is the default type.number: Must be of type number.boolean: Must be of type boolean.method: Must be of type function.regexp: Must be an ...

2019-02-18 20:00:56 7615 2

原创 python-模块理解及使用

python-模块理解及使用模块定义模块的定义就是将相同类型的函数放在同一个文件下,防止函数名冲突方便管理调用.我们创建一个xxx.py的文件就是一个模块,我们可以直接引入并调用内部方法&amp;gt;&amp;gt;&amp;gt; import demo&amp;gt;&amp;gt;&amp;gt; demo.person(1,2)name: 1 age: 2 other: {}但是因为单个文件名的模块容易冲突,也可以将文...

2019-02-17 22:33:38 286

原创 python-偏函数(Partial function)使用及理解

python-偏函数(Partial function)偏函数也是functools模块中的一个方法,即functools.partial偏函数就是为了固定某些参数的传入,作为默认参数传入,下面我们以int为例子来解释用法#默认为十进制&gt;&gt;&gt; int('123')123#转二进制&gt;&gt;&gt; int('123',base=2)1111011&gt;&g...

2019-02-17 21:00:53 2687

原创 python-装饰器写法和定义

python-装饰器在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator).我的理解是为某个已定义的函数增加某些功能,但是不修改函数原始的定义. 有点类似于面向对象的接口实现,装饰器就相当于接口,下面具体的函数是对该接口的实现. 而装饰器的本质就是一个高阶函数,传入的是需要被装饰的函数.用法# demo.pydef printFuncName(func): de...

2019-02-17 20:20:39 759

原创 python-匿名函数

python-匿名函数当我们传入的函数时不需要显式的定义函数时,我们可以传入匿名函数。Python中使用lambda关键字表示匿名函数使用:lambda 参数:返回值//等同于def f 参数: return 返回值作为参数传入&gt;&gt;&gt; list(map(lamda x:x*x,[1,2,3]))[1,4,9]作为返回值def f(x): r...

2019-02-17 18:39:12 162

原创 python-返回函数(闭包)

python-返回函数(闭包)返回函数就是返回一个函数,和js中一样,返回函数也有闭包效果,如果学过js肯定知道闭包是干嘛用的,返回函数同时也是延缓执行的一种方式先看代码def f(): L = [] for i in range(0, 5): L.apeend(i) return L &gt;&gt;&gt; f() [4,4...

2019-02-14 22:14:13 400

原创 python-高阶函数map/reduce/filter/sorted/sort详解用法

python-高阶函数map/reduce/filter/sorted/sort详解用法高阶函数高阶函数就是可接受另一个函数作为参数传入的运行的函数,下面是四个常用的python内置处理List的函数都为高阶函数map(每项单独处理最后返回一个Iterator)基本用法与js的map相同,就是参数方法写在第一项&amp;gt;&amp;gt;&amp;gt; def f(x):... return x...

2019-02-14 21:12:44 976

原创 JSON对象转成formData对象,formData对象转成JSON对象

在向后端请求时,如果上传的数据里存在file文件对象,需要用到表单提交,这时候我们需要将JSON对象,转成formData对象,具体见代码 Object.keys(params).forEach((key) =&amp;amp;amp;gt; { formData.append(key, params[key]); });...

2019-02-14 15:53:16 29996 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除