Author: haoranSun
Wechat: SHR—97
一、什么是定时任务:
定时任务是指调度程序在指定的时间或周期触发执行的任务
使用场景:发送邮件、统计、状态修改、消息推送、活动开启、增量索引
写代码是热爱,写到世界充满爱
Author: haoransun
Wechat: SHR—97
官方网站:http://netty.io/
Netty是一款异步事件驱动的网络通信框架,用来快速开发可维护的高性能、高扩展的协议服务器和客户端。
Netty是一个基于NI0客户端、服务器框架,使用它可以轻松快速的的构建网络应用,如协议服务器和客户端。它极大地简化了TCP和UDP套接字服务器网络编程开发。
高性能、稳定、高度灵活,社区活跃,有大量成功的商业实践项目
文章出处:https://www.cnblogs.com/aoyeyuyan/p/5495219.html
那些年,空气中仿佛还能闻到汉唐盛世的余韵,因此决不允许自己的脸上有油光,时刻保持活力。然而,你一定称为那些“高深术语”感到过困惑。也许时至今日,你仍对他们一知半解。不过今天,讲以一种全新的高清视角进入奇妙的编程世界,领略涵涌在这些“高深术语”中活泼的底气,以及蹁跹于青萍之末的云水禅心。
Author:haoransun
WeChat:SHR—97
Practice makes perfect
Vi 最初是由 Bill Joy 在 1976 年编码实现的。而 Vim (Vi IMproved) 则是改进的 Vi,由 Bram Moolenaar 在 1991 年开发并发布。Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器。因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户、管理员必须掌握并熟练使用的编辑工具之一。尤其是在没有图形界面的情况下,更是离不开 Vi/Vim。Vi/Vim 命令非常多、用法极为灵活,掌握起来有一定的难度。本文为入门教程,关于 Vi/Vim 各种定制后的功能不在本文讨论范围之列。
在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改! 与微软 Windows 系统不同的是,如果你用惯了 Microsoft Word 的话,在 Linux 的文本模式下,会觉得文书编辑程序都没有窗口接口来的直观与方便,那么问题来了,干嘛还要学这个不是很友善和方便的vi编辑器呢?因为:
其实你可以将 vim 视作 vi 的进阶版本,vim 可以用颜色或底线等方式来显示一些特殊的信息。 举例来说,当你使用 vim 去编辑一个 C 程序语言的档案,或者是shell script程序时,vim 会依据档案的扩展名或者是档案内的开头信息, 判断该档案的内容而自动调用该程序的语法判断式,再以颜色来显示程序代码与一般信息。也就是说, 这个 vim 已经是个『程序编辑器』了!甚至一些 Linux 基础配置文件内的语法,都能用 vim 来检查!
简单来说, vi 是老式的文本处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim 则可以说是程序开发者的『程序编辑器』了,就连 vim 的官网也说 vim 是一个『程序开发工具』而不是文本处理软件。 因为 vim 里面加入了很多额外的功能,例如支持正规表示法的搜寻架构、多档案编辑、区块复制等等。
学习 vim 并且它可能会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。
提示:在 Linux 下,如果以 root 用户登录系统的话,通过 vi 命令打开的 Vim 编辑器往往只加载最基本的功能,像语法加亮着色的功能基本上没有。在 root 用户下使用 Vim 所有功能的技巧是用 vim 命令打开 Vim 编辑器。
可以在终端(不明白什么是终端的,请自行谷歌命令行、终端、shell、bash了解)输入下面的命令:
1 | $vim [filename] |
其中filename
是文件的路径。如果文件不存在,它将为你建立一个新文件。
Vim编辑程序有三种操作模式,分别称为编辑模式、插入模式 和 命令模式。
编辑模式:用以执行命令,也称为Normal正常模式,也是进入Vim的缺省模式。进入Vim后会直接进入编辑模式(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来操作文本, 也可以使用『复制、剪切、粘贴』来处理文本数据,删除正文和插入新的正文。但是却是无法编辑文本内容的!
插入模式:即 Insert 模式,用来输入文本,就像你用“记事本”一样。进入Vim后会直接进入编辑模式,要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『 INSERT 或 REPLACE 』的字样,此时才可以进行编辑,可以输入字符。而如果要回到一般模式时, 则必须要按下『Esc』这个按键才可退出编辑模式。
命令模式:用来执行冒号命令。在编辑模式下输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中,可以进行保存、查找、替换、显示行号、退出、配置Vim操作等等的动作。
1 | i → Insert 模式,按 ESC 回到 Normal 模式。 |
推荐:
强例推荐使用hjkl键盘移动光标,但不必需,你也可以使用光标键 (←↓↑→)移动。
以 : 开始的命令你需要输入
1 | k或↑ 上移 |
上面这4个键将光标位置每次移动一行或一个字符 。Vim还提供稍大范围移动光标的命令:
1 | ctrl+f 在文件中前移一页(相当于 page down) |
更大范围的移动:
1 | * 当光标停留在一个单词上,x 键会在文件内搜索该单词,并跳转到下一处; |
在屏幕中找到需要的一页 时,可以用下面的命令快速移动光标:
1 | H 将光标移到屏幕上的起始行(或最上行) |
同样需要注意字母的大小写。H 和 L 命令还可以加数字。如 2H 表示将光标移到屏幕的第2行,3L 表示将光标移到屏幕的倒数第3行。
当将光标移到所要的行是,行内移动 光标可以用下面的命令来实现:
1 | w 右移光标到下一个字的开头; |
和许多先进的编辑器一样,Vim 提供了强大的字符串搜索功能。要查找文件中指定字或短语出现的位置,可以用Vim直接进行搜索,而不必以手工方式进行。搜索方法是:键入字符 / ,后面跟以要搜索的字符串,然后按回车键。编辑程序执行正向搜索(即朝文件末尾方向),并在找到指定字符串后,将光标停到该字符串的开头;键入 n 命令可以继续执行搜索,找出这一字符串下次出现的位置。用字符 ? 取代 / ,可以实现反向搜索(朝文件开头方向)。例如:
1 | /str1 正向搜索字符串 str1; |
无论搜索方向如何,当到达文件末尾或开头时,搜索工作会循环到文件的另一端并继续执行。
Vim中执行搜索匹配最强大的地方是结合 正则表达式 来搜索,
Vim常规的删除命令是 d、 x (前者删除 行 ,后者删除 字符 ),结合Vim的其他特性可以实现基础的删除功能。将光标定位于文件内指定位置后,可以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符或一行、多行。例如:
1 | rc 用 c 替换光标所指向的当前字符; |
其他常用的删除命令有:
1 | d$ 从当前光标起删除字符直到行的结束; |
Vim常规的替换命令有 c 和 s ,结合Vim的其他特性可以实现基础的替换功能,不过替换命令执行以后,通常会由编辑模式进入插入模式:
1 | s 用输入的正文替换光标所指向的字符; |
如果只是临时显示vim的行号,只须按ESC键退出编辑内容模式,输入“:set number” / “:set nu”后按回车键,就可以显示行号了。行号显示只是暂时的,退出vim后再次打开vim就不显示行号了。
如果想让vim永久显示行号,则需要修改vim配置文件vimrc。whereis vimrc
如果没有此文件可以创建一个 vimrc
在打开的vimrc文件中最后一行输入:set number ,然后保存退出。再次用vim打开文件时,就会显示行号了。
选中一个起始点后,按 ctrl+v 可以看到左下角出现 区块选择,然后点击上下左右选择即可。按下y即可剪切,按下p粘贴刚才剪切的内容.
在命令模式下输入 :files 可以列出目前这个vim开启到的所有档案。
1 | vim -On file1 file2 |
1 | vim -on file1 file2 |
注释:n是数字,表示分成几个屏
1 | Ctrl +w c |
1 | Ctrl +w q |
1 | Ctrl +w s |
1 | :sp filename |
1 | Ctrl +w v |
1 | :vsp filename |
Vi中的光标键是h, j, k, l,要在各个屏间切换,只需要先按一下Ctrl+W
把光标移到右边的屏。
1 | Ctrl+w l |
把光标移到左边的屏中。
1 | Ctrl+w h |
把光标移到上边的屏中。
1 | Ctrl+w k |
把光标移到下边的屏中。
1 | Ctrl+w j |
把光标移到下一个的屏中。.
1 | Ctrl+w w `注:也可以按住cntl键,同时按下两次w键` |
这个功能还是使用了Vim的光标键,参数是大写的。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。
向右移动。
1 | Ctrl+w L |
向左移动
1 | Ctrl+w H |
向上移动
1 | Ctrl+w K |
向下移动
1 | Ctrl+w J |
让所有的屏都有一样的高度。
1 | Ctrl+w = |
增加高度。
1 | Ctrl+w + |
减少高度。
1 | Ctrl+w - |
Vim 入门教程
vim 程序编辑器
http://www.jianshu.com/p/7678a7e6973e
http://www.jianshu.com/p/bcbe916f97e1
http://coolshell.cn/articles/5426.html
Author: haoransun
Wechat: SHR—97
https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/
http://segmentfault.com/a/1190000000375848
https://opsx.alibaba.com/mirror/search?q=mysq5.7&lang=zh-CN
1 | cd /usr/local/geek/ |
wget 方式不推荐使用,会出现无法解压的情况,用wget命令直接下载的JDK,这是问题的根源。
去Oracle官网下载过jdk的童鞋应该都知道,下载之前需要同意Oracle的安装协议,不然不能下载,但是用wget的方式,默认是不同意,虽然能下载下来,但是下载下来的文件会有问题,所以在Linux上解压一直失败。
后来去官网下载好,然后传到服务器上,再解压就没有问题了。
1 | yum search java | grep jdk |
1 | rpm -ivh 指定安装包 |
安装环境:CentOS7 64位 mini版,安装MySQL5.7
mysql-client和server的区别:
本质上的区别是:server是执行一个crud操作,client是发送一个crud操作
server是把sql语句翻译成对内存和文件的操作,也就是说,server是直接操作文件的。
而client是对数据库/表进行操作,不是直接对文件进行操作。
举个例子:
①client:我用一个Navicat去链接一个数据库,这个Navicat就是client。
②server:我有多个mysql服务实例,他们可以位于不同的端口(这句不重要),但是他们是挂载在了宿主机同一个目录下的(这句重要,对内存/文件进行操作了),而且数据共享(这句也不重要)。
小知识点:
①sql只是去知道server如何去操作数据。
②即使C/S在同一台机器上,他们也是通过网络通讯的。
在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/
1 | 下载mysql源安装包 |
由于某些原因,下载过慢,可以参考最上方的国内网址进行下载,如下所示:
https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/
看到上图所示,则表示安装成功。
1 | systemctl start mysqld |
查看MySQL的启动状态
1 | systemctl enable mysqld |
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:
1 | grep 'temporary password' /var/log/mysqld.log |
1 | mysql -uroot -p |
或者
1 | mysql> set password for 'root'@'localhost'=password('MyNewPass4!'); |
注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,如下图所示:
通过msyql环境变量可以查看密码策略的相关信息:
1 | mysql> show variables like '%password%'; |
validate_password_policy:密码策略,默认为MEDIUM策略 validate_password_dictionary_file:密码策略文件,策略为STRONG才需要 validate_password_length:密码最少长度 validate_password_mixed_case_count:大小写字符长度,至少1个 validate_password_number_count :数字至少1个 validate_password_special_char_count:特殊字符至少1个 _上述参数是默认策略MEDIUM的密码检查规则。
共有以下几种密码策略:
策略 | 检查规则 |
---|---|
0 or LOW | Length |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
MySQL官网密码策略详细说明:http://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy |
在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
1 | # 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件 |
如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:
1 | validate_password = off |
重新启动mysql服务使配置生效:
1 | systemctl restart mysqld |
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户:
1 | mysql> GRANT ALL PRIVILEGES ON *.* TO 'sunhaoran'@'%' IDENTIFIED BY 'Sun@123456' WITH GRANT OPTION; |
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:
1 | [mysqld] |
重新启动mysql服务,查看数据库默认编码如下所示:
1 | show variables like 'character%'; |
默认配置文件路径: 配置文件:/etc/my.cnf 日志文件:/var/log//var/log/mysqld.log 服务启动脚本:/usr/lib/systemd/system/mysqld.service socket文件:/var/run/mysqld/mysqld.pid
1 | mysql -u root -p 回车 |
Alibaba Java Coding Guidelines
一个在编译阶段修改增强Java类的工具,使用方式基于注解,常用于:
项目中是否引入Lombok一直是个存在争议,它的主要优势在于消除Java类的部分臃肿代码,提高开发效率,降低代码维护成本;缺点是需要IDE插件支持,需要团队统一规范,另外某些注解生成的隐性实现可能导致问题跟踪调试困难。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true