CentOS7下安装和配置redis

Redis是一个高性能的,开源key-value型数据库。是构建高性能,可扩展的Web应用的完美解决方案,可以内存存储亦可持久化存储。因为要使用跨进程,跨服务级别的数据缓存,在对比多个方案后,决定使用Redis。顺便整理下Redis的安装过程,以便查阅。

阅读更多

VPS + Shadowsocks 可以是什么,做什么,如果使用(详细图文)

本文初衷

  • 帮助我弟弟,理解 VPS,理解服务器部署相关,最重要的是理解穿越这件事
  • 帮助更多的开发者或是求知者,勇于求知,丰富自己的精神世界
  • 以这篇文章作为回报,感谢鐡的指导
  • 写、修改这篇文章大概花了差不多 5 个小时,如果连同过去的一些素材积累,差不多 7 个小时,希望能帮助你。

VPS 介绍

它是什么

  • 术语定义
    • 维基百科定义:https://en.wikipedia.org/wiki/Virtual_private_server
    • 百度百科定义:http://baike.baidu.com/item/VPS
      • 简单地讲就是:服务器中的隔板房
      • 本质:利用虚拟化技术,把一台实体服务器利用软件分割成多台虚拟化的服务器。
      • 你可以简单粗暴地理解为:阿里云、腾讯云提供的那些服务器服务,本质都没啥区别,就是提供资源。
  • 同类技术:
    • 你可以用中文搜索:云主机 虚拟主机 VPS
    • 你可以用英文搜索:Dedicated hosting VPS Virtual cloud Shared hosting
    • 今天有看到这样一个标题顺便拿来做说明:linuxVPS基本命令,这个标题是不合理的。Linux 命令和 VPS 没啥关系,以后不要再犯这种错误了。
  • 学习前提/依赖
    • 英文单词好点
    • 会点 Linux 命令,关于 Linux 知识我有整理过:https://github.com/judasn/Linux-Tutorial
    • 懂一点代理相关的思维,不懂也没关系
    • 知道外面世界和内部世界的差别,不知道也没关系

哪些人不喜欢它

  • 懒人

为什么学习它

  • 需要:Google
  • 搭建博客
  • 搭建个人私有云
  • 放爬虫程序
  • 做离线下载(注意经常别下盗版,外国要求这个很严),你看到很多人把 Youtube 视频转到国内优酷啥的,基本就是利用它的
  • 服务器能做啥,它就能做啥,所以靠你想象力,也希望你能帮我想一下还有啥可以玩的,我这边 768M 内存感觉用不完

VPS 使用过程

选择一个 VPS 提供商

Vultr 注册账号

Vultr 收费模式

  • 按每小时计算,比如官网套餐中: 5 美元一个月的机器配置,本质就是把 5 美元平摊到每个月里每个小时需要花多少金额。
  • 也因为这个按时模式,所以你可以在 Vultr 上随便创建世界上不同地区节点的服务器,自己不喜欢的,速度不好的,都可以随便销毁。每次开通一个服务器,最低消费是 0.01 美金,所以本质上开通是需要成本的。
    • 推荐你刚刚开始的时候可以自己多创建几个服务器,然后对比测试下,看看你当前的网络下,使用哪个地区节点速度更好。国内三大运营商走的路线是不同的,所有还是有差异的。

Vultr 账号充值

  • 既然是服务器肯定是要钱的啦,不然别人没法活。
  • 建议用 Paypal 支付,别用信用卡,不然后面取消绑定信用卡是个麻烦事,充值方法操作具体看下图。
    • 如果你没 Paypal 账号,那就注册一个,这个是不需要穿越的:https://www.paypal.com
    • 在 Paypal 上绑定一个全币卡信用卡,我不知道银联的国内单币卡可不可以,我猜想是不可以的。建议开发者平时还要准备一个全币卡,方便生活
    • Paypal 的购买流程跟常规银联的支付流程差不多,这里不多说
    • Vultr 支付

