两数求和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 方法1:暴力循环法 我第一印象就想用这种方法解决,这种时间复杂度高,肯定不行。我先实现下。 //go func twoSum(nums []int, target int) []int { for i := 0; i <len(nums); i++ { for j := i+1; j <len(nums); j++ { if nums[i] + nums[j] == target { return []int{i, j} } } } return nil } #python class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i in range(0,len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: return [i, j] 方法二:求两个数字的和是target,反过来判断,如果target减去一个值,判断另一个在列表中位置

报错:CEPH初始化mon服务出错,mon.ceph02 monitor has reached quorum!

报错:在初始化mon服务的时候出现: [ceph_deploy.mon][INFO ] mon.ceph02 monitor has reached quorum! [ceph_deploy.mon][ERROR ] Some monitors have still not reached quorum: [ceph_deploy.mon][ERROR ] ceph01 分析: 看到这个报错基本上是由于hosts文件的问题,因为ceph在初始化mon服务的时候需要用到hosts文件,进行交互。 处理: 检查/etc/hosts文件和主机名是否一致,若无问题则再次执行:ceph-deploy mon create-initial

golong实现服务端浏览器截屏

笔者说:近期在使用golang进行开发工作时,受360技术公众号曾发布过文章的启发,想到是否可以使用golang操作无屏浏览器(headless browser)实现诸如爬虫、截屏、自动化测试等功能。 经过调研和测试,发现golang实现也是很好的一种选择。 背景 360技术公众号曾经发布过一篇文章《服务端浏览器截屏》,文章中对基于Selenium(Python SDK)实现的服务端截屏技术进行了详细讲解,可操作性非常强。 我曾使用Python+Selenium实现过爬虫和简单的自动化测试功能,对上面文章中使用的技术和组件都有涉及,我认为初学者完全可以通过该文章手把手的教学,实现服务端截屏功能。 不过基于Selenium的截图实现存在如下一些缺点: 需要安装Selenium或是PhantomJS PhantomJS已经停止维护了 Selenium的运行需要安装chromedriver chromedriver对chrome的版本有一定要求 截图时需要使用html2canvas JS库 可见,整体环境的搭建(包括各个软件之间版本的匹配),还是需要花费不少时间和精力适配并测试的。因此原文章作者在上述文章的最后也提供了“集成Docker”的方案,在上述环境docker化后,可以解决环境部署的问题。 而基于golang实现的方案,可以完美解决上述问题。该方案对运行时环境的要求为仅安装chrome浏览器即可。 无屏浏览器 Headless browser是浏览器的无界面形态,可以在不打开浏览器的前提下,使用所有浏览器支持的特性,例如:获取HTML,执行Javascript,渲染目标网页,获取cookie等。 本文主要使用的是headless chrome,下文提到的“浏览器”均代指headless chrome。 主要框架 为了方便地在golang程序里使用headless chrome,需要借助一些开源框架。实现headless chrome交互的库有很多,笔者经过对比后选择了chromedp。 chromedp的主要特点有: 提供了更快,更简单的方式来驱动浏览器 提供了丰富的底层API接口(基于CDP协议——Chrome Debugging Protocol) 提供了灵活的上层API接口(Actions & Tasks),类似Selenium的WebElement actions 除了浏览器本身,没有任何外部依赖 (如Selenium, PhantomJS等) “一次编译,随处拷贝,到处运行”(基于golang的特性) 实现 安装 go get -u github.com/chromedp/chromedp 截图实现代码 package main import ( "context" "io/ioutil" "log" cdp "github.com/chromedp/chromedp" ) func main() { // 创建新的cdp上下文 ctx, cancel := cdp.NewContext(context.Background()) defer cancel() // 此处以360搜索首页为例 urlstr := `https://www.

Recipe terminated with error. Retry building the project.

Recipe terminated with error. Retry building the project. 在vscode中运行latex中出现此错误时,但之前又输入正常 首先检查文件是否保存在有中文路径中 试着将文件更换一下存储位置后再运行; 如更换位置依然不能正常运行 则检查自己的设置是不是出现问题! GET 麻烦动动您金手指点点赞 😃

i.MX6ULL开发板【终结者】硬件资源说明

1.1 初识 L i.MX6ULL 终结者开发板 终结者开发板 迅为i.MX6ULL 终结者开发板硬件资源非常丰富,几乎将 i.MX6ULL 芯片的所有资源都扩展引出到底板上了, 底板提供了丰富的外设接口,开发板的尺寸是 190mm*125mm,充分考虑了人性化设计,整体显得十分大 气。 I.MX6ULL 终结者底板板载资源如下: 1.邮票孔核心板接口,支持迅为电子的 i.MX6UL/i.MX6ULL 核心板。 2.一个电源指示灯(红色) 3.一个状态指示灯(红色) 4.板载 Wifi/蓝牙二合一模块 5.一个 USB OTG 接口 6.两路 USB HOST 接口 7.板载 Mini PCIE 4G 模块接口 8.一路 CSI 摄像头接口 9.一路 RS485 接口 10.两路 CAN 接口 11.一路 Mini USB 接口(调试串口) 12.一个用户按键 13.一个复位按键 14.一个开关机按键 15. 一个有源蜂鸣器 16. 两路 10M/100M 自适应以太网 17. 一路标准 TF 卡接口 18. 一个 EEPROM 存储 19. 标准 3.5mm MIC 耳机接口

BAD_POOL_CALLER蓝屏故障

前天上午下载微信,没有仔细看就直接下载了,结果捆绑着下载了电脑管家。从那时起,电脑时不时就会出现蓝屏。 然后我就尝试把微信和电脑管家删除,结果电脑管家怎么都删不去,每次删到中途就又出现蓝屏。 后来去尝试了好几种百度的办法,都没有用。最后找到了 解决办法: 1、进入安全模式:windows+R输入msconfig进入,选择引导 --> 安全引导 ,点击确定,点击重新启动。 2、然后在安全模式下,对电脑管家进行删除,接着就好了。

算法与数据结构学习(46)-B树、B+树和B*树

B树的介绍 B-tree树即B树,B即Balanced,平衡的意思。有人把B-tree翻译成B-树,容易让人产生误解。会以为B-树是一种树,而B树又是另一种树。实际上,B-tree就是指的B树。 前面已经介绍了2-3树和2-3-4树,他们就是B树(英语:B-tree 也写成B-树),这里我们再做一个说明,我们在学习Mysql时,经常听到说某种类型的索引是基于B树或者B+树的,如图: B树的说明: B树的阶:节点的最多子节点个数。比如2-3树的阶是3,2-3-4树的阶是4 B-树的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点 关键字集合分布在整颗树中, 即叶子节点和非叶子节点都存放数据. 搜索有可能在非叶子结点结束 其搜索性能等价于在关键字全集内做一次二分查找 B+树的介绍 B+树是B树的变体,也是一种多路搜索树。 B+树的说明: B+树的搜索与B树也基本相同,区别是B+树只有达到叶子结点才命中(B树可以在非叶子结点命中),其性能也等价于在关键字全集做一次二分查找所有关键字都出现在叶子结点的链表中(即数据只能在叶子节点【也叫稠密索引】),且链表中的关键字(数据)恰好是有序的。不可能在非叶子结点命中非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层更适合文件索引系统B树和B+树各有自己的应用场景,不能说B+树完全比B树好,反之亦然. B*树的介绍 B树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针。 **B树的说明:** B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3,而B+树的块的最低使用率为B+树的1/2。从第1个特点我们可以看出,B*树分配新结点的概率比B+树要低,空间使用率更高

PAT甲级真题目录(按题型整理)

原文链接: PAT甲级真题目录(按题型整理) 最短路径 1003. Emergency (25)-PAT甲级真题(Dijkstra算法)1018. Public Bike Management (30)-PAT甲级真题(Dijkstra + DFS)1030. Travel Plan (30)-PAT甲级真题(Dijkstra + DFS,输出路径,边权)1087. All Roads Lead to Rome (30)-PAT甲级真题-Dijkstra + DFS1111. Online Map (30)-PAT甲级真题(Dijkstra + DFS) 树的遍历 1004. Counting Leaves (30)-PAT甲级真题(bfs,dfs,树的遍历,层序遍历)1020. Tree Traversals (25)-PAT甲级真题1053. Path of Equal Weight (30)-PAT甲级真题(树的遍历)1079. Total Sales of Supply Chain (25)-PAT甲级真题(dfs,bfs,树的遍历)1086. Tree Traversals Again (25)-PAT甲级真题1090. Highest Price in Supply Chain (25)-PAT甲级真题 1094. The Largest Generation (25)-PAT甲级真题(bfs,dfs,树的遍历) 1102. Invert a Binary Tree (25)-PAT甲级真题

远程Linux上快速下载Kaggle资源到百度网盘中的方法

安装anaconda,参考 安装kaggle API:linux:pip install --user kaggle vim /etc/profile,文件末尾添加PATH=/root/.local/bin:$PATH export PATH source /etc/profile linux命令行下输入:kaggle,会自动创建/root/.kaggle 获取密钥文件:进入你自己的kaggle账户(my account),在API一栏,选择create New API Token。此时会自动下载一个kaggle.json文件,里面为密钥内容。 将kaggle.json这个文件拷贝到~/.kaggle里面。 使用kaggle下载数据集:比如往届竞赛数据集kaggle competitions download -c facebook-v-predicting-check-ins 等待下载,速度非常快。 下载成功到linux本地。 如何从远程Linux下载到本地,借助百度云盘,参考。

HTTP Status 500 - java.lang.NullPointerException

HTTP Status 500 - java.lang.NullPointerException type Exception report message java.lang.NullPointerException description The server encountered an internal error that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: java.lang.NullPointerException org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause java.lang.NullPointerException org.apache.jsp.index_jsp._jspService(index_jsp.java:87) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 解决办法: 先将下边的项目remove-》Tomcat右击-》-clean OK!!! 俺的error是这个,不是的快跑,别和别的哥们一样看了博客error反而多了哈哈。 出现错误首先看看你的工程是否是复制的时候粘贴错了 我的就是一直瞎忙活 note The full stack trace of the root cause is available in the Apache Tomcat/8.0.14 logs. Apache Tomcat/8.0.14

华大单片机-替代STM8S003F3的国产华大HC32F003资源对比-芯虎论坛

华大单片机(HDSC)HC32F003与STM8S003F3单片机封装管脚兼容,可以对STM8S003F3进行替换,近期由于全球疫情的影响,意法的产能极不稳定,而且供求关系必然导致成本的提高。优势在于替换时不需要对电路板进行改动可直接焊接替换。华大单片机还有如下特点:  主流的内核架构:Cortex-M0+架构;  更大的空间:16/32K Bytes Flash、2/4K Bytes RAM;  更快的速度:32MHz主频,1MSPS 12bits ADC采样,16Mbit/s SPI通讯,1Mbit/s I2C通讯;  更大的数据存储空间:32K Bytes都可以用来做数据存储;  更可靠的运行:具有低电压监测功能;  方便的开发环境:IAR、Keil MDK环境中都可开发;  方便的调试工具:支持J-link在线仿真调试; 出自“芯虎论坛”http://www.tigerchip.com.cn/forum.php?mod=viewthread&tid=353&extra=

无法找到模块“react-vcode”的声明文件。“e:/atscloud-show-uide_modules/react-vcode/dist/index.js”隐式拥有 "any" 类型。

昨天想写一个验证码的功能,当安装并引入’react-vcode‘之后,出现了下面的错误提示: 无法找到模块“react-vcode”的声明文件。“e:/atscloud-show-uide_modules/react-vcode/dist/index.js”隐式拥有 "any" 类型。 Try npm install @types/react-vcodeif it exists or add a new declaration (.d.ts) file containing declare module 'react-vcode';ts(7016) 解决方案: 在项目根目录下新建一个declaration.d.ts文件,内容如下: 再引用就不会报错了:

Servlet中@WebServlet("XXXX")注解无效,访问servlet报404错误

tomcat正常启动,页面正常运行,当访问servlet时出现无响应的情况,控制台报错404,未访问到servlet。 因为web-app标签3.0以上版本才可以使用servlet的注解的,这是必要条件。如果web-app版本低于3.0。 解决办法是重建项目的时候选择3.0以上的版本 别的错误点这个

eclipse开发servlet,HttpServletRequest报红叉解决方案

解决方法:鼠标右击项目工程——》Build Path——》点击comfigure Build Path进入----->选择java Bulid Path------>在左边点击Libraries---------》选择Add Library中选择Server Runtime----》点击下一步Next----》选择Apache Tomcat(俺的是8.0),点击完成。 在Libraries下可以看到Apache Tomcat了就可以点击ok按钮,完活!

爬虫Jsoup设置代理

公司局域网无法访问外网,需要配置代理,否则连接超时: package fun.ticsmyc.util; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.IOException; import java.net.Authenticator; import java.net.InetSocketAddress; import java.net.PasswordAuthentication; import java.net.Proxy; import java.util.Random; public class JsoupDemo { // 代理隧道验证信息 final static String ProxyUser = "yunfeng.li"; final static String ProxyPass = "N@601910259095"; // 代理服务器 final static String ProxyHost = "proxy.neusoft.com"; final static Integer ProxyPort = 8080; // 设置IP切换头 final static String ProxyHeadKey = "Proxy-Tunnel"; public static Document getUrlProxyContent(String url) { Authenticator.setDefault(new Authenticator() { @Override public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(ProxyUser, ProxyPass.

短短1天我学会了如何修改Butterfly的配置文件

欢迎访问我的个人博客,传送门。 目录 一、修改默认语言 二、创建标签、分类、关于和留言版页面 三、添加搜索框 四、飘带背景 五、使用Valine添加评论功能并支持邮箱提醒 六、收录谷歌、百度 一、修改默认语言 说明:安装Butterfly主题后,在浏览器显示的是英文,可以修改_config.yml配置文件变为中文。 cd blog/ //进入安装Hexo框架的目录 vim _config.yml 找到language并将其修改为 zh-CN 修改后使用命令:hexo clean、hexo g、hexo d 上传主题,验证是否修改成功。 注意: ①上传后并不能马上修改完成,需要一段反应时间(大概两分钟)。 ②修改后顶部仍为英语,修改方法: vim themes/Butterfly/_config.yml //如果未移动主题配置文件 vim source/_data/butterfly.yml //移动了文件 修改为中文: 再次上传后效果: ③若想屏蔽顶栏中的某一项(例如:娱乐),可以直接在主题配置文件中的对应文字前加 ' # ' 。 如果有更好的方法请留言、评论,谢谢! 二、创建标签、分类、关于和留言版页面 说明: 创建标签等链接入口后,点击仍会报404,因为我们还需要创建对应的页面。 创建方法: 1、标签页: 命令行输入:hexo new page tags 修改:source/tags/index.md文件 --- title: 标籤 date: 2018-01-05 00:00:00 type: "tags" --- 截图: 2、分类页: 命令行输入:hexo new page categories 修改source/categories/index.md文件 --- title: 分类 date: 2018-01-05 00:00:00 type: "

在java中哈希表判断某个元素是否存在的原理

在java中哈希表判断某个元素是否存在的原理 在本文中我们将介绍,在hash表中如何判断两个元素是否重复。 首先,我们们需要知么hash表是什么? Hash表由称为离散表,是由数组加链表实现的一种数据结构。 在我们向hash表中存储数据时: 首先,使用hashCode方法,算出这个该元素的hash码,得到应该是在数组哪个下标指向的链表中,然后使用equals方法判断该链表中是否存在相同元素,如果没哟创建一个节点将元素添加到该链表中。 由此可以得到,我们想要判断一个元素在hash表中是否存在时的步骤: 1.先比较俩个元素的hashCode值,相同执行2,不相同执行3 2.两个元素相同。 3.使用equals进行比较,true执行2,flase执行4。 4.两个元素不相同。

高数中的取整函数

定义 高数中讲y=[x]记为取整函数。若设x为任一实数,那么不超过x的最大整数就记为[x]。例:x=1.9 [x]=1 x=2 [x]=2 x=-1.3[x]=-2 [x]与x的一个关系式 设对x取整,则因为这个函数相当于:若原来就是整数,则不变;不是整数,要在数轴上向左移来找第一个整数。 所以。[x]的最大值应当是他本身。 最小值应该就要看向左移的情况了,例:1.999999999···可以看出,左移距离最大不会超过1. 所以取值范围应当是 x-1<[x]≦x 如夹逼准则放缩中会用到这个式子。

ubuntu重启后进入initramfs的解决方法,以及关于initramfs的相关知识

问题描述 进入到Ubuntu16.04后发现无法复制、粘贴,但是用ls -l查看权限都是正常的。重启发现一直卡在关机的界面,于是硬重启(按下机箱的reset按钮),重启后进入到initramfs的shell提示符。 原因分析 回顾Linux系统启动过程,进入initramfs就意味着kernel已经load了,就差挂载rootfs了。说明是rootfs所在的磁盘出现了问题。 解决方法 用cat /proc/cmdline会找到rootfs所在磁盘的UUID。 用sudo blkid会找到所有磁盘的UUID和它对应的dev/下的设备号,比如说/dev/sdc1。 用fsck -l /dev/sdc1来修复磁盘文件系统(innodes、blocks),一路按y就可以修复磁盘了。 最终成功。 相关知识 1.initramfs是什么? The initramfs is a gzipped cpio archive. At boot time, the kernel unpacks that archive into RAM disk, mounts and uses it as initial root file system. All finding of the root device happens in this early user space. 在initramfs的提示符下,也可以看到和rootfs差不多的文件夹:bin、lib等。 2.initramfs的作用是? It is used for mounting the real rootfs which has all your data.

Http Headers各属性简介及常见安全攻击

Http Headers常用属性介绍 Host(发送请求时,该报头域是必需的) 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的,例如我们在浏览器中输入:https://www.csdn.net,浏览器发送的请求消息中,就会包含Host请求报头域,如下: Host:www.csdn.net 此处使用缺省端口号443,若指定了端口号,则变成:Host:指定端口号 Referer 当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该请求是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。 User-Agent 告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。 我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。 例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E) Content-type 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。 常见的媒体格式类型如下: text/html : HTML格式 text/plain :纯文本格式 text/xml : XML格式 image/gif :gif图片格式 image/jpeg :jpg图片格式 image/png:png图片格式 以application开头的媒体格式类型: application/xhtml+xml :XHTML格式 application/xml : XML数据格式 application/atom+xml :Atom XML聚合格式 application/json : JSON数据格式 application/pdf :pdf格式 application/msword : Word文档格式 application/octet-stream : 二进制流数据(如常见的文件下载) application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式) 另外一种常见的媒体格式是上传文件之时使用的: