爬虫入门01:爬取知乎热榜

#!/usr/bin/env python # -*- coding:utf-8 -*- # author:qdf time:2019/1/21 from lxml import etree import requests url = "https://www.zhihu.com/hot" headers = {"User-Agent":"", "Cookie":""} response = requests.get(url, headers=headers) html_str = response.content.decode() html = etree.HTML(html_str) # print(html) #获取知乎热榜排名标题热度 ret = html.xpath("//section[@class='HotItem']") # print(ret) for table in ret: item = {} item['排名'] = table.xpath(".//div[@class='HotItem-index']/div/text()") item['标题'] = table.xpath(".//div[@class='HotItem-content']/a/@title") item['热度'] = table.xpath(".//div[@class='HotItem-metrics HotItem-metrics--bottom']/text()") print(item)

git:webstorm提交项目到码云

1.码云创建项目 2.webstorm【以下简称ws】 2.1 ws中VCS 选择【import into Version control】-->【Create Git Repository...】-->选择要上传的项目 2.2右击项目(或要上传的文件夹/文件)【git-->add】 2.3【git-->commit directory】提交添加的文件 2.4【Commit Message】添加提交描述 2.5【Commit】提交 2.6【pull】操作:提交之后,右击项目,选中【git-->repository-->push】 2.7复制码云上的HTTPS开头的路径,点击Define remote(定义远程) 2.8【git-->pull】:①点击刷新 ②origin/master 2.9项目目录【GitBush】【pull/push失败执行】:git pull origin master --allow-unrelated-histories 右下角点击Version Control 查看 -->【git Add】-->【git Commit Directory..】

利用vbs将word、excel、ppt转换成pdf

