精华内容
下载资源
问答
  • java获取其他应用程序的窗口控件
    千次阅读
    2019-06-02 11:16:38

    该文章转自:https://me.csdn.net/devmiao 大神的回答。

    转自:https://ask.csdn.net/questions/713450 问答。

    比如现在有一个桌面应用。我现在要抓取这个桌面应用输入框或者其他控件的内容

    问题背景:
    我的毕业设计中需要在Windows平台上面跨进程操作窗口。实际上是获取浏览器上面的网页中的文本框元素,还有windows32窗体上面的编辑框。然后进行自动填值等的操作。

    我能想到的一共有这么几种方法:

    使用C#编写窗体应用程序,然后使用WebBrowser浏览器控件或者嵌入其他应用程序窗口。如果使用WebBrowser控件,只能强制用户使用该C#应用程序上网,影响用户体验,不切实际。如果使用嵌入其他应用程序窗口的方式,其实就转化为了跨进程获取窗口的方法了。

    使用浏览器插件的方式,针对不同浏览器编写不同插件,然后让用户安装。当浏览器页面载入后,使用驻留程序(这是我毕设的核心进程)向浏览器发消息,执行浏览器插件中的JS代码操作网页DOM元素。但是缺点是需要编写很多插件,且调试起来,真正执行起来很艰难。

    先使用远程线程注入到目标进程的线程空间,创建一个虚拟线程,然后执行这个虚拟线程,向拥有这个窗口的界面线程发送消息。实际上这个方法和上面的方法大同小异。只不过进程注入行为会被用户系统的安全机制检测到,类似360安全卫士这种神经质的安全软件会让用户把我们的程序查杀掉。另外需要针对各种浏览器,各种程序窗体做特定的分析处理,代价太大,而我只不过是完成一个毕设,没必要用牛刀吧。

    使用模拟用户操作方式。先拿简单的方法说,很多脚本语言例如在Windows上面的VBS脚本执行时会启动WScript驻留进程,使用VBS的 sendKey 命令可以模拟用户的输入,甚至VBS能模拟用户鼠标的点击。还可以使用Python,JS(需要先让用户下载python)等都可以。他们的核心其实都是调用Windows系统API来完成功能,从结构上来看都是要运行一个本地即时解释器,它可以调用WindowsAPI,然后解释脚本执行操作。再说深层次一点就是先获取目标窗口的句柄,然后对该窗体的消息处理队列发送WM_SET_TEXT,WM_GET_TEXT,WM_EXIT等各种消息。
    本文考虑到毕设需要具有跨平台的特性,并且最好能够兼容各种不同版本的Windows。因此使用Java语言的JNA包提供的方便的功能调用WindowsAPI。而是用JNI也可以。只不过还要编写DLL,编译再加调试,会浪费很长时间。如果不是针对特定问题,使用成熟的JNA况且会帮助你解决低层调用的各种问题,何乐而不为呢。

    摘取一些JNA简介:
    JNA提供Java程序轻松访问本机共享库,而不需要编写任何Java代码 - 不需要JNI或本机代码。这个功能与Windows的Platform / Invoke和Python的ctypes类似。
    JNA允许您使用Java的方法调用来直接调用本机函数。调用看起来就像本机代码中的调用一样。大多数的方法调用不需要特殊的处理或配置。
    JNA使用一个小的JNI库存根来动态调用本地代码。开发人员使用Java接口描述目标本机库中的函数和结构。这使得很容易利用本机平台功能,而不会导致为多个平台配置和构建JNI代码的高开销。
    因此,JNA提供了相比较性能来说更关注平台适应以及便利性,节省使用者需要面对多版本,多平台开发程序的时间。

    除了Windows, JNA还支持多种其他的平台。例如ARM,安卓,Linux等。
    JNA可以通过Maven包管理下载。

    		<dependency>
    			<groupId>net.java.dev.jna</groupId>
    			<artifactId>jna</artifactId>
    			<version>4.4.0</version>
    		</dependency>
    		<dependency>
    			<groupId>net.java.dev.jna</groupId>
    			<artifactId>jna-platform</artifactId>
    			<version>4.4.0</version>
    		</dependency>

    如果不适用Maven管理包,可以自己下载下面的两个包放到项目中:

    http://repo1.maven.org/maven2/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar
    http://repo1.maven.org/maven2/net/java/dev/jna/jna-platform/4.4.0/jna-platform-4.4.0.jar

    这个是必备的参考文档:

    http://java-native-access.github.io/jna/4.4.0/javadoc/

    JNA的GitHub地址:

    https://github.com/java-native-access/jna#readme

    为了示范其简单性,看下面的代码。

    import com.sun.jna.platform.win32.User32;
    import com.sun.jna.platform.win32.WinDef.HWND;
    import com.sun.jna.platform.win32.WinUser;
    /**
    
    Created by lenovo on 2017/4/27.
    使用winID来获得窗口的类型和标题,然后发送消息或者其他操作
    *
    */
    public class jnaTest {
    public static void main(String[] args) {
    
        HWND hwnd = User32.INSTANCE.FindWindow
            (null, "QQ"); // 第一个参数是Windows窗体的窗体类,第二个参数是窗体的标题。不熟悉windows编程的需要先找一些Windows窗体数据结构的知识来看看,还有windows消息循环处理,其他的东西不用看太多。
    if (hwnd == null) {
        System.out.println("QQ is not running");
    }else{
        User32.INSTANCE.ShowWindow(hwnd, 9 );        // SW_RESTORE
        User32.INSTANCE.SetForegroundWindow(hwnd);   // bring to front
    
        //User32.INSTANCE.GetForegroundWindow() //获取现在前台窗口
        WinDef.RECT qqwin_rect = new  WinDef.RECT();
        User32.INSTANCE.GetWindowRect(hwnd, qqwin_rect);
        int qqwin_width = qqwin_rect.right-qqwin_rect.left;
        int qqwin_height = qqwin_rect.bottom-qqwin_rect.top;
    
        User32.INSTANCE.MoveWindow(hwnd, 700, 100, qqwin_width, qqwin_height, true);
        for(int i = 700; i > 100; i -=10) {
            User32.INSTANCE.MoveWindow(hwnd, i, 100, qqwin_width, qqwin_height, true);   // bring to front
            try {
                Thread.sleep(80);
            }catch(Exception e){}
        }
        //User32.INSTANCE.PostMessage(hwnd, WinUser.WM_CLOSE, null, null);  // can be WM_QUIT in some occasio
    }
    }

    //在Windows中,User32.dll文件拥有大量的操作用户界面的API。可以看到JNA在包命名上也遵照了DLL的命名规律。
    如果我们事先打开QQ程序的登陆界面,当我们运行上面的程序时,就会将QQ登陆窗体置于前台显示同时将他从屏幕的右边移动到屏幕的左面。
    另外,学过windows编程的都知道,一个windows32程序一般都会有自己独有的窗体类,即叫做 Window Class,例如 windows下的图片查看器的主窗口类为"Photo_lightweight_Viewer", 记事本窗口的窗体类叫做"Notepad"。一个窗口类是一个窗体风格,程序中可以定义多个窗体类。当然,WIndows32程序也可以使用其他程序的窗体类。上面的 FindWindow 函数的第一个参数可以传入一个窗体类名,这样可以缩小低层JNA调用 FindWindowEX 函数查找的范围。对于Windows窗体的信息,可以使用 WinID 这个软件来查询。VS编程的同学可以使用Spy++工具查看。

    下面来解决我上面说的主要问题:

    import com.sun.jna.platform.win32.BaseTSD;
    import com.sun.jna.platform.win32.User32;
    import com.sun.jna.platform.win32.WinDef;
    import com.sun.jna.platform.win32.WinUser;
    
    /**
    
    Created by lenovo on 2017/4/27.
    使用winID来获得窗口的类型和标题,然后发送消息或者其他操作
    *
    */
    public class jnaTest {
    public static void main(String[] args) {
    
    WinDef.HWND hwnd = User32.INSTANCE.FindWindow
            (null, "QQ"); // 第一个参数是Windows窗体的窗体类,第二个参数是窗体的标题。不熟悉windows编程的需要先找一些Windows窗体数据结构的知识来看看,还有windows消息循环处理,其他的东西不用看太多。
    if (hwnd == null) {
        System.out.println("Excel is not running");
    }
    else{
        User32.INSTANCE.ShowWindow(hwnd, 9 );        // SW_RESTORE
        User32.INSTANCE.SetForegroundWindow(hwnd);   // bring to front
    
        String username = "yourQQnumber";
        for(Character c: username.toCharArray())
        sendChar(c);
    }
    }
    
    static WinUser.INPUT input = new WinUser.INPUT( );
    static void sendChar(char ch){
    
    input.type = new WinDef.DWORD( WinUser.INPUT.INPUT_KEYBOARD );
    input.input.setType("ki"); // Because setting INPUT_INPUT_KEYBOARD is not enough: https://groups.google.com/d/msg/jna-users/NDBGwC1VZbU/cjYCQ1CjBwAJ
    input.input.ki.wScan = new WinDef.WORD( 0 );
    input.input.ki.time = new WinDef.DWORD( 0 );
    input.input.ki.dwExtraInfo = new BaseTSD.ULONG_PTR( 0 );
    // Press
    input.input.ki.wVk = new WinDef.WORD( Character.toUpperCase(ch) ); // 0x41
    input.input.ki.dwFlags = new WinDef.DWORD( 0 );  // keydown
    
    User32.INSTANCE.SendInput( new WinDef.DWORD( 1 ), ( WinUser.INPUT[] ) input.toArray( 1 ), input.size() );
    
    // Release
    input.input.ki.wVk = new WinDef.WORD( Character.toUpperCase(ch) ); // 0x41
    input.input.ki.dwFlags = new WinDef.DWORD( 2 );  // keyup
    
    User32.INSTANCE.SendInput( new WinDef.DWORD( 1 ), ( WinUser.INPUT[] ) input.toArray( 1 ), input.size() );
    }
    }
    • 注意,使用前需要先选定目标焦点。

    参考网站:
    http://www.rgagnon.com/topics/java-jni.html 这个网站上有几个JNA的实例,熟悉Windows窗体编程的朋友们看起来应该很容易。
    https://github.com/java-native-access/jna#readme
    http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html 这个是新加坡理工大学的网站,想入门JNI的可以去看看。
    http://stackoverflow.com/questions/28538234/sending-a-keyboard-input-with-java-jna-and-sendinput 包含sendkey方法的使用
    https://coderanch.com/t/635463/java/JNA-SendInput-function 包含sendkey方法的使用

    感谢强大的谷歌

    更多相关内容
  • Java程序是如何执行CMD命令的,就是需要RunTime、Process类而已。 具体代码在文档中
  • JAVA 实现Windows下切换窗口到指定的应用程序,具体实现及code
  • Win7系统运行java时出现提示应用程序已安全设置被阻止,这样就导致运行java失败,那么怎样解决运行java提示应用程序已安全设置被阻止呢?下面跟着学习啦小编来一起了解下吧。解决运行java提示应用程序已安全设置被阻止...

    Win7系统运行java时出现提示应用程序已安全设置被阻止,这样就导致运行java失败,那么怎样解决运行java提示应用程序已安全设置被阻止呢?下面跟着学习啦小编来一起了解下吧。

    解决运行java提示应用程序已安全设置被阻止方法

    5666c935a8c95b2845dcf46c0ac39cf6.png

    1、点击:开始-控制面板,选择查看方式为:大图标或小图标;

    146039d4f791703697e8159811ce7210.png

    2、双击java,选择“安全”,把“安全级别”降至“中”,点击“确定”;

    f94f1ff410820942cc3d85a205d94505.png

    3、重启浏览器,运行java,在弹出的对话框中,点击“运行”即可;

    b1922e017a5847f9e98d464f180d0205.png

    4、如果不能完成上述操作,提示需要提升权限,请参阅:怎样才能删除Win7多余的开机启动项中的5、提升权限

    如果不能提升权限;

    5、切换用户,如:xym原来是普通用户,要提升到管理员,不能在xym的用户下提升,只能切换到管理员的用户下,如:只能在lenovo的用户下进行提升;

    493e3f2f5d521c2938212114f1d14a47.png

    6、点击用户xym,选择“管理员”,点击:“更改帐户类型”;

    6e857fa51a5400d9c2afdbe25e756684.png

    7、打开您用的浏览器,“工具- Internet选项”,进行IE设置:Internet选项-->高级 ,在“允许活动内容在我的计算机上的文件中运行”前打上勾,Internet选项-->程序-->管理加载项,找到“Java(tm)Plug……”,勾选“启用”;

    8、如果不想出现“为了有利于保护安全性,Internet 已限制网页运行可以访问计算机的脚本……”;

    9、需要在安全选项-->自定义级别-->Activex控件和插件,勾选“启用”;

    10、最后点击“确定”、“确定”、“确定”。

    关于Win7系统运行java提示“应用程序已安全设置被阻止”的解决方法就介绍完了,按照以上方法设置之后,java就可以正常运行了。

    看过“怎样解决运行java提示应用程序已安全设置被阻止”的人还看了:

    展开全文
  • win10系统不能运行java提示“应用程序已被安全设置被阻止”的图文方法?win10系统有很多人都喜欢使用,我们操作的过程中常常会碰到win10系统不能运行java提示“应用程序已被安全设置被阻止”的问题。如果遇到win10系统...

    win10系统不能运行java提示“应用程序已被安全设置被阻止”的图文方法?

    win10系统有很多人都喜欢使用,我们操作的过程中常常会碰到win10系统不能运行java提示“应用程序已被安全设置被阻止”的问题。如果遇到win10系统不能运行java提示“应用程序已被安全设置被阻止”的问题该怎么办呢?很多电脑水平薄弱的网友不知道win10系统不能运行java提示“应用程序已被安全设置被阻止”究竟该怎么解决?其实不难根据下面的操作步骤就可以解决问题  1、点击win10系统的开始-控制面板,选择查看方式为大图标或小图标,双击java;2、选择“安全”,把“安全级别”降至“中”,点击“确定”;就可以了。下面就有win10下载吧的小编就给朋友们介绍一下win10系统不能运行java提示“应用程序已被安全设置被阻止”详细的操作步骤:

    08b9b98babfe190d76b0a60dd0e04b41.png

    具体方法如下:

    1、点击win10系统的开始-控制面板,选择查看方式为大图标或小图标,双击java;

    12a6a3b2f28c5ad61241c9d7dae2c11a.png

    2、选择“安全”,把“安全级别”降至“中”,点击“确定”;

    c72f1ebb05bc50446cca8d0b5e79ad48.png

    3、重启浏览器,运行java,在弹出的对话框中,点击“运行”即可;

    612676959900bc7dc0ba448c1969d09d.png

    4、如果不能完成上述操作,提示需要提升权限,请参阅:怎样才能删除win10多余的开机启动项中的5、提升权限,如果不能提升权限,往下操作:

    5、切换用户,如:xym原来是普通用户,要提升到管理员,不能在xym的用户下提升,只能切换到管理员的用户下,如:只能在lenovo的用户下进行提升;

    d3969710081f2f54858b4e639a9599b3.png

    6、点击用户xym,选择“管理员”,点击“更改帐户类型”;

    bfebaaecf3777af4f40e4e345d223133.png

    7、打开您用的浏览器,“工具- internet选项”,进行iE设置:

    internet选项-->高级 ,在“允许活动内容在我的计算机上的文件中运行”前打上勾;

    internet选项-->程序-->管理加载项,找到“Java(tm)plug……”,勾选“启用”;

    如果不想出现“为了有利于保护安全性,internet 已限制网页运行可以访问计算机的脚本……”;

    需要在安全选项-->自定义级别-->Activex控件和插件,勾选“启用”;

    8、最后点击确定;

    9、如果还有问题,试试卸载Java,重装Java。

    关于win10不能运行java提示“应用程序已被安全设置被阻止”的解决方法分享到这里了,遇到一样故障问题时,不妨采取教程来解决吧。

    以上就是win10系统不能运行java提示“应用程序已被安全设置被阻止”的图文方法了,也希望戳进来学习的小伙伴们都能找到心仪款式的皮肤。

    展开全文
  • 应用程序已被java安全阻止怎么办

    千次阅读 2021-04-23 05:40:32
    我们经常会通过浏览器来浏览各种网页,然而有时候会遇到各种...3、进入控制面板后,在控制面板中找到JAVA选项,如果找不到可将查看方式切换到大图标或图标即可;4、在JAVA控制面板中打开安全选项,并找到例外站点...

    我们经常会通过浏览器来浏览各种网页,然而有时候会遇到各种提示,例如就有不少

    具体步骤如下:

    1、完成JAVA版本更新,然后刷新有问题的网页页面,以排除JAVA版本问题引起JAVA安全阻止;

    bee395c483d7d0e8a934375396c87511.png

    2、从开始菜单中打开控制面板,我们需要进入控制面板来修改相应的配置;

    e4e0cebabf42ec2301b70d7e01737cdf.png

    3、进入控制面板后,在控制面板中找到JAVA选项,如果找不到可将查看方式切换到大图标或图标即可;

    2a2f79d745d73baef267871894664d33.png

    4、在JAVA控制面板中打开安全选项,并找到例外站点列表;

    533e1316e80cbdd4725df5379b7f1286.png

    5、打开JAVA控制面板中编辑例外站点列表,将我们需要在网页上运行JAVA脚本的站点添加到此列表中;

    7d2920b0c9eed7c569f9dc89d6853b94.png

    6、将需要运行JAVA脚本的站点添加至其中,并对弹出的安全警告点击继续;

    e88e3d2871de8dcc7f7e9ead98405b9a.png

    7、对添加的站点进行确定,然后对JAVA的安全配置进行应用即可;

    0b30cc06897b9a7feb70318892810432.png

    8、重新打开网页或刷新网页,“应用程序已被JAVA安全阻止”的提示就不会再出现了。

    70e9b6b29eab424e4fc3382150280c45.png

    上面给大家讲解的便是win7打开网页提示应用程序已被java安全阻止的详细解决步骤,有遇到一样情况的用户们可以采取上面的方法来进行解决吧。

    展开全文
  • 有关win10系统打开java显示应用程序已安全设置被阻止的操作方法想必大家有所耳闻。但是能够对win10系统打开java显示应用程序已安全设置被阻止进行实际操作的人却不多。其实解决win10系统打开java显示应用程序已安全...
  • Java编程系列】使用Java进行串口SerialPort通讯 【Java编程系列】comet4j服务器推送实现Java编程系列】使用JavaMail通过SMTP协议发送局域网(内网)邮件 【Java编程系列】解决Java获取前端URL中加号(+)被转换成...
  • 深入理解Java并发之synchronized实现原理

    万次阅读 多人点赞 2017-06-04 17:44:44
    【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) ... 出自【zejian的博客】...深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深...
  • Java案例:基于TCP的简单聊天程序

    千次阅读 多人点赞 2022-03-18 13:55:06
    编写C/S架构聊天程序
  • java swing开发窗体程序开发(一)GUI编程

    万次阅读 多人点赞 2019-04-05 21:37:27
    Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视化的界面编辑工具 而是需要像QT一样纯代码式GUI编程。java的好处就是通用性强,跨...
  • java中如何实现多语言切换

    万次阅读 2018-06-04 11:33:36
     数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。Java 中提供了解决这些问题的 API 类(位于 java.util 包和 java.text 包中)...
  • 很多人对Java开发native程序第一反应还停留在暗灰色单一风格的Java GUI界面,开发方式还停留在AWT或者Swing。本文主要基于SpringBoot和JavaFX开发一个Demo给你展示Java Native应用可以做到什么样的程度。当然JavaFX ...
  • Java程序设计以及实验指导 实验笔记

    万次阅读 多人点赞 2021-12-13 21:34:08
    第二章 Java编程基础 一、实验操作 二、遇到的问题及解决方法 三、小结 第三章 类与对象 一、实验操作 二、遇到的问题及解决方法 三、小结 第四章 继承与多态性 一、实验操作 二、遇到的问题及解决办法 ...
  • String TFTP = "tftp\\Tftpd32.exe"; //程序在**当前项目**下的... //启动该应用程序在cmd命令窗口下,敲命令“tasklist /svc”可以查看当前所有线程。 TFTP=“Tftpd32.exe”; //指的是线程 Runtime.getRuntime().exec
  • JAVA实现QQ登录、注册、修改密码等功能(美化版)

    万次阅读 多人点赞 2022-05-12 10:26:24
    本文用Java的==awt组件==、==swing组件==以及=...本文主要应用的技术有:==JAVA-GUI、JAVA的awt组件、swing组件、事件处理、JDBC==等,是初学者学习和练手的好项目。准备好了吗,<font color="red">let's get it!</font>
  • 系列推荐: Java 实现 捕鱼达人 小游戏【附源码】 Java 实现 贪吃蛇 小游戏【附源码】 Java 实现 1024 小游戏【附源码】 Java实现一个坦克大战的小游戏【附源码】 Java实现一个打飞机的小游戏【附源码】 Java 实现 ...
  • Java程序怎么运行?

    千次阅读 2021-04-14 11:27:26
    Java程序想要运行需要多一个编译的步骤,否则是无法运行的,很多小伙伴都是因为没有编译所以导致没有成功跑起来程序,今天小千就来教大家如何成功运行编写的Java程序。 1.首先我们需要在电脑上安装好Java环境,这...
  • Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都...
  • Java应用程序中的资源消耗分析

    千次阅读 2018-04-20 09:44:45
    Java应用程序而言,CPU的消耗主要体现在us,sy两个值上,下面分析下这两个值:1. us当us值过高时,表示运行的应用程序消耗了大部分的CPU。在这种情况下,对Java程序而言,如何找到具体消耗CPU的线程所执行的代码呢...
  • JAVA 实现《捕鱼达人》游戏

    万次阅读 2022-03-04 19:59:10
    JAVA 实现《捕鱼达人》游戏
  • 异步编程原理以及Java实现

    万次阅读 多人点赞 2019-03-30 14:16:11
    说实话多线程和异步是非常容易让人混淆的,好像产生的效果差不多,甚至有人称多线程为异步,实际上这两种技术背后的实现原理是不同的。 假设您有2个任务,不涉及任何IO(在多处理器机器上)。在这种情况下,线程...
  • Java 实现 FTP 服务

    万次阅读 2019-04-25 23:08:01
    1、FTP简介 FTP 是File Transfer ...基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Uploa...
  • 在我们学习或者工作的时候可能根据项目的需求需要使用不同的jdk,那么如何在一台电脑上实现多个jdk的配置同时方便切换呢? 一、前期准备 我这里用两个jdk来给大家演示,分别是jdk8和jdk14。首先去官网下载所需要jdk...
  • Windows搭建FTP服务器目录博主介绍开启FTP功能放行端口重启计算机添加FTP访问用户添加FTP站点本地访问测试修改FTP设置Java整合FTP代码实现????作者相关的文章、资源分享????????点击直接资料领取???? 目录 博主介绍 ...
  • Java中synchronized的实现原理与应用

    万次阅读 多人点赞 2016-11-24 21:13:46
    Java中的每一个对象都可以作为锁,而在Synchronized实现同步的几种方式中分别为: 普通同步方法:锁是当前实例对象 静态同步方法:锁是当前类的Class对象 同步方法块:锁是Synchronized括号里配置的对象 任何一个...
  • 就目前对于Java程序的开发现状看的话,都是采用的流行的开发工具,其优点对于开发人员来说,可以自动完成Java程序的编译和运行,并且带有代码辅助功能,可以提示完整的语法代码,但是大型的IDE(集成开发环境)需要的...
  • 手把手教你用Java设计并实现一个城市公交查询系统

    千次阅读 多人点赞 2020-12-19 10:11:33
    为了使得我国公交乘客出行及查询有关信息更方便,本文运用JAVA语言技术,Jsp技术,Mysql数据库开发了B/S结构的城市公交查询系统。 该系统顺应了时代发展且具有以下优点:首先,方便乘客的出行,乘客不用询问站牌工作...
  • 协程和Java实现

    千次阅读 2019-03-27 16:56:37
    多线程的性能问题: 1.同步锁。 2.线程阻塞状态和可运行状态之间的切换。 3.线程上下文的切换。 ...协程,英文Coroutines,是一种比...因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 254,737
精华内容 101,894
关键字:

java实现切换应用程序

java 订阅