精华内容
下载资源
问答
  • .bat脚本中通过停止java进程

    千次阅读 2019-09-02 12:15:14
    背景:最近把一个传统的web项目改造成了spring boot项目,项目打包成jar运行后关闭起来比较麻烦,在Windows环境下,直接关闭cmd...具体的三种方法可以查看通过bat脚本停止java进程的三个方法 taskkill命令需要先查...

    背景:最近把一个传统的web项目改造成了spring boot项目,项目打包成jar运行后关闭起来比较麻烦,在Windows环境下,直接关闭cmd窗口后,java进程还在执行。
    所以只能是通过taskkill 命令强制结束进程。

    结束进程有三种方法,现在只介绍一种比较实用的方法。通过jps查找到进程ID。
    具体的三种方法可以查看通过bat脚本停止java进程的三个方法

    taskkill命令需要先查找到java进程的pid。
    通过 jps + findstr 命令 通过程序名称查找出正在运行的java进程
    在这里插入图片描述
    然后在通过taskkill命令结束查找到进程,
    在这里插入图片描述
    我们发现这个操作起来比较麻烦,需要敲一堆命令,不适合我这种懒人。我只想点点鼠标就能完成操作。于是就想着写个.bat脚本。
    说干就干,借鉴了前面的文章通过bat脚本停止java进程的三个方法
    改了改文章里提供的脚本

    @echo off
    set char=xxxx
    echo char : %char%
    for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %char%`) do (
    		echo find process %%a %%b
    		set pid=%%a
    		set image_name=%%b
    )
    echo now will kill process : pid %pid%, image_name %image_name%
    pause
    rem 根据进程ID,kill进程
    taskkill /f /pid %pid%
    pause
    

    把xxx改成要查找的java程序的名称就可以了。

    set char=xxxx
    
    展开全文
  • 通过bat脚本停止java进程的三个方法

    千次阅读 2019-02-14 16:05:05
    通过bat脚本停止java进程的三个方法 1.拷贝java.exe 启动时复制java.exe程序修改进程映像名,然后通过映像名杀进程。 栗子 拷贝程序 拷贝一份java.exe程序,重名为tstop.exe,放在PATH下。 修改启动脚本 @echo ...

    通过bat脚本停止java进程的三个方法

    1.拷贝java.exe

    启动时复制java.exe程序修改进程映像名,然后通过映像名杀进程。

    栗子

    过程操作
    拷贝程序拷贝一份java.exe程序,重名为tstop.exe,放在PATH下。
    修改启动脚本@echo off
    title tstop
    tstop -jar …/lib/laucher.jar … …/lib/*.jar,…/conf,
    执行停止命令C:\Users\alvin>tasklist | findstr tstop
    tstop.exe 8520 Console 1 42,436 K
    C:\Users\alvin>taskkill /f /im tstop.exe
    成功: 已终止进程 “tstop.exe”,其 PID 为 8520。

    优点: 操作简单可靠
    缺点: 需要给每个java程序拷贝一份java.exe,映像名不能重复。

    2.通过端口杀进程

    通过端口找到PID,然后杀掉进程。

    栗子
    一个完整的脚本:

    @echo off
    rem 设置监听的端口号
    set port=6200
    echo port : %port%
    
    for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (
    	if [%%d] EQU [LISTENING] (
    		set pid=%%e
    	)
    )
    
    for /f "usebackq tokens=1-5" %%a in (`tasklist ^| findstr %pid%`) do (
    	set image_name=%%a
    )
    
    echo now will kill process : pid %pid%, image_name %image_name%
    pause
    rem 根据进程ID,kill进程
    taskkill /f /pid %pid%
    pause
    

    优点: 相对于第一种方案,不用有额外的操作拷贝java.exe
    缺点: 脚本相对复杂(主要是不熟悉batch脚本语法)

    问题分析:
    启动java程序后,执行命令netstat -ano | findstr port

    C:\Users\alvin>netstat -ano | findstr 6200
      TCP    0.0.0.0:6200           0.0.0.0:0              LISTENING       10332
      TCP    [::]:6200              [::]:0                 LISTENING       10332
    

    当执行telnet localhost port后,再执行命令netstat -ano | findstr port

    C:\Users\alvin>netstat -ano | findstr 6200
      TCP    0.0.0.0:6200           0.0.0.0:0              LISTENING       10332
      TCP    [::]:6200              [::]:0                 LISTENING       10332
      TCP    [::1]:62644            [::1]:6200             TIME_WAIT       0
    

    所以脚本里面需要判断
    [%%d] EQU [LISTENING]
    这句

    3.通过jps命令

    jps命令简介
        jps的英文名称是JVM Process Status Tool,功能和ps命令类似。可以列出正在运行的虚拟机进程、显示虚拟机执行主类(main()函数所在的类)的名称、这些进程的本地虚拟机的唯一ID(LVMID, Local Virtual Machine Identifier,LVMID和PID是一致的)。

    选项作用
    -q只输出LVMID(PID)
    -m输出虚拟机进程启动时传递给主类main()函数的参数
    -l输出主类的全名,如果进程执行时是Jar包,输出Jar路径
    -v输出虚拟机进程启动时JVM参数

    栗子

    过程操作
    启动程序通过启动脚本启动程序
    @echo off
    title tstop
    tstop -jar …/lib/laucher.jar … …/lib/*.jar,…/conf,
    找到PIDC:\Users\alvin>jps -l
    5084 …/lib/ocean-laucher-1.0.5.6.jar
    4696
    9864 sun.tools.jps.Jps

    参照栗子2遍历jps -l输出,找到PID 5084
    通过PID杀掉进程 taskkill /f /pid 5084

    优点: jps命令相对比netstat -ano语法清晰
    缺点: java程序需要保证Jar包名(…/lib/laucher-1.0.5.6.jar)不同,相对拷贝java.exe要好一些

    展开全文
  •  * /T Tree kill: 终止指定的进程和任何由此启动的子进程。  * @param processName 进程名称  * @throws Exception  */  private static void killProc(String processName) throws Exception {  System....

    /**
         * 执行CMD命令
         * cmd /c dir 是执行完dir命令后关闭命令窗口。 
         * cmd /k dir 是执行完dir命令后不关闭命令窗口。
         * cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。 
         * cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。 
         * @param command cmd命令
         * @return    命令执行输出语句
         * @throws IOException
         * @throws InterruptedException 
         */
        private static String executeCmd(String command) throws IOException, InterruptedException {  
            System.out.println("Execute command : " + command);
            System.out.println("******************************************************************");
            Process process = Runtime.getRuntime().exec(command);    
            process.waitFor();                                      //等待子进程完成再往下执行。
            //创建bufferedReader
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));  
            String line = null;  
            StringBuilder build = new StringBuilder();  
            while ((line = bufferedReader.readLine()) != null) {  
                line = new String(line.getBytes("UTF-8"));
                System.out.println(line);  
                build.append(line);
            }
            bufferedReader.close();
            int i = process.exitValue();  //接收执行完毕的返回值
            if (i == 0) {
              System.out.println("执行完成.");
            } else {
              System.out.println("执行失败.");
            }
            System.out.println("******************************************************************");
            process.destroy();  //销毁子进程
            process = null;
            return build.toString();  
        }
        
        /**
         * 判断进程是否存在(tasklist /fi "imagename eq processName")
         * tasklist 参数列表:
         * /S system             指定连接到的远程系统(IP)。
         * /U [domain\]user     指定使用哪个用户执行这个命令。
         * /P [password]         为指定的用户指定密码。
         * /M [module]            列出调用指定的 DLL 模块的所有进程。如果没有指定模块名,显示每个进程加载的所有模块。
         * /SVC                    显示每个进程中的服务。
         * /V                    指定要显示详述信息。
         * /FI filter            显示一系列符合筛选器指定的进程。
         * /FO format            指定输出格式,有效值: "TABLE"、"LIST"、"CSV"。
         * /NH                    指定栏标头不应该在输出中显示。  只对 "TABLE" 和 "CSV" 格式有效。
         * @param processName 进程名称
         * @return 存在true;不存在false
         */
        private static boolean findProcess(String processName) {
            System.out.println("开始查找进程:" + processName);
            System.out.println("******************************************************************");
            BufferedReader bufferedReader = null;
            try {
                //后台运行(不会弹出CMD窗口)
                Process process = Runtime.getRuntime().exec("tasklist /fi " + '"' + "imagename eq " + processName +'"');
                //等待子进程完成再往下执行。
                process.waitFor();
                //创建bufferedReader
                bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
                String line = null;
                //判断是否存在此进程(读取到的内容是否有进程名)
                while ((line = bufferedReader.readLine()) != null) {
                    if (line.indexOf(processName) != -1) {
                        line = new String(line.getBytes("UTF-8"));
                        System.out.println(line);  
                        return true;
                    }
                }
                return false;
            } catch (Exception ex) {
                ex.printStackTrace();
                return false;
            } finally {
                if (bufferedReader != null) {
                    try {
                        bufferedReader.close();
                    } catch (Exception ex) {}
                }
                System.out.println("查找进程结束!");
                System.out.println("******************************************************************");
            }
        }
        
        /**
         * 杀死进程
         * taskkill 参数列表:
         * /S system         指定要连接到的远程系统。
         * /U [domain\]user 指定应该在哪个用户上下文执行这个命令。
         * /P [password]     为提供的用户上下文指定密码。如果忽略,提示输入。
         * /F                 指定要强行终止的进程。
         * /FI filter         指定筛选进或筛选出查询的的任务。
         * /PID process id     指定要终止的进程的PID。
         * /IM image name     指定要终止的进程的映像名称。通配符 '*'可用来指定所有映像名。
         * /T Tree kill:     终止指定的进程和任何由此启动的子进程。
         * @param processName 进程名称
         * @throws Exception
         */
        private static void killProc(String processName) throws Exception {
            System.out.println("关闭应用程序:" + processName);
            executeCmd("taskkill /F /IM " + processName);  
        }
        

        public static void main(String[] args) {
            //BAT文件绝对路径
            String filePath = "E:\\test.bat";
            //CMD命令文本
            String command = "cmd.exe /k start "+filePath;
            try {
                //查找进程是否存在,存在则杀死
                if(findProcess("cmd.exe")){
                    killProc("cmd.exe");
                }
                if(findProcess("calc.exe")){
                    killProc("calc.exe");
                }
                /**************************判断是否支持桌面API**************************/
                if (Desktop.isDesktopSupported()) {                //支持
                    Desktop.getDesktop().open(new File(filePath));    //打开bat文件(弹出CMD窗口)
                    System.out.println("启动计算器中。。。");
                } else {                                            //不支持
                    executeCmd(command);                            //执行CMD命令
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

     

    运行结果:

     

    test.bat文件内容:start calc.exe

    展开全文
  • 搞定BAT Java面试题

    千次阅读 2017-11-14 21:25:01
    下面就Java常见的面试题做一个简单的总结,一句话掌握这些面试题,搞定BAT不是梦。 基本概念 操作系统中 heap 和 stack 的区别; 什么是基于注解的切面实现; 什么是 对象/关系 映射集成模块; 什么是 Java ...

    下面就Java常见的面试题做一个简单的总结,一句话掌握这些面试题,搞定BAT不是梦。

    基本概念

    操作系统中 heap 和 stack 的区别;

    什么是基于注解的切面实现;

    什么是 对象/关系 映射集成模块;

    什么是 Java 的反射机制;

    什么是 ACID;

    BS与CS的联系与区别;

    Cookie 和 Session的区别;

    fail-fast 与 fail-safe 机制有什么区别;

    get 和 post请求的区别;

    Interface 与 abstract 类的区别;

    IOC的优点是什么;

    IO 和 NIO的区别,NIO优点;

    Java 8 / Java 7 为我们提供了什么新功能;

    什么是竞态条件? 举个例子说明。

    JRE、JDK、JVM 及 JIT 之间有什么不同;

    MVC的各个部分都有那些技术来实现?如何实现?

    RPC 通信和 RMI 区别;

    什么是 Web Service(Web服务);

    JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。

    WEB容器主要有哪些功能? 并请列出一些常见的WEB容器名字。

    一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制;

    简单说说你了解的类加载器。是否实现过类加载器;

    解释一下什么叫AOP(面向切面编程);

    请简述 Servlet 的生命周期及其相关的方法;

    请简述一下 Ajax 的原理及实现步骤;

    简单描述Struts的主要功能;

    什么是 N 层架构;

    什么是CORBA?用途是什么;

    什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”。

    什么是正则表达式?用途是什么?哪个包使用正则表达式来实现模式匹配。

    什么是懒加载(Lazy Loading)。

    什么是尾递归,为什么需要尾递归。

    什么是控制反转(Inversion of Control)与依赖注入(Dependency Injection)。

    关键字

    什么是finalize()方法

    请解释下finalize

    finalize()方法什么时候被调用

    析构函数(finalization)的目的是什么

    final 和 finalize 的区别

    final关键字有哪些用法

    final 与 static 关键字可以用于哪里?它们的作用是什么

    final, finally, finalize的区别

    final、finalize 和 finally 的不同之处?

    能否在运行时向 static final 类型的赋值

    使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变

    一个类被声明为final类型,表示了什么意思

    throws, throw, try, catch, finally分别代表什么意义

    Java 有几种修饰符?分别用来修饰什么

    volatile

    volatile 修饰符的有过什么实践

    volatile 变量是什么?volatile 变量和 atomic 变量有什么不同

    volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗

    能创建 volatile 数组吗?

    transient变量有什么特点

    super什么时候使用

    public static void 写成 static public void会怎样。

    static class 与 non static class的区别。

    static 关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法。

    静态类型有什么特点。

    main() 方法为什么必须是静态的?能不能声明 main() 方法为非静态。

    switch

    switch 语句中的表达式可以是什么类型数据。

    switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上。

    while 循环和 do 循环有什么不同。

    操作符。

    &操作符和&&操作符有什么区别?

    a = a + b 与 a += b 的区别?

    逻辑操作符 (&,|,^)与条件操作符(&&,||)的区别。

    3*0.1 == 0.3 将会返回什么?true 还是 false?

    float f=3.4; 是否正确?

    short s1 = 1; s1 = s1 + 1;有什么错?

    数据结构

    基础类型(Primitives)。

    基础类型(Primitives)与封装类型(Wrappers)的区别在哪里。

    简述九种基本数据类型的大小,以及他们的封装类。

    int 和 Integer 哪个会占用更多的内存? int 和 Integer 有什么区别?parseInt()函数在什么时候使用到。

    float和double的默认值是多少。

    如何去小数四舍五入保留小数点后两位。

    char 型变量中能不能存贮一个中文汉字,为什么。

    类型转换

    怎样将 bytes 转换为 long 类型。

    怎么将 byte 转换为 String。

    如何将数值型字符转换为数字。

    我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象。

    能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量吗。

    类型向下转换是什么。

    数组

    如何权衡是使用无序的数组还是有序的数组。

    怎么判断数组是 null 还是为空。

    怎么打印数组? 怎样打印数组中的重复元素。

    Array 和 ArrayList有什么区别?什么时候应该使用Array而不是ArrayList。

    数组和链表数据结构描述,各自的时间复杂度。

    数组有没有length()这个方法? String有没有length()这个方法。

    队列

    队列和栈是什么,列出它们的区别。

    BlockingQueue是什么。

    简述 ConcurrentLinkedQueue LinkedBlockingQueue 的用处和不同之处。

    ArrayList、Vector、LinkedList的存储性能和特性。

    String

    StringBuffer。

    ByteBuffer 与 StringBuffer有什么区别。

    HashMap。

    HashMap的工作原理是什么。

    内部的数据结构是什么。

    HashMap 的 table的容量如何确定?loadFactor 是什么? 该容量如何变化?这种变化会带来什么问题?

    HashMap 实现的数据结构是什么?如何实现。

    HashMap 和 HashTable、ConcurrentHashMap 的区别。

    HashMap的遍历方式及效率。

    HashMap、LinkedMap、TreeMap的区别。

    如何决定选用HashMap还是TreeMap。

    如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办。

    HashMap 是线程安全的吗?并发下使用的 Map 是什么,它们内部原理分别是什么,比如存储方式、 hashcode、扩容、 默认容量等。

    HashSet

    HashSet和TreeSet有什么区别。

    HashSet 内部是如何工作的。

    WeakHashMap 是怎么工作的?

    Set

    Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()? 它们有何区别?

    TreeMap:TreeMap 是采用什么树实现的?TreeMap、HashMap、LindedHashMap的区别。TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?

    TreeSet:一个已经构建好的 TreeSet,怎么完成倒排序。

    EnumSet 是什么?

    Hash算法

    Hashcode 的作用。

    简述一致性 Hash 算法。

    有没有可能 两个不相等的对象有相同的 hashcode?当两个对象 hashcode 相同怎么办?如何获取值对象。

    为什么在重写 equals 方法的时候需要重写 hashCode 方法?equals与 hashCode 的异同点在哪里。

    a.hashCode() 有什么用?与 a.equals(b) 有什么关系。

    hashCode() 和 equals() 方法的重要性体现在什么地方。

    Object:Object有哪些公用方法?Object类hashcode,equals 设计原则? sun为什么这么设计?Object类的概述。

    如何在父类中为子类自动完成所有的 hashcode 和 equals 实现?这么做有何优劣。

    可以在 hashcode() 中使用随机数字吗?

    LinkedHashMap。

    LinkedHashMap 和 PriorityQueue 的区别是什么。

    List

    List, Set, Map三个接口,存取元素时各有什么特点。

    List, Set, Map 是否继承自 Collection 接口。

    遍历一个 List 有哪些不同的方式。

    LinkedList

    LinkedList 是单向链表还是双向链表

    LinkedList 与 ArrayList 有什么区别

    描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?

    插入数据时,ArrayList, LinkedList, Vector谁速度较快?

    ArrayList

    ArrayList 和 HashMap 的默认大小是多数

    ArrayList 和 LinkedList 的区别,什么时候用 ArrayList?

    ArrayList 和 Set 的区别?

    ArrayList, LinkedList, Vector的区别。

    ArrayList是如何实现的,ArrayList 和 LinkedList 的区别。

    ArrayList如何实现扩容。

    Array 和 ArrayList 有何区别?什么时候更适合用Array。

    说出ArraList,Vector, LinkedList的存储性能和特性。

    Map

    Map, Set, List, Queue, Stack的联系和区别。

    Map 接口提供了哪些不同的集合视图。

    为什么 Map 接口不继承 Collection 接口。

    Collections

    介绍Java中的Collection FrameWork。集合类框架的基本接口有哪些

    Collections类是什么?Collection 和 Collections的区别?Collection、Map的实现

    集合类框架的最佳实践有哪些

    为什么 Collection 不从 Cloneable 和 Serializable 接口继承

    说出几点 Java 中使用 Collections 的最佳实践?

    Collections 中 遗留类 (HashTable、Vector) 和 现有类的区别

    什么是 B+树,B-树,列出实际的使用场景。

    接口

    Comparator 与 Comparable 接口是干什么的?说出它们的区别。

    对象

    拷贝(clone)。

    如何实现对象克隆。

    深拷贝和浅拷贝区别。

    深拷贝和浅拷贝如何实现激活机制。

    写clone()方法时,通常都有一行代码,是什么。

    构造器

    构造器链是什么。

    创建对象时构造器的调用顺序。

    不可变对象。

    什么是不可变象(immutable object)。

    为什么 Java 中的 String 是不可变的(Immutable)。

    如何构建不可变的类结构?关键点在哪里。

    能创建一个包含可变对象的不可变对象吗。

    如何对一组对象进行排序。

    方法

    构造器(constructor)是否可被重写(override)

    方法可以同时即是 static 又是 synchronized 的吗

    abstract 的 method是否可同时是 static,是否可同时是 native,是否可同时是synchronized

    Java支持哪种参数传递类型

    一个对象被当作参数传递到一个方法,是值传递还是引用传递

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

    我们能否重载main()方法。

    如果main方法被声明为private会怎样。

    垃圾回收

    GC是什么?为什么要有GC

    什么时候会导致垃圾回收

    GC是怎么样运行的

    新老以及永久区是什么

    GC 有几种方式?怎么配置

    什么时候一个对象会被GC? 如何判断一个对象是否存活

    System.gc() Runtime.gc()会做什么事情? 能保证 GC 执行吗

    垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

    Minor GC 、Major GC、Young GC 与 Full GC分别在什么时候发生

    垃圾回收算法的实现原理

    如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?

    垃圾回收的最佳做法是什么

    GC收集器有哪些

    垃圾回收器的基本原理是什么?

    串行(serial)收集器和吞吐量(throughput)收集器的区别是什么

    Serial 与 Parallel GC之间的不同之处

    CMS 收集器 与 G1 收集器的特点与区别

    CMS垃圾回收器的工作过程

    JVM 中一次完整的 GC 流程是怎样的? 对象如何晋升到老年代

    吞吐量优先和响应优先的垃圾收集器选择

    GC策略

    举个实际的场景,选择一个GC策略

    JVM的永久代中会发生垃圾回收吗?

    垃圾回收算法

    标记清除、标记整理、复制算法的原理与特点?分别用在什么地方

    如果让你优化收集方法,有什么思路

    JVM

    参数

    说说你知道的几种主要的jvm 参数

    -XX:+UseCompressedOops 有什么作用

    类加载器(ClassLoader)

    Java 类加载器都有哪些

    JVM如何加载字节码文件

    内存管理

    JVM内存分哪几个区,每个区的作用是什么

    一个对象从创建到销毁都是怎么在这些部分里存活和转移的

    解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法

    JVM中哪个参数是用来控制线程的栈堆栈小

    简述内存分配与回收策略

    简述重排序,内存屏障,happen-before,主内存,工作内存

    Java中存在内存泄漏问题吗?请举例说明

    简述 Java 中软引用(SoftReferenc)、弱引用(WeakReference)和虚引用

    内存映射缓存区是什么

    jstack,jstat,jmap,jconsole怎么用

    32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?32 位和 64 位的 JVM,int 类型变量的长度是多数?

    怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位

    JVM自身会维护缓存吗?是不是在堆中进行对象分配,操作系统的堆还是JVM自己管理堆

    什么情况下会发生栈内存溢出

    双亲委派模型是什么

    线程

    什么是线程

    多线程的优点

    多线程的几种实现方式

    用 Runnable 还是 Thread

    什么是线程安全

    Vector, SimpleDateFormat 是线程安全类吗

    什么 Java 原型不是线程安全的

    哪些集合类是线程安全的

    多线程中的忙循环是什么

    如何创建一个线程

    编写多线程程序有几种实现方式

    什么是线程局部变量

    线程和进程有什么区别?进程间如何通讯,线程间如何通讯

    什么是多线程环境下的伪共享(false sharing)

    同步和异步有何异同,在什么情况下分别使用他们?举例说明。

    启动一个线程是调用 run() 还是 start() 方法?start() 和 run() 方法有什么区别

    调用start()方法时会执行run()方法,为什么不能直接调用run()方法

    sleep() 方法和对象的 wait() 方法都可以让线程暂停执行,它们有什么区别

    yield方法有什么作用?sleep() 方法和 yield() 方法有什么区别

    Java 中如何停止一个线程

    stop() 和 suspend() 方法为何不推荐使用

    如何在两个线程间共享数据

    如何强制启动一个线程

    如何让正在运行的线程暂停一段时间

    什么是线程组,为什么在Java中不推荐使用

    你是如何调用 wait(方法的)?使用 if 块还是循环?为什么

    生命周期

    有哪些不同的线程生命周期

    线程状态,BLOCKED 和 WAITING 有什么区别

    画一个线程的生命周期状态图

    ThreadLocal 用途是什么,原理是什么,用的时候要注意什么

    ThreadPool

    线程池是什么?为什么要使用它

    如何创建一个Java线程池

    ThreadPool用法与优势

    提交任务时,线程池队列已满时会发会生什么

    newCache 和 newFixed 有什么区别?简述原理。构造函数的各个参数的含义是什么,比如 coreSize, maxsize 等

    线程池的实现策略

    线程池的关闭方式有几种,各自的区别是什么

    线程池中submit() 和 execute()方法有什么区别?

    线程调度

    Java中用到的线程调度算法是什么

    什么是多线程中的上下文切换

    你对线程优先级的理解是什么

    什么是线程调度器 (Thread Scheduler) 和时间分片 (Time Slicing)。

    Java Concurrency API 中 的 Lock 接口是什么?对比同步它有什么优势

    Lock 与 Synchronized 的区别?Lock 接口比 synchronized 块的优势是什么

    ReadWriteLock是什么?

    锁机制有什么用。

    什么是乐观锁(Optimistic Locking)?如何实现乐观锁?如何避免ABA问题。

    解释以下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁。

    什么时候应该使用可重入锁。

    简述锁的等级方法锁、对象锁、类锁。

    Java中活锁和死锁有什么区别?

    什么是死锁(Deadlock)?导致线程死锁的原因?如何确保 N 个线程可以访问 N 个资源同时又不导致死锁

    死锁与活锁的区别,死锁与饥饿的区别

    怎么检测一个线程是否拥有锁

    如何实现分布式锁。

    有哪些无锁数据结构,他们实现的原理是什么。

    读写锁可以用于什么应用场景。

    Executors类是什么? Executor和Executors的区别。

    什么是Java线程转储(Thread Dump),如何得到它。

    如何在Java中获取线程堆栈。

    说出 3 条在 Java 中使用线程的最佳实践。

    在线程中你怎么处理不可捕捉异常。

    实际项目中使用多线程举例。你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的。

    请说出与线程同步以及线程调度相关的方法。

    程序中有3个 socket,需要多少个线程来处理。

    假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有 10 个线程同时调用它,如何做到。

    如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长。

    如何确保 main() 方法所在的线程是 Java 程序最后结束的线程。

    非常多个线程(可能是不同机器),相互之间需要等待协调才能完成某种工作,问怎么设计这种协调方案。

    你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它。

    异常

    Error 和 Exception有什么区别

    UnsupportedOperationException是什么

    NullPointerException 和 ArrayIndexOutOfBoundException 之间有什么相同之处

    什么是受检查的异常,什么是运行时异常

    运行时异常与一般异常有何异同

    简述一个你最常见到的runtime exception(运行时异常)

    finally

    finally关键词在异常处理中如何使用

    如果执行finally代码块之前方法返回了结果,或者JVM退出了,finally块中的代码还会执行吗

    try里有return,finally还执行么?那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后

    在什么情况下,finally语句不会执行

    throw 和 throws 有什么区别?

    OOM你遇到过哪些情况?你是怎么搞定的?

    SOF你遇到过哪些情况?

    既然我们可以用RuntimeException来处理错误,那么你认为为什么Java中还存在检查型异常

    当自己创建异常类的时候应该注意什么

    导致空指针异常的原因

    异常处理 handle or declare 原则应该如何理解

    怎么利用 JUnit 来测试一个方法的异常

    catch块里别不写代码有什么问题

    你曾经自定义实现过异常吗?怎么写的

    什么是 异常链

    在try块中可以抛出异常吗?

    rxjava中map和flatmap 有什么区别?
    答:map,是把发射对象转成另外一个对象发射出去;flatMap, 是把发射对象转成另外一个Observable,进而把这个Observable发射的对象发射出去

    序列化

    什么是序列化?如何实现 Java 序列化及注意事项

    Serializable 与 Externalizable 的区别

    Socket

    socket 选项 TCP NO DELAY 是指什么

    Socket 工作在 TCP/IP 协议栈是哪一层

    TCP、UDP 区别及 Java 实现方式

    说几点 IO 的最佳实践

    直接缓冲区与非直接缓冲器有什么区别?

    怎么读写 ByteBuffer?ByteBuffer 中的字节序是什么

    当用System.in.read(buffer)从键盘输入一行n个字符后,存储在缓冲区buffer中的字节数是多少

    如何使用扫描器类(Scanner Class)令牌化

    面向对象编程(OOP)

    解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)

    多态的实现原理

    封装、继承和多态是什么

    对象封装的原则是什么?

    泛型

    泛型的存在是用来解决什么问题

    泛型的常用特点

    List能否转为List

    反射

    反射机制提供了什么功能?

    反射是如何实现的

    哪里用到反射机制

    反射中 Class.forName 和 ClassLoader 区别

    反射创建类实例的三种方式是什么

    如何通过反射调用对象的方法

    如何通过反射获取和设置对象私有字段的值

    反射机制的优缺点

    设计模式

    什么是设计模式(Design Patterns)?你用过哪种设计模式?用在什么场合

    你知道哪些商业级设计模式?

    哪些设计模式可以增加系统的可扩展性。

    除了单例模式,你在生产环境中还用过什么设计模式?

    如何创建线程安全的 Singleton。

    适配器模式是什么?什么时候使用

    适配器模式和代理模式之前有什么不同

    适配器模式和装饰器模式有什么区别

    什么时候使用享元模式

    什么时候使用组合模式

    什么时候使用访问者模式

    什么是模板方法模式

    场景应用

    线上系统突然变得异常缓慢,你如何查找问题

    什么样的项目不适合用框架

    新浪微博是如何实现把微博推给订阅者

    简要介绍下从浏览器输入 URL 开始到获取到请求界面之后 Java Web 应用中发生了什么

    请你谈谈SSH整合

    高并发下,如何做到安全的修改同一行数据

    12306网站的订票系统如何实现,如何保证不会票不被超卖

    网站性能优化如何优化的。

    请思考一个方案,实现分布式环境下的 countDownLatch

    请思考一个方案,设计一个可以控制缓存总体大小的自动适应的本地缓存

    在你的职业生涯中,算得上最困难的技术挑战是什么

    如何写一篇设计文档,目录是什么

    大写的O是什么?举几个例子

    编程中自己都怎么考虑一些设计原则的,比如开闭原则,以及在工作中的应用

    解释一下网络应用的模式及其特点

    设计一个在线文档系统,文档可以被编辑,如何防止多人同时对同一份文档进行编辑更新

    说出数据连接池的工作机制是什么

    怎么获取一个文件中单词出现的最高频率。

    重构技巧

    你使用什么版本管理工具?分支(Branch)与标签(Tag)之间的区别在哪里

    你有了解过存在哪些反模式(Anti-Patterns)吗

    你用过的网站前端优化的技术有哪些

    如何分析Thread dump

    你如何理解AOP中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念

    你是如何处理内存泄露或者栈溢出问题的

    你们线上应用的 JVM 参数有哪些

    怎么提升系统的QPS和吞吐量。

    新知识和技术

    解释什么是 MESI 协议(缓存一致性)

    谈谈 reactor 模型

    Java 9 带来了怎样的新功能

    Java 与 C++ 对比,C++ 或 Java 中的异常处理机制的简单原理和应用

    简单讲讲 Tomcat 结构,以及其类加载器流程

    虚拟内存是什么

    阐述下 SOLID 原则

    请简要讲一下你对测试驱动开发(TDD)的认识

    Linux

    Linux 下 IO 模型有几种,各自的含义是什么。

    Linux 系统下你关注过哪些内核参数,说说你知道的

    Linux 下用一行命令查看文件的最后五行

    平时用到哪些 Linux 命令

    用一行命令输出正在运行的 Java 进程

    使用什么命令来确定是否有 Tomcat 实例运行在机器上

    什么是 N+1 难题

    什么是 paxos 算法

    什么是 restful,讲讲你理解的 restful

    什么是 zab 协议

    什么是领域模型(domain model)?贫血模型(anaemic domain model) 和充血模型(rich domain model)有什么区别

    什么是领域驱动开发(Domain Driven Development)

    介绍一下了解的 Java 领域的 Web Service 框架

    Web Server、Web Container 与 Application Server 的区别是什么

    微服务(MicroServices)与巨石型应用(Monolithic Applications)之间的区别在哪里

    描述 Cookie 和 Session 的作用,区别和各自的应用范围,Session工作原理

    你常用的持续集成(Continuous Integration)、静态代码分析(Static Code Analysis)工具有哪些

    简述下数据库正则化(Normalizations)

    KISS,DRY,YAGNI 等原则是什么含义

    分布式事务的原理,优缺点,如何使用分布式事务?

    布式集群下如何做到唯一序列号。

    网络

    HTTPS 的加密方式是什么,讲讲整个加密解密流程

    HTTPS和HTTP的区别

    HTTP连接池实现原理

    HTTP集群方案

    Nginx、lighttpd、Apache三大主流 Web服务器的区别

    是否看过框架的一些代码

    持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些

    数值提升是什么

    你能解释一下里氏替换原则吗

    你是如何测试一个应用的?知道哪些测试框架

    传输层常见编程协议有哪些?并说出各自的特点。

    算法及编程

    问题1

    加班10小时以下加班费是时薪的1.5倍。加班10小时或以上,按4元/时算。提示:(一个月工作26天,一天正常工作8小时)

    计算1000月薪,加班9小时的加班费

    计算2500月薪,加班11小时的加班费

    计算1000月薪,加班15小时的加班费

    问题2

    50个人围坐一圈,当数到三或者三的倍数出圈,问剩下的人是谁,原来的位置是多少

    实现一个电梯模拟器用

    写一个冒泡排序

    写一个折半查找

    随机产生20个不能重复的字符并排序

    写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组

    写一段代码在遍历 ArrayList 时移除一个元素

    古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

    展开全文
  • I am running some java apps and I need to shutdown/close all apps gracefully from windows bat script.So my question is:How to invoke shutdown hook by windows bat script and gracefully shutdown java pr...
  • Java环境下调用bat脚本实现杀死Windows进程: 一、编写bat脚本  一般使用taskkill或者ntsd来杀死进程。可以指定具体的PID和进程名来完成,可在Windows的Win+R 的cmd下输入:  taskkill /? 来查看具体的使用方法。...
  • java环境jdk的bin目录下copy文件javaw.exe为affectivew.exe 脚本如下: @echo off tasklist | find /i "affectivew.exe" && echo [ %time:~,-3% ]存在进程affectivew.exe|| start %JAVA_HOME%\bin\...
  • 近日,在弄一个win10上跑的java程序的时候,经常发现程序卡死的问题。 查了下资料( https://www.bbsmax.com/A/Gkz1DGrdR6/ ),在命令行下点击鼠标的时候,就会进入选择模式,锁住了屏幕,相当于阻塞了主线程。 ...
  • windows 启动停止 java进程

    万次阅读 2017-08-04 14:27:16
    我们一般启动的jar 在任务管理器中查看进程都是javaw.exe ,无法用命令来 kill,所以我们得给自己的java 进程设置个新 title 一:第一种方法 1: 首先将C:\Program Files\Java\jdk1.8.0_45\bin目录下的javaw.exe...
  • java调用bat:如果要和Runtime创建的进程交互,必须自己写交互的代码,例如通过socket,两个java进程互相通信。 Java代码 import java.io.IOException;   public class Main {   public ...
  • java程序关闭bat

    2013-04-17 16:16:27
    java程序中关闭bat用到的。 退出bat
  • shutdown-java.bat

    2020-02-09 15:29:37
    终止系统运行的java进程 主要用于windows系统下某些java运行工具下,集成此脚本进行使用。
  • java操作批处理bat

    2018-03-12 14:53:13
    java调用bat可执行批处理文件:Process process = Runtime.getRuntime().exec(ProxyRestartServerServlet.class.getResource("server.bat").getPath());process.waitFor();java不能向bat传参,可以通过...
  • bat文件如果用java的Runtime.getRuntime().exec(cmd.exe /c cd /d \"D\\:xxxx\" & call update.bat) 用&隔开多指令 如果单只有 update.bat运行的话 经过main方法测试 在update.bat中设置延时,main进程...
  • 方便快捷设置环境变量。运行方式:单击右键,选择"以管理员身份运行",然后输入完整的JDK安装路径就可以了
  • Windows上启动与停止JAVA进程

    千次阅读 2020-11-22 23:38:10
    本案例以 xxx.jar 为例 1、复制 JDK bin 目录下面的 javaw.exe 文件出来, 重命名为 portJar.exe(名字随意)。 2、写一个启动脚本 start.bat ,内容如下 ...如果每次启动进程需要把之前的进程kill掉...
  • Java操作Bat文件,启动Bat

    千次阅读 热门讨论 2016-09-14 16:27:25
    这时候会选择使用Windows任务计划或者程序启动,但是Windows任务计划往往会出现这种那种情况,而导致该.bat文件不能按时启动,这样就需要借助某些程序了,这里我将分享如何使用Java启动.bat文件。package com.app;...
  • windows关闭所有java进程

    千次阅读 2020-08-12 18:23:05
    将一下代码保存至文件,文件后缀设置成bat双击即可 taskkill /F /IM java.exe
  • Java使用runTime类,开子进程调用一个bat文件, 但是bat文件里的cd命令不能正常执行怎么办?
  • 通过bat脚本停止java进程的三个方法 vaccine-start.bat title 疫苗接种-vaccine-api java -Dfile.encoding=utf-8 -jar vaccine.jar --server.port=1035 --spring.profiles.active=comm,dev vaccine-stop.bat @echo...
  • window平台使用bat批处理实现进程守护需要用到如下一些知识: 一、批处理实现延时一段时间 Windows下批处理文件没有像Linux一样的Sleep函数进行延时处理,这里有2种较为实用的方法实现延迟: 1、使用WScirpt的sleep...
  • 下面的脚本可以通过jps查询到具体进程,然后关闭该进程,最后一行脚本是重启该应用,下面一段脚本可以用于windows上重新发包功能 @echo off set char=smp-0.0.1-SNAPSHOT.jar echo char : %char% set pid= for /f ...
  • Java 项目 .bat文件启动 设置编码 -Dfile.encoding=UTF-8 案例 java -Xdebug -Dfile.encoding=UTF-8 -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=2001 application.GateMain Tomcat项目 bat...
  • 之前想着在windows下和linux下调用一些python Scrapy的接口,发现路径问题,传参数问题都挺麻烦,遂改为在bat文件和shell中具体写方法,然后执行他们就好了 1.执行bat脚本 (1)传入参数 bat处理文件中可引用的参数...
  • 启动一个Java进程

    千次阅读 2016-11-24 13:51:46
    windows版本 startup.bat -------------------------------------------------------- rem --------------------------------------------------------------------------- rem Start SMS Server by ...
  • @echo on taskkill /f /fi "imagename eq java.exe" pause 文件文件夹,并修改文件拓展名为bat即可

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,541
精华内容 10,216
关键字:

batjava进程目录

java 订阅