代码如下: Excel: path = createobject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path Set objArgs = WScript. Arguments Set oExcel = CreateObject("Excel.Application") Set oWb = oExcel.Workbooks.Open(path & "\" & "tmp.xlsx") oWb.ExportAsFixedFormat xlTypePDF, path & "\" & "tmp.pdf", 1,1,1,1 oExcel.Visible = False oExcel.quit Set oWb = Nothing Word: path = createobject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path Set word = CreateObject("Word.application") Set docx = word.Documents.Open(path & "\" & "tmp.doc") docx.SaveAs path & "\" & "tmp.pdf",17 docx.close(doNotSaveChanges) word.Quit set docx = nothing Set word = nothing

误删了home里.bashrc等文件后.....

误删了.bashrc history等等等等文件后。 ll 失灵了.....ll command not found 各种 字体颜色也没有了。 于是拷贝了一份.bashrc回来。source ~./bashrc后 配置生效。 但是还误删了.profile 这就导致每天我都要source啊!! 你可以用etc/skel/..... 里面找出来.profile文件~ 放在当前用户目录。 如果你找不到。那么内容是以下这样子的。。复制粘贴吧 兄dei~ # ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask

干货 :2018年最受欢迎的15篇数据科学和机器学习文章(Analytics Vidhya)

作者:Pranav Dar;翻译:陈之炎;校对:丁楠雅; 本文约4200字,建议阅读10+分钟。 本文为你整理了多个高质量和受欢迎的数据科学培训课程、学习文章及学习指南。 简介 Analytics Vidhya是由Kunal发起的一个数据科学社区,上面有许多精彩的内容。2018年我们把社区的内容建设提升到了一个全新的水平,推出了多个高质量和受欢迎的培训课程,出版了知识丰富的机器学习和深度学习文章和指南,博客访问量每月超过250万次。 当拉上2018年的精彩帷幕之时,我们想和社区的读者来分享这一年中的精彩华文。本文也是该系列文章的一部分,希望你能喜欢。其他几篇回溯性文章见: A Technical Overview of AI & ML (NLP, Computer Vision, Reinforcement Learning) in 2018 & Trends for 2019: https://www.analyticsvidhya.com/blog/2018/12/key-breakthroughs-ai-ml-2018-trends-2019/ The 25 Best Data Science Projects on GitHub from 2018 that you Should Not Miss: https://www.analyticsvidhya.com/blog/2018/12/best-data-science-machine-learning-projects-github/ 在这个文集中,我总结了每一篇文章,并根据它们各自的领域进行了分类。每一篇文章还包含对内容的总结。如果你有其他你觉得特别有用的文章,请在下面的评论框中告诉我们。 现在,我们来看看2018年在Analytics Vidhya上的那些最受欢迎程的文章吧! 本文所涵盖的专题 一、机器学习与深度学习-终极二重奏 二、商业智能与数据可视化 三、数据科学方向的职业 四、自然语言处理(NLP) 五、播客 一、机器学习与深度学习-终极二重奏 1. Scratch构建推荐引擎的综合指南(用Python语言) https://www.analyticsvidhya.com/blog/2018/06/comprehensive-guide-recommendation-engine-python/ 推荐技术已经存在了几十年(不是几百年)。机器学习的兴起无疑加速了这些技术的进步,我们已经不再需要依靠直觉,手动地对行为进行监控——只要把数据和正确的技术有机结合起来,瞧!你便有了一个非常高效和划算的组合。 本文是你在这个主题中能找到的最全面的指南之一。它涵盖了各种类型的推荐引擎算法以及在Python中创建它们的基本原理。Pulkit首先解释了什么是推荐引擎,它们是如何工作的。然后用Python(使用流行的MovieLens数据集)进行了一个案例研究,并利用它解释了如何构建特定模型,他关注的两项主要技术是协同过滤和矩阵因式分解。 一旦建立好了推荐引擎,该如何评估它呢?我们怎么知道它是否按照我们的计划运作呢?Pulkit展示了六种不同的评估技术来验证我们的模型,从而解答了这个问题。 2. 24个可以提高你的知识和技能的终极数据科学项目(&可以自由访问,无需付费) https://www.analyticsvidhya.com/blog/2018/05/24-ultimate-data-science-projects-to-boost-your-knowledge-and-skills/ 这是Analytics Vidhya有史以来最受欢迎的文章之一。最初发布于2016年,我们的团队更新了来自不同行业的最新数据集。数据集被划分为三个职业级别-各个级别适合于职业生涯中的不同阶段: 初级:这个级别主要使用易用的数据集,并且不需要复杂的数据科学技术 中级:这个级别主要使用更富挑战性的数据集,它由中、大型数据集组成,要求具备一些高级的模式识别技能 高级:这个级别最适合那些了解高级主题的人,如神经网络、深度学习、推荐系统等。 蛋糕上的糖霜呢?每个项目都有一个与之相关的教程!因此,无论你是想从scratch开始学习,还是被困在某个点上,或者只是想用一个分数来评估你的结果,你都可以将它标记为书签,迅速回到该教程之中。 3. 在Scratch中用Python理解和建立目标检测模型

Teamviewer检测为商业用途的解决方案

Teamviewer检测为商业用途的解决方案 注意。Teamviewer远程链接需要两台计算机参与,需要在两台计算机上都安装Teamviewer软件,所以在链接中出现被检测到商业用途,并不知道到底是哪一台计算机上的电脑出现问题,所以如果按照如下方法修改其中的一台无效,则需修改另一台试试。1. 修改MAC地址,重装Teamviewer (亲测可用, 注意两台计算机上的Teamviewer都要试试,如果修改其中一个没有解决,修改另一个试试)2. 网上下载安装破解版 (会出现莫名奇妙的问题)3. 更换ID(此方法可行,但是容易过期,没试过,第一种修改后ID也是发生改变,但是比较稳定)。(同样是两台计算机上的Teamviewer都要试试)。4. 向官方申请将自身ID加入到家庭版本即可(最直接的方法,此方法可行,而且使用时间较长,如果再次被标记,重复此方法即可。但是等待回复时间可能较长) 注意。Teamviewer远程链接需要两台计算机参与,需要在两台计算机上都安装Teamviewer软件,所以在链接中出现被检测到商业用途,并不知道到底是哪一台计算机上的电脑出现问题,所以如果按照如下方法修改其中的一台无效,则需修改另一台试试。 1. 修改MAC地址,重装Teamviewer (亲测可用, 注意两台计算机上的Teamviewer都要试试,如果修改其中一个没有解决,修改另一个试试) 第一步:卸载Teaviewer。 打开程序控制面板,找到Teamviewer软件进行卸载。第二步:清除Teamviewer注册表。快捷键WIN+R,打开运行,输入regedit 确定打开注册表。删除两个地方。(1) HKEY_CURRENT_USER/Software/Teamviewer; (2) HKEY_LOCAL_MACHINE/Software/Teamviewer。第三步:修改MAC地址。官方是通过检测MAC地址标定唯一的Teamviewer,所以修改了MAC地址,相当于以前没有安装过。 在数字数据里填入12个字符确定,网上有资料说:填入的字符,第二个字符必须使用2,6,A或E,否则有可能不成功! 重启电脑或者禁用网卡重新连接后,看看网卡MAC是不是改了。 第四步:重新安装Teamviewer。如果ID放生变化,则修改成功。第五步:如果修改其中一台计算机没有解决问题,则用同样的步骤修改另一台计算机。 2. 网上下载安装破解版 (会出现莫名奇妙的问题) 略。 3. 更换ID(此方法可行,但是容易过期,没试过,第一种修改后ID也是发生改变,但是比较稳定)。(同样是两台计算机上的Teamviewer都要试试)。 略。具体解决方案,可以搜索下修改Teamviewer ID。 4. 向官方申请将自身ID加入到家庭版本即可(最直接的方法,此方法可行,而且使用时间较长,如果再次被标记,重复此方法即可。但是等待回复时间可能较长) 被检测到商用问题,我最直接的方法是去Teamviewer官网去个人使用验证申诉一下就可以解决了。 teamviewer申诉地址:https://www.teamviewer.com/en/support/personal-use-verification/ Device ID: Teamviewer设备的ID。 Email:可接收邮件即可。 原因:被误检测为商用,会话时间限制等等即可。 文件地址: 其他 --> 打开日志文件。(文件就在Teamviewer安装路径下,文件名看网页上右侧说明) 最后收到邮件: 参考链接: [1]: https://blog.csdn.net/qq_25631627/article/details/82971447 [2]: https://51.ruyo.net/8967.html [3]: http://blog.51cto.com/12822117/2121537?from=groupmessage [4]: https://blog.csdn.net/u011497507/article/details/79770468 [5]: https://blog.csdn.net/qq_34719188/article/details/83083207

样本不平衡问题分析与部分解决办法

最近工作中在处理文本分类问题遇到了分类不均衡的问题,主要还是样本太少还同时非常的不均衡正负样本1:10(类别不平衡比例超过4:1,就会造成偏移),就使用了SMOTE方法。 注意:在进行数据增广的时候一定要将测试集和验证集单独提前分开,扩张只在训练集上进行,否则会造成在增广的验证集和测试集上进行验证和测试,在实际上线后再真实数据中效果可能会非常的差。 目录 什么是样本类别分布不均衡? 问题描述 样本类别分布不均衡导致的危害? 以下以二分类问题为例说明。 1. SMOTE(Synthetic Minority Over-sampling Technique)过采样小样本(扩充小类,产生新数据) 2. 欠采样大样本(压缩大类,产生新数据) 3. 对小类错分进行加权惩罚 4. 分治ensemble 5. 分层级ensemble 6. 基于异常检测的分类 7. 其他...待补充。 解决方法示例: 1.通过过抽样和欠抽样解决样本不均衡 (1)过抽样(over-sampling):通过增加分类中少数类样本的数量来实现样本均衡,比较好的方法有SMOTE算法。 (2)欠抽样(under-sampling):通过减少分类中多数类样本的数量来实现样本均衡 2.通过正负样本的惩罚权重解决样本不均衡 后附样本不平衡的问答系列 Jason Brownlee的回答: 类别不均衡问题是现实中很常见的问题 八大解决方法 Sergey Feldman的回答: Kripa Chettiar的回答: Roar Nybø的回答: Dan Levin的回答: Kaushik Kasi的回答: Quora User的回答: Dayvid Victor的回答: Muktabh Mayank的回答: Sandeep Subramanian的回答: Quora User的回答: Sumit Soman 的回答: 什么是样本类别分布不均衡? 举例说明,在一组样本中不同类别的样本量差异非常大,比如拥有1000条数据样本的数据集中,有一类样本的分类只占有10条,此时属于严重的数据样本分布不均衡。 问题描述 先举一个“恐怖”的例子,直观的感受一下样本不平衡问题: 你根据1000个正样本和1000个负样本正确训练出了一个准确率90%召回率90%的分类器,且通过实验验证没有欠采样过采样的问题哦~完美的样本,完美的模型,破费,你心里暗自得意。然后模型上线,正式预测每天的未知样本~。 开始一切都很美好,准确率召回率都很好。直到有一天,数据发生了一点变化,还是原来的数据类型和特征,只是每天新数据中正负样本变成了100个正样本,10000个负样本。注意,先前准确率90%的另一种表达是负样本有10%的概率被误检为正样本。好了,模型不变,现在误检的负样本数是10000*0.1=1000个,正样本被检出100*0.9(召回)=90个,好了,这个时候召回率不变仍为90%,但是新的准确率=90/(1000+90)=8.26% 。震惊吗!?恐怖吗!? 结论: 同一个模型仅仅是改变了验证集的正负样本比例,模型已经从可用退化成不可用了!!样本不平衡问题可怕就可怕在这,往往你的模型参数,训练,数据,特征都是对的!能做的都做了,但你的准确率就是上不去!!绝望吧。。。。。。 问题定义:数据集中,每个类别下的样本数目相差很大(数量级上的差距)。 样本类别分布不均衡导致的危害? 样本类别不均衡将导致样本量少的分类所包含的特征过少,并很难从中提取规律;即使得到分类模型,也容易产生过度依赖与有限的数据样本而导致过拟合问题,当模型应用到新的数据上时,模型的准确性会很差。

UML-组件图-网上书店

实验目的 (1) 理解组件图的基本概念; (2) 理解部署图的基本概念; (3) 理解包图的基本概念; (4) 掌握在Rational Rose中绘制组件图、部署图和包图的操作方法。 实验内容 一、理解并绘制组件图。(文件名命名为订单模块组件图.mdl) 理解并绘制如下类图(类Product、Custmer和Account的访问权限设置为无修饰符Implementation,为什么?),并Forward Engineer生成Java代码(应该有7个文件,为什么?),观察类和文件的对应关系。注意:执行了Forward Engineer后会自动生成7个组件?,删掉。 订单模块类图: 在以上类图基础上,绘制组件图(组件Order包含类Oeder,组件IProduct包含接口IProduct和类Product,组件ICustomer包含接口ICustomer和类Customer,组件IAccount包含接口IAccount和类Account);Forward Engineer生成Java代码(可以在类图也可以在组件图中生成,为什么?),观察类和文件的对应关系,并与上一步的比较。思考:为什么组件名称必须和类或接口名称一致? 订单模块组件图: 二、UML建模综合练习–网上书店 1. 需求分析** 访谈调研 **书店经理:**我们原本是一个传统的实体书店,顾客要买书都是亲自到书店来的,这样挺不方便。而且随着书店销售图书种类和数量的增加以及顾客的增长,尤其是大量顾客到书店选购图书,使得书店场地不足,工作人员也很忙碌。其实,还有一点就是,有不少人进入书店后并不买书,只是查找些资料,有的甚至会在这呆上很长的时间直到把书免费看完。这种行为,工作人员一般是不阻止的,结果最后这些被看过的书会因为有阅读过的痕迹而影响销售。而且现在电子商务已经发展起来了,所以我们想到借助网络,让顾客通过网上书店购买图书。这样我们书店可以省掉大量的场地维护和工作人员成本支出,同时计算机可以方便的检索图书信息,让顾客可以足不出户以更优惠的价格买到需要的书。**系统分析员:**能谈谈您对网上书店的要求吗?**书店经理:**网上书店要能实现对外和对内的功能,对外是顾客能在网上书店订购图书,能提交订单。对内,书店工作人员能够通过网上书店及时的看到这些订单,并进行处理。为了把书送到顾客手里,我们已经联系了快递公司初步达成协议,由他们往返顾客和书店之间把图书送到顾客手里。书店管理员受理订单后,就会通知快递公司送货。当然,书店的图书上架和下架也应该由网上书店完成了。**工作人员甲:**实体店中,图书是按照不同种类放置的,方便顾客挑选。网上书店的图书也应该能够按照这种模式分类显示。这样,图书的信息和种类要由网上书店设置和管理。已有种类的新书或新种类的图书上架,网上书店能够保存这些信息。如果信息输入错误,能够进行修改。**工作人员乙:**另外书店会搞一些促销,推出一些特价图书。以前这些特价书的信息,都是我们根据促销活动整理出来,贴在书店的醒目位置。促销活动过后,特价图书会回复原来的价格。希望网上书店也能够管理这些特价图书。**系统分析员:**能谈谈平时买书的经过吗? 顾客甲:一般都是先在书店里看看图书的简要介绍,或者先找找看有没有自己需要的书,有时是没有目标的寻找,有时直奔一类图书而去。找到我想买的书或者觉得看的书不错,就会去柜台结账。**工作人员丙:**不过有时在结账的时候,顾客会突然改变主意,不买一些书或者又回去挑选图书了。 顾客甲:有时好像是这样的。要是网上书店在结账前能方便管理我所选购的图书就好了,这样通过计算机直接操作,就不用跑来跑去了。 系统分析员:可以使用虚拟的购物车。**工作人员丙:**对,这样在用户确认购买前可自行管理选购的图书,决定要不要购买,还有购买数量。 系统分析员:顾客先使用虚拟的购物车选购管理图书,然后提交订单给书店处理,是这样吧。**书店经理:**没错,就这样办。另外最好顾客能够留下向己的信息,方便以后购买。**顾客:**你们可以实行会员制啊。就像我们在网上逛论坛一样,会员才能发言普通游客只能看。这样我们平时就只在网上书店查查资料什么的,只在购买图书的时候才使用会员身份。**书店经理:**恩,这样不仅可以保留你们的信息,也可以保留购买记录。 系统分析员:会员提交购买订单后,书店打算如何收取或者说用户怎么付款 书店经理:我们可以接受货到付款,顾客也可以使用网上银行、汇款等方式付款。**顾客:**这样我们就方便多了。对了,那是不是付款前,我还多了一次“反悔”的机会啊。**书店经理:**在我们书店没有受理订单之前,你们可以取消交易。不过受理后就不行了。 通过几次这样的访谈(限于篇幅,在此并未列出所有访谈内容),可以获得网上书店的需求信息,确定系统范围。网上书店是实现对实体书店内部图书商品和顾客购买图书的综合管理系统。 (1) 识别参与者 网上书店的主要参与者有会员,以及管理人员。此外,访客(非会员)也可是使用该系统进行一些图书资料的查询等。 另外,为了业务发展和内部管理分工明确,书店希望按照工作范围分配管理员的职责权限,管理员分为商品管理员、订单管理员和系统管理员。 (2) 识别用例并绘制用例图 在用例建模阶段,为降低用例图的复杂性,将网上书店划分为两个子系统即顾客购书子系统和书店内部管理子系统。会员和访客属于顾客购书子系统管理员则属于书店内部管理子系统。 访客用例图: 会员用例图: 书店管理员用例图: 用例描述: 需求分析阶段类图 2. 动态建模 (1)系统动态建模–活动建模 会员选购图书活动图: 订单管理员处理订单活动图: 商品管理员图书信息活动图: 系统管理员活动图: (2)系统动态建模–用例的行为顺序(图) 直接绘制某个用例背后的顺序图并不容易–用BEC模式来解决这个问题; BEC模式:将对象分为三类–边界对象-控制对象-实体对象; 参与者只能与边界对象互动每个用例可以对应生成一个控制类实体对象一般不能发送消息给边界对象和控制对象(返回消息除外)。 管理员登录顺序图: 会员添加图书到购物车顺序图: (3) 系统动态建模–对象的状态图 本系统具有明显转换状态的类是订单(对象);具有:确认订单-等待到款-等待受理-已受理-已发货-交易成功-取消 7种状态 订单简单状态图:

Qt qOverload函数介绍

Qt qOverload函数介绍 函数原型 auto qOverload(T functionPointer) 详细介绍 该函数返回一个指向重载函数的指针,其中的模板参数是重载函数参数类型的列表(list)。functionPointer是重载函数(成员函数)的指针: struct Foo { void overloadedFunction(); void overloadedFunction(int, QString); }; ... qOverload<>(&Foo::overloadedFunction) ... qOverload<int, QString>(&Foo::overloadedFunction) 如果其中有成员函数是const-overloaded类型的,则必须使qConstOverload 和qNonConstOverload,而不是,例如: struct Foo { void overloadedFunction(int, QString); void overloadedFunction(int, QString) const; }; ... qConstOverload<int, QString>(&Foo::overloadedFunction) ... qNonConstOverload<int, QString>(&Foo::overloadedFunction) qOverload()需要C++14的支持。在C++11风格的代码中,QOverload、 QConstOverload和QNonConstOverload类也可以直接这样使用: ... QOverload<>::of(&Foo::overloadedFunction) ... QOverload<int, QString>::of(&Foo::overloadedFunction) **注意:**Qt会根据《C++ Committee’s Standing Document 6》中的特征测试推荐来检测必要的C++14编译器支持。 应用示例 例如,QComboBox类的存在如下信号: [signal] void QComboBox::currentIndexChanged(int index) 当ComboBox的当前索引currentIndex发生变化时,该信号就会被发出。参数index可以传递当前索引值,并且当ComboBox的项为空或者currentIndex被重置时,参数index为-1。 该信号在该类中被重载。要通过函数指针的语法连接该信号,就可以借助qOverload类获取函数指针,这也是Qt官方文档推荐的连接方式: connect(comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index){ /* ... */ });

hive踩过的坑

1、hive 中 between的是包括边界值的 a between 1 and 10 = a<=10 and a>=1 2、case when 只能限制一列的值。 一个 case后只能限制一列,其他的不行!!!

特征值分解:特征值,特征向量,特征向量矩阵

