public static boolean equals(final CharSequence cs1, final CharSequence cs2) {
		if (cs1 == cs2) {
			return true;
		}
		if (cs1 == null || cs2 == null) {
			return false;
		}
		if (cs1 instanceof String && cs2 instanceof String) {
			return cs1.equals(cs2);
		}
		return StringUtils.regionMatches(cs1, false, 0, cs2, 0,
				Math.max(cs1.length(), cs2.length()));
	}
<p>
Compares two CharSequences, returning {@code true} if they represent equal
sequences of characters.
</p>

<p>
{@code null}s are handled without exceptions. Two {@code null} references are
considered to be equal. The comparison is case sensitive.
</p>

<pre>
StringUtils.equals(null, null)   = true
StringUtils.equals(null, "abc")  = false
StringUtils.equals("abc", null)  = false
StringUtils.equals("abc", "abc") = true
StringUtils.equals("abc", "ABC") = false
</pre>
@param cs1 the first CharSequence, may be {@code null}
@param cs2 the second CharSequence, may be {@code null}
@return {@code true} if the CharSequences are equal (case-sensitive), or both
{@code null}
@see Object#equals(Object)
spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/utils/StringUtils.java