笔记
_处女座程序员的日常
做正确的事,然后把事情做正确。理性对待一切!
展开
-
关于学习知识的一点感受
学校里更多学习的是理论知识,但是走向工作岗位一定不能还抱着什么都学但不去实践的想法。知识,一定要去实践。否则,有可能成为"知识噪音",不仅不会提高我们的工作效率,还有可能增加焦虑。用二八定律,熟练掌握常用的20%知识,去解决实际遇到80%的问题。一定要实践,实践,实践。在实践中去加深对知识的理解!小步快跑,快速迭代,发现了问题尽快改正,及时总结,保持前进。...原创 2022-04-20 07:04:55 · 122 阅读 · 0 评论 -
错误+反思=进步
在前端的平时发中,有时花时间较多的的反而是一些css知识点。它本身不难,因为平时没有总结,总是想着用到了去查,这其实是很影响我们开发效率的。对于一些高频的css点,应该是熟记于心的。对于这些知识点,我们遇到了就总结。反复几次,刻意练习,就可以做到捻熟于心。勤于总结,才能进步更快。用动态的眼光看点自己,一定要小步快跑,每天进步一点点。...原创 2022-04-19 06:16:07 · 132 阅读 · 0 评论 -
适配器模式
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《一个示例让你明白适配器模式》, 一起来围观吧 https://blog.csdn.net/brave2211/article/details/18735243?utm_source=app&app_version=4.14.1原创 2021-09-25 13:11:14 · 80 阅读 · 0 评论 -
如何判断一个对象为空
地址原创 2021-09-23 23:26:57 · 79 阅读 · 0 评论 -
Vue+nginx使用gzip压缩
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《vue 进行 gzip压缩和服务器如何开启gzip》, 一起来围观吧唯一需要完善的地是第1步需要先安装插件:npm i -D compression-webpack-pluginhttps://blog.csdn.net/u013788943/article/details/79786558?utm_source=app&app_version=4.14.1...原创 2021-09-14 07:24:42 · 413 阅读 · 0 评论 -
Vue中data为什么是函数形式
如果不用function返回的话,每个组件data都是一个内存地址(是{}这种形式),一个组件数据的改变会影响其他数据。函数有自己的作用域,每个组件的实例都有自己的作用域,每个实例相互独立,互不影响。...原创 2021-09-06 11:31:37 · 161 阅读 · 0 评论 -
主流浏览器及内核
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《五大主流浏览器及四大内核》, 一起来围观吧 https://blog.csdn.net/yuyanjing123456789/article/details/78689595?utm_source=app&app_version=4.14.1原创 2021-09-06 07:27:26 · 111 阅读 · 0 评论 -
XSS攻击和CSRF(通俗易懂)
XSS(跨站脚本攻击)是指攻击者在返回的 HTML 中嵌入 javascript 脚本,在用户浏览网页的时候进行攻 击,比如获取 cookie,或者其他用户身份信息,可以分为存储型和反射型,存储型是攻 击者输入一些数据并且存储到了数据库中,其他浏览者看到的时候进行攻击,反射型的 话不存储在数据库中,往往表现为将攻击代码放在 url 地址的请求参数中,防御的话为 cookie 设置 httpOnly 属性,为了减轻这些攻击,需要在 HTTP 头部配上,set-cookie:httponly-这个属性可以.原创 2021-09-01 19:04:43 · 362 阅读 · 0 评论 -
400和401和403
(1)400状态码:前端提交数据的字段名称和字段类型与后台的实体没有保持一致。解决方法:对照字段的名称,保持一致。(2)401 状态码:当前请求需要用户验证(3)403 状态码:服务器已经得到请求,但是拒绝执行。...原创 2021-09-01 18:38:40 · 97 阅读 · 0 评论 -
找不到输入法怎么办
Ctrl+空格原创 2021-09-01 16:40:32 · 110 阅读 · 0 评论 -
304和200状态码
状态码为200状态码 200:请求已成功,请求所希望的响应头或数据体将随此响应返回。即返回的数据为全量的数据,如果文件不通过 GZIP 压缩的话,文件是多大,则要有多大传输量。状态码为304状态码 304:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的 内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。浏览器直接从缓存获取文件,服务器不需要返回文件。注:这个需要了解一下服务器缓存策略—协商缓存。...原创 2021-08-31 16:54:43 · 494 阅读 · 0 评论 -
前端常用的jsencrypt加密方式
使用jsencrypt进行加密原创 2021-08-31 14:02:10 · 260 阅读 · 0 评论 -
Vue如何获取元素的宽度
this.$refs.abc.clientWidth原创 2021-08-27 15:41:31 · 1209 阅读 · 3 评论 -
如何监听窗口尺寸的变化做自适应变化
下面的一位朋友的方法亲测有效。里面说的是获取浏览器窗口的宽度。如果是获取某个元素的宽度就不能在data里面赋初值。应该在monkey的函数里面计算初值。其他的步骤是相同的。我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《vue中watch监听浏览器窗口大小的改变》, 一起来围观吧 https://blog.csdn.net/ju__ju/article/details/103389208?utm_source=app&app_version=4.14.1...原创 2021-08-27 15:19:04 · 651 阅读 · 3 评论 -
深拷贝程序
深拷贝是针对引用类型而言的我们开发中常用的是:在这里插入代码片JSON.parse(JSON.stringify());这种能解决80的问题,但是对于正则或者方法就不能深拷贝。正确的方法如下:function deepClone(source){ // 先判断是数组还是对象 //[]=>Array 基类 {}=>Object const targetObj= source.constructor===A原创 2021-08-19 07:40:49 · 131 阅读 · 0 评论 -
输入url后到页面渲染发生了什么
输入url后到页面渲染发生什么事?一.DNS解析,将域名解析为ip地址读取缓存顺序如下:先读取浏览器DNS缓存系统DNS缓存路由器缓存网络运营商缓存递归搜索 二.TCP连接:即TCP的三次握手1第一次握手,由浏览器发起,告诉服务器。我要发请求了;2第二次握手,由服务端发起,告诉浏览器我准备接受了,你赶紧发送吧;3.第三次握手,由浏览器发起,告诉服务器我马上发起了,你准备接受吧。为啥要发起三次?就好像甲给乙打电话,甲不能接通后就告诉乙什么事,需确认乙有空才可以;同样乙也要确认甲原创 2021-08-18 23:04:18 · 329 阅读 · 0 评论 -
水平垂直居中6种实现方案
直接上代码原创 2021-08-18 19:36:52 · 143 阅读 · 0 评论 -
Element UI表格的树形数据与懒加载
elment UI表格的树形数据与懒加载最终实现的效果是当点击某个单元格的时候,会去后台请求数据,并将结果确认在表格中。具体实现:row-key是数据中的某个唯一的属性值,例如id,也可以为其他的值。tree-props=“{children:‘children‘,hasChildren:‘hasChildren‘}“lazy:load=“load”其中load方法如下:async load(tree,treeNode,resolve){let data=await getData();原创 2021-04-25 19:09:41 · 858 阅读 · 0 评论 -
图的深度遍历和广度遍历算法
图的深度遍历和广度遍历算法图的深度遍历可以简单理解为一条道走到黑,首先访问图中任一起始顶点v,再访问与v顶点邻接且未被访问过的顶点w1,再访问与w1邻接且未被访问过的顶点w2,重复上述操作,若不能继续向下访问时,则回退,直到所有的顶点被访问完。具体实现算法用到了递归。需要借助一个visited数组,对已访问过的顶点做标记。图的广度便利类似于树的层次遍历,一层一层的向外访问。首先从定顶点v出发,接着访问v所有的未被访问过的邻接顶点w1,w2,w3…然后再以此访问w1,w2,w3这些顶点的未被访问过的邻接原创 2021-04-24 16:47:51 · 356 阅读 · 0 评论 -
关于直接插入排序和简单选择排序的比较
关于直接插入排序和简单选择排序的比较两者都是稳定排序。平均时间复杂度都是O(n^2);在最好的情况下直接插入排序的时间复杂度为O(n),这时需要比较的次数为n-1(从第2个元素起,只需要和他前面的一个元素比较即可),移动的次数为0(最好的情况下,元素最初的顺序和最终排好序的顺序是一致的,所以不需要移动)。直接插入排序和我们生活中的抓牌类似!简单选择排序很简单,在第i趟时找到最小的元素和第i个位置的元素交换即可。在比较过程中遇到小的元素,记住它的位置即可!在这一趟结束时,只需要交换一次位置。和打擂台原创 2021-04-22 23:31:54 · 2705 阅读 · 0 评论 -
各种排序算法的比较
各种排序算法的比较注:来自王卓老师课堂笔记原创 2021-04-21 23:17:37 · 109 阅读 · 1 评论 -
直接插入排序的最坏情况分析
直接插入排序的最坏情况分析注:最坏情况下,表中元素顺序和排序结果中元素顺序相反。总的比较次数,需要加上和哨兵比较的一次。总的移动次数,需要加上将当前值放到哨兵的那次,后面每比较一次就就移动一次,所以每个位置移动的次数比比较次数多1。...原创 2021-04-18 13:20:18 · 3718 阅读 · 0 评论 -
C语言中static修饰局部变量
C语言中static修饰局部变量当程序开始执行时,它被初始化一次,当函数每次被调用时它并不会被重新初始化,会跳过初始化的那条语句,还是会保留上次的值。原创 2021-04-08 09:30:47 · 441 阅读 · 0 评论 -
一分钟搞定flex布局,实现上下固定,中间自适应
Flex布局,实现上下固定,中间自适应。先上代码,再解释:原创 2021-03-30 17:12:47 · 1034 阅读 · 5 评论 -
关于链队列的插入和删除操作
关于链队列的插入和删除操作首先要明确一点:队头:允许删除的一端;队尾:允许插入的一端。这也是由它的定义决定的,“即先进先出”。明确了这点,我们就很清楚的理解链队列的插入和删除。直接上老师的图:对于插入操作只能在队尾进行,这里和单链表的尾插法是一样的(别忘了单链表还有头插法哦)对于删除操作只能在对头进行,即修改头指针的指向。...原创 2021-03-29 03:11:33 · 2956 阅读 · 0 评论 -
判断带头结点的单循环链表为空表的条件
判断带头结点的单循环链表为空表的条件判断空表的条件是L->next是否等于L;在循环中判断当前结点是否是尾结点的条件是p->next是否等于L!即当前结点的指针域是否指向头结点。原创 2021-03-28 16:38:52 · 7728 阅读 · 0 评论 -
2021-03-24
*p++表示什么意思1、先说结论⭐p++表示先返回 ⭐p的值,再将p增加1。2、⭐(p++)和⭐p++的结果一样。3、可能很多人不理解第二点,会简单的认为是将p自增1后再对自增1后的p进行这是不正确的,因为后缀形式的++表示变量在被使用之后再改变它的值。(p++)作为一个整体,对外就是p的值,即*p,再将p自增1。...原创 2021-03-24 09:51:50 · 104 阅读 · 0 评论 -
如何在控制台中快速进入文件夹地址
如何在控制台中进入想要的文件夹首先输入window+r打开运行对话框,接着输入cmd;进入cmd窗口,再输入cd /d 想要进入的地址例:若想进入d盘文件夹下外邮这个目录,命令如下:cd /d D:\外邮若想继续进入外邮里面的11.20文件夹cd ./11.20若想往后退一层,进入外邮文件夹,输入cd …/...原创 2021-03-15 15:30:28 · 1576 阅读 · 0 评论 -
如何理解单链表的尾插法
如何理解单链表的尾插法第一张图是老师的算法,当然对其中的核心步骤一定要理解。尾插法的总体思路是新创建的节点永远插在一个尾节点后面。首先传入一个单链表头指针,并将L赋值给r,r此刻指向头节点;动态创建第一个新节点后,r->next指向新节点s,为了能使r指向尾节点,将s赋值给r。完成了第一个节点的插入,同时r指向尾节点;当第二个新节点创建后,r->next又指向第二个新节点。再通过赋值使r指向尾指针,又完成了第2个节点的插入;如此重复,新创建的节点总是跟在尾节点的后边。...原创 2021-03-14 23:59:24 · 288 阅读 · 0 评论 -
如何理解链表的头插法
如何理解链表的头插法严蔚敏老师的的关键步骤如下。可能有一部分人不能理解这两句话是什么意思。头插法中,每一个插入的节点都跟在头节点的后面。书中前面也写了p->next=Null;这句话的目的是先动态创建一个带头节点的单链表。后边创建的所有节点都跟在这个头节点的后边 第一句p->next=L->next;这句话表新创建节点p中next域(指针域)指向头节点中的next指向的地,第1次执行这句话之后,由于L->next=Null,所以p->next=null。p相当于是尾节点(因为原创 2021-03-14 23:21:20 · 317 阅读 · 0 评论 -
高质量的数据结构免费学习课程
高质量的数据结构免费学习课程西北大学耿老师的课程,强烈推荐,王卓老师的也好原创 2021-03-14 00:46:31 · 110 阅读 · 1 评论 -
2021-03-12
Vant中需在同一个.vue组件中需多处使用onload懒加载的一个实现方法比如使用场景如下:进入页面的时候是第一种加载方式,将结果填充在list列表中。当点击表格中的某一单元格时,去请求另一个接口(第二种加载方式),得到另一组数据,并将获取到的数据显示在表格中,但同样需要实现了加载。。氮和表格中load绑定的只有一个onload方法。这要怎么办…...原创 2021-03-12 10:15:22 · 86 阅读 · 0 评论 -
2021-03-12
Vant框架中使用list组件懒加载问题图中是官网的例子。当组建滚动到底部时,会触发load事件。并将loading设置为true(这步是自动触发的),此时可以发起异步操作并更新数据,数据更新完毕后需要手动将loading设置为false,这步一定不能少,这时才会继续去触发Onload事件,若不设置,就不会去请求数据。若全部加载完毕之后,则直接将finished设置为true。可以将页码初始值为0,请求的时候将这个值自增一,即this.page++,这样就会从第1页开始,依次向后边请求!当...原创 2021-03-12 09:11:01 · 88 阅读 · 0 评论 -
2021-03-08
如何理解树的遍历主要用到了递归,这里拿先序遍历举例,这里是郝斌老师讲的程序,很多人应该不理解这里递归。其实要这样想,我们定义的preTraverse函数作用是遍历一棵树,传入的参数是指向将要遍历树的根节点的指针。这样整个程序理解起来就会很容易了。如先序遍历的时候,先输出根节点。再遍历根节点左子树,最后遍历根节点的右子树。如何遍历左子树?将指向左子树根节点的指针传入preTraverse即可,我们在定义树的时候,pT->pLChild就表示指向pT节点的左孩子的指针。如何遍历右子树,同理可得!.原创 2021-03-08 18:41:55 · 120 阅读 · 0 评论 -
2021-03-07
如何快速理解汉诺塔中的递归先上一下郝斌老师的算法其实在第二张图中的文字说的很清楚了,若盘子个数大于1,关键步骤就三步,相信很多人都看的明白,可能就是对于程序不太理解。这里不妨讲图二中的hannuota(A,B,C)换成:**huannuota(需要移走盘子的柱子,中间借助的柱子,需要移入盘子的柱子)这个函数中三个形参的逻辑意义是确定的。**但我们可以根据需求传入不同的参数,因为在移动过程中三个柱子的角色是互换的!当我们能在1min内快速的写出来,真的就是1+1=2的感觉!...原创 2021-03-07 17:17:07 · 79 阅读 · 0 评论 -
2021-03-07
## 如何判断循环队列是满的最常用的方法是少用一个元素空间,头尾指针关系如下,当rear走到2处,这时因为2处不能再存值,所以rear不能再往前移动!图示如下:(rear+1)%数组长度=font原创 2021-03-07 13:16:51 · 79 阅读 · 0 评论 -
2021-03-06
如何理解单链表插入操作中的关键步骤图片来自高一凡教材,具体插入过程大家肯定是理解的,关键是如何理解while循环中的两句话?while循环主要是为了找到指向第i-1个节点的指针。我们可以采用类推的方法,当j=0时,p指向头结点,当j=1时,p指向首结点(第一个节点),当j=i-1时,p指向第i-1个结点!接下来的操作就简单呢。第二张图中表达的很清楚!首先生成一个动态的新结点,然后给它的数据域赋值,接着使新结点的指针域指向原来p指向的节点,最后使p指向新结点。...原创 2021-03-06 13:56:28 · 91 阅读 · 0 评论 -
2021-03-05
Vue中不同组件通讯的下下策使用Math.random()方法配合watch使用。在组件A中需要触发的地给某个值用Math.random()赋值,即this.valueA=Math.random();然后在另一个组建中监听valueA这个值变化。再做响应的操作 Math.random生成的一个随机的0-1之间小数,后面有17位数,重复的概率可以忽略。但用watch比较影响程序性能,所以建议少用,是下下策...原创 2021-03-05 14:22:21 · 88 阅读 · 0 评论 -
2021-03-05
兄弟组件使用EventBus实现数据通讯使用原创 2021-03-05 14:14:35 · 98 阅读 · 0 评论 -
2021-03-03
Vue中父组件调用动态组件(is)遇到的问题通过is绑定的动态组件,引入到父组件中,通过this.$ref.***.子组建方法有时出现所调用的方法不是一个方法的错误提醒!之所以出现这个问题,是因为给is绑定的变量赋值组件名之后,this.component=组件名 这句话是异步执行的,组件还未完成加载就调用了该组件的方法。所以会报错!解决方式:将调用该组建方法的这个操作放在this.nextTick(()=>.....)中!∗∗注:this.nextTick(()=>{.....})中!原创 2021-03-03 19:58:18 · 83 阅读 · 2 评论