特征值,特征向量,特征向量矩阵 一图胜千言: 特征向量矩阵S,由矩阵A的所有线性无关的特征向量按列排列(从大到小)组成的矩阵。 特征值矩阵,有矩阵A的所有特征值放在对角线位置组成的对角矩阵。 特征值和特征向量 特征值分解的物理意义(转载) 矩阵的特征值分解目的就是提取出一个矩阵最重要的特征。 这其实是在平面上对一个轴进行的拉伸变换(如蓝色的箭头所示),在图中,蓝色的箭头是一个最主要的变化方向(变化方向可能有不止一个),如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。 反过头来看看之前特征值分解的式子,分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。 当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是之前说的:提取这个矩阵最重要的特征。 总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。 什么是特征矩阵? 矩阵里涉及“特征”二字的都和λE-A有关,行列式|λE-A|是关于λ的一个多项式,称为A的特征多项式, 而|λE-A|=0是一个方程,它的根就称作A的特征值,同理矩阵λE-A就称为A的特征矩阵。 补充一:2. 中提到的“Q是这个矩阵A 的特征向量组成的矩阵”,这里特征向量如何组成矩阵呢? 我们知道,特征向量对应的特征值是唯一的。所以,这里将按特征值从大到小排序,再把排序后的特征值对应的特征向量(取前N个)组成新矩阵。 补充二: 如何求矩阵的特征向量?概括如下: 1.先求出矩阵的特征值: |A-λE|=0 2.对每个特征值λ求出(A-λE)X=0的基础解系a1,a2,…,as 3.A的属于特征值λ的特征向量就是 a1,a2,…,as 的非零线性组合 补充三: A = Q ∧ Q − 1 A = Q\wedge Q^{-1} A=Q∧Q−1 的官方说明 。这里的Q如果是对称阵可以写成 A = Q ∧ Q T A = Q\wedge Q^{T} A=Q∧QT,具体见官方说明。

系统编程之数据库

数据查询:SELECT 数据操纵:INSERT、UPDATE、DELETE 数据控制:GRANT、REVOKE、DENY – 创建表 create table if not exists student (id integer, name text, tel text); – 查看表 .tables – 查看表结构 .schema student – 修改表 alter table student rename to stu; – 修改表名字 alter table student add column sex text; – 插入数据 insert into student (id, name, tel, sex) values (1, “aaa”, “11111”, “m”); insert into student (id, name) values (2, “bbb”); insert into student values (3, “ccc”, “3333”, “f”), (4, “ddd”, “444444”, “m”);

Ubuntu系统开机出错The root filesystem on /dev/sda1 requires a manual fsck解决方案

电脑卡死后,未正常关机,选择强制关机,再次重启之后打开虚拟机发现开机出错。第一次报的错误没捕捉到,直接让我进入编辑模式,打开页面失败。还是用图像界面舒服,选择重启。然后出现以下错误。 dev/sda1: Inodes that were part of a corrupted orphan linked list found. /dev/sda1: UNEXPECTED INCONSISTENCY:; RUN fsck MANUALLY (i.e., without -a or -p options) fsck exited with status code 4 The root filesystem on /dev/sda1 requires a manual fsck modprobe: module ehci-orion not found in modules.dep BusyBox v1.22.1 (Debian 1:1.22.0-9+deb8u1) built-in shell (ash) Enter 'help' for a list of built-in commands. /bin/sh: can't access tty; job control turned off

Eclipse中断点调试详解

小编是刚学习Java两个月,在学习视频中看到老师玩断点6到飞起,自己也就各种查资料,实施并总结了一下断点的调试。 找到需要设置断点的位置 你可能会问,我怎么知道在哪设置断点呢? 如果你实在不知道在哪设置断点,那你完全可以多设置几个断点,单步调试直到找到异常,这样会多花一点时间,但是却可以更加深入的了解程序的执行过程如果你大致知道哪里出现了错误问题,或者异常信息报告类的位置,那么你就可以在这里设置断点 设置断点 断点大家都比较熟悉,在Eclipse Java 编辑区的行头,双击需要放置断点的程序左边的栏目上。如下图所示: 条件断点:顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止 在左边的栏目上,鼠标右键,选择"Breakpoint Properties......" 断点的属性界面以及各个选项的意思,如下图: 变量断点:将断点打在变量声明处 下图就是在一个变量上打的断点,在变量值的初始化,或是变量值改变时可以停止,当然变量断点上也是可以加条件的,和 上面的介绍的条件断点的设置是一样的 方法断点:将断点打在方法的入口处 方法断点的特别之处在于它可以打在 JDK的源码里,由于 JDK 在编译时去掉了调试信息,所以普通断点是不能打到里面 的,但是方法断点却可以,可以通过这种方法查看方法的调用栈 断点调试 打开Debug模式的三种方式: 点击"打开透视图"按钮,选择调试透视图,则打开调试透视图界面,然后先设置断点,按调试按钮则可以调试程序 或者直接点击调试按钮,那个虫子样子的按钮,然后就会进入调试透视图的界面。前提你需要是要在程序中设置好断点 或者 或者右键单击该程序,选择debug as(调试方式) -> java application(Java应用程序),则可以调试程序了。前提你需要是要在程序中设置好断点 调试快捷键 以debug方式运行java程序后 (F5)单步执行程序,遇到方法时进入:按F5就是一层层深入的debug相当于剥葱样,会进入每个方法内部; (F6)单步执行程序,遇到方法时跳过: 按F6就是在当前函数一步步debug,不理会深层次运作; (F7)单步执行程序,从当前方法跳出: 按F7就是如果当前进入了某个方法内部,都跳转到该方法的结尾代码处; (F8)直接执行程序。遇到断点时暂停: 按F8就是如果后面还有断点,则运行到下一断点处,否则运行完程序; 另外在debug时,会有很多有用信息显示在debug框里,如堆栈信息,需要自己实践;在程序界面里,鼠标移到变量上时会有当前变量的属性值。 进入调试界面之前看到的跳转窗口 改变变量的值 在变量窗口中右击变量,在弹出的菜单中选择[change value],弹出修改画面。 改变其值后,按下ok按钮;这时变量的值就改为修改后的值了。 第一步:点击"Change Value...." 第二步:插入值 第三步:修改值 检查代码段执行结果 下面按钮第一个是进入方法执行,比如你调用了其他方法,可以进入方法一步一步执行,如果点击第二个按钮,只会在本方法内一步一步执行,第三个按钮时你跳出此方法,继续执行调用这个方法的原方法,说明如下。 在程序运行的时候,想看看某段程序运行的结果是否正确,或者查看某个变量的值时: 选择一句或一段代码,右键单击在弹出的菜单中选择Watch(创建查看表达式)项,此时,代码的执行结果将显示在Expressions(表达式)窗口中。选择一句或一段代码,右键单击在弹出的菜单中选择Inspect(检查)项,可以直接显示表达式的值 在eclipse程序中设置的断点上有一个斜杠,正常启动debug不能够跳转到debug页面,怎么解决? 在run菜单里面,把"skip all breakpoints"选项勾去即可,这个选项可能是你无意间选上的。 远程调试 远程调试分为两种方式:【使用远程调试的前提是服务器和客户端的代码是一致的】 本机作为客户端本机作为服务端 属性解释: -Xdebug:启用调试特性。-Xrunjdwp:<sub-options>:在目标 VM 中加载 JDWP 实现。它通过传输和 JDWP 协议与独立的调试器应用程序通信。下面介绍一些特定的子选项。【从 Java V5 开始,您可以使用 -agentlib:jdwp 选项,而不是 -Xdebug 和 -Xrunjdwp。但如果连接到 V5 以前的 VM,只能选择 -Xdebug 和 -Xrunjdwp。下面简单描述 -Xrunjdwp 子选项。】transport:这里通常使用套接字传输。但是在 Windows 平台上也可以使用共享内存传输。server:如果值为 y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。address:这是连接的传输地址。如果服务器为 n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。suspend:如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接。 示例1:显示如何在调试模式下启动 VM 并监听端口 8765 的套接字连接?

关于DelphiXE程序太大的问题

第一步:关闭debug infomation. 打开工程后,依次点击project–option–delphi compiler–linking 将右边Debug information改为False(记住 四个版本都要) 第二步: 关闭RTTi. 点击Project–view source.在第二行添加编译开关代码 { Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) } {$IF CompilerVersion >= 21.0} {$WEAKLINKRTTI ON} {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} {$IFEND} 第三步:设置运行时包. 打开工程后,依次点击project–option–Packages–Runtime Packages 勾选Link with runtime package. (不建议开启,会有许多不必要的麻烦,单机小程序无所谓,设计ADO链接数据库强烈不建议!慎重哈) 第四步:如果你看到这里,安装包还没有低于10M,那么问题只有一个,你使用了第三方控件(里面包含皮肤控 件),点击Project–modify skin options 把勾全部去掉,然后在所有界面头部的uses,看到带skin的单元全部删 掉,只删除带skin的单元!然后运行编译即可,不用怕删除了必须的单元,Delphi会自动添加的。 第五步:重装Delphi。 第六步:打开百度一下:绝望的深刻意义。

LATEX中使用中文

在文章的开头加上: \usepackage{fontspec, xunicode, xltxtra} \setmainfont{Microsoft YaHei} \usepackage{ctex} 例如:

poi导出excel报错,本地测试通过,但发布到测试以及客户环境报错。

我的本地代码,导出excel都是可以的。但是发布到了测试环境或者客户环境,就会报错。 主要报错信息如下: (每个页面的导出报错都不相同。。然后还报了一个org.apache.poi.hssf.util.HSSFColor的错误 T 。T 嘤嘤......哭泣脸) 第一个: org.springframework.web.util.NestedServletException:Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class java.awt.Font 第二个: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment 首先换了poi的版本,不好用。 然后面向百度开发!说是tomcat的bin目录下catalina.sh配置中加入一句话, JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" 加入后重启~~~~ 哎 好用了鸭!^_^ 原因:看这里 →→→→→ 参考博客:https://blog.csdn.net/catoop/article/details/49057291

【爬虫】Java关于高德地图爬取数据

不管是目前什么行业,对数据分析和做出合适的判断才是最重要的选择,比如,在某一个城市开一家餐馆,可以去了解这个城市目前一共有多少餐馆,分别那种菜系占比最多,大概菜系的分布范围等等信息,都可以通过爬虫的数据获得更好的分析和抉择。 总结步骤如下: 到高德开放平台 | 高德地图API注册账号,并且申请web服务的AK密钥,每次发送请求需要带着这个key去认证。注册账号登陆后点击右上角的控制台 ->应用管理 -> 创建应用 -> 添加新key,注意选择web api,就得到了一个可以使用web服务的key密钥。 查找高德地图提供的web api下的搜索模块使用API文档开发指南 http://lbs.amap.com/api/webservice/guide/api/search 之前本人试过通过高德地图中的搜索页面搜索功能,不输入key,但是访问次数有一定的限制,就会让输入拼图验证 这种方法不可取只能去注册key,然后去获得需要的数据 关于高德地图信息抓取,我们根据高德地图搜索POI文档 ,简单的说下两种比较实用的方法 第一种 多边形搜索 多边形搜索需要在地图上绘制经度和纬度用","分割,经度在前,纬度在后,坐标对用"|"分割。经纬度小数点后不得超过6位。 多边形为矩形时,可传入左上右下两顶点坐标对;其他情况下首尾坐标对需相同 示例: 如上图四个marker点,调用高德地图POI搜索功能即可搜索这个片区内的数据信息 测试接口: https://restapi.amap.com/v3/place/polygon?polygon=108.875542,34.193769|108.880032,34.193724|108.880038,34.191466|108.875633,34.191399|108.875542,34.193769&key=<自己的Key> 可传入keywords和types,当keywords和types为空的时候, 会默认指定types为120000(商务住宅)&150000(交通设施服务) 查询POI类型下载POI分类编码和城市编码表 https://lbs.amap.com/api/webservice/download POI分类编码部分截图 由此可见,可以根据需要的菜系类型查找某一地区菜系的分布效果 返回数据格式: 名称 含义 规则说明 status 结果状态值,值为0或1 0:请求失败;1:请求成功 info 返回状态说明 status为0时,info返回错误原因,否则返回“OK”。详情参阅info状态表 count 搜索方案数目(最大值为1000) suggestion 城市建议列表 当用户输入的词语为泛搜索词的时候,将显示城市列表 keywords 唯一ID cities 城市列表 name 名称 num 该城市包含此关键字的个数 citycode 该城市的citycode adcode 该城市的adcode pois 搜索POI信息列表 poi POI信息 id 唯一ID parent 父POI的ID 当前POI如果有父POI,则返回父POI的ID。可能为空 name

