MongoDB 01:快速入门指南
安装
https://www.mongodb.com/download-center
按照传统的方式,可以在这里下载mongo的安装包进行安装。
OSX
如果是mac系统,并且按照了brew,可以直接执行brew install mongodb进行安装。
docker
现在用docker快速的搭建软件环境已经非常方便了,所以我在这里将使用docker下载mongo的镜像来部署mongo,方便随后的测试。
https://www.mongodb.com/download-center
按照传统的方式,可以在这里下载mongo的安装包进行安装。
如果是mac系统,并且按照了brew,可以直接执行brew install mongodb进行安装。
现在用docker快速的搭建软件环境已经非常方便了,所以我在这里将使用docker下载mongo的镜像来部署mongo,方便随后的测试。
通常我们在本地初始化仓库的时候,都是用git init。如果我们不借助github,如何自己建立一个中心仓库呢,这个就是裸库的概念。
git init --bare <repo>
这个命令执行后,将在本地创建一个名为 repo 的文件夹, 里面包含着 Git 的基本目录, 我们一般会将这个文件夹命名为后面加 .git 的形式,如 repo.git (这也是为什么我们从 GitHub clone 仓库的时候,地址都是 xxx.git 这样的形式的原因).使用 –bare 参数初始化的仓库,我们一般称之为裸仓库, 因为这样创建的仓库并不包含 工作区 , 也就是说,我们并不能在这个目录下执行我们一般使用的 Git 命令。
前面的文章讲解了分支的操作和原理,接下来接着看一下git的checkout、stash、blame、diff等命令的一些使用方法。
修改一下文件,看看git status会提示什么?
1 | ➜ mygit git:(master) vim test.txt |
Git提示到:修改没有暂存,请用git add或者git checkout --,我们试一下
1 | ➜ mygit git:(master) ✗ git checkout -- test.txt |
随着多核处理器的出现,提升应用程序处理速度最有效的方式是编写能充分发挥多核能力的软件。可以通过切分大型的任务,让每个子任务并行运行,在Java中目前有直接使用线程的方式、使用Fork/Join框架和JDK8中的并行流来达到这一目的。
这段代码演示了分段求和用线程方式的实现。
分别开启2个线程,给予不同范围的数值进行求和,最后调用join()方法等到线程执行完毕,将2个线程的结果相加得到结果。
在理解了Reactor模式后,因为Netty框架本身就是基于Reactor模式的一种实现,所以回过头来再看源码,才能更好的理解代码中一些类的角色和意义。
ServerBootStrap在调用bind()方法后,通过channelFactory反射的方式创建了我们指定的Channel(NioServerSocketChannel.class)对象,然后调用了init(channel)方法对channel进行了初始化设置。
看一下ServerBootStrap.init(),初始化Channel的代码,ChannelPipeline p = channel.pipeline();这里面就出现了一个Netty中一个又一个非常核心的类ChannelPipeline,它是在Channel的父类AbstractChannel初始化的时候创建的。
ChannelPipeline里面是一个一个的ChannelHandler,当客户端的请求到来或者出去的的时候,会一个一个的通过这些处理器,就像一个过滤器一样。每一个Channel都拥有自己的ChannelPipeline,当一个Channel被创建的时候,ChannelPipeline也跟着被创建了。I/O事件只能被ChannelInboundHandler和ChannelOutboundHandler其中之一所处理,处理完成后再传递到别的处理器中(ChannelHandlerContext#fireChannelRead(Object)或者ChannelHandlerContext#write(Object))。
先介绍一下**.gitignore**
项目里面经常有一些文件是不需要纳入版本控制的,例如我编译后的class文件,或者idea产生的一些配置文件等。
1 | .gradle |
上面是我的一个项目的配置,看得出来是有一些规则的,使用起来很简单,将这些规则保存到一个.gitignore中后,在项目里面这些文件或者文件夹里面的所有修改操作都不会被纳入到git版本控制中,也不会提交。