Vultr 上创建空白系统 或 一键搭建某些应用

  • Vultr 提供其他一些支持,比如提供专用的主机,存储类云(用的是机械硬盘,容量大)。支持单独开通 IPV6,开通自动备份,防 DDOS 攻击等等,当然了这些肯定是收费的。这些都跟新手没关系,如果你会了自己去勾选,这里不讲。
  • 访问创建系统页面:https://my.vultr.com/deploy/
  • 创建空白系统:
    • 第一步选择服务器所在地区,效果如下图:
      • 目前,国内建议选洛杉矶(Los Angeles, California),其他我都试过了,包括日本,响应都不是最优的,包括鐡在上海的方案,基本也是倾向于洛杉矶的。
      • 亚特兰大(Atlanta, Georgia)目前没有了,但是我测试了它公开的服务下载速度,发现是最快的,所以如果后面有亚特兰大的也建议开一个服务器,对比下,如果不错就换过来。
      • 平时你还可以关注下:西雅图(Seattle, Washington),硅谷(Silicon Valley, California)
      • Vultr 创建服务器1
    • 第二步选择服务器系统,效果如下图:
      • 如果你会 Linux,你喜欢选 CentOS 或是 Ubuntu、Debian 我都是无所谓的,本质没啥区别,但是如果你不会,那就乖乖地跟着箭头来。
      • Vultr 创建服务器2
    • 第三步选择服务器硬件情况,效果如下图:
      • 如果你土豪,你选啥我都觉得没事,但是如果你跟我一样,主要是为了 Shadowsocks,那就选择图片上的红圈内容,最便宜,而最合适。
      • 默认 Vultr 是选择第二个,10 美金一个月的套餐,所以你要注意点。
      • Vultr 创建服务器3
    • 第四步开始自动部署系统,效果如下图:
      • 页面下面剩下的选项跟你没关系,懂的人自己去考虑。新手只要点击:Deploy Now。
      • Vultr 创建服务器4
  • 创建 Vultr 帮我们直接安装好的某个应用系统:
    • 第一步同创建空白系统,这里不重复
    • 第二步选择服务器应用,效果如下图:
      • 如果你懂这些应用各代表什么意思,那就选。我用过 OpenVPN
      • 效果是,部署完后在服务器详情页面下面会给我们一个 OpenVPN 服务地址、账号、密码,访问地址可以下载到一个专用的本地客户端,下载下来安装完成后,打开这个软件,输入账号密码即可连接。
      • Vultr 创建服务器2
    • 第三步同创建空白系统,这里不重复
    • 第四步同创建空白系统,这里不重复

在 Vultr 上销毁一个系统

  • 访问我们的服务器列表页面:https://my.vultr.com/
    • Vultr 服务器操作区
    • 主要操作按钮如下:
      • Server Details,查看该服务器相关详情,比如 SSH 的账号密码等
      • Server Stop,停止当前服务器,让服务器无法提供服务,费用可是照扣
      • Server Restart,重启服务器
      • Server Destroy,点击这个按钮即可销毁服务器,并且里面的数据全部跟着销毁,费用不会再扣

本地 SSH 连接到 VPS 系统

  • 从这里开始就需要会一点 Linux 知识
  • 点击上一步教学中提到的:Server Details,查看你自己的服务器 SSH 账号、密码,效果如下图:
    • 把红框中的,IP 地址,用户名,密码,都记录下来,等下要用。端口是默认的 22。
    • Vultr 服务器详细
  • 下载 Xshell 进行 SSH 连接

判断 VPS 属于哪种虚拟化方案

  • 常见的方案有:Xen、OpenVZ、Xen HVM、KVM
  • 安装 virt-what 软件
wget http://people.redhat.com/~rjones/virt-what/files/virt-what-1.15.tar.gz

tar zxvf virt-what-1.15.tar.gz

cd virt-what-1.15/

./configure

make && make install
  • 运行命令:virt-what,脚本就会判断出当前环境所使用的虚拟技术。Vultr 的结果是:kvm

测试 VPS 性能

  • 下面内容建立在你已经 SSH 连上服务器的基础上
  • 测试 VPS 纯硬件性能
    • 使用 UnixBench 测试机子性能:
      • cd /opt
      • wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
      • chmod +x unixbench.sh
      • ./unixbench.sh,剩下就等结果,其他不用管了,执行的时间我这边大概是 30 min,所以还是有点长的。
      • 我最后的结果是:System Benchmarks Index Score==1286.7,简单粗暴地讲,如果是 1 个 CPU 的机子,如果你的结果值低于 500,那就是比较垃圾的 VPS 了,优秀的应该在 1000 左右,八九百算是普通(别人说的)。
      • 2016-12-11,我也购买了:DigitalOcean 旧金山每月 5 美金的机子,测试得到的分数:973.8
  • 测试我们当前位置到 VPS 所在地址之间的网络请求响应能力
|------------------------------------------------------------------------------------------|
|                                      WinMTR statistics                                   |
|                       Host              -   %  | Sent | Recv | Best | Avrg | Wrst | Last |
|------------------------------------------------|------|------|------|------|------|------|
|                            61.144.0.226 -    2 |   86 |   85 |    1 |    9 |  105 |   11 |
|                            183.56.31.85 -    0 |   90 |   90 |    1 |    9 |   74 |    5 |
|                              61.144.3.6 -    2 |   86 |   85 |    3 |    8 |   20 |    5 |
|                           202.97.33.194 -   17 |   54 |   45 |    0 |    7 |   24 |   10 |
|                            202.97.60.42 -   19 |   49 |   40 |    0 |    6 |   19 |    5 |
|                           202.97.58.134 -    4 |   78 |   75 |  175 |  180 |  193 |  179 |
|                            202.97.50.26 -    2 |   86 |   85 |  166 |  174 |  203 |  166 |
|                           218.30.54.182 -    6 |   74 |   70 |  263 |  267 |  278 |  267 |
|                          50.248.117.226 -    2 |   86 |   85 |  160 |  168 |  179 |  169 |
|                   las-b4-link.telia.net -   12 |   62 |   55 |  272 |  277 |  382 |  277 |
|                   25.132.70.2.vultr.com -    0 |   90 |   90 |  173 |  179 |  201 |  181 |