网页小脚本,真简单 抢手机脚本 抢票脚本 淘宝脚本 不知道能不能行

目录 一、在"Elements"中获取页面元素 二、来到“Console”写脚本,写完之后直接Enter键就行了 三、其他用处待开发 来个网址测试。 https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=我是高数老师&oq=%25E5%25A6%2582%25E4%25BD%2595%25E8%258E%25B7%25E5%258F%2596%25E4%25B8%2580%25E4%25B8%25AA%25E8%258B%25B9%25E6%259E%259C%25E6%2589%258B%25E6%259C%25BA%25E7%259A%2584%25E8%25AF%25B7%25E6%25B1%2582&rsv_pq=a04796fb0004cbe5&rsv_t=4f7ftRnYcQXggs3pxvC41fqaYTYd5hD1365xgbwlil1QJf5h7m93hpf9WEE&rqlang=cn&rsv_enter=1&inputT=5100&rsv_sug3=107&rsv_sug1=55&rsv_sug7=100&rsv_sug2=0&rsv_sug4=5100 一、在"Elements"中获取页面元素 二、来到“Console”写脚本,写完之后直接Enter键就行了 实现功能:隔一秒点一下 基础版:setInterval(function(){document.getElementById("rush").click()}, 1000) 升级版:setInterval(function(){ if(Date.now()>new Date("2019-1-16 16:56:00")){ document.getElementsByClassName("opr-toplist1-refresh")[0].click(); } },1000) 三、其他用处待开发 参考着两篇文章 https://www.jianshu.com/p/8d28c0a7e4ff https://www.sohu.com/a/136800738_495695

【RPA入门教程】UIBot命令的基本操作

这篇教程给大家介绍下UIBot的命令的相关操作,插入命令、删除命令、移动命令等等 下图就是UIBot的主要编辑界面 看到这样的界面,估计不少人都是一脸懵逼 来来来~这里就教大家一些基础的姿势 1、命令的插入 在界面左侧就是命令的列表,分为了不同的类别,点开不同的分类就会展开具体的命令 插入命令的方式有两种,第一种就是直接双击你想要插入的命令,如果编辑视图中有已经选中的代码,那会自动插入到选中的代码下一行,否则会插入到代码最后一行 第二种是鼠标拖动,可以把命令直接拖动到你想要插入的位置 2、命令移动 编辑过程中难免需要调整代码位置。只需要直接用鼠标选中命令后拖动到想要的位置就能完成命令的移动了 3、命令删除 在可视化视图中选中命令,按键盘上的DEL就能删除这条命令 按住ctrl+鼠标左键能间隔选择多条命令,按住Shift能选择连续多条命令,再按DEL就能批量删除 4、复制、剪切命令 选中命令,按ctrl+c复制命令,按ctrl+x剪切命令,选中要插入的位置按ctrl+v粘贴命令 这些就是命令的基础操作拉,大家学会了吗?如果还没学会,那就…… 现在下载 还有机会参与到我们的活动当中! 还等什么?赶快来体验! 活动期间(1月16日至2月5日)下载注册登录UiBot不仅有机会可以和产品大牛、技术大神亲密接触,还有更多高级培训课程、个人版年卡等丰厚奖品等你来拿。 我们每一次努力 只为让用户获得更好的体验! 因为专业,所以更好 UiBot,流程自动化专家 转载于:https://juejin.im/post/5c3ebfd56fb9a049bb7c9991

Python 字典 items()方法的简单解析与用法

Python 字典 items() 函数作用:以列表返回可遍历的(键, 值) 元组数组。 items()方法语法: dict.items() 实例: dict = {'老大':'15岁', '老二':'14岁', '老三':'2岁', '老四':'在墙上' } print(dict.items()) for key,values in dict.items(): print(key + '已经' + values + '了') 以上实例输出结果为: dict_items([('老大', '15岁'), ('老二', '14岁'), ('老三', '2岁'), ('老四', '在墙上')]) 老大已经15岁了 老二已经14岁了 老三已经2岁了 老四已经在墙上了了

R源代码研究——逻辑回归logistic regression

