上篇:Java 14 之模式匹配,非常赞的一个新特性! 相信在坐的每一位 Java 程序员都遇到过空指针异常: NullPointerException(NPE),不甚其烦. 栈长之前也分享几篇避免空指针的文章: 别再写 bug 了,避免空指针的 5 个案例! 没用 Java 8,怎么优雅地避免空指针? 空指针异常神鬼莫测,它几乎可以出现在程序中的任何位置,想尝试捕获处理是不太切实际的. 背景 我们一般要通过 JVM 异常报告的代码位置去处理,JVM 会打印出导致空指导异常的详细类名.方法名以及…
Java 14 3 月发布距现在已经发布 2 个多月,发布了很多新特性,详细的新特性介绍可以看这篇文章: http://www.javastack.cn/article/2020/java14-has-been-released/ 栈长之前也陆续分享过两篇 Java 14 的新特性: Java 14 之模式匹配,非常赞的一个新特性! Java 14 来势汹汹,这回让空指针无处遁形!! 感觉很好玩,今天再来分享一个新特性: JEP 359: Records (Preview) https://op…
本文是作者翻译自java magazine的文章,我也将回持续的关注java的最新消息,即时和大家分享.如有翻译不准确的地方,欢迎大家留言,我将第一时间修改.   Java 14包含比前两个发行版更多的新功能-其中大多数旨在简化编码. 劳尔·加布里埃尔·乌尔玛(Raoul-Gabriel Urma) 2020年2月27日 Java 14计划于3月17日发布.版本14包含的JEP(Java增强提案)比Java 12和13的总和还多.那么,对于每天编写和维护代码的Java开发人员来说,最重要的是什么…
Java安全之反序列化回显研究 0x00 前言 续上文反序列化回显与内存马,继续来看看反序列化回显的方式.上篇文中其实是利用中间件中存储的Request 和Response对象来进行回显.但并不止这么一种方式. 0x01 回显方式 中间件回显 defineClass Linux描述符回显 RMI绑定实例 URLClassLoader抛出异常 写文件css.js dnslog defineClass异常回显 异常类: package com.nice0e3; import java.io.Buff…
Java安全之挖掘回显链 0x00 前言 前文中叙述反序列化回显只是为了拿到Request和Response对象.在这里说的的回显链其实就是通过一连串反射代码获取到该Request对象. 在此之前想吹爆一个项目,Java Object Searcher项目地址. 0x01 回显链挖掘 借助Java Object Searche工具根据工具说明文档,在tomcat中下断点,然后在IDEA的Evaluate中执行索引语句. TargetObject = {org.apache.tomcat.util…
不做标题党,认认真真写个文章. 文章已经收录在 Github.com/niumoo/JavaNotes 和未读代码博客,点关注,不迷路. Java 14 早在 2019 年 9 月就已经发布,虽然不是长久支持版本,但是也带来了不少新功能. Java 14 官方下载:https://jdk.java.net/archive/ Java 14 官方文档:https://openjdk.java.net/projects/jdk/14/ Java 14 新功能: 305: instanceof 类型判…
java判断字符串是否回文 /** * java判断字符串是否回文<br><br> * 基本思想是利用字符串首尾对应位置相比较 * * @author InJavaWeTrust * */ public class Palindrome { public static boolean isPalindrome(String str) { boolean bool = true; for (int i = 0; i <= str.length() / 2; i++) { if…
JDK/Java 13 在一个月前已经发布,该版本带来了 5 大新特性,笔者观察到其中的 Text Blocks(文本块)特性似乎被讨论最多. 文本块特性与常见的 Python """any input""" 特性一样,它支持多行字符串文字,可以不需要使用大多数转义序列,同时可以让开发人员控制格式. 虽然这不是特别复杂的特性,但对于开发中想将 HTML 代码引入 Java 来说是极大的便利,代码可读性也极大提高. 关于 Java 13 的其它新特…
作者:刘欣 从Java 9开始,Java版本的发布就让人眼花缭乱了. 每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,Java 14就要来了. 说实话,这种频繁的发布有点儿让人审美疲劳,每次我看到介绍Java新版本,新特性的文章也没兴趣点开看了. 在这么多的版本中,只有Java 8, Java 11 和未来的Java 17 是长期支持版本(LTS),Oracle会支持3年,其他的只会支持6个月,新版本一出,就放弃老…
随着新的 Java 发布生命周期的到来,新版本预计将于 2020 年 3 月发布,本文将对其中的 5 个主要特性作些概述. Java 13刚刚发布给开发人员使用不久,最新版本的JDK于2019年9月发布.但是很少有公司现在改用了Java 13,因为这个版本看起来无论如何都不会从甲骨文公司获得长期支持(LTS).更不要说现在Java 14又已经出现了. 随着新的Java发布生命周期的到来,新的Java版本预计将于2020年3月发布.时间已经所剩不多了,这就是为什么甲骨文公司的Java首席架构师Ma…
记录为 Java 提供了一种正确实现数据类的能力,不再需要为实现数据类而编写冗长的代码.下面就来看看 Java 14 中的记录有哪些新特性. 作者 | Nathan Esquenazi 译者 | 弯月,责编 | 郭芮 以下为译文: Java 14 即将在 2020 年 3 月正式发布. Java 以 6 个月作为新版本的发布周期,和之前的版本发布一样,JDK 14 预计将在语言本身和 JVM 级别上带来一些新特性. 如果我们看一下特性列表,我们会注意到一些开发者非常期待的语言特性:记录 (rec…
2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载.在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 359: Records 官方吐槽最为致命 早在2019年2月份,Java 语言架构师 Brian Goetz,曾经写过一篇文章(http://cr.openjdk.java.net/~briangoetz/amber/datum.html ),详尽的说明了并吐槽了Java语言,他和很多程序员一样抱怨"Java太啰嗦"或有太多的&q…
Java 14 已经发布有一周时间了,我准备来开个箱,和小伙伴们一起来看看新特性里面都有哪些好玩的.我们程序员应该抱着尝鲜.猎奇的心态,否则就容易固步自封,技术停滞不前.先来看看 Java 14 都有哪些新特性吧! 红色线划出来的是我比较感兴趣的,其余的对我没什么太大的吸引力,就暂且略过. 01.下载 JDK 14 要想开箱,得先下载 JDK 14,不然拿什么开箱呢,对吧?有 2 处地方可供下载,Oracle 上可以下载商用版, jdk.java.net 上可以下载开源版.我们就选择后者吧. 我…
前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. Lambda表达式 Lambda 表达式是 Java 8 中最重要的一个新特性,Lambda 允许把函数作为一个方法的参数. lambda 表达式的语法格式如下: (parameters) -> expression 或 (parameters) ->{ statements; } 如以下例子: //…
3 月 17 日,JDK/Java 14 正式 GA. 此版本包含的 JEP(Java/JDK Enhancement Proposals,JDK 增强提案)比 Java 12 和 13 加起来的还要多.总共 16 个新特性如下: 305:Pattern Matching for instanceof (Preview) 为 instanceof 运算符引入模式匹配(预览阶段) 通过模式匹配,开发者可以用更简洁和更安全的方式来表达通用的程序逻辑.instanceof 运算符的模式匹配支持从对象中…
一,如何安装jenkins? 参见: https://www.cnblogs.com/architectforest/p/13685904.html 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的源码可以访问这里获取: https://github.com/liuhongdi/ 说明:作者:刘宏缔 邮箱: 371125307@qq.com 二,创建管理脚本 1,把下载好的jenkins的war包移动到软件的…
一,什么是Jenkins? 1,jenkins是什么? Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具, 用于监控持续重复的工作,旨在提供一个开放易用的软件平台, 使软件的持续集成变成可能 2,官方网站: https://www.jenkins.io/zh/ 3,准备java环境:参见: https://www.cnblogs.com/architectforest/p/13378234.html 4,准备maven环境,参见: https://www.cnblogs.c…
一,下载jdk14 官方网站: https://www.oracle.com/java/ 下载页面: https://www.oracle.com/cn/java/technologies/javase-downloads.html 如图: 点击jdk download,进入下载页面: 选择这个版本下载: jdk-14.0.2_linux-x64_bin.tar.gz   下载后保存到 /usr/local/source/java 说明:我们不要把安装文件(源码,安装包)和安装后运行的程序放到一…
Java安全之反序列化回显与内存马 0x00 前言 按照我个人的理解来说其实只要能拿到Request 和 Response对象即可进行回显的构造,当然这也是众多方式的一种.也是目前用的较多的方式.比如在Tomcat 全局存储的Request 和 Response对象,进行获取后则可以在tomcat这个容器下进行回显.而某些漏洞的方式会从漏洞的位置去寻找存储Request 和 Response对象的地方. 0x01 Tomcat通用回显 根据Litch1师傅的思路来寻找request,respon…
面对这样的if语句,你是不是很难受呢? if (flag == 1) { log.info("didispace.com: 1"); } else if (flag == 2) { log.info("didispace.com: 2"); } else if (flag == 3) { log.info("didispace.com: 3"); } else if (flag == 4) { log.info("didispace.c…
2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载.在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 358: Helpful NullPointerExceptions null何错之有? 对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NullPointerException)的骚扰.相信很多程序员都特别害怕出现程序中出现NPE,因为这种异常往往伴随着代码的非预期运行. 在编程语言中,空引用(Null Refere…
1先看一下程序: package com.redking.jdbc.demo;    import java.sql.Connection;    import java.sql.DriverManager;    import java.sql.SQLException;    import java.sql.Statement;    public class JDBCDemo07 {            public static final String DBDRIVER = "sun…
java.util包提供了Date类来封装当前的日期和时间. Date类提供两个构造函数来实例化Date对象. 第一个构造函数使用当前日期和时间来初始化对象. Date( ) 第二个构造函数接收一个参数,该参数是从1970年1月1日起的微秒数. Date(long millisec) Date对象创建以后,可以调用下面的方法. 序号 方法和描述 1 boolean after(Date date)若当调用此方法的Date对象在指定日期之后返回true,否则返回false. 2 boolean b…
用递归来判断回文串 思路: ①首先如果是空串,一个字符,则判断是回文串 ②若不满足①,则我们需要对字符串进行递归判断,我们会想到要用第一个字符和最后一个字符进行比较,若相同则,第二个和倒数第二个进行比较,如此循环往复,就会出现一个终点 ③终点处会出现两种情况,第一种情况:两个不同位置的字符进行比较,第二种情况是:两个相同位置的字符进行比较.因此我们需要找出这个中间值,我们通过分奇偶的方式,算出最终左边要比较的数的下标,若为奇数,左边的下标为:len/2;若为偶数,左边的下标为:len/2: ④递…
1 问题描述 给定一个字符串,求它的最长回文子串的长度. 2 解决方案 2.1 中心扩展法 此处,首先枚举出回文串的中心位置,然后,再在该位置上分别向左和向右扩展,记录并更新得到的最长回文串的长度. package com.liuzhen.string_1; import java.util.Scanner; public class StringLongestPalindrome { /* * 参数A:给定字符串 * 函数功能:返回字符串A中最长回文串的长度 */ public int get…
空指针引入 为了避免空指针调用,我们经常会看到这样的语句 if (someobject != null) { someobject.doCalc();} 最终,项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢? 这是初.中级程序猿经常会遇到的问题.他们总喜欢在方法中返回null,因此,在调用这些方法时,也不得不去判空.另外,也许受此习惯影响,他们总潜意识地认为,所有的返回都是不可信任的,为了保护自己程序,就加了大量的判空. 进行判空前,请区分以下两种情况: 1.nu…
Principle To offer the benefits of encapsulation you should always expose private field with public accessor method. Correct Implementation // Encapsulation of data by accessor methods and mutators class Point { private double x; private double y; pu…
Calendar:它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法, 并为操作日历字段(例如获得下星期的日期)提供了一些方法. 1.public int get(int field):返回给定日历字段的值.日历类中的每个日历字段都是静态的成员变量,并且是int类型. 2.public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作. 3.public fin…
A.有时候在网站注册账号时,会有日期选项,下面会有一个小型的日历可供选择.这个日期其实是个String类, 选择了日期之后,这个String类会通过程序,转换为Date类,再存入数据库中. B.反之,这个小型日历的形成,也是从数据库中提取出Date类,再通过程序转换为String类显示出来. 而A中的过程,其实就是 String -- Date(解析) public Date parse(String source) B中的过程,其实就是 Date -- String(格式化) public f…
Date:表示特定的瞬间,精确到毫秒. 了解了解就行. 已经过时,在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串. 不过,这些函数的 API 不易于实现国际化.从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换, 使用 DateFormat 类来格式化和解析日期字符串.Date 中的相应方法已废弃. 构造方法: Date():根据当前的默认毫秒值创建日期对象 Date(lon…