[개발] Spring 에 포함된 Util들.


이와 유사한 라이브러리로 Apache Commons 시리즈가 있다. Apache Commons와 겹치는 라이브러리들도 많다.

  • 모든 Spring의 Utils
  • StringUtils : 문자열로 할 수 있는 수많은 일들. 너무 많다. 일일이 나열하지 않겠다.
  • ReflectionTestUtils : setter/getter가 없는 빈의 필드 값을 읽거나 쓸 때 사용하는 도구. 단위 테스트시에 주로 사용한다. 필드 주입(field injection)을 사용하는 빈을 테스트할 때 주로 사용할 수 있다.
    • setField : setter가 없는 필드 값 지정
    • getField : getter가 없는 필드 값 읽기
  • DataAccessUtils : HibernateTemplate, SQLMapClinetTemplate, JDBCTemplate등과 함께 편리하게 사용할 수 있는 도구이다.
    • uniqueResult : 쿼리 결과가 List로 반환되고 그 중에서 0 혹은 1 개의 결과만 있어야 할 경우, List객체에서 결과가 0이면 null을 1이면 해당 값을 2 이상이면 예외를 발생시키는 메소드.
    • intResult : 쿼리 결과가 List로 반환되고 항상 1개의 결과가 존재하며(0 혹은 2이상이면 예외 발생), 그 결과 값이 단인 Int 인 경우에 값을 즉각 뽑아내고자 사용한다.
  • ServletRequestUtils : Servlet/JSP의 Request 객체는 파라미터 값을 항상 문자열로만 전달해 주는데, 그 값을 int, long 등의 원시형으로 바로 뽑아내는 기능을 편리하게 사용할 수 있다.
  • BeanUtils : Java Beans 의 프라퍼티와 메소드등을 제어하는 다양한 도구들. 동적으로 자바 빈즈 프라퍼티 관련 작업을 할 때 매우 유용하다.
  • AnnotationUtils : 특정 클래스나 메소드 등의 어노테이션 탐색(자동으로 상위 클래스까지 탐색)등의 기능과 그외 다양한 어노테이션 관련 도구들.
  • AopUtils : AOP관련 테스트 등을 해볼 수 있는 도구.
  • ClassUtils : Class 객체를 가지고 할 수 있는 수 많은 일들.
  • DomUtils : W3C DOME을 편리하게 사용할수 있게 해주는 도구들. 근데 나는 JDOM이나 DOM4J를 즐겨쓰기 때문에 실제로 이걸 쓸일은 거의 없다.
  • FileCopyUtils
  • FileSystemUtils : 파일 복사와 삭제를 하위 디렉토리까지 일괄적으로 처리할 수 있다.
    • copyRecursively : 하위 디렉토리까지 일괄 복사
    • deleteRecursively : 하위 디렉토리까지 일괄 삭제
  • HtmlUtils : HTML Escaping 도구
  • JavaScriptUtils : 문자열을 자바스크립트 문자열로 escape
  • JdbcTestUtils
  • JdbcUtils : JDBC를 직접 사용할 경우 유용한 도구들
    • close* 메소드들 : 리소스를 안전하게 close 해준다.
  • JmsUtils : JMS API를 직접 사용할 경우 유용한 도구들
    • close* 메소드들 : 리소스를 안전하게 close 해준다.
  • NumberUtils : 숫자 클래스 관련 도구들
    • parseNumber : 문자열을 특정한 숫자 클래스로 변경해준다. 형식 지정 가능.
  • ObjectUtils : 객체 관련 도구들
  • PatternMatchUtils : 정규식을 간편하게 사용하도록 해주는 도구들
  • PropertyLoaderUtils : *.properties 파일을 쉽게 다루게 해준다.
    • loadProperties : 특정 리소스(클래스패스등)에 있는 프라퍼티 파일을 읽어 Properties 객체 생성
  • PropertyAccessorUtils
  • ReflectionUtils : 리플렉션을 쉽게 해주는 도구들
  • ResourceUtils : 리소스에서 파일을 읽어오는 도구들. 특히, 파일시스템상의 절대 경로가 아닌 클래스패스와 같은 상대 경로에서 파일을 읽을 수 있도록 해주어, 개발 환경에 독립적인 파일 배치를 도와준다.
  • SimpleJdbcTestUtils : JDBC 관련 통합 테스트시에 테이블이나 쿼리 관련 작업을 용이하게 해준다.
  • StatementCreatorUtils : PerparedStatement를 쉽게 생성하고자 할 때 사용한다.
  • WebUtils : 서블릿 관련하여 이런 저런 유틸리티 메소드들을 제공해 준다.



