데이터베이스에 Java 문자열 풀 입력을 방지해야하는 몇 가지 중요한 필드가 있습니다. 데이터베이스의 VARCHAR은 모두 VARCHAR이며, 코드에서 StringBuilders를 사용하여 상수 풀에 넣지 않도록합니다. 우리는 데이터베이스와 상호 작용하기 위해 MyBatis를 사용하며 현재 setObject를 사용하여 StringBuilder를 Varcha
인터넷에서 많은 기사는 멀티 스레드에서 String.intern()을 사용하는 것이 좋지 않다고 지정하지만 실제로 왜 나쁜가를 이해할 수 없었습니다. String.intern()을 사용하면 항상 문자열 풀에서 고유 한 문자열을 반환하지 않습니까? 그렇지 않은 경우 JVM 문자열 풀 스레드가 로컬입니까? 그렇지 않다면 다중 스레드 환경에서 동기화하기 위해 S
런타임 상수 풀의 일부 속성에 대해 잘 모르겠습니다. 런타임 상수 풀은 상수 풀 (클래스로드 중 .class 파일의 데이터)로 채워집니다. 하지만 런타임에 작성된 변수로 채워져 있습니까? 아니면 컴파일 과정에서 리터럴로 변환되고 상수 풀에 저장됩니까? 예를 들어 는 : Integer i = new Integer(127);
때문에로 다시 전환, 문자처럼
this question 및 its duplicate을 본 후에도 여전히 질문이 남아 있습니다. 내가 a = "ab"
b = "ab"
a == b
을 실행 내가 True을받을 경우 내가 왜 is 및 ==이 무엇을 얻을. a = "ab"
b = "ab"
a is b # Returns True
그래서 나는 내 연구를하고 내가 this을 발견이
"문자열의 풀"객체가 필요합니다. "문자열의 시퀀스"를 반복적으로 삽입 할 수 있습니다 (이 문구를 "문자열"로 사용하고 std와 혼동하지 않아야 함). :: 문자열 또는 C 문자열) 시퀀스에 대한 포인터를 얻고 풀이 커질 필요가있는 경우 포인터가 무효화되지 않도록 보장합니다. std::string을 풀로 사용하면 초기 용량을 초과하여 문자열을 재 할당 할