自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 小程序蓝牙踩坑--订阅 notifyBLECharacteristicValueChange遇到Ios没有问题,但是到了Android上怎么也无法正常显示

遇到Ios没有问题,特征值返回全部正常,但是到了Android上怎么也无法正常显示,这是因为Android notifyBLECharacteristicValueChange方法默认使用的不是notification,需要代码指定,这一点在官方api中并没有提现出来,要着重注意。订阅 notifyBLECharacteristicValueChange。

2023-11-03 15:52:32 743 1

原创 了解浏览器的三次握手和四次挥手

服务器收到SYN包后,会向客户端发送一个ACK包,其中ACK标志位被设置为1,表示服务器已经收到了客户端的请求,并准备好建立连接。同时,服务器也向客户端发送一个SYN包,其中SYN标志位被设置为1,表示服务器也请求建立连接。客户端收到服务器的SYN包和ACK包后,向服务器发送一个ACK包,其中ACK标志位被设置为1,表示客户端已经收到了服务器的确认,并准备好建立连接。客户端收到服务器的FIN包后,向服务器发送一个ACK包,其中ACK标志位被设置为1,表示客户端已经收到了服务器的请求,并准备好断开连接。

2023-03-20 09:45:24 339

原创 js中什么是闭包?

闭包是指有权访问另一个函数作用域中变量的函数,简单理解就是,一个作用域可以访问另外一个函数内部的局部变量。可以在另一个作用域中调用一个函数的内部函数并访问到该函数的作用域中的成员。4、在函数执行之前为函数提供只有在函数执行或引用时才能知道的具体参数;闭包:函数和其周围的状态(词法环境)的引用捆绑在一起形成闭包。优势:延长外部函数内部变量的作用域范围,该变量不会被释放。2、函数外或在其他函数中访问某一函数内部的参数;3、在函数执行之前为要执行的函数提供具体参数;3、内部函数必须使用到外部的变量。

2022-10-26 09:58:18 380

原创 实现a===1 && a===2 && a===3. //true

如果当前对象不存在我们要设置的属性,Object.defineProperty()会根据方法设置为对象创建一个新的属性。请牢记,这些描述符的属性并不是必须的,从原型链继承而来的属性也可填充。当某个属性已经存在了,Object.defineProperty()会根据对象的属性配置和新设置的值来尝试修改该属性。如果该属性的被设置为false,则该属性无法被修改。Object.definedProperty方法可以在一个对象上直接定义一个新的属性、或修改一个对象已经存在的属性,最终返回这个对象。

2022-10-25 08:19:09 288

原创 认识重绘和重排

重排就是浏览器在第一次渲染完页面布局以后,后续引起页面各节点位置重新计算或者重新布局的行为。因为元素的位置或者尺寸发生了变化,浏览器会重新计算渲染树,导致渲染树的一部分或者全部发生变化,需要重新绘制页面上影响的元素。重绘就是布局计算完毕后,页面会重新绘制,这时浏览器会遍历渲染树,绘制每个节点,当元素外观变化但没有改变布局的时候,重新把元素绘制的过程。重绘就是改变某个节点的样式,重排就是增加或者删掉某些节点。

2022-10-23 20:29:34 263

原创 redux提供的方法|内置函数有哪些,作用是什么?

(5)bindActionCreators是将一个或多个action和dispatch组合起来生成dispatch的函数集合形式,需要在mapDispatchToProps中使用。(1)createStore:创建一个store来存放应用中所有的状态(公共状态),他提供了dispatch,subscribe,getState方法。这是函数式编程中的方法,为了方便,被放到了Redux里,当需要把多个store增强器依次执行时需要用到它。(4)compose:从右到左把接收到的函数合成最终函数。

2022-10-22 08:56:33 231

原创 https和http的区别

资源请求方面:在http1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,而http1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。http是一种普通的传输协议,在互联网上,所有的文件都要遵守这个HTTP协议,同时超文本也是http传输的基本部分,实现客户端和服务器的相互请求。https具有安全性。

2022-10-21 09:50:55 154

原创 react-Hooks

