- 博客(30)
- 收藏
- 关注
原创 解决 adb shell input text 无法中文的问题
背景使用 adb 在手机上进行模拟发布评论的操作时,需要在文本框中文,但是 adb shell input 中文文本 无法正常工作。解决办法前往 https://github.com/senzhk/ADBKeyBoard ,页面最下方有个可以下载 apk 的地址下载好后,执行 adb install {apk的所在路径} 安装 apk输入法管理里面勾上 ADB keyboard设置当前输入法为选择 ADB keyboard测试使用命令 adb shell am broadcast -a
2020-11-05 16:58:01
2811
原创 股票爬虫与推送的Py实践
最近股市异常火爆,竟然有一股牛屎的味道!背景最近和朋友一起,实现一个简易地对于指定策略的股票的筛选的功能,并且能够实时推送。由于 爱问财 能够根据一些指定的策略,对当前的股票进行实时的筛选,其筛选策略可以直接在某花顺APP上直接使用,于是准备对其进行爬虫。主要功能点股市开市后,实时地从 爱问财 网上爬取指定策略的股票。爬虫使用 selenium 来实现爬取到股票后,进行本地化存储,并且能够推送新增进来的股票【推送使用微信】。微信推送使用 wxpy 来实现代码#!/usr/bin/
2020-07-10 21:41:10
416
原创 Git 分支重命名 git rename branch
在项目开发过程中,有时会涉及到 分支的重命名,那么当本地的开发分支还没有推送到远程分支的时候,会在本地进行分支的重命名:重命名本地分支在当前分支时git branch -m new_branch_name当不在当前分支时git branch -m old_branch_name new_branch_name如果是已经推送到远端,应该怎么做呢?重命名远端分支(假设是在当前分支,并且远端分支与本地分支名是一致的)重命名本地分支git branch -m new_branch_
2020-07-03 22:26:54
41449
原创 LeetCode 840. 矩阵中的幻方(Javascript)
题目3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。给定一个由整数组成的 grid,其中有多少个 3 × 3 的 “幻方” 子矩阵?(每个子矩阵都是连续的)。示例:输入: [[4,3,8,4],[9,5,1,9],[2,7,6,2]]输出: 1解释:下面的子矩阵是一个 3 x 3 的幻方:438951276而这一个不是:384519762总的来说,在本示例所给定的矩阵中只有一个 3 x 3
2020-07-02 20:27:31
215
原创 LeetCode 532. 数组中的K-diff数对(Javascript)
题目给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对。这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k.示例 1:输入: [3, 1, 4, 1, 5], k = 2输出: 2解释: 数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。尽管数组中有两个1,但我们只应返回不同的数对的数量。示例 2:输入:[1, 2, 3, 4, 5], k = 1输出: 4解释:
2020-07-01 21:03:04
138
原创 LeetCode 605. 种花问题(Javascript)
题目假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出: True示例 2:输入: flowerbed = [1,0,0,0,1], n = 2输出
2020-07-01 00:50:33
298
原创 LeetCode 219. 存在重复元素 II(Javascript)
题目给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3], k = 2输出: false思路遍历数组依次取 nums[i],并与其后
2020-06-30 22:31:22
134
原创 LeetCode 面试题 16.04. 井字游戏(Javascript)
题目设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" ",“X"和"O"组成,其中字符” "代表一个空位。以下是井字游戏的规则:玩家轮流将字符放入空位(" “)中。第一个玩家总是放字符"O”,且第二个玩家总是放字符"X"。"X"和"O"只允许放置在空位中,不允许对已放有字符的位置进行填充。当有N个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,对应该字符的玩家获胜。当所有位置非空时,也算为游戏结束。如果游戏结束,玩家不允许再放置字符。如
2020-06-30 13:21:43
572
原创 LeetCode 119. 杨辉三角 II(动态规划)(Javascript)
题目给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?思路用动态规划的思路对比新的一行的数据与上一行新增末尾一项值为 1j 指向当前行的第几项,除了第一项与最后一项外,第 rows[j] 项的值等于 rows[j] + rows[j - 1]代码/*** @param {number} rowInd
2020-06-29 23:11:45
106
原创 LeetCode 914. 卡牌分组(Javascript)
题目给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,1,1,2,2,2,3,3]输出:false解释:没有满足要求的分组。示例 3:输入:[1]
2020-06-29 17:28:11
147
原创 求解最大公约数(Javascript)
在刷 leetcode 时遇到需要求解最大公约数的问题,记录一下,主要有两种处理方式:一、欧几里得算法欧几里德算法 又称 辗转相除法,计算公式为 gcd(a,b)=gcd(b,a mod b)gcd(a,b) = gcd(b,a \bmod b)gcd(a,b)=gcd(b,amodb)示例求 357, 935 的最大公约数----------- 开始 ---------=> (357, 935)357 ÷ 935 = 0(余357)=> (935, 357)935 ÷ 35
2020-06-29 17:27:21
585
原创 Leetcode 118. 杨辉三角(Javascript)
题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]思路除了第一行外,所有行的第一列与最后一列的值都为 1第 i 行第 j 列的值等于第 i - 1 行里面 j 与 j + 1 所在列的值之和代码/*** @param {number} numRows* @return {numbe
2020-06-28 21:12:03
141
原创 LeetCode 665. 非递减数列(Javascript)
题目给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:输入: nums = [4,2,1]输出: false解释: 你不能在只改变一个元素的情
2020-06-27 15:26:18
135
原创 LeetCode 88. 合并两个有序数组(Javascript)
题目给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]思路(双指针
2020-06-25 21:49:29
736
原创 LeetCode 66. 加一(Javascript)
题目给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路末尾数字加 1 ,接着从末尾开始向前判断如果数字等于 10 的话,那么当前数字变为 0 ,并且
2020-06-24 20:04:14
156
原创 LeetCode 53. 最大子序和(Javascript)
题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路代码复杂度分析...
2020-06-23 21:23:02
136
原创 LeetCode 121. 买卖股票的最佳时机(Javascript)
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
2020-06-21 20:39:32
258
原创 LeetCode 35. 搜索插入位置(Javascript)
题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路一(用 Javscript 方法实现)首先用 indexOf 获取 target 在数组中
2020-06-20 10:54:04
187
原创 LeetCode 27. 移除元素(Javascript)
题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,
2020-06-19 22:15:22
180
原创 LeetCode 26. 删除排序数组中重复项(Javascript)
题目给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并
2020-06-19 20:28:05
220
原创 LeetCode 1. 两数之和(Javascript)
题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]代码/** * @param {number[]} nums * @param {number} target * @re
2020-06-18 20:24:10
126
原创 提交代码前对提交内容进行校验
目标在项目中,添加代码提交到git仓库前的eslint的检查和对git commit message的检查。背景具体的eslint规则参考之前写过的一篇博文目前项目主要借鉴业内使用最为广泛的 Angular Message 规范由于项目体积比较庞大,代码检查时只需要检查有变更代码的文件安装依赖npm install husky lint-staged @commitlint/cli @commitlint/config-conventional -D添加commitlintcommi
2020-06-17 22:01:17
1303
原创 前端大数精度丢失的问题
问题描述与公司后端对接接口时,发现后端的一个定义为Long类型的数字的ID,返回到前端的时候,想通过这个ID去查询数据的时候发现查不到指定ID的数据,后来才发现是数字的精度丢失了。比如:当传递的数据是20200615171812341,到前端展示的时候就变成了20200615171812340。产生原因Javascript在对数字进行存储的时候使用了IEEE 754中规定的双精度浮点数的数据结构,安全的存储空间在 -2^53^ - 1 到2^53^ - 1,数字范围从-900719925474099
2020-06-16 23:16:04
1350
原创 vue项目集成eslint
VUE项目集成eslint公司已经开发上线了一年的项目,最近需要集成eslint对代码进行检查优化,提高代码提交的质量,现进行了一下总结。简介前端工具考 - ESLint 篇安装eslint相关的依赖npm install eslint babel-eslint eslint-loader eslint-friendly-formatter eslint-plugin-html -D项目中添加文件.eslintrc.js// .eslintrc.jsmodule.exports = {
2020-06-15 17:03:48
936
原创 Git 批量删除远程无用分支
今天项目迁移,需要在git仓库上进行批量删除远程没有用的分支,只保留几个有用分支,查阅了一些资料,整理操作方法如下导出所有的分支git branch -a > branches.txt接着在branches.txt文件中删除我们需要保留的分支,批量替换掉remotes/origin/的文本生成脚本文件touch branches.shchmod 777 ./branches.sh键入脚本内容cat ./branches.txt | while read linedo
2020-05-18 14:54:50
666
原创 数字转千分位正则表达式
数字转千分位正则表达式function format(number){ //var reg = /(\d{1,3})(?=(\d{3})+(\.(\d)*$))/g; var reg =/(\d{1,3})(?=((\d{3}))+(\.\d*)?$)/g;//这个更棒 return (number.toFixed(2) +'').replace(reg,'$&,');}console.log(format(12345678.123));//=>12,34
2020-05-11 20:47:35
983
原创 axios 0.18升级至0.19.0后,自定义参数被过滤掉
axios 0.18升级至0.19.0后,自定义参数被过滤掉在项目里面有类似于这样的请求,在axios请求上添加了一个type属性,比如type: 'download'用以统一处理下载相关的请求,在0.18版本上可以正常使用,代码像如下这样export function downloadFile(params) { /** * 下载文件 */ return request(...
2020-05-06 17:34:19
1749
原创 JavaScript事件对象.
JavaScript事件对象任何一个事件机制被触发时,都会产生一个事件对象,它记录事件发生的详细信息。比如触发事件的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态等。利用事件对象,可以对用户的操作进行个性化的响应,提供更优质的用户体验。触发不同的事件产生的事件对象所包含的信息会有所不同,比如以下是事件对象中常用的关于鼠标的一些属性和方法:属性描述altKey返回当事件...
2020-05-03 21:15:29
153
原创 Js事件分发与DOM事件流
Js事件分发与DOM事件流对JavaScript分发事件不熟悉,网上查阅相关资料整理后,记录一下对Javascript事件分发机制相关的知识。当触发某个事件时会相应生成一个事件对象,而这个事件对象则会根据DOM事件流的方向进传递,看下图:事件对象会随着DOM事件流从Window依次向下,最终传递给事件目标。但是在这个过程开始之前,事件对象的传递路径需要先被确定下来。这个传递路径是一个有序...
2020-04-29 17:31:39
233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人