重塑云上的 Java 语言

音乐无国界,但是音乐人有国界。云原生亦如此。虽没有限定的编程语言,但应用所使用的编程语言已经决定了应用部署运行的行为。Java诞生于20年前,拥有大量优秀的企业级框架,践行OOP理念,更多体现的是严谨以及在长时间运行条件下的稳定性和高性能。反观如今,在要求快速迭代交付的云场景下,语言的简单性似乎成了首要的要求,而传统的Java语言显得有一些过于重量了。本文由阿里巴巴JVM团队技术专家郁磊(花名:梁希)分享JVM团队是如何面对和处理集团巨大的业务规模和复杂的业务场景的。Java常因为耗资源而受诟病,其中最显著一点就是Heap对内存的占用,即便没有请求在处理也没有对象分配,进程仍然会保留完整的堆内存空间,保障GC进行分配内存和操作内存的快速敏捷。AJDKZenGC/ElasticHeap双十一全面支持核心链路上百应用和数十万实例。JDK12开始支持固定时间的触发concurrentmark并在remark中收缩Java堆归还内存的功能,然而并未解决在stw中增加暂停时间的问题,因此无法在每次youngGC时做内存归还。ElasticHeap在并发异步线程中完成内存处理反复map/unmap...
代码星球 代码星球·2021-02-24

那些年,我们见过的Java服务端乱象

