언어/JAVA
-
자바스터디(1)언어/JAVA 2023. 10. 18. 01:00
1. 절차지향 to 객체지향 - 과거의 프로그래밍은 절차지향적이었다. 다른 말로 프로세스 지향적이었다. - 데이터를 조작하는 코드를 별도로 분리(함수 혹은 프로시저)로 쪼개고 각 프로시저들이 데이터를 조작하는 방식이다. - 각 프로시저는 다른 프로시저를 사용할 수 있고, 각 프로시저는 같은 데이터를 사용할 수 있다.(프로시저간 데이터 공유) ex) 평균 계산 프로그램 : 각 과목 점수 데이터 읽어서 합+평균구하기(함수1) -> 화면출력(함수2) 이때 각 프로시저는 데이터를 공유하는 방식 -> 데이터 중심적 구현 - 프로세스를 한눈에 볼 수 있다는 장점이 있지만 명백한 한계점이 존재한다. 1. 프로그램 규모가 커지면, 함수가 너무 많이 증가 2. 데이터 이름 의미 등등 변경이 생기면 함수를 하나씩 다 수정..
-
쓰레드 기본언어/JAVA 2023. 8. 25. 12:51
1. 멀티스레드의 개념 - 프로세스: 운영체제에서 실행중인 프로그램 - 멀티 태스킹: 두 가지 이상의 작업을 동시에 처리하는 것 (멀티프로세스,멀티스레드) - 스레드: 코드의 실행 흐름, 하나의 프로세스에서 멀티 태스킹 > 멀티 프로세스 환경에서 하나의 프로세스의 오류가 다른 프로세스에 영향x > 멀티 스레드는 하나의 스레드 예외는 다른 스레드에 영향 1.2 main 스레드 - 자바 프로그램은 메인 스레드가 main()메서드의 시작과 함께 실행된다. - 하나의 스레드는 첫 코드부터 순차적으로 실행, 마지막 코드 실행 혹은 return문을 만나면 종료 - 메인 스레드에서 추가 작업 스레드를 만들어서 실행 가능 - 멀티 스레드에서는 작업 중인 스레드가 남아있으면, 프로세스 종료하지 않는다. 2. 작업 스레드..
-
자바 네트워크 네트워크 입출력 (1) - TCP언어/JAVA 2023. 8. 22. 19:19
1. 네트워크 기초 - 네트워크는 여러 컴퓨터들을 통신 회선으로 연결하는 것 - LAN은 가정,회사,건물,특정 영역에 존재하는 컴퓨터 연결 - WAN은 LAN을 연결한 것이다. (WAN이 흔히 말하는 인터넷이다) - LAN과 LAN을 라우터가 연결 - 라우터와 LAN은 스위치로 연결 1.2 서버와 클라이언트 - 네트워크에서 유무선으로 컴퓨터가 연결되어 있다면, 실제로 데이터 주고받는 행위는 프로그램들이 한다. - 서비스를 제공하는 프로그램을 서버, 서비스 요청하는 프로그램을 클라이언트라 부른다. - 인터넷을 통해서 두 프로그램이 통신하기 위해서는 클라이언트가 서비스 요청, 서버는 처리 결과 응답으로 제공한다. 1.3 ip주소 - 컴퓨터의 고유주소이다. 컴퓨터마다 받는 것이 아니라, 네트워크 어답터(LAN..
-
Java - 일급컬렉션언어/JAVA 2023. 7. 25. 11:40
일급컬렉션이란 Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태 1.일급컬렉션 적용 규칙 - 일급컬렉션에는 컬렉션 외 다른 멤버변수 없어야한다. - 각 컬렉션은 자체로 포장돼 있음으로, 콜렉션과 관련된 동작 근거지가 마련됨 - 필터가 일급컬렉션 클래스에 일부가 된다. > 필터는 또한 스스로 함수 객체가 될 수 있다. Map map = new HashMap(); map.put("1","A"); //.. 이를 아래와 같이 클래스 안으로 묶음 public class GameRanking{ private Map ranks; public GameRanking(Map ranks){ this.ranks = ranks; } } List carList = new ArrayList(); pu..
-
Servlet-JSP MVC07 파일 수정하기언어/JAVA 2023. 7. 24. 21:23
- 파일 수정하기 - 파일 수정하기도 회원 가입시 첨부파일을 지정하는 것과 마찬가지로 - 파일 업로드하고 정보 수정 vs 파일 업로드 없이 정보 수정 - 파일 업로드하고 회원 정보 수정시 1. ajax로 먼저 파일을 업로드 시키고, 업로드 된 filename 콜백함수로 받아서 2. hidden타입 id= filename에 value를 return받은 filename으로 바꿔 둔 뒤에 3. 수정하기 누르면, 같이 넘어가도록 한다. 1. 뷰 쪽 수정 function update(){ if($("#file").val() != ''){ var formData = new FormData(); formData.append("file",$("input[name=file]")[0].files[0]); $.ajax({ ..
-
Java - File클래스언어/JAVA 2023. 7. 24. 12:27
- File은 기본적이면서도 가장 많이 사용되는 입출력 대상이다. - file클래스는 파일 혹은 디렉토리를 다룰 수 있도록 다양한 메서드를 정의하고 있다. 1. File클래스 생성자 * 파일과 디렉토리는 같은 방법으로 다룬다. * pathname에는 보통 경로까지 포함새서 지정해줘야하지만, 프로그램이 실행되는 위치와 파일의 위치가 같을 경우 파일명만 사용해도 된다. File f = new File(//path); File dir = new File(//path); //이미 존재하는 파일을 파일 객체로 참조시 File f = new File(//) //없는 파일을 생성할때 f.createNewFile(); *OutputStream에 경우 해당 스트림을 열고 파일을 쓸 때 파일이 없으면 생성해서 쓴다. (F..
-
Java - io 직렬화(Serialization)언어/JAVA 2023. 7. 24. 11:20
- 직렬화란, 객체를 저장했다가 다시 꺼내쓰거나, 네이트워크를 통해 객체를 주고받을 수 있게 만드는 방법이다. 1. 직렬화란? - 객체를 데이터 스트림으로 만드는 것을 뜻한다. - 객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것을 말한다. - 반대의 의미로 역직렬화가 있다. - 자바 프로그램에 메모리 구조에서 살펴봤듯이, 인스턴스 메서드도 객체에 포함되지 않는다 -> 동일 클래스에 여러 인스턴스 별로 다른 값을 가지지 않음 -> 힙 영역이 아닌 타 영역에 생성된 메서드 참조해서 사용 - 객체를 저장한다는 것은 인스턴스 변수값을 저장한다는 의미이다. 2. 객체 스트림 - 직렬화와 역직렬화를 위한 스트림으로 ObjectInputStream, ObjectOutputStream이 있다...
-
nextStep - 자동차 경주 일급 컬렉션 만들기언어/JAVA 2023. 7. 23. 10:54
- 일급 컬렉션을 통해 List를 감싸두면, 외부에서 List에 모든 인터페이스 접근 안하고, 필요 기능만 제공할 수 있다. public class RacingGame { private List cars; private int tryNo; public RacingGame(String carNames,int tryNo){ this.cars = initCars(carNames); this.tryNo = tryNo; } private List initCars(String carNames) { if(StringUtils.isBlank(carNames)){ throw new IllegalArgumentException("자동차 이름 없어요"); } String[] names = carNames.split(",")..