scan的意思 JAVA,java的scan是干吗用的

Java codepublic String toUpperCase(Locale locale) {

if (locale == null) {

throw new NullPointerException();

}

int firstLower;

/* Now check if there are any characters that need to be changed. */

scan: {

for (firstLower = 0 ; firstLower < count; ) {

int c = (int)value[offset+firstLower];

int srcCount;

if ((c >= Character.MIN_HIGH_SURROGATE) &&

(c <= Character.MAX_HIGH_SURROGATE)) {

c = codePointAt(firstLower);

srcCount = Character.charCount(c);

} else {

srcCount = 1;

}

int upperCaseChar = Character.toUpperCaseEx(c);

if ((upperCaseChar == Character.ERROR) ||

(c != upperCaseChar)) {

break scan;

}

firstLower += srcCount;

}

return this;

}

char[] result = new char[count]; /* may grow */

int resultOffset = 0; /* result may grow, so i+resultOffset

* is the write location in result */

/* Just copy the first few upperCase characters. */

System.arraycopy(value, offset, result, 0, firstLower);

String lang = locale.getLanguage();

boolean localeDependent =

(lang == "tr" || lang == "az" || lang == "lt");

char[] upperCharArray;

int upperChar;

int srcChar;

int srcCount;

for (int i = firstLower; i < count; i += srcCount) {

srcChar = (int)value[offset+i];

if ((char)srcChar >= Character.MIN_HIGH_SURROGATE &&

(char)srcChar <= Character.MAX_HIGH_SURROGATE) {

srcChar = codePointAt(i);

srcCount = Character.charCount(srcChar);

} else {

srcCount = 1;

}

if (localeDependent) {

upperChar = ConditionalSpecialCasing.toUpperCaseEx(this, i, locale);

} else {

upperChar = Character.toUpperCaseEx(srcChar);

}

if ((upperChar == Character.ERROR) ||

(upperChar >= Character.MIN_SUPPLEMENTARY_CODE_POINT)) {

if (upperChar == Character.ERROR) {

if (localeDependent) {

upperCharArray =

ConditionalSpecialCasing.toUpperCaseCharArray(this, i, locale);

} else {

upperCharArray = Character.toUpperCaseCharArray(srcChar);

}

} else if (srcCount == 2) {

resultOffset += Character.toChars(upperChar, result, i + resultOffset) - srcCount;

continue;

} else {

upperCharArray = Character.toChars(upperChar);

}

/* Grow result if needed */

int mapLen = upperCharArray.length;

if (mapLen > srcCount) {

char[] result2 = new char[result.length + mapLen - srcCount];

System.arraycopy(result, 0, result2, 0,

i + resultOffset);

result = result2;

}

for (int x=0; x

result[i+resultOffset+x] = upperCharArray[x];

}

resultOffset += (mapLen - srcCount);

} else {

result[i+resultOffset] = (char)upperChar;

}

}

return new String(0, count+resultOffset, result);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,RedisTemplate类提供了scan方法来进行Redis的扫描操作。这个方法可以通过指定匹配模式来获取与模式匹配的键集合。使用scan方法可以避免使用keys命令对Redis进行扫描时可能导致的性能问题。 下面是一个示例代码,展示了如何使用RedisTemplate的scan方法来进行Redis的扫描操作: ```java public static Set<String> scan(RedisTemplate<String, Object> redisTemplate, String pattern) { return redisTemplate.execute((RedisCallback<Set<String>>) connection -> { Set<String> keysTmp = new HashSet<>(); try (Cursor<byte[]> cursor = connection.scan( new ScanOptions.ScanOptionsBuilder() .match(pattern) .count(10000).build())) { while (cursor.hasNext()) { keysTmp.add(new String(cursor.next(), "Utf-8")); } } catch (Exception e) { logger.error(e.getMessage(), e); throw new RuntimeException(e); } return keysTmp; }); } ``` 以上代码是一个RedisHelper类的一个静态方法,该方法接收一个RedisTemplate对象和一个匹配模式作为参数,然后使用scan方法进行扫描,并返回与模式匹配的键集合。 需要注意的是,scan方法是一个非阻塞的操作,并且可以按照预先设定的页数多次从Redis中进行查找。因此,使用scan方法可以更高效地获取与模式匹配的键集合,并且可以避免影响其他服务的使用。 希望这个例子对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [在 RedisTemplate 中使用 scan](https://blog.csdn.net/qq_38787653/article/details/128367121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Java教程:RedisTemplate如何存取数据并使用scan非阻塞删除](https://blog.csdn.net/wfeil211/article/details/128134602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值