查尔斯·狄更斯在《双城记》中写道:“这是一个最好的时代,也是一个最坏的时代。”移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动;随着行业竞争加剧,互联网红利逐渐消失,很多创业公司九死一生。笔者在初创公司摸爬滚打数年,接触了各式各样的Java微服务架构,从中获得了一些优秀的理念,但也发现了一些不合理的现象。现在,笔者总结了一些创业公司存在的Java服务端乱象,并尝试性地给出了一些不成熟的建议。1.1.现象描述1.1.1.Controller基类常见的Controller基类如下:/**基础控制器类*/publicclassBaseController{/**注入服务相关*//**用户服务*/@AutowiredprotectedUserServiceuserService;.../**静态常量相关*//**手机号模式*/protectedstaticfinalStringPHONE_PATTERN="/^[1]([3-9])[0-9]{9}$/";.../**静态函数相关*//**验证电话*/protectedstaticvaildPhone(Stringphone){...}...

你知道 Java 类是如何被加载的吗?

一:前言最近给一个非Java方向的朋友讲了下双亲委派模型,朋友让我写篇文章深度研究下JVM的ClassLoader,我确实也好久没写JVM相关的文章了,有点手痒痒,涂了皮炎平也抑制不住。我在向朋友解释的时候是这么说的:双亲委派模型中,ClassLoader在加载类的时候,会先交由它的父ClassLoader加载,只有当父ClassLoader加载失败的情况下,才会尝试自己去加载。这样可以实现部分类的复用,又可以实现部分类的隔离,因为不同ClassLoader加载的类是互相隔离的。不过贸然的向别人解释双亲委派模型是不妥的,如果在不了解JVM的类加载机制的情况下,又如何能很好的理解“不同ClassLoader加载的类是互相隔离的”这句话呢?所以为了理解双亲委派,最好的方式,就是先了解下ClassLoader的加载流程。二:Java类是如何被加载的2.1:何时加载类我们首先要清楚的是,Java类何时会被加载?《深入理解Java虚拟机》给出的答案是:1:遇到new、getstatic、putstatic等指令时。2:对类进行反射调用的时候。3:初始化某个类的子类的时候。4:虚拟机启动时会先加载...
代码星球 代码星球·2021-02-24

阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量

阿里开源自用OpenJDK版本,Java社区迎来中国力量/3月21日,阿里巴巴将宣布开源AlibabaDragonwell。届时,开发者可通过阿里云开发者中心及Github社区下载使用。InfoQ记者独家专访了阿里云智能基础产品事业部资深技术专家李三红、阿里云智能基础产品事业部研究员KingsumChow(周经森),听他们如何看待AlibabaDragonwell与Java归途。作者|赵钰莹受访嘉宾|阿里云智能基础产品事业部资深技术专家李三红阿里云智能基础产品事业部研究员KingsumChow(周经森)阿里巴巴即将重磅开源OpenJDK长期支持版本AlibabaDragonwell。众所周知,Oracle对Java的态度已经发生系列转变,由于Java用户群体庞大,预计此事在很长一段时间内都是开发者的讨论焦点。作为世界上最大的Java用户之一,阿里巴巴此时选择开源OpenJDK长期支持版本AlibabaDragonwell是出于哪些考量呢?Oracle撒手,宣布对个人用户(PersonalUsers),Java8官方支持时间持续到2020年12月;对商业用户(CommercialUser...

selenium测试(Java)-- 显式等待(九)

显式等待可以使用selenium预置的判断方法,也可以使用自定义的方法。packagecom.test.elementwait;importorg.openqa.selenium.By;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.firefox.FirefoxDriver;importorg.openqa.selenium.support.ui.ExpectedCondition;importorg.openqa.selenium.support.ui.ExpectedConditions;importorg.openqa.selenium.support.ui.WebDriverWait;publicclassExplicitWait{publicstaticvoidmain(String[]args){WebDriverdriver=newFirefoxDriver();driver.get("http://www.baidu.com");driver.manage().window().maximiz...

selenium测试Java)-- 验证信息(八)

packagecom.test.validationinfor;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.firefox.FirefoxDriver;publicclassValidationInformation{publicstaticvoidmain(String[]args){WebDriverdriver=newFirefoxDriver();driver.get("http://www.baidu.com");driver.manage().window().maximize();System.out.println("CurrentUrl:"+driver.getCurrentUrl());//System.out.println("PageSource:"+driver.getPageSource());System.out.println("Title:"+driver.getTitle());System.out.println("WindowHandle:"+driver.getWi...

selenium测试Java)-- 键盘事件(七)

 1packagecom.test.key;23importorg.openqa.selenium.By;4importorg.openqa.selenium.Keys;5importorg.openqa.selenium.WebDriver;6importorg.openqa.selenium.firefox.FirefoxDriver;78publicclassKeyB{910publicstaticvoidmain(String[]args){11WebDriverdriver=newFirefoxDriver();12driver.get("http://www.baidu.com");13driver.manage().window().maximize();1415//输入框输入内容16driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("selenium");1718//删除一个m19driver.findElement(By.xpath("//*[@id='kw']")).sendKeys(Keys.B...

selenium测试Java)--鼠标事件(六)

鼠标操作:1.右击2.双击3.拖到4.悬停  1packagecom.test.mouse;23importjava.io.File;45importorg.openqa.selenium.By;6importorg.openqa.selenium.WebDriver;7importorg.openqa.selenium.WebElement;8importorg.openqa.selenium.firefox.FirefoxDriver;9importorg.openqa.selenium.firefox.FirefoxProfile;10importorg.openqa.selenium.interactions.Actions;1112publicclassMouseOperation{1314publicstaticvoidmain(String[]args){15FirefoxProfileprofile=newFirefoxProfile(16newFile("C:\Users\XXXX\AppData\Roaming\Mozilla\Firefox\P...

selenium测试Java)--元素操作(五)

元素的操作有1.清除文本2.模拟按键输入3.单击元素4.返回元素尺寸5.获取文本6.获取属性值7.判断是否可见8.提交  下面通过操作新浪邮箱的注册界面的脚本来展示使用方法 源代码:1packagecom.test.elementoperation;23importorg.openqa.selenium.By;4importorg.openqa.selenium.WebDriver;5importorg.openqa.selenium.WebElement;6importorg.openqa.selenium.firefox.FirefoxDriver;78publicclassElementOperationEmail{910publicstaticvoidmain(String[]args){1112WebDriverdriver=newFirefoxDriver();1314driver.get("https://mail.sina.com.cn/register/regmail.php");15driver.manage().window().ma...

selenium测试Java)--浏览器控制(四)

1.控制浏览器窗口大小 1packagecom.test.window;23importorg.openqa.selenium.Dimension;4importorg.openqa.selenium.WebDriver;5importorg.openqa.selenium.firefox.FirefoxDriver;67publicclassWindowSize{89publicstaticvoidmain(String[]args){10WebDriverdriver;11//获取Driver12driver=newFirefoxDriver();13driver.get("http://www.baidu.com/");14//将屏幕最大化15driver.manage().window().maximize();16waitTime(3000);1718//将浏览器大小设置成宽800,高48019Dimensionarg0=newDimension(800,480);20driver.manage().window().setSize(arg0);21waitTime...

selenium测试Java)(三)

   控制浏览器:http://www.cnblogs.com/moonpool/p/5657752.html...
代码星球 代码星球·2021-02-24

selenium定位方法(java实例)(二)

从下图中可以看到selenium有三类定位元素的方法,一种是直接通过属性、标签以及链接来定位,一种是XPath方式,最后一种是CSS方式。 下表列举了元素定位的例子selenium之页面元素定位方法  方法 例子  通过ID来定位 WebElementwElement=driver.findElement(By.id("kw"))  通过Name来定位 WebElementwElement=driver.findElement(By.name("wd"))  通过Class定位 WebElementwElement=driver.findElement(By.className("s_ipt"))  通过Tag来定位 List<WebElement>inputs=driver.findElements(By.tagName("input"))  通过Link来定位 WebElementw...

java+jsp+servlet实现分页

web.xml配置:<servlet><servlet-name>abc</servlet-name><servlet-class>test.pageServlet</servlet-class></servlet><servlet-mapping><servlet-name>abc</servlet-name><url-pattern>/insertstu</url-pattern></servlet-mapping>ConnectionTest.Javapackagetest;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Arr...
代码星球 代码星球·2021-02-24

java中的System类

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。         由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。         1、成员变量System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。                   例如:            ...
代码星球 代码星球·2021-02-24
首页上一页...1112131415...下一页尾页