java
文章平均质量分 57
宇学愈多
懂的越多~不懂的更多~
展开
-
Java直观打印一棵二叉树
引言学习堆排的过程中,总是用数组的形式来保存树型结构,输出也不是很直观。网上找过一些帖子,大家都希望能直观的打印一棵树,想到的方式也很直接,就是节点和节点之间通过斜线连接。 1 / \ 2 3 / \ / \ 4 5 6 7但这样有个问题,如果树达到一定高度,斜线就很难准确的指向对应的数字,除非把斜线的角度和长度随着改变,但这样就涉及到画图,比较麻烦。我们完全可以把斜线去掉。图中 * 代表每个节点,去掉斜线后,无论树有多高都不会出原创 2021-06-22 18:06:55 · 1186 阅读 · 1 评论 -
tomcat是否区分32位和64位
最近项目部署需要在Linux环境进行,以往都是在windows环境部署,安装包等资源也都是经过生产验证的,每次都是无脑直接用。这是第一次在Linux环境部署,资源都要重新找。首先是32位的JDK,然后是tomcat包,项目组svn库正好有一个,如何验证它是32位的还是64位的呢。网上推荐的比较多的方式如下(windows环境):1、打开dos窗口,切换到tomcat解压包的bin目录下,如:E:\apache-tomcat-8.5.59\bin2、输入命令:catalina versi.原创 2021-05-26 11:25:30 · 2137 阅读 · 0 评论 -
类初始化中相关代码执行顺序
1、单个类。根据执行结果和注解,便可一目了然。静态优先 -> 属性赋值 -> 代码块执行 -> 构造方法执行public class ClassTest { public static void main(String[] args) { staticFunction(); //TODO 执行main函数,出发类的初始化 } ...原创 2019-03-20 17:44:52 · 168 阅读 · 0 评论 -
synchronized的几种加锁方式
1、修饰普通方法(锁住的是当前实例对象)同一个实例调用会阻塞 不同实例调用不会阻塞public class SynchronizedTest { //锁住了本类的实例对象 public synchronized void test1() { try { logger.info(Thread.currentThread().getName...原创 2019-03-21 14:53:12 · 12937 阅读 · 4 评论 -
通过jstack命令查看线程的生命周期
注:数字顺序不代表先后顺序阻塞三种,同步阻塞,等待阻塞,其他阻塞。同步阻塞(Entry Set),等待获取对象锁的同步队列,有些地方也叫锁池(每个对象都有一个内部锁,monitor监视器)。当某个线程访问一个对象中的Synchronize同步代码块时,如果发现该对象的监视器被别的线程持有,就进入该对象的 Entry Set,当前线程状态变成BLOCKED。等待阻塞(Wait Se...原创 2019-04-02 14:44:05 · 681 阅读 · 0 评论