- 博客(46)
- 资源 (6)
- 收藏
- 关注
原创 2024前端面试准备5-React相关
Fiber架构,对这种大量的计算变成可中断的,对整体任务进行切片,分批延时对DOM进行操作,避免一次性操作大量DOM,通过某些合理的调度策略,合理的分配资源,从而提高浏览器的用户响应速度,同时兼顾任务执行效率。如果无法控制的地方,比如绑定的原生事件,定时器等事件中,就只能同步更新。将页面的状态抽象为js的对象,配合不同的渲染工具,使跨平台渲染成为可能,通过事务处理机制,将多次DOM修改的结构一次性的更新到页面上,从而有效的减少页面的渲染次数,减少修改DOM导致的重绘重排次数,提高渲染性能。
2024-06-16 13:23:09
1033
2
原创 2024前端面试准备4-Vue相关
MVVM 分为 Model、View、ViewModel:● Model代表数据模型,数据和业务逻辑都在Model层中定义;● View代表UI视图,负责数据的展示;● ViewModel负责监听Model中数据的改变并且控制视图的更新,处理用户交互操作;Model和View并无直接关联,而是通过ViewModel来进行联系的,Model和ViewModel之间有着双向数据绑定的联系。
2024-06-09 19:40:44
758
原创 2024前端面试准备3-JS异步-进阶
同步代码,一行一行放在Call Stack执行,遇到异步任务,标记一下让其他线程去处理(定时,网络请求等),其他线程处理完毕就放到callback Queue, 如果Call stack清空(即同步代码执行完),开始执行当前的微任务和微任务引发的微任务,执行完毕微任务队列,然后尝试进行DOM渲染,渲染结束,Event loop开始工作,轮询查找Callback Queue, 如果有则移动到Call Stack执行,然后继续重复上述步骤(永动机一样)。微任务是ES6语法规定,宏任务是由浏览器规定的。
2024-06-06 21:27:22
462
原创 2024前端面试准备2-JS基础知识回顾
获取实例的属性时,先在自身属性中寻找,如果找不到就通过__proto__ 寻找对应构造函数的prototype,如果还未找到就会去该构造函数的prototype的__proto__,这样一层一层向上查找就会形成一个链式结构,这就是原型链。浅拷贝: 赋值给一个新对象,如果是基本数据类型,赋予的直接是值,如是引用类型数据,赋予的则是内存地址, 引用对象=赋值不是浅拷贝,因为没有产生新的对象,只是新增了指向同一内存地址的指针。所有的自由变量的查找,是在函数定义的地方,向上级作用域查找,而不是在函数执行的地方。
2024-06-05 20:43:16
1076
原创 NestJs服务搭建步骤记录(四):异常捕获
一、异常捕获新增拦截器模块 $ nest g filter filter/http-exception $ nest g filter filter/any-exceptionhttp-exception.filter.ts: 捕获主动刨错的内容import { ExceptionFilter, Catch, ArgumentsHost, HttpException,} from "@nestjs/common";import { Request, Response }
2022-05-04 00:07:28
980
1
原创 NestJs服务搭建步骤记录(三):jwt、redis、单点登录示例
一、jwt使用实例安装依赖包$ yarn add passport @nestjs/jwt passport-jwt @types/passport-jwt @nestjs/passport 2.保持干净地模块化,新建auth模块$ nest g mo auth$ nest g service auth$ nest g co auth相关文件:auth.service.ts/* * @Author: FORMAT-qi * @Date: 2022-05-02 10:29:28
2022-05-02 16:57:58
2095
原创 NestJs服务搭建步骤记录(二):log4js、中间件使用示例
一、使用nestx-log4js/core增加日志打印(日志打印更容易分辨,会生成对应的日志文件,默认目录logs)1.安装nestx-log4js/core$ yarn add nestx-log4js/core2.修改app.module.ts// imports 加入 Log4jsModuleimport { Log4jsModule } from "@nestx-log4js/core";@Module({ imports: [DbModule, UserModule, Log4j
2022-05-02 00:33:13
3549
原创 NestJs服务搭建步骤记录(一):项目创建、Mongoose、swagger使用示例
node服务NestJs+Mongoose+TS 搭建步骤记录
2022-05-01 19:15:39
1100
原创 Vue:用slot优化Table组件
对UI组件库table组件 columns的render优化优化前{ title: "操作", key: "action", align: "center", fixed: "right", width: 300, render: (h, params) => { return h("div", [ h( .
2021-08-05 11:01:10
862
原创 Sourcetree提交代码husky报npm: command not found
随手记录一下。Vue项目配置完husky后,使用Sourcetree提交代码时,报错 npm: command not found解决方法:在 .husky目录下的pre-commit文件中添加环境变量PATH=$PATH:/usr/local/bin:/usr/local/sbin
2021-05-11 16:01:39
5200
原创 vite2.0 + ant Design vue2.0按需加载和更换主题
随手记录一下main.tsimport { createApp } from 'vue'import Antd from './antd-ui'import App from './App.vue'const app = createApp(App)app.use(Antd)app.mount('#app')antd-ui.tsimport { Button, Card, message, notification } from 'ant-design-vue'const co
2021-04-23 16:09:06
3353
11
原创 2021前端自动化部署jenkins步骤记录
刚到新公司,这边居然是前端打包zip文件发给运维部署,感觉十分不方便,像我这种bug多的开发,需要经常部署一下的,为了不被运维打,搭一个jenkins自动化部署,记录一下过程。大致过程就是,本地代码push到远程仓库,服务器端Jenkins上选择目标分支或tag进行构建,当然也可以监听push动作自动构建,执行构建任务,拉取代码,执行编译打包,将编译产物部署到web项目工作目录。一、服务器配置1.安装java环境sudo yum install java查看版本号,若有版本号输出,表示安装.
2021-04-15 10:46:07
432
2
原创 Vue中的可以屏蔽scoped作用的“>>>”深度选择器
css的scoped属性···vue 为了防止 css 污染,当组件的 实现原理很简单,给当前组件中的每个标签都加上唯一的自定义属性:data-v-唯一的属性,然后 css 选择器都加上属性选择器.article-title[data-v-唯一的属性],这样这个 css 只会匹配到当前页面的这个元素。注意:每个组件的最外层的标签会带上父组件的data-v-属性,也就是这个标签会被父组件的样式匹配到,所以父组件尽量不要使用标签选择器,这个标签不要使用父组件中的 id 或者 class。在父组件想修改子组
2021-02-20 11:45:28
329
原创 python获取阿里巴巴国际站商家信息
帮一个做外贸的朋友搞的,他们需要电话号去和商家沟通,提供国际货运一条龙服务,不停地切换页面,比较麻烦,帮他写个脚本,一次性获取下来,存成Excel。现在分享一下过程,同时记录一下他欠我一顿饭。前言阿里巴巴国际站上的商家号码在不同的商家页面上,如图所示,需要登录授权才能查看。本来想直接通过接口去获取,但是发现每次请求都有一个动态的spm参数不同的变动,所以决定简单一点用selenium启一个webdriver,效率比较慢。1.启动webdriver,并完成登录from selenium.web.
2020-12-08 11:49:29
5943
4
转载 应该知道的前端小知识
1. css一行文本超出… overflow: hidden; text-overflow:ellipsis; white-space: nowrap;2. 多行文本超出显示… display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;3.IOS手机容器滚动条滑动不流畅 overflow: auto; -webkit-overflow-scrolling:
2020-11-26 09:17:26
178
原创 破解微信小游戏-动物餐厅之无限小鱼干
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2020-10-16 18:31:24
15263
9
原创 iOS逆向-砸壳之 frida-ios-dump安装及使用
开始一、frida-ios-dump砸壳1. 手机端配置打开cydia 添加源:https://build.frida.re安装frida2. mac端配置安装frida执行命令:sudo pip install frida-tools安装成功:如果遇到错误:certificate verify failed: unable to get local issuer certificate解决方法:只需浏览Applications/Python 3.7并双击Install
2020-08-07 15:10:15
2789
原创 iOS逆向-支付宝基金之统计实时收益
前言:现在全民买基的情况下,女票也买了一些,对于买基新手来说,总是想打开支付宝看看到底今天是赚是赔,女票说支付宝收益第二天才显示太慢了,要是能打开直接看到收益就好了,作为一个合格的程序员,怎么能不满足这小小的需求?写篇记录一下过程。工具:半越狱 iphone 5smac电脑一台爱思助手一、砸壳(一)安装CrackerXI+在cydia 中添加 源地址 http://cydia.iphonecake.com 或者 http://apt.cydiami.com ,添加成功后,在cydia.
2020-08-07 14:23:42
3905
5
原创 Python下载网易云歌单歌曲
今天写了个下载脚本,记录一下效果:直接上代码:# 网易云 根据歌单链接下载MP3歌曲import requestsfrom bs4 import BeautifulSoupdef main(): url = "https://music.163.com/#/playlist?id=3136952023" # 歌单地址 请自行更换 if '/#/' in url: url = url.replace('/#/', '/') headers = {.
2020-08-05 20:52:58
5640
18
转载 iOS开发相关书籍推荐
前言:技术书阅读方法论总结下面是书单资源截图:以下是每本书的推荐语,清楚自己缺的是什么,就下定决心去补吧,一个好工作意味着高收入,投资自己的时间换来更宝贵的东西。一、网络层1. 《HTTP权威指南(中文版)》2. 《IOS网络高级编程》二、架构、程序设计、编程思想1.《OBJECTIVE-C编程之道 IOS设计模式解析》2.《一线架构师实践指南(温昱)》3.《Cocoa设计模式》4.《Objective-C程序设计》5.《kkbox-iOS-dev》6.《Cocoa基.
2020-05-21 11:50:44
2544
1
原创 520小玩意之Python词云:导出与女票的微信聊天记录并分析
用python看看自己和女票都聊了些什么事最终效果图:一、导出微信聊天文件写2种导出聊天记录的方法:一种是Mac版微信,另一种是iOS版微信。1.导出Mac版微信聊天记录Mac版微信在本地存放了聊天记录的数据库,数据库使用的是开源的 sqlcipher加密了里面的数据。在终端输入下面命令,可以查看这些数据库的路径。 ls -alh ~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.
2020-05-20 10:53:17
2292
2
原创 Python:导出QQ聊天记录-让我们看看逗比群友都在聊什么
qq技术群,一群逗比天天不聊技术,就在摸鱼,未读消息动不动就99+,丝毫不考虑我这电脑内存小的怎么办。来,让我们看看这群逗比群友zhen’tian在聊什么。开始一、导出QQ聊天文件
2020-05-20 09:19:55
2097
3
原创 让你的Swift代码看起来更有逼格的技巧
最近把项目优化了一遍,用了一些语法糖,语法糖可以提高编程序效率,别人阅读代码的时候会觉得你的代码很工整,有逼格,也方便维护。下面展示一些最近的优化示例。1、可选值拆包优化前:var nickName: String?var userHederSrc: String?//使用时func setUserInfo(){ if let nickName = nickName { if let userHederSrc = userHederSrc { p.
2020-05-14 17:25:59
488
原创 iOS开发常用代码片段:总有你用得上的功能
查看文章目录,查找需要的功能。1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabled = YES;2、 隐藏某行cell - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { // 如果是你需要隐藏的那一行,返回高度为0 if(indexPath.row == YouWantTo.
2020-05-13 15:34:54
560
原创 给Mac版微信手动添加URL Scheme
之前写QQ版情话助手时说过,微信没有URL Scheme所以没有办法直接通过Safari浏览器打开APP我们就直接给他添加一个。1.首先下载一个微信安装镜像文件微信2.4.0公测版下载,2.4.0支持打开小程序,商店版本不支持。然后打开镜像到这一步之后不要拖到文件夹里,把微信.app先拖到桌面并运行一次微信,启动成功后退出就可以了,不运行直接修改info.plist会报程序已损坏。2.右键->显示包内容->修改info.plist文件添加URL types:3.修改后桌面微信闪退打
2020-05-12 10:01:50
837
原创 逆向Mac版微信-情话助手终版(撩妹神器)
前言发了上一篇文章《用了这个,我追到了自己的女神:升级版-Mac版微信自动发送情话插件》 之后,又想了想能不能把这个功能融合到我一直在用的MustangYM大神搞的WeChatExtension-ForMac微信小助手里边,经过尝试很容易就成功了,很多方法都已经被 大神封装好了直接用。站在大神肩膀上开发真的太方便了。...
2020-05-11 17:24:36
1385
原创 逆向微信Mac客户端:微信情话助手初版
前言上一篇文章《用了这个,我追到了自己的女神:Mac版QQ半自动发送情话》 好几个朋友私信问我怎么能不能整个微信的?有别的大神已经开发了微信网页版的自动发消息,可以登录网页版微信的朋友可以去用试一试,我因为不能登录网页版微信所以用不了,今天来尝试一下通过逆向Mac微信客户端,来解决一下这个问题。实现原理想象中实现过程应该是: 通过URL Scheme 进入微信并携带参数,进入微信触发微信...
2020-05-09 17:44:17
2190
3
原创 用了这个,我追到了自己的女神:Mac版QQ半自动发送情话
前言之前追女神时候用的情话发送脚本,每次工作日上班开启电脑,就会唤醒QQ,然后发送一条情话给女神,自动唤醒QQ复制情话,不用担心遗忘,现在整理分享一下,妈妈再也不用担心我找不到对象了。效果图:流程:python爬取情话 -> 电脑开机启动脚本 -> python调起QQ并定位到指定聊天框-> 从情话文件读取一条情话,复制到剪切板上。开始1、爬取情话文件情话网站都...
2020-04-29 17:41:02
12798
44
原创 Swift:UIView扩展之歌词控件(扩展添加属性 )
效果图:一共由五种模式 :歌词模式解锁模式从左到右解锁模式从右到左解锁模式从左右循环整体闪烁代码如下//// UIView+FQshimmeringView.swift// FQUIKit//import Foundationimport UIKitlet kFQBackLabel: UnsafeRawPointer! = UnsafeRawPoint...
2020-04-28 16:54:02
455
原创 #假如可以和下一任说句话#你会说什么?Python获取微博热门话题评论
前言#假如可以和下一任说句话#今天在午休逛微博看到这个话题很感谢趣,但是午休时间短,上班又没得办法看,怎么办?想了一下还得Python出马,抓取下来存成TXT,下班路上慢慢看!不多说开始盘它。开始用Charles抓包工具分别获取了手机客户端,网页,手机版网页的api,,发现用https://m.weibo.cn手机网页版的页面比较好抓。1.打开话题页面链接https://m.weibo...
2020-04-26 17:42:14
1931
转载 2020年iOS面试题及答案
问题来源:链接:https://juejin.im/post/5e75aba6e51d4526d71d6558尝试做一下回答1,分类和扩展有什么区别?可以分别用来做什么?分类有哪些局限性?分类的结构体里面有哪些成员?①类别中原则上只能增加方法(能添加属性的的原因只是通过runtime能添加属性的的原因只是通过runtime的objc_setAssociatedObject和objc_ge...
2020-04-20 16:20:57
6848
3
原创 小程序:解析xml数据 + jsonp数据+base64解码
对接一个某个大公司的接口,返回的数据有json, xml 和jsonp三种。下边把解析方法记录一下,备用。1.解析xml下载xmldom库:https://github.com/jindw/xmldom下载文件夹后,把xmldom-master改名为xml放在小程序工程内,在需要调用的文件中引入头文件var Parser = require("../xml/dom-parser.js...
2020-04-07 16:37:46
685
原创 Swift :UIView扩展+直播间麦克风波纹扩散动画
功能需要,用贝塞尔曲线写了一个波纹动画分享一下效果图:知识点:扩展不能直接加属性,用runtime方式添加 //bord宽度 默认1.5 var FQBordWith:CGFloat?{ get{ return (objc_getAssociatedObject(self,"FQBordWith") as? CGFloat) ...
2020-04-07 14:17:00
922
原创 iOS Swift5.1基础学习样例
前言做了2年iOS开发,又被公司安排去做了2年的H5和小程序的开发,准备从新捡起来,复习一下swift。一、基础部分1.常量和变量 let a = 10 //声明常亮 var b = 0 //声明变量 //1.1常量和变量的命名 let π = 3.14159 let 你好 = "你好世界" let ???????? = "dogcow"2.类型注...
2020-03-30 13:12:00
2854
原创 小程序基于定时器的无限滚动列表和CSS3动画滚动的地球
随手写的小玩意,两个无限滚动动画。效果图:话不多说直接上代码:wxml文件 <view class="swiper-tip" > <view class="swiper-item-sup" style="top:-{{moveTop}}px;" id="swiper-item-sup"> <view class="swiper-tip-...
2020-03-27 17:07:23
441
原创 小程序 发送模板消息功能封装
// 需添加 微信 域名 https://api.weixin.qq.com var requestHandler = { openId: null, //发送用户openid (必填) template_id: null, //发送 模板ID (必填) page: null, //(选填) 点击模板卡片后的跳转页面,仅限本小程序内的页面 form_...
2018-03-28 15:47:38
222
原创 iOS CAReplicatorLayer
CAReplicatorLayer:复制图层顾名思义,复制图层就是用来复制的。它会将自己的子图层进行复制,连同子layer上的动画会一起复制。属性说明:instanceCount :复制份数。(会把原始的子图层复制多少份,包括原来的一份)instanceTransform:形变。每一份相对上一份的形变量instanceDelay :每一份相对上一份的延迟的时间。...
2018-03-07 13:33:53
192
原创 iOS 常用小功能 打电话、打开网址、发邮件、发短信等
一、 打电话最简单的 缺点电话打完后,不会返回应用。 NSURL *url1 = [NSURL URLWithString:@"tel://10086"]; // 注:该方法已在iOS10弃用 // [[UIApplication sharedApplication]openURL:url]; [[UIApplication sharedAp...
2018-03-05 10:37:46
254
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人