출처 - http://seonho.blogspot.kr/2012/06/spring-util.html







Posted by linuxism
,




fedora g++ 설치(install)

# yum install gcc-c++





우선 결론을 말씀드리자면, C++ 코드의 경우에는 ' g++ '을  사용하는 것이 좋습니다.

 

' gcc '의 경우도 C++ 코드의 컴파일이 가능하지만 관련 라이브러리들이 자동으로 링크되지 않기 때문에 에러 메시지를 냅니다. 이러한 경우에는 대부분 -c 옵션을 주고 컴파일을 수행하면, 링크 이전까지는 아무런 에러없이 진행되어 *.o 오브젝트 파일을 생성합니다.

 

굳이 ' gcc '로 컴파일을 하신다면 -lstdc++ 옵션을 줍니다.

많은 교재에서 보던 간단한 hello.cpp 코드의 컴파일을 수행한다면, 아래와 같습니다.

 

g++ -o hello hello.cpp

 

또는

 

gcc -o hello hello.cpp -lstdc++



출처 - http://blog.naver.com/PostView.nhn?blogId=kalkins&logNo=80114013159&categoryNo=17&viewDate=&currentPage=1&listtype=0










How do I fix this please? I am new to Linux.

share|improve this question
Did you install g++? Also, in eclipse you may have to set the compiler path in preferences. – scaryrawr Oct 8 '12 at 2:32

Typically, g++ will be installed when gcc (GNU Compiler Collection) is installed. First confirm that you have g++ installed.

You can check this by typing the following in a terminal: which g++. The response ought to be /usr/bin/g++.

If you find g++ installed, in eclipse go to project->properties->C/C++ Build->Discovery Options, under tools GCC C++ Compiler, put the exact path to g++ instead of g++ (if g++ alone does not work).

You will find this link useful: What is the difference between g++ and gcc?

If you still have problems, do get back with feedback.

share|improve this answer
version option gives me "g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3" – Will Oct 8 '12 at 3:27
I set "compiler invocation command" into the exact path.nothing changes. also,is there a fix that does fixing for all projects instead of one? – Will Oct 8 '12 at 3:44
So it clear that you have g++ installed on the box. This points to the path not being correct in eclipse. Try adding the path variable to the evironment here: window->preferences->C/C++->build->Environment. – bobestmOct 8 '12 at 20:39
thank you a lot. – Will Oct 9 '12 at 4:32

I have exactly the same problem. I never had problems with eclipse before under linux and now it wont even compile code. I tried to change the name of the g++ and gcc compilers to their exact location in project->properties->c/c++ Build->discovery options etc. nothing helped, I tried to reinstall eclipse and did an initialize, added the path to the variables etc.. Nothing worked so fare. The project I am working on is quiet big and I rather would like eclipse to manage the source and makefile, instead of doing it manually

Linux Mint 15 Eclispe: Version: 3.8.1 (I tried it with the latest version as well ... nothing changed)

g++ --version g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

gcc --version gcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

example:

#include // not resolved using namespace std;

int main() {
    std::cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}

Well the code above is not what bothers me, as I can fix it by adding the includes of the exact c++ include path, but the code just wont compile. Wired enough eclipse gives me the error:

Description Resource Path Location Type Program "g++" not found in PATH Preferences, C++/Build/Settings/Discovery, [CDT GCC Builtin Compiler Settings] options C/C++ Scanner Discovery Problem

but it appears to me to be possible to compile single files, by opening them and pressing crt+b, but the whole project wont compile.

Fixed the problem this morning:
- got the latest eclipse
- created a new workspace
- created a new project

after a few seconds the very same error disappears

share|improve this answer

I had similar problem and it is solved by

  1. Installing g++ The GNU C++ complier using ubuntu software centre and

  2. Changing in -

    Window -> Preferences -> C/C++ -> Build -> Settings -> Discovery -> CDT GCC Build in Complier Settings [Shared]

    From: ${COMMAND} -E -P -v -dD "${INPUTS}"

    To: /usr/bin/${COMMAND} -E -P -v -dD "${INPUTS}"

I hope it helps. I think if you add it to the project as mentioned in the first answer, you will need to add all the time for new projects. And if you add as I wrote you don't need to add it for new projects.

share|improve this answer









출처 - http://stackoverflow.com/questions/12774629/program-g-not-found-in-path-in-eclipse-juno-cdt-in-ubuntu











