CodeSnippet

都快0202年了,还不会Linux 基础命令?

╄→гoц情女王★ 提交于 2021-02-17 13:56:41
前言 程序员: “我要跑路了,告诉我命令行是 rm -rf /* 的那个人你小心点。 ” “ rm -rf ” 引发的血案都在菜鸟程序员中经常出现,初初入行的前后端们基础不扎实。 容易出现没有图形用户界面 ( GUI )就无从下手,连部署应用都不会的尴尬局面。 窃以为,熟悉掌握 Linux 下的 Vim 和常用的命令是每个程序员的必修课。 而且,连微软都拥抱 Linux terminal ,推出了 Windows Terminal 。你还有 什么理由不学? 1. grep :查找文件中的关键字 $ grep "string" [选项] file 使用 grep 命令查找文件中的所有 React 关键字: -i 选项可以在文件中不区分大小写地搜索字符串。它匹配" REACT "," REact "和" react "等词。 $ grep -i "REact" file -c (count) 选项,可以找到给定字符串/模式匹配的行数 $ grep -c "react" index.js 更多的选项可以查看下图: 2. ls :列出当前路径中的文件和目录。 $ ls ls 列出当前路径中的文件和目录。 如果为文件夹,则显示成蓝色。 如果为文件,则显示成灰色 3. pwd : 显示工作目录 $ pwd 4. cat :查看文件的内容 $ cat somefile.js cat

AkShare-期货数据-外盘期货历史数据

天涯浪子 提交于 2021-02-17 07:30:34
作者寄语 提供外盘期货历史数据和合约详情数据,丰富外盘期货的数据接口,便利研究内外盘的联动性。 AkShare-更新记录 "futures_foreign_hist" # 获取新浪-外盘期货历史行情数据 "futures_foreign_detail" # 获取新浪-外盘期货合约详情 外盘-历史行情数据 接口: futures_foreign_hist 目标地址: https://finance.sina.com.cn/futuremarket/ 描述: 提供新浪财经-期货页面的外盘历史行情数据 限量: 单次返回指定品种的历史数据 输入参数 名称 类型 必选 描述 symbol str Y symbol="ZSD"; 外盘期货的 「symbol」 可以通过 「hf_subscribe_exchange_symbol」 获取 输出参数 名称 类型 默认显示 描述 date str Y 交易日 open float Y 开盘价 high float Y 最高价 low float Y 最低价 close float Y 收盘价 volume int Y 成交量 接口示例 import akshare as ak futures_foreign_hist_df = ak.futures_foreign_hist(symbol="ZSD") print(futures_foreign

AkShare-货币数据

送分小仙女□ 提交于 2021-02-17 06:48:37
作者寄语 这几天都在规范各种自动化工具和文档,今天更新一个货币接口,可以查询世界各种货币的实时价格、历史价格和货币对转换。做外汇的小伙伴可以关注下,目前本接口可以在原网站注册后免费试用 5000 次每月,大规模提取原网站就会收费。小规模自己使用的可以考虑下。更多正在开发中的数据接口,请访问 AkShare 查看。 AkShare-更新记录 "currency_latest" # 最新货币报价 "currency_history" # 指定历史日期的所有货币报价 "currency_time_series" # 指定日期间的时间序列数据-需要权限 "currency_currencies" # 查询所支持的货币信息 "currency_convert" # 货币换算 AkShare 货币数据 货币报价最新数据 接口: currency_latest 目标地址: https://currencyscoop.com/ 描述: 获取货币报价最新数据 限量: 单次返回指定货币的最新报价数据-免费账号每月限量访问 5000 次 输入参数 名称 类型 必选 描述 base str Y base="USD" api_key str Y api_key="Please put your api key here"; you can register currencyscoop, Gmail well

AkShare-指数数据-恐慌指数

℡╲_俬逩灬. 提交于 2021-02-15 10:57:25
作者寄语 最近美股跌宕起伏,全球经济也在 COVID-19 的冲击中风雨飘摇,更有甚者直言经济危机的到来。特此提供恐慌指数的分钟级别数据接口供小伙伴研究使用。 AkShare-更新记录 "index_vix" # 恐慌指数 指数数据 恐慌指数 接口: index_vix 目标地址: https://datacenter.jin10.com/market 描述: 获取恐慌指数-芝加哥期权交易所 VIX 指数(CBOE Volatility Index)的分钟级别数据 输入参数 名称 类型 必选 描述 start_date str Y start_date="2020-03-20"; 注意开始和结束之间的时间跨度不能太长 end_date str Y end_date="2020-03-27" 输出参数 名称 类型 默认显示 描述 日期时间 str Y 开盘价 float Y 当前价 float Y 涨跌 float Y 涨跌幅 float Y 数据解释 VIX全名是芝加哥期权交易所波动率指数(Chicago Board Options Exchange Volatility Index),用以反映S&P 500指数期货的波动程度,测量未来30天市场预期的波动程度,通常用来评估未来风险,因此它被称作“恐慌指数”。VIX指数虽然是反映未来30天的波动程度,却是以年化百分比表示

每日算法系列【LeetCode 312】戳气球

旧巷老猫 提交于 2021-02-09 20:06:59
题目描述 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。 求所能获得硬币的最大数量。 示例1 输入: [3,1,5,8] 输出: 167 解释: nums = [3,1,5,8] --> [3,5,8] --> [3,8] --> [8] --> [] coins = 3*1*5 + 3*5*8 + 1*3*8 + 1*8*1 = 167 提示 你可以假设 nums[-1] = nums[n] = 1,但注意它们不是真实存在的所以并不能被戳破。 0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100 题解 dfs+记忆化搜索 对于区间 [l, r] ,我们考虑最后一个被戳破的气球 k ,那么之前的步骤我们可以分为两步,也就是求 [l, k-1] 和 [k+1, r] 之间的最大分数。 那么为什么不考虑先戳破 k 呢?因为这样的话 [l, k-1] 和 [k+1, r] 就会连接在一起,两个子状态就不能独立计算了,互相会产生影响。

禅道管理工具是怎么使用的?

↘锁芯ラ 提交于 2021-02-08 14:52:57
这里我暂时只介绍了 测试人员 是如何提交BUG,详细使用禅道后台回复 禅道 即可获取周末小编精心准备的ppt哦 并且还有禅道安装包 禅道的来源 禅道是由青岛易软天创公司开发的一款项目管理软件。 特点是将软件研发中的产品管理,项目管理,质量管理三个核心流程融合在一套工具里面,是 一款软件生命周期管理工具。 轻量级实现,部署简单 开源,免费 禅道中的三权分立 基本流程如下: 1. 产品经理创建产品 2. 产品经理创建需求 3. 项目经理创建项目 4. 项目经理确定项目要做的需求 5. 项目经理分解任务,指派到人 6. 开发人员实现需求 7. 测试人员测试,提交bug。 禅道使用流程图 在禅道项目管理软件中,核心的角色有产品经理、项目经理、研发团队和测试团队四种角色。 禅道里面Bug的处理流程比较简单:流程一: 测试人员提交Bug ---> 开发人员解决Bug ---> 测试人员验证关闭 流程二: 测试人员提交Bug ---> 开发人员解决Bug ---> 测试人员验证未通过 ---> 激活 Bug ---> 重新解决 ---> 验证关闭。 1.确认BUG 当测试人员提交了bug之后,如果开发人员来不及解决这个bug,这时候可以先确认这 个bug,给测试人员一个反馈。 在BUG详情页点击【确认】按钮,确认后的BUG状态为【激活】 2.解决BUG 2.解决BUG 可以在bug列表点击【解决

【每日算法Day 94】经典面试题:机器人的运动范围

余生颓废 提交于 2021-02-03 02:32:47
最近在忙面试,本来今天都不想更了,但是看基础知识看的太累了,于是写道题排解一下压力。 题目链接 LeetCode 面试题13. 机器人的运动范围 [1] 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0, 0] 到坐标 [m-1, n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于 k 的格子。例如,当 k 为 18 时,机器人能够进入方格 [35, 37] ,因为 3+5+3+7=18 。但它不能进入方格 [35, 38] ,因为 3+5+3+8=19 。请问该机器人能够到达多少个格子? 示例1 输入: m = 2, n = 3, k = 1 输出: 3 示例2 输入: m = 3, n = 1, k = 0 输出: 1 说明: 1 <= n,m <= 100 0 <= k <= 20 题解 这道题没有什么算法,比较简单,主要考察你的代码实现能力,这里我写了两个方法,一个 BFS,一个 DFS。 BFS BFS 的思路就是用一个队列来保存即将要访问的结点,然后不断出队,将当前结点的四周的结点满足要求的入队。为了避免重复访问,可以用一个 vis 数组来标记已经访问过的结点位置。 DFS DFS 思路就更加清晰简单了,对于一个结点来说

RGB转YUV的一点小优化

和自甴很熟 提交于 2021-02-02 13:54:06
点击视界音你而不同关注我们! 搞音视频,相信RGB与YUV之间的转换,大家都不陌生。不过呢,由于这个转换的公式是浮点运算,再加上大量像素的密集型运算,导致对资源的消耗比较大,进而效率需要进一步的提升。 本文就简单看看有哪些方式可以做优化。 一、公式本身的优化 首先我们来看看,RGB转YUV的公式: Y = 0.299*R + 0.587*G + 0.114*B; U = -0.169*R - 0.331*G + 0.5 *B ; V = 0.5 *R - 0.419*G - 0.081*B; 观察一下,都是浮点型的运算,我们都知道浮点型的乘法运算,在计算机内部要经过阶码和尾数的运算,相对耗时。 如果我们能将浮点运算去掉,就可以实现这个目标了。 于是,我们可以通过数学上的一些变换,将浮点运算变换为整数运算。 变换过程如下: Y = 0.299*R + 0.587*G + 0.114*B = 128 * (0.299*R + 0.587*G + 0.114*B) >> 7 = ( 38 * R + 75 * B + 15 * B) >> 7; PS: U和V同理转换,放大后的数值采取四射五入的方式。 经过如此转换,浮点运算就变成了整数乘法和位移运算,而位移运算,效率很高,整数乘法的运算也会较浮点运算的效率高些,所以,此方法是可取的。 二、从单挑到群殴 由于音视频数据的处理

Jenkins 共享库使用示例

寵の児 提交于 2021-01-14 17:22:28
如果你经常使用 Jenkins Pipeline 一定会遇到多个不同流水线中有大量重复代码的情况,很多时候为了方便我们都是直接复制粘贴到不同的管道中去的,但是长期下去这些代码的维护就会越来越麻烦。为了解决这个问题,Jenkins 中提供了共享库的概念来解决重复代码的问题,我们只需要将公共部分提取出来,然后就可以在所有的 Pipeline 中引用这些共享库下面的代码了。 共享库是什么? 共享库(shared library)是一些 独立的 Groovy 脚本的集合 ,我们可以在运行 Pipeline 的时候去获取这些共享库代码。使用共享库最好的方式同样是把代码使用 Git 仓库进行托管,这样我们就可以进行版本化管理了。当然我们也需要一些 Groovy 语言的基础,不过并不需要多深入,基本的语法概念掌握即可,可以查看前面我们的 Groovy 简明教程 。 使用共享库一般只需要3个步骤即可: 首先创建 Groovy 脚本,添加到 Git 仓库中 然后在 Jenkins 中配置将共享库添加到 Jenkins 中来 最后,在我们的流水线中导入需要使用的共享库: @Library ( 'your-shared-library' ) ,这样就可以使用共享库中的代码了。 共享库内容 在共享库中一般会有两种通用的代码: Steps :这些 Steps 在 Jenkins 中被称为 全局变量

拇指射箭 ! Cocos Creator 3D !

拜拜、爱过 提交于 2021-01-10 07:25:05
拇指射箭!你能射中靶心么? 效果预览 配置环境: cocos creator 3d v1.0.0 玩法介绍: 长按屏幕,拖动瞄准,放手发射。风向、重力和距离影响最终结果!越靠近中心得分越高!最高分10分! 实现原理 流程图: 镜头控制: 采用两个摄像机控制镜头显示。一个是发射视角的摄像机;另一个是绑定在箭节点的摄像机,会跟随箭一起移动。通过控制摄像机节点的 active 实现镜头切换。 弓箭控制: 通过触摸移动的距离乘以一个调控系数,控制弓箭的位置。 private onTouchMove(touch: Touch) { const delta = touch.getDelta(); this .NodePos_bows.x -= delta.x * CONST_TOUCH_FACTOR; this .NodePos_bows.y += delta.y * CONST_TOUCH_FACTOR; } 为所有需要控制位置的节点写了一个通用的组件脚本。只要为节点添加这个脚本,就可以通过设置 x,y,z 调整位置。 export class NodePos extends Component { private _curPos: Vec3 = cc.v3(); start() { this ._curPos = this .node.position; } get x() {