工具

Maven详细简介

1.maven简介
1.1 简介
        maven 最主要体现在两个词上:项目和管理。maven给我们整个开发团队找出了一种能够更加科学的去管理我们项目的思想。maven通过使用配置文件的方式使得项目在管理和交接的过程中成本变得非常低。maven提出了一种叫做maven仓库的概念,使得我们可以将第三方和我们需要引用的项目都放置在maven仓库当中。如果其他人或项目组也需要使用,就可以直接通过maven进行配置就行。这样就可以将人员成本、沟通成本等等都进行降低。
        如果还不理解我们举个例子:加入我们现在想做一份菜:糖醋排骨。如果我们想要做这道菜,那么我们首先要先去菜市场买排骨、糖、醋、......,而且在做的时候还要注意使用糖醋的用量等等。那么如果有一个超市,该超市有卖糖醋排骨的料理包,这是不是就能很大的节省我们做饭和买菜的时间开销。其实maven就是这个卖料理包的超市,当人卖的不是料理包,而是一系列的jar包。这样我们在写代码的时候就不需要去其他网站上下载一大堆的jar包。
1.2 项目构建
       不知道大家有没有意识到,构建(build)是每一个程序员都在做的工作。仔细观察我们会发现,除了编写代码,我们每天都有相当一部分时间花在了编译,运行单元测试,生成文档、打包和部署等繁琐和不起眼的工作上,这就是构建。如果我们现在还是手工的做这些事情,那么时间成本就太高了,于是有人用软件的方法让这一系列工作完全自动化。是软件构建完全像流水线一样,只需要一条简单的命令,所有繁琐的步骤就能很快的自动完成。
1.3 项目构建工具
Ant构建
       最早的构建工具,基于IDE,大概是2000年有的,当时最流行的java构建工具,不过他的xml脚本编写风格让xml文件特别大。对工程构建过程中的过程控制的特别好。
Maven [ java ]
        Maven是一个项目管理和整合工具。Maven为开发者提供了一整套完整的生命周期框架。开发团队几乎不用花多长时间就能够自动完成工程的基础构建配置。他填补了Ant的缺点,Maven第一次支持了从网上下载的功能,仍然采用xml作为配置文件格式Maven专注的是项目依赖,使用java编写。
Gradle
       属于结合以上两个的优势,他继承了Ant的灵活和Maven的生命周期管理,他最终被google作为了Android御用管理工具。他最大的区别是不用XML作为配置文件格式,采用了DSL格式,使得脚本更加简洁。
        目前市面上Ant比较老,所以一般是一些比较传统的软件企业公司使用,Maven使用java编写,是当下大多数互联网公司使用的一种构建工具,中文文档也比较齐全,gradle是用groovy编写,目前比较新的构建工具一些初创互联网公司会使用,以后会有很大的使用空间。
1.4 Maven的四大特征
1.4.1 依赖管理系统
       Maven为java世界引入了一个新的依赖管理系统jar包管理 jar包升级时修改配置文件即可。在java世界中,可以用gropId、artifactId、version组成Coordination(坐标)唯一标识一个依赖。
      任何基于maven构建的项目自身也必须定义这三个属性。
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>
坐标属性的理解
    Maven坐标为各个组件引入了新秩序,任何一个组件都必须明确定义自己的坐标。
groupId
       定义当前Maven项目隶属的实际项目-公司名称。(jar包所在仓库路径)由于maven中模块的概念,因此一个项目实际往往会被分成多个模块。比如Spring是一个实际的项目,其对应的Maven模块会有很多,比如Spring-croe,spring-webmvc等。
artifactid

ORM哪家强?java,c#,php,python,go 逐一对比, 网友直呼:全面客观

前言

最近一段时间,我使用golang开发了一个新的ORM库。

为了让这个库更好用,我比较研究了各语言的主流ORM库,发现有一些语言的ORM库确实很好用,而有另外一些语言的库那不是一般的难用。

然后我总结了他们呢的一些共性和差异点,于是形成了本文的主要内容。…

docker hub的基本使用

Docker hub 顾名思义就是储藏docker的一个中心,他的名字和github非常相似,

两者可以比较着来看,github存放code,docker hub存放docker images。

个人使用docker hub,无非就这么几种情况,

  1. 在上面找一些成熟的docker image,比如说像python, ubuntu等,然后pull到本地进行使用
  2. 另外就是把docker hub当做个人的docker image的储存中心,把自己的image push上去。