概述 R中逻辑回归用过很多次了,最近突然想对其源代码探究一二,以便更好理解该算法。此文章记录了R中逻辑回归的源代码的研究理解,如果有任何问题或错误欢迎各位读者提出。 建议:此篇文章主要以介绍代码实现为重点,会穿插理论知识。建议读者可以先大致了解逻辑回归理论再读此文。 R中实现逻辑回归可以通过调用glm函数实现,R中对该函数的使用方法及描述如下: glm(formula, family = gaussian, data, weights, subset, na.action, start = NULL, etastart, mustart, offset, control = list(...), model = TRUE, method = "glm.fit", x = FALSE, y = TRUE, contrasts = NULL, ...) glm is used to fit generalized linear models, specified by giving a symbolic description of the linear predictor and a description of the error distribution. 可见glm函数实际是用于广义线性模型的拟合,通过指定参数可以实现逻辑回归(实际逻辑回归属于广义线性回归的一种),简单介绍一下广义线性回归: 其中g(y)称为链接函数link function。其中逻辑回归的link function为 样例 以下是一个实现逻辑回归的代码样例,family = binomial(link = "

7-14 用$字符替换字符串中的数字字符 (10 分)

7-14 用$字符替换字符串中的数字字符 (10 分) 作者: 时贵英 单位: 东北石油大学 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB 输入一个字符串,用$字符替换字符串中的数字字符。 输入格式: 输入一个长度不超过20的包含数字字符的字符串。 输出格式: 输出将字符串中的每一个数字字符都替换成一个$字符后的字符串。 输入样例: 在这里给出一组输入。例如: abc0AB9 输出样例: 在这里给出相应的输出。例如: abc$AB$ 代码: #include <stdio.h> #include <string.h> int main() { char a[21]; char b[21]; gets(a); int length = strlen(a); for (int i = 0; i < length; i++) { if (a[i] >= '0' && a[i] <= '9') { a[i] = '$'; } } printf("

浅谈 ViewModel 的生命周期控制

1、从一个 Bug 说起 想必有过一定开发经验的同学对 ViewModel 都不会陌生,它是 Google 推出的 MVVM 架构模式的一部分。这里它的基础使用我们就不介绍了,毕竟这种类型的文章也遍地都是。今天我们着重来探讨一下它的生命周期。 起因是这样的,昨天在修复程序中的 Bug 的时候遇到了一个异常,是从 ViewModel 中获取存储的数据的时候报了空指针。我启用了开发者模式的 “不保留活动” 之后很容易地重现了这个异常。出现错误的原因也很简单,相关的代码如下: private ReceiptViewerViewModel viewModel; @Override protected void doCreateView(Bundle savedInstanceState) { viewModel = ViewModelProviders.of(this).get(ReceiptViewerViewModel.class); // 1 handleIntent(savedInstanceState); // ... } private void handleIntent(Bundle savedInstanceState) { LoadingStatus loadingStatus; if (savedInstanceState == null) { loadingStatus = (LoadingStatus) getIntent().getSerializableExtra(Router.RECEIPT_VIEWER_LOADING_STATUS); } viewModel.setLoadingStatus(loadingStatus); } 复制代码 在方法 doCreateView() 中我获取了 viewModel 实例,然后在 handleIntent() 方法中从 Intent 中取出传入的参数。当然,还要使用 viewModel 的 getter 方法从其中取出 loadingStatus 并使用。在使用的时候抛了空指针。

有赞sql题

存在一张电商交易订单表order如下: id order_no shop_id user_id create_time 1 E10001 201 101 2018-09-01 12:00:00 2 E10002 202 102 2018-09-01 12:01:00 3 E10003 201 103 2018-09-01 12:03:00 统计订单销量(订单量)前十的店铺及到目前的订单量(一行记录算一个订单, order_no唯一)的sql: 题目不难,巩固一下: create table order( id int primary key auto_increment, order_no varchar(20), shop_id int, user_id int, create_time datetime ); insert into youzan values(1,'E10001',201,101,'2018-09-01 12:00:00'); insert into youzan values(2,'E10002',202,102,'2018-09-01 12:01:00'); insert into youzan values(3,'E10003',203,103,'2018-09-01 12:03:00'); select shop_id,count(*) as num from youzan group by shop_id order by num desc limit 10; MySQL的Limit子句

MQ详解及四大MQ比较

一、消息中间件相关知识 1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。 2、消息中间件的组成 2.1 Broker 消息服务器,作为server提供消息核心服务 2.2 Producer 消息生产者,业务的发起方,负责生产消息传输给broker, 2.3 Consumer 消息消费者,业务的处理方,负责从broker获取消息并进行业务逻辑处理 2.4 Topic 主题,发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的 广播 2.5 Queue 队列,PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收 2.6 Message 消息体,根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输 3 消息中间件模式分类 3.1 点对点 PTP点对点:使用queue作为通信载体 说明: 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。 消息被消费以后,queue中不再存储,所以消息消费者不可能消费到已经被消费的消息。 Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。 3.2 发布/订阅 Pub/Sub发布订阅(广播):使用topic作为通信载体 说明: 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。 queue实现了负载均衡,将producer生产的消息发送到消息队列中,由多个消费者消费。但一个消息只能被一个消费者接受,当没有消费者可用时,这个消息会被保存直到有一个可用的消费者。 topic实现了发布和订阅,当你发布一个消息,所有订阅这个topic的服务都能得到这个消息,所以从1到N个订阅者都能得到一个消息的拷贝。 4 消息中间件的优势 4.1 系统解耦 交互系统之间没有直接的调用关系,只是通过消息传输,故系统侵入性不强,耦合度低。 4.2 提高系统响应时间 例如原来的一套逻辑,完成支付可能涉及先修改订单状态、计算会员积分、通知物流配送几个逻辑才能完成;通过MQ架构设计,就可将紧急重要(需要立刻响应)的业务放到该调用方法中,响应要求不高的使用消息队列,放到MQ队列中,供消费者处理。 4.3 为大数据处理架构提供服务 通过消息作为整合,大数据的背景下,消息队列还与实时处理架构整合,为数据处理提供性能支持。 4.4 Java消息服务——JMS Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 JMS中的P2P和Pub/Sub消息模式:点对点(point to point, queue)与发布订阅(publish/subscribe,topic)最初是由JMS定义的。这两种模式主要区别或解决的问题就是发送到队列的消息能否重复消费(多订阅)。 5 消息中间件应用场景 5.1 异步通信 有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。 5.2 解耦 降低工程间的强依赖程度,针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,当应用发生变化时,可以独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 5.3 冗余

多数据源切换-Druid

这是实际应用场景中的多数据源切换案例 逻辑思路如下: 1.系统初始化,加载所有数据库中配置的数据源,加载进去spring容器 2.通过两种方法切换数据源: 2.1MultipleDataSource.setDataSourceKey(dataSourceKey);//切换 MultipleDataSource.clearDataSourceKey();//清除当前数据源并且还原到默认数据库 2.2使用@SwitchDataSource(name="dateSourceKey")注解 <beans> <-- 配置默认数据源 --> <context:property-placeholder location="classpath*:jdbc.properties"/> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="minIdle" value="${rapid.jdbcPool.minPoolSize}"/> <property name="maxActive" value="${rapid.jdbcPool.maxPoolSize}"/> <property name="initialSize" value="${rapid.jdbcPool.initialPoolSize}"/><!-- 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时,default=0 --> <property name="maxWait" value="${rapid.jdbcPool.maxWait}"/><!-- 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁 --> <property name="timeBetweenEvictionRunsMillis" value="${rapid.jdbcPool.timeBetweenEvictionRunsMillise}"/><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,毫秒 --> <property name="minEvictableIdleTimeMillis" value="${rapid.jdbcPool.minEvictableIdleTimeMillis}"/><!-- 配置一个连接在池中最小生存的时间,毫秒 --> <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于 timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效 --> <property name="testWhileIdle" value="${rapid.jdbcPool.testWhileIdle}"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <!

STM32进入STOP模式并唤醒实验总结

项目需求,需要实现设备低功耗功能,实现过程中遇到几个问题,以此记录总结。(stm32f103ret6) 问题一:执行PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);后,程序继续执行,看到的现象像是没有进入休眠。 调试步骤: 1.关闭自己的时钟配置,调用启动函数中默认的SystemInit() 2.关闭相关外设初始化,只开启串口一以追踪程序运行流程和一个IO中断以唤醒 现象:能进入中断并且正常唤醒 3.换为调用自己的时钟,休眠不了,一步步打开相关时钟配置没问题直到开启了 SysTick_Config(SystemCoreClock / 1000 ) //1ms定时器 就休眠失败 源码贴图如下: 原因:开始以为把所有的外设中断关闭就没事了,其实系统时钟开了个1Ms的系统定时中断(功能需要) 【解决方式】: 方式一:.注释SysTick_Config(SystemCoreClock / 1000) 方式二:.在进入休眠之前,关闭系统定时器,清空计数值 SysTick->CTRL = 0x00;//关闭定时器 SysTick->VAL = 0x00;//清空val,清空定时器 功能需要不能关闭,选择方式二 【补充说明】: SysTick系统定时器是属于CM3内核中的一个外设,内嵌在NVIC中。它是一个24bit的向下递减计数器,每计数一次的时间为1/SYSCLK。当重装载数值寄存器地见到0的时候,系统定时器就产生一次中断,依次循环反复。我的累计值是SystemCoreClock / 1000,所以中断就是1ms一次。 相比定时器中断,产生之后需要清中断标志位,但是系统时钟中断是没有的,开始怀疑是不是中断产生之后标志位是不会复位的,导致停止模式进入被忽略,程序继续执行。后面找资料发现每次systick溢出后会置位计数标志位和中断标志位,计数标志位在计数器重装载后被清除,而中断标志位也会随着中断服务程序的响应被清除,所以这两个标志位是不需要手动清除的。 具体为什么开启系统定时器之后不能进入停止模式还需要查找原因,在此也请各位网友赐教。 【发现应该是系统时钟中断一直是开启的,所以在中断标志位清掉之后,每到1ms就又产生一次中断,标志位重新被置位,导致停止模式进入被忽略,程序继续进行,把这个定时器关掉就好//add 2019.5.9】 【回复评论为什么定时中断不是外部中断却能唤醒停止模式的问题//add 20200713】 以上信息来自《CM3权威指南》13.2节电源管理 (FCLK是自由运行时钟,因为不来自系统时钟HCLK,所以再系统停止时FCLK也能继续运行) 问题二:成功进入休眠并退出后,串口打印失败 原因: 退出停止模式后,其他时钟还是保持原来的配置(原来我的配置是以外部高速时钟HSE不分频作为PLL时钟源,再经过9倍频得到,即72MHz,然后PLL作为系统时钟源,系统时钟一分频得到AHB总线时钟,AHB再 一分频作为高速总线时钟PCLK2,也就是72MHz,USART1用的就是高速总线时钟),这些配置是不会变的,但是退出停止模式后,内部高速时钟(HSI)默认变成了系统时钟源,造成时钟紊乱。 【其实不仅仅是串口,其他在进入停止模式之前的外设在退出停止模式之后都会工作不正常,重新配置系统时钟即可】 问题三:进入停止模式后整个电流还是很大 1.根据设备原理图查看IO外部引脚连接电路,闲置状态为低电平时,设置为下拉输入;闲置状态为高电平时,设置为上拉输入;闲置状态为悬空时设置为模拟输入;输出引脚根据功能需要设置就行 原因:当IO通过外围电路电阻接地被拉低时,如果设置为上拉输入,则在芯片内部的上拉电阻和外围的下拉电阻构成回路,电流损耗取决于这两个电阻;当IO通过外围电路电阻接电源被拉高时,则在芯片内部的下拉电阻和外围的上拉电阻构成回路,电流损耗也取决于这两个电阻;当悬空时,斯密特触发器是打开的,要判断输入的是高电平还是低电平,需要一点电流损耗,但是设备模拟输入,这个触发器是关闭的 2.排查外围电路,某些驱动、电源转换IC如果是由软件使能,如果进入停止模式之后不需要则关闭,因为本身就有工作电流;如果是由硬件使能,则需要查看芯片手册看静态工作电流是多少,如果比较高,只能修改硬件电路或者用低耗ic代替 3.外围是否有一些闭合回路,比如电压采集,虽然ADC已经关闭,但是这个分压电路还是有损耗的,大小一般取决于电阻和电源电压 4.另外如果在线调试时,进入停止模式后,调试失去作用,看看是不是SWDIO、SWCLK两个引脚也直接设置成了模拟输入,还关闭了调试功能:GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); 5.设备运行时开启的外设功能,视情况关闭,可以依次关闭看电流减小情况,并和数据手册做对比(要先关功能,再失能对应外设时钟,否则会关闭不成功,会有电流损耗,试验图1就是以为关闭了ADC,实际没关闭成功的情况,最后为板子总电流为74uA) RTC唤醒停止模式 外部中断功能已经实现,项目需求中另外还需要定时唤醒,现在选用RTC唤醒 EXTI有20个中断/事件线,每个GPIO都能被设置为输入线,占用EXTI0-EXTI15,有4根用于特定的外设事件触发 所以RTC的闹钟事件就能触发EXTI17中断(这就是为什么进入停止模式设置的是中断唤醒,但还能用RTC闹钟事件唤醒的原因,本质还是被外部中断唤醒) 全功能代码不需要改,在进入停止模式之前配置EXTI17中断,配置闹钟事件 /**************************************1.配置EXTI17中断*********************************/ EXTI_ClearITPendingBit(EXTI_Line17); //注意先清掉标志位,要不然可能会出现停止模式被忽略进 //入不了的问题,上面问题一截图有说明 EXTI_InitStructure.EXTI_Line = EXTI_Line17; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;

vuex 传参

图一 图二 图三 vue的项目,有一个填写资料的页面(图一),填写姓名,电话,特长啥的,然后特长是要跳转到第二个页面(图二)上的选择的,选择好了之后点击确定按钮,这个时候是要带着参数再回到之前的页面(图三)上的,一开始我这么跳转的 this.$router.push({path: 'release', query: {benefits: JSON.stringify(this.benefitsArr)}}); 但是这样子,就相当于是重新建了一个页面,返回的时候,就会要返回好多层,所以,我换了一种写法,直接返回上一页 this.$router.go(-1); 但是这样子,就传不了参数了啊,只能放缓存里了,搜了一下发现了vuex,下面是实战操作所总结的步骤 1.下载vuex,下载成功之后,可以在node_modules 看到vuex npm install vuex --save 2.在src文件目录下新建 store 文件夹,目录结构如下: import Vue from 'vue'; import vuex from 'vuex'; Vue.use(vuex); export default new vuex.Store({ state: { onshowCandyId: 1, benefits: '', requirements: '' } }); 3.在 main.js 里面引入 store ,全局注入 ,方便在各个组件里面使用 this.$store 4.存储数据 this.$store.state.benefits = array; //存数据 console.log('vuex中存储的benefits', this.$store.state.benefits); //取数据 至此大功告成啦,本文只是浅谈vuex,详细流程请参考https://segmentfault.com/a/1190000015782272

大于4GB镜像文件刻录方法

传统的Windows镜像文件中,不存在大于4G的单体文件。然而Win10镜像文件中install.wim大于4GB。 fat32格式无法存储,需要将文件格式改为NTFS格式。 使用ultraliso工具无法实现启动安装盘,可以使用rufus刻录工具。 select目标镜像后,按照如下设置后,选择start,等待刻录完成即可。

CSS-实现图片靠左、靠右、居中显示

通过在img标签外包一层具有text-align属性的元素,把图片当做文字来处理,如下: <div> <img src="images/top1.jpg" alt="这是一个图片"> </div> <p> <img src="images/top2.jpg" alt="这是一个图片"> </p> div div{ text-align: center; } p{ text-align: left; } img{ width: 20%; border-radius: 20px; }

xorg-xserver相关完全解析

本文主要是从以下几个方面介绍xorg-xserver 相关的知识 1.linux系统图形界面框架 2.xserver 和x client启动过程 3.图形2d,3d加速原理简介 4.xserver主分支代码解析。 5.xserver,xclient协议简介 6.一个基于Xlib的简单例子解析 7.radeon驱动初始化代码解析. 1.linux图形界面框架 参考至:http://dzdl.ipchina.org/site/?uid-9-action-viewspace-itemid-49 linux图形界面又称x系统,其主要包含如下几个部分: a)xserver b)显示管理器 (Display Manager) 例如(gdm kdm xdm等) c)窗口管理器 (Window Manager) 例如(metacity ,fluxbox等) d)DM 和 WM之上的一些图形应用程序 在使用中一般都是b,c,d三者集合起来构成一个完整的集成工作环境,例如KDE ,GNOME等 ,这就是我们平时所说的广义上的xclient a)xserver 主要提供基本的显示接口共xclient使用,并将用户的操作等也反映给xclient, 是xclient与硬件的一个中间层。xserver相关的两个主要部分是 (1) xorg.conf xorg.conf是X Server的主要配置文件,它包含一个当前系统的硬件资源列表。X Server就是根据这些硬件资源“组织”出基本的图形能力。xorg.conf文件在/etc/X11/xorg.conf,主要包含几个字段: Files: X系统使用的字体存放目录(字体的具体使用由FontConfig工具主持) InputDevice: 输入设备,如键盘鼠标的信息 Monitor: 显示器的设置,如分辨率,刷新率等 Device: 显示卡信息 Screen: 由Monitor和Device组装成一个Screen,表示由它们向这个Screen提供输出能力 ServerLayout: 将一个Screen和InputDevice组装成一个ServerLayout 在具有多个显示设备的系统中,可能有多个Screen和多个ServerLayout,用以实现不同的硬件搭配。 在最近的xorg版本中,X Server已经开始自动侦测硬件,现在的xorg.conf已经都成了默认名称。具体细节还待查,但基本原理还是不变的。 (2) X session(X会话) X session是指X server启动后直到X server关闭之间的这段时间。这期间一切跟X相关的动作都属于X session的内容。管理X session的程序称为Display Manager,常听说的gdm或kdm就是gnome/kde所分别对应的Display Manager。 开启一个X session,也就是开始了图形界面的使用。在开启的过程中,Display Manager会对用户进行认证(也就是用户名密码的输入),运行事先设置好的程序(比如scim输入法就是这个时候启动的)等等。

mybatis读写分离

mybatis读写分离实现方式有很多种,当然如果没有太过复杂的处理,可以使用阿里云数据库自带的读写分离连接,那样会更加简洁。本文主要对mybatis实现读写分离。主要的实现方式有一下四种: 方案1 通过MyBatis配置文件创建读写分离两个DataSource,每个SqlSessionFactoryBean对象的mapperLocations属性制定两个读写数据源的配置文件。将所有读的操作配置在读文件中,所有写的操作配置在写文件中。 优点:实现简单 缺点:维护麻烦,需要对原有的xml文件进行重新修改,不支持多读,不易扩展 <bean id="abstractDataSource" abstract="true" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000"/> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000"/> <property name="validationQuery" value="SELECT 'x'"/> <property name="testWhileIdle" value="true"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="true"/> <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/> <property name="filters" value="config"/> <property name="connectionProperties" value="config.decrypt=true" /> </bean> <bean id="readDataSource" parent="abstractDataSource"> <!-- 基本属性 url、user、password --> <property name="

JAVA 中protected 修饰符 的作用

之前学习C++的类的时候,发现设计一个类时,很少用到protected权限修饰符,一般都用public和private。需要被外部访问到的用public修饰,不需要被外部访问的就用private封装起来,但是学习的时候记得还有一个protected,当时一直搞不明白要多设计一个protected有什么用。 直到最近在用Java编写一个CTS测试用例,才发现了protected好用的地方。因为最近使用类的继承使用的较多,在进行类的继承的时候,一般都是默认的public继承,也就是继承下来的成员访问权限基本不变,这样的话,如果原先为public的成员,则子类中同样可以用,原先为private的成员,在子类直接调用的时候出现了问题。那这样就有问题了,如果一个成员既需要被子类访问到,又需要能够保护起来,不被外界随意修改,public 和 private 好像都无法很好的解决这个问题,这时候protected 就派上用场了。使用protected 修饰的成员,在继承子类中仍然时protected,仍然可以被访问,但是外界不能对其随意访问,真是太巧妙了。 看到网上有一种比喻说得挺形象,private是个人秘密,只有自己可用,除自身外的类都不可用,protected是家族秘密,只有父类子类等等有继承关系的可以使用,外界无法使用。而public则是公开的,自身和外界都能使用。

linux JAVA source .bash_profile不生效问题。

先看java -version $java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode) 然后: echo $JAVA_HOME 不一定有 如果没有,那就要找一下 先 $which java /usr/bin/java 再找到/usr/bin/java的超链接位置发现还是超链接 $ls -lrt /usr/bin/java lrwxrwxrwx 1 root root 22 Jul 27 11:43 /usr/bin/java -> /etc/alternatives/java 再来一次,发现最终位置 $ls -lrt /etc/alternatives/java lrwxrwxrwx 1 root root 35 Jul 27 11:43 /etc/alternatives/java -> /usr/java/jdk1.8.0_111/jre/bin/java 最后的这个jdk位置就是目前用的java的jdk位置 /usr/java/jdk1.8.0_111/(这个是我的,你用你自己的) 移动这个目录,然后设置新环境。 vi .bash_profile 追加内容如下: export JAVA_HOME=/usr/share/jdk1.7.0_71 export PATH=$JAVA_HOME/bin:$PATH

