三款Github Copilot的免费替代

大家好我是费老师,提起Github Copilot,相信很多读者朋友们都听说过甚至使用过,作为Github研发的一款先进的编程辅助插件,它可以在我们日常编写代码的过程中,根据代码的上下文内容、注释等信息自动推断生成高质量的代码,很大程度上提升我们的代码编写效率。

  而自从去年8月Github Copilot公测结束开始收费后,很多同类型且面向个人免费的智能辅助插件就如雨后春笋般纷纷冒了出来,今天的文章中我就将为大家介绍其中比较主流的3款插件,从而丰富大家的可选择空间:

1 Amazon CodeWhisperer

  Amazon CodeWhisperer是由亚马逊研发的一款免费的AI代码生成工具,面向个人用户提供无限制的代码智能生成服务:

  在vscode中我们可以通过安装插件AWS Toolkit,来使用集成在其内部的CodeWhisperer功能:

2 Codeium

  Codeium是由初创公司研发的一款对标Github Copilot的代码智能生成插件,支持主流的各种编程语言,同样面向个人用户免费使用:

  我从其推出至今就一直在使用,使用体验非常接近Github Copilot,生成的代码质量很不错,并且还带有类似Cursor的代码对话解释功能,可以就你关心的代码片段进行提问和智能重构,功能相当丰富:

3 CodeGeeX

  CodeGeeX跟前面两款插件相比要冷门一些,不过特别地是其是开源的,项目地址:http://github.com/THUDM/CodeGeeX

  除了常规的根据上下文和提示生成代码的功能以外,CodeGeeX还特别地具有代码跨语言翻译功能,譬如下面的例子:


  以上就是本文的全部内容,欢迎在评论区与我进行讨论~

本文转载于网络 如有侵权请联系删除

