本文代码为java代码 一、二叉树 二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的,分别称为根节点的左子树和右子树的二叉树组成。 --《大话数据结构》 简单的说,二叉树是一种树,并且最多有2个子树。如图1-1: 代码表示: public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { val = x; } } 二、二叉树的遍历 1、前序遍历 前序遍历的顺序是,根节点->左子树->右子树,遍历子树时也按照相同的顺序,可以用递归的思想理解。遍历顺序如图2-1: 代码表示: public static void prevPrintTreeNode(TreeNode root){ if(root == null){ return; } System.out.print(root.val+" "); //运用了递归 prev.... 根据前序遍历和中序遍历结果还原二叉树 java
本文参考《深入理解JAVA虚拟机》第2版,此书JDK版本为1.7。 主动引用 java类的初始化阶段,虚拟机规范严格规定了5种情况必须立即对类进行初始化。 遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。 使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化。 当初始化一个类时,如果发现其父类没有进行过初始化,则需要先触发其父类的初始化。 当虚拟机启动时,用户需要制定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个类。 当使用JDK1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果REF_geStatic、REF_putStatic、REF_invokeStatic的方法句柄,并且这个方法句柄所对应的类没有进行过初始化,则需要先触发其初始化。 被动引用 除了上述5种场景,其他所有类的方式都不会触发初始化,称为被动引用。下面举3个例子来说明。 1、子....... java类的主动引用和被动引用 java
0、查看linux系统位数 getconf LONG_BIT 1、获取root权限 sudo root 只有5分钟 su root然后输密码 2、修改root密码 sudo passwd root 3、:set nu :set nonu 文本下添加行号和删除行号 4、/关键字 文本下查询关键字,像windows里的ctrl+f 下一个 n 上一个 N 5、最末行 G 首行 gg 6、撤销 u 7、添加用户xm useradd xm passwd xm 8、删除用户 userdel xm (家目录还在) userdel -r xm (家目录不在) 9、查询用户信息 id username 10、查询当前登录用户 whoami 11、创建目录 mkdir 单级目录 mkdir -p 多级目录 12、删除 rm 文件 rmdir 空目录 rm -rf 非空目录 -r :递归删除整个文件夹 -f : 强制删除不提示 13、创建一个空文件 touch 文件名(可以一次创建多个文件) 14、拷贝 拷贝单个文件:cp 源文件 目标文件或文件夹 递归拷贝目录:cp 源目录 目标目录下 加斜杠强制覆盖同.... linux常用命令 linux
1、在线pdf操作 iLovePDF LightPDF 2、在线画图 ProcessOn 3、各种按钮样式 Beautifully simple click-to-copy CSS effects 4、数据结构可视化 Data Structure Visualizations 网站收藏 工具
http://redisdoc.com/ 1、启动,后面的配置文件,可不选用默认的 redis-server /root/mybackup/redis.conf 2、检查启动是否成功 [root@localhost bin]# redis-cli -p 6379 127.0.0.1:6379> ping 出现以下单词即成功 PONG 3、输入输出 127.0.0.1:6379> set k1 hello OK 127.0.0.1:6379> get k1 "hello" 4、关闭 127.0.0.1:6379> shutdown not connected> exit 5、查看有多少数据 DBSIZE 6、查看具体所有的数据,redis单线程,会造成阻塞 keys * 7、清库 FLUSHALL 清所有库 FLUSHDB清当前库 8、移动数据到别的库 move k1 2 9、为指定的key设置过期时间 expire key 秒钟 10、查看还有多少秒过期,-1表示永不过期,-2表示已过期 ttl key 11、查看key是什么类型 ty.... redis常用命令 redis
本文使用java演示 转载自:JS正则表达式完整教程(略长) 1、匹配16进制颜色 String str = "#ffbbad asda #f33 #ffdd11 #dsasaa "; Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}|#[a-fA-F0-9]{3}"); Matcher matcher = pattern.matcher(str); while(matcher.find()){ System.out.println(matcher.group()+" start:"+matcher.start()+",end:"+matcher.end()); } 结果 #ffbbad start:0,end:7 #f33 start:13,end:17 #ffdd11 start:18,end:25 2、数字的千位分隔符表示法 比如把"12345678",变成"12,345,678"。 分解 先考虑把在最后三个数字之前加逗号 String str = "123456789456"; //这个正则的意思是:在靠近末尾的三个数字....... 正则表达式案例 正则表达式
Java 提供了功能强大的正则表达式API,在java.util.regex 包下。整理一点常用的api。 正则表达式可视化 Pattern 正则表达式经编译后的表现模式,必须先将正则表达式(字符串形式)编译成此实例。 获取Pattern实例 构造器是私有的,可通过如下方法获取实例: Pattern pattern = Pattern.compile("\d"); Matcher 匹配器,一个Matcher对象可以匹配任意character sequences。 获取Matcher实例 String str = "12"; Pattern pattern = Pattern.compile("\d{2}"); Matcher matcher = pattern.matcher(str); 匹配全部字符串 String str = "12"; System.out.println("----方法1----"); Pattern pattern = Pattern.compile("\d{2}"); Matcher matcher = pattern.matcher(str); .... JAVA正则表达式api 正则表达式
vim介绍 Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。 1、ESC 从编辑模式切换到命令模式 2、ZZ 命令模式下保存并退出 3、Ctrl+d/u 将显示内容向下/上滚动半屏 4、Ctrl+f/b 将显示屏内容向下/上滚动一屏 5、:行号 光标跳转到指定行的行首 6、x 删除当前光标所在位置的字符 7、X 删除当前光标所在位置的前一个字符 8、D 删除当前光标到行尾的全部字符 9、dd 删除光标行的整行字符 10、ndd 删除光标所在行后(包括当前光标所在行)n(n为数字)行内容 11、Y 复制当前光标所在行的全部文本,复制的放到内存缓冲区备用 12、nyy 复制当前光标所在行后(包括当前光标所在行)n(n为数字)行内容,复制的放到内存缓冲区备用 13、p(小写) 粘贴文本操作,用于将缓冲区的内容粘贴到当前行的下方 14、P(大写) 粘贴文本操作,用户将缓冲区的内容粘贴到当前行的上方 15、/字符串 文本查找操作,用于从当前光标所在位置向文件尾部查找指定字符串的内容,查找到的字符串会被加亮显示。 16、a,b s/F/T 替换文.... linux vim操作 linux
1、接口只有一个参数,但要求使用json格式时,@RequestBody必须创建一个新类或者使用map,@RequestParam不支持json,如何解决这个尴尬的场景? 关于@RequestBody注解只能注入对象和map的问题 2、用 OpenSSL 创建可以用于 https 的证书 用 OpenSSL 创建可以用于 https 的证书 3、正则表达式详解 JS正则表达式完整教程(略长) 4、Hexo 从 GitHub 到阿里云 Hexo 从 GitHub 到阿里云 5、各个阶段应该看什么书 java 程序员之路及各阶段书籍推荐 6、HashMap源码解析,说得挺好。 HashMap源码解析JDK1.8(史上最详细的源码分析) 7、Java中常见的对象类型简述(DO、BO、DTO、VO、AO、PO Java中常见的对象类型简述(DO、BO、DTO、VO、AO、PO 8、linux安装mysql5.7 Linux下搭建mysql5.7.18 linux安装mysql5.7.24 9、 CentOS7中使用ntp服务同步时间 CentOS7中使用ntp服务同步时间 10、EasyExc.... 收藏 blog