• Shell该怎么写

    时隔这么长时间,我终于又有时间蓝更新内容了,这期是对 shell 基本语法的一个总结,话不多说,我们直接开始。 第一个 shell 脚本Shell 的种类其实有很多种,例如几乎所有的 linux 发行版的默认 shell 都是 bin/bash,也就是我常说的 bash, 以及我们实际中比较常用的 zsh 等,但处于通用性考虑,大多数的时候我们都会选择 bash, 来保证在大部分设备上可以运...
  • 正则表达式

    这一篇我们来快速的过一下正则表达式相关的基础知识,算是在将 shell 脚本语言之前的一个基础,只追求一个基本的了解,这玩意实际的规范值得花大几十万字去讲解,但在更多的时候我们只需要了解一些基本的用法,更复杂的还是在用的时候查吧。我们首先来看一下相关的定义: 正则表达式(Regular Expression,简称 Regex 或 RegExp)是一种用来匹配字符串中字符组合的模式。正则表达...
  • Linux常用命令汇总

    今天再新开一个 Tag ,专门用来记录一些常用但比较容易忘的东西,话不多说,我们直接不如正题。首先警告:请千万不要在确保无害前直接在自己的设备上执行下面的命令 查看命令的功能授人以鱼不如授人以渔,linux 大部分的命令都有自己的操作手册,我们可以通过,man 命令来查看他们具体的作用 1man ls 例如我们如果不知道 ls 命令的作用,我们可以通过上面的命令来直接获得 ls 命令的操作手...
  • KMP算法

    今天新开一个 tag,专门用来聊一些算法,我们第一篇讲一讲相当注明的字符串匹配算法,这个算饭解决的是如下的问题: 对于任意一个字符串 s,给定另一个字符串 m,请判断 m 是否为 s 的子串,即 s 中是否包含 m,并指出 s 中出现 m 的具体位置例如对于 abc,我们称 ab,a 等字符串为其子串 我们能想到的最简单的算法就是通过两个循环嵌套来解决问题了,我们认为这种算法的复杂度为 ...
  • 互联网结构与网络通信协议

    这一篇我们从互联网的结构开始梳理一下网络世界的通信到底是怎样实现的。 网络模型我们首先从 OSI 模型讲起,在这个模型中互联网的结构被分成了七层: 应用层(Application Layer) 功能:直接与最终用户交互,为应用程序提供网络服务。 常见协议:HTTP, FTP, SMTP, SNMP, DNS, Telnet。 我们常见的各种应用程序,都是工作在应用层 表示层...
  • 网络通信

    今天我们来聊聊网络通信的部分,我们知道的是Spring框架使用的是一个名为DispatchServlet的类作为网络通信的处理器,而这个类实际上来自于TomCat中的Servlet,我们先一层层推进看看这些东西到底是怎么实现的 DispatchServlet分析从流程上看,首先存在一个简单的服务器用于监听端口,一般是TomCat,在TomCat发现请求后会转发给DisPatchServlet...
  • NIO体系

    理论上来说下一步应该是实现一些SpringWeb中的相关功能了,比如基本的HTTP通信实现,但是要实现Spring中的效果需要用Java的异步IO体系,这一部分比较复杂,且网上我也没找到太多比较好的资料,所以就有了这一篇,我们专门来讨论一下NIO体系的相关知识 缓冲区相信大家都使用过BufferedReader等带缓冲的输入输出流,这些自带缓冲区的输入输出流主要被用于在数据量比较大的时候的数...
  • 多线程与线程池

    今天我们来稍微了解一下线程与线程池的相关知识 多线程的基本操作我们首先从最基本的Thread类讲起。我们知道多线程的基本使用方法大概如下 12345678public class Main { public static void main(String[] args) { Thread thread = new Thread(() -> ...
  • IDEA中VIM插件的使用

    今天我们讲一讲关于idea中vim插件的使用。其实网上一直有这样两波人,一批人在疯狂的吹嘘vim到底有多好用,甚至看不起平时使用IDE的人;另一批人却将vim的使用者称之为装。 从我个人的使用感受上来说,vim确实是个好东西,唯一的问题就是不怎么好上手,在习惯以后确实能够大大提高编码效率。但是真的完全用vim写代码,需要做各种繁琐的配置,给vim安装各种各样的插件,还不一定能百分百达到完...
  • JSON解析

    既然要手写一个可用的spring框架,那么网络通信部分是必不可少的,既然涉及到了网络通信,那么显然json解析能力是必须具备的,所以我们今天来试着手写一个json解析器吧 JSON的规则首先我们研究以下JSON解析的问题,开始之前我们可以先看看JSON的标准 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成...
12