类组件优化类组件shouldComponentUpdate(PureComponent)函数组件时基于FP(函数式编程),没this指向,没生命周期,没状态属性,组合比较灵活。使用的时候更加直观,逻辑代码编写起来更加容易,因为不需要实例化,性能也得到了提升。类组件是基于OOP(面向对象编程),所以他会有继承,内部状态和生命周期等。如果只是拿到数据渲染,不需要太多的逻辑,使用函数组件渲染更快,提升效率;如果需要复杂的逻辑,实例的需要,周期的使用,就需要使用类组件。函数组件优化:React.memo等。

2022-10-20 09:06:13 234

原创 slot插槽

在HTML中slot元素 ,作为技术套件的一部分,是Web组件内的一个占位符该占位符可以在后期使用自己的标记语言填充slot一名插槽,花名“占坑”,我们可以理解为solt在组件模板中占好了位置,当使用该组件标签的时候,组件标签里面的内容就会自动填坑(替换组件模板中slot位置),作为承载分发内容的出口。

2022-10-19 15:54:58 479

原创 get和post的区别

POST方法发送的数据是安全的,因为数据未在URL栏中公开,还可以在其中使用多种编码技术,这是其具有弹性。而POST查询的结果无法加入书签中。Get方法发送的数据不受保护,因为数据在URL栏中公开,这增加了漏洞和黑客攻击的风险。GET方法中的可变大小约为2000个字符,而POST方法最多允许8MB的可变大小。在Get中,只能发送有限数量的数据,因为数据是在URL中发送的;在POST中,可以发送大量的数据,因为数据是在正文主题中发送的。GET方法的数据是可缓存的,而POST方法的数据是无法缓存的。

2022-10-18 00:45:00 84

原创 vue过滤器

过滤器实质不改变原始数据,只是对数据进行加工处理后返回过滤后的数据再进行调用处理,我们也可以理解其为一个纯函数。vue允许你自定义过滤器,可被用于一些常见的文本格式化。中的过滤器可以用在两个地方:双花括号插值和。过滤器是输送介质管道上不可缺少的一种装置。大白话,就是把一些不必要的东西过滤掉。表达式,过滤器应该被添加在。vue3中已废弃过滤器。

2022-10-17 10:17:03 205

原创 SSR解决了什么问题?

Vue.js 是构建客户端应用程序的框架。默认情况下,可以在浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM。然而,也可以将同一个组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将这些静态标记”激活”为客户端上完全可交互的应用程序。服务器渲染的 Vue.js 应用程序也可以被认为是”同构”或”通用”,因为应用程序的大部分代码都可以在服务器和客户端上运行。结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可交互页面的过程。所以在我们选择是否使用。

2022-10-14 17:00:00 526

原创 vue要做的权限管理该怎么做?如果控制到按钮级别的权限怎么做?

初始化的时候先挂载不需要权限控制的路由,比如登录页,404等错误页,如果用户通过URL进行强制访问,则会直接进入404,相当于从源头上做了控制。name字段都不为空,需要根据此字段与后端返回菜单做关联,后端返回的菜单信息中必须要由name对应的字段,并且做唯一性校验。登录后,获取用户的权限信息,仍然会筛选有权限访问的路由,在全局路由守卫里进行调用addRoutes添加路由。如果有嵌套路由,后端功能设计的时候,要注意添加相应的字段,前端拿到数据也要做相应的处理。菜单与路由分离,菜单由后端返回。

2022-10-13 20:40:38 487

原创 webpack热更新

浏览器拿到两个新的文件后,通过HMR runtime机制,加载这两个文件,并且针对修改的模块进行更新。1、启动webpack生成compiler实例,compiler上有很多方法,例如监听本地文件的变化。当socket server监听到对应的模块发生变化时,会生成两个文件.json和.js文件。3、启动websocket服务,当本地文件发生变化,可以立即告知浏览器可以热更新代码。使用HMR,就可以实现只将修改的模块实时替换至应用中,不必完全刷新整个应用。的其他特性一样可以开箱即用,需要有一些额外的操作。

2022-10-13 20:35:22 638

原创 如何实现浏览器内多个标签页之间的通信?

