分类 技术杂谈 下的文章 - Lino笔记
首页
笔记
关于
友链
壁纸
留言板
搜 索
1
Joe主题重制版 - 本站同款
122 阅读
2
小米手机刷面具教程(纯小白篇)
33 阅读
3
CNS服务器搭建(配合百度直连)
24 阅读
4
MAC PD19 破解
22 阅读
5
label标签中的for属性
15 阅读
技术杂谈
生活随笔
日常分享
杂七杂八
登录
搜 索
标签搜索
JS
博客部署
心理学
mysql
hexo
异步编程
Promise函数
ShadowSocks
代理
境外服务器
typecho主题
网易云
价值观
Typora
破解
笔记
centOS
redis
Joe主题
代码整洁
Lino
累计撰写
27
篇文章
累计收到
8
条评论
首页
栏目
技术杂谈
生活随笔
日常分享
杂七杂八
页面
笔记
关于
友链
壁纸
留言板
用户登录
登录
找到
16
篇与
技术杂谈
相关的结果
2023-09-02
小米手机解锁刷入第三方rec详细教程
前言首先我们要知道什么是Recovery?Recovery的字面意思是恢复、复原,Recovery用以读写System分区(安卓系统主体)、Boot分区(内核)的内容。在手机进入Recovery后,可以将手机恢复到出厂设置、升级手机的系统、对手机进行刷机等等。那么什么是第三方Recovery呢?“第三方”实际指的是“非官方”。recovery是安卓手机带的“微型维护系统”。官方Recovery难以满足玩家们的各种需求。刷第三方ROM需要写入System分区,官方Recovery是不提供该功能的。一些第三方Recovery拥有挂载系统储存、解压缩、备份系统、编辑系统文件(如host、build.prop)等功能。不过,官方的Recovery一般不会做这么多功能,多数的官方Recovery只提供了重置系统(Wipe)和升级系统的功能。因为对大众开放太多的高级功能,有概率会把系统玩坏或造成数据丢失。总结:官方rec有限制(×) 第三方没有限制(√)好的了解了什么是Recovery什么是第三方Recovery,我们开始刷入第三方rec。准备工作首先进入小米手机设置步骤如下: 设置我的设备全部参数与信息点击MIUI版本打开开发者模式返回到设置主页面下滑找到更多设置下滑找到开发者模式打开OEM解锁找到设备解锁状态。点击绑定账号和设备。完成以上步骤,解bl锁的准备工作就已经完成下载官方解锁工具MIUI解锁工具官网如果官方解锁工具一直无法正常连接,那就有可能是驱动问题下载下面的一键安装安卓驱动,安装好驱动即可解决安装驱动隐藏内容,请前往内页查看详情可以正常连接手机后在电脑上打开解锁工具,登录小米账号。将手机关机,按住音量减键+电源键进入Bootloader模式,连接手机点击解锁。刷入第三方rec进去twrp官网找到适合自己的机型twrp镜像下载:然后下载搞机助手隐藏内容,请前往内页查看详情手机关机,按住音量减键+电源键进入Bootloader模式,搞机助手链接手机后,在左侧选项栏里选择引导模式,选择刷入rec,再选择刚刚刷入的rec镜像点击刷入即可。结束刷入完成后手机关机按音量上键+电源键即可进入twrp。
2023年09月02日
12 阅读
0 评论
1 点赞
2023-08-31
CNS服务器搭建(配合百度直连)
进去首先输入sudo -i 获取最高管理员权限。cns服务器搭建命令安装: `type curl &>/dev/null && echo 'curl -O' || echo 'wget -O cns.sh'` http://binary.quicknet.cyou/cns/cns.sh && sh cns.sh 卸载: `type curl &>/dev/null && echo 'curl -O' || echo 'wget -O cns.sh'` http://binary.quicknet.cyou/cns/cns.sh && sh cns.sh uninstall 搭建完成会提示如下(端口和密码自行设置):cns install success. cns server port: 8080 //端口 cns proxy key: Meng cns udp flag: httpUDP cns encrypt password: 123456 //密码 cns tls server port: Usage: systemctl [start|stop|status|restart] cns.service Config file is /usr/local/cns/cns.json```然后修改clnc模块信息即可 隐藏内容,请前往内页查看详情仅供学习,请在下载24小时之内删除,请支持正版
2023年08月31日
24 阅读
0 评论
0 点赞
2023-08-31
一些性能相关的 JavaScript 代码编写建议规范
本文对一些日常编写 JavaScript 的过程中,一些有助于提高代码性能的规范进行罗列。本文比较零碎,不作为规范提议,仅作为交流参考。1. 使用解构赋值,减少中间变量。对于一些比如变量替换的场景,我们使用解构赋值,可以省略中间变量,整体代码也会更加清晰。let a = 3; let b = 4; [b, a] = [a, b];2. 通过条件判断提前返回这里主要是提醒大家如何写好 if 语句。实际上, 在编写复杂的 if 语句之前,我们应该考虑是否可以逻辑外化:即尽可能的将代码的复杂逻辑向外推,例如抽离成多个函数,而不是在程序里面进行过多判断。有一种比较典型的不合理的重用是把大量的逻辑都堆叠到一个函数里面,然后提供一个很复杂的功能。我认为更好的做法应当是分离成更多的模块。经过以上思考之后,我们可能还有一些 if 语句,一般的原则是:if 语句先简单,后复杂。if 语句,可以提前返回即提前返回,减少复杂的嵌套。// nice: if (condition1) { // do something return; } if (condition2) { // do something return; } other_function(); // bad: if (condition1) { // do something } else { if (condition2) { // do something } else { other_function(); } }3. 尽量避免在循环体内包裹函数表达式函数表达式会生成对应的函数对象,如果我们在循环体内去做这个事情,很可能会造成额外的浪费。// nice: function callback() { } const len = nodelist.length; for(let i = 0; i < len; i += 1) { addListener(nodelist[i], callback); } // bad: for(let i = 0; i < nodelist.length; i += 1) { addListener(nodelist[i], function() ); }4. 对循环体内的不变值,在循环体外使用缓存这一条其实是对上一条的补充,实际上是同样的原理,即希望我们在循环体内尽量保持逻辑的简单,减少重复的 cpu 时间和内存的消耗。5. 清空数组使用 .length = 0这样写可以方便我们清空一个 const 数组。const a = [1,2,3,4]; // 如果使用 a = [] 会报错 a.length = 0;6. 不得为了编写方便,将并行的 io 串行化虽然现在 JavaScript 有了 async/await,但是我发现很多同学会对此滥用,一个很常见的清空就是将可以并行的操作串行化了:let res1 = await process1(); let res2 = await process2(); next(res1, res2);这个时候,虽然写代码方便,但是这样写是不可取的,Promise 提供了若干的方便我们处理并行任务的方法,我认为这些都是必须要了解的。7. 禁止直接使用 evaleval 的安全性非常差,事实上有很多已知的 xss 等漏洞都和 eval 有关,所以我们在实际场景中避免使用 eval。如下为一个例子,使用了 eval 函数,由于其执行代码的作用域为本地作用域,所以对我们的本地变量进行了修改并且可以生效:let tip = "请重新登录" let otherCode = `tip = "请前往 xxx.com 重新登录"` eval(otherCode);一些取代方式:我们可以使用 new Function 的方式来代替 eval,这样至少可以进行作用域的隔离,相对会安全一些(但是请注意其仍然会可能影响到全局变量)。8. 浏览器环境中,尽量避免使用 document.all、document.querySelectorAll类似的 all 相关操作都要避免使用,由于我们很难控制随着项目发展内容会有多少,所以我们最好一开始就不要留下随着项目内容增加性能越来越差的隐患。9. 获取元素的样式,尽量使用 getComputedStyle 或 currentStyle通过 style 只能获得内联定义或通过 JavaScript 直接定义的样式,通过 CSS class 设置的样式无法直接获取。10. 尽可能通过为元素添加预定义的 ClassName 来改变元素样式,避免直接操作 style 进行设置。直接操作 style,会比较混乱,而且有的时候还会忘记写单位,导致实际上不管用。
2023年08月31日
3 阅读
0 评论
0 点赞
2023-08-22
《代码整洁之道-Clean Code》读书笔记
整洁代码《修改代码的艺术》一书作者对整洁代码的描述:我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的,整洁的代码总是看起来像某种特别在意他的人写的,几乎没有改进的余地,代码的作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给的代码——全心投入某人留给你的代码。函数这本书关于函数的介绍和其他架构书差不多,主要就是两个点:1. 短小,2. 抽象层次一致性。注释毫无疑问,注释是代码中的坏味道。对于一部分注释,我们可以使用类似 4.4.8 这种变量的方式,通过新增两个变量,来解释我们的内容。那种生成的注释和我们注释掉的代码,我的建议是:不要留。格式相关函数:按照本书的说明,若某个函数调用了另外一个,就应该把它们放到一起,而且调用者应该尽可能放在被调用者上面。我自己之前的习惯是调用者在被调用者的下面,目前又思考了一下,像作者这样组织,可能可读性反而更高。因为这样设计可以像报纸一样,最重要的概念先出现,并且希望以包括最小的细节表述他们,期望底层的细节后出现。错误处理使用异常而非返回码: 在 《代码精进之路》的读书笔记中,也提及了类似的思路,这个书里面又提到了使用异常而非返回码这一点,并且给出了一个新的理由,返回码意味着我们需要立即处理,这个步骤可能很容易被遗忘,而且会让我们的代码变得比较乱。关于返回 null 值:有的时候,我们在数据处理中出现问题,可能会返回一个 null 或者 undefined。但是我建议相对于此,我们更应该直接抛出异常,返回 null 值意味着依赖调用者来做空检查,而且你不知道这个 null 究竟什么时候才会引发错误,这样会有较高的不稳定性。类的组织对于类的组织中,属性顺序的一个建议:依次是公共静态常量、私有静态变量、公共函数、私有函数。类的权责:对于一个类来说,我们不希望它被定义的太长,当然这个不能单纯地使用代码行数来判断,我们应该使用类的权责来判断,当一个类的名称越含糊,该类越有可能拥有更多权责,比如它的名称包含了诸如 Processor、Manager 或 Super,那么这种现象往往说明有不恰当的权责聚集的情况出现。如何把类拆的短小:我给出一个切实可行的办法,可以先从类的复杂函数入手,我们在把函数拆分的过程中,发现某些部分拆分成函数之后会传递大量的参数给它,否则很难拆分,那么传递给它这个函数的参数就可以被整合进新的小类的实体变量,这样我们就无需传递参数,同时也完成了拆分。
2023年08月22日
4 阅读
0 评论
1 点赞
2023-08-22
十条编写优化的 JavaScript 代码的建议
本文总结了十条编写优秀的 JavaScript 代码的习惯,主要针对 V8 引擎:1.始终以相同的顺序实例化对象属性,以便可以共享隐藏类和随后优化的代码。V8 在对 js 代码解析的时候会有构建隐藏类的过程,以相同的顺序实例化(属性赋值)的对象会共享相同的隐藏类。下面给出一个不好的实践:function Point(x, y) { this.x = x; this.y = y; } var p1 = new Point(1, 2); p1.a = 5; p1.b = 6; var p2 = new Point(3, 4); p2.b = 7; p2.a = 8; // 由于 a 和 b 的赋值顺序不同,p1 和 p2 无法共享隐藏类2.避免分配动态属性。在实例化之后向对象添加属性将强制隐藏类更改,并减慢为先前隐藏类优化的所有方法。相反,在其构造函数中分配所有对象的属性。 3.重复执行相同方法的代码将比仅执行一次(由于内联缓存)执行许多不同方法的代码运行得更快。 4.避免创建稀疏数组。稀疏数组由于不是所有的元素都存在,因此是一个哈希表,因此访问稀疏数组中的元素代价更高。另外,尽量不要采用预分配数量的大数组,更好的办法是随着你的需要把它的容量增大。最后,尽量不要删除数组中的元素,它会让数组变得稀疏。 5.标记值:V8采用32位来表示对象和数字,其中用一位来区别对象(flag = 0)或数字(flag = 1),因此这被称之为 SMI (Small Integer)因为它只有31位。因此,如果一个数字大于31位,V8需要对其进行包装,将其变成双精度并且用一个对象来封装它,因此应该尽量使用31位有符号数字从而避免昂贵的封装操作。 6.检查你的依赖,去掉不需要 import 的内容。 7.将你的代码分割成一些小的 chunks ,而不是整个引入。 8.尽可能使用 defer 来推迟加载 JavaScript,另外只加载当前路由需要的代码段。9.使用 dev tools 和 DeviceTiming 来寻找代码瓶颈。 10.使用诸如Optimize.js这样的工具来帮助解析器决定何时需要提前解析以及何时需要延后解析。 以上内容来源:How JavaScript works: Parsing, Abstract Syntax Trees (ASTs) + 5 tips on how to minimize parse timeHow JavaScript works: inside the V8 engine + 5 tips on how to write optimized code
2023年08月22日
5 阅读
0 评论
0 点赞
1
2
3
4