在 CentOS 上搭建 Shadowsocks 服务器端

  • 重要声明:即使你有 Shadowsocks,你也不一定能用。如果你的公司环境是有很强的内网拦截,或是各种屏蔽,你依旧还是可能使用不了的。如果是一般家用,基本不会出现问题。
  • Shadowsocks 中文名称:影梭?也有称作:小飞机,本质是:Socks 5 代理,也是一个代理工具。
  • 这里安装 Shadowsocks 使用的是网络上的一键脚本,更多资料可以看:
  • 我推荐使用:shadowsocks-libev 一键安装脚本
    • 部署方法(新手请保证是 root 权限):
      • cd /opt ; wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh
      • chmod +x shadowsocks-libev.sh
      • ./shadowsocks-libev.sh 2>&1 | tee shadowsocks-libev.log
    • 接下来会有几个交互提示,需要你按要求完成,比如输入你要设置的端口、账号、密码等,具体看提示。脚本安装完成后,会将 shadowsocks-libev 自动加入开机自启动。
    • 安装完成后效果是这样的:
Congratulations, shadowsocks-libev install completed!
Your Server IP:你自己的服务器IP
Your Server Port:你自己设置的服务器端口
Your Password:你自己设置的密码
Your Local IP:127.0.0.1
Your Local Port:1080
Your Encryption Method:aes-256-cfb

Welcome to visit:https://teddysun.com/357.html
Enjoy it!
  • 卸载 Shadowsocks:
    • cd /opt ; ./shadowsocks-libev.sh uninstall
  • 其他命令:
    • 启动:/etc/init.d/shadowsocks start
    • 停止:/etc/init.d/shadowsocks stop
    • 重启:/etc/init.d/shadowsocks restart
    • 查看状态:/etc/init.d/shadowsocks status

Shadowsocks 客户端的介绍

  • 因为是开源的,所有有很多,这里也感谢 Shadowsocks 的开源者:clowwindy
  • Windows 客户端:https://github.com/shadowsocks/shadowsocks-windows/releases
  • Linux 客户端:https://github.com/shadowsocks/shadowsocks-gui
  • OS X 客户端:https://github.com/shadowsocks/shadowsocks-iOS/wiki/Shadowsocks-for-OSX-Help
  • iOS 客户端(在 App Store 中搜索下面名字):
    • 这类软件都很友好,配置都是很简单的,跟 PC 客户端类型,填上 SS 的相应信息即可。
    • Shadowrocket,收费,我正在用的
    • Surge,收费
    • Wingy,免费
    • Potatso,收费
    • A.BIG.T,收费
  • Android 客户端:https://github.com/shadowsocks/shadowsocks-android/releases
  • 别人整理的客户端列表:https://shadowsocks.com/client.html
  • 以 Windows 的 Shadowsocks 客户端为例进行说明:
    • Windows 的 Shadowsocks 是一个绿色版软件
    • 重要思维提醒:
      • 重点)Shadowsocks 是一个代理工具,一启动该软件,即使你没有勾选:启用系统代理,也是同样可以用的,只是你需要利用浏览器扩展进行代理设置,本文下一个锚点会讲这个知识点
    • 如果你想简单方便,不利用浏览器的扩展进行高级设置的话,那你也可以直接使用 Shadowsocks 自带功能,勾选:启用系统代理,然后在 系统代理模式 这个选项上选择对应模式
      • 对于系统代理模式有两个选项模式:
      • PAC 模式,我称作:自动模式。它有一个 PAC 文件,里面有一些网址的匹配规则,这些网址是历代国人整理出来的,帮你辨别一些有用网站需要使用它就自动代理。这里有一个衍生知识:GFWList
      • 全局模式,系统中所有支持 Socks 5 的软件都可以利用它代理,所以这里的要点是要用它代理必须是支持 Socks 5
        • 也因为 Shadowsocks 这个特点,所以如果你要真正的全局代理,建议还是用 VPN 工具,比如 OpenVPN
    • 重点)整体效果看下图 Gif:Gif 图片太大,点击单独打开

浏览器扩展的使用

Shadowsocks 的同类

对 VPS 上的 Shadowsocks 进行加速

  • CentOS 6 下安装锐速
  • 资料来源:https://github.com/91yun/serverspeeder
  • 先确保虚拟化技术,Openvz 的机子无法安装:wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/code/master/vm_check.sh && bash vm_check.sh
  • 更改 CentOS 内核为 kernel-2.6.32-504.el6:
    • 64 位系统:
      • wget https://liujihong.com/download/linux/kernel-2.6.32-504.el6.x86_64.rpm
      • rpm -ivh kernel-2.6.32-504.el6.x86_64.rpm --force
    • 32 位系统:
      • whttps://liujihong.com/download/linux/kernel-2.6.32-504.el6.i686.rpm
      • rpm -ivh kernel-2.6.32-504.el6.i686.rpm --force
    • 重启服务器:reboot
    • 如果上面地址失效,可以查看这里:https://github.com/1265578519/kernel/tree/master/6.5
  • 开始安装锐速:wget -N --no-check-certificate https://github.com/91yun/serverspeeder/raw/master/serverspeeder.sh && bash serverspeeder.sh

全局代理

资料整理

结束语

  • 不管你是不是开发者,不管你身在何处。请,多求知、求真。以上。

腾讯云北美服务器搭建ShadowSocks代理

注:本教程适合centos系列和red hat系列