Dubbo报Waiting server-side response timeout. start time超时错误

Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout. start time: 2019-01-09 13:20:56.806, end time: 2019-01-09 13:20:57.808, client elapsed: 0 ms, server elapsed: 1001 ms, timeout: 1000 ms, request: Request [id=2, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=sendSms, parameterTypes=[class java.lang.String, class java.lang.Integer], arguments=[18655357100, 2], attachments={path=com.shsxt.xmjf.api.service.ISmsService, interface=com.shsxt.xmjf.api.service.ISmsService, version=0.0.0}]], channel: /192.168.18.1:65124 -> /192.168.18.1:20880 在consumer里的servlet-context.xml加入 <dubbo:consumer timeout=“30000”></dubbo:consumer>

docker安装MySQL8,目录挂载、配置用户名密码、忽略表名大小写、连接数、特殊字符、时区

一、环境配置 1、系统:centos7.3 2、docker版本:Docker version 1.13.1, build 07f3374/1.13.1 3、MySQL镜像:mysql 4、MySQL版本:8.0.13 二、安装部署 1、创建容器 docker run -di --name=mysql \ -v /usr/local/src/mysql/data:/var/lib/mysql \ -v /usr/local/src/mysql/conf/my.cnf:/etc/mysql/my.cnf \ --privileged=true \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 mysql \ --lower_case_table_names=1 执行效果如图所示: 2、配置my.cnf ① 将/usr/local/src/mysql/conf/目录下my.cnf的这个目录删除,rm -rf my.cnf/ ② /usr/local/src/mysql/conf/目录下新建my.cnf文件,文件内容如下所示: [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 max_connections=10000 default-time_zone='+8:00' character-set-client-handshake=FALSE character_set_server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci' # Custom config should go here !

最全面详细讲解Oracle入门(新手必看)

本章内容: Ø Oracle介绍 Ø 安装步骤 Ø 基本使用 Ø 用户管理 一、Oracle数据库简介 Oracle数据库是Oracle(甲骨文)公司的核心产品,适合于大型项目的开发;银行、电信、电商、金融等各领域都大量使用Oracle数据库。 Oracle数据库是一种对象关系型数据库,在关系型数据库的基础上,引入了一些面向对象的特性。 Oracle数据库的产品可以免费下载,其服务是收费的,也就是该数据库用于商业目的时,必须取得Oracle的授权。 Oracle出现有30年时间,经历了很多版本,目前最新的版本是12c。11g版本是目前比较稳定,很多企业也在使用,所以我们从此版本入门学习,后面的版本基本也不会有太大区别。 PS:MySQL是Java开发常用的数据库,MySQL的母公司08年被SUN公司收购,而SUN公司09年被Oracle收购,所以MySQL也是Oracle旗下的产品。 二、Oracle的安装: 1、可以从Oracle官网下载Oracle安装包 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 2、解压后双击setup.exe文件,弹出界面后选择高级安装 3、选择企业版 4、选择安装目录(目录不要包含中文),下面的名称和路径使用默认的就可以。 5、可以不用填写邮箱,直接下一步选是 6、Oracle会检查安装环境,可能会有部分失败,下一步选是 7、直接下一步 8、直接下一步 9、设置数据库名,也可以使用默认的 10、可以调整使用内存、字符集等,这里设置字符集为UTF8 11、下一步 12、下一步 13、下一步 14、这里为方便起见,可以设置所有账户使用统一口令,用于登录数据库。 15、接下来就可以开始安装了 16、安装过程中会自动弹出一些窗体,不需要理会 17、安装完成后,会出现下面的窗体,点击口令管理 18、这里将SCOTT账户解除锁定,该账户常用于学习 19、安装完成后,在Windows的系统服务中会出现几个服务: OracleServiceORCL是Oracle的核心服务,启动此服务,Oracle才能使用Oracle***Listener是客户端的监听服务,启动此服务,客户端才能连接OracleDBConsoleorcl是企业控制台B/S程序的后台服务 三、基本使用 安装完毕后,可以在Windows命令行输入sqlplus,可以打开Oracle自带的客户端程序sqlplus,一种简单的命令行程序,用于输入各种SQL命令用于管理数据库。 进入sqlplus需要输入用户名和密码,Oracle自带几个用户: sys 和system都是系统管理员(DBA),拥有最大的权限,密码是安装时设置的;scott是普通用户,拥有一些用于学习的表,初始密码是tiger。 下面使用system登录系统: 常用命令: show user; 显示当前用户名 shutdown immediate; 关闭数据库 startup open; 启动数据库 用户连接: conn 用户名/密码@连接字符串 as 角色 1)角色是权限的集合,以下是三个内置角色: sysdba 数据库管理员,拥有最多权限,包括:打开和关闭、备份和恢复数据库、日志管理、会话管理、创建数据库、用户管理等。 sysoper 数据库操作员,包括权限:打开和关闭、备份和恢复数据库、日志管理、会话管理。 normal 普通用户,只有查询表的权限。 2)连接字符串用于指定服务器的地址,如果连接本机,可以不写。如果需要连接登录远程服务器,则需要加上。 3)设置连接字符串的方法: 1、在Oracle的安装目录下,找到tnsnames.ora文件; 位置在Oracle目录\product\11.1.0\db_2\NETWORK\ADMIN下,如:C:\app\ch\product\11.1.0\db_2\NETWORK\ADMIN。

java.lang.IllegalArgumentException: ServletContext must not be null

系统刚刚整合了redis,实现集群下 session共享, 今天突然发现上传模块出现 无法获取servletcontext的问题,错误如下 07-Jan-2019 15:55:06.106 SEVERE [http-nio-7777-exec-9] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [insurance_web_servlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: ServletContext must not be null] with root cause java.lang.IllegalArgumentException: ServletContext must not be null at org.springframework.util.Assert.notNull(Assert.java:112) at org.springframework.web.util.WebUtils.getTempDir(WebUtils.java:212) at org.springframework.web.multipart.commons.CommonsMultipartResolver.setServletContext(CommonsMultipartResolver.java:117) at org.springframework.web.multipart.commons.CommonsMultipartResolver.<init>(CommonsMultipartResolver.java:87) at com.jufengad.insurance.api.global.file.DoUploadFile.upload(DoUploadFile.java:45) at com.jufengad.insurance.web.controller.file.UploadController.rateFileUpload(UploadController.java:108) at com.jufengad.insurance.web.controller.file.UploadController$$FastClassBySpringCGLIB$$8dd8eb86.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:711) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor$1.proceed(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:82) 之前获取上下文时,是通过httprequest session获取, 当session存储在redis时,获取上下文失败 request.getSession().getServletContext() 直接从request里获取就好,不用再从session里获取, request.getServletContext()

推荐 : 利用深度学习和机器学习预测股票市场(附代码)