法直接通信,因此我们可以找⼀个中介者,让标签页和中介者进⾏通信,然后让这个中介者。标签页通过向服务器发送数据,然后由服务器向其他标签页推送转。然后当另⼀个标签页修改数据的时候,我们就可以通过这个监听事件来获取到数据。标签页间通过共享⼀个线程,然后通过这个共享的线程来实现数据的交换。⽅法 ,如果我们能够获得对应标签页的引⽤,就可以使⽤。会在页⾯存在的⽣命周期内创建⼀个唯⼀的线。实现多个标签页之间的通信,本质上都是通过。的⽅式 ,我们可以在⼀个标签页对。对象就是充当的中介者的⾓⾊。的变化事件进⾏监听,

2022-10-13 20:31:42 1217

原创 死锁产⽣的原因? 如果解决死锁的问题?

产⽣死锁中的竞争资源另外⼀种资源指的是 竞争临时资源 (临时资源包括硬件中断、不可剥夺资源,当系统把这类资源分配给某进程后,再不能强⾏收回,只能在进程⽤完。互斥条件:进程要求对所分配的资源进⾏排它性控制,即在⼀段时间内某资源仅为⼀进。不剥夺条件:进程已获得的资源在未使⽤完之前,不能剥夺,只能在使⽤完时由⾃⼰释。可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源。环路等待条件:在发⽣死锁时,必然存在⼀个进程。

2022-10-13 20:30:44 115

原创 CSRF 攻击

所以⼀般⽹站会允许搜索引擎的页⾯请求,但是相应的页⾯请求这种请。个问题是⼀般不会只有⼀台⽹站服务器,如果请求经过负载平衡转移到了其他的服务。这个登录状态,绕过后台的⽤户验证,冒充⽤户向服务器执⾏⼀些操作。进⾏双重验证 ,服务器在⽤户访问⽹站页⾯时,向请求域名注⼊⼀个。攻击,⽐如构建⼀个表单,然后隐藏它,当⽤户进⼊页⾯时,⾃动。,内容为随机字符串,然后当⽤户再次向服务器发送请求的时候,从。单⼀验证⽅式时,可能会被冒⽤的问题,但是这种⽅法存在⼀。,攻击者诱导⽤户进⼊⼀个第三⽅⽹站,然后该⽹站向被。

2022-10-08 19:00:00 207

原创 XSS攻击

XSS攻击指的是跨站脚本攻击,是一种代码注入攻击。攻击者通过在网站注入恶意脚本,使之在用户的浏览器上运行,从而盗取用户的信息 如cookie等XSS的本质是因为网站没有对恶意代码进行过滤,与正常的代码混合在一起了,浏览器没有办法分辨哪些脚本是可信的,从而导致了恶意代码的执行攻击者可以通过这种攻击方式进行一下操作:1.获取页面的数据,如DOM,cookie,LocalStorage;2.DOS攻击,发送合理请求,占用服务器资源,从而使用户无法访问服务器;3.破坏页面结构;

2022-10-07 20:10:06 1648

原创 useEffect

useEffect 的4种写法

2022-09-30 09:45:58 405

原创 浏览器内核

浏览器内核主要分为主要分成两部分:渲染引擎(Layout Engine或Rendering Engine)和JS引擎。

2022-09-29 14:40:07 85

原创 http缓存

浏览器缓存(Brower Caching)是浏览器对之前请求过的文件进行缓存,以便下一次访问时重复使用,节省带宽,提高访问速度,降低服务器压力

2022-09-29 14:37:14 94

原创 vuex流程

每个Vuex应用的核心就是store

2022-09-22 21:02:18 413

原创 useEffect

React.memo 包裹一个组件来对它的 props 进行浅比较,但这不是一个 hooks,因为它的写法和 hooks 不同,其实React.memo 等效于 PureComponent,但它只比较 props。当在 useEffect 的回调函数中返回一个函数时,这个函数会在组件卸载前被调用。当它是一个空列表时,回调只会被触发一次,类似于 componentDidMount。当数组存在并有值时,如果数组中的任何值发生更改,则每次渲染后都会触发回调。当它不存在时,每次渲染后都会触发回调。...

2022-08-26 14:46:33 221

空空如也

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

TA关注的人

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