昊方项目持续部署文档

部署方式使用docker简化原有的宿主机手动安装jdk,tomcat,mysql的部署。项目使用Jenkins来持续部署,提供了docker直接部署和docker-compose来管理docker部署两种方式默认使用docker-compose来部署,若想直接使用docker来部署,请将Jenkin

分析aqs源码自记

独占模式请求锁acquire()尝试获取锁tryAcquiretrue => 继续运行false=>执行addWaiter,获取返回的node作为acquireQueued的参数执行acquireQueued(addWaiter())==true=>acquireQueued(ad

JUC

JUCvolatile关键字不具备“互斥性”。不能保证变量的“原子性”内存可见性问题:当多个线程操作共享数据时,彼此不可见先看如下代码,创建一个线程去运行ThreadDemo,在运行时更改flag的值为true,然后在main线程中读取flag的值,如果为true则输出。publicclassTes

apache commons-collections 反序列漏洞分析

在这里只记录下对jdk1.8可用的apache commons-collections中执行任意类任意执行方法链,实际程序代码与原作者相同,想知道更多分析思路,请参考原文环境jdk1.8commons-collections-3.2完整程序import org.apache.commons.coll

base64特性导致的不等串解码相同

base64是将原串以三个字符一组,转化成24个二进制位再分成四个字符的编码方式。下图就是将Man字符转为TWFu的过程。在很多时候,其实原字串的长度都不是3的倍数,这时候转出来的二进制位长度必然不是24的整数倍。这时候就需要对二进制位进行补零操作。在6个二进制位都为零的时候,base64中就呈现=

记第一次开发面试

采用的是双人抢答形式后互相补充回答,整个面试过程持续了一个半小时左右环节一:自我介绍环节二:java基础和数据库基础String和StringBuilder的区别List有几类linkedList和ArrayList的区别CopyOnWriteArrayList的线程安全树与链表的区别java异常有

java多线程基础

多线程线程,进程,多线程一、java线程1. 线程状态2. 线程方法方法说明setPriority(int newPriority)更改线程的优先级static void sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠void join()等待该线程终止static v

JVM

未完待续……帧数据区:JVM类加载子系统运行时数据区程序计数器虚拟机栈本地方法接口本地方法栈堆方法区直接内存执行引擎StringTable垃圾回收一、JVM与java体系结构使用HosSpotVM1.jvm整体结构2.架构图1)jvm整体结构详细图2)jvm架构模型栈:跨平台性、指令集小、指令多;执
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×