来源:AISHWARYA SINGH, 2018年10月25日;翻译:赵雪尧;校对:车前子 本文约8000字,建议阅读15+分钟。 本文介绍了如何运用深度学习法预测股票市场。 简介 预测股市将如何变化历来是最困难的事情之一。这个预测行为中包含着如此之多的因素—包括物理或心理因素、理性或者不理性行为因素等等。所有这些因素结合在一起,使得股价波动剧烈,很难准确预测。 使用机器学习可能改变游戏规则吗?机器学习技术使用最新的组织公告、季度收益等作为特征,有潜力挖掘出我们以前没有见过的模式和见解,并可用于准确无误的预测。 在本文中,我们将研究上市公司股价的历史数据。我们将结合机器学习算法来预测这家公司的未来股价,从平均和线性回归这样的简单算法开始,然后转向像Auto ARIMA和LSTM这样的高级模型。 本文背后的核心思想是展示这些算法是如何实现的,因此我只会简单描述该技术并提供相关参考链接,以便在必要时对这些概念进行复习。如果您是时间序列领域的新手,我建议您先阅读以下文章: 创建时间序列预测的初学者综合指南 时间序列建模的完整教程 目录 1、 问题理解 2、 移动平均 3、 线性回归 4、 K-近邻 5、 自动ARIMA 6、 先知(Prophet) 7、 长短时记忆网络(LSTM) 1、问题理解 我们将很快深入本文的实现部分,但首先重要的是确定我们要解决的问题。一般来说,股票市场分析分为两个部分——基本面分析和技术分析。 基本面分析是根据公司目前的经营环境和财务状况,对公司未来的盈利能力进行分析。 技术分析包括阅读图表和使用统计数字来确定股票市场的趋势。 您可能已经猜到,我们的重点将放在技术分析部分。我们将使用来自Quandl的数据集(您可以在这里找到各种股票的历史数据),这个项目中,我使用了“塔塔全球饮料”的数据。是时候开始了! 首先让我们加载数据集,定义问题的目标变量: #import packages import pandas as pd import numpy as np #to plot within notebook import matplotlib.pyplot as plt %matplotlib inline #setting figure size from matplotlib.pylab import rcParams rcParams['figure.figsize'] = 20,10 #for normalizing data from sklearn.preprocessing import MinMaxScaler

Quartus (Quartus Prime 18.1)的安装及仿真步骤

前两天做计组的课设需要用到Quartus 这个软件,但安装有点麻烦,在网上搜了很多教程,发现都是旧版本的,最后弄了好半天才把环境搭建好。所以,分享一下它的搭建过程。 因为我不经常用它,所以安装的版本是精简版的其他版本的也应该差不多以下是需要下载的安装包: 准备: Quartus Prime 精简版,最新发布: v18.1 1. QuartusLiteSetup-18.1.0.625-windows.exe(主程序) http://download.altera.com/akdlm/software/acdsinst/18.1std/625/ib_installers/QuartusLiteS etup-18.1.0.625-windows.exe 2. ModelSimSetup-18.1.0.625-windows.exe(仿真软件) http://download.altera.com/akdlm/software/acdsinst/18.1std/625/ib_installers/ModelSimSet up-18.1.0.625-windows.exe 3. MAX II, MAX V device support (Devices 包,除了 CPU 设计外,MAX V 够了) http://download.altera.com/akdlm/software/acdsinst/18.1std/625/ib_installers/max- 18.1.0.625.qdz 4. Cyclone-18.1.0.625.qdz (也是Devices 包,根据需要下载) http://download.altera.com/akdlm/software/acdsinst/18.1std/625/ib_installers/cyclone- 18.1.0.625.qdz 上面的下载地址好像出了问题,可以去 http://fpgasoftware.intel.com/?edition=lite&platform=windows&download_manager=direct&direct_download=1&version_number=17.0&description=Quartus+Prime+%28includes+Nios+II+EDS%29&download_method=download&filesize=1851290979&direct_file=QuartusLiteSetup-17.0.0.595-windows.exe 这个地址去找相应的文件下载。 安装步骤: 把所有安装包放进一个目录,方便安装 然后打开QuartusLiteSetup-18.1.0.625-windows.exe,点next就行 剩下一直next就行,选地址,我选的E盘 放在一起,它会帮你选好,直接next 后边就等待下载安装就行了。 安装完毕。 打开Quartus (Quartus Prime 18.1) ps:第一次打开会出现什么 license 根据需要自己选吧,我选的第二个没用license 设置ModelSim 路径 找到ModelSim 的路径复制 在菜单选择 Tool->option->EDA Tool Option,把路径复制到中间的 ModelSim 的框框中 ps:不加最后那个斜杠在我的电脑上会出错,但我在其他电脑上用不加就没事,视情况而定吧 点确定,然后环境就配置完了 软件的使用 新建 写代码保存,注意文件名

报错:unrecognized command line option ‘-std=c++11’

使用命令查看g++版本。 root@ubuntu:/home/neo# g++ --version g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. root@ubuntu:/home/neo# ubuntu系统中是4.6.3版本,不支持c++11。-std=c++11至少需要4.8的版本 下载“gcc-4.8.2.tar.gz”安装包: https://ftp.gnu.org/gnu/gcc/gcc-4.8.2/ 下载完之后解压、运行脚本。 tar -vxf gcc-4.8.2.tar.bz2 cd gcc-4.8.2/contrib/ ./download_prerequisites cd .. mkdir __install cd __install/ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib make & make install 在运行上述命令过程中会报如下错误: configure: error: Building GCC requires GMP 4.

Zookeeper Curator 事件监听 - 10分钟看懂

文章很长,建议收藏起来,慢慢读! 备注:持续更新中… 疯狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 大厂必备 + 涨薪必备疯狂创客圈 经典图书 : 《SpringCloud、Nginx高并发核心编程》 面试必备 + 大厂必备 + 涨薪必备疯狂创客圈 价值1000元 百度网盘资源大礼包,免费拿 【博客园总入口 】 文章目录 价值连城:2021春招月薪过5万 面试题 系列万字长文: 疯狂创客圈 springCloud 高并发系列写在前面1.1. **Curator 事件监听**1.1.1. Watcher 标准的事件处理器1.1.2. NodeCache 节点缓存的监听1.1.3. PathChildrenCache 子节点监听1.1.4. Tree Cache 节点树缓存写在最后疯狂创客圈 亿级流量 高并发IM 实战 系列 价值连城:2021春招月薪过5万 面试题 系列 搞定下面这些面试题,2021春招月薪过5万(猛!)阿里、京东、美团、头条… 随意挑、横着走!!!Java基础1: JVM面试题(史上最强、持续更新、吐血推荐)https://www.cnblogs.com/crazymakercircle/p/14365820.html2:Java基础面试题(史上最全、持续更新、吐血推荐)https://www.cnblogs.com/crazymakercircle/p/14366081.html3:死锁面试题(史上最强、持续更新)[https://www.cnblogs.com/crazymakercircle/p/14323919.html]4:设计模式面试题 (史上最全、持续更新、吐血推荐)https://www.cnblogs.com/crazymakercircle/p/14367101.html5:架构设计面试题 (史上最全、持续更新、吐血推荐)https://www.cnblogs.com/crazymakercircle/p/14367907.html还有 10 几篇 篇价值连城 的面试题具体… 请参见【 疯狂创客圈 高并发 总目录 】 万字长文: 疯狂创客圈 springCloud 高并发系列 springCloud 高质量 博文 nacos 实战(史上最全) sentinel (史上最全+入门教程) springcloud + webflux 高并发实战 Webflux(史上最全) SpringCloud gateway (史上最全)还有 10 几篇 万字长文 的高质量 博文具体… 请参见【 疯狂创客圈 高并发 总目录 】 写在前面 ​ 大家好,我是作者尼恩。目前和几个小伙伴一起,组织了一个高并发的实战社群【疯狂创客圈】。正在开始高并发、亿级流程的 IM 聊天程序 学习和实战

部署工具(deploy-tool)开源拉!

文章目录 概述部署工具介绍面向用户功能特性在线文档快速使用问题及反馈License 概述 部署工具(deploy-tool)开源拉!你是否在为项目的私有部署烦恼?是否每次项目部署都得重复设置配置?是否每次部署都需要来回调试?部署工具(deploy-tool)就是为了解决此问题而出现。现把它开源,旨在帮助用户在私有部署繁琐的问题,欢迎使用。开源地址如下: github: https://github.com/mianshenglee/deploy-tool 码云: https://gitee.com/mianshenglee/deploy-tool 部署工具介绍 对于产品部署,特别是项目型的产品在客户环境私有化部署,若是手动部署,需要自己打包产品,配置程序,安装环境,相对来讲部署过程复杂,配置文件繁琐,配置容易出错。部署工具的主要目的是固化原来手工部署的流程,并提供简化、统一的配置项,分产品、环境、模块进行自动部署。本部署工具主要用于帮助产品实施人员更快,更好,更有条理部署应用产品。 面向用户 使用部署工具,主要是固化原来手工部署的流程,并提供简化、统一的配置项,分产品、环境、模块进行自动部署,面向的对象主要包括: 产品发布人员:管理产品版本,管理产品分发,根据情况修改部署工具环境、流程、配置项。产品部署人员:内部产品部署、测试。项目实施人员:项目实施部署。 功能特性 部署工具主要有以下功能: 固化部署流程:各个产品部署流程都不一样,部署什么环境、产品包含什么模块,各模块安装顺序如何,均在在部署工具中进行设置、固化,以便部署实施人员使用。提供简化、统一配置项:在一套产品中,需要配置的项可以集中在统一、简化的配置文件,产品中各模块需要修改的配置均可在配置此文件中进行读取,替换即可。分产品、环境、模块进行操作:部署需要安装的环境、产品模块均可自定义,并在部署的命令行界面中显示及运行。支持windows及linux下运行部署。提供shell/bat执行功能:可自定义部署脚本,并在部署工具中运行。提供数据库脚本执行功能:包括数据CURD操作。提供ssl证书生成功能:可对https需要的证书进行自签操作。提供配置文件替换功能:可按模板替换/按xml局部查找替换/properties文件key匹配替换。提供生成二维码功能:可根据参数生成二维码。提供动态配置项功能:某些配置需要根据已的配置计算或变换得出。查看统一配置文件内容。 在线文档 在线帮助文档linux使用示例 提取码:l8qu,压缩包中有使用帮助文档readme.txt,按里面说明操作即可。windows使用示例 提取码:kohq,压缩包中有使用帮助文档readme.txt,按里面说明操作即可。 快速使用 下载代码到本地使用idea或eclipse引入工程,使用mvn clean package进行打包打包出来的deploy-tool.jar即为部署工具具体使用示例请见在线文档及相关示例说明 问题及反馈 使用过程中问题可发邮件到mianshenglee@foxmail.com License deploy-tool 使用 Apache 2.0 license. 具体请查看 Apache License 2.0 。

Windows无线网“无法连接到这个网络”的解决办法

问题:重启了路由器然后连不上wifi,报错无法连接到这个网络 1、右击想要连接的wifi,然后点【忘记】,重新连接。 2、重启“WLAN Autoconfig”这个服务,【服务】在【计算机管理】中。 3、用手机连WiFi,打开路由器的后台管理界面(192.168.0.1),将“信道”由原来的Auto改成了1。 转:https://www.cnblogs.com/jloveu/p/solution-of-fail-to-connect-to-the-network.html

