保存
保存我所有文章
zhen12321
贪心选择
展开
-
2022年剩余计划【Rust和产品研究篇】
个人开发者维护的产品大致雏形规划。原创 2022-09-25 10:20:47 · 374 阅读 · 1 评论 -
为什么要有promiseresolve这个方法?
为什么要有promiseresolve这个方法?原创 2022-06-17 10:46:33 · 261 阅读 · 0 评论 -
promies中resolve和onFullfiled的区别
关于promise的resolve和fullfiled的一些理解原创 2022-06-17 10:00:06 · 492 阅读 · 0 评论 -
react自定义hooks
react中自定义hooks函数原创 2022-06-17 07:36:42 · 259 阅读 · 0 评论 -
A/B机器正常连接后, B机器突然重启, 问A此时处于TCP的 什么状态?如何消除服务器程序中的这个状态?
tcp连接的高级用法原创 2022-06-07 00:14:12 · 688 阅读 · 0 评论 -
http2
http2的简单说明原创 2022-06-06 17:44:42 · 119 阅读 · 0 评论 -
hooks的设计哲学
hooks函数背后的哲学思想原创 2022-06-06 13:59:19 · 184 阅读 · 0 评论 -
关于mobx
aaaa原创 2022-06-02 15:45:26 · 93 阅读 · 0 评论 -
立个flag--重构promise
aaaa原创 2022-06-01 12:52:51 · 103 阅读 · 0 评论 -
CSRF攻击
背景十几年前被列入信安领域十大著名漏洞之一,现在虽然排名下降,但是如果没有做好防范,仍会让人中招。原理利用了cookie会在http请求中自动携带的特点。前提:用户登录了某个网站,该网站将cookie发送到用户客户端,该cookie是登录凭证攻击:攻击者诱导用户访问自己的钓鱼网站,被攻击者通过在同一个浏览器下点击了攻击者伪造的访问真实后端的接口的一个跨域携带cookie的请求。跨域携带cookie因为被同源策略禁止,因此ajax的方式无法携带cookie,(否则攻击者就不用诱导别人了,直接自己发就原创 2022-05-31 08:17:22 · 225 阅读 · 0 评论 -
函数的节流和防抖
之前有写过节流和防抖,但是那个比较随意,是在写js的时候随手写的,没有考虑封装,别人使用的快感。所以现在来封装一个。其实节流和防抖的作用类似,只是有一些小的区别:防抖是一端时间后才让你执行一次,而节流则是先让你执行一次然后再禁止执行一端时间。然后再执行。防抖多用在定时器中让某些ui部件的更新频率不那么高,看得清它的更新。节流多用在输入框中,方式input事件被多次触发。因为防抖模拟的是一端时间的延迟执行,所以也可以用于登录按钮,限制其网络请求。封装他们用到了闭包的思想,闭包的作用是哈,手写一端节原创 2022-05-26 20:19:42 · 140 阅读 · 0 评论 -
关于我进军Rust的缘由
结语技术人对于技术的追求是没有止境的。我的技术路线本人是java起家,java作为服务器后端语言火了足足有三十年。本人的第二个核心语言是javascript,js对于java8来说,是无敌好用的存在,非常的灵活。java我恨它的原因在于太保守自封,加之领导层烂透了。Rust是我选择的第三个语言。让人又爱又恨的特性编程语言的出现总是比不上硬件的发展。编程似乎一直是一件比较低智商的事。总是有那么些缺点让我感到不爽。java的罪状1.糟糕的包管理工具--历史原因2.复杂繁杂的配置,从pro原创 2022-05-18 12:45:15 · 476 阅读 · 0 评论 -
event loop终极指南
在遇到event loop时,不需要特别关注其原理,而要关于它的顺序问题。js通过事件来解决单线程中的异步问题,而单线程要想异步,必须通过事件来解决。promise的作用是为了保证js单线程中的异步与异步之间(promise之间)的顺序调用问题。微任务和宏任务之间特指的区别是微任务执行所需毫秒无限接近于零。宏任务要么耗时,要么不确定到来的时间。顺序问题有两种,一种是微任务,一种是宏任务。所以下面给出针对这两种的区分方法:下面是如何判断js中的微任务的顺序问题:js奇葩的顺序问题:原创 2022-04-10 21:15:26 · 461 阅读 · 0 评论 -
promise老子和你拼了
立一个flag如果我不能在10点之前彻底写清楚event loop这玩意的题咋做的,我就是个垃圾。为了让自己不是垃圾,嗨,奋斗吧。原创 2022-04-10 19:07:14 · 254 阅读 · 0 评论 -
java事件传递和单例模式
js中有事件,Java可以传递这个事件public class Demo extends EventTarget{ private Demo(){} private static Demo instance; public static Demo getInstance() { if(instance!=null) return instance; instance = new Demo(); return instance;原创 2022-04-01 21:43:21 · 313 阅读 · 0 评论 -
vue3响应式原理
在js这门垃圾语言中没有指针,索引我们引入响应式。指针在好多种场景下都有极好的效应。如果可以确保指针安全的使用,那么可以在递归时不必考虑返回值来向上传递递归结果,而可以操作指针来从外部获取变量的值。同理,在vue中,如何进行数据驱动显示是一门难题。vue创造性地利用观察者模式实现了一种类似于指针的效应...原理图说明obj=>一个组件所需要的所有数据。a:1,b:2=>只是列举例子。有一只眼睛在观察着是否有人往map里面添加数据,它总是负责管理和维护这个列表->观察原创 2022-03-29 20:43:14 · 1781 阅读 · 0 评论 -
本地webhook--js-native
js和UI渲染线程捆绑导致js做一些耗时任务时非常的麻烦,需要将异步处理为同步。如果想轻松优雅的解耦,需要js提供hook回调钩子中心。本地一门native语言例如c++,Rust从他们侧执行耗时任务,通过webhook通知js,js从而重新绘制UI线程以达到native的性能,易于操作的界面。这样可以集成好多native的插件,所谓js-native。...原创 2022-03-21 10:17:22 · 988 阅读 · 0 评论 -
深入聊一下javascript原型链,继承,面向对象,es5,es6,this,设计模式
javascript是一门垃圾语言javascript设计之初是没有考虑很多的,别管这门语言的作者什么背景,在怎么牛逼的人也不能在一周之内把语言设计的很好的。就拿最基本的数据类型来说,javascript对引用类似唯一提供的就是对象,且实现有问题(详见对象的遍历顺序)。我很喜欢java,它是一门标准的面对对象语言,一切皆对象,即使有int,float等关键字的遗留,但那是为了照顾老人,还是可以通过封装类来达到对象的转化。javascript原型链是个啥var obj={ a:1};var o原创 2022-03-11 21:00:43 · 1595 阅读 · 0 评论 -
为什么闭包可以导致内存泄露现在终于全部理解。
原创 2022-03-10 17:28:06 · 412 阅读 · 0 评论 -
如何在vscode中使用Ranger
本来计划在vscode中增加一个浮动面板,里面内嵌终端来引入ranger,但是vscode官方说这样会造成一些严重的性能问题,vscode毕竟只是一款文本编辑器,所以没办法支持这个计划。于是曲线救国,很久之前通过执行外部命令的方式在item中打开ranger来做到了这个功能。好像是在本地存储了一个小文件,每次打开插件都会先存到里面,然后item命令从那个地方去读取路径进入到那个路径,反正效果很好。这对于很多喜欢vim的人来说,就省去了最后一步文件导航的麻烦。当时写的时候只考虑Mac,因为windows也原创 2022-03-07 08:54:50 · 283 阅读 · 0 评论 -
es6-promise-reconstructor
export default class Promise1{ static PENDING = "pending"; static FULFILLED = "fulfilled"; static REJECTED = "rejected"; status; // fulfilled状态时 返回的信息 value; // rejected状态时 拒绝的原因 reason; // 存储fulfilled状态对应的onFulfilled函数原创 2022-03-01 11:12:16 · 98 阅读 · 0 评论 -
用亲爱的java重新实现js中巨好用的reduce
package js_method;import java.util.List;/** * T_INIT -- initValue Type * T_ARRAY -- array type */public interface CallBack<T_INIT,T_ARRAY> { T_INIT callBack(T_INIT initValue,T_ARRAY element,int index, List<T_ARRAY> arr);}package原创 2022-02-13 22:41:10 · 592 阅读 · 0 评论 -
statemachine
var stateManagerMachine = { init: () => { setInterval(() => { this.animation(); }, 16); }, bool: false, register: (delay, fn) => { .原创 2022-02-11 19:08:51 · 372 阅读 · 0 评论 -
循环偏移概念
var i=0; while(i++<10){ console.log(i); }索引合法的是0-9,而在循环体内,循环变量却变为1~10,类似于延迟+1.原创 2022-02-08 08:39:31 · 400 阅读 · 0 评论 -
mac移动硬盘安装windows
背景:手里一台15款MBP 256G,目前剩余40G。且存在1个linux分区(50G--玩)。1个西部数据 2TB。需求:为西部数据分区分成1TB--timeMachine(Mac扩展日志式),800GB--移动硬盘(exFat),200G--windows。如何进行:需要:一台windows电脑windows下操作:0.msdn+迅雷下载windows镜像0.打开mac启用转化助力,上面的下载windows辅助软件到mac桌面一会备用。1.下载window to go: htt原创 2022-01-22 11:42:31 · 3464 阅读 · 0 评论 -
ajax原理解密
ajax中有一类叫做readyState的真的很困惑。于是开始抓包研究。xhr是有历史包袱的,所以从XML就可以看出端倪。xhr是最原生的调用浏览器网络功能的API,当然可以调用本地文件。xhr通过事件设计,采用中介者模式,非常的nice。xhr具体的调用流程非常清晰,每当执行对应的xhr函数就会通过事件回调该方法。创建xhr对象,此时为readyState为0。因为对象的创建先于回调的调用,因此这个状态码无法打印。添加监听事件,用于监听0之后的状态。因为执行到后面的事件必定会系统自动抛发原创 2022-01-11 17:59:50 · 468 阅读 · 0 评论 -
递归之尾递归
尾递归递归函数是自己调用自己,尾递归是把递归调用写到最后。尾递归在某些编译器上得到支持,例如:es6严格模式。但在大多数编译器无法得到支持,例如:java8。(注:此处指JVM规范下编译器的设计。因为尾递归改变了函数栈帧指向,而java的设计目标为成为一种易于调试的语言,因此没有支持。建议还是用非递归代替递归。)下面是一个简单的阶乘的例子:function fn(n){ if(n===1) return 1; return n*fn(n-1);}尾递归版:function fn(i,原创 2022-01-03 15:32:56 · 361 阅读 · 0 评论 -
java和前端沟通时json注意点
我的这篇博客有详细的JSON规范格式说明。JSON格式说明。这篇博客的内容摘录自RFC草案7159,所以权威性很高。JSON是javascript中引用数据类型–对象的超集(子集:[超-出自java面相对象之继承之super关键词])。它的初衷是为了解决各个软件系统之间交换数据的需求。和他竞争的有xml等格式。数据类型在js中,数据类型有:基本: number,boolean,string,null,undefined引用: symbol,object在java8中,数据类型有:原创 2021-12-26 13:15:16 · 847 阅读 · 1 评论 -
JSON的rfc草案标准权威说明
原创 2021-12-26 11:50:04 · 389 阅读 · 0 评论 -
DOM三大结点
原创 2021-12-23 17:01:11 · 540 阅读 · 0 评论 -
stopPropagation是什么意思以及什么是事件的原理
<style> .div1 { width: 200px; height: 200px; background-color: bisque; } .div2 { width: 100px; height: 100px; background-color: coral; } .原创 2021-12-22 19:59:51 · 603 阅读 · 1 评论 -
爬取liveserver所有文件
1.本页面控制台jsvar nameLists = Array.from(document.querySelectorAll('#files>li:nth-of-type(n+2)>a>span:nth-of-type(1)'));var urls = function(domain){return nameLists.reduce((v,t)=>{v.push(`http://${domain}:5500/${t.innerText}`);return v;},[]);}ur原创 2021-12-21 16:27:40 · 88 阅读 · 0 评论 -
从“事件“的角度来看中介者模式和代码的解耦
说回事件话说,在那段暗无天日,轮子哥霸占知乎的年代,轮子哥创造了无数经典。那个男人的经历,教会我们好多好多。话说有一回,轮子哥写了个基于事件的GUI程序,写完后,风起云涌,设计模式又增加一种–中介者模式。中介者模式小z年纪轻轻,不懂社会阴暗。遂信同学的推荐,去找房东租房子。这样租有几个好处,1:租金比较便宜。2:简单省时省力。But,在租了好久后,小z不想租了,于是退租,但是房东不退租金,遂…中介者模式就类似于现实生活中的租房中介,虽然要给中介费,但是你不用直接直接面对房东。你要面对的是有经营牌原创 2021-12-21 16:00:06 · 86 阅读 · 0 评论 -
DOM属性
补充css知识传统的盒模型来源于css2,是width为内容的宽度,如果要算盒子的宽度的话是border+padding+内容宽高。这个是盒子的宽度。之所以会出现这种盒模型是以为早期HTML和css是为了显示文字而生的。所以没有考虑到很多呗,这样最简单就这样来了。而后期图片增多,就不行了。但是flex布局ie可能存在兼容问题,所以就引入了另一种计算盒模型的方式。这种模型叫做怪异盒子也叫做IE盒子,IE盒子是border+padding+内容合起来是width。如果他们合起来超过width,就会把盒子原创 2021-12-21 08:43:37 · 290 阅读 · 0 评论 -
.innerHTML .innerText .textContent 三者获取与设置的使用区别
***.innerHTML 获取某元素下HTML内容 ***.innerHTML =*** 设置HTML内容(标签可用) ***.innerText 获取 获取当前元素的文本及后代的所有文本组成的字符串 ...原创 2021-12-21 08:28:07 · 278 阅读 · 0 评论 -
轮播图案例
1<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>原创 2021-12-20 21:29:41 · 109 阅读 · 0 评论 -
js小数减法
function substract(a, b) { var max = Math.max(String(a).split('.')[1].length, String(b).split('.')[1].length); a *= Math.pow(10, max); b *= Math.pow(10, max); var c = a - .原创 2021-12-19 09:54:48 · 665 阅读 · 0 评论 -
关于时间的解释
TODO原创 2021-12-17 16:03:40 · 194 阅读 · 0 评论 -
对象和数组的深复制=>递进思路
version control in this Pageversion 1<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, ini原创 2021-12-17 10:46:43 · 67 阅读 · 0 评论 -
javascript数组去重的方法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Do原创 2021-12-15 17:50:20 · 1258 阅读 · 0 评论