java
_往事如烟_
天行健,自强不息
展开
-
新版win10卸载Microsoft Edge
win10卸载Edge浏览器原创 2022-06-12 20:16:13 · 5201 阅读 · 0 评论 -
Apache开源工作流框架DolphinScheduler
https://blog.csdn.net/MiaoSO/article/details/104770720转载 2022-05-25 15:46:55 · 357 阅读 · 0 评论 -
Java开源工作流框架对比
什么是工作流? 工作流,是指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。 在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。 工作流是复杂版本的状态机 就好比一般的请假流程,小明会先提出请假申请,然后由Leader审批或者Manager进行审批,直至审批通过或者拒接。 如果让我们实现请假单状态的切换,那么用一个字段来...转载 2022-05-25 15:36:59 · 9085 阅读 · 0 评论 -
接口测试工具
接口测试工具1、knife4jhttps://doc.xiaominfo.com/knife4j/documentation/2、Apifoxhttps://www.apifox.cn/原创 2021-11-29 10:42:58 · 200 阅读 · 0 评论 -
Tomcat和JDK的版本兼容
图片出自官网:tomcat和各组件的版本兼容下载Tomcat(我此次下载最新的Tomcat10,10要求JDK1.8+,先检查一下自己的JDK版本,命令:java -version)2. 配置Tomcat环境变量TOMCAT_HOMECATALINA_HOME注:CATALINA_HOME 值是 %TOMCAT_HOME% ,之所以加两个 % 是因为这样在你改变tomca...原创 2020-03-14 18:37:16 · 15393 阅读 · 1 评论 -
bilibili大佬写的武汉疫情传播模拟(java)
源码地址:https://github.com/KikiLetGo/VirusBroadcast原创 2020-02-09 18:50:18 · 2673 阅读 · 0 评论 -
Java学习曲线建议
转载:https://blog.csdn.net/qq_40693171/article/details/94592253原创 2019-12-25 17:54:12 · 977 阅读 · 0 评论 -
JVM(九)垃圾收集算法
标记-清除算法(Mark-Sweep) 1、标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象 2、在标记完成后统一回收所有被标记的对象 缺点:一个是效率问题,标记和清除两个过程的效率都不高; 另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。复制算原创 2017-11-28 16:25:17 · 246 阅读 · 0 评论 -
JVM(十)垃圾回收器
Serial收集器 1、是一个单线程的收集器,“Stop The World” 2、对于运行在Client模式下的虚拟机来说是一个很好的选择 4、简单而高效 Serial Old收集器 1、Serial收集器的老年代版本,它同样是一个单线程收集器,使用“标记-整理”算法。 2、主要意义也是在于给Client模式下的虚拟机使用。 3、如果在Server模式下,那么它主要还有两大用途:原创 2017-11-28 16:38:36 · 313 阅读 · 0 评论 -
JVM(四)JVM内存划分
2.2.1 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的 行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码 解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、 线程恢复等基础功能都需要依赖这个计数器来完成原创 2017-11-28 15:40:39 · 1289 阅读 · 0 评论 -
JVM(十一)GC日志分析、年轻代、老年代
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆原创 2017-11-29 09:53:22 · 813 阅读 · 0 评论 -
JVM(十二)JVM的参数查询列表
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆原创 2017-11-29 09:54:40 · 532 阅读 · 0 评论 -
JVM(十三)理解GC日志
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆原创 2017-11-29 09:55:04 · 521 阅读 · 0 评论 -
JVM(十四)GC的触发时间
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆原创 2017-11-29 09:56:47 · 4001 阅读 · 0 评论 -
JVM(十五)内存分配与回收策略
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆原创 2017-11-29 09:57:48 · 386 阅读 · 0 评论 -
JVM(十六)与jvm相关的JDK命令行工具
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆原创 2017-11-29 09:59:29 · 750 阅读 · 0 评论 -
25个JAVA 机器学习工具包
本列表总结了25个Java机器学习工具&库:Weka集成了数据挖掘工作的机器学习算法。这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用。Weka包括一系列的工具,如数据预处理、分类、回归、聚类、关联规则以及可视化。Massive Online Analysis(MOA)是一个面向数据流挖掘的流行开源框架,有着非常活跃的成长社区。它包括一系列的机器学习算法(分类、回归、聚类、异常检测转载 2017-11-20 17:54:57 · 9511 阅读 · 0 评论 -
深入理解Java虚拟机到底是什么(转载)
什么是Java虚拟机作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎交流。我们都知道java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释:虚拟机是一种抽象转载 2017-12-01 11:17:37 · 550 阅读 · 0 评论 -
JVM(八)OutOfMemoryError异常与实战
StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度 OutOfMemoryError:虚拟机栈可以动态扩展(当前大部分的Java虚拟机都可动态扩展,只不过Java虚拟机规范中也允许固定长度的虚拟机 栈),如果扩展时无法申请到足够的内存 OutOfMemoryError Java heap space:java堆内存溢出 OutOfMemoryError PermGen原创 2017-11-28 16:16:34 · 505 阅读 · 0 评论 -
JVM(七)对象的访问定位
建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方式也是取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。 如果使用句柄访问的话,那么Java堆中将会划分出一块内存来作为句柄原创 2017-11-28 16:03:06 · 307 阅读 · 0 评论 -
JVM(六)对象的内存布局
在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(InstanceData)和对齐填充(Padding)。 HotSpot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机(未开启压缩指针)中分原创 2017-11-28 15:52:15 · 284 阅读 · 0 评论 -
ThreadLocal
ThredLocal不是一个线程,而是一个线程的本地化对象,当工作于多线程的对象用ThreadLocal维护变量(即共享资源)时,ThreadLocal会为每个使用该变量(即访问共享资源)的线程创建一个变量副本,每个线程操作的是ThreadLocal提供的变量副本,不会影响到其他线程,从而解决了共享资源在并发访问时带来的线程安全问题; 这个变量副本从线程的角度来说,就像是线程的一个本地变量或叫局部原创 2017-07-17 09:26:15 · 294 阅读 · 0 评论 -
采用注解进行注入
通过使用注解代替手动地在配置文件中配置 实现对类的属性的注入 注解只是简便了bean属性的注入,体现在配置文件中就是bean标签的子标签的配置,但bean的配置该怎么配置还需怎么配置,bean标签相当于spring容器的对象生成说明书,是必须的; 使用注解之前要在spring的配置文件中启动注解<beans xmlns="http://www.springframework.org/sch原创 2017-07-17 09:28:01 · 310 阅读 · 0 评论 -
基于接口回调的事件处理
自己写了一个Java事件处理的工具包:Event 所有的自定义事件均要继承的基类;/** * 事件类 */public class Event { private String id; private String type; private Object param; public Event(String type) { this.id =原创 2017-07-17 09:31:07 · 705 阅读 · 0 评论 -
synchronize用法
1、多线程的同步: 1.1、同步机制:在多线程中,可能有多个线程试图访问一个有限的资源,必须预防这种情况的发生。所以引入了同步机制:在线程使用一个资源时为其加锁,这样其他的线程便不能访问那个资源了,直到解锁后才可以访问。 1.2、共享成员变量的例子: 成员变量与局部变量:成员变量:如果一个变量是成员变量,那么多个线程对同一个对象的成员变量进行操作,这多个线程是共享一个成员变量的。局部变量:如果原创 2017-07-17 14:34:52 · 2930 阅读 · 0 评论 -
ThreadPoolExecutor
ThreadPoolExecutor机制 一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。 3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障。同时可以原创 2017-07-17 14:49:49 · 279 阅读 · 0 评论 -
java 观察者模式
自定义观察者要实现java.util.Observer接口; 自定义被观察者要继承java.util.Observable基类;观察者/** * 观察者 * 实现java.util.Observer接口 */public class NumObserver implements Observer{ /** * This method is called whenever原创 2017-07-17 15:00:43 · 275 阅读 · 0 评论 -
junit测试方法执行顺序
junit测试方法执行顺序Junit 4.11里增加了指定测试方法执行顺序的特性:测试类的执行顺序可通过对测试类添加注解 “@FixMethodOrder(value)” 来指定,其中value 为执行顺序;三种执行顺序可供选择: - 默认(MethodSorters.DEFAULT) - 按方法名(MethodSorters.NAME_ASCENDING) - JVM(MethodSorte原创 2017-07-17 16:55:37 · 4103 阅读 · 0 评论 -
JUnit测试详解
注解测试import org.junit.*;import org.junit.runner.RunWith;import org.junit.runners.Suite;/** * JUnit注解 */public class JUnitAnnotationTest { /** * 注解:@BeforeClass * 描述: * 1 修饰的方法为静态方原创 2017-07-17 17:58:06 · 541 阅读 · 0 评论 -
maven JUnit
maven倡导约定优于配置,而maven的约定目录结构为: - src/main/Java 下存放java类 - src/main/webapp 下存放页面文件(需要手动创建) - src/main/resources 下存放资源文件 - src/test/java 下存放单元测试代码 - src/test/resources 下存放测试资源文件 maven运行的生命周原创 2017-07-18 15:36:52 · 1683 阅读 · 0 评论 -
java生成二维码
java生成二维码本例采用google提供的zxing加入core.jar包准备生成二维码需要依赖的google类: MatrixToImageWriter 直接建一个util包,然后创建一个该类即可,下面是该类的源码:/** *使用google的zxing生成二维码时依赖的类,该类是Google提供的类, *该类不在core.jar包中 */ package testuser原创 2017-09-12 09:48:37 · 545 阅读 · 0 评论 -
synchronized&&threadLocal
synchronized实现线程同步: 1 同步代码块 锁的是共享资源,当一个线程独占共享资源的锁时,其他的线程不能执行该同步代码块,只能等待,处于阻塞状态,使用同步代码块能保证同一时间只能该代码块且操作共享资源的只能有一个线程,即占用共享资源锁的该线程; 2 同步方法 synchronized关键字修饰类中的方法,表示该方法是同步方法,锁的是方法所在类的实例对象,即调用该方法的当前对象,原创 2017-09-12 09:40:15 · 260 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码,原创 2017-09-12 11:11:30 · 356 阅读 · 0 评论 -
如何通过程序(java)提高CSDN的博客访问量
import java.awt.Desktop;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.util.ArrayList;public class OpenUrl { public static String str="taskkill /F原创 2017-11-17 15:08:00 · 732 阅读 · 0 评论 -
JVM(一)JVM调优总结
年轻代大小选择响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。年老代大小选择响应时间优先的应用:年老代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话原创 2017-11-28 15:29:36 · 292 阅读 · 0 评论 -
JVM(二)eclipse设置jvm
设置参数: -Xverify:none -Xms512m -Xmx512m -Xmn128m -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Xnoclassgc -XX:CMSInitiatingOccupancyFraction=85 参数解释: -Xverify:none 禁止字原创 2017-11-28 15:32:07 · 846 阅读 · 0 评论 -
JVM(三)HotSpot
提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies”的小公司设计的;甚至这个虚拟机最初并非是为Java语言而开发的,它来源于Strongtalk VM,而这款原创 2017-11-28 15:35:02 · 1270 阅读 · 1 评论 -
JVM(五)对象的创建
Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢? 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代原创 2017-11-28 15:47:11 · 518 阅读 · 0 评论 -
MarkDown_Language
MarkDown语法“#”描述:标题 格式:##zhangjian- #comment //一级标题- ##comment //二级标题- ###comment //三级标题- ####comment //四级标题- #####comment //五级标题“- ”描述:无序列表 格式:”-“+空格 例子:- 类别1原创 2017-07-04 17:53:29 · 644 阅读 · 0 评论