相关文章

  • Oracle|ORA-00013 导入数据库报错

    问题背景今天在还原生产环境备份数据到测试环境时,结果导入失败。提示如下:问题原因当时在导出数据库dmp文件时的用户拥有DBA权限,而现在要导入数据库的用户没有DBA权限。--查看用户对象权限 select*fromuser_tab_privs;复制解决方案方案一: 把导出的用户DBA权限去掉,重新导出(某些情况不适用,不建议)方案二: 给当前导入的用户新增DBA权限,重新导入。1.登陆sqlplussqlplus/assysdba复制2.给当前用户赋DBA权限grantdbatoutms;--给用户赋dba权限复制3.重新导入成功4.导入命令nohupimp用户名/密码file=/oradata/tmp/202101-001UTms_back.dmpfull=y>/oradata/tmp/imp_dmp_81.log2>&1&复制5.查看导入日志tail-f/oradata/tmp/imp_dmp_81.log复制福利有时候可能会遇到数据库版本不同,但是需要相互导入数据的情况.方案一:网上有方案说可以直接通过notepad++打开dmp文件直接修改版本号即可

  • 2021,编程语言如何选择?

    我适合学什么编程语言呢?大家好,我是鱼皮,今天聊聊编程语言的选择问题,通过对10+主流编程语言的特点、优劣、应用场景、发展前景等简单分析,希望帮还在迷茫的小伙伴们选择最适合自己的语言去学习。编程语言选择本文大纲:编程语言选择-鱼皮前言先来看张最新的TIOBE编程语言排行榜,C第一、Python第二、Java第三:2021-08TIOBE编程语言排行那可能就会有一些“追求极致”的同学说了,我要学编程,就学最牛逼的C语言!千万别!排行榜的统计方式、人群多种多样,并不代表一切,不要盲目跟风。我们做事一定要有目的,先想清楚自己学编程是为了什么?单纯出于好奇、感兴趣?为了搞钱?想多门手艺、提高工作效率?想开拓视野?想创业做自己的产品?还是只是碰巧选了计算机专业呢?有不少转专业、其他行业的在职同学都想学编程,但切记:没有目标是绝对学不下去的!下面介绍下主流编程语言,大家可以跟据自己的目标进行选择。语言介绍此前做过一个投票,大多数朋友学编程还是为了找工作,那我们就先说说如今最适合找工作、企业需求量最大的两个方向:Java和前端。JavaJava本身是一门相对高级的语言,成熟稳定,写出来的程序可以跑在

  • FreeRTOS内核应用开发手记

    FreeRTOS内核应用开发学习手记移植任务状态迁移任务创建与删除任务挂起与恢复任务延时消息队列信号量事件软件定时器任务通知内存管理FreeRTOS内核应用开发学习手记移植1、解压并添加官方源码到工程中,包括:FreeRTOS\Source\*.c FreeRTOS\Source\include\*.h FreeRTOS\Source\portable\MemMang\heap_4.c FreeRTOS\Source\portable\RVDS\ARM_CM4F\* FreeRTOS\Demo\CORTEX_STM32F103_Keil\FreeRTOSConfig.h复制2、修改FreeRTOSConfig.h:#include"stm32f103.h" 改为你的,如 #include"stm32f4xx.h"复制3、注释原工程中:voidSVC_Handler(void){} voidPendSV_Handler(void){}复制4、修改SysTick中断服务函数externvoidxPortSysTickHandler(void); //

  • jQuery筛选器及练习 jQuery初识

    jQuery初识jQuery是什么?jQuery是一个兼容多浏览器的JavaScript库。jQuery能极大地简化JavaScript编程,它的宗旨就是:"Writeless,domore."jQuery包含以下内容:HTML元素选取HTML元素操作CSS操作HTML事件函数JavaScript特效和动画HTMLDOM遍历和修改AJAX下载链接:jQuery官网jQuery对象jQuery对象就是通过jQuery包装DOM对象后产生的对象,jQuery对象是jQuery独有的。如果一个对象是jQuery对象,那么它就可以使用jQuery里的方法:例如$(“#i1”).html()。$(“#i1”).html()的意思是:获取id值为i1的元素的HTML代码,其中html()是jQuery里的方法。相当于JavaScript中的document.getElementById("i1").innerHTML;虽然jQuery对象是包装DOM对象后产生的,但是jQuery对象无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery也不能使用

  • 腾讯云SQL Server 性能逆天,252万TPM国内无对手!

    腾讯云数据库持续发力,产品发布和功能更新进入爆发期。继重磅推出最高50万QPS的Redis 4.0标准版(点击可跳转阅读)后,云数据库SQLServer2017版也已全面商用。亮点抢先看: 1. 综合性能指标最高TPM突破252万,全面超越市场其它同类产品2. 价格低于市场同类产品30%3. 在高性能、高并发场景下,具有完美的支持能力4. 内置前沿黑科技,图数据查询和机器学习一应俱全,有效助力用户商业成功最高252万TPM,性能指标傲视群雄不久前,微软宣布停止对SQLServer2008版和2008R2版数据库的延期支持,这意味着,原本使用该旗舰操作型数据库的用户,需要寻找新的方式进行数据存储。而云数据库凭借灵活的部署方式、合理的成本支出成为企业绝佳选择。根据关系型数据库性能测试工具HammerDB的最新测试结果,腾讯云数据库SQLServer在实例吞吐量、平均时延、CPU利用率、内存利用率、磁盘IO等综合性能指标测试中表现突出。相较于业内同版本同规格的其他云数据库,腾讯云数据库SQLServer在相同测试环境下优势明显,全系列性能领跑市场。尤其是在高并发场景下,此次宣布商用的SQLS

  • 数据库优化总结

      希望大家阅读之后,感觉好的话可以收藏或者推荐给更多的人,让更多的人看到,如果有什么错误或者有争议的地方,欢迎大家纠正以及补充。1.对查询进行优化,要尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:selectidfromtwherenumisnull 复制最好不要给数据库留NULL,尽可能的使用NOTNULL填充数据库。备注、描述、评论之类的可以设置为NULL,其他的,最好不要使用NULL。不要以为NULL不需要空间,比如:char(100)型,在字段建立时,空间就固定了,不管是否插入值(NULL也包含在内),都是占用100个字符的空间的,如果是varchar这样的变长字段,null不占用空间。可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:selectidfromtwherenum=0复制3.应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽量避免在where子句中使

  • display:none和visibility:hidden的区别

    空间占据上的区别如果用文字来描述,简单一句话就是display:none的元素是彻底消失,也就是说该元素的宽度、高度等各种属性值都将“丢失”,不在文档流中占位,浏览器也不会解析该元素;而visibility:hidden只是视觉上消失了,可以理解为透明度为0(opacity:0)的效果,它仍具有高度、宽度等属性值,因此在文档流中占位,浏览器会解析该元素。因此,我们可以知道display:none的元素隐藏后不占据额外空间,状态切换会产生回流和重绘,而visibility:hidden的元素虽然隐藏了,但它们仍然占据着空间,它的状态切换只会引起页面重绘。(关于回流与重绘见下文)举个栗子:<style> div{ width:200px; height:200px; background:#ccc; margin-top:10px; } .div1{ display:none; } .div2{ visibility:hidden; } </style> <body> <divclass="div1"> <p>

  • 精细化边缘安全防护:如何防止CDN域名被恶意刷量?

      越是数字化时代,越要做好基建“安全”的顶层设计 随着消费及产业互联网的不断发展,数字化将实现全场景覆盖,人类的生活和生产方式也随之不断改变。 内容分发网络CDN(ContentDeliveryNetwork)能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,可以说,CDN已然成为互联网的基础设施。 在万物互联大背景下,网络安全问题的严峻性和重要性都远超过去,一旦受到攻击,便容易“牵一发而动全身”。 因此,越是数字化时代,便越要做好基建“安全”的顶层设计。 如果没有网络安全的保障,一切都将“裸奔”。 01域名被恶意刷量,怎么办? 当前,众多业务在CDN边缘做加速,「边缘安全」的本质是:面临网络安全问题时的第一道防线。 只要在边缘发现并解决了各种安全问题和风险,就能保证客户源站在遭受攻击时,也可以稳定服务。 近年来,CDN域名被刷量的事情屡屡发生。 CDN域名被刷量(刷带宽),本质是“以小搏大”。 由于CDN的存在是加速内容的分发,并不限速,攻击者便可以通过极低的成本买大量“肉鸡”(“肉鸡”也称傀儡机,是指可以被黑客远程控制的机器),造成网站高额

  • HCIA综合实验

    前言:     我最近觉得还是有必要出一期HCIA综合实验,因为确实有看博客的人不会,你们的鸽子王还是飞回来了。   拓扑图:           实验要求: 1.内网所有终端要能相互通信,无线和有线要能相互通信 2.所有终端用户要能访问到114.114.114.114(模拟外网),同时也要能访问内网服务器 3.vlan50下的终端用户不能访问114.114.114.114 4.两台核心交换机5700之间采用eth-trunk(链路聚合和负载均衡),MSTP+VRRP 5.要求vlan2030走SW1转发,3040走SW2转发 6.无线区域要求分为guest无线和公司内部员工无线,均开启2.4g和5G(现实中还有5.8G) 7.所有终端用户均使用DHCP自动获取IP,有线网络从DHCPsever获取地址,无线网络从AC获取到IP地址 8.防火墙如果能搞定,就搞,搞不定可以采用AR设备代替 9.所有从内网出去的ip进行nat地址转换 10.核心层可以采用OSP

  • VS2010安装

    使用的电脑为Win10 64位,这是使用的VS2010: 链接:https://pan.baidu.com/s/1JV3zpoahAPTezE06dB2gEw 提取码:gty8  1、下载后点击【setup.exe】,安装VS2010; 2、点击【安装VS2010】; 3、这里点击【下一步】; 4、这里点击【我已阅读】和【下一步】;  5、这里点击【完全】和【安装】;  6、这里需要等10分钟左右; 7、安装成功后,点击【完成】; 8、这里点击【退出】或者直接点叉;  9、我这里是win10,在win的所有应用里找到VS2010; 10、启动后点击【文件】——【新建】——【项目】;  11、这里选择【Win32控制台应用程序】,修改自己想存放的位置,点击【确定】; 12、注意这里点击【下一步】,不要点击【完成】; 13、这里点击【空项目】——【完成】;  14、这里右键新创建的项目,点击【添加】——【新建项】;  15、这里选择C++文件,如果有其他需求可以选择其他

  • TCP/IP 原理 --概述

     封装和分用封装:当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图1-7所示。TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCPsegment)。IP传给网络接口层的数据单元称作IP数据报(IPdatagram)。通过以太网传输的比特流称作帧(Frame)。IP和网络接口层之间传送的数据单元应该是分组(packet)。分组既可以是一个IP数据报,也可以是IP数据报的一个片(fragment)。1.IP和网络层接口之间传送的数据单元是分组。分组既可以是IP数据报,也可以是IP数据报的一个片段。2.注意分组形成的以太网帧是要在网络中传输的,因此是比特流模式的。3.以太网首部包括以太网目的地址(6字节)、源地址(6字节)和两个帧类型。分 用:  当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个

  • 3D模型分割效果的制作

    效果图 1.先利用文本文档写出一个单词,如下  2.在将其截成两部分之前,要先将文本进行栅格化文字操作,如下  3.选框工具选中要截取的部分,剪切到透明图层(剪切:ctrl+shift+J键)  4.此时实现了单词分离,如下  5.对两个图层分别新建3D模型,并对二者进行合并,如下  6.接着进行拆分凸出,将字母从单词里面拆分出来,如下  7.3D模型进行形状变换,变换成自己想要的样式即可得到效果图      

  • uniapp token失效回到登陆页无效

    添加了个定时器 uni.reLaunch({ url:'/pages/login/index' }) setTimeout(()=>{ uni.reLaunch({ url:'pages/login/index' }) }) 复制 本文来自博客园,作者:懒惰ing,转载请注明原文链接:https://www.cnblogs.com/landuo629/p/15742609.html

  • .Net6+Furion+Sqlsugar+SenparcSdk开发微信公众号系列之四:自动回复

    一、关于SenparcSdk的MessageHandler 参考: Senparc.Weixin.MPSDK微信公众平台开发教程(六):了解MessageHandler Senparc.Weixin.MPSDK微信公众平台开发教程(七):解决用户上下文(Session)问题  二、在项目中使用MessageHandler WeiXinApi.Application新建Handler文件夹,并新建文件CustomMessageHandler  继承 MessageHandler<DefaultMpMessageContext>并实现抽象类 namespaceWeiXinApi.Application.Handler { publicclassCustomMessageHandler:MessageHandler<DefaultMpMessageContext> { privatestringappId=Config.SenparcWeixinSetting.WeixinAppId; privatestringappSecret=C

  • 语系变量locale:中文乱码问题

    locale(区域设置):查询语言环境信息。 locale-a:显示所有支持的语系    locale:显示当前的语系    通过修改LANG变量,修改当前系统语言(可通过ctrl+shift+c/v快捷键复制粘贴local-a命令显示的语系)    通过Vim编辑器转换文件编码格式(中文文件编码格式要与系统语系一致才可在终端正常显示),命令(末行)模式下输入 :setfileencoding=utf-8可将文件转换成utf-8格式 来自<http://blog.csdn.net/jnbbwyth/article/details/6991425/>

  • NOI模拟19

    网格图我用的spfa,然后寄了,不对,还有建议直接建边,要不然每次上下左右找的话常数太大了!! 第一题似乎是个nb题,于是我开始想\(meet\in\the\middle\),于是搞到了60,正解是个傻逼做法 后面两个只会打最短路辽~~ T1书 关于这个傻逼正解我就不多说啥了,我来说一下我的折半状压 发现有用的对只有20个,所以我们压这样的对是否可以在之后出现,然后用一些奇妙的办法,可以将复杂度降至\(\mathcal{O(2^{\frac{n}{2}}n^3)}\) 于是这个做法极其难写又难调,还是写正解吧,正解就是傻逼dp,nnd 折半dp #include<bits/stdc++.h> usingnamespacestd; #definefo(i,x,y)for(inti=(x);i<=(y);i++) #definefu(i,x,y)for(inti=(x);i>=(y);i--) intread(){ ints=0,t=1;charch=getchar(); while(!isdigit(ch)){if(ch=='-')t=-1;ch=getchar

  • 软工作业PSP与单元测试训练

    实现模块判断传入的电子邮箱账号的正确性; #include<stdio.h> #include<string.h> intcheckEmail(char*email){ char*p; p=strstr(email,"@"); if(!p)return0; if(!(p-email))return0; if(!(strstr(p,".")-p))return0; p=strstr(p,"."); if(*(p+1)=='\0')return0; return1; } voidmain(){ charemail[50]; printf("PleaseinputEmail:"); scanf("%s",email); if(checkEmail(email))    printf("ItisEmailAddress!"); else    printf("ItiserrorEmailAddress!"); getchar(); getchar(); } 任务清单工作量估算表: PSP阶段 时间估

  • DNS攻击

    DNS攻击 实验是基于Linux系统,配置了bind9服务的机器 大纲 本地修改Host文件重定向路径到指定地址 对User的DNS查询进行欺骗攻击 在同一局域网下,对DNS服务器的DNS查询进行欺骗攻击 不在同一局域网下,对DNS服务器的DNS查询进行欺骗攻击 环境配置 首先三台虚拟机分别给它们分配ip,如图,User为192.168.0.100,DNSServer为192.168.0.10,Attacker为192.168.0.200,对三台机器的代称为图中所示,下同。 DNSServer的配置: 修改/etc/bind/named.conf.options文件,增加dump.db作为DNS缓存的文件,使用chmod提高dump.db的文件权限(777) 设置DNSServer的本地zone为example.com和192.168.0.x两个域 重启bind9服务 User的配置: 设置User的默认DNS服务器为192.168.0.10 Attacker的配置: 设置Attacker的默认DNS服务器为192.168.0.10 三台机器的外部网关设置为VMwar

  • docker 安装 maven私服 nexus

    在家里自己玩java,因为最近趋势,所有的项目开发都是依赖maven,而私服在公司的时候,搭建有,但是在家里自己玩的时候,就没有这样的环境了,于是想到了docker安装。 搜一搜资料也不少,安装最终成功,写下步骤。 至于服务器安装docker之类的就不说了,因为之前写过了。 步骤如下: 1、登录服务器。搜索用的最多的版本 2、下载这个版本镜像信息。 3、执行安装版本nexus3。 4、登录验证测试。 5、设置配置nexus。 6、启动工具eclipse新建一个maven工程,连接我们的maven私服。 7、测试。。 8、成功。复制 1、登录服务器。搜索用的最多的版本 //搜索nexus相关 #dockersearchnexus复制     2、下载这个版本镜像信息。 //下载镜像 #dockerpullsonatype/nexus3//查看下载镜像#dockerimages|grepnexus复制     3、执行安装版本nexus3。 这里挂载的目录为: /home/soft/nexus/data //nexus

  • 超实用的mysql分库分表策略,轻松解决亿级数据问题

        一、分库分表的背景 在数据爆炸的年代,单表数据达到千万级别,甚至过亿的量,都是很常见的情景。这时候再对数据库进行操作就是非常吃力的事情了,select个半天都出不来数据,这时候业务已经难以维系。不得已,分库分表提上日程,我们的目的很简单,减小数据库的压力,缩短表的操作时间。       二、如何进行数据切分 数据切分(Sharding),简单的来说,就是通过某种特定的条件,将存放在同一个数据库中的数据拆分存放到多个数据库(主机)中,从而达到分散单台机器负载的情况,即分库分表。根据数据切分规则的不同,主要有两种模式, 垂直切分(纵向切分),是对不同的表(或者Schema)进行切分,存储到不同的数据库(主机)之上。 水平切分(横向切分),是对同一个表中的数据进行切分,存储到不同的数据库(主机)之上。规则是根据表中数据的逻辑关系,按照某种条件拆分。   垂直切分 垂直切分,强调的是业务的拆分。一个数据库由多个表构成,每个表对应不同的业务,那么我们可以指按照业务的不同将表进行分类,并将其分布到不同的数据库上,这样就将数据分摊到

  • 二十二、ACL技术

    1、ACL概述 访问控制列表ACL(AccessControlList)可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。 2、ACL分类 分类 编号范围 参数 基本ACL 2000-2999 源IP地址 高级ACL 3000-3999 源IP地址、目的IP地址、源端口、目的端口、协议等 二层ACL 4000-4999 源MAC地址、目的MAC地址、以太帧协议类型等

相关推荐

推荐阅读