What is the difference between g++ and gcc? Which ones should be used for general c++ development?

share|improve this question
up vote167down voteaccepted

gcc is 'Gnu Compiler Collection'. If you pass it a C++ file, it will invoke the C++ compiler ('g++') behind the scenes.

gcc is essentially the frontend for several compilers and the linker too.

Edit: As several people pointed out, this doesn't mean that 'gcc' and 'g++' are interchangeable for c++ files: gcc will invoke g++ with different arguments to what you'd get if you'd invoked g++ directly.

share|improve this answer
2 
@Brian: I spend several years thinking that 'gpp' was the C++ backend... – Mike F Oct 5 '08 at 21:00
6 
gcc used to mean 'Gnu C Compiler'. That eventually changed when more languages were added. – Ferruccio Oct 5 '08 at 21:49
8 
That's not entirely true. If you just run gcc on a C++ file, it will not 'just work' like g++ does. That's because it won't automatically link to the C++ std library, etc. Just use g++ for C++ files. – jonner Oct 5 '08 at 23:57
55 
The actual compiler is "cc1" for C and "cc1plus" for C++; both gcc and g++ are drivers (which call the preprocessor/compiler/assembler/linker as needed). – CesarB Oct 23 '08 at 14:34
4 
+1 because I didn't know that the c stood for collection. – René Nyffenegger Mar 30 '12 at 8:44

GCC: GNU Compiler Collection

  • Referrers to all the different languages that are supported by the GNU compiler.

gcc: GNU C      Compiler
g++: GNU C++ Compiler