登陆SSH
新的VPS可以先升级

yum -y update

有些VPS 没有wget
这种要先装

yum -y install wget

输入以下命令:(可以复制)

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
chmod +x shadowsocks.sh
./shadowsocks.sh 2>&1 | tee shadowsocks.log

第一行是下载命令,下载东西,第二行是修改权限,第三行是安装命令

下面是按照配置图

配置:
密码:(默认是teddysun.com)
端口:默认是8989
然后按任意键安装,退出按 Ctrl+c

安装完成会有一个配置

Congratulations, shadowsocks install completed!Your Server IP:  ***** VPS的IP地址Your Server Port:  *****  你刚才设置的端口Your Password:  ****  你刚才设置的密码Your Local IP:  127.0.0.1 Your Local Port:  1080 Your Encryption Method:  aes-256-cfb Welcome to visit:https://teddysun.com/342.htmlEnjoy it!

然后即可以使用

卸载方法:

使用 root 用户登录,运行以下命令:

./shadowsocksR.sh uninstall

安装完成后即已后台启动 ShadowsocksR ,运行:

/etc/init.d/shadowsocks status

centOS7.2搭建nginx环境以及负载均衡

之所以要整理出这篇文章,是因为1是搭建环境的过程中会遇到大大小小各种问题,2是网上目前也没有关于centos7.2搭建nginx环境的问题整理,因此在这里记录。

前置工作就不赘述了,首先ssh root@IP (换成你们自己的公网IP)登陆进入到自己的服务器命令行,之后开始基本的安装:

阅读更多

抓包工具 Fiddler 相关知识总结

本文初衷

  • 整理对 Fiddler 工具的知识积累
  • 分享给更多需要使用抓包工具的人

Fiddler 介绍

它是什么

哪些人不喜欢它

  • 非 Web 端开发人员

为什么学习它

  • 因为开发中需要测试,需要了解整个 Web 应用的具体细节,了解细节后可以尽可量防止漏洞,可以对细节做性能测试
  • 不管是 Web 开发的前端还是后端,都需要,或者是说只要开发中含有 HTTP 请求的都需要抓包工具

积累

我要怎么做