tomcat中的webapps文件夹和ROOT文件的区别和作用

我们平时在服务器上部署web项目时,直接将war包扔到tomcat中的webapps文件下后重启tomcat后,war包会自动解压,这时访问项目的地址是ip+端口+项目名称就可以,如果你要去除项目名有2种方法: 1.将解压后的项目war包文件放到ROOT文件夹下,这里注意:不要把整个项目war包文件夹扔进去,这样是会访问不到报404的,这样访问项目就可以是ip+端口号了,还有就是每次更新war包后要同步更新ROOT文件夹下面的项目文件,不然ip+端口号和ip+端口号+项目名称看到的东西是不一样的. 2.不用将解压后的war包项目文件放到ROOT文件,更改tomcat中的conf文件夹下的server.xml文件。更改如下:在文件最下面的host标签中最后面新加我注释的这行,其中docBase是你webapps下的解压项目路径。 <Context path="/" docBase="/usr/tomcat/apache-tomcat-7.0.92/webapps/jeeplus/" reloadable="true" crossContext="true" /> 注意:ROOT文件删除后。tomcat启动后还是会生成的。刚开始访问tomcat时看到的猫页面的文件就是在ROOT文件夹下的。 

动态规划-最大子数组

题目: 给定一个整数数组,找出和最大的子数组,返回其和。例如,(1,-2,3,5,-1,2)最大子数组(3,5,-1,2),和为9. 分析: 利用动态规划,记Sum[i]表示以A[i]结尾的子数组中的和最大子数组。Sum[i+1]呢? 考虑Sum[i]的情况,若Sum[i]>0(即Sum[i]+A[i+1]>A[i+1]),则Sum[i+1]=Sum[i]+A[i+1]; 若Sum[i]<0(即Sum[i]+A[i+1]<A[i+1])则Sum[i+1]=A[i+1];当然,相等时取任意一个即可。 由此可知,Sum[i+1]=max(Sum[i]+A[i+1],A[i+1]); MaxSubArr(int A[], int &n)参数:数组A,数组大小n。时间复杂度:O(n) 代码: //查找最大子数组函数 int MaxSubArr(int A[],int &n) { int Sum; Sum = A[0]; for (int i = 1;i < n;i++) Sum = max(Sum + A[i], A[i]); return Sum; } 全部代码: /* Project: dp_muxSubArr Date: 2018/01/03 Author: Frank Yu 题目:给定一个整数数组,找出和最大得的子数组,返回其和。例如,(1,-2,3,5,-1,2)最大子数组(3,5,-1,2),和为9. 分析:利用动态规划,记Sum[i]表示以A[i]结尾的子数组中的和最大子数组。Sum[i+1]呢? 考虑Sum[i]的情况,若Sum[i]>0(即Sum[i]+A[i+1]>A[i+1]),则Sum[i+1]=Sum[i]+A[i+1]; 若Sum[i]<0(即Sum[i]+A[i+1]<A[i+1])则Sum[i+1]=A[i+1];当然,相等时取任意一个即可。 由此可知,Sum[i+1]=max(Sum[i]+A[i+1],A[i+1]); MaxSubArr(int A[], int &n)参数:数组A,数组大小n。时间复杂度:O(n) */ #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> #define MaxSize 100 #define Status int using namespace std; int n = 0; int A[MaxSize]; //***************************基本操作函数*******************************// //初始化数组函数,构造一个空的数组 Status InitArray(int A[]) { memset(A, 0, sizeof(A));//初始化数据为0 return 0; } //创建数组函数 初始化前n个数据 bool CreatArray(int A[], int &n) { if (n<0 || n>MaxSize)false;//n非法 for (int i = 0;i<n;i++) { scanf_s("

理解cassandra架构

本文是我在看cassandra官方文档时写的一篇翻译,由于能力有限,很多地方都翻译的不到位或者和原意有出入,希望大家可以给予指正,由于翻译的较早,而且没有全部完成,有些观点可能已经在最新的cassandra中被更新或者改变,我也会在之后的时间将这些内容补全和修复 Cassandra是一种无性能损耗的高拓展性和可用性的分布式数据库。线性的可伸缩性以及被商品级硬件设施和云基础架构验证的容错技术使它成为任务关键型数据存储的良好平台。Cassandra支持跨多个数据中心的副本备份是非常棒的,为使用者提供低延迟和即使某个区域停电也能正常运转的放心。 节点间通信(gossip) Gossip是一种点对点的通信协议,按照这个协议节点间定期的交换自己和其他他们知道的节点的状态信息。Gossip进程每秒运行一次来与集群上的最多其他3个节点交换状态信息。 这些节点交换自己的信息和其他的与这些节点通信的节点信息。所以所有的节点可以快速的了解到集群上的其他节点。 为了防止gossip通信出现问题,为集群中所有的节点使用了相同列表的种子节点。这种情况在第一个节点启动时非常重要。默认情况下,一个节点在随后的重启中会记住与它通信的其他节点。种子节点的选定除了为新节点加入集群时引导gossiped过程外再无其他目的。种子节点不会有单点故障,除了引导节点外再无其他特定的目的。 在多个数据中心集群,从每个数据中心的种子列表中选取一个节点是一个好主意。建议每个数据中心指定多余一个种子节点来提高容错能力。否则,当引导一个节点时gossip不得不与另一个数据中心通信。 不建议为每个节点都创建种子节点,因为这增了加维护量同时降低了性能。Gossip的优化不是关键,但是建议使用一个有少量种子节点的列表(大约每个数据中心三个节点) 失败检测和恢复 如果另一个节点挂掉了或者正在恢复中,失败检测方法用于本地确定gossip的状态和历史。Cassandra使用这个信息避免客户端请求被路由到不可到达的节点。(Cassandra也可以避免请求被路由到活着的但是效率低下的节点,请参考dynamic snitch Gossip进程使用直接方式(节点的gossiping直接导向他)和间接方式(节点的信息被传达2手,三手,等等)跟踪节点的状态。Cassandra不是使用固定的阈值来标记失败的节点,而是使用一个责权检测机制来计算考虑了账户网路性能,工作量和历史条件的每个节点的阈值。在gossip交换期间,每个节点维护一个与集群中的其他节点的关于gossip信息的上次到达时间的滑动窗口。通过配置phi_convict_threshold 属性来调整错误检测器的灵敏程度。较低的值增加了无反应节点被标记为down的可能性,而较高的值减少了瞬时错误引起的节点故障的可能性。大多数情况使用默认值即可,但是为亚马逊EC2将其增加到10-12(由于经常遇到的网络拥堵)。在不稳定的网络环境(例如有时候EC2就是这样),提高值为10或12有利于防止虚假故障,不建议使用值高于12和低于5。 节点失败可能由各种原因引起,如硬件失败和网络中断。节点中断往往瞬变,但可以持续很长时间。因为节点中断很少意味着它将从集群中永久的离开,这不会自动导致永久从环中移除节点。其他节点将定期与失败节点尝试建立连接查看他们是否备份。要在集群上永久改变节点的资格,管理员必须从cassandra环上使用 nodetool utility.工具精准的添加或者移除节点。当一个节点在宕机后重新联机时,或许它已经遗失了它所维护的对于副本数据的写操作。存在一个修复机制以恢复遗失的数据,例如hinted handoffs和使用nodetool手动修复。宕机时间的长短将决定哪种修复机制被用于保持数据一致性。 一致性hash允许数据分布跨越一个集群,以减少增加或减少节点时进行的重组操作。一致性hash基于partition key为数据分区,关于partition key和主见的介绍,请参考 Data modeling example 例如,你有如下数据 Cassandra是一种无性能损耗的高拓展性和可用性的分布式数据库。线性的可伸缩性以及被商品级硬件设施和云基础架构验证的容错技术使它成为任务关键型数据存储的良好平台。Cassandra支持跨多个数据中心的副本备份是非常棒的,为使用者提供低延迟和即使某个区域停电也能正常运转的放心。 节点间通信(gossip) Gossip是一种点对点的通信协议,按照这个协议节点间定期的交换自己和其他他们知道的节点的状态信息。Gossip进程每秒运行一次来与集群上的最多其他3个节点交换状态信息。 这些节点交换自己的信息和其他的与这些节点通信的节点信息。所以所有的节点可以快速的了解到集群上的其他节点。 为了防止gossip通信出现问题,为集群中所有的节点使用了相同列表的种子节点。这种情况在第一个节点启动时非常重要。默认情况下,一个节点在随后的重启中会记住与它通信的其他节点。种子节点的选定除了为新节点加入集群时引导gossiped过程外再无其他目的。种子节点不会有单点故障,除了引导节点外再无其他特定的目的。 在多个数据中心集群,从每个数据中心的种子列表中选取一个节点是一个好主意。建议每个数据中心指定多余一个种子节点来提高容错能力。否则,当引导一个节点时gossip不得不与另一个数据中心通信。 不建议为每个节点都创建种子节点,因为这增了加维护量同时降低了性能。Gossip的优化不是关键,但是建议使用一个有少量种子节点的列表(大约每个数据中心三个节点) 失败检测和恢复 如果另一个节点挂掉了或者正在恢复中,失败检测方法用于本地确定gossip的状态和历史。Cassandra使用这个信息避免客户端请求被路由到不可到达的节点。(Cassandra也可以避免请求被路由到活着的但是效率低下的节点,请参考dynamic snitch Gossip进程使用直接方式(节点的gossiping直接导向他)和间接方式(节点的信息被传达2手,三手,等等)跟踪节点的状态。Cassandra不是使用固定的阈值来标记失败的节点,而是使用一个责权检测机制来计算考虑了账户网路性能,工作量和历史条件的每个节点的阈值。在gossip交换期间,每个节点维护一个与集群中的其他节点的关于gossip信息的上次到达时间的滑动窗口。通过配置phi_convict_threshold 属性来调整错误检测器的灵敏程度。较低的值增加了无反应节点被标记为down的可能性,而较高的值减少了瞬时错误引起的节点故障的可能性。大多数情况使用默认值即可,但是为亚马逊EC2将其增加到10-12(由于经常遇到的网络拥堵)。在不稳定的网络环境(例如有时候EC2就是这样),提高值为10或12有利于防止虚假故障,不建议使用值高于12和低于5。 节点失败可能由各种原因引起,如硬件失败和网络中断。节点中断往往瞬变,但可以持续很长时间。因为节点中断很少意味着它将从集群中永久的离开,这不会自动导致永久从环中移除节点。其他节点将定期与失败节点尝试建立连接查看他们是否备份。要在集群上永久改变节点的资格,管理员必须从cassandra环上使用 nodetool utility.工具精准的添加或者移除节点。当一个节点在宕机后重新联机时,或许它已经遗失了它所维护的对于副本数据的写操作。存在一个修复机制以恢复遗失的数据,例如hinted handoffs和使用nodetool手动修复。宕机时间的长短将决定哪种修复机制被用于保持数据一致性。 一致性hash允许数据分布跨越一个集群,以减少增加或减少节点时进行的重组操作。一致性hash基于partition key为数据分区,关于partition key和主见的介绍,请参考 Data modeling example 例如,你有如下数据 name age car gender jim 36 camaro M carol 37 bmw F johnny 12 M suzy 10 F Cassandra assigns a hash value to each partition key: