大学生程序员必备的十款工具
程序员10款必备工具抓紧掌握
01·Vim文本编辑器
优点:功能强大、高度可定制,Vi编辑器中最好的一个。
Vim是vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
02·uTools桌面插件工具
优点:简洁美观、插件化,能够节约时间。uTools 是一个极简、插件化的现代桌面软件,通过自由选配丰富的插件,打造得心应手的工具集合。
03·Git分布式版本控制系统
优点:分布式开发、速度快、灵活。Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
04·Navicat数据库管理工具
优点:高效、安全,是最好用的数据库管理工具。“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库,它与阿里云、腾讯云、华为云、Amazon RDS、Amazon Aurora、AmazonRedshift、Microsoft Azure、Oracle Cloud 和MongoDB Atlas等云数据库兼容
05·IntelliJ IDEA集成开发环境
优点:业界排名第一的java开发工具。IintelliJIDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、创新的GUI设计等方面的功能可以说是超常的。
06·iTerm2终端管理器
优点:功能强大,一款终端神器。Term2 Mac版可以说是Mac下最好的终端工具。iTerm2拥有多标签、中键复制粘贴、命令记忆、高亮指针、迅捷重复、全屏切换等功能,提升操作效率。
07·Alfred查询和搜索工具
优点:被称作效率神器。
Alfred是 Mac系统上一款专注于效率提升的著名应用,它能帮你快速打开网页、快速进行自定义搜索查看剪贴板历史、快速查询单词等等。Alfred 提供的功能虽然很多,但目的只有一个 - 那就是减少我们工作中的一些重复动作,提升我们的工作效率。
08·Beyond Compare代码比较工具
优点:高效,适用于用于文档、源代码和HTMLoBeyond Compare可以很方便地对比出两份源代码文件之间的不同之处,相差的每一个字节用颜色加以表示,查看方便,支持多种规则对比。
09·Docker开源的应用容器引擎
优点:跨平台,跨服务器,实现应用程序跨平台间的无缝衔接。
Docker 其中包括,镜像、容器、仓库,很简单,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是 web 应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。
10·Postman接口调试与测试工具
优点:功能强大,使用简单且易用性好。Postman是一个简单好用的网页调试软件,很适合开发人员使用,性能稳定流畅,提供接口测试、并发测试等功能,还支持编写测试脚本,快速处理各种HTTP请求,测试数据精准高效。
前两天买了一台百度云服务器花了11块钱,花了点时间学了下如何部署hexo博客以及一些服务器方面的配置,没用hexo推荐的方式部署。专门记一个文章。系统用的是centos,先上图和链接
sunqx的博客
首先解释下
hexo 基于nodejs的快速、简洁且高效的博客框架,它是帮人快速搭建个人博客的。
PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。就是一开始上手感觉好容易报错。
这里只将一些官网上没有的,如何本地跑起来一个hexo 项目和部署一个主题请看官网 hexo官网
hexo server 是项目 的启动命令 ,默认hexo启动端口是4000。但这样启动项目,nodejs是一个单线程项目,万一某一次程序出错,那整个服务就挂了。所以需要pm2 来监控这项线程,万一出错pm2还能自动重启。
pm2 启动命令一般是 pm2 start appjs 那如何用pm2 来管理hexo呢,可以通过在项目目录下新建一个 appjs
如此一来在项目根目录下 就能用 pm2 start appjs 来跑hexo项目了
初次配置的云服务器需要安装这些工具包
本地配置ssh key
注意点:
生成服务器端公钥 和本地一样
cd ~/ssh
ssh-keygen -t rsa -b 4096 -C "931035063@qqcom"
eval "$(ssh-agent -s)"
ssh-add ~/ssh/id_rsa
生效,centos 下 service sshd restart
把 id_rsapub 里面的内容 放到git 账户里面ssh 配置里
服务器配置nodejs 用的是nvm,安装nvm
nvm 安装以后重新连接云服务器 ,不然环境变量不会生效
nvm安装nodejs,依次执行以下命令
拉取完以后记得先试用 hexo server 着能不能跑起来,进入文件夹先 npm install 再看还差什么其他的全局依赖
这一块真的是血泪啊,就2行命令行,报的错查了一下午。
然后运行2行命令 第一行在云服务器搭建运行环境,第二行每次重新发布项目需要
以后每次发布博客
hexo new '记一次hexo 博客上线 经验总结' 生成md文件,写完以后提交到git仓库
再用命令行在本地项目执行下 pm2 deploy ecosystemjson production --force 即可
这一块没啥说的 无非就是端口转发, 80转4000
nginx 安装
安装完重连服务器,不然怎么输命令配置都不生效
nginx 配置生效
基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发、部署、运维管理、持续开发持续集成的流程。平台提供基础设施、中间件、数据服务、云服务器等资源,开发人员只需要开发业务代码并提交到平台代码库,做一些必要的配置,系统会自动构建、部署,实现应用的敏捷开发、快速迭代。在系统架构上,PaaS云平台主要分为微服务架构、Docker容器技术、DveOps三部分,这篇文章重点介绍微服务架构的实施。
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
实施微服务需要投入大量的技术力量来开发基础设施,这对很多公司来说显然是不现实的,别担心,业界已经有非常优秀的开源框架供我们参考使用。目前业界比较成熟的微服务框架有Netflix、Spring Cloud和阿里的Dubbo等。Spring Cloud是基于Spring Boot的一整套实现微服务的框架,它提供了开发微服务所需的组件,跟Spring Boot一起使用的话开发微服务架构的云服务会变的很方便。Spring Cloud包含很多子框架,其中Spring Cloud Netflix是其中的一套框架,在我们的微服务架构设计中,就使用了很多Spring Cloud Netflix框架的组件。Spring Cloud Netflix项目的时间还不长,相关的文档资料很少,博主当时研究这套框架啃了很多英文文档,简直痛苦不堪。对于刚开始接触这套框架的同学,要搭建一套微服务应用架构,可能会不知道如何下手,接下来介绍我们的微服务架构搭建过程以及 需要那些 框架或组件来支持微服务架构。
为了直接明了的展示微服务架构的组成及原理,画了一张系统架构图,如下:
从上图可以看出,微服务访问大致路径为:外部请求 → 负载均衡 → 服务网关(GateWay)→ 微服务 → 数据服务/消息服务。服务网关和微服务都会用到服务注册和发现来调用依赖的其他服务,各服务集群都能通过配置中心服务来获得配置信息。
服务网关(GateWay)
网关是外界系统(如:客户端浏览器、移动设备等)和企业内部系统之间的一道门,所有的客户端请求通过网关访问后台服务。为了应对高并发访问,服务网关以集群形式部署,这就意味着需要做负载均衡,我们采用了亚马逊EC2作为虚拟云服务器,采用ELB(Elastic Load Balancing)做负载均衡。EC2具有自动配置容量功能,当用户流量达到尖峰,EC2可以自动增加更多的容量以维持虚拟主机的性能。ELB弹性负载均衡,在多个实例间自动分配应用的传入流量。为了保证安全性,客户端请求需要使用https加密保护,这就需要我们进行SSL卸载,使用Nginx对加密请求进行卸载处理。外部请求经过ELB负载均衡后路由到GateWay集群中的某个GateWay服务,由GateWay服务转发到微服务。服务网关作为内部系统的边界,它有以下基本能力:
1、动态路由:动态的将请求路由到所需要的后端服务集群。虽然内部是复杂的分布式微服务网状结构,但是外部系统从网关看就像是一个整体服务,网关屏蔽了后端服务的复杂性。
2、限流和容错:为每种类型的请求分配容量,当请求数量超过阀值时抛掉外部请求,限制流量,保护后台服务不被大流量冲垮;党内部服务出现故障时直接在边界创建一些响应,集中做容错处理,而不是将请求转发到内部集群,保证用户良好的体验。
3、身份认证和安全性控制:对每个外部请求进行用户认证,拒绝没有通过认证的请求,还能通过访问模式分析,实现反爬虫功能。
4、监控:网关可以收集有意义的数据和统计,为后台服务优化提供数据支持。
5、访问日志:网关可以收集访问日志信息,比如访问的是哪个服务?处理过程(出现什么异常)和结果?花费多少时间?通过分析日志内容,对后台系统做进一步优化。
我们采用Spring Cloud Netflix框架的开源组件Zuul来实现网关服务。Zuul使用一系列不同类型的过滤器(Filter),通过重写过滤器,使我们能够灵活的实现网关(GateWay)的各种功能。
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
服务注册与发现
由于微服务架构是由一系列职责单一的细粒度服务构成的网状结构,服务之间通过轻量机制进行通信,这就引入了服务注册与发现的问题,服务的提供方要注册报告服务地址,服务调用放要能发现目标服务。我们的微服务架构中使用了Eureka组件来实现服务的注册与发现。所有的微服务(通过配置Eureka服务信息)到Eureka服务器中进行注册,并定时发送心跳进行 健康 检查,Eureka默认配置是30秒发送一次心跳,表明服务仍然处于存活状态,发送心跳的时间间隔可以通过Eureka的配置参数自行配置,Eureka服务器在接收到服务实例的最后一次心跳后,需要等待90秒(默认配置90秒,可以通过配置参数进行修改)后,才认定服务已经死亡(即连续3次没有接收到心跳),在Eureka自我保护模式关闭的情况下会清除该服务的注册信息。所谓的自我保护模式是指,出现网络分区、Eureka在短时间内丢失过多的服务时,会进入自我保护模式,即一个服务长时间没有发送心跳,Eureka也不会将其删除。自我保护模式默认为开启,可以通过配置参数将其设置为关闭状态。
Eureka服务以集群的方式部署(在博主的另一篇文章中详细介绍了Eureka集群的部署方式),集群内的所有Eureka节点会定时自动同步微服务的注册信息,这样就能保证所有的Eureka服务注册信息保持一致。那么在Eureka集群里,Eureka节点是如何发现其他节点的呢?我们通过DNS服务器来建立所有Eureka节点的关联,在部署Eureka集群之外还需要搭建DNS服务器。
当网关服务转发外部请求或者是后台微服务之间相互调用时,会去Eureka服务器上查找目标服务的注册信息,发现目标服务并进行调用,这样就形成了服务注册与发现的整个流程。Eureka的配置参数数量很多,多达上百个,博主会在另外的文章里详细说明。
微服务部署
微服务是一系列职责单一、细粒度的服务,是将我们的业务进行拆分为独立的服务单元,伸缩性好,耦合度低,不同的微服务可以用不同的语言开发,每一个服务处理的单一的业务。微服务可以划分为前端服务(也叫边缘服务)和后端服务(也叫中间服务),前端服务是对后端服务做必要的聚合和剪裁后暴露给外部不同的设备(PC、Phone等),所有的服务启动时都会到Eureka服务器进行注册,服务之间会有错综复杂的依赖关系。当网关服务转发外部请求调用前端服务时,通过查询服务注册表就可以发现目标服务进行调用,前端服务调用后端服务时也是同样的道理,一次请求可能涉及到多个服务之间的相互调用。由于每个微服务都是以集群的形式部署,服务之间相互调用的时候需要做负载均衡,因此每个服务中都有一个LB组件用来实现负载均衡。
微服务以镜像的形式,运行在Docker容器中。Docker容器技术让我们的服务部署变得简单、高效。传统的部署方式,需要在每台服务器上安装运行环境,如果我们的服务器数量庞大,在每台服务器上安装运行环境将是一项无比繁重的工作,一旦运行环境发生改变,就不得不重新安装,这简直是灾难性的。而使用Docker容器技术,我们只需要将所需的基础镜像(jdk等)和微服务生成一个新的镜像,将这个最终的镜像部署在Docker容器中运行,这种方式简单、高效,能够快速部署服务。每个Docker容器中可以运行多个微服务,Docker容器以集群的方式部署,使用Docker Swarm对这些容器进行管理。我们创建一个镜像仓库用来存放所有的基础镜像以及生成的最终交付镜像,在镜像仓库中对所有镜像进行管理。
服务容错
微服务之间存在错综复杂的依赖关系,一次请求可能会依赖多个后端服务,在实际生产中这些服务可能会产生故障或者延迟,在一个高流量的系统中,一旦某个服务产生延迟,可能会在短时间内耗尽系统资源,将整个系统拖垮,因此一个服务如果不能对其故障进行隔离和容错,这本身就是灾难性的。我们的微服务架构中使用了Hystrix组件来进行容错处理。Hystrix是Netflix的一款开源组件,它通过熔断模式、隔离模式、回退(fallback)和限流等机制对服务进行弹性容错保护,保证系统的稳定性。
1、熔断模式:熔断模式原理类似于电路熔断器,当电路发生短路时,熔断器熔断,保护电路避免遭受灾难性损失。当服务异常或者大量延时,满足熔断条件时服务调用方会主动启动熔断,执行fallback逻辑直接返回,不会继续调用服务进一步拖垮系统。熔断器默认配置服务调用错误率阀值为50%,超过阀值将自动启动熔断模式。服务隔离一段时间以后,熔断器会进入半熔断状态,即允许少量请求进行尝试,如果仍然调用失败,则回到熔断状态,如果调用成功,则关闭熔断模式。
2、隔离模式:Hystrix默认采用线程隔离,不同的服务使用不同的线程池,彼此之间不受影响,当一个服务出现故障耗尽它的线程池资源,其他的服务正常运行不受影响,达到隔离的效果。例如我们通过andThreadPoolKey配置某个服务使用命名为TestThreadPool的线程池,实现与其他命名的线程池隔离。
3、回退(fallback):fallback机制其实是一种服务故障时的容错方式,原理类似Java中的异常处理。只需要继承HystixCommand并重写getFallBack()方法,在此方法中编写处理逻辑,比如可以直接抛异常(快速失败),可以返回空值或缺省值,也可以返回备份数据等。当服务调用出现异常时,会转向执行getFallBack()。有以下几种情况会触发fallback:
1)程序抛出非HystrixBadRequestExcepption异常,当抛出HystrixBadRequestExcepption异常时,调用程序可以捕获异常,没有触发fallback,当抛出其他异常时,会触发fallback;
2)程序运行超时;
3)熔断启动;
4)线程池已满。
4、限流: 限流是指对服务的并发访问量进行限制,设置单位时间内的并发数,超出限制的请求拒绝并fallback,防止后台服务被冲垮。
Hystix使用命令模式HystrixCommand包装依赖调用逻辑,这样相关的调用就自动处于Hystrix的弹性容错保护之下。调用程序需要继承HystrixCommand并将调用逻辑写在run()中,使用execute()(同步阻塞)或queue()(异步非阻塞)来触发执行run()。
动态配置中心
微服务有很多依赖配置,某些配置参数在服务运行期间可能还要动态修改,比如:根据访问流量动态调整熔断阀值。传统的实现信息配置的方法,比如放在xml、yml等配置文件中,和应用一起打包,每次修改都要重新提交代码、打包构建、生成新的镜像、重新启动服务,效率太低,这样显然是不合理的,因此我们需要搭建一个动态配置中心服务支持微服务动态配置。我们使用Spring Cloud的configserver服务帮我们实现动态配置中心的搭建。我们开发的微服务代码都存放在git服务器私有仓库里面,所有需要动态配置的配置文件存放在git服务器下的configserver(配置中心,也是一个微服务)服务中,部署到Docker容器中的微服务从git服务器动态读取配置文件的信息。当本地git仓库修改代码后push到git服务器仓库,git服务端hooks(post-receive,在服务端完成代码更新后会自动调用)自动检测是否有配置文件更新,如果有,git服务端通过消息队列给配置中心(configserver,一个部署在容器中的微服务)发消息,通知配置中心刷新对应的配置文件。这样微服务就能获取到最新的配置文件信息,实现动态配置。
以上这些框架或组件是支撑实施微服务架构的核心,在实际生产中,我们还会用到很多其他的组件,比如日志服务组件、消息服务组件等等,根据业务需要自行选择使用。在我们的微服务架构实施案例中,参考使用了很多Spring Cloud Netflix框架的开源组件,主要包括Zuul(服务网关)、Eureka(服务注册与发现)、Hystrix(服务容错)、Ribbon(客户端负载均衡)等。这些优秀的开源组件,为我们实施微服务架构提供了捷径。
如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。
你好呀,我是why。
刚刚过去的周末你干啥了,是卷起来了,还是躺平了?
我其实是想躺平的,但是无意间发现一个学习的网站,居然被这个网站吸引了,然后就跟着网站卷起来了。
真是一个非常不错的网站,好东西,要大家分享,于是我决定“曝光”一下。
介绍这个网站之前,我先问你一个问题:
我相信绝大部分同学都是知道的,但是也有很大一部分同学仅仅是在“纸上谈兵”的阶段而已。
没有自己实际操作过。
为什么呢?
我猜你刚刚知道 Arthas 的时候,肯定是被它各种炫酷的操作、页面给吸引到了。
心想:卧槽,这么 6?
兴致勃勃的准备实操一把,结果一看:需要自己搞个 Demo ,把 Demo 扔到服务器上运行起来,然后在服务器上安装 Arthas,才能分析。
这一套操作对于大部分人来说是没有啥问题的。
但是还是有相当大的一部分同学,都没有一个属于自己的服务器。
巧妇也是难为无米之炊的呀。
第一步就被卡的死死的。
有心实操,奈何条件有限。
于是这事就被搁浅了,放着放着,由于自己没有实操过,关于 Arthas 的各种骚操作也就忘的差不多了。
没有一个趁手的 Demo,没有服务器,没有一个安装好环境的服务器。
这种问题经常出现,也算是学习中遇到的“最后一公里”的问题。
我碰到的这个网站,就是为了解决“最后一公里”这一问题的。
也许它还不够完善,但是至少在 Arthas 上的支持已经是属于无可挑剔了,真正的手摸手教学。
铺垫了这么多,那么网站是啥呢?
就是下面这个网站:
知行动手实验室,是阿里旗下的阿里云弄出来的云原生开源技术体验平台。
它自带运行环境。
使用者只需要关心教程内容本身,无需为繁琐的运行环境准备工作浪费时间。所有实验都在一个事先准备好运行环境的容器中运行。
它具有沉浸式学习体验。
集交互式文档、终端、编辑器三个窗口于一个浏览器页面,无需在多个窗口来回复制粘贴。
它可以一键自动执行命令、代码自动修改。
文档实时可交互,通过鼠标点击即可一键自动执行命令、代码自动修改等操作;也可以选择在终端、编辑器内手动输入查看效果。
我知道,这里的画风看起来很像是一个广告。
但是我发誓,我真的是自来水,真心推荐。
知行动手实验室,看这个名字就知道强调的是“行知合一”,是“动手”。
我曾经看到过阿里的一篇名叫《我看技术人的成长路径》的文章。
但是实际情况呢,我们不得不承认,大家自学占据了相当大的比重。
而大家自学的时候都有一个通病就是:只看、只想,基本不动手。
关于动手,我印象最深的就是我看这本书的时候:
我记得看这本书的时候,是我刚刚毕业一年多的时候。
当时觉得技术书还挺贵的,还是和同事一起合买的,一人出一半的钱,书放在办公室大家一起看看。
我那个时候一有时间就去翻翻这书。
第一次看的时候感觉:哇塞,这真是一本好书啊。里面全是我不知道的知识点。
但是看完之后,没隔多久,遇到一个问题然后想了半天:呃,这个问题书上好像讲过啊,怎么就想不起来了呢?
于是我就问同事:你是怎么看这个书的呀?我前段时间把书每一页都翻完了,但是现在好多东西都想不起来了。
他告诉我:首先得多看,书中的信息量对你来说还是太大了,看一遍吸收不完全是很正常的。还有,书里面的这么多动手操作的实例,你跟着敲了没?我都操作了一遍,遇到了各种各样的坑。印象自然而然的就深刻了一点。
可谓是一语点醒梦中人,我确实是没有实操过。
不仅没有实操过,甚至一看到实操部分的具体命令,我都是几眼就瞟完了,因为我觉得这部分不重要。
后来我又看了一遍,看这遍的时候,我搞了几个服务器,就跟着书上,把上面的命令都敲了一遍。
进度慢了很多很多,但是吸收的东西也多了很多很多。
过去这么几年了,时至今日,我都记得周末的时候我跑到公司去翻这本书的场景。我都记得我跟着书上搭建集群的时候遇到的各种各样奇奇怪怪的问题。我都记得那 16384 个槽,还有那我怎么也运行不起来的 redis-tribrb。
我都记得几年以后的一次,面试官问我:你了解 Redis 的集群吗,你自己搭过集群吗?
我当然记得了,毕竟之前那个只有一年经验的小伙子硬着头皮搭集群的时候,心态都被搞崩过数次。
还有近段时间断断续续在看的《MySQL实战45讲》、《MySQL是怎样运行的》、《高性能MySQL》。
里面其实都有大量的实例,特别是 45 讲,好东西呀,老师全是基于案例去讲的。
我看的时候也看的很慢,反正不管懂不懂,先动手开几个窗口,然后把实验的 SQL 准备好,跟着老师一步步的来。
总之,就是要动手。动手,才是学习新技术的不二法门。
做中学,就是动手去做,边做边学。
但是动手的时候大多数时间都是在环境的准备上,导致效率稍微有了那么一点点的低下。
而这个网站,就在部分项目上,解决了这个问题。
回到知行动手实验室,带大家一起逛一下这个网站。
说真的,目前这个网站的东西不算特别多,也就是花费了我一个周末的时间研究了一圈。
主要是里面还有一些我不太了解的开源项目,去了解了一下,开拓了一下眼界。
主打的都是阿里生态下的一些技术栈,目前一共有 16 个教程:
可以看到,首先映入眼帘的就是 Arthas 这个诊断工具,毕竟是阿里的亲儿子中比较有出息的一个嘛。
全力推广,不过分。
Arthas 其中分为了四个教程,从入门到实践一应俱全。
接着是 Spring Cloud Alibaba 系列体验:
里面的六个小实验,其中分布式配置、服务注册与发现都是基于 Nacos 做的。 RPC 调用使用的是 Dubbo Spring Cloud、限流与熔断基于 Sentinel、分布式事务使用 Seata、分布式消息基于 RocketMQ。
基本涵盖了微服务开发的主要模块。
算的上是一次完整的体验。
当然了,还有一些其他的 RocketMQ、Dapr、Dubbogo、ChaosBlade、k8s 的实操教程,就不一一解释了。
大家知道目前里面有这些东西就行。
上面提到的大家可能对于 Dapr 和 ChaosBlade 稍微陌生一点。
简单的说一下。
Dapr 的全称是 Distributed Application Runtime,翻译过来就是分布式应用运行时。
它主要是为了云原生而服务的。
应该是属于服务网格中的一种技术,是一种运行时,支持k8s,目的是为了更好的隔离业务,让业务更少的感知中间件等基础建设。
其实与它对标的,应该就是 istio 架构。
需要注意的是 Dapr 是由微软发起的一个开源项目,并不是阿里。
阿里是 Dapr 开源项目的深度参与者和早期采用者,相当于是对于 Dapr 的一个国内大厂背书。
而 ChaosBlade 就是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。
引用其 git 上的描述:
该项目的生态如下:
目前支持这么多场景:
比如在知行动手实验室里面就有三个实验场景:
总之,关于 ChaosBlade 你就记住一句话:
它是来搞破坏的。给系统或者系统运行的环境注入各种各样的故障,以测试并提升系统的稳定性和高可用性。
在知行动手实验室里面,除了前面提到的官方教程外,它还支持大家自己上传教程。
下面这几种情况就很适合在上面发布教程:
你想想,要是我前面提到的《Redis开发与运维》书里面的随书实验能发布到这里,那岂不是美滋滋?
学习效率肯定又高了起来。
教程,是该实验室的一大核心功能。
但是,它还有另外一大功能:
Java 工程脚手架,下面的标语是:
更适合亚太区开发者的 Java 工程脚手架。
虽然我目前还不明白为什么是“更适合亚太区”,但是反正听着就很厉害的样子。
其页面是这样的,是不是很眼熟?
一看就是对标的大家更为熟悉的这个:
但是通过我的实际使用,我不得不说,还是阿里的脚手架更好用一点。
比如我用阿里的脚手架,搭建的时候选择一个 web 项目的示例代码:
该项目结构如下:
而且这个 web 项目不需要改一行代码,甚至不需要你启动数据库,就能直接运行起来。
因为其使用的 h2 数据库:
运行起来后,访问 h2 控制台如下:
虽然 Demo 项目运行的过程中我发现了几个 bug,但是整体无伤大雅,修改起来也很简单,对于初学者来说,还是很友好的。
在这个页面我还发现了一个叫做 COLA 的项目架构:
COLA 是啥玩意?
我在官网上拉了一个 COLA 的 Demo,跑了起来,项目结构如下:
官方给了这样的一个代码结构图:
看到这里的时候,我大概明白了,有 App 层、Domain 层、 Infrastructure 层,这个架构其实就是 DDD 思想的一种落地吧。
经过这两天短暂的了解,我发现如果想要理解一下抽象的 DDD 思想,那么 COLA 架构,我感觉是一个不错的切入点。
前面介绍了这么多东西,我还是来带着你实操一把,里面的黄金教程:
其实我觉得真的没有这个必要,因为它上面的教程已经是一步步的手摸手教学了。
比如,你看这个 Arthas 基础教程,我给你录个屏幕:
左边是操作文档,右边是运行环境。所及即所得,多香啊。
我是强烈建议你把四个教程都自己去看一遍,操作一把。
但是重心可以放到这个教程里面:
你看看这个教程里面的 14 个实验:
比如其中的“Arthas热更新代码案例”,这个其实就是一个生产环境常常会遇到的一个问题:
有一个判断逻辑有问题,我不想修改代码之后,重新打包,然后走上线流程,怎么办?
Arthas 热更新了解一下?
比如,下面的代码:
现在当请求的 id 小于 1 的时候会抛出异常。但是上线之后,我们经过评估发现这个地方也许返回一个默认的值,不抛出异常会更好一点。
那么我们就可以用 Arthas 对这段代码进行热更新。
左边是修改之后,右边是修改之前:
具体怎么去修改,怎么去用 ClassLoader 加载修改之后的代码,这个案例里面都有详细的使用说明:
当然了,如果你要是在实操之后,又再去了解了其热更新背后的工作原理,那么是再好不过的了。
知道了使用方式,掌握了实现原理。恭喜你,再给自己的套一个生产案例,不经意间面试的时候有多了一个加分点。
另外,悄悄的说个骚操作。
你可以随便找个教程,领个窗口,然后
比如我装个 Redis:
用起来也是不错的:
而且它也支持文件的上传和下载:
诶,反正就是玩嘛。就当熟悉 Linux 命令了。
不能,一般网盘没有这项服务,不过你可以用Git仓库试试,码云的pages就可以,不过不支持绑定域名,github好像支持绑定域名,你可以研究一下。
不过现在域名和云主机都很便宜,有的平台都可以免费申请到,不花钱的都比较鸡肋,建议去阿里云,腾讯云,华为云,百度云上看看。
将GitLab的数据库导入阿里云PostgreSQL RDS
GitLab的数据库用的是PostgreSQL,之前由于阿里云RDS不支持PostgreSQL,只能将GitLab的数据库部署在云服务器上。
6月1日得知阿里云推出了PostgreSQL RDS,于是立马将GitLab的数据库迁移至PostgreSQL RDS。
下面分享一下迁移的主要操作步骤:
1)在GitLab服务器上备份GitLab数据库
操作命令:
sudo gitlab-rake gitlab:backup:create SKIP=db
注:这个命令原本是只备份数据库,但实际运行时也会备份repositories,可以在完成数据库备份时,ctrl+C直接退出。
数据库备份成功后,会在 /var/opt/gitlab/backups/db 文件夹中看到 databasesql 文件,导入时只需将这个文件导入到阿里云RDS。
2)在阿里云RDS中创建GitLab的数据库帐户与数据库
在阿里云RDS控制台首页点击逗登录数据库地,进入idbrdsaliyuncom,选择对应的PostgreSQL实例。
a)创建2个帐户:gitlab, gitlab-psql
b)创建gitlabhq_production数据库,所有者为gitlab。
3) 在GitLab服务器上进行导入操作
a) cd /var/opt/gitlab/backups/db
b) psql -h [RDS实例网址] p 3433 -d gitlabhq_production -U gitlab -f databasesql
在这篇文章里1。计划和价格。特点3。表现。安全5。支持这是SiteGround的一场全面胜利,虽然流行并不总是意味着更好,但在SiteGroundvsVentraIP挑战赛中,它确实意味着更好。尽管VentraIP是澳大利亚领先的网络主机之一,但它在面对面的挑战中无法击败像SiteGround这样强大的主机。
I在多个不同领域对这两种托管服务进行了全面测试。虽然VentraIP似乎比SiteGround便宜一点,但由于SiteGround功能丰富的共享托管软件包、更好的安全性和更高的性能,你的钱是物有所值的。
点击此处获取SiteGround的最新交易,或者继续阅读,了解是什么让SiteGround成为这一深入比较的赢家。
1。计划和定价VentraIP稍微便宜一点,但SiteGround性价比更高有了SiteGround,您可以从共享、WordPress、WooCommerce、云或经销商托管以及专用服务器中进行选择。另一方面,VentraIP只提供共享、经销商和VPS托管。
这两个服务都有三个共享主机的计划。使用SiteGround,您可以选择按月、按年、每两年或每三年计费。VentraIP只允许你每月或每年订阅一次。
SiteGroundWebHostingPlanNames存储带宽SitesPricePlanNames存储带宽SiteSpriceStartu0GbUnlimited1$299更多详细信息RowBig20GbUnlimitedUnlimited$669更多详细信息Gogek30GbUnlimitedUnlimited$1069更多详细信息VentraIPWebHostingPlanNames存储带宽价格PlanNames存储带宽价格Starter+5GbUnlimited$349更多详细信息自由+15GBunlimited$699更多详细信息Premier+25GBunlimited$1049更多详细信息从VentraIP
Price购买任何托管服务时都包括免费域名,VentraIP的续费率略低于SiteGrand。然而,SiteGround提供了大量有价值的功能(请参阅功能部分),使其更具性价比。
SiteGround和VentraIP均不提供免费域名;不过,除了SiteGround最小的网站外,您可以在所有计划中获得免费的网站迁移。
使用Siteground,您可以获得30天的退款保证,而VentraIP提供45天的退款保证。谁是赢家?场地。尽管VentraIP更便宜,但SiteGround拥有更多样化的托管选项和增值功能。
查看SiteGround的最佳计划2。功能VentraIP无法击败SiteGround的功能丰富的共享托管计划通过SiteGround的共享托管计划,你可以获得1到无限的网站、10到40GB的SSD存储、10000到100000个月访客、无限的电子邮件帐户、无限的数据库和托管WordPress。
所有SiteGround的共享托管计划都提供免费的每日备份、免费的SSL证书、免费的Weeblysitebuilder和免费的CDN。
如果你注册了GrowBig或GoGeek计划,你还将获得提速缓存、站点登台,并可以使用单独的SiteGround帐户向你的网站添加合作者。
GoGeek计划还为您提供了更多服务器资源、预装Git和优先级支持。另一方面,VentraIP的计划提供5GB到25GB的SSD云存储、无限带宽、无限数据库和无限电子邮件帐户。
VentraIP还免费提供了一些额外功能,如ComodoSSL证书和Acronis云每小时备份,以保护您的数据。
在下面的比较表中发现SiteGround和VentraIP之间的更多差异:
SiteGroundVentraIPHosting类型共享、WordPress、WooCommerce、云、分销商、专用服务器共享、分销商、VPSFree域免费SSL证书磁盘空间10GB至120GB5GB_200GB(取决于计划)带宽未感兴趣的2TB_不受限制的自动备份每天小时控制面板站点工具面板电子邮件帐户SunLimitedUnlimitedFreeCDN免费站点迁移是的,但不是在最便宜的共享或WordPress计划上退款保证30天45天1赢家?场地。与VetraIP相比,SiteGround的共享主机包具有更多增值功能。查看SiteGround的最佳交易3。性能SiteGound比VentraIP提供更快的页面加载速度SiteGround通过美国、英国、荷兰和新加坡的服务器位置提供服务。VentraIP只有两个服务器位置,而且都在澳大利亚。
两台主机都使用SSD存储,在网站数据处理方面比HDD快得多,从而提高网站的加载速度和整体性能。
虽然SiteGround的所有计划都包含免费CDN,但VentraIP没有。CDN或内容交付网络是一种提高性能的功能。它将您的网站置于全球云服务器网络上,以提高从不同位置加载的速度。
SiteGround和VentraIP承诺999%的正常运行时间保证,经过测试,两者都以完美的正常运行时间评级超过了承诺。
当使用Sucuri从不同地点测试SiteGround的装载速度时,它在北美和欧洲的一些地方显示出了良好的速度。不幸的是,其他地点的加载时间要慢得多,导致全球得分为B。您可以在这篇详细的SiteGround评论中看到更多结果。
两台主机都有可靠的支持。虽然SiteGround有更好的知识库,但VentraIP有更多的支持渠道。换句话说,这是支持回合的平局。
这是SiteGround的一场全面胜利尽管SiteGround和VentraIP在支持回合中平分秋色,但SiteGround在其他所有类别中都获胜。毫不奇怪,SiteGround是十大最佳网络主机之一。
VentraIP可能稍微便宜一点,但SiteGround提供了更多托管选项、功能丰富的计划和高级安全功能。SiteGround还提供了比VentraIP更好的性能。
siteGroundVentraipplan和PricingMore托管计划。稍微贵一点。30天退款保证水计划。更便宜的续费率。45天退款保证Ekey功能免费网站迁移、免费SSL、SSD存储、免费网站构建免费网站迁移、免费ComodoSSL、SSD云存储性能更多服务器位置、所有计划的免费CDN、999%正常运行时间保证、无停机时间、更快的加载速度下载服务器位置、所有计划的SSD存储、999%正常运行时间保证、无停机时间、,加载速度较慢安全WAF、AI反机器人系统(防止DDoS和暴力等恶意攻击)、24/7服务器监控、SG扫描器(反恶意软件)、独特的帐户隔离、免费每日备份CoreroDDoS保护、Fortinet硬件防火墙、CageFS、Immunity360、CSF/LFD、动态ModSecurity规则集、CloudLinux操作系统(仅适用于VPS),免费每小时备份/每6小时备份一次(取决于计划)支持全面而有序的知识库、24/7实时聊天和电话支持、高度响应、员工非常无助的全面知识库、24/7实时聊天、电话、ema对于每一个开发者而言,开发工具就相当于他们的武器,选择一个合适的工具能够帮助我们在工作时事半功倍,在互联网逐渐发展成熟的今天,越来越多的开发工具供我们选择,但其中总有一些更好用的,如何选择成为了一大难题。
从而颁布了2021年StackShare第八届顶级工具奖,快来看看有没有你青睐的开发工具吧。
年度最佳新兴工具
1FastAPI
FastAPI 是一个使用 Python36+ 构建 Web API 的高性能框架。根据框架创建者的说法,FastAPI 性能与 NodeJS 或 Golang 相当。
2GitHub Copilot
作为一款 AI 结对编程工具,Copilot 的主要定位是提供类似 IntelliSense/IntelliCode 的代码补全与建议功能,但在实际表现上有望超越同样由微软合作伙伴 OpenAI 开发的 Codex AI 系统。
3FiglamFigma
Figma 是一个 基于浏览器 的协作式 UI 设计工具,从推出至今越来越受到 UI 设计师的青睐,也有很多的设计团队投入了Figma 的怀抱,
4Logtail
Logtail是日志服务提供的日志采集Agent,用于采集阿里云ECS、自建IDC、其他云厂商等服务器上的日志。本文介绍Logtail的功能、优势、使用限制及配置流程等信息。
5Coder
开发人员工作区平台·
6Chartscsscss
Chartscss 是用于数据可视化的开源 CSS 框架,帮助用户理解数据,帮助开发人员使用简单的 CSS 类将数据转换为漂亮的图表。·
7Counter
简单并且免费的网络分析·
8React Query
React Query是一个库,可为任何类型的异步数据提供ReactJS状态管理功能。根据他们的官方文件,·
9vscodedev
将VS Code引入浏览器,构建一个可以在浏览器中完全无服务器运行的开发工具。
10BookStack
BookStack 是一个开源的、基于 Laravel + Vuejs 构建的知识管理和服务平台。具有简单但功能强大的所见即所得编辑器,允许团队轻松创建详细且有用的文档。·
11ThunderClient
Thunder Client 为我们提供了一款轻量级、易用、整洁、简单的 Rest API 客户端扩展。·我们可以利用 Thunder Client 在编辑器内快速测试代码库的 API 端点,从而最大限度地减少页面的切换。它可以替代 Postman,作为常用的无脚本测试工具。
12Quod AI
Quod AI Code Search是一个由人工智能驱动的Chrome扩展,可以自动从Git存储库或Jira问题中搜索代码。
它使用问题的标题和描述,并自动在你的Git存储库中找到匹配的内容。
13Dendron
Dendron 是典型的开源社区编程思维的解决方案,虽然初看起来有一点学习曲线,但从根本上是给了使用者最大的自由发挥空间,同时又提供了最强大和最彻底的工具生态支持。·
14Notion API
把概念和你每天使用的工具联系起来·
15Github1s
只需1秒,就可以用VS Code方式来看GitHub代码。·
16Ocean
容器的无服务器基础架构引擎·
17Magic
快速构建应用程序,可定制,无密码登录
·
18Jina
更简单的一种在云上构建神经搜索的方法,
19Focalboard
一款开源、本地存储、免费的类 Notion 应用Focalboard 的自我定位是“Trello、Notion 和 Asana 的开源、自托管替代品”。·
20zx
更好地编写脚本的工具(By Google)
21OpenSearh
OpenSearch是阿里云开放搜索简称,为解决用户结构化数据搜索需求的托管服务,支持数据结构、搜索排序、数据处理自由定制。·
22Querybook
一个可以发现、创建和共享数据分析、查询以及表的大数据IDE(通过Pinterest),
23MangoDB
MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。MongoDB就是数据库,是NoSQL类型的数据库
24TooIJet
Retool的开源替代品·
25Kitemaker
Kitemaker是为团队而非经理创建的超快速问题跟踪器。为远程团队创建的Jira的快速替代方案·
26Appflowy
Appflowy 是一款使用 Flutter 和 Rust 构建的开源笔记软件,它支持Windows、macOS和Linux,可以免费下载使用
27Kubegres
Kubegres 是一个 Kubernetes Operator,用来部署并维护 PostgreSql 集群,提供开箱即用的数据复制和故障转移功能,简化 PostgreSql 集群生命周期管理,降低数据复制的复杂性
28Lightning Web Components
Lightning Web Components,业内简称LWC,是Salesforce于Spring 19发布的一款新型Lightning Component,快速的企业级Web组件基础
29Judo
用无代码构建原生应用体验
30Apache APISIX
Apache APISIX Apache APISIX是一个动态、实时、高性能的API网关。提供了丰富的流量管理功能,如负载均衡、动态上游、canary释放、断路、认证、可观察性等。
31Control
提供免费的加速、自动化安全性以及SOC2合规
32Remix
专注于Web技术和现代 用户体验的框架
33NocoDB
免费并且开源的Airtable替代方案
34JetBrainsQodana
评估你拥有的、合同或购买的代码的完整性
35TabnineAI
只能代码编写
36Coolify
一个开源的,自适应的Heroku和Netlify的替代品
37Penpot
开源设计和原型平台
38Portman
Postman介绍:postman是一个开源的接口测试工具,无论是做单个接口的测试还是整套测试脚本的拨测都非常方便。
39Devops Stack
持续部署Kubernetes环境
40Slidev
面向开发人员的演示幻灯片
41ReScript
ReScript 是一门针对 JavaScript 程序员的新语言,特别是对 TypeScript 和 Flow 的类型安全感兴趣的程序员。ReScript 的语法和 JavaScript 非常相似
42Fig
自定完成终端
43FlutterFlow
Flutterflow 是一个在线低码平台,使人们在视觉上以人们在视觉上构建本机移动应用程序。
44Porter
运行在你自己的云中的Heroku
45SigmaOS
在 SigmaOS 中,你会看到完全不同的浏览器布局,它更像是一个工作台
46VictoeiaMetrics DB
快速、低成本的监控解决方案和时间序列数据库
47CloudflarePages
JAMstack平台为前端开发者提供协作和部署网站的平台
48 Devbook
面向开发者的搜索引擎
49Front Matter
直接在VS Code中管理静态站点
50Supacase UI
用于企业仪表的React组件库
以上可以说是集结了开发行业中的所有“神器”,不仅能助力程序员高效工作,也是今后走向开发岗位小伙伴们的加薪工具。小伙伴可以从中挑选适合自己的工具~
0条评论