- 博客(70)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Cookie增删改查方法封装(低内存开销版)
本文章中的低内存开销是指在获取cookie的时候不进行字符串—>数组的转变,全程使用slice+indexOf切割字符串,不创建和操作数组,节约内存,本文代码已存放到github中,后续会持续完善功能,传送门:https://github.com/Escaay/cookieHandler.git本文由Escaay原创,转载请注明出处。
2023-06-18 16:55:30
297
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Uniapp微信小程序视频全屏播放功能极简实现法
*高端的食材,往往只需要最朴素的烹饪方式,本文用css旋转定位实现视频全屏播放,朴实无华,简单实用,本文为原创,分享请标明出处*实习入职第三周,在经过两周的改bug和切图之后,组里说给我一个有挑战性的需求,做一个视频全屏播放的功能简单来说,就是点击按钮,将视频全屏播放,宽高比例过1.8的横屏播放,小于1.8的仍然竖屏播放,就像下面这样看完需求我的思考如下:1.在原页面操作属实麻烦,需要点击全屏按钮跳转到新页面播放2.由于需要保留侧边栏的点赞关注等功能,所以需要组件分离复用3.由于存在横竖
2021-08-10 11:05:29
10017
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 小程序定位地图模块全系列开发教学(超详细)
前言:如果想最大化吸取本文经验,须有小程序开发基础,本文细节比较多,请耐心理解,多动手尝试,收获会更加丰富1.定位系统使用场景及概述如美团外卖小程序点定位点搜索显而易见,随便一个电商小程序都需要用到定位服务,那么今天我们做一个类似的定位模块定位模块总览外部内部好了接下来我们开始动手2.定位外部模块样式效果代码//wxml<view bindtap="getLocation" class="location"> <image src="../../
2020-11-23 21:28:08
5830
10
转载 Git报错: Failed to connect to github.com port 443 解决方案
命令中的主机号(127.0.0.1)是使用的代理的主机号(自己电脑有vpn那么本机可看做访问github的代理主机),即填入127.0.0.1即可,否则填入代理主机 ip(就是网上找的那个ip)命令中的端口号(7890)为代理软件(代理软件不显示端口的话,就去Windows中的代理服务器设置中查看)或代理主机的监听IP,可以从代理服务器配置中获得,否则填入网上找的那个端口port。socks5和http两种协议由使用的代理软件决定,不同软件对这两种协议的支持有差异,如果不确定可以都尝试一下。
2024-01-20 12:19:59
637
原创 1分钟解决github push/pull报错443
6.复制桌面的hosts,粘贴回C:\Windows\System32\drivers\etc,选择覆盖,然后会提示需要管理员权限,我们选择继续即可。3.文件夹打开C:\Windows\System32\drivers\etc,复制hosts文件,粘贴到桌面。1.打开https://www.ipaddress.com/7.重新git pull/push,success。4.在桌面用记事本打开复制过来的hosts。-------完结撒花--------5.在末尾加上一行,IP写刚才复制的。
2023-08-01 09:47:39
1994
原创 浅谈es5如何保证并发请求的返回顺序
最近在公司实习写的是es5,在和回调地狱经过一番拉扯之后写下这篇文章,也算是体验了一把没有promise的时代假设我们的div有一个日历列表,但是由于大小关系只能每次显示2天的信息,项目限制只能使用,不能使用es6的promise,且后端给我们的接口只能每次请求一个具体日期的数据例如现在的需求是首屏加载2个item,有些人会觉得这还不简单吗,先请求第一个,再在回调里面请求第二个确实如此,那假如我们有20个,200个item呢,就会掉入。
2023-07-27 16:29:36
483
转载 JavaScript 开发规范(一): 命名与注释规范详解
ECMAScript 规范中标识符采用驼峰大小写格式,驼峰命名法由小(大)写字母开始,后续每个单词首字母都大写。从事前端开发也有一段时间了,一直在遵循着规范化开发,从 js 也逐渐转向了 ts ,在这个过程中也有了很多收获,在此把自己的开发心得写下来。命名建议:尽量在变量名字中体现所属类型,如:length、count等表示数字类型;Camel Case 小驼峰式命名法:首字母小写。本文参考了JavaScript 开发规范,并做了补充和修改,同时删去了框架开发相关的内容(侵删)。命名方法:小驼峰式命名法。
2023-07-19 17:35:38
326
原创 第六届字节跳动青训营报录比(宣传大使)
感觉前端的应届生还是少点,社会上的前端比较多,后端的话应届生竞争更激烈。前端基础班:120-22(笔试不过基础班,宣传大使奖励进入)=98。前端进阶班:18-2=16。
2023-07-19 15:35:49
544
2
原创 深入浅出fromCharCode和charCodeAt
ascii是8位二进制表示,所以最多指代2^8个字符,也就是256个字符(英文,数字和一些符号,总共127个,剩下的各个国家规定不同,导致出现多种编码格式,就像中国的GBK编码格式),所以没办法表示中文,这才有了unicode的出现,他可以表示全世界的字符,数量足够大,但是网上很多的解释都是互相拷贝,很少有说的清楚,建议大家可以参考计算机的教材,打牢基础,免受折磨!来看看官方解释:UTF-16把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列。utf-16(固定2字节)
2023-07-07 18:54:46
231
原创 一次搞懂ArrayBuffer和Unit8Array(TypedArray)和Array!
为了提高性能,用了ArrayBuffer,ArrayBuffer需要转成视图,再转成字符串,供我们前端操作
2023-07-06 17:49:07
2097
原创 http各个版本变化汇总(精简)
1.二进制分帧(流=请求,每个流唯一id,让帧带着,多个被分割出来的帧组合成一个流,实现了多路复用,不用等前一个请求完成)1.新增请求方法(put,delete,head,patch,options,connect)6种。二进制分帧实现了多路复用,http1.1中想同时发送多个请求,必须开启多个tcp连接。3.管道传输(没有完全解决队头阻塞问题)(不用等上个请求完成就可以发下一个)5.安全性,浏览器只支持有TLS的http2(通信密码框架)2.头部压缩(省略请求头种的空值字段)
2023-06-24 11:54:26
571
原创 构造函数和class类挂载属性和方法的相互转化
class是es6新出的关键词,方便我们快速建立类和继承的关系,es6以前我们都是使用function构造函数模拟类。本文讲述了function构造函数和类中定义属性方法的对应关系,主要有以下四点。
2023-06-20 10:03:18
106
原创 generator和promise和async的异同
④Promise:一般用于网络请求、读取本地文件等较长时间的操作,可通过then/catch/finally等链式调用,解决回调地狱问题。不需要写匿名函数处理Promise的resolve值,也不需要定义多余的data变量,还避免了嵌套代码。4.Promise 真正执行回调的时候,定义 Promise 那部分实际上已经走完了,所以 Promise 的报错堆栈上下文不太友好。⑥async/await:async返回的一般是 promise实例对象,await后面跟的可以是表达式/请求。
2023-06-19 14:38:41
356
原创 clientWidth,offsetWidth,scrollWidth,clientLeft,offsetLeft,scrollLeft,getBoundingRect()一次理解清楚!!!
clientWidth,offsetWidth,scrollWidth,clientLeft,offsetLeft,scrollLeft,getBoundingRect()一次理解清楚!!!
2023-06-18 18:43:35
107
原创 leetcode561. 数组拆分 I(Javascript)
var arrayPairSum = function(nums) { nums.sort((a,b)=>a-b) let result=0 for(let i=0;i<nums.length;i+=2){ result+=nums[i] } return result};时间复杂度O(N),空间复杂度O(1)
2021-09-14 11:16:02
169
原创 leetcode506. 相对名次(Javascript)
一法(效率较低):1.备份原数组,将原数组排序2.遍历排序后的数组,用indexOf从大到小找出元素在原数组中的索引3.判断索引值在result中加入对应答案二法(效率较高):1.备份原数组,将原数组排序2.遍历排序后的数组,用index判断位置并在哈希表中设置对应键值3.遍历原数组,用原数组对应哈希表取出值加入到result中二法由于使用了哈希表替代了indexOf,所以避免了时间复杂度O(n2)的情况,时间复杂度低了一个层次var findRelativeRanks = functi.
2021-09-13 11:14:49
151
原创 leetcode500. 键盘行(Javascript)
思路:建立三个集合,遍历数组,将每一项转化为小写字母,遍历改项,记录首位字母所属集合,并用type标记,之后每一个字符若所属集合和首位字母不一致,则删除其所在words的元素,返回words注意:要break的不要使用三目运算符,filter,map无法continue,最好使用for循环,switch(item)中的case之后无法进行方法调用返回var findWords = function(words) { let set1=new Set('qwertyuiop') let..
2021-09-10 15:38:02
119
原创 leetcode482. 密钥格式化(Javascript)
思路:去横杠转大写加入头部遍历加入剩余项和横杠注意点:加入头部时判断字符串长度是否小于于k,决定是否加入横杠遍历时最后一项不用加横杠var licenseKeyFormatting = function(s, k) { let newS=s.replace(/-/g,'') function replaceStr(str){ let strArr=[...str] for(let i=0;i<strArr.length;i++){ .
2021-09-07 17:56:22
164
原创 leetcode409. 最长回文串(Javascript)
var longestPalindrome = function(s) { //将数组排序 let sArr=[...s].sort() //定义所需变量,用ifOne来判断是否已加最中间的奇数项 let [sum,ifOne,cunrrentNum]=[0,false,1] //循环处理,计算字符重复次数且根据奇偶性加进总量 for(let i=0;i<sArr.length;i++){ if(sArr[i]===sArr[i+1]){ .
2021-09-06 11:20:27
163
原创 leetcode387. 字符串中的第一个唯一字符(Javascript)
思路:凡是问出现次数的,不要犹豫,用hash,此题直接遍历字符串记录每个字母的出现次数,记录到map中,然后遍历map返回value为1的key的索引
2021-08-18 11:56:33
144
原创 leetcode290. 单词规律(Javascript)
思路:双哈希表法,创建两个Map类型分别存储规律->字符串,字符串->规律,每次遍历都验证两个表是否已经存在对应值,如果不存在则添加var wordPattern = function(pattern, s) { let map1=new Map() let map2=new Map() let strArr=s.split(" ") if(strArr.length!==pattern.length){ return false } for(let i=0;i<.
2021-08-11 18:06:25
133
原创 leetcode205. 同构字符串(Javascript)
思路:创建两个哈希表分别存储s对应t的映射和t对应s的映射,每次添加映射时都判断字符是否同构,两个哈希表都要过var isIsomorphic = function(s, t) { if(s.length!==t.length){ return false }let map1=new Map()let map2=new Map()for(let i=0;i<s.length;i++){ if(map1.has(s[i])){ if(ma.
2021-08-09 14:07:22
184
原创 leetcode125. 验证回文串(Javascript)
思路:先用正则去除非字母和非数字字符,再遍历数组,比较开头和结尾对应的字符是否相等,一旦不相等返回false,要处理字符串长度小于等于1的情况,直接返回truevar isPalindrome = function(s) { if(s.length<=1){ return true }let str=s.replace(/[^a-zA-Z0-9]*/g,'')if(str.length<=1){return true}let lastStr=''f.
2021-08-05 11:39:15
107
原创 leetcode67. 二进制求和
var addBinary = function(a, b) { // 取a,b最大长度 let max=Math.max(a.length,b.length) // 取a,b长度差值 let dValue=Math.abs(b.length-a.length) // 计算当前和,判断是否进位 let currentSum=0 // 保存进位 let preSum=0 // 数组处理后转换成字符串返回 let backs=[].
2021-08-04 11:36:48
112
原创 leetcode58. 最后一个单词的长度(Javascript)
思路:用split方法切割字符串,再用循环从后向前扫描,一旦发现元素不为空(长度大于0),就返回该元素的长度,返回值就是最后一个单词的长度var lengthOfLastWord = function(s) {var sArr=s.split(" ")for(let i=sArr.length-1;i>=0;i--){if(sArr[i].length>0){return sArr[i].length}}return 0}...
2021-08-03 10:25:24
131
原创 leetcode20. 有效的括号(Javascript栈标准解法)
标准栈解法:判断括号的有效性可以使用「栈」这一数据结构来解决。我们遍历给定的字符串 ss。当我们遇到一个左括号时,我们会期望在后续的遍历中,有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个左括号放入栈顶。当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。如果不是相同的类型,或者栈中并没有左括号,那么字符串 ss 无效,返回 \text{False}False。为了快速判断括号的类型,我们可以使用哈希表.
2021-07-30 11:29:51
180
原创 leetcode14. 最长公共前缀(Javascript)
纵向扫描法:按照公共前缀的特征可知从数组中首个字符串的首个字母往第二个字符串的首个字符依次向下比较都会相等,如果不相等则公共前缀字母到此结束var longestCommonPrefix = function(strs) { // 横向扫描递归,纵向扫描// 理解好题目的意思,明确公共前缀有什么特点和最长有什么特点,可以得出什么条件let result=''if(strs.length===0){ return ''}else if(strs.length===1){ r.
2021-07-29 13:59:40
107
原创 leetcode463. 岛屿的周长(Javascript)
本题是经典的做题步骤,1.定义保存结果的变量。2.特殊情况处理。3.循环+分支(循环中需要处理特殊情况)得出结果var islandPerimeter = function(grid) {// 定义保存周长的变量let girth=0// 特殊情况处理if(!grid.length){ return 0}// 定义保存四个边长的变量let a=b=c=d=0// 循环+分支处理,周长就是从四个不同方向的投影长度for(let i=0;i<grid.length;i++)..
2021-07-23 14:16:10
185
1
原创 leetcode455.分发饼干(Javascript)
var findContentChildren = function(g, s) { // 定义能吃到饼干的孩子的数量 let num=0 // 特殊情况处理,任意数组长度为零直接返回0 if(!g.length||!s.length){return 0}g.sort((a,b)=>a-b),s.sort((a,b)=>a-b)// 循环处理(贪心算法,每次取局部最优解)for(let i=0,j=0;i<g.length&&j&l..
2021-07-23 11:30:01
218
2
原创 leetcode349+350.两个数组的交集I+II(Javascript实现)
349:时间复杂度O(n),空间复杂度O(n)输出结果中元素唯一,我们就可以用es6中的集合has方法,对nums1和nums2分别使用一次,最后将结果用Array.from变成数组返回/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */var intersection = function(nums1, nums2) {let arr1=new Set(nums1)let arr2
2021-07-21 10:42:48
92
1
原创 leetcode303. 区域和检索 - 数组不可变(Javascript实现)
个人感觉这一题对优化的思维模式锻炼很有帮助,从刷题到实战都有一定借鉴性,值得研究暴力解法:每次调用sumRange就去遍历数组中i->j并计算总和,缺点在于每一次调用sumRange都要遍历i->,多次调用时效率低** 优化思路(渐进式):1、初始化时先求出所有sumRange的和(每次调用sumRange就只要O(1)时间复杂度,但求出所有sumRange消耗较大),所以此方法有待优化。2、先求出所有前缀和,sumRange的结果只要用前缀和计算一次得出,求前缀和的消耗较小,且sumRan
2021-07-20 11:45:31
161
原创 leetcode228. 汇总区间(Javascript实现)
思路:两层while循环,内层遍历出数组中的不间断区间,添加到新的数组中并删除原数组被添加项,外层判断原数组是否已经为空,为空则退出循环,最后返回新数组,时间复杂度O(n),空间复杂度O(1),代码如下:/** * @param {number[]} nums * @return {string[]} */var summaryRanges = function(nums) {let currentIndex=0let backs=[]while(nums.length>0){w..
2021-07-20 10:04:26
167
原创 leetcode136. 只出现一次的数字(JS暴力解法+位运算解法)
暴力解法:时间复杂度O(n^2),额外用了O(1)的空间// 在原数组内删除重复项,再返回数组的第一项var singleNumber = function(nums) {for(let i=0;i<nums.length;i++){ if(i===nums.length-1) nums[nums.length-1] for(let j=i+1;j<nums.length;j++){ if(nums[i]===nums[j]){ //如果.
2021-07-16 10:34:53
252
原创 leetcode121. 买卖股票的最佳时机(JS虚拟内存不足写法,理论可行)
暴力解法:遍历出所有利润,保存到一个数组当中,再对数组进行排序,返回数组最大值,此方法理论可行,但是实际操作中会出现虚拟内存不足的报错,仅供学习/** * @param {number[]} prices * @return {number} */var maxProfit = function(prices) { let backs=[] if(prices.length<=1){ return 0 }for(let i=0;i<=pri..
2021-07-15 11:03:55
115
原创 leetcode118. 杨辉三角(JS实现)
观察可知每个嵌套数组中除首末两项之外(判断处理这两种特殊情况即可),中间的值都由上一个数组的当前索引项和前一索引项相加,例如:bakcs[3][1]=backs[2][1]+backs[2][0]或者bakcs[4][2]=backs[3][2]+backs[3][1],故可用双指针法得出算法:backs[i][j]=backs[i-1][j-1]+backs[i-1][j]/**@param {number} numRows@return {number[][]}*/var genera.
2021-07-15 09:58:06
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人