程序员接私活最最完整攻略

接私活对于程序员这个圈子来说是一个既公开又隐私的话题,当你竭尽全力想要去接私活的时候一定做过这样的事情,百度搜索“程序员如何接私活”、“程序员在哪里接外包”等等问题,今天就送大家最完整攻略,千万别错过了。 做私活挣钱吗? 必然是为了挣钱才接的私活啊。尤其是对于刚进场的选手,有时候一次外包收入可以抵上一年的工资。不仅赚钱,还能积累经验,外包项目五花八门,开发地图的、搞语音的、弄视频的,等等都能帮助初级选手快速成长,学习到很多在工作中学不到的经验。 做私活累吗? 当然累。别人在共进晚餐的时候,你在做私活;别人的周末畅游的时候,你在做私活。可以说是白天黑夜,从不停歇,直到交付私活的那一刻。图片 有哪些方法可以接到私活? 方法1:各个众包平台 程序员客栈:程序员、产品经理、设计师等互联网相关人员,都能在上面找到适合自己的项目。支持自由、远程和兼职工作,还可以按需雇佣,工作模式非常多。 开源众包:开源中国的众包平台,主要是以众包为主。目前软件众包分为简单任务和复杂任务,简单软件众包的任务可以由个人来承担,比较复杂的软件可以同时协同多人完成的任务。 码市:基于云技术的软件外包服务平台。 人人开发:集可视化开发、应用市场、威客众包、PaaS云于一体的企业级应用服务平台 码易:高质量软件众包交付服务平台—码易众包平台。 开发邦:服务范围明确,IT开发项目垂直度高,能吸引到一部分需求明确的客户。平台也致力于利用互联网软件技术为客户提高效率、降低成本、提升效能、优化管理。 猪八戒:找兼职的地方,主要是入门级项目,上面各类需求发布都有不限于软件开发行业,更适合新手 devnors:一个国外远程工作平台英语水平高的程序员可以考虑在此接单。 方法2:成为外包公司的备选开发人员 当外包公司出现人员紧缺、项目过剩、员工离职等情况时,不排除他们会考虑找临时替补人员,甚至把项目整包转出去。 如果你身边有朋友开外包公司的,那很好,先天优势,长期互助。但是大部分人也许并没有这样的资源,那么这就是个体力活了,在方法1的基础上,部分平台会留下甲方的联系方式,拿到信息后可以将自己想要做外包的意图告诉对方,然后成不成就看对方是否联系你了。 方法3:人脉资源 除了从网络上接项目,或者吃外包公司的残羹冷炙,还有另外一个类别的项目,那就是创业者。很多创业者并没有拿到融资,他们等着先开发一个上线项目,再拿项目去找投资。如果你能接到这样的项目,那也是很爽的,不过通常这类项目靠熟人介绍。 做私活没有稳定的渠道,你可能一直找不到项目,也可能一年一个项目,重点是心态,不然你将陷入困扰的情绪当中。有更好,没有拉倒,找到最舒服的状态。 `黑客&网络安全如何学习 今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。 1.学习路线图 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。 2.视频教程 网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。 内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。 (都打包成一块的了,不能一一展开,总共300多集) 因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取 CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享 3.技术文档和电子书 技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取 CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享 4.工具包、面试题和源码 “工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。 因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取 CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享 最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。 这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。 参考解析:深信服官网、奇安信官网、Freebuf、csdn等 内容特点:条理清晰,含图像化表示更加易懂。 内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF… 因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取 CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

已解决org.apache.zookeeper.KeeperException.NotEmptyException异常的正确解决方法,亲测有效!!!

已解决org.apache.zookeeper.KeeperException.NotEmptyException异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 总结 博主v:XiaoMing_Java Apache ZooKeeper是一个开源的分布式协调服务,它主要用于维护配置信息、命名注册、提供分布式同步以及提供群组服务等。然而,在使用ZooKeeper进行节点管理时,我们可能会遇到org.apache.zookeeper.KeeperException.NotEmptyException异常。本文将详细介绍这个异常的出现场景、原因分析、解决思路和具体解决方法。 问题分析 KeeperException.NotEmptyException通常发生在尝试删除一个非空的znode(ZooKeeper中的数据节点)时。在ZooKeeper中,每个节点都可以有子节点,而根据ZooKeeper的设计,当我们尝试删除一个节点时,如果该节点下还存在子节点,则不允许直接删除,这时就会抛出NotEmptyException异常。 报错原因 报错的主要原因是删除操作的目标节点下仍然包含一个或多个子节点。由于ZooKeeper的安全机制,为了防止数据的意外丢失,它不允许直接删除包含子节点的节点。这与文件系统类似,你无法直接删除一个包含文件或其他目录的目录。 解决思路 要解决这个问题,我们需要先递归地删除目标节点下的所有子节点,确保目标节点为空,然后再执行删除操作。解决步骤如下: 连接到ZooKeeper服务器。获取目标节点下的所有子节点。递归地删除所有子节点。删除目标节点本身。 解决方法 以下是实现上述解决思路的详细步骤和代码示例: 连接ZooKeeper服务器:首先,我们需要创建一个ZooKeeper客户端实例并与服务器建立连接。 ZooKeeper zk = new ZooKeeper("host:port", timeout, watcher); 获取子节点列表:使用zk.getChildren(path, watch)方法来获取目标节点下的子节点列表。 List<String> children = zk.getChildren("/path/to/znode", false); 递归删除子节点:对于获取到的每个子节点,我们需要递归执行删除操作。 public void deleteNodeRecursively(ZooKeeper zk, String path) throws KeeperException, InterruptedException { List<String> children = zk.getChildren(path, false); for (String child : children) { // 获取子节点的完整路径 String childPath = path + "/" + child; deleteNodeRecursively(zk, childPath); } // 所有子节点删除后,删除节点本身 zk.

Vue3 - 笔记

1.创建Vue3项目 1.1vue-cli 使用vue-cli创建Vue3项目,需要确保vue-cli版本在4.5.0以上 ## 查看@vue/cli版本,确保@vue/cli版本在4.5.0以上 vue --version vue -V ## 安装或者升级@vue/cli npm install -g @vue/cli 使用vue-cli创建Vue3项目 vue create vue3_study(项目名称) 1.2Vite vite创建Vue3项目步骤: ## 创建工程 npm init vite-app 项目名称 npm init vue@latest ## 进入工程目录 cd <project-name> ## 安装依赖 npm install ## 运行 npm run dev 2.项目结构 使用的为vue-cli创建的项目 src\main.js // 引入的为一个名为createApp的工厂函数,不再是Vue构造函数 import { createApp } from 'vue' import App from './App.vue' // 创建应用实例对象,类似于Vue2中的vm,但是更“轻”,并挂载根标签 createApp(App).mount('#app') src\App.vue <template> <!-- Vue3组件中的模板结构可以没有根标签 --> <img alt="Vue logo" src="

什么是自动化测试,自动化测试有什么作用

目录 1.什么是自动化测试 2.单元测试: 3.接口自动化 4.UI自动化 4.1Ui自动化的特点 4.2UI自动化测试使用的对象 5.小结 1.什么是自动化测试 在技术日益发展的今天,一个优秀的项目,不仅仅是开发人员的心血,更离不开测试人员的帮助.传统的人力测试会消耗大量的人力资源和时间成本.在面对一些项目的时候就显得力不从心了,这时候我们可以使用自动化测试来帮助我们来减少时间成本和人力成本,达到我们预期的结果. 自动化测试值软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估结果,将人为驱动的测试行为转化为机器自动的过程. 自动化测试金字塔. 包括有ui自动化,接口自动化,单元测试自动化,按照这个金字塔模型来进行自动化规划,可以产生最佳的自动化测试产出投入比,可以用较小的投入获得很好的收益. 2.单元测试: 最大的投入应该在单车测试上,单元测试运行的频率更加高. Java的单元测试是Junit,在idea中,右键 然后greate 选test 3.接口自动化 接口自动化就是api测试,相对于ui自动化,api自动化更容易实现,执行起来也更稳定. 接口自动化有以下特点: 可在产品前期,接口完成后介入: 用户维护量小: 适合接口变动较小,界面变动频繁的项目. 常用的接口测试工具有:Soapui,TestNG+HttpClient,Postman等. 4.UI自动化 虽然测试金字塔来看,我们应该多做API层的自动化测试,但是ui层的自动化测试更加贴近用户的需求和软件系统的实际业务,并且有时候我们不得不进行UI层的测试. 4.1Ui自动化的特点 用例维护量大; 页面相关性强,必须是后期项目页面开发完成用户介入; UI测试适合页面变动小的项目. 降低大型系统的由于变更或者多期开发引起的大量的回归测试的人力投入,这可能是自动化测试最主要的任务,特别是在程序修改比较频繁,效果是非常明显的,自动化测试前期人力投入较多,但后期进入维护期后,可节省大量人力,而手工测试后期需要增加大量人力用于回归测试减少重复测试的时间,实现快速回归测试创建优良可靠的测试过程,减少人为错误可以运行更多更繁琐的测试可以执行一些手工测试困难或不可能进行的测试更好的利用资源测试脚本的重用性 UI测试的框架比较多,比如windows客户端测试的AutoIT,web测试的selenium以及testPlanteggPlant,Robot framework,QTP等. 其中selenium是一个很不错的自动化测试框架,它有以下优点: 1.免费,不需要花钱或者去破解软件而大费脑筋 2.支持的语言多,无论是C 还是 Java ruby python 都可以通过selenium完成自动化测试 3.支持多平台,如windows,linux,MAC, 支持多游览器,如:ie ff safari opera chrome 4 支持分布式测试用例的执行,可以把测试用例分到不同的机器进行执行. 4.2UI自动化测试使用的对象 实施自动化测试的前提: 需求变动不频繁,项目周期足够长,自动化脚本可重复使用 适合做自动化的项目: 1、产品型项目。产品型的项目,新版本是在旧版本的基础上进行改进,功能变不大的项目,但项目的新老功能都必须重复的进行回归测试。回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。 2、机械并频繁的测试。每次需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长。比如兼容性测试。 以下情况的项目不适合做自动化测试: 1、需求变动频繁的项目,自动化脚本不能重复使用,维护成本太大,性价比低 2、项目周期短,自动化脚本编制完成后使用次数不多,性价比低 3、交互型较强的项目,需要人工干预的项目,自动化无法实施 如何实施自动化测试: 1.分析,总体把握系统逻辑,分析核心体系架构 2.设计测试用例 3.实现,实现脚本,有两个要求 断言 , 合理运用参数化 4.执行脚本 5.总结,对测试结果进行分析,和测试过程的总价是自动化测试的关键

【JavaScript】JavaScript 运算符 ④ ( 逻辑运算符 | 逻辑与运算符 && | 逻辑或运算符 || | 逻辑非运算符 ! )

文章目录 一、JavaScript 逻辑运算符1、逻辑运算符 概念2、逻辑与运算符 &&3、逻辑或运算符 ||4、逻辑非运算符 !5、完整代码示例 一、JavaScript 逻辑运算符 1、逻辑运算符 概念 JavaScript 中的 逻辑运算符 的作用是 对 布尔值 进行运算 , 运算完成 后 的 返回值 也是 布尔值 ; 逻辑运算符 的 使用场景 : 条件控制语句 , 控制程序分支 ;循环控制语句 , 控制程序循环 ; 逻辑 运算符 列举 : && : 逻辑与运算 , 两个操作数都为 true , 最终结果才为 true ,只要有一个操作数是 false , 结果就是 false ; || : 逻辑或运算 , 两个操作数都为 false , 最终结果才为 false ,只要有一个操作数是 true , 结果就是 true ; !

深度学习-基于机器学习的情绪分析研究

概要 互联网技术的迅速发展使得社交平台逐渐成为热点事件中社会情感的枢纽。社会热点事件的舆论监管的其中一个重要环节就是能够准确分析民众的社会情绪。本文旨在探索可以基于文本大数据彻底分析民众对热点事件的社会情绪的模型和方法。先是从社交平台上借助文本大数据、对数据进行提前处理以及用python自然语言处理包等方法建立能够分析社会情绪的模型,其次找到最佳的机器学习算法,再次用机器学习的方法对模型进行训练,获得一个情感分类器。最后用热点事件“冠状病毒”的真实数据在情感分类器上进行社会情绪分析验证,证明了模型和方法的有效性。 关键词:网络文本大数据;机器学习;情绪分类器;社会情绪分析; 一、研究背景与意义 1.1设计目的及意义 近来,社交媒体和电子商务平台发展迅速,Twitter、微博、MSN、微信等社交网络正逐渐地改变着人们的生活,越来越多的人习惯于通过网络平台表达自己的态度和情感,这些网络文本是客户流露的真实情感。对网络文本大数据热门事件的情绪进行分析可以使人们获得更多关于内心世界的知识,因此,从这些文本信息中自动准确的识别客户的情感类别,对政府舆情监控、企业管理与决策来说是一个很大的支持,它也成为学术界近来持续关注的研究热点,同时极大地促进了情绪分析技术的发展。 1.2本课题国内外现状及存在问题 文本情感分析也可以说是挖掘文本意见的方法。简而言之,它是分析,处理,总结和推断具有情感色彩的主观文本的过程[1]。目前海内外关于文本情绪分析研究的方向主要有两个:一个是判断主观信息的细粒度,另一个是判断文本的主客观性。前者强调将情感词作为中心去分析文本级的情绪倾向,而文本的情绪倾向是通过贬值情感词的线性加权值来实现的。熊德兰等人[2]基于How Net语义词典中词汇语义相似度的计算方法。意在基于语义词典,充分想到词语组成在一起之后语义可能改变,直接影响到情感褒贬判断的偏向结果,于是用各个词语义进行权重计算结果来判断从而避免受影响。该方式基于语义词集,能很精确地预测情感倾向,但缺点是操作起来复杂且在很大程度上取决于词汇层次分类算法的精确度。则此方法显然对大量的文本数据处理是不合适。为了处理大量数据,研究人员介绍了用于情感分析的机器学习方法,例如K最近邻,最大熵模型,朴素贝叶斯和支持向量机(SVM)方法[3]。 虽 然以语义词集为基础的语义加权分类效果比机器学习方法较好,但胜在后者能够更轻易地去分析处理大量的文本数据。例如徐军等人[4]利用机器学习方法对新闻评论进行情感分类,在最理想的数据集上分类准确率可以达到90%,然而这种方法缺乏语义分析,容易产生向量空间模型数据稀疏问题,对于中文文本处理中普遍存在的一词多义和多词一义问题也不能解决。闻彬等人[5]在情感词识别中引人情感语义概念,基于语义理解来进行文本情感分类,可在一定程度上缓解一词多义和多词一义引起的分类准确率不高的问题,它的不足之处在于只考虑到词语语义层副词的出现规律对词语语义的作用,忽略了整个文本语境对词语语义的影响。一些研究者[6]通过已有文本规则,充分考虑用文本的语法结构去预测文本情绪倾向。但是不得不说该方式的实用性差、工艺复杂且难以推广。也有部分研究者尝试借助非标注样本不断训练分类器的方法来提高半监督学习方法的情感分类准确率,实验证明该方法是有效的[7]。还有谢丽星等[8]提出了一种基于SVM的层次结构多策略中文微博情感分析方法;刘宝芹等[9]在将情绪类别组织成三层树状结构后,采用朴素贝叶斯分类模型对中文微博进行多层次的情绪分析;欧阳纯萍等[10]提出多策略中文微博细粒度情绪分析方法,采用 SVM和KNN算法对微博进行细粒度情绪分析;雷龙艳等[11]在对微博进行文本特征表示的基础上,采用SVN和KNN算法对微博进行细粒度情绪分析。等等这些国内外的文本情感分类方法研究,对本设计的方法选择与优化都提供了一定的帮助。 二、设计过程 2.1设计简要流程 图2.1-1_设计简要流程图 2.2文本数据获取 2.2.1创建APP 首先通过已有的twitter账号访问推特官方网站,想要抓取数据就要创建app去访问twitter的API。创建app时,必要填写信息为“name,Description,website”,其中name为APP的名称;description是对自己APP的描述;website自己有网站写自己的网站,没有就写一个符合格式的网站就行。并不需要进一步的验证,app中的Access Token、Access 、Token Secret Consumer Key(API Key)和Consumer Secret(API Secret)这四个开发者身份认证令牌参数才是我们的目标,也是获取数据的基本条件。如果需要获取大量数据,可以申请多个app,因为单个的爬取次数和数量均有限制。 2.2.2调配使用API 之所以选择Twitter作为实战的文本数据是因为它提供很多类型的API,其中Rest API 与Streaming API是最为常见的。前者是经常被用到的类型,而Streaming API可以用于追踪想要了解的用户或事件。下面介绍一下REST API中有爬取意义的几个API: (1)GET statuses/user timeline:返回一个用户发的推文。注意twitter里回复也相当于发推文。 (2)GET friends/ids:返回一个用户的followees。 (3)GET followers/ids:返回一个用户的followers。 (4)GET users/show:返回一个用户的信息。 接下来,通过使用twitter api进行数据抓取,目前的twitter api有很多python语言版本,本设计将会用到的是tweepy。安装tweepy库,只需要在cmd中输入pip install tweepy命令即可。 2.2.3开始程序编辑 Twitter平台不仅给以了我们爬取数据所用到的API接口,并且还携带了供我们写程序代码参考所用到的Tweepy库。最后将获取到的数据将保存到csv格式文件中,获取文本数据程序代码如下: 三、数据预处理 2.3.1句柄的删除 句柄(@user)携带是每个推特用户得以批准的一种方式,所以tweets文本数据中有的大量twitter句柄。而这个句柄其实没有什么信息含量,因此我们删除所有这些twitter句柄。为了省去不必要的麻烦,最好将测试集跟训练集都一齐处理掉。 说到删除tweet中用不到的文本模式,首先我们需要定义一个函数,输入两个参数,一个是文本原始字符串,另一个是字符串中我们想要删除的文本模式。用该函数进行“@user”模式的删除。最后,创建一个新的列名为processed_tweet,用于存放经过清理和处理的tweet。程序代码如下: 2.3.2删除标点、数字和特殊字符 标点符号、数字和特殊字符对一般的文本处理没什么帮助。就像twitter句柄一样需要从文本中删除掉它们,用空格替换除字符和标签的全部内容。处理程序代码如下: 2.3.3处理表情符号 将表情符号转化为情绪表达,分别为Positive和negative。可以更加直观的判断文本的情绪倾向,转化代码如下: 2.3.4词干提取 由于英文表达中的单词大多带有后缀,如(“ing”、“ly”、“er”、“es”、“s”等)对单词没有情绪改变的后缀。举个例子,“fly”、“flyer”、“flying”,其中“flyer”和“flying”是单词“fly”的不同变体。我们需要从一个单词中剥离后缀,提取出对情绪分类有用的词干信息,提取程序代码如下: 2.4标注类标签 在经过预处理后的的数据,分别划分为训练以及测试文本集,训练集的数额要远大于测试集的数额。本设计总获取约一百万个文本数据,其中测试集数量约为百分之九十,然后按照文本的情感表达给它们分类为消极negative(标注为0)和积极Positive(标注为1)的标签,测试集用于后续的验证,不需要标注。标注后的效果图如下: 图2.4-1_类标注效果图 2.5分词 由于在特征提取前,需要并将这些词用作向量来表示文本,即将所有训练文档进行分词。举个例子:在情感分类问题中,选择特征可以基于“词”这个层次,例如“This tweet is excellent”,我给他标注成“Positive”的类标签。里面有4个词,分别为“This”、“tweet”、“is”、“excellent”。意思是将这4个词全部作为了分类特征词,那么包含这个词的文本就会被分类为“积极”。同理,对上面提及的那句文本,还能选择双词组合(Bigrams)。这种方法就是将“This tweet”,“tweet is”,“is excellent”这种两两搭配作为分类特征。本设计将用到这两种特征选择作为分词方式进行选择,分词程序代码如下:

力扣热题100_矩阵_240_搜索二维矩阵 II

文章目录 题目链接解题思路解题代码 题目链接 240. 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5 输出:true 示例 2: 输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20 输出:false 解题思路 1.初始化m行n列,i赋值为m-1,j赋值为0 2.i >= 0 and j < n做循环判断 3.坐标从左下角开始, 3(1).若等于返回True 3(2).若小于,j+=1,列右移一位 3(3).若大于,i-=1,行上移一位 解题代码 class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: # 解题思路:用左下或右上为根,整个矩阵其实就是一个二分搜索树 m, n = len(matrix), len(matrix[0]) i, j = m - 1, 0 while i >= 0 and j < n: if matrix[i][j] == target: return True elif matrix[i][j] < target: j += 1 else: i -= 1 return False

macOS上基于httpd-dav搭建WebDav服务

文章目录 配置 Apache httpd修改 ServerName启动验证 httpd 服务启用 Dav 扩展服务配置 配置 httpd 扩展 Dav 服务设置共享目录文件夹配置 DavLockDB 目录创建 WebDAV 访客用户 httpd-dav.conf 主要改动部分BasicDigest共享多个目录 授予 httpd 完全磁盘访问权限验证更新配置重启Apache Httpd局域网连接验证WebDAV服务 在局域网中,要想共享或访问 macOS 机器上的文件,可以通过文件共享、屏幕共享或 远程登录 这几种方式: FS(SMB): Set up file sharing on Mac,Control access to your Public folder on Mac。SSH+SFTP: Allow a remote computer to access your MacScreen Sharing(VNC): Turn Mac screen sharing on or off,Share the screen of another Mac。RD: Enable remote management for Remote Desktop 以上几种方式,基本都涉及到复杂的分级账户和ACL权限控制问题。

【毕业设计】基于微信小程序演示合集-更新中

目录 前言一、毕设主页二、系统目录1、基于spring boot+vue微信小程序文创平台2、基于springboot+微信小程序的爱公益平台3、【基于springboot+微信小程序的酒店管理平台】4、基于springboot+微信小程序的戏曲文化传播平台设计与实现5、基于SpringBoot+微信小程序的仓储管理系统6、基于SpringBoot+微信小程序的高校学术研讨信息管理系统7、基于Django医生小程序设计与实现8、基于SpringBoot+微信小程序大学校园二手书籍拍卖平台9、基于SpringBoot+微信小程序的口腔小助手平台 三、系统架构四、系统环境结语 前言 【毕业设计】基于微信小程序演示合集-更新中 🥇个人主页:@MIKE笔记 🥈文章专栏:毕业设计源码合集 ⛄联系博主: wx:mikenote 一、毕设主页 🥈文章目录:毕业设计源码合集 二、系统目录 B站视频:https://space.bilibili.com/306719765/channel/collectiondetail?sid=2051836 1、基于spring boot+vue微信小程序文创平台 🌐视频演示:https://www.bilibili.com/video/BV1tc411H7xQ/?share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 💟文章介绍:https://blog.csdn.net/m0_51607907/article/details/130459703 基于spring boot+vue微信小程序文创平台 2、基于springboot+微信小程序的爱公益平台 🌐视频演示:https://www.bilibili.com/video/BV1Ww4m1R7Ap/?share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 💟文章介绍:https://blog.csdn.net/m0_51607907/article/details/136753206 【毕业设计】基于springboot+微信小程序的爱公益平台 3、【基于springboot+微信小程序的酒店管理平台】 视频演示:https://www.bilibili.com/video/BV1Gj421Z7oz/?share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 基于springboot+微信小程序的酒店管理平台 4、基于springboot+微信小程序的戏曲文化传播平台设计与实现 🌐视频演示:https://www.bilibili.com/video/BV17e41117A2/?p=3&share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 💟文章介绍:https://blog.csdn.net/m0_51607907/article/details/135686373 基于springboot+微信小程序的戏曲文化传播平台设计与实现 5、基于SpringBoot+微信小程序的仓储管理系统 视频演示:https://www.bilibili.com/video/BV1qc411x7nV/?share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 基于SpringBoot+微信小程序的仓储管理系统 6、基于SpringBoot+微信小程序的高校学术研讨信息管理系统 视频演示:https://www.bilibili.com/video/BV1qa4y1176s/?share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 基于SpringBoot+微信小程序的高校学术研讨信息管理系统 7、基于Django医生小程序设计与实现 视频演示: https://www.bilibili.com/video/BV1C5411i7Ww/?share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 基于Django医生小程序设计与实现 8、基于SpringBoot+微信小程序大学校园二手书籍拍卖平台 视频演示:https://www.bilibili.com/video/BV1AC4y1e7Y8/?share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 基于SpringBoot+微信小程序大学校园二手书籍拍卖平台 9、基于SpringBoot+微信小程序的口腔小助手平台 视频演示:https://www.bilibili.com/video/BV17i4y1B7eR/?share_source=copy_web&vd_source=d764770ff4322f1a1111e85d452245c6 基于SpringBoot+微信小程序的口腔小助手平台 三、系统架构 后端: Spring Boot、Mybatis前端:Vue、微信小程序数据库:Mysql 四、系统环境 环境版本 / 下载系统win 10 /win 11JDK1.8.0_144Maven3.6.3JDK1.8.0_144IDEA2023Node14.16.0 +npm6.14.11 +MySQL5.6.42 / 5.7.x 备注:以上版本为博主电脑配置,可点击进入官网下载 结语 介绍源码均亲测运行可用,源码有偿获取。

StarRocks面试题及答案整理,最新面试题

StarRocks 的 MV(物化视图)机制是如何工作的? StarRocks 的物化视图(MV)机制通过预先计算和存储数据的聚合结果或者转换结果来提高查询性能。其工作原理如下: 1、数据预处理: 在创建物化视图时,StarRocks 会对指定的表进行数据聚合或转换操作,然后将结果存储在物化视图中。这个过程类似于创建一个索引,但它是针对数据的聚合结果而非原始数据。 2、查询改写: 当用户查询时,StarRocks 的查询优化器会检查是否存在与查询匹配的物化视图。如果有,它会自动重写查询,以便直接访问物化视图中的数据,而不是原始表。 3、数据同步更新: 当基表数据发生变化时,StarRocks 会自动更新物化视图中的数据。这种同步过程确保了物化视图的数据始终是最新的,并且与基表保持一致。 4、性能优化: 通过使用物化视图,StarRocks 能够减少查询时间,提高查询效率,尤其是在处理大规模数据聚合和复杂计算时。 StarRocks 的分区策略及其优化方式是什么? StarRocks 的分区策略是将数据根据特定的列(分区键)值分散存储到不同的分区中。这样做可以优化查询性能,原理和方法如下: 1、分区键选择: 选择合适的分区键是优化查询性能的关键。通常选择经常用作查询条件的列作为分区键,可以有效减少查询时需要扫描的数据量。 2、分区范围: 根据业务需求合理设定分区范围,如按照时间范围(如日、月、年)或其他业务逻辑划分,以确保数据分布均匀,避免某些分区过大而影响查询性能。 3、动态分区: StarRocks 支持动态分区功能,可以自动创建和删除分区,简化分区管理,并保证数据分布的实时性和均衡性。 4、分区裁剪: 在执行查询时,StarRocks 会根据查询条件对分区进行裁剪,只扫描包含相关数据的分区,减少数据扫描量,加速查询响应。 StarRocks 中的列存储和行存储有何区别及应用场景? StarRocks 主要使用列存储,它与行存储有本质的区别,适用于不同的应用场景: 1、列存储: StarRocks 中的列存储意味着表中的每一列数据分别存储在物理空间上。这种方式使得在进行大规模数据的聚合查询时,能够只读取必要的列数据,减少I/O操作,特别适合分析型查询。 2、行存储: 在行存储模型中,一行的数据是连续存储的。这种方式在需要频繁更新记录或者执行事务处理时比较高效,因为它可以快速访问完整的记录。 3、应用场景对比: 列存储适合于读密集型的场景,尤其是需要大量聚合和分析的查询操作;而行存储则更适合于写密集型的场景,如OLTP(在线事务处理)系统。 StarRocks 在大数据处理中的优势是什么? StarRocks 在大数据处理中具有以下优势: 1、高性能查询: 利用MPP(Massively Parallel Processing)架构,StarRocks 能够在分布式环境中并行处理大量数据,显著提高查询速度。 2、实时分析: StarRocks 支持近实时的数据分析,可以快速加载和查询数据,使得企业可以基于最新数据做出决策。 3、易于管理: 通过提供简化的数据管理和自动化的维护功能,StarRocks 减轻了数据库管理员的负担。 4、灵活的数据模型: 支持多维数据分析和复杂的SQL查询,可以满足各种复杂的业务分析需求。 5、扩展性强: StarRocks 的设计支持水平扩展,能够处理PB级别的数据量,适合大数据时代的需求。 StarRocks 的查询计划优化有哪些机制? StarRocks 的查询计划优化机制主要包括以下几个方面: 1、成本基准的优化器: StarRocks 使用成本基准的优化器(CBO),它会评估不同执行计划的成本,包括I/O、CPU和网络开销,并选择成本最低的执行计划。

DataGrip 面试题及答案整理,最新面试题

DataGrip的数据库兼容性和多数据库支持如何实现? DataGrip实现数据库兼容性和多数据库支持的方式包括: 1、广泛的数据库支持: DataGrip支持多种数据库,包括但不限于MySQL, PostgreSQL, SQL Server, Oracle, SQLite, 和MongoDB,实现对不同数据库的兼容。 2、统一的数据库访问接口: 提供统一的界面用于连接和管理不同的数据库,用户可以在同一工具中同时操作多个数据库。 3、数据库驱动: DataGrip通过使用各个数据库的官方驱动或第三方驱动来实现对特定数据库的支持。 4、自定义设置: 允许用户针对每个数据库连接进行详细的自定义设置,如连接参数、SSH隧道配置等。 如何使用DataGrip进行数据库重构,而不影响现有数据和结构? 使用DataGrip进行数据库重构而不影响现有数据和结构的策略包括: 1、安全检查: DataGrip提供重构前的安全检查,确保重构操作不会导致数据丢失或破坏数据完整性。 2、重构预览: 在执行重构操作之前,DataGrip会显示预览,让用户看到变更的具体内容,以做出明智的决策。 3、版本控制集成: 通过与版本控制系统的集成,DataGrip可以跟踪数据库结构变更,支持回滚到先前的状态以防出错。 4、逐步执行: 允许用户逐步执行重构过程,每步进行验证,确保每一步骤都不会对现有系统造成负面影响。 DataGrip中的智能代码补全功能是如何工作的? DataGrip中的智能代码补全功能工作原理如下: 1、上下文分析: DataGrip会分析当前的编写上下文,包括SQL语句中的关键字、表名、列名等。 2、数据库模式信息: 利用已连接数据库的模式信息,提供表名、列名、函数等的自动补全建议。 3、学习用户习惯: DataGrip能够学习用户的编码习惯,优先显示常用的表名和字段。 4、语法和关键词支持: 根据SQL语言的语法和关键词提供智能补全,帮助用户快速编写SQL语句。 在DataGrip中如何有效管理大型数据库项目? 在DataGrip中有效管理大型数据库项目的方法包括: 1、项目分组: 将相关的数据库对象(如表、视图、存储过程等)组织到不同的项目分组中,以便管理和访问。 2、使用书签和颜色标记: 利用书签和颜色标记来标识重要的数据库对象和SQL脚本,快速访问和识别。 3、依赖性分析: 使用DataGrip的依赖性分析工具来理解不同数据库对象之间的关系和依赖,帮助进行更合理的更改和优化。 4、版本控制: 利用版本控制系统管理数据库变更,确保数据库项目的变更可追踪且可回滚。 DataGrip如何处理不同数据库方言的兼容性问题? DataGrip处理不同数据库方言的兼容性问题通过以下方式: 1、方言识别和支持: DataGrip能够识别和支持多种数据库方言,为每种数据库提供专门的语法和功能支持。 2、智能代码补全: 针对不同的数据库方言,提供智能代码补全功能,帮助用户准确编写SQL语句。 3、语法高亮和检查: 根据所连接数据库的具体方言,提供语法高亮和错误检查功能,避免因方言差异导致的语法错误。 4、自定义方言支持: 允许用户自定义方言设置,以支持特定数据库的独特语法和功能。 DataGrip中的数据库版本控制如何工作,它提供哪些优势? DataGrip中的数据库版本控制工作机制及其优势包括: 1、版本控制集成: DataGrip集成了Git, SVN等版本控制系统,可以直接从IDE内部管理数据库脚本和对象的版本。 2、变更跟踪: 自动跟踪数据库结构和内容的变更,确保每次更改都可以被记录和追溯。 3、团队协作: 支持多人协作开发,通过版本控制管理共享的数据库对象,避免冲突和数据不一致。 4、回滚和历史比较: 提供回滚到先前状态的能力,以及比较不同版本之间的差异,方便错误修正和版本对比。 DataGrip中的性能优化工具有哪些,它们如何帮助提升数据库性能? DataGrip中的性能优化工具及其帮助提升数据库性能的方法包括:

开源堡垒机Jumpserver

开源堡垒机Jumpserver 文章目录 开源堡垒机Jumpserver1 Jumpserver介绍2 Jumpserver部署用户管理资产创建账号管理模板添加 用户组管理权限管理远程连接免密连接 1 Jumpserver介绍 Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的运维安全审计系统。 Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。 Jumpserver 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。 核心功能列表 身份验证 登录认证 资源统一登录和认证LDAP认证支持OpenID,实现单点登录 多因子认证 MFA(Google Authenticator) 帐号管理 集中帐号管理 管理用户管理系统用户管理 统一密码管理 资产密码托管自动生成密码密码自动推送密码过期设置 批量密码变更(X-PACK) 定期批量修改密码生成随机密码 多云环境的资产纳管(X-PACK) 对私有云、公有云资产统一纳管 授权控制 资产授权管理 资产树资产或资产组灵活授权节点内资产自动继承授权 RemoteApp(X-PACK) 实现更细粒度的应用级授权 组织管理(X-PACK) 实现多租户管理,权限隔离 多维度授权 可对用户、用户组或系统角色授权 指令限制 限制特权指令使用,支持黑白名单 统一文件传输 SFTP 文件上传/下载 文件管理 Web SFTP 文件管理 安全审计 会话管理 在线会话管理历史会话管理 录像管理 Linux录像支持Windows录像支持 指令审计 指令记录 文件传输审计 上传/下载记录审计 2 Jumpserver部署 [root@localhost ~]# curl -sSL https://resource.

MATLAB中的数据类型

MATLAB是一种高级编程语言和交互式环境,用于算法开发、数据可视化、数据分析和数值计算。在MATLAB中,数据类型是用于分类和定义存储在变量中数据种类的基本概念。选择适当的数据类型对于确保程序的正确性、有效性和内存效率至关重要。下面将详细解释MATLAB中的几种基本数据类型,如double、char和logical。 double数据类型 double是MATLAB中最常用的数据类型之一,用于存储双精度浮点数。这种数据类型占用8个字节(64位)的内存,能够表示非常大范围内的数值,并提供较高的数值精度。在MATLAB中,默认情况下,数字值通常存储为double类型。 matlab复制代码 % 定义一个double类型的变量 x = 3.14159; % 检查变量x的数据类型 whos x double类型的变量适用于需要进行精确数值计算的场景,例如科学计算、工程分析和统计建模。它们能够表示很大或很小的数值,而不会因为精度损失而导致错误的结果。 char数据类型 char数据类型用于存储字符数据。在MATLAB中,字符和字符串本质上都是由字符数组组成的。每个字符占据一个字节的内存,并且存储在字符数组中的每个位置。 matlab复制代码 % 定义一个char类型的变量 greeting = 'Hello, World!'; % 检查变量greeting的数据类型 whos greeting 需要注意的是,虽然MATLAB在早期版本中使用字符数组来处理字符串,但从MATLAB R2016b开始,引入了新的string数据类型以提供更强大的字符串处理功能。尽管如此,char类型仍然在MATLAB中被广泛使用,尤其是在处理旧的代码或与某些函数和工具箱交互时。 char数组特别适合于处理文本数据,例如从文件中读取或写入文本信息,构建用户界面中的标签和按钮文本等。它们也可以通过字符串函数(如length、strcat、strcmp等)进行操作和处理。 logical数据类型 logical数据类型用于存储逻辑值,即true(真)或false(假)。在MATLAB中,logical类型占用一个字节的内存,通常用于条件测试和逻辑运算。逻辑值通常用于控制程序的流程,例如在if语句或while循环中作为条件表达式。 matlab复制代码 % 定义一个logical类型的变量 isRaining = true; % 检查变量isRaining的数据类型 whos isRaining 在MATLAB中,逻辑运算符(如&(与)、|(或)和~(非))用于操作逻辑值。此外,当使用关系运算符(如<、>、==等)比较数值时,结果也将存储为logical类型。逻辑数组常用于索引和选择数据,例如,可以根据逻辑条件选择矩阵或数组中的元素。 其他数据类型 除了double、char和logical之外,MATLAB还支持许多其他数据类型,以满足各种编程和数据处理需求。这些包括: 整数类型:如int8、int16、int32、int64、uint8、uint16、uint32和uint64,用于存储不同大小和范围的整数值。单精度浮点数:single类型,与double相比,精度较低但占用的内存较少。字符串类型:从MATLAB R2016b开始引入的string类型,提供了一种更灵活和强大的方式来处理文本数据。复数类型:用于表示复数,在电气工程、信号处理和控制系统等领域中非常有用。结构体:允许用户创建包含多个不同类型数据字段的复合数据类型。元胞数组:类似于结构体,但每个元胞可以包含任何类型的数据,提供了更大的灵活性。表格:一种用于组织和显示数据的二维数组,其中包含行和列标签。 选择适当的数据类型可以显著影响程序的内存占用、执行速度和精度。因此,在编写MATLAB代码时,理解每种数据类型的特点和用途是非常重要的。

性能重要衡量指标-百分位数

在性能监控中什么是最好的度量—平均数还是百分位数? 百分位数和平均值是用于描述数据集中趋势和分布的统计量,它们之间的主要区别在于: 1.平均值(均值): •平均值是数据集中所有数值的总和除以数据点的数量。•平均值对数据集中所有数据点进行了平均处理,反映了数据的集中趋势。•平均值容易受到极端值(异常值)的影响,因为它是所有数据点的总和除以数量。 2.百分位数: •百分位数是将数据集按大小排序后,处于特定百分比位置的数值。•例如,第50百分位数是数据集的中位数,表示有50%的数据小于或等于这个值,50%的数据大于或等于这个值。•百分位数可以帮助了解数据的分布情况,识别数据集中不同位置的值。 总结: •平均值是数据集的总体平均,反映数据的集中趋势,易受异常值影响。•百分位数表示数据集中处于特定百分比位置的值,有助于了解数据的分布情况,不受异常值的影响。 如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列。如,处于p%位置的值称第p百分位数 用我们软件开发行业的例子通俗来讲就是,假设有100个请求,按照响应时间从小到大排列,位置为X的值,即为PX值。 P1就是响应时间最小的请求,P10就是排名第十的请求,P100就是响应时间最长的请求。 在真正使用过程中,最常用的主要有P50(中位数)、P95、P99。 P50: 即中位数值。100个请求按照响应时间从小到大排列,位置为50的值,即为P50值。如果响应时间的P50值为200ms,代表我们有半数的用户响应耗时在200ms之内,有半数的用户响应耗时大于200ms。如果你觉得中位数值不够精确,那么可以使用P95和P99.9 P95:响应耗时从小到大排列,顺序处于95%位置的值即为P95值。 还是采用上面那个例子,100个请求按照响应时间从小到大排列,位置为95的值,即为P95值。我们假设该值为200ms,那这个值又表示什么意思呢? 意思是说,我们对95%的用户的响应耗时在200ms之内,只有5%的用户的响应耗时大于200ms,据此,我们掌握了更精确的服务响应耗时信息。 P99.9:许多大型的互联网公司会采用P99.9值,也就是99.9%用户耗时作为指标,意思就是1000个用户里面,999个用户的耗时上限,通过测量与优化该值,就可保证绝大多数用户的使用体验。至于P99.99值,优化成本过高,而且服务响应由于网络波动、系统抖动等不能解决之情况,因此大多数时候都不考虑该指标。 在JavaScript中计算百分位数可以通过不同的方法实现。以下是一种常见的方法,使用JavaScript来计算给定数组的百分位数: // 计算数组的百分位数 function percentile(arr, p) { if (arr.length === 0) { return null; } arr.sort(function(a, b) { return a - b; }); var index = (p/100) * (arr.length - 1); var lower = Math.floor(index); var upper = Math.ceil(index); if (lower === upper) { return arr[lower]; } var lowerValue = arr[lower]; var upperValue = arr[upper]; return lowerValue + (upperValue - lowerValue) * (index - lower); } // 示例用法 var data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var p = 75; // 想要计算的百分位数,比如第75百分位数 var result = percentile(data, p); console.

Excel数字签名技术总结

Excel数字签名 Excel数字签名【商业化】产品对比: Excel数字签名产品对比冰蓝科技GroupDocsconholdatemesciusaspose官网冰蓝科技 e-iceblue | 您的办公文档开发技术专家 | C#/VB.Net Excel, Word, PowerPoint, PDF, Barcode 组件Document Processing APIs for .NET and Java PlatformsComprehensive File Format & Intelligent Document Processing APIsDeveloper Components for JavaScript and .NET | MESCIUS inc.File Format APIs for Word Excel PDF Email PowerPoint Barcode Images OCR Note and 3D价格说明Spire.XLS for JAVA | 购买Pricing Information | GroupDocs.Signature for JavaPricing Information | Conholdate.Total for JavaExcel Java API Library | Generate, Load, Edit Excel Documents in Java | Document SolutionsPurchase Portal推荐版本的价格¥39,000$3,597 $14,997 $2,799 $14,388 上面表格中的内容是可点击的链接。

2核4g服务器够用吗?

2核4G服务器够用吗?够用。阿腾云以2核4G5M服务器搭建网站为例,5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,并发数为10,经阿腾云测试,腾讯云2核4G5M服务器可以容纳日均5000人访问。 目前2核4G服务器腾讯云是165元一年、阿里云2核4G4M轻量服务器165元一年、ECS u1服务器199元一年、京东云主机是165元一年,2核4G服务器优惠活动如下: 阿里云:https://t.aliyun.com/U/bLynLC腾讯云:https://curl.qcloud.com/oRMoSucP京东云:jdyfwq.com华为云:hwyfwq.com 关于2核4G服务器是否够用,影响网站同时在线访问人数的限制条件,不只是云服务器的公网带宽,CPU内存资源也是需要考虑的方面。网站程序的效率直接影响云服务器CPU内存的计算资源,例如PHP类的动态语言,会更消耗CPU内存资源,如果是静态网站或网站域名接入CDN,数据库的动态读取和写入也会很少,所以抛开应用谈并发也是不现实的。 腾讯云5M带宽下载速度峰值可达640KB/秒,阿腾云atengyun.com以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,可以理解为并发数为10,假设网站页面中的图片、视频媒体文件存放在对象存储COS上,平均网页大小30KB,那么5M带宽可以支撑20个访客同时在1秒内打开网页,以此类推。

蓝桥杯算法基础(22):(树、二叉树简介,对堆排序的认识)java版

物理层面:顺序存储,链式存储 (顺序存储) 可以用数组来表示一棵树 左孩子:2i+1 右孩子:2i+2 (适用于完全二叉树) (i-1)/2算父节点 (遍历顺序) 先序(根),中序,后序 先序:根左右 中序:左根右 后序:根左右 static void preOrder(int[] arr,int index){ if(index>=arr.length) return; System.out.println(arr[index]);输出根节点 preOrder(arr,index*2+1);//递归输出左子树 preOrder(arr,index*2+2);//递归输出右子树 } static void inOrder(int[] arr,int index){ if(index>=arr.length) return; preOrder(arr,index*2+1); System.out.println(arr[index]); preOrder(arr,index*2+2); } static void postOrder(int[] arr,int index){ if(index>=arr.length) return; preOrder(arr,index*2+1); preOrder(arr,index*2+2); System.out.println(arr[index]); } 延续二叉树的知识点,继续介绍之前提过的堆的概念 二叉堆是完全二叉树或者是近似完全二叉树 ”二叉堆“满足二个特性 1.父节点的键值总是大于或等于(小于或等于)任何一个字节点的键值 2.每个节点的左子树和右子树都有一个二叉堆(都是最大堆或最小堆)。 任意节点的值都大于其子节点的值——大顶堆 任意节点的值都小于其子节点的值——小顶堆 1.堆化(heapify),反向调整使得每个子树都是大 顶或小顶堆 2.按序输出元素:把堆顶和最末元素对调,然后调整堆顶元素 Minheap(A){ n=A.length; for i from n/2-1 down to 0{ MinHeapFixDown(A,i);//堆化heapify } } MinHeapFixDown(A,i,n){ //找到左右孩子 left=2*i+1; right=2*i+2; if(left>=n){//左孩子已经越界,i就是叶子节点 return; } if(right>=n){ min=left; }else{ if(A[right]<A[left]) {min=right;} } //如果A[i]比两个孩子都要小,不用调整 if(A[i]<A[min]){ return;} //min指向了最有孩子中较小的那个 //否则,找到两个孩子中较小的,和i交换 temp=A[i]; A[i]=A[min]; A[min]=temp; //小孩子那个位置的值发生了变化,i变更为小孩子那个位置,递归调整 MinHeapFixDown(A,min,n); } 完善堆排序 Sort(A){ //先对A进行堆化 MinHeap(A); //把堆顶,0号元素和最后一个元素对调 for(int x=n-1;x>=0;x--) swap(A,0,x); //缩小堆的范围,堆顶元素进行向下取整 MinHeapFixDown(A,0,x-1); } //小顶堆与大顶堆类似

MATLAB中的矩阵和数组,它们之间有什么区别?

MATLAB中的矩阵和数组:概念、区别与联系 MATLAB(Matrix Laboratory,矩阵实验室)作为一款强大的数学软件,广泛应用于工程、科学、数学、计算机科学等领域。在MATLAB中,矩阵和数组是两个核心概念,它们在数据处理、算法实现以及数值计算中发挥着重要作用。虽然矩阵和数组在MATLAB中经常交替使用,并且有很多相似之处,但它们之间确实存在一些区别。本文将详细解释MATLAB中的矩阵和数组,并探讨它们之间的关系。 一、矩阵(Matrix) 矩阵是一个由数值组成的矩形阵列,通常用于线性代数中的运算。在MATLAB中,矩阵是按行和列组织的数值集合,可以包含实数、复数、逻辑值等。矩阵在MATLAB中非常普遍,因为MATLAB本身就是基于矩阵运算的。例如,A = [1 2 3; 4 5 6] 就定义了一个2x3的矩阵A。 矩阵的维度(即行数和列数)在定义时是固定的,但可以通过一些操作(如拼接、裁剪等)来改变。矩阵支持基本的数学运算,如加法、减法、数乘、矩阵乘法等。此外,MATLAB还提供了丰富的矩阵函数,如inv(求逆)、det(求行列式)、eig(求特征值和特征向量)等。 二、数组(Array) 数组是一个由相同类型的元素组成的集合,这些元素在内存中连续存储。在MATLAB中,数组可以是向量(一维数组)、矩阵(二维数组)或更高维的数组(如三维数组、四维数组等)。因此,从广义上讲,矩阵是数组的一种特殊形式(即二维数组)。但是,在日常使用中,我们通常将一维数组简称为数组,而将二维数组称为矩阵。 数组在MATLAB中同样非常重要,因为它们可以方便地存储和处理大量数据。与矩阵类似,数组也支持基本的数学运算和函数操作。此外,MATLAB还提供了一些专门用于数组操作的函数,如reshape(改变数组形状)、permute(重新排列数组维度)等。 三、矩阵与数组的区别与联系 维度:矩阵通常指二维数组,而行向量和列向量可以看作是一维数组。更高维的数组则超出了传统矩阵的范畴,但仍然可以看作是数组的扩展。因此,从维度上看,数组比矩阵更灵活和通用。 运算规则:矩阵运算遵循线性代数的规则,如矩阵乘法要求左矩阵的列数与右矩阵的行数相等。而数组运算则相对简单直接,通常按元素进行(即逐元素运算)。但是,在MATLAB中,通过点运算符(如.*、./等)可以实现数组的逐元素运算,这使得数组和矩阵在运算上具有很高的相似性。 应用场景:矩阵在线性代数、图像处理、机器学习等领域有广泛应用,因为这些领域的问题往往可以转化为矩阵运算来解决。而数组则更多地用于数据存储、索引和遍历等场景,因为它们可以方便地表示和操作多维数据。 四、总结 MATLAB中的矩阵和数组虽然在很多方面相似甚至可以交替使用,但它们确实存在一些区别。从概念上讲,矩阵是二维数组的一种特殊形式,而数组则可以是任意维度的。从运算规则上看,矩阵遵循线性代数的规则进行运算,而数组则通常按元素进行运算。最后,从应用场景上看,矩阵和数组各有其独特的用途和优势。因此,在使用MATLAB时,我们需要根据具体问题和需求来选择合适的数据结构(矩阵或数组)以及相应的运算方法。

深度解析Robots协议:合规爬取网站数据的最佳实践

深度解析Robots协议:合规爬取网站数据的最佳实践 在网络爬虫活动中,遵守Robots协议是非常重要的。Robots协议也被称为爬虫协议或者机器人协议,它告诉网络爬虫程序哪些页面可以抓取,哪些页面不可以抓取。本文将深度解析Robots协议,并介绍一些合规爬取网站数据的最佳实践。 什么是Robots协议? Robots协议是一个位于网站根目录下的robots.txt文件,用来指示搜索引擎爬虫哪些页面可以访问,哪些页面禁止访问。通过遵守Robots协议,可以有效地控制搜索引擎爬虫的抓取行为,维护网站的合法权益。 Robots协议的基本语法 Robots协议基本语法如下: User-agent: <user-agent_name> Disallow: <restricted_URL> Allow: <allowed_URL> User-agent:指定了对应的爬虫程序Disallow:指定了不允许爬虫访问的URLAllow:指定了允许爬虫访问的URL 最佳实践 1. 遵守Robots协议 首先,作为一个合规的网络爬虫,必须遵守Robots协议中的规定。定期检查目标网站的robots.txt文件,确保你的爬虫不会访问到被禁止的页面。 2. 设置爬虫访问间隔 爬虫访问网站的间隔时间应当合理设置,避免对网站服务器造成过大负担。可以通过在爬虫程序中设置访问间隔来控制爬取速度。 3. 避免对服务器造成过大负担 在爬取数据时,要注意不要对目标网站的服务器造成过大负担,可以通过控制并发连接数、合理设置访问频率等方式来减轻服务器压力。 4. 尊重网站所有者的意愿 如果网站所有者明确表示不希望被爬取,应当尊重其意愿,避免对其网站进行爬取操作。 在实际的网络爬虫开发中,我们经常需要遵守Robots协议来保证我们的爬虫行为合乎规定。下面以Python语言为例,展示一个简单的网络爬虫示例代码,并说明如何在实际应用中遵守Robots协议。 import requests from urllib.parse import urljoin from urllib.robotparser import RobotFileParser def can_fetch(url, user_agent): rp = RobotFileParser() rp.set_url(urljoin(url, "/robots.txt")) rp.read() return rp.can_fetch(user_agent, url) def crawl_website(url): user_agent = "MyCrawler" if can_fetch(url, user_agent): response = requests.get(url) if response.status_code == 200: # 处理网页数据的逻辑,这里仅仅打印网页内容 print(response.text) else: print("Robots协议不允许访问该网站") if __name__ == "

通过技术手段,分析油管上的歪果仁都喜欢什么博主

什么是代理ip? 代理IP又称代理服务器(Proxy Server),形象的讲,代理服务器是网络信息的中转站,它是介于浏览器和Web服务器之间的一台服务器,有了它之后,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。是一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层,从而起到防火墙的作用。IP是上网需要唯一的身份地址,身份凭证,而代理IP就是我们上网过程中的一个中间平台,是由你的电脑先访问代理IP,之后再由代理IP访问你点开的页面,所以在这个页面的访问记录里留下的是就是代理IP的地址,而不是你的电脑本机IP。 代理IP可以提高网络速度 你知道吗?那些飞快如闪电的上网速度,还有那个只属于你一个人的代理IP,它们背后的秘密就在于“独享”这两个字。别以为代理IP就是大家一起挤的那条“网红”线路,这个独享的可是VIP通道,只为那些眼光独到、愿意投资的你准备。这样一来,你的上网体验就像坐私人飞机,再也不怕别人抢你的网速了。工作、下载、冲浪,想怎么快就怎么快,其他用户只能眼巴巴地看着你在网络世界里畅游,哈哈,这就是独享代理IP带给你的专属加速乐趣! 代理IP有更高的安全性 使用独享代理 IP 的用户一般都是自己独自使用的一个代理服务器,这无形中就保证了 IP 资源的安全性。 代理IP有更高的可靠性 使用普通代理 IP 上网也许会在我们上网或者下载资料的时候,IP 地址突然被封掉,会导致我们正在做的事情受到非常大的影响,甚至造成一定的损失。不过独享的代理 IP 就完全没有这方面的风险,可以放心的上网。 使用IPIDEA爬油管博主信息 歪果仁平时都看什么视频呢?是否也是鬼畜、动画、美女等等等。出于好奇心,桃花带你们去看一看!本次主要是想爬取相关YouTube博主的各种信息,字段包括:视频标题、视频链接、博主名称、博主链接、国家、telegram链接、whatsapp链接、twitter链接、facebook链接、instagram链接。 准备工作 爬取YouTube博主信息我们首先要准备两点,一是需要访问YouTube网站,二是需要爬取的脚本。 访问YouTube网站的方法有很多,这里我使用动态住宅 IP。动态住宅 IP 是私有 IP 地址。当你发送请求时,该请求会在访问 Web 时 通过真实用户而不是通过数据中心进行。这意味着在请求访问时被阻止的可能性较小并且成功率更高。 爬取网页的脚步我选择用python来写,python 之所以强大,一个重要的原因就是,拿来即用的代码库丰富!其中,访问网页,最好用的就是 requests,没有之一。 使用IPIDEA代理IP 想要使用动态代理IP我们首先要注册一个账号,注册后可以免费试用,测试IP质量,使用起来也更放心。 个人认证 获取代理 ip 此时就生成了你的代理Ip链接,如果你是第一次使用,那么他会提醒你将本机当前Ip加入到白名单,这里直接确认即可。 然后将拿到的链接去浏览器粘贴访问就可以获得我们需要的代理Ip以及端口。 代码实现 当涉及到使用代理IP爬取网页数据时,可以使用Python的requests库和代理IP池来实现 展示部分核心代码: 初始化csv文件: ef init(self): with open( f'{self.query}.csv', 'a', newline= '', encoding= 'utf_8_sig') as f: writer = csv.writer(f) writer.writerow([ '视频标题', '视频链接', '博主名称', '博主链接', '国家', 'telegram链接', 'whatsapp链接', 'twitter链接', 'facebook链接', 'instagram链接']) 通过代理ip发送