Java设置/获取系统剪切板/剪贴板

非常简单,调用jdk内部封装方法即可设置剪切板 public static void setClipboardString(String text) { // 获取系统剪贴板 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); // 封装文本内容 Transferable trans = new StringSelection(text); // 把文本内容设置到系统剪贴板 clipboard.setContents(trans, null); }获取剪切板内容public String getFromClipboard() { Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); if (transferable != null && transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) { try { return (String) transferable.getTransferData(DataFlavor.stringFlavor); } catch (Exception e) { return ""; } } return "";}

Java获取本机本地IP地址

可显示本地IP,例如192.168.0.1public static InetAddress getLocalHostLANAddress() throws Exception { try { InetAddress candidateAddress = null; // 遍历所有的网络接口 for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) { NetworkInterface iface = (NetworkInterface) ifaces.nextElement(); // 在所有的接口下再遍历IP for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); ) { InetAddress inetAddr = (InetAddress) inetAddrs.nextElement(); if (!inetAddr.isLoopbackAddress()) {// 排除loopback类型地址 if (inetAddr.isSiteLocalAddress()) { // 如果是site-local地址,就是它了 return inetAddr; } else if (candidateAddress == null) { // site-local类型的地址未被发现,先记录候选地址 candidateAddress = inetAddr; } } } } if (candidateAddress != null) { return candidateAddress; } // 如果没有发现 non-loopback地址.只能用最次选的方案 InetAddress jdkSuppliedAddress = InetAddress.getLocalHost(); return jdkSuppliedAddress; } catch (Exception e) { e.printStackTrace(); } return null;}

对于selenium遍历元素获取text与html

示例 driver.get("http://zntx.cc/bbslist-2331.html"); List<WebElement> elements = driver.findElements(By.xpath("/html/body/div[1]/div")); for (int i = 0; i < elements.size(); i++) { WebElement element = elements.get(i); // 获取text 两种效果相同 System.out.println("getText"+element.getText()); System.out.println("innerText"+element.getAttribute("innerText"));// 获取html System.out.println("innerHTML"+element.getAttribute("innerHTML")); System.out.println(element.findElement(By.xpath("//*[@id=\"main\"]/div[5]/span[1]/a")).getAttribute("innerHTML")); }

两款不错的AI代码补全插件

https://www.codota.comhttps://www.aixcoder.com

Objects.equals(a,b)和a.equals(b)

Objects.equals(a,b)解析首先查上源码:public static boolen equals(Object a,Object b){ return(a==b)||(a!=null&&a.equals(b))可以看到源码种有一个判空,以防止null值作为参数时报空指针异常。a.equals(b)解析a.equals(b)方法的源码:public static boolen equals(Object obj){ return(this==obj) }其并没有判空操作,当null值调用这个方法就会报空指针异常。因此才建议使用equals时常量放在前面调用,括号里写变量,或者使用Objects.equals方法

Java学习+面试指南JavaGuide

来自GitHub:https://github.com/Snailclimb/JavaGuide

JS获取当前地址网址参数

1,获取当前窗口的url; 结果:http://localhost:61768/Home/Index?id=2&age=18 var` `url = window.location.href;2,获取当前窗口的主机名; 结果:localhost:61768 var host = window.location.host;3,获取当前窗口的端口; 结果:61768 var port = window.location.port;4,获取当前窗口的路径 ; 结果:/Home/Index  var pathname = window.location.pathname;5,获取当前文档的Url;结果:http://localhost:61768/Home/Index?id=2&age=18  var URL = document.URL;6,获取参数;结果:?id=2&age=18  var search = window.location.search;7,设置或获取 URL 的协议部分;结果:http  var protocol = window.location.protocol8,设置或获取 href 属性中在井号“#”后面的分段  var hash = window.location.hash分割url提取参数var search = window.location.search;var age = getSearchString('age', search); //结果:18var id = getSearchString('id', search); //结果:2//key(需要检索的键) url(传入的需要分割的url地址,例:?id=2&age=18)function getSearchString(key, Url) { var str = Url; str = str.substring(1, str.length); // 获取URL中?之后的字符(去掉第一位的问号) // 以&分隔字符串,获得类似name=xiaoli这样的元素数组 var arr = str.split("&"); var obj = new Object(); // 将每一个数组元素以=分隔并赋给obj对象 for (var i = 0; i < arr.length; i++) { var tmp_arr = arr[i].split("="); obj[decodeURIComponent(tmp_arr[0])] = decodeURIComponent(tmp_arr[1]); } return obj[key];}原文链接:https://www.cnblogs.com/qianxundaozhu/p/11584900.html

4000款java游戏打包下载

由于7233资源无法下载,导致本站大部分游戏也无法下载。因此我从手机乐园下载了一批游戏并打包。压缩包内一条龙,并且已经分好类了,包含jar游戏文件、游戏截图、游戏简介,解压密码:cway.top下载链接:https://pan.xunlei.com/s/VMRDJywBKDnfBocFk2er3idqA1 提取码:abrt若是手机用户请使用手机迅雷下载,下载好后可使用ZArchiver等可以解压密码文件的app进行解压。不过建议在电脑上解压,想玩哪些复制到手机即可,因为解压后的文件实在是非常多。zarchiver下载:https://hik.lanzoux.com/iwLobkhvsyf

几种CI持续集成工具简介

Travis CI首先要介绍的Travis CI是一个广泛使用的CI工具,因为它简直是Github爱好者的福音,而且用户份额很大。其支持绝大部分主流编程语言,包括但不限于:C、Java、Python、PHP等等。目前有超过90万的开源项目、60万的用户在使用Travis CI来作为他们的持续集成工具。Travis CI最大的特色和便利店是其与开源社区Github兼容得非常好,它可以极其方便地帮你为Github上的开源项目仓库快速地拉起一个持续集成防护网,而且对于开源项目完全免费,不花一分钱,这对学习者非常友好。而且Travis CI的用法也不复杂,也不需要你写什么复杂代码,它是用过 yml配置文件的形式来指定Travis CI要做的事情,来满足你的流程规划,先做什么,再做什么,最后做什么,挺方便。Jenkins大名鼎鼎的Jenkins简直如雷贯耳,国内很多的通信大厂、互联网大厂都正在使用中!Jenkins是一款开源的 CI&CD 工具,工具本身是Java写的,然而却支持各种编程语言项目的自动化任务,包括构建、测试、部署等。Jenkins一直是开源CI&CD软件领导者, 安装简易、配置简单、提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。Jenkins 支持各种运行方式,可通过系统包安装、也可以作为Java程序安装,甚至可以通过Docker来安装。而且Jenkins在企业级开发中可以非常便捷地与SVN、Git等代码管理工具无缝对接!如今已经步入2.0时代的Jenkins系统,其最大的特色便是加入了Pipeline流水线功能,Pipeline的加持,让Jenkins系统对项目做持续集成时变得更加灵活和强大。必须要说的是,Jenkins系统现在确实越来越庞大,越来越“重”了,如果真是个小项目那它来做持续集成有点浪费了。Circle CICircleCI 功能上和上面介绍的两个工具其实也差不多,但是使用起来可能更加“轻量”一些,这对学习者来说还是非常友好的!Circle CI也支持GitHub、Bitbucket等平台上的项目,只要你项目的代码有变更,就会自动抓取,根据你的配置,提供运行环境,执行测试、构建和部署等一系列自动化操作。Drone CIDrone CI与上面提到的诸如Jenkins等系统相比, 它也算是一个更加轻量级的CI工具,无论是工具本身的安装、部署,还是利用它做一些自动化工作流程的构建,都会简洁一些,更加好上手一些。Drone CI工具的使用,基本上也就是几行配置文件的事情,就像下面这样,不烦心其他工具除了前文提到的这四个主流工具,其他还有诸如像:flow.ciCodeShipSemaphore CI等等工具和网站,思想都差不多,都可以帮我们完成持续集成的目标!作者:CodeSheephttps://www.bilibili.com/read/cv4147684出处: bilibili

适合Java初学者的Spring Boot实战文章合集Spring-Boot-In-Action

来自b站大佬codesheep的文章合集仓库:https://github.com/hansonwang99/Spring-Boot-In-Action