vim-IDE进化03-插件管理器plug插件
管理插件的插件
vim 如果不添加插件,仅仅只有原来的编译文本等功能,加上插件之后,就可以做更多事情,加快处理效率,比如可以把它打造成一个写作环境、开发IDE,相当之好用。插件可以手动添加,手动添加步骤需要下载、解压、将文件放到对应目录下步骤多一些。可以使用挺件管理,很方便的添加自己需要的插件
Plug 插件管理vim 有很多插件管理器,如Vundle、vim-plug。Vundle 是 Vim bundle 的简称。vim-plug是一个开源、速度非常快的、极简的vim插件管理器。
安装 vim-plug我是基于 nvim 安装的插件,nvim 默认路径在 ~/.config/nvim/,vim-plug 这个插件需要安装在 autoload 这个目录下。
nvim1curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
vim1curl -fLo ~/.vim/autoload/pl ...
vim-IDE进化02-nvim自身配置
配置好基础环境之后,开始对nvim进行配置,这个配置是非常有必要的,nvim 的默认配置实际上是不附合我们的需求的。
在本系列文中说提到vim都是指nvim,本人的习惯改不过来。nvim 的配置非常之多,要配置成适我们的IDE,要配置各个细节。从本节开始,每一次的改进都会一点一点随着文章添加进这个配置,每一篇的配置都基于上一篇。
主要从几个方面进行配置:
编码设置
分屏设置
按键映射
其他设置
编辑配置文件
~/.config/nvim/init.vim
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465"=================================" VIM 自身配置"=================================" 编码设置set fileencodings=utf-8,gb2312,gb18030,gb ...
vim-IDE进化01-iterm2、nvim、oh-my-zsh环境配置
现在开发、写文章基本上已经离不开 vim了,写 java 使用 IDEA,vim 也能完全胜任,在 IDEA 中添加 ideavim配合开发,写go直接用vim,写文章就是直接上vim。
配置存放仓库不定期更新配置
https://github.com/forfreeday/vim
先上效果图
环境准备
macOs
iterm2
on-my-zsh
nvim
这三个是什么关系
iterm2 是终端工具,负责调用终端命令行工具
on-my-zsh 是 bash 工具,对bash增加了一些优化
nvim 是vim的改进版
插件依赖环境
python3
nodejs
pip3
如果已经有了相关环境不需要安装,如果没有安装一下依赖环境
12345npm install -g neovimnpm install -g typescriptpip3 install jedipip3 install pylint
iterm2这个是主要的工具,在mac使用shell可以做大量的自定义设置。
安装 iterm2以下两种方式二选一:
下载的是压缩文件安装
iTerm2下载地址:https: ...
Leetcode-283-移动零
相当于是使用 for 进行交换的一个小技巧的练习,后面会给出一些算法的小技巧,都是总结的一些算法的小技巧。给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例
输入: [0,1,0,3,12]输出: [1,3,12,0,0]
说明必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。
1234567891011121314151617public class Test { public static void main(String[] args) { Integer[] arr = {1, 3, 5, 0, 7, 0, 0, 0, 8, 9}; int j = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] != 0) { int temp = arr[j]; arr[j] = arr ...
Leetcode007-整数反转
整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
12输入:x = 123输出:321
示例 2:
12输入:x = -123输出:-321
示例 3:
12输入:x = 120输出:21
示例 4:
12输入:x = 0输出:0
提示:
-231 <= x <= 231 - 1
当所计算数字大于2^30 次方或等于2^31 次方但余下的数大于7或小于-2^30 次方或等于-2^31 次方但余下的数小于-8时,只要再计算一次就溢出。
解题方式1234567891011121314151617181920public static int reverse(int x) { int pop; int res = 0; while (x != 0) { pop = x % 10; ...
Leetcode232-栈stack-用栈实现队列
用栈实现队列这个是 Leetcode 232 题,用两个栈来实现一个先进先出的队列,实现了一个版本。
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现 MyQueue 类:
void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false
说明
你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
进阶
你能否实现每个操作均摊时间复杂度为 O(1) 的队列?换句话说,执行 n 个操作的总时间复杂度为 O(n) ,即使其中一个操作可能花费较长时间。
示例:
12345678910111213输入:["MyQueue ...
jetty 流只能读一次问题分析
简述服务端报了一个异常:java.lang.IllegalStateException: STREAMED,详细堆栈如下。
1234511:30:51.359 ERROR [qtp463355-1242] [API](GetServlet.java:77)java.lang.IllegalStateException: STREAMED at org.eclipse.jetty.server.Request.getReader(Request.java:1188) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
这个从堆栈上看是jetty的问题,看着是框架的问题,但是还是得分析分析。看了一个代码,是代码是同时使用了jetty的两个API,原是是不能同时使用下面这两个方法,就是在一次请求里,不能同时使用这两个:
request.getReader()
reque ...
集群容错模式
Failfast Cluster模式这种模式称为快速失败模式,调用只执行一次,失败则立即报错。这种模式适用于非幂等性操作,每次调用的副作用是不同的,如写操作,比如交易系统我们要下订单,如果一次失败就应该让它失败,通常由服务消费方控制是否重新发起下订单操作请求(另一个新的订单)。-Failsafe Cluster模式失败安全模式,如果调用失败, 则直接忽略失败的调用,而是要记录下失败的调用到日志文件,以便后续审计。
Failback Cluster模式失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
Forking Cluster模式并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。
Broadcast Cluster模式广播调用所有提供者,逐个调用,任意一台报错则报错(2.1.0开始支持)。通常用于通知所有提供者更新缓存或日志等本地资源信息。
CocConfig参数设置说明
前言如果常用vim的程序员的话,coc 这个插件即使没用过也听说过,这真是个强到没边的插件。之所以写这个文件是因为用了一段coc发现真是个强大的插件,可以对每次项功能做到非常精细的配置。自己在用的过程中每一项都一点一点验证,把这个过程记录下来,可能会有很多朋友能用的上。
CocConfig编辑CocConfig的方式有两种:
1.在vim输入: :CocConfig,保存后生成文件2.编辑文件,默认不存在该文件:
~/.config/nvim/coc-settings.json
完整配置,下面标逐渐分析每个配置的说明,每个配置都是在使用中,一点一点验证。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081 ...
netty 构建server和client 服务
前言编程学习的方法,我认为是以小见大,在理解一个东西之前一定要先会用,并用熟它,这样理解才会快。就跟理解自行车一样,不会骑,然后先开始研究,最终可能会研究明白,但是毕竟还是事倍功半。所以先构建一个可以使自己理解的项目,再一点一点学习原理是一种比较好的方式。
Server服务端构建netty的话,就是一个流程三件套,最基础的三个框架组件摆出来,然后在上面写代码,分别是:
Server 启动类
Initializer 实始化组件类
Handle 请求处理类
劳记这一个流程三件套,基本netty的开发,你已经入门了,就是这么回事。
启动类套路第一步,写一个启动类,这个是入口,netty服务的话,一般都是先启动服务端,再启动客户端。这个好理解,如果服务端都不提供服务,客户端还有必要连接吗。当然如果是要启动着玩,就另说。
1234567891011121314151617181920212223242526272829303132333435package com.liukai.netty.test02.server;import io.netty.bootstrap.ServerBoots ...