ok,长话短说,现在开始实战。

login

使用docker hub的用户名,密码登录即可。

docker login

docker pull

可以在docker hub上找到各种image,然后根据网页上的命令直接pull下来即可,

这里以python image为例。

# https://hub.docker.com/search?type=image
# pull a image
docker pull python

docker images

使用docker

什么是gitlab,gitlab介绍

GitLab 是一款基于Git版本控制系统的Web-based管理工具,也是世界上最流行的开源应用之一。它拥有完整的项目管理功能,如代码合并、代码审查、问题跟踪、Wiki、CI/CD等,并且支持自托管、云托管、社区版和企业版等多种形式。

GitLab最初由Dmitriy Zaporozhets和Valery Sizov于2011年创建,目的是构建企业自托管Git平台,减少的公司对Atlassian(JIRA、Bitbucket、Confluence)产品的依赖。GitLab在开源社区中的受欢迎程度只增不减,目前有来自全球地区的数百万个项目在上面进行管理。…

放弃使用Merge,开心拥抱Rebase!

1. 引言

大家好,我是比特桃。Git 作为现在最流行的版本管理工具,想必大家在开发过程中都会使用。由于 Git 中很多操作默认是采用 Merge 进行的,并且相对也不容易出错,所以很多人都会使用 Merge 来进行合并代码。但Rebase 作为 Git 中主要命令之一,我们还是有必要了解一下,在适合的场景中进行使用。
在这里插入图片描述

Git忽略规则(.gitignore配置)不生效原因和解决

第一种方法:
.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。
原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,
这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。…

    

如何用grep匹配汉字?

经验证[\u4e00-\u9fff]可以在vim中匹配中文字符。

:%g/[\u4e00-\u9fff]/d

上面的命令可以删除所有包含汉字的行。

ls  /tmp/test
ktop 1_001.png.bak
fonts.dir.bak
New
Screenshot from 2016-09-12 16:50:29.png.bak
你好

现在我想提取名称为汉字的文件。

ls  /tmp/test |grep -P  '[\x4e\x00-\x9f\xff]'  

该命令无法获取名称为中文字符的文件。
如何修复它?

ls /tmp/测试 | grep -v '[az]'可以得到它,但这就是我想要的。

答:

要仅匹配包含汉字的行(文件名),您可以使用[\p{Han}]

ls  /tmp/test | grep -P 

git 不提交权限改变的 Git识别文件权限修改

刚打开IDE,工作区的代码状态全部变成修改未提交的状态了?这是这么回事?
这是因为Git忽略文件权限或者拥有者改变导致的git状态变化。
默认Git会记录文件的权限信息,如果文件的权限信息被修改,在Git中改变文件会出现很多我们并不需要提交的文件。

方法一:

git config core.filemode false

git config --global core.filemode false           //全局设置

 

方法二: 
直接修改代码仓库
.git 目录里的 config 文件的 filemode (在 [core] 段中)字段,将其改为 false

kafka简介

目录

  • Kafka 是什么
  • Kafka 核心组
  • Kafka 整体架构以及解析
  • Kafka数据处理步骤
  • Kafka名词解释和工作方式
  • Consumer与topic关系
  • Kafka消息的分发
  • Consumer的负载均衡

Kafka 是什么

  • Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目,该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
  • Kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。
  • Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性

Kafka 核心组件

  • Producer:消息生产者,产生的消息将会被发送到某个topic
  • Consumer:消息消费者,消费的消息内容来自某个topic
  • Topic:消息根据topic进行归类,topic其本质是一个目录,即将同一主题消息归类到同一个目录
  • Broker:每一个kafka实例(或者说每台kafka服务器节点)就是一个broker,一个broker可以有多个topic

Zookeeper:zookeeper集群不属于kafka内的组件,但kafka依赖zookeeper集群保存meta信息,所以在此做声明其重要性。

Kafka 整体架构以及解析

Kafka数据处理步骤

  • 1、Producer产生消息,发送到Broker中
  • 2、Leader状态的Broker接收消息,写入到相应topic中
  • 3、Leader状态的Broker接收完毕以后,传给Follow状态的Broker作为副本备份
  • 4、Consumer消费Broker中的消息

Kafka名词解释和工作方式

  • Producer
    消息生产者,就是向kafka broker发消息的客户端。
  • Consumer
    消息消费者,向kafka broker取消息的客户端
  • Topic