The main differences:

  1. gcc will compile: *.c/*.cpp files as C and C++ respectively.
  2. g++ will compile: *.c/*.cpp files but they will all be treated as C++ files.
  3. Also if you use g++ to link the object files it automatically links in the std C++ libraries (gcc does not do this).
  4. gcc compiling C files has less predefined macros.
  5. gcc compiling *.cpp and g++ compiling *.c/*.cpp files has a few extra macros.

Extra Macros when compiling *.cpp files:

#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern
share|improve this answer
7 
You can link the std C++ library in gcc by passing -lstdc++ parameter. – Denilson Sá Aug 23 '10 at 0:13
There are more differences between 'gcc' and 'g++' than only the standard libraries, so gcc -lstdc++ will still not get you the same behavior as g++. We put all of that language-specific behavior into its own driver for a reason, that's what it's there for. :-) – Ti Strga Jan 28 at 21:03
@TiStrga: You did not read the answer very carefully. Denilson is basically correct as he is only taking about the linking phase. – Loki Astari Jan 28 at 22:54
1 
My comment isn't talking about just linking... that's the point. Even just restricting the discussion to linking (which your answer was not), a user still won't be able to use the entire C++ standard library by only specifying -lstdc++, as there will be missing dependencies on math, RTTI, and exception information. Whether a given test case links or fails will depend on the operating system and which C++ features are used by the test case, which again is why all of that knowledge is built into the g++ driver instead of being left up to the user to figure out. – Ti Strga Jan 29 at 15:38
1 
Trust me, we have this discussion a lot, usually when a Linux user tries to move his incomplete Makefile to another platform. :-) The g++ link stage does a lot more than gcc -lstdc++ on other OSes, especially when the target is an embedded platform. Fortunately, that's why we ship a g++ in the first place. – Ti StrgaJan 29 at 15:40
show 2 more comments

For c++ you should use g++.

It's the same compiler (e.g. the GNU compiler collection). GCC or G++ just choose a different front-end with different default options.

In a nutshell: if you use g++ the frontend will tell the linker that you may want to link with the C++ standard libraries. The gcc frontend won't do that (also it could link with them if you pass the right command line options).

share|improve this answer

Although the gcc and g++ commands do very similar things, g++ is designed to be the command you'd invoke to compile a C++ program; it's intended to automatically do the right thing.

Behind the scenes, they're really the same program. As I understand, both decide whether to compile a program as C or as C++ based on the filename extension. Both are capable of linking against the C++ standard library, but only g++ does this by default. So if you have a program written in C++ that doesn't happen to need to link against the standard library, gcc will happen to do the right thing; but then, so would g++. So there's really no reason not to use g++ for general C++ development.

share|improve this answer

The only notable difference is that i you pass a .c to gcc it will compile as C, whereas g++ will always treat it as C++

share|improve this answer

“GCC” is a common shorthand term for the GNU Compiler Collection. This is both the most general name for the compiler, and the name used when the emphasis is on compiling C programs (as the abbreviation formerly stood for “GNU C Compiler”).

When referring to C++ compilation, it is usual to call the compiler “G++”. Since there is only one compiler, it is also accurate to call it “GCC” no matter what the language context; however, the term “G++” is more useful when the emphasis is on compiling C++ programs.

You could read more here: http://gcc.gnu.org/onlinedocs/gcc-3.3.5/gcc/G_002b_002b-and-GCC.html

share|improve this answer

gcc is the GNU C Compiler you should not use it to compile a C++ program, because it will give a linking error, that it can't link with the C++ standard library. g++, however, is the C++ frontend to gcc, and automatically links with the C++ standard library. GCC stands for the GNU Compiler Collection, which includes both the C and C++ compilers (gcc and g++), and some other ones, including Fortran and Java (gfortran and gcj).

share|improve this answer








출처 - http://stackoverflow.com/questions/172587/what-is-the-difference-between-g-and-gcc





















Posted by linuxism
,


컴퓨터 공학에서 메모리 맵(memory map)은 여러가지 측면에서 접근할수 있으나 컴퓨터 체계 중 메모리와 관련된 다음과 같은 경우이다:

  • 프로세스의 메모리 배치 맵 : 프로그램에 의해 작성 된 코드를 실행파일로 만들어 OS 실행할 때, 메모리에 각각의 데이터 영역을 분리하여 할당 된 지도를 말한다. 결국 프로세스가 실행되기 위한 데이터 저장 할 변수 영역, 기계어 코드 영역 등의 분류별로 나누어 저장하는 지도이다. 프로그램의 실행 시, 영역별로 나누어 분리하여 파일화하고 실행할 때는 메모리에 묶음으로 나누어 배치한 후 실행한다. 운영체계에서 실행되는 프로그램 메모리 배치 뿐만아니라 마이크로프로세서의 프로그램도 마찬가지로 메모리 나누어 배치한다.
  • 마이크로프로세서의 설계에서 메모리 배치 : 메모리 맵은 메모리와 입출력을 마이크로프로세서에서 어떻게 배치할 것인가를 규정한다. 메모리와 입출력(I/O)와의 관계 등을 규정하고, 메모리와 입출력(I/O) 메모리 배치를 한다. 주로 메모리 설계에서의 배치를 의미한다. 메모리 맵 입출력 방식과 입출력 맵 입출력 방식을 말한다.

메모리 맵은 프로그램이 작성되었을 때 마이크로프로세서와 컴파일러마다 메모리 맵의 차이가 있다. 각 메모리를 배치하는 방식과 묶음의 이름이 다르다.

프로세서의 메모리 배치 예[편집]

C언어에 의한 메모리 맵 예. 일반화 및 단순함.[note 1]

C/C++언어 등의 변수가 선언되면 각각의 데이터 처리 변수 방식에 따라 특정 묶음으로 분리한다. 프로그래밍에 의해 작성 된 코드는 기계어 코드의 묶음으로 분리한다. 프로그램이 실행할 때 필요한 요소들의 묶음을 메모리에 나누어 배치한다.

각각의 기능적 묶음은 실행파일에서 구별하여 저장한다. 사용자에 의해 실행하면 메모리에 묶음을 나누어 배치하고 기계어코드 영역을 실행 한다.

Notes:

  1.  배치할 때 이름은 CPU와 컴파일러에 따라 다르므로 개발도구를 선택하면 맵파일을 만드는 방법과 메모리 맵 파일 생성 옵션을 설정해야 한다.

마이크로프로세서의 메모리 배치[편집]

입출력의 메모리 배치 방식은 다음과 같은 방식이 있다:

  • 메모리 맵 입출력 : 입출력을 하나의 메모리의 일부로 보고 구별하지 않는다. 따라서 주소 디코딩할 때 입출력을 메모리의 일부로 설계한다.
  • 입출력 맵 입출력 : 입출력을 메모리 주소공간에서 분리하여, 입출력 주소공간을 따로 갖는다.

같이 보기[편집]



출처 - http://ko.wikipedia.org/wiki/%EB%A9%94%EB%AA%A8%EB%A6%AC_%EB%A7%B5






'Development > C' 카테고리의 다른 글

c - execlp() 함수  (0) 2013.11.03
c - pid_t  (0) 2013.11.03
c - 구조체  (0) 2013.04.26
c - 포인터(pointer) 이해  (0) 2013.04.25
c - 리터럴(literal) 상수와 심볼릭(Symbolic) 상수  (0) 2012.11.06
Posted by linuxism
,