细节积累

  • Fiddler 的界面介绍,如下图(图片来源
    • Fiddler 的界面介绍
  • Fiddler 工具栏介绍,如下图
    • Fiddler 的界面介绍
  • Fiddler 自定义显示列信息,如下图
    • Fiddler 的界面介绍
  • Fiddler 选中会话后的常用右键菜单,如下图
    • Fiddler 的界面介绍
    • Fiddler 的界面介绍
    • Fiddler 的界面介绍
  • 按 Ctrl + A 全选所有会话,右边可以查看所有请求的一个总的情况
    • Fiddler 的界面介绍
  • 修改某个请求数据,进行模拟
    • Fiddler 的界面介绍
  • 开启 HTTPS 捕获,默认是没有开启的
    • Fiddler 的界面介绍
  • 使用 AutoResponder,这是前端开发必备技能
    • AutoResponder 作用:可用于截拦某一请求,并重定向到本地资源,或者使用 Fiddler 内置响应。
    • 使用场景:比如线上服务器的某个 JavaScript / Images 有问题,正常修改此 Bug 的流程应该是这样的:本地修改后提交到服务器预览修改后效果,但是作为前端开发者其实很多时候是不具备使用服务器的权限的。这时候 AutoResponder 就起作用了,在页面加载的时候,我们让服务器不加载服务器的那个 JavaScript 请求,而是使用本地的那个 JavaScript 文件。
      • 但是使用该场景需要有一个特别注意的:在使用规则之后,重新刷新网页的时候最好是先清除下浏览器缓存,省得有意外,浪费你时间。
    • 下图演示的是我把博客的头像换成一张橘黄色的图片
      • Fiddler 的界面介绍
  • Fiddler 的命令行工具中常用命令:
    • 官网对这些命令的整理:http://docs.telerik.com/fiddler/knowledgebase/quickexec
    • ?cc=,用来匹配请求地址中含有 ?cc 的请求
    • > 5000 或 < 5000,找响应大小大于 5000 字节,或小于 5000 字节的请求
    • 关于 Debug 命令:
      • 开启中断请求命令
        • bpafter beautiful,中断 URL 包含 beautiful 字符的全部会话
        • bpu beautiful,中断 URL 包含 beautiful 字符的全部会话
        • bps 404,中断 HTTP 响应状态为 404 的全部会话
        • bpm GET 或者 bpv GET,中断 GET 请求方式的全部会话
      • 取消中断请求命令
        • 使用同样的开启命令,但是不带参数即可取消,比如我们使用了 bpu code.youmeek.com 中断,我们要取消这个中断,则使用:bpu 即可

结束语

  • 更多的细节还需要你自己继续去摸索

持续集成TeamCity的安装和使用

  • TeamCity

本文初衷

  • 让大家了解持续集成(CI),以及入门了解 JetBrains 家的 TeamCity 的一些简单实用。
  • TeamCity 的一些复杂使用我暂时也不会,一样也是要看文档的,所以不管怎样你都要养成看官网文档的习惯。
  • TeamCity 和 Jenkins、Hudson 其实是非常一样的,基本流程都是差不多的,所以如果你会其他的几个 CI 工具的话,学习起来很快。
  • Docker 已经开始在引入到 CI、CD(持续交付)过程中,可以大大简化整体的过程,也许这是未来的一个方向,有兴趣的可以了解更多。

它是什么

为什么会出现

哪些人喜欢它

哪些人不喜欢它

  • Google 不到结果,应该是没人不喜欢,只是有些人用不惯

为什么学习它

  • 更好地保证项目质量

同类工具

TeamCity 入门

TeamCity 安装部署(Linux 环境)

  • 在我讲之前,如果你英文还可以,就到官网这里看下:
  • Installation Quick Start
  • 安装环境要求:
    • JDK 1.7 以上,如果你要使用的是 2016 最新的 TeamCity 9.1 的话,JDK 官网推荐的 1.8
  • 安装包下载:https://www.jetbrains.com/teamcity/download/#section=linux-version
  • 开始安装(eg:TeamCity-9.1.6.tar.gz):
    • 解压压缩包(解压速度有点慢):tar zxf TeamCity-9.1.6.tar.gz
    • 解压完的目录结构讲解:https://confluence.jetbrains.com/display/TCD9/TeamCity+Home+Directory
    • 下载的 tar.gz 的本质是已经里面捆绑了一个 Tomcat,所以如果你会 Tomcat 的话,有些东西你可以自己改的。
    • 按我个人习惯,把解压缩的目录放在 usr 目录下:mv TeamCity/ /usr/program/
    • 进入解压目录:cd /usr/program/TeamCity/
    • 启动程序:/usr/program/TeamCity/bin/runAll.sh start
    • 停止程序:/usr/program/TeamCity/bin/runAll.sh stop
    • 启动需要点时间,最好能给它一两分钟吧

首次进入

  • 假设我们已经启动了 TeamCity
  • 访问(TeamCity 默认端口是:8111):http://192.168.1.113:8111/
  • 如果访问不了,请先关闭防火墙:service iptables stop
  • 你也可以选择把端口加入白名单中:
    • sudo iptables -I INPUT -p tcp -m tcp --dport 8111 -j ACCEPT
    • sudo /etc/rc.d/init.d/iptables save
    • sudo service iptables restart
  • 如果你要改变端口,找到下面这个 8111 位置:vim /usr/program/TeamCity/conf/server.xml
<Connector port="8111" ...
  • 在假设你已经可以访问的情况,我们开始进入 TeamCity 的设置向导:
  • TeamCity 向导
  • TeamCity 向导
    • 如上图英文所示,TeamCity 的一些构建历史、用户信息、构建结果等这类数据是需要放在关系型数据库上的,而默认它给我们内置了一个。
    • 如果你要了解更多 TeamCity External Database,你可以看:https://confluence.jetbrains.com/display/TCD9/Setting+up+an+External+Database
    • 首次使用,官网是建议使用默认的:Internal(HSQLDB),这样我们无需在一开始使用的就考虑数据库迁移或安装的问题,我们只要好好感受 TeamCity 给我们的,等我们决定要使用了,后续再更换数据也是可以的。但是内置的有一个注意点:’TeamCity with the native MSSQL external database driver is not compatible with Oracle Java 6 Update 29, due to a bug in Java itself. You can use earlier or later versions of Oracle Java.’
    • 假设我们就选 Internal(HSQLDB) ,则在创建初始化数据库的过程稍微需要点时间,我这边是几分钟。
  • TeamCity 向导
    • 如上图所示,接受下协议
  • TeamCity 向导
    • 如上图所示,我们要创建一个顶级管理员账号,我个人习惯测试的账号是:admin123456
  • TeamCity 向导

项目的构建、管理

- Youshop-Parent,输出是 pom
    - Youshop-manage,输出是 pom
        - Youshop-pojo,输出 jar
  • 我们现在以 Youshop-pojo 为例,让它自动构建并发布到 Nexus 中,其他项目道理是一样的,这里就不多说。
  • TeamCity 向导
  • 如上图,由于目前只要是公司的项目都应该是在版本控制的,所以这里我们选择:Create project from URL
  • TeamCity 向导
  • 如上图,我们可以看出 TeamCity 也支持 HTTP、SVN、Git 等链接方式。
  • TeamCity 向导
  • 输入你项目托管商的账号密码,我这里用的是 oschina 的。
  • TeamCity 向导
  • 账号、密码验证通过,现在可以给这个项目配置一个项目基本信息。
  • TeamCity 向导
  • 在从版本控制中下载文件和扫描文件
  • TeamCity 向导
  • TeamCity 自动扫描到我是用 Maven 构建的项目,所以把 POM 文件找出来了,如果你一个项目有多种构建方式,有对应的配置文件的话,这里都会显示出来的。
  • 我们勾选 Maven 前面的复选框,点击:Use Selected
  • TeamCity 向导
  • 由于我们的目标是构建完自动发布到 Nexus,所以我们的 Maven Goals 应该是:clean install deploy,这里我们应该点击:Edit,进行编辑。
  • 如果你不懂 Maven Goals,那你需要学习下,这个很重要。
  • TeamCity 向导
    • 如上图,这台服务器必须装有 Maven、JDK
    • 如上图,Goals 我们的目标是 clean install deploy
    • 如上图,Maven Home 我建议是自己自定义路径,这样肯定不会有问题。所以你服务器上的 Maven 安装路径是什么你就在这里填写上去。Maven 目前支持的最高版本是:3.2.5
    • 如上图,Java Parameters 我建议也是自己自定义路径,别选择其他选项。
  • TeamCity 向导
    • 如上图,点击 run,开始手动构建该项目
  • TeamCity 向导
    • 如上图,我们看到简略的构建日志
  • TeamCity 向导
  • TeamCity 向导
    • 如上 2 张图,我们看到详细的构建内容
  • TeamCity 向导
    • 如上图,当我们版本控制中有提交的时候,TeamCity 会识别到记录
  • TeamCity 向导
    • 如上图,我们可以看到提交的 Commit Message 信息。
    • 如上图,右边红圈的三个按钮是用来处理这次提交的,常用的是第一次按钮,点击对此次版本进行构建
  • TeamCity 向导
    • 如上图,如果你要看所有的提交记录,可以在 Change Log 看到并且指定版本构建
  • TeamCity 向导
    • 如上图,如果在你不想要这个项目的时候可以进行删除
  • TeamCity 向导
    • 如上图,因为 Goals 里面有 deploy 命令,所以构建完成会发布到 Nexus 中,这样团队的人就可以用到最新的代码了
  • TeamCity 向导
    • 如上 gif 图演示,项目常去的几个配置地方就是这样些了

配置自动构建触发行为

  • 官网提供的触发行为有:https://confluence.jetbrains.com/display/TCD9/Configuring+Build+Triggers
  • 下面我们举例说常见的:VCS TriggerSchedule Trigger
  • TeamCity 向导
    • 如上图,点击 Add new trigger 添加触发器
  • TeamCity 向导
    • 如上图,常见的触发器就这些了
  • TeamCity 向导
    • 如上图,配置好 VCS Trigger 效果是,当我们有代码提交的时候,TeamCity 检查到新版本之后自动构建,这个最常用
  • TeamCity 向导
    • 如上图,Schedule Trigger 的作用就是定时构建,除了常用的几个输入框设置定时外,TeamCity 还可以使用 Cron 语法进行设置
    • TeamCity 采用的 Cron 语法是 Quartz,具体你可以看:Quartz CronTrigger Tutorial
    • 如果你不懂 Cron 语法那就算了,但是我想做 Java 这个应该要会的

集成 IntelliJ IDEA

  • 安装 IntelliJ IDEA:https://confluence.jetbrains.com/display/TCD9/IntelliJ+Platform+Plugin
  • TeamCity 向导
    • 如上图,我们可以直接连上 TeamCity 服务器,这里的用户名密码是 TeamCity 的账号系统。
  • TeamCity 向导
    • 如上图,连上去的效果是这里会打钩
  • TeamCity 向导
    • 如上图,我们可以直接把别人提交的内容做 patch 直接用 IntelliJ IDEA 进行整合
    • 还有其他很多结合玩法大家可以自己去尝试下

其他

Maven 的 单模块/多模块之Spring MVC+Spring+Mybatis项目讲解

IntelliJ IDEA

初衷

  • 为了给一个叫做简的女孩子带来便利,让她更加方便学习
  • 展示 IntelliJ IDEA 高度集成化的效果,降低 IntelliJ IDEA 入门时间

视频下载

开发环境

  • JDK 7(理论上支持 JDK 6、JDK 7、JDK 8)
  • Mysql 5.6
  • Maven 3.1.1
  • Tomcat 7
  • Git 2.7.0.2-64-bit
  • IntelliJ IDEA 15.0.4
  • 所有编码:UTF-8

演示内容



  • 项目设置:
    • 项目 JDK 设置
    • 项目 Facet 加入 Spring 配置

  • 代码相关:
    • 简单讲解 pom.xml 文件
    • 用 IntelliJ IDEA 的 Database 初始化数据库
    • 单元测试
    • 启动 Tomcat 加上 Make Project 事件
    • 访问 Controller 演示 Debug
    • 讲解 Controller 中代码左侧的各个按钮效果
    • JSP 页面直接点击请求地址直接跳转到 Controller
    • 静态资源映射特别提醒下,比如你做图片上传等等,如果你没有映射好可能都会遇到 404
    • 查看 Druid 提供监控
    • 演示用 Mybatis 插件自动生成代码

结束语

  • 简,希望你有在好好学习,找到一个满意的工作

我的 Firefox 扩展 和 主题(不间断更新)

Firefox

初衷

  • 整理自己的习惯,也希望你有好的扩展可以留言给我推荐,能提高效率的事情我非常需要!
  • 不对下面扩展进行再唠叨,具体点击到扩展主页可以看到对应的说明。

扩展

整合

具体

关闭扩展签名校验

  • 在地址栏输入:about:config,找到:xpinstall.signatures.required,然后设置为 false

主题

整合

具体

Java 开发基础规范(初稿)

IntelliJ IDEA

本文初衷

  • 以本篇为引,获取到有识之士的一些意见或是看法,促进成长!

重要说明

  • 2017-01:阿里公开了他们自己的规范,写得还是很合理的,也很清晰,重点推荐。
    • 在 Google 里面搜索:阿里巴巴 JAVA 开发手册

命名、规范

Java 相关命名、规范

  • 命名:
    • Java 类名命名(用名词性单词组合)
      • 普通类名:首字母大写,需要两个、多个单词表达的,使用大驼峰命名法进行命名,eg:CategoryService
      • 抽象类名:在普通类名的基础上对其命名后加上 Abstract,eg:CategoryAbstract
      • 自定义异常类名:在普通类名的基础上对其命名后加上 Exception,eg:CategoryException
      • 队列类名:在普通类名的基础上对其命名后加上 Queue,eg:CategoryQueue
      • 后台任务类名:在普通类名的基础上对其命名后加上 Task 或 Job,eg:CategoryTask、CategoryJob
      • Servlet 类名:在普通类名的基础上对其命名后加上 Servlet,eg:CategoryServlet
      • Filter 类名:在普通类名的基础上对其命名后加上 Filter,eg:CategoryFilter
      • 工厂类名:在普通类名的基础上对其命名后加上 Factory,eg:CategoryFactory
      • 工具类名:在普通类名的基础上对其命名后加上 Util,eg:CategoryUtil
      • 测试类名:在普通类名的基础上对其命名后加上 Test,eg:CategoryServiceTest
      • 数据库访问层接口类名:在普通类名的基础上对其命名后加上 Dao,eg:CategoryDao
      • 数据库访问层实现类名:在普通类名的基础上对其命名后加上 DaoImpl,eg:CategoryDaoImpl
      • 业务层接口类名:在普通类名的基础上对其命名后加上 Service,eg:CategoryService
      • 业务层实现类名:在普通类名的基础上对其命名后加上 ServiceImpl,eg:CategoryServiceImpl
      • 控制层类名:在普通类名的基础上对其命名后加上 Controller,eg:CategoryController、CategoryAction、CategoryActivity
      • 对象扩展类名:在普通类名的基础上对其命名后加上 VO,eg:CategoryVO(Value Object)、CategoryDTO(Data Transfer Object)、CategoryPOJO(plain ordinary java object)
    • 常量名:全部字母大写,有多个单词用下划线分隔,eg:MY_AGE
    • 常规变量名:首字母小写,需要两个、多个单词表达的,使用小驼峰命名法进行命名,eg:categoryName
    • 复数变量名:首字母小写,需要两个、多个单词表达的,使用小驼峰命名法进行命名,eg:
      • List:categoryList
      • Map:categoryMap
      • Set:categorySet
    • package 名:所有单词全部小写,即使有多个单词组成,且不能使用下划线连接,或是其他任意字符连接,eg:googlebook
    • 方法参数名:首字母小写,需要两个、多个单词表达的,使用小驼峰命名法进行命名,eg:categoryName
    • 方法命名(用动词性单词开头):
      • 数据库访问层方法名
        • saveCategory()
        • deleteCategoryByObject()
        • deleteCategoryById()
        • updateCategoryByObject()
        • updateCategoryById()
        • findCategoryList()
        • findCategory()
      • 业务层方法名
        • saveCategory()
        • deleteCategoryByObject()
        • deleteCategoryById()
        • updateCategoryByObject()
        • updateCategoryById()
        • findCategoryList()
        • findCategory()
        • initCategory()
        • openConnection()
        • closeConnection()
        • writeFile()
        • readFile()
    • 视图层(JSP、FreeMarker 等):
      • categoryList
      • categoryAdd
      • categoryUpdate
      • categoryEdit
      • categoryDetail
      • categoryTree
  • 规范:
    • 当一个类有多个构造函数,或是多个同名方法,这些函数 / 方法应该按顺序出现在一起,中间不要放进其它函数 / 方法
    • 导入包的时候,import 后面不要使用通配符 * 来代替有些包的导入
    • 大括号与 if, else, for, do, while 语句一起使用,即使只有一条语句(或是空),也应该把大括号写上
    • 不要使用组合声明,比如 int a, b;
    • 需要时才声明,并尽快进行初始化
    • 注解紧跟在文档块后面,应用于类、方法和构造函数,一个注解独占一行
  • 注释:
  • 块注释
/*
logger.info("---------开始---------");
SubmitOrderInfo submitOrderInfo = getSubmitOrderInfo(orderId);
*/
  • 行注释,只用来注释
//ResultInfo resultInfo = orderService.orderStateUpdate(voucherNo);
  • 行注释,用来解释
private int categoryId = 1; // 1 是顶级分类的 ID

Mysql 相关命名、规范

  • 表名:全部小写,需要两个、多个单词表达的使用下划线隔开,eg:prd_category

  • 字段名:全部小写,需要两个、多个单词表达的使用下划线隔开,eg:category_name

  • 注释:

  • 行注释

    • # 下面内容需要先执行
    • -- 下面内容需要先执行
  • 块注释

/*
下面内容需要先执行
需要注意的是:分类的 ID 需要先检查
*/
  • 程序 SQL 补丁文件命名,eg:
    • 20160306-update-更新所有会员密码
    • 20160312-delete-删除指定会员密码
    • 20160313-insert-新增会员数据
    • 20160315-alter-更新会员邮箱字段长度

编码

  • 数据源连接:jdbc:mysql://localhost:3306/youshop?characterEncoding=utf-8
  • Java 文件编码:UTF-8
  • XML 文件编码:UTF-8
  • Properties 文件编码:UTF-8
  • Mysql 字符集:UTF-8

其他

  • Tab 缩进为 4 个空格,使用 IntelliJ IDEA 标准格式化即可
  • TODO 标记必须使用个人自定义 TODO,不能使用公共的
  • SVN、Git 提交必须有 Commit Message

资料

感谢

  • 感谢 Lindp 提供意见

为什么不尝试下 IntelliJ IDEA?我想劝说你

IntelliJ IDEA

本文对象

  • Eclipse、MyEclipse、NetBeans、Vim、Sublime Text 重度患者

本文目标

  • 本篇不讲 IntelliJ IDEA 技巧类的具体东西,关于技巧这类东西我已经系统整理过了,你可以去这里看:https://github.com/judasn/IntelliJ-IDEA-Tutorial
  • 写这篇文章主要目的是想给你留下一个印象,关于一个沉浸式的 IDE。
  • 学习过程的核心思想:IntelliJ IDEA 跟 Eclipse 或是其他 IDE 完全不一样,所以放下过去的思维。
  • 懂 Maven 和 Gradle 学习它会更快,因为它本身就是模块化的。

过去有感

  • 在我记忆中,所有的大学 Java IDE 只有一个:Eclipse,所以我也是这样过来的。
  • 我知道做 Java 开发的你们 Eclipse 用得很习惯,可能要怪大学老师。也知道 MyEclipse 能解决做 Java 开发的常见问题。所以我理解你们还在坚持它们的原因,就像几年前刚到一家公司的时候,我暗地里认为我的 MyEclipse 会是如何如何地好,了解的插件是如何如何多。你们那个 IntelliJ IDEA 界面丑、默认字体丑、占用内存又高,我是排斥的。
  • 可是为了融入圈子我只能自己去适应周边的人,我开始逼着自己去了解 IntelliJ IDEA。后来,我专门为它配置了一台 i7、SSD、16G 的机子来伺候它。

IntelliJ IDEA 特色

  • 下面我说几个它特殊的地方,跟 Eclipse / Myeclipse 有重叠或是类似的我这里你就不说了,这些细节在你学习的过程中你自己会发现、对比。
  • 我是这样形容 IntelliJ IDEA 的:沉浸式 IDE。
  • 鲜明特色:
    • 特点一
      • 下面一些语言的支持需要额外装官网提供的插件,具体可以到插件库里找
      • 支持的语言/平台
        • Java、JavaScript、TypeScript 、CoffeeScript、Node.js、AngularJS、React、JRuby、ActionScript、SASS、LESS、HTML、CSS
        • Bash、Markdown、Kotlin、PHP、Python、Ruby、Scala、Clojure、Groovy、Android、PhoneGap、Cordova、Ionic
      • 支持的框架
        • Spring、Spring Boot、Spring MVC、Hibernate、Struts、Mybatis、Flex、JSF、Play
        • Web Services、Grails、GWT、Vaadin、Guice、FreeMarker、Velocity、Thymeleaf
      • 支持的构建工具Maven、Gradle、SBT、Grunt、Bower
      • 支持的应用容器Tomcat、TomEE、WebLogin、JBoss、Jetty、WebSphere
      • 支持的版本工具Git、SVN、CVS、Mercurial、Perforce, ClearCase、TFS
      • 额外支持
        • 自带反编译、可以在反编译的类中 Debug、如果是开源框架会自动帮你下载源码
        • 终端、数据库 GUI(Oracle、SQL Server、PostgreSQL、MySQL),REST Client
    • 特点二
      • 它有美妙的快捷键,以及任何地方都支持自定义快捷键,是一个完全可以离开鼠标的 IDE,撒谎的人是小狗。
    • 特点三
      • 无限制、无条件地搜索。IntelliJ IDEA 是有索引的概念,也因为有索引的原因,我们对整个项目进行全文检索是非常非常非常快的,但是也是这个索引,所以当它首次启动某个项目的时候都需要先扫描一下这个项目的所有文件来创建成它的索引,所以,IntelliJ IDEA 首次启动某个项目花的时间会比较多、而且卡。但是我认为这是值得的,后面有无数次的开发我们可以加倍返还。
    • 特点四
      • 高效的导航。IntelliJ IDEA 除了各种搜索无敌,还有各种导航。
      • 你任何时候都可以快速到某个类的父类、子类、接口、测试类、引用地,可以快速到某个变量、方法、文件、包。
  • 沉浸式的原因是:IntelliJ IDEA 一站解决基本上市场上常见的开发所需。
  • 也许你第一眼看到上面的关键字会认为我在说梦话,而我也搞不懂 JetBrains 那些人

结束语

  • IntelliJ IDEA 功能多,耗内存,后端开发内存最好 8 G 以上,前端开发 4 G 以上。
  • Android 的开发人员是比较有权力说 Eclipse 和 IntelliJ IDEA 的差异的,希望 IntelliJ IDEA 家的产品没有托你后退。