• 扁平数组和树形结构的相互转换
    1、ArrayToTree // 有时候叫fatherId,有时候叫parentId,为了写成通用的,把父节点ID写成一个变量,用的时候直接传进来,ES6支持Object的key为变量 function arrToTree(list, parentKey) { let map = {}; let tree = []; for (let i = 0; i < list.length; i++) { map[list[i].id] = list[i]; list[i].children = []; } for (let i = 0; i < list.len...
    zhyim2021-05-12
     13 0 0
  • 关于JS中一些重要的api实现
    一、用ES5实现数组的map方法 核心要点: 1.回调函数的参数有哪些,返回值如何处理。 2.不修改原来的数组。 Array.prototype.MyMap = function(fn, context){ var arr = Array.prototype.slice.call(this);//由于是ES5所以就不用...展开符了 var mappedArr = []; for (var i = 0; i < arr.length; i++ ){ mappedArr.push(fn.call(context, arr[i], i, this)); } return...
    void2021-05-10
     19 0 0
  • 二分查找实力分析
    二分查找可以说是所有算法中最基础、最容易理解的算法之一了,但事实上也是挂科率最高的考题之一,在各个大厂的应届生面试中,这样的评价屡见不鲜: 谈项目的时候来聊的好好的,叫他写个二分搜索却写不出来。对此我不做评论,就二分查找而言,我觉得它并没有大家想象那样容易,用“思路很简单,细节是魔鬼”来形容最贴切不过了,不信咱们来一步步瞧一瞧。 难点一: 边界判断 二分查找代码大致如下: let binarySearch = (arr, target) => { let begin = 0; let end = ???; while(???) { int mid = b...
    void2021-05-10
     22 0 0
  • V8 引擎垃圾内存回收原理
    V8 内存限制 在其他的后端语言中,如Java/Go, 对于内存的使用没有什么限制,但是JS不一样,V8只能使用系统的一部分内存,具体来说,在64位系统下, V8最多只能分配1.4G, 在 32 位系统中,最多只能分配0.7G。你想想在前端这样的大内存需求其实并不大,但对于后端而言,nodejs如果遇到 一个2G多的文件,那么将无法全部将其读入内存进行各种操作了。 我们知道对于栈内存而言,当ESP指针下移,也就是上下文切换之后,栈顶的空间会自动被回收。但对于堆内存而言就比较复杂了,我们下面着重分析 堆内存的垃圾回收。 所有的对象类型的数据在JS中都是通过堆进行空间分配的。当我们构造一个对象进行...
    void2021-05-10
     17 0 0
  • nginx 部署 vue 项目找不到js css文件的解决方法
    Vue项目,npm run build 之后生成dist文件夹,包括index.html和webpack 自动插入的 js 文件 css 文件,部署到Nginx后,打开网页不报错,打开调试工具会显示js和css文件404,Nginx配置如下: server { listen 80; server_name my.server.name; include /etc/nginx/default.d/*.conf; location / { root /var/www/html/xxx/admin/dist/;...
    zhyim2021-05-10
     28 0 0
  • 记录App支付遇到的坑,全面解析(微信支付签名失败(2次签名))
    最近公司有个项目,包括App、公众号、pc端、小程序,都涉及到了微信、支付宝支付,在此过程中花了两天时间把踩到的坑记录在此,便于后来人少走弯路。 目前只把微信支付接完了,后续会持续更新其他几端遇到的坑以及解决方案。我用的是 netcore3.1 1:App支付 第一次签名(统一支付,获取预支付id) 注意点 所有必填参数一定要按照文档实例的顺序来,下方为我的参数,一定要注意下方的参数顺序, appid、attach、body(可选)、mch_id、nonce_str、notify_url、out_trade_no、spbill_create_ip、total_fee、trade_type、si...
    三年2021-05-08
     67 0 0
  • 小程序之主动推送消息(订阅消息)
    微信的东西,第一次玩,记录下全过程,略过申请小程序步骤 1:配置类目,建议在申请小程序的时候多选几个类目,类目越多,可选的消息模版越多,修改地址(传送门 路径: 设置-基本设置-服务类目) 2:设置推送消息模版 地址:传送门 选择公共模版,这一步与上一步选择的类目相关。 3:配置服务器域名+消息推送 地址:传送门 1):服务器域名配置: 路径:开发-开发设置-服务器域名,前四个都填写(注意需要80或443端口),如下图 2):代码编写:此步骤是为了给微信服务器提供验证用,就是说我们要写一个接口(GET方式),给微信调用,具体参数如下 文档地址:传送门 参数 描述 signatu...
    三年2021-05-08
     22 0 0
  • 微信公众号-分享功能
    话不多说直接上代码 1、获取access_token string appId ="1122334455";//公众号对应的appid string appSecret = "aaabbccdd";//公众号对应的密钥 查看地址:公众号-开封-基本配置 string tokenUrl = $"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appId}&secret={appSecret}"; var tokenResult = HttpHelper.RequestHttpClient(to...
    三年2021-05-08
     17 0 0
  • 记一次微信公众号支付遇到的坑
    一个月前接入了微信的app支付、公众号支付、pc支付,虽不是一路顺畅,但也能很快解决到各种坑,这其中少不了各位前辈踩坑之后的忠告,感谢这些前辈们 /抱拳。 然而。。。仅仅是过了一个多月,再一次接入微信公众号支付,特么的竟然卡住了大半天!!!真的就是大半天。 之前用的是vue,后端把前端需要调起支付窗口的参数传给前端,前端调起,一路顺畅,这次我用的是html,对,就是html!!话说我这不是自虐么,为何要用html。。言归正传,签名在微信提供的验签工具中测试没毛病,接下来就是调起窗口了,前端一直报"当前url未注册",很奇怪,如果是参数大小写有误不是这个错误,应该报签名错误,于是翻找各种资料,最...
    三年2021-05-08
     20 0 0
  • 微信小程序分享获取二维码
    很不幸,本以为前段时间顺利接入了公众号分享功能,感觉很简单,然而当接入小程序的分享功能时。。 也不算很麻烦,具体步骤如下 1:获取全局access_token 2:通过access_token调微信接口获取到数据流并转为byte 此时,如果你也是按照上述方式做的,十有八九会报错,如下: (如何查看错误?,见第二张截图debugger的地方,如下图) 你会惊奇的发现,这里藏着错误(这样上述代码可以加个判断了,一眼就能看到错误消息)。 分享报错41030,注意此错误可能由于以下两点导致 1:小程序未发布 2:参数page路径错误,"page":"pages/Home/index" 或 "page"...
    三年2021-05-08
     20 0 0