tottenham3의 등록된 링크

 tottenham3로 등록된 네이버 블로그 포스트 수는 297건입니다.

Spring Security + JWT [내부링크]

Json Web Token 세션,쿠키와 같이 비연결성 네트워크의 특징을 연결성으로 사용하기 위한 방법. 세션,쿠키는 서버에 부담이 되는 부분이 있다. JWT는 이런 자원 효율의 문제를 해결하기 위한 방법이다. JWT는 토큰 자체에 유저 정보를 담아서 암호화 한다. 암호화된 내용은 디코딩 과정을 통해서 해석한다. JWT 구조 JWT는 헤더(header), 내용(payload), 서명(verify signature)의 세가지 구조를 가지고 있다. Header : 암호화할 방식(alg), 타입(Type) 등을 포함 Payload : 서버에서 보낼 데이터 - 일반적으로 user의 id, 유효기간 포함 Verify Signature : Base64 인코딩한 Hader, Payload, Secret Key를 더한 값. JWT 인증절차 사용자 로그인 .서버에서는 계정 정보를 읽어 사용자를 확인한 후, 사용자의 고유 ID 값을 부여한다. 기타 정보와 함께 Payload에 집어 넣는다 JWT 토큰의

database 생성 및 user 추가 [내부링크]

database 추가 create database jpa_study01; user 추가 create user 'user명'@'%' identified by '비밀번호'; grant all privileges on 데이터베이스명.*TO 'user명'@'%'; flush privileges; user 조회 및 삭제 (root권한으로 들어가야함) use mysql; select user,host from user; //user명과 host 조회 delete from user where user ='user명' database 사용 use jpa_study01;

엔티티 생명주기 [내부링크]

1.비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 Member member = new Member(); member.setId("memberNo"); member.setUername("userName); 2.영속(managed) 영속성 컨텍스트에 관리되는 상태 Member member = new Member(); member.setId("memberNo"); member.setUername("userName); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); //객체를 저장한 상태(영속) em.persist(member); 3.준영속(detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 em.detach(member); 4.삭제(removed) 삭제된 상태 em.remove(member); 영속성 컨텍스트의 이점 1차캐시 한번 이상 조회한 내용은 캐시에

연관관계 매핑 -단방향 [내부링크]

회원(MEMBER)과 팀(TEAM). 회원N 팀1 @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name="MEMBER_ID") private Long id; @Column(name="USERNAME") private String useranme; /* 객체지향적이지 않은 매핑 방법 @Column(name="TEAM_ID") private Long teamId;*/ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="TEAM_ID") private Team team; //setter를 아무렇게나 만들면 set을 할 수 있어서 유지보수에 안좋음. } @Entity @Setter @Getter public class Team { @Id @GeneratedValue @Column(name="TEAM_ID") private Long id; private Strin

다양한 연관관계 [내부링크]

단방향, 양방향 1. 참조용 필드가 있는 쪽으로만 참조 가능 2. 한쪽만 참조하면 단방향 3. 양쪽이 서로 참조하면 양방향 4. 객체의 양방향 관계는 A->B , B->A 처럼 참조가 2군데 (외래키를 갖는곳을 지정해야함) 5. 연관관계의 주인: 외래 키를 관리하는 참조 6. 주인의 반대편: 외래키에 영향을 주지 않음, 단순 조회만 가능 다대일 단방향 정리 1.가장 많이 사용하는 연관관계 2.다대일의 반대는 일대다 다대일 양방향 정리 외래 키가 있는 쪽이 연관관계의 주인 양쪽을 서로 참조하도록 개발 다대일은 '다' 쪽에 외래키가 있어야 함. *일대다는 쓰지 말고 일대다 쓸바엔 다대일 양방향 사용. 일대일 관계 주 테이블이나 대상 테이블 중에 외래 키 선택 가능 ( 주 테이블에 외래키 / 대상 테이블에 외래 키) 외래 키에 데이터베이스 유니크(UNI) 제약조건 추가 * 다대일 단방향매핑과 유사 다대일 양방향 매핑처럼 외래키가있는 곳이 연관관계 의 주인 반대편은 mappedBy 적용 단

상속관계매핑 [내부링크]

상속관계매핑 관계형 데이터베이스는 상속 관계X 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 크래스마다 테이블 전략 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED: 조인전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블전략 (사용X) @DiscriminatorColumn(name="DTYPE") @DiscriminatorValue("XXX") 전략 장단점 조인전략 장점) 테이블 정규화 외래 키 참조 무결성 제약조건 활용가능 저장공간 효율화 단점) 조회시 조인을 많이 사용, 성능 저하 조회 쿼리가 복잡함 데이터 저장시 INSERT SQL 2번 호출 단일 테이블 전략 장점) 조인이

@MappedSuperclass [내부링크]

실무에서는 Controller, Service, Entity 모두 공통으로 잡아놓는 기초 클래스가 있는데. 그걸 매핑해주는 어노테이션 BaseEntity.java @MappedSuperclass @Data public abstract class BaseEntity { private String createBy; private LocalDateTime createDate; private String lastModifiedBy; private LocalDateTime lastModifiedDate; } Item.java @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn public class Item extends BaseEntity{ @Id @GeneratedValue private long Item_id; @Column private String name; @Column private int pr

JPA 프록시 [내부링크]

프록시 em.find() : 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 특징 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨. 프록시 객체는 실제 객체의 참조(target)를 보관 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 프록시 객체는 처음 사용할 때 한 번만 초기화 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아니다.초기화 되면 프록시 객체를 통해서 실제 엔티티에 접근 가능 프록시 객체는 원본 엔티티를 상속 받음, 따라서 타입 체크시 주의해야함. == 대신 instance of 사용 영속성 컨텍스트에 찾는 엔티티가 이미 있으면 em.getRefernece()를 호출해도 실제 엔티티 반환 영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태 일때,

즉시로딩과 지연로딩 [내부링크]

즉시로딩 즉시로딩을 사용할 경우 JPA구현체는 가능하면 조인을 사용해서 SQL을 한번에 조회 즉시 로딩을 적용하면 예상하지 못한 SQL이 발생. 즉시 로딩은 JPQL에서 N+1 문제를 일으킨다. @ManyToOne, @OneToOne은 기본이 즉시 로딩 이므로 LAZY 지연로디응로 설정해야함 지연로딩 모든 연관관계에 지연로딩을 사용. 실무에서는 즉시로딩 사용X JPQL fetch 조인이나, 엔티티 그래프 기능을 사용.

영속성 전이 CASCADE [내부링크]

데이터베이스의 CASCADE와 비슷한듯하다. 영속선 전이 CASCADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함꼐 영속 상태로 만들 수 있다. 예: 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장 @OneToMany(mappedBy="parent", cascade=CascadeType.PERSIST) 주의할 점. 영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없음. 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화 하는 편리함을 제공. 종류 ALL : 모두적용 PERSIST: 영속 (Insert) REMOVE: 삭제 MERGE: 병합

고아객체 [내부링크]

고아객체 고아객체 제거 : 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제 참조가 제거된 엔티티는 다른곳에서 참조하지 않는 고아 객체로 보고 삭제하는 기능 참조하는 곳이 하나일 때 사용 해야한다. 특정 엔티티가 개인 소유할 때 사용 @OneToOne , @OneToMany만 가능. 참고: 개념적으로 부모를 제거하면 자식은 고아가 된다. 따라서 고아 객체 제거 기능을 활성화 하면, 부모를 제거할 때 자식도 함께 제거된다. CascadeType.REMOVE처럼 작동됨.

@Embeddedable [내부링크]

임베디드 타입 1.새로운 값 타입을 직접 정의할 수 있음 2. JPA는 임베디드 타입(embedded type)이라 함. 3.주로 기본 값 타입을 모아서 만들기 때문에 복합 값 타입이라고도 함. 4.int,String과 같은 값 타입 5.기본 생성자를 꼭 생성해야함 6. 잘 설계한 ORM 애플리케이션은 매핑한 테이블의 수보다 클래스의 수가 더 많음. 7.임베디드 타입의 값이 null이면 매핑한 컬럼 값은 모두 null 장점 1.재사용 2.높은 응집도 3.값 타입만 사용하는 의미있는 메소드 만들 수 있음. 4.임베디드 타입을 포함한 모든 값 타입은, 값 타입을 소유한 에티티에 생명주기를 의존함. @Data @Embeddable public class Address{ private String city; private String street; private String zipcode; public Address(){} public Address(String city, String st

JPQL 조인 및 서브쿼리 [내부링크]

회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인 //JPQL SELECT m,t FROM Member m LEFT JOIN m.team t on t.name ='A' //SQL SELECT m.*,t.* FROM Member m LEFT JOIN Team t ON m.TEAM_ID = t.id and t.name ='A' 연관관계 없는 엔티티 외부 조인 //JPQL SELECT m,t FROM Member m LEFT JOIN Team t on m.username = t.name //SQL SELECT m.*,t.* FROM Member m LEFT JOIN Team t ON m.username=t.name 서브쿼리 //나이가 평균보다 많은 회원 select m from Member m where m.age > (select avg(m2.age) from Member m2) //한 건이라도 주문한 고객 select m from Member m where (select count(

TEST 코드 [내부링크]

package jpa.study_ex01.service; import jpa.study_ex01.domain.Member; import jpa.study_ex01.repository.MemberRepository; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBoot

Computed 와 methods [내부링크]

Computed 종속 대상의 변경이 일어나기 전까지는 호출되지 않음. - 데이터의 변화 종속값에 의존하며, 반환하는 결과를 캐싱 한다. methods 렌더링이 일어날 때마다 호출 함수를 실행 결론 computed는 선언된 data의 변화가 일어날때 마다 캐싱을 하여 반환값을 내놓는다. methods는 렌더링 될때마다 호출.

ES6 Object.setPrototypeOf [내부링크]

const healthObj = { showHealth: function() { console.log("오늘 운동시간:" + this.helthTime); }, setHealth: function(newTime){ this.helthTime = newTime } } const previousObj ={ name: "crong", lastTime: "11:20" }; const myHealth = { "name": "honux", "lastTime": "12:30", }; //set prototypeOf Object.setPrototypeOf(myHealth,healthObj); console.log(myHealth);

ES6 setPrototypeOf [내부링크]

const healthObj = { showHealth: function() { console.log("오늘 운동시간:" + this.helthTime); }, setHealth: function(newTime){ this.helthTime = newTime } }; const healthChildObj = { getAge: function(){ return this.age; } } Object.setPrototypeOf(healthChildObj,healthObj); const childObj = Object.setPrototypeOf({ age: 22 }, healthObj); childObj.setHealth("11:50"); childObj.setHealth(); console.log("childobj is ", childObj);

ES6 ArrowFunction [내부링크]

setTimeout(function(){ console.log("settimeout"); },1000) setTimeout( ()=>{ console.log("Arrow"); },1000) let newArr = [1,2,3,4,5].map( (v) =>v *2 ); console.log(newArr); const myObj = { runTimeout(){ setTimeout(()=>{ console.log(this === window); this.printData(); },2000); }, printData(){ console.log("hi codesquad"); } } myObj.runTimeout; function sum(value,size={value:1}){ return value*size.value; } console.log(sum(3,{value:3})); //rest parameter function checkNum(...argArray){ console.log(toS

Flex [내부링크]

<div class=container> <div class="item"> items1 </div> <div class="item"> items2 </div> <div class="item"> items3 </div> </div> 제어 (content를 품고있는 container) display flex-flow - flex-direction - flex-wrap justify-content align-content align-items items제어 (container 속 컨텐츠들) order flex flex-grow - flex-shrink - flex-basis align-self flex-direction 아이템을 세로,가로 축으로 정렬 row : item을 수평축(왼쪽에서 오른쪽으로 표시) column : item을 수직축으로 row-reverse : row의 반대축으로 column-reverse : column을 반대축으로 flex-wrap nowrap - 모든 item을

@JsonIgnore [내부링크]

양방향이 걸리는 곳은 모두 @JsonIgroe을 걸어줘야한다. 데이터를 주고 받을 때 해당 데이터는 Igroe되어서 응답값에서 보여지지 않는다 순환참조 방지

Stream [내부링크]

Stream 1.스트림은 ReadOnly 2. 스트림은 Iterator 처럼 1회용. 3.최종연산 전까지 중간연산은 수행되지 않음. 지연된 연산 public static void main(String[] args) { List<Integer> list = Arrays.asList(3,1,4,2,3); List<Integer> sortedList = list.stream().sorted().collect(Collectors.toList()); System.out.println("**"+ sortedList); } public static void main(String[] args) { IntStream intStream = new Random().ints(1,46); intStream.distinct().limit(6).sorted().forEach(i -> System.out.println(i+",")); } public static void main(String[] args) {

Spring Data JPA 페이징 [내부링크]

@Query(value = "select m from Member m",countQuery = "select count(m) from Member m") Page<Member> findByAge(int age, Pageable pageable); //countQuery는 따로 안해도 상관 없긴함. //Slice는 totalCount를 구하지않고 구하려는 갯수에서 +1개를 더 구해서 추가 페이지 여부를 확인함. Slice<Member> findByAge(int age, Pageable pageable); @Test public void paging(){ //given memberRepository.save(new Member("member1",10)); memberRepository.save(new Member("member2",10)); memberRepository.save(new Member("member3",10)); memberRepository.save(new Member(

Spring Data 벌크성 연산 [내부링크]

@Modifying @Query("update Member m set m.age = m.age+1 where m.age >=:age") int bulkAgePlus(@Param("age")int age); @Test public void bulkUpdate(){ memberRepository.save(new Member("member1",10)); memberRepository.save(new Member("member2",20)); memberRepository.save(new Member("member3",30)); memberRepository.save(new Member("member4",40)); memberRepository.save(new Member("member5",50)); memberRepository.save(new Member("member6",60)); int resultCount = memberRepository.bulkAgePlus(20); System.

EntityGraph 엔티티 그래프 [내부링크]

@Test public void findMemberLazy(){ //given Team teamA = new Team("TeamA"); Team teamB = new Team("TeamB"); teamRepository.save(teamA); teamRepository.save(teamB); memberRepository.save(new Member("member1",10,teamA)); memberRepository.save(new Member("member2",10,teamB)); entityManager.flush(); entityManager.clear(); //when // List<Member> all = memberRepository.findMemberFetchJoin(); entity graph 안쓸때 List<Member> all = memberRepository.findAll(); List<Member> all2 = memberRepository.findEntity

Auditing [내부링크]

@EnableJpaAuditing @SpringBootApplication public class StudyEx01Application { public StudyEx01Application() { /* compiled code */ } public static void main(java.lang.String[] args) { /* compiled code */ } @Bean //추가 public org.springframework.data.domain.AuditorAware<java.lang.String> auditorProvider() { /* compiled code */ } } BaseEntity @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public class BaseEntity { @CreatedDate @Column(updatable = false) private LocalDateTim

Spring Data Paging [내부링크]

@GetMapping("/members") public Page<MemberDto> list(@PageableDefault(size=5, sort = "username") Pageable pageable){ return memberRepository.findAll(pageable).map(MemberDto::new); } 반환타입이 Page이고 매개변수로 Pageable을 받아야한다. @PageableDefault로 페이징 사이즈와 정렬을 정할 수 있다. pageNumber는 0부터 시작하는데 이걸 커스텀 할 수 있다 @GetMapping("/members") public Page<MemberDto> list(@PageableDefault(size=5, sort = "username") Pageable pageable){ PageRequest pageRequest = PageRequest.of(1,10); //페이지번호 0부터 아니라 1부터 시작하게 return memberRepos

새로운 식별자 구별하기 [내부링크]

@Entity @Getter @EntityListeners(AuditingEntityListener.class) @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Item implements Persistable<String> { @Id private String id; public Item(String a) { id=a; } @CreatedDate private LocalDateTime createDate; @Override public boolean isNew() { return createDate==null; } } import jpa.study_ex01.entity.Item; import org.springframework.data.jpa.repository.JpaRepository; public interface ItemRepository extends JpaRepository<Item,String> { } @

스프링 부트 2.6 이상, Querydsl 5.0 Unable to load class 'com.mysema.codegen.model.Type' [내부링크]

buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'springdata' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' impl

JUnit5 Annotation [내부링크]

@Test 본 어노테이션을 붙여야 Test메소드로 인식한다. Test메소드로 인식을 시키기 위한 Annotaion @BeforeAll 해당 테스트 클래스를 초기화 할때 딱 한 번 수행되는 메소드 @BeforeEach 테스트 메소드 실행 이전에 수행 @AfterEach 테스트 메소드 실행 이후에 수행 @Disabled 해당 테스트 메소드 무시

querydsl 기본 문법 1) [내부링크]

기본 반환타입 @Test public void resultFetch(){ //리스트로가져옴 List<Member> list = queryFactory .selectFrom(member) .fetch(); //단건 Member fetchOne = queryFactory .selectFrom(member) .fetchOne(); // limit 1과 똑같음 Member fetchFirst = queryFactory .selectFrom(member) .fetchFirst(); QueryResults<Member> results = queryFactory .selectFrom(member) .fetchResults(); //숫자타입 long total = queryFactory .selectFrom(member) .fetchCount(); } 정렬 @Test public void sort(){ em.persist(new Member(null,100)); em.persist(new Memb

querydsl 기본문법 2) [내부링크]

집합 @Test //집합 public void aggregation(){ //쿼리 dsl 제공 튜플 List<Tuple> result = queryFactory.select( member.count(), member.age.sum(), member.age.avg(), member.age.max(), member.age.min() ).from(member) .fetch(); for (Tuple tuple : result) { System.out.println("tuple*****"+tuple); } Tuple tuple =result.get(0); assertThat(tuple.get(member.count())).isEqualTo(4); assertThat(tuple.get(member.age.sum())).isEqualTo(100); assertThat(tuple.get(member.age.avg())).isEqualTo(25); assertThat(tuple.get(member.

querydsl 기본문법 3) [내부링크]

서브쿼리 //서브쿼리 /* * 나이가 가장 많은 회원 조회 * */ @Test public void subQuery(){ //서브쿼리이기 때문에 밖의 QMember와 ALias가 겹치면 안된다. 다르게선언 QMember memberSub = new QMember("memberSub"); List<Member> result = queryFactory .selectFrom(member) .where(member.age.eq( select(memberSub.age.max()) .from(memberSub) )) .fetch(); assertThat(result) .extracting("age") .containsExactly(40); } /* * 나이가 평균 이상인 회원 * */ @Test public void subQueryGoe(){ //서브쿼리이기 때문에 밖의 QMember와 ALias가 겹치면 안된다. 다르게선언 QMember memberSub = new QMember("membe

JAVA StringBuilder [내부링크]

StringBuilder String 객체의 추가 및 삭제의 경우 메모리의 할당과 해제를 발생시킨다. String 객체의 연산이 많아질수록 가비지컬렉션이 발생한다. String은 변경불가능한 객체이기 때문이고 StringBuilder는 이러한 String객체를 변경 가능하게 해준다. 메소드 .append() - 문자열 추가 .insert(int offset,String str)- offset위치에 str을 추가 .reverse() - 해당 문자를 뒤집니다. good -> doog .substring(int start, int end) - 인덱싱, 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 -1 인덱스까지 .deleteCharAt(int index) - 인덱스에 위치한 문자 하나를 삭제 .delete(int start, int end) - start부터 end-1까지의 문자 삭제 .setCharAt(int index, String s) - index 위치의 문자를

삼각지 몽탄 [내부링크]

몽탄 서울특별시 용산구 백범로99길 50 일요일 주말 2시에 웨이팅 걸고 6시30분에 들었갔다. 이게 우대갈비 3인분이다. 우대 1개 다 갈고 2번째꺼 올려놓은 사진 냠냠 고기는 한대에 15점~20점 정도 되려나? 그리고 뼈에 붙어있는거까지 싹 짤라서 볶음밥 먹을때 같이 구워준다 이것이 바로 그사진.. 그리고 볶음밥 먹기전에 삼겹살 먹어봤다 삼겹살2인분 삼겹살 17,000원 이었던듯? 반찬으로 나오는 와사비,소금,청어알?, 동치미 이렇게 냠냠 먹었고 우대갈비 양은 적었지만 굉장히 맛있었다. 삼겹살은 별로였다. 볶음밥도 맛있었고 소주,맥주는 각각 5천원이었던듯

신대방삼거리 서민준밀밭 [내부링크]

서민준밀밭 서울특별시 동작구 상도로12길 7 콩칼국수를 시켰다. 만원이었나? 간은 밍밍하기 때문에 소금을 타고 먹어야한다 국물 고소하고 진한편이다. 김치도 맛있다

구로디지털단지 구도로통닭 [내부링크]

구도로통닭 구로디지털점 서울특별시 구로구 디지털로32나길 35 2층 구도로통닭 \ 양념반 치즈반을 시켰다. 치킨 안에는 찹쌀밥이 들어있었다. 한마리 몽땅 치즈만 시키려다가 양념반 치즈반을 시켰는데 이게 더 나은 선택이었던거 같다. 맛있다. 사이드로 시킨 닭껍질 튀김 이건 kfc에서 파는게 조금 더 나을듯 생맥주.. 전반적으로 치킨은 매우 만족스러웠다. 닭껍질튀김도 맛있는편 근데 생맥이랑 같이먹으니까 배불러서 맥주를 얼마 못마셨다 치킨의 양념은 달라고하면 더 준다. 티오더에 있었다.

[홍대] 바다회사랑 [내부링크]

바다회사랑 서울특별시 마포구 동교로27길 60 방어 중 포장했다. 부위는 골고루 들어있다. 김,밥,백김치 와사비 등등 부속품으로 온다 방어 꽤 먹어봤는데 여기 왜 줄서서 먹는지는 아직 이해 잘 안가지만 포장이라면 괜찮은듯 회가 두툼하니 야무지긴하다

[장승배기] 마쯔리 [내부링크]

마쯔리 서울특별시 동작구 상도로15길 131 상도 휴엔하임 메뉴판~ 명란치즈찌꾸아 튀김~ 명란크림우동~ 여기는 내가 자주가는 단골집인데 상당히 괜찮은곳~ 모든 안주가 다 평타치고 자리도 괜찮다 사장님도 착하시다

[광화문] 광화문뚝감 [내부링크]

광화문뚝감 서울특별시 종로구 새문안로3길 21 주말이라 그런지 30분정도 웨이팅을 했다. 감자탕 소 를 시켰고 거의 5분만에 나왔다. 큰 뼈 6~7개 있었다. 2명이서 소만 먹으면 양이 좀 적은거같다 중 시켜도 괜찮을듯 감자탕 소 28,000원 볶음밥 3천원 맛은 쏘쏘

[연남동] 저스트텐동 [내부링크]

저스트텐동 연남본점 서울특별시 마포구 동교로46길 3 밑반찬으로 나왔던 방울토마토 존맛탱이었다 냉우동~ 이것도 맛있었다 저스트텐동~ 스페셜텐동이라고 부르는게 맞을듯 양도 적당하고 맛있었다.

[강남] 더블린브루어리 [내부링크]

더블린브루어리 강남점 서울특별시 서초구 서초대로78길 26 2층 그냥 지극히 평범했던..

docker container 백업 [내부링크]

백업전상태 저장 docker commit -p [콘테이너id] [명칭] 백업 docker save -o [저장될파일명].tar [이미지명] 복원 docker load [백업한 파일명].tar docker images 확인

docker container 설정오류로 무한 restart [내부링크]

mysql에서 my.cnf 파일을 수정했다 수정을 하고 도커 컨테이너를 재실행했더니 mysql이 그냥 계속 리스타트 하는거다.; 왜지? 하고 도커 컨테이너 로그를 봤는데 내가 설정한 부분에서 잘못됐었다. my.cnf파일을 수정해야하는데 container가 계속 혼자 껏다켜지니 docker exec -it 컨테이너명 /bin/bash 컨테이너에 진입을 못했다. 켜져있을때 들어가도 다시 껏다켜지니까 빠져나와졌다. 그래서 대가리싸매고 고민하다가 docker cp로 컨테이너에 있는 my.cnf를 루트로 복사해서 문제가 됐던 설정부분을 삭제하고 다시 docker cp로 컨테이너에 집어넣었다 컨테이너에서 host로 docker cp 컨테이너id:/etc/mysql/my.cnf / host에서 컨테이너로 docker cp /my.cnf 컨테이너id:/etc/mysql

윈도우에서 포트 죽이기 [내부링크]

명령 프롬프트 (cmd) 관리자의 권한으로 오픈 명령어 netstat -a- o 해당하는 포트를 찾아서 pid에 주목한다 taskkill /f /pid 9156 나는 8080포트를 죽였따

Vue.js 설치하기 [내부링크]

환경설정 Vue.JS를 설치해보겠다. 우선 VSCode를 설치했다. https://code.visualstudio.com/ Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. code.visualstudio.com node js를 설치한다 https://nodejs.org/ko/ Node.js Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org nodejs 설치가 완료되면 환경

Vue.js 프로젝트 만들기 [내부링크]

VSCode 터미널에서 vue create 프로젝트명 명령어를친다. Vue3 Vue2 둘의 선택하라는 말이 나오는데 키보드 방향키로 해당 버전을 선택하여 엔터를 치면된다 프로젝트가 만들어졌다. 폴더 위치는 터미널 실행 위치와 같다.

template might not exist or might not be accessible by any of the configured template resolvers [내부링크]

ajax 사용 후 에러나옴.. $('#btn_hart').click(function(){ var param = { num:$("#num").val() }; $.ajax({ url:"/board/plusHart", type:"PUT", data:param }).done(function(){ }); }); 원인은 컨트롤러가 @Controller 였기때문이었다. @RestController였으면 컨트롤러 자체가 ResponseBody를 품고있어서 상관없는데 @Controller라서..;; @PutMapping("/plusHart") public @ResponseBody void HartPlus(@RequestParam Map<String,Object> param){ boardService.plusHart(Integer.parseInt(param.get("num").toString())); } 메소드 타입 앞에 @ResponseBody를 야무지게 넣어주면서 해결완료 요즘 고양이 한마리 키우

Entity 테이블 대소문자 구분 [내부링크]

application.properties에 아래 코드 추가 spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

Open API Cors [내부링크]

OpenAPI 연동을 할 때 proxy Server가 제대로 구현되어 있지 않을때 에러가 나올 수 있다. 본인은 Open API를 연동할때 프록시 서버가 제대로 구현되어있었기 때문에 Cors 에러를 보지 못했다, 하지만 면접을 볼때 질문을 받았었기에 찾아보았다. Cors의 보통의 에러? Access to XMLHttpRequest at '~' from origin '~' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource 프록시서버가 없는 상황에서 OpenAPI를 연동해야할때 https://cors-anywhere.herokuapp.com/ 를 API 주소 앞에 적는다면 본인의 proxy server를 대체하여 사용할 수있다. SOP (Same-origin policy) SOP은 같은 Origin에만 요청을 보낼 수 있는 보안 정책을 의미함

JAVA8과 JAVA11에 추가된 내용. [내부링크]

JDK8 변경사항 람담 표현식 - 함수형 프로그래밍 스트림 API (Stream API) - 데이터를 추상화하여 다룰 수 있음 java.time 패키지 - LocalDate 나즈혼 (Nashorn) - javascript 새로운 엔진 도입 Interface - 상수필드, 추상메서드,디폴트메서드 자동 타입변환 강제 타입변환 JAVA8은 람다와 스트림이 가장 큰 변환점. JDK11 변경사항 람다 파라미터를 지역변수로 표현 가능 HTTP Client - Non-Blocking request and response 지원 , Backpressure 지원, Rest Client에 RestTemplate 대신해 WebClient를 사용하여 비동기 구현가능. 모듈 메모리 관리 효율적으로 구성 - 캡슐화에 더 요긴해짐 통합로깅 오버헤드가 낮은 힙 프로파일링 가비지 수집 - G1GC 가비지 우선 가비지 수집기 Docker 컨테이너 향상된 기능 - 컨테이너에 설정된 메모리 및 CPU 제약 조건은 JVM

@OneToMany, @ManyToOne [내부링크]

@OneToMany , @ManyToOne OneTOMany는 1:N 관계 쉽게 권한:user 라고 볼 수 있다 권한이 Member인 user는 여러명. ManyToOne은 N:1 관게. @OneToMany , @ManyToOne 속성 Optional - false로 설정할 시 해당 객체에 null 삽입 가능. ManyToOne , OneToOne : false = 내부조인 , true 외부조인 OneToMany, ManyToOne : false 외부조인, true 외부조인 cascade - 영속성 전이 - 부모 엔티티가 영속화 될 때 자식 엔티티도 같이 영속화되고, 부모 엔티티가 삭제될 때 자식 엔티티도 삭제되는 등 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 전이되는 것을 의미. - CascadeType.ALL : 모든 Cascade 적용 - CascadeType.PERSIST : 엔티티를 영속화 할 때, 연관된 엔티티도 함께 유지 - CascadeTyp

docker container 로그 보기 [내부링크]

docker logs --tail 50 --follow --timestamps 컨테이너명 docker mysql 컨테이너에 my.cnf 파일을 수정하고 해당 컨테이너를 리스타트했는데 계속 restarting 되었다. 이유가뭐지 왜 자꾸 혼자 껏다켜지지 로그를 보니.. 내가 my.cnf 파일을 잘못 수정해서 그런것이었다. 일단, 되돌려놓고..계속 찾아보자

docker image , container [내부링크]

자꾸 까먹어서 정리 이미지 갖고오기 docker pull mysql (docker hub 로그인 되있어야함) docker run -d --name <컨테이너이름> <pid> docker exec -it pid /bin/bash

AWS EC2 인스턴스 포트열기 [내부링크]

공짜로 만든 서버에 포트를 열어보자 1. 인스턴스 화면에서 '보안' 탭에 들어간다. (아래에있음), 그러면 인스턴스의 보안그룹이 보인다 이부분 클릭의 파란색 부분을 클릭하여 상세에 들어간다. 2.아래에 인바운드 규칙편집을 클릭한다. 3. 규칙 추가를 누른 다음. 포트 범위를 작성한다 ex)8070, 8090 등 0.0.0.0은 모든 아이피의 접속을 허용한다는 의미이다. #AWS #EC2 #PORT오픈

Docker 설치 및 기본적인 설정하기. [내부링크]

docker 설치 및 도커 그룹 사용자 추가 //도커 패키지 설치 sudo wget -qO- http://get.docker.com/ | sh //usermod 명령어로 현재 user를 docker 그룹에 추가 꼭해야함.. sudo usermod -aG docker $USER docker hub - docker image pull (도커 이미지 다운) https://hub.docker.com/ Docker Hub Container Image Library | App Containerization Docker Hub is the world's largest library and community for container images Browse over 100,000 container images from software vendors, open-source projects, and the community. Official Images Get Started Sign Up hub.d

Dockerfile [내부링크]

Dockerfile - image build && 이미지를 작성하는 설정 파일 사용자가 원하늗대로 이미지를 만들 수 있도록 설정하는 파일. 사용자가 수동으로 했던 작업을 자동으로 할 수 있음. 물론 설정하기 나름 Dockerfile 명령어 Dokcerfile 명령어는 대문자로 적어야함. ex) 이런식으로 명령어는 대문자. FROM - Docker 베이스 이미지 지정 명령어. <image name>:<tag> 형식으로 작성 MAINTAINER - 메인테이너 정보 (만든사람 이름 박제 가능) RUN - Shell Script 또는 명령어 실행. LABEL - 라벨링 작성. 이미지 간략히 설명. CMD - RUN은 이미지 실행 설정이며 CMD는 컨테이너 실행 명령어. ENTRYPOINT - 컨테이너가 시작될때 실행되는 명령어.CMD보다 우선되기 때문에 CMD 명령어를 씹어버릴 수 있음. EXPOSE - 컨테이너 포트 개방 ENV - 환경변수를 설정할 수 있음. ADD -파일 또는 디렉토리

Docker Compose [내부링크]

Docker Compose docker container를 모아서 관리하기. docker-compose version 이라고 치면 현재 docker-compose의 버전을 확인 해볼 수 있다. docker-compose는 .yml 확장자 파일을 만들어서 실행한다. 야멜이라고 부른다. #docker #compose version: "3.7" //버전을 필수로 적어줘야한다. services: app: # The app service definition // #은 주석을 의미한다. mysql: image: mysql:5.7 //이미지명 restart: always // 서버 리스타트할때 항상 리스타트된다. ports: - "3306:3306" //mysql 기본포트 docker Compsoe 실행은 보편적으로 docker-compse up 이미지 재빌드가 필요할 경우 docker-compose up --build docker compose 중지 docker-compose stop dock

docker mysql 설치 [내부링크]

docker-compsoe.yml version: "3" services: db: image: mysql:8.0.26 restart: always volumes: - ./mysqldb:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=123456789a - MYSQL_DATABASE=JISUNG2022 ports: - "3306:3306" 위 스크립트로 yml 파일을 만든 후 docker-compose up 해준다. mysql 들어가기 ubuntu@ip-172-35-35-35:~$ docker exec -it PID /bin/bash root@6632161d23ef:/# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 560 Server version: 8.0.26 MySQL Comm

/Program Files/Java/jdk-11.0.9/bin/java.exe'' finished with non-zero exit value 1 [내부링크]

Settings - Build,Excution..... - Gradle 에서 Build and run using과 Runtests using 을 IntelliJ IDEA 로 변경 #gradle #non-zero #

[MYSQL]Access denied for user' user명'@'ip' [내부링크]

아마존 EC2 , mysql8.0.2.6 workbench에서는 접속이 잘 됐는데 인텔리제이에서만 접속이 안됐다 뭐가문제지. 고민끝에 여러가지 헛짓거리하다가 grant all privileges on 데이터베이스명 to '유저'@'%' with grant option; flush privileges; 기존에는 with grant option과 flush privileges; 를 안썻었다 저거 두개를 넣어서 다시 하니까 잘됐다. 하여튼 신기하다 인텔리제이에서만 접속이 안되다니.. #MYSQL #외부접근

JpaRepository와 CRUDRepository [내부링크]

JpaRepository - JPA 관련 특화 기능들 + CrudRepository와 PagingAndSortingRepository 기능 CRUDRepository - CURD 관련 기능 상속관계

[mysql] error code:1175 [내부링크]

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. DELETE FROM BOARD; BOARD의 모든 데이터 열이 삭제가 안되었다. 이유는 SAFE MODE 였다. 물론 나는 SAFE MODE를 설정한적이 없다. 자동으로 되나보다.. 여튼 set sql_safe_updates=0; 위 명령어로 해결했다.

textarea 데이터 표기 [내부링크]

<div class="form-group"> <label for="content" class="col-sm-2 control-label">내용</label> <textarea id="content"class="form-control" name="content" rows="3" th:text="${data.content}"></textarea> </div> th:value 로 하면 값 안나오고 th:text로 하면 값나옴;;

Singleton Pattern [내부링크]

Singleton Pattern 인스턴스: 속성과 기능을 가진것 중 실제하는 것 ex) 공장에서 시속 150km까지 달릴 수 있는 자동차가 나왔다. 위 문장에서 인스턴스는 '자동차' 하나만 생성해야할 객체를 위한 패턴 요구사항 개발중인 시스템에서 스피커에 접근 할 수 있는 클래스를 만들어 주세요. 구현 public class SystemSpeaker { static private SystemSpeaker instance; private int volume; public int getVolume() { return volume; } public void setVolume(int volume) { this.volume = volume; } private SystemSpeaker(){ volume=5; } public static SystemSpeaker getInstance(){ if(instance==null){ instance=new SystemSpeaker(); } return i

Prototype Pattern [내부링크]

프로토타입 패턴 프로토타입 패턴을 통해 복잡한 인스턴스를 복사 생산 비용이 높은 인스턴스를 복사를 통해서 쉽게 생성 할 수 있도록 하는 패턴 생상비용이 높은 인스턴스란? 1. 종류가 너무 많아서 클래스로 정리되지 않는 경우 2. 클래스로부터 인스턴스 생성이 어려운 경우 요구사항 그림그리기 툴 개발 복사 붙여넣기 기능 구현하기. Shape.java public class Shape implements Cloneable{ private String id; public void setId(String id) { this.id = id; } public String getId() { return id; } } Clone.java public class Circle extends Shape { private int x,y,r; public Circle(int x, int y, int r){ super(); this.x=x; this.y=y; this.r=r; } public Circle co

Builder Pattern 빌더패턴 [내부링크]

Builder Pattern 빌더패턴 복잡한 단계가 필요한 인스턴스 생성을 빌더 패턴을 통해서 구현할 수 있다. 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴 구현 BluePrint.java public abstract class BluePrint { abstract public void setCpu(); abstract public void setRam(); abstract public void setStorage(); public abstract Computer getComputer(); } LgGramBlueprint.java public class LgGramBlueprint extends BluePrint{ private Computer computer; public LgGramBlueprint(){ computer =new Computer("default","default","default"); } @Override public void set

Builder Pattern -2 실무에서사용예시 [내부링크]

Main public class Main { public static void main(String [] args) { // Computer computer = new Computer("i7","16G","256"); Computer computer = ComputerBuilder .start() .setCpu("i7") .setRam("16G") .setStorage("256G") .build(); } } Computer computer = new Computer("i7","16G","256"); 위 코드가 일반적으로 사용하는 코드이다 아래의 코드는 위 코드를 좀 더 가독성있게 만들어놓은 코드. 즉 Builder패턴이다. Computer.java public class Computer { private String cpu; private String ram; private String storage; @Override public String toString() { return "

Abstract Factory Pattern [내부링크]

Abstract Factory Pattern 추상팩토리 패턴 생성 부분의 가상황/ 관련있는 객체 구현 BikeFactor interface package abst; public interface BikeFactory { public Body createBody(); public Wheel createWheel(); } Body Interface package abst; public interface Body { } Wheel interface package abst; public interface Wheel { } samBody.class package sam; import abst.Body; public class SamBody implements Body { } samfactory.class package sam; import abst.BikeFactory; import abst.Body; import abst.Wheel; public class SamFactory impleme

AWS EC2 만들기 [내부링크]

1. AWS를 가입하고 난 후 첫 화면이다. 우측 상단에 리젼을 '서울' 로 해야한다. 2.로그인 후 EC2를 검색하거나 솔루션 구축 -> 가상 머신 시작에 EC2 사용을 클릭한다. 3.Ubuntu Server 20.0.4 LTS를 선택한다. 4.'프리티어 사용 가능'을 선택한다. 5.30GB까지 무료이므로 크기를 30으로 설정한다. 6.인스턴스 보기를 클릭한다. 그뒤로도 계속 넘어간다(별로 의미없음) 7. 생성되었다. 8.왼쪽 메뉴에서 탄력적IP 주소 할당을 선택한다. IP를 할당받아야 아마존에 내 서버에 접속이 가능해진다. 9. 인스턴스에 내가 프리티어로 사용하고있는 서버를 선택한다. 10. 할당된 ip까지 확인된다면 서버는 받은거다. 서버를 만들고 나면 pem 확장자의 파일이 생긴다. 이건 putty로 아마존에 접속하기 위해 필요하므로 무조건 삭제하지말고 갖고 있어야한다. 절대 삭제하면 안된다.

AWS EC2 서버 접속하는법 (윈도우) [내부링크]

1. PuTTY: a free SSH and Telnet client (greenend.org.uk) 페이지에 접속한다. 맨 상단에 Download it here 를 클릭한다. 2. puuty를 bit 형식에 맞게 다운로드 받는다. 3. puttygen 을 bit 형식에 맞게 다운로드받는다. ec2를 받으면서 받은 pem 확장자 파일을 ppk 확장자로 변환하기 위해 필요하다. 4.puttygen에 들어간 후 맨 아래 라디오버튼에서 RSA를 선택한다. 그리고 Load를 클릭한 후 EC2를 만들면서 생긴 pem 파일을 넣는다. 5. Save private key 버튼을 클릭하여 저장한다. 6.아래와 같은 ppk 파일이 만들어졌을것이다. 7.PUTTY를 열은다음 Host Name을 아래와 같이 적는다. 탄력적ip는 할당받은 ip를 넣어준다 8. 좌측의 SSH를 선택 후 Auth에 들어간다. Browser를 클릭한 후 puutygen을 통해 만든 ppk 확장자 파일을 넣는다. 8. 공짜로

sudo apt-get update [내부링크]

linux 버전 업데이트 리다이렉션(redirection) 표준 스트림 흐름을 바꿔줌 명령어 표준 출력을 화면이 아닌 파일에 쓸때 사용 소프트(심볼릭) 링크 ln -s A B 일종의 바로가기 ls -al 할경우 소프트링크 확인 가능 A파일을 삭제시 B파일까지 접근 불가

도커, 대체 왜 쓸까? [내부링크]

도커 왜 쓸까? 첫 회사 입사 후 한달정도 회사에서 프로젝트를 소소하게 수정,추가개발 하다가 파견을 가게됐다. 파견을 간곳에서 서버를 설치하게 되었다.. 물론 사수분께 배우면서.. 개발서버, 운영서버 중에 개발을 내가 설치하게 되었는데 개발환경은 1.우분투 2.도커 - oracle, tomcat...기타 등등 회사 패키지 3.젠킨스 4.nginx 설치를 완료하고 프로젝트를 개발하여 배포하는 과정에 서버가 자주 고장이났고 수정을 해줘야할때가 많았다. 그때마다 도커 컨테이너에 들어가야 했고.. 도커에 대해 큰 관심을 갖게되었다. 도커를 공부하면서 도커를 대체 왜쓸까?라는 물음이 돌아왔고, 사수분이 친절하게 얘기를 해주셨지만.. 솔직히 이해가 잘 되지 않았다. 나는 도커를 쓰기 전 환경을 잘 모르니까... 그런거 아닐까 전쟁을 겪은 세대와 전쟁을 겪지 않은세대..? (너무 갔다) 여튼 도커를 왜 쓸까? 1. 개발자가 만든 그대로 어디서든 돌아가게 된다. (하드웨어가 달라도 컨테이너 설정이

https 란 무엇인가 [내부링크]

https Hyper - Text Transfer Protocol Secure 기존의 http사이트보다 안전하다는 뜻 1.내가 다른곳에 보내는 정보를 다른 누군가가 훔쳐보지 못하게 함. 2.사이트가 믿을만한 곳인지 확인가능 ( 기관이 인증한 사이트만 https를 사용 가능하기 때문) ex) https://www.naver.com 과 http://www.naver.cm 둘은 다름. 네이버 네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요 www.naver.com 공개키 암호화 방식에는 공개키와 대칭키가 있다 대학생때 정보보안프로그래밍 수업을 들었던 기억이 갑자기 난다. 해쉬 알고리즘 써가며 대가리 깨질거 같았는.데..ㅋㅋ 간단히 말하면 대칭키는 평문을 암호화하는 키와 복호화하는 키가 똑같은 거다. 공개키는 평문을 암호화하는 공개키는 공개해버리고, 복호화하는 키는 혼자 아무도 모르게 갖고있는것이다. 클라이언트(사용자 ) - 서버(네이버) 가 있다고 할때. 1. 클라이언트는 정보

Querydsl [내부링크]

Querydsl 설명 쿼리메소드나 @Query를 이용하는 경우에는 고정적인 쿼리만을 만든다. 동적인 상황에 대한 처리를 하려면 Querydsl을 이용해야 한다. Querydsl의 dsl은 'Domain Specific Language'의 약자로 특정 도메인 객체를 조회한다는 의미이다. 동적인 쿼리를 작성하는 방법은 Criteria라는 것도 있지만 Querydsl이 편리하다. Querydsl을 사용하기 위해서 라이브러리와 Maven 설정을 변경해야 한다. 스프링 데이터 JPA와 Querydsl 스프링 데이터 JPA가 Querydsl을 지원하는 방법은 2가지가 있다. - QuerydslPredicateExecutor를 상속 받는다. - QuerydslRepositorySupport를 상속받고 사용자 정의 레포지토리를 구현한다. Querydsl 지원 레포지토리 구현 public interface MemberRepository extends CrudRepository<Member,Long>

Spring Data 사용자 정의 인터페이스 [내부링크]

Spring Data 사용자 정의 인터페이스 @Query를 이용하는 방식은 JPQL의 내용이 고정적이라는 것이다. JPQL을 원하는 시점에 동적으로 처리할려면 사용자가 직접 Repository를 조절하는 방식으로 사용해야 한다. QuerydslPredicateExecutor를 이용하여 스프링 데이터 JPA에서 Querydsl을 사용할 수 있지만 join 기능 등을 사용 할 수 없다. 스프링 데이터 JPA가 제공하는 QuerydslRepositorySupport를 사용하려면 Querydsl이 제공하는 다양한 기능을 사용할 수 있다. 사용자 정의 인터페이스 구현 방법 1.원하는 기능을 하는 사용자 정의 인터페이스 설계한다. 2.엔티티 Repository 인터페이스는 사용자 정의 인터페이스를 상속하도록 한다. 3.Repository 이름 + Impl로 엔티티 Repository 인터페이스를 구현하는 클래스를 정의한다. 4.구현클래스는 QuerydslRepositorySupport를 부모클

toString() , String.valueOf() [내부링크]

공통점 toString() ,String.valueOf() 둘 다 모두 Object를 String 형변환 해준다. 차이점 toString()은 변환한 값이 Null 일 경우 'NullPointException' 에러를 발생한다. String.valueOf()는 Null 또한 String으로 받아드려 "Null" 값을 출력한다. public static void main(String[] args) { HashMap<String,Object> map = new HashMap<>(); map.get("toString").toString(); } map.get("toString").toSring() 에서 걸려서 NPE 가 떳다. public static void main(String[] args) { HashMap<String,Object> map = new HashMap<>(); String vof=String.valueOf(map.get("String.valueOf")); System.

[JAVA] XML 파싱 후 JSON 변환 [내부링크]

java에서 xml 파싱 하는 방법. class Main { public String XMLParsing() throws Exception{ String output=""; try{ FileInputStream is = new FileInputStream("test.xml"); String xml = IOUtils.toString(is,"UTF-8"); JSONObject object = XML.toString(xml); ObjectMapper mapper = new ObjectMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); Object json = mapper.readValue(object.toString(),Object.class); HashMap<String, Available> map = (HashMap<String, Available>) mapper.readValue(object.toString()); output

HashMap) keyset,entryset,getordefault [내부링크]

keyset keyset은 HashMap에 key값만 필요한 경우 사용한다. for(char key:map.keySet()){ System.out.println(key); } key값만 출력할 수 있다. entrykey entrykey는 HashMap에 key,value 값을 둘 다 출력 할 수 있다. HashMap<String,String> map2 =new HashMap<>(); for(Map.Entry<String,String> entry: map.entrySet()){ System.out.println("key"entry.getKey() + "value" + entry.getValue()); } Map entry에 담긴다. getordefalut HashMap<Character,Integer> map =new HashMap<>(); for(char x : str.toCharArray()){ map.put(x,map.getOrDefault(x,0)); } map에 값이 있을경우

Stratege Pattern 스트래티지 패턴 [내부링크]

인터페이스 기능에 대한 선언과 구현 분리 public interface Ainterface { //기능에 대한 선언 public void funcA(); } public class AinterfaceImpl implements Ainterface { @Override public void funcA() { System.out.println("AA"); } } 기능을 사용 통로 public class Main { public static void main(String [] args){ Ainterface ainterface = new AinterfaceImpl(); //통로 ainterface.funcA(); } } 델리게이트 Deligate 위임하다 델리게이트 - 다른객체의 기능을 빌려서 사용하는것. public class AObj { public AObj(){ Ainterface ainterface= new AinterfaceImpl(); } public void funcAA(){

java.io.File 메소드 [내부링크]

java.io.File 인터페이스 연계를 하다보니, 자주 다뤘었는데.. 제대로 정리를 해보려고 한다. 자주 쓰는것들을.. 파일 내용이 아닌 파일 자체를 다룬다. (JSONObject, XML Mapper, FileInputStream 메소드를 이용하여 내용까지 다룰 수 있음) 공통코드 public class Main { public static void main(String[] args) { try { File file = new File("/home/File/read/test.txt"); File [] list = new File ("/home/File/read/test.txt"); if(file.exists()){ System.out.println("파일"); }else{ System.out.println("파일아님."); } } catch (Exception e) { System.out.println("파일 및 폴더 생성에 실패했습니다."); } } } boolean 타입 ex

어댑터 패턴 Adapter Pattern [내부링크]

Adapter Pattern 어댑터 패턴 연관성 없는 두 객체 묶어 사용하기 사전적 의미의 Adapter - 기계, 기구 등을 다목적으로 사용하기 위한 부가 기구 요구사항 두 수에 대한 다음 연산을 수행하는 객체를 만들어 주세요. - 수의 두 배의 수를 반환 : twiceOf(Float):Float - 수의 반(1/2)의 수를 반환 : halfOf(Float):Float 구현 객체의 이름은 'Adapter'로 해주세요. Math 클래스에서 두 배와 절반을 구하는 함수는 이미 구현되어 있음 public interface Adapter { //원하는 기능 public Float twiceOf(Float f); //원하는 기능 public Float halfOf(Float f); } public class AdapterImpl implements Adapter { @Override public Float twiceOf(Float f) { return (Float) Math.doubled(

템플릿 메소드 패턴 ( Template Method) [내부링크]

템플릿 메소드 패턴 ( Template Method) 공통적인 프로세스를 묵어주기 알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의하는 패턴 언제 사용? 1.구현하려는 알고리즘이 일정한 프로세스가 있다. 2.구현하려는 알고리즘이 변경 가능성이 있다. 어떻게? 1.알고리즘을 여러 단계로 나눈다. 2.나눠진 알고리즘의 단계를 메소드로 선언한다. 3.알고리즘을 수행할 템플릿 메소드를 만든다. 4.하위 크래스에서 나눠진 메소드들을 구현한다. 요구사항 1.신작 게임 접속 구현하기 2.유저가 게임 접속시 고려 사항 - 보안 과정: 보안 관련부분 처리 - 인증 과정: user name과 password가 일치하는지 확인 - 권한 과정: 접속자가 유료회원인지 무료회원인지 게임 마스터인지 확인한다. - 접속 과정: 접속자에게 커넥션 정보를 넘겨준다. 구현 추상 클래스 AbstGameConnectHelper public abstract class Abst

Factory Method 팩토리 메소드 패턴 [내부링크]

Factory Method Pattern 구조와 구현의 분리를 이해하기. 팩토리 메소드 패턴 - 객체를 생성하기 위한 인터페이스 정의, 어떤 인스턴스를 만들지는 서브 클래스에서 결정 팩토리 추상 패턴 - 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상, 클래스를 지정하지 않고도 생성. 즉 클래스의 인스턴스를 만드는 일을 서브클래스에 맡김. 요구사항 게임 아이템과 아이템 생성 구현 - 아이템 생성 전 데이터베이스에서 아이템 정보를 요청 - 아이템 생성 후 아이템 복제 등의 불법을 방지하기 위해 데이터 베이스 아이템 생성 로그 남기기 아이템을 생성하는 주체를 ItemCreator로 명명 아이템은 item이라는 interface로 명명 - item은 use함수를 기본 함수로 갖고있기. 현재 아이템 종류는 체력물약, 마력물약. 구현 Item interface public interface Item { public void use(); } item abstract class p

Controller Method Parameter [내부링크]

주요 매개변수 Model 이동 대상에 전달할 데이터를 가지고 있는 인터페이스 RedirectAttributes 리다이렉트 대상에 전달할 데이터를 가지고 있는 인터페이스 JavaBeans Class 요청 파라미터를 가지고 있는 자바빈즈 클래스 MultipartFile 멀티파트 요청을 사용해 업로드된 파일 정보를 가지고 있는 인터페이스 BidingResult 도메인 클래스의 입력값 검증 결과를 가지고 있는 인터페이스 java.util.Locale 클라이언트 로캘 java.security.Principal 클라이언트 인증을 위한 사용자 정보를 가지고 있는 인터페이스 * 컨트롤러 매개변수명 자바 소스를 컴파일할 때 -g 옵션(디버깅 정보를 출력하는 모드)을 사용해야 매개변수명을 인식 할 수 있다. 만약에 그럴 수 없다면 value(name)속성을 지정한 애너테이션(@RequestParam, @PathVariable)을 사용해야한다. 주요 애너테이션 @PathVariable URL에서 경로

Date 타입 처리 @DateTimeFormat [내부링크]

기존 자바의 날짜와 시간 관련 클래스들의 문제점이 많아 새로 개선된 클래스(LocalDate,LocalDateTime 등)를 사용하다보면 기존 스프링에서 자동으로 문자열에서 Date타입으로 변환되던 것이 더 이상 가능하지 않다는 것을 알게된다. 이를 해결하기 위해서는 스프링의 데이터 타입 변환 매커니즘을 이용하거나 @DataTimeFormat을 사용하는 것이다 @DateTimeFormat 애너테이션 *사견 내가 다니는 회사의경우 Date타입은 대부분 쿼리에서 처리. <a:th:href="@{registerByGet01?userId=hongkd&dateOfBirth=20180908}"> registerByGet01?userId=hongkd&amp;dateOfBirth=20180908</a> <br> @GetMapping("/registerByGet01") public String registerByGet01(String userId,@DateTimeFormat(pattern="yyyy

&lt;option&gt; 값 for문 돌려서 뽑기 [내부링크]

<form th:action="@{/registerMultipleSelect}" method="post"> carArray<select name="carArray"multiple> <option value="volvo">volvo</option> <option value="saab">saab</option> <option value="opel">Opel</option> <option value="Audi">Audi</option> <input type="submit" value="registerMultipleSelect02"> </form> @PostMapping("/registerMultipleSelect02") public String registerMultipleSelect02(String[] carArray){ for(int i=0; i<carArray.length; i++){ log.info(carArray[i]); }

01_타임리프란? [내부링크]

타임리프 타임리프(Thymeleaf)는 자바 라이브러리이며, 웹과 웹이 아닌 환경 양쪽에서 텍스트, HTML,XML,javascript,CSS 그리고 텍스트를 생성할 수 있는 템플릿 엔진이다. 웹 애플리케이션에서는 뷰(view) 계층에 적합하지만, 오프라인 환경에서 많은 형태로 처리가 가능한다. 주요기능 - XML, XHTML 그리고 HTML5를 위한 자바 템플릿 엔진이다. 다른 템플릿 포맷으로 확장이 가능. - 웹과 오프라인 양쪽 환경에서 동작, 서블릿, API에 대한 강한 의존성이 없다. - 다이얼렉트(dialect)라고 불리는 기능 셋 모듈을 기반으로 한다. - 다양한 템플릿 모드(XML,XHTML,HTML5)를 제공한다. - 완벽한(그리고 확장가능한) 국제화를 지원한다. 구현 <!--타임리프가 사용된다는 것을 나타낸다.--> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Home</title> <meta http-equi

JPA [내부링크]

JPA - Java Persistence API 자바 표준 ORM Object-Relational Mapping, Object-Relational Mapper JPA 흐름도 JPA 요소 Entity - 데이터베이스에서 지속적으로 젖아된 데이터를 자바 객체에 매핑한 것. - 메모리 상에 자바 객체의 인스턴스 형태로 존재하며 EntityManager에 의해 데이터베이스의 데이터와 동기화된다. Entity Manager - 필요에 따라 Entity와 데이터베이스의 데이터를 동기화한다. - EntityManager에서 제공하는 Entity 조작 API를 이용해 Entiy에 대해 CRUD 작업을 한다. 영속성 컨텍스트(persistence context) - Entity를 영구적으로 저장하는 환경이다 - Entity를 저장하거나 검색할 때 Entity Manager는 영속성 컨텍스트에서 Entity를 저장하고 관리한다. - Entity Manager를 생성할 때 영속성 컨텍스트가 만들어진다.

Spring Data JPA [내부링크]

Spring Data JPA는 Spring에서 JPA라는 기술을 사용하는 데 도움이 되는 라이브러리이다. CrudRepository 인터페이스 public interface CrudRepository<T,ID> extends Repository<T,ID> 메서드 설명 long count() 사용 가능한 엔티티 수를 반환한다. void delete(T entity) 주어진 엔티티를 삭제한다 void deleteAll() 저장소에서 관리하는 모든 에티티를 삭제한다. void deleteAll(Iterable<?extends T> entities) 주어진 엔티티를 삭제한다. void deleteById(ID id) 주어진 ID를 가진 엔티티를 삭제한다. boolean existsById(ID id) 주어진 ID를 가진 엔티티가 존재하는지 여부를 반환한다. Iterable<T> findAll() T타입의 모든 인스턴스를 반환한다. Iterable<T> findAllById(Iterable<

쿼리메서드 [내부링크]

Spring Data JPA는 메서드의 이름만으로 원하는 query를 실행 할 수 있는 방법을 제공한다. find...By read...By query...By get...By count...By public List findByUserId(String userId); public List findByUserIdAndUserPw(String userId,String userPw); public Colletion findBy userNoGreaterThan(Long userNo); 쿼리 메서드 지원 키워드 And findByLastnameAndFirstname Whre x.lastname= 1 and x.firstname 2 Or findByLastnameOrFirstname where x.lastname = 1 or x.firstname =2 Is Equals findByFirstname,findByFirstnameIs, findByFirstnameEquals where x.firs

JPQL (Java Persistence Query Language) [내부링크]

JPQL(Java Persistence Query Language)은 JPA에서 사용하는 객체지향 쿼리 언어이다. 데이터베이스 SQL 쿼리 언어와 유사하지만 테이블과 컬럼 이름 대신 매핑한 엔티티 이름과 속성 이름을 사용한다. 객체지향 쿼리 데이터베이스 테이블 대상이 아닌 엔티티 객체를 대상으로 하여 여러 검색 조건을 사용하여 엔티티 객체를 조회할 수 있는 쿼리이다. - JPQL : 엔티티 객체를 조회하는 객체지향 쿼리 - Criteria 쿼리 : JPQL을 편하게 작성하도록 도와주는 빌더 클래스 제공 - Query DSL : Criteria 쿼리와 비슷한 기능을 하지만 비표준 오픈소스 프레임워크 -네이티브 SQL : JPQ에서 SQL을 직접 사용할 수 있다. Repository 인터페이스 선언 public interface MemberRepository extends CrudRepository<Member,Long>{ @Query("SELECT m FROM MEMBER m WHER

JQuery 다운 [내부링크]

https://cdnjs.com/libraries/jquery/1.12.4 jquery - cdnjs.com - The best FOSS CDN for web related libraries to speed up your websites! jquery - JavaScript library for DOM operations - cdnjs.com - The best FOSS CDN for web related libraries to speed up your websites! cdnjs.com https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.js 로 들어간다. 그리고 ctrl + s를 눌러 웹페이 자체를 저장한다. 그후 프로젝트중인 파일 갖다놓고 url 주소로 연동하여 사용

나 블로거야 [내부링크]

웹개발자가 되려는 블로거입니다. 스프링, 데이터베이스, 자바스크립트 위주로 글 올라가요~ #나블로거야

[노량진 맛집] 향원 중화요리 [내부링크]

6천원 탕수육정식 간단히 먹을만하다. 탕수육 짜장면 볶음밥까지 먹을 수 있다. 여긴 짜장면이 맛있다 #노량진 #향원중화요리 #향원 #탕수육정식 #노량진짜장면맛집

맛집 게시글을 쓰는이유 [내부링크]

광고는 절대 아니다. 그냥 내 모든것을 기록하기 위해.

피자마루 성대시장점 [내부링크]

피자마루 성대시장점 서울특별시 동작구 성대로 30 온정교회 피자마루 성대시장점이다 배민이랑 요기요로 배달도 하는거같은데 배민으로 배달시키려고 가격을 봤을때 일반 전화 포장보다 훨씬 비쌋다. 그래서 나는 전화해서 시켰고 주문이 밀렸는지 30분이따 오라고 했다. 그리고 30분에 얼추 맞춰서 갔는데도 5분정도 더 기다렸다 그러나!!!! 존나맛있따 허허허허허허허ㅓㅎㅎ 또먹고싶다 결론) 피자는 존나 맛있고 배민으로 시키면 전화방문포장보다 7천원정도 더비싸다(배달비별도) #피자마루 #성대시장점 #피자 #페퍼로니치즈폭탄피자 #치즈폭탄피자500g

HTTP (Hyper Text Transfer Protocol) [내부링크]

HTTP (Hyper Text Transfer Protocol) HTML,TEXT, IMAGE,음성,영상,파일, JSON,XML(API) 등 거의 모든 형태의 데이터 전송 가능. 서버간에 데이터를 주고 받을 때는 대부분 HTTP 사용 HTTP/1.1 1997년, 가장많이 사용, 우리에게 가장 중요한 버전, 대부분의 모든 기능이 1.1에서 생김 TCP사용 RFC2068(1997) --> RFC2616(1999) --> RFC7230~7235(2014) HTTP/2 2015년, 성능개선 TCP사용 HTTP/3 진행중 : TCP 대신 UDP 사용, 성능 개선 HTTP 특징 클라이언트 - 서버 구조 무상태 프로토콜(스테이스리스),비연결 HTTP 메시지 단순함, 확장가능 클라이언트 서버 구조 Request Response 구조 클라이언트는 서버에 요청을 보내고, 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 예전에는 클라이언트- 서버라는 개념이 아닌 통으로 하나의 구조였으나 클라이언트

HTTP 메서드 [내부링크]

HTTP메서드 기본 리소스와 행위를 분리 가장 중요한것은 리소스를 식별하는 것, URI는 리소스만 식별 -리소스와 해당 리소스를 대상으로 하는 행위를 분리 리소스:회원 행위:조회,등록,삭제,변경 GET:리소스 조회 POST:요청데이터 처리, 주로 등록에 사용 PUT: 리소스를 대체, 해당 리소스가 없으면 생성 PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 POST 요청 데이터 처리 메시지 바디를 통해 서버로 요청 데이터 전달 서버는 요청 데이터를 처리 - 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용. POST/members HTTP/1.1 Content-Type:application/json { "username":"hello", "age":20 } 즉 1. 새 리소스 생성(등록) 2.요청 데이터 처리 - 단순히 데이터를 생성, 변경하는것을 넘어서 프로세스를 처리. ex) 결제 -> 배달

HTTP 메서드 활용 [내부링크]

클라이언트에서 서버로 데이터 전송 쿼리 파라미터를 통한 데이터 전송 - GET - 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 - POST, PUT,PATCH - 회원가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 상황 1. 정적 데이터 조회 (GET) - 이미지, 정적 텍스트 문서 - 조회는 GET 사용, 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능. 2.동적 데이터 조회 - 주로 검색, 게시판 목록에서 정렬 필터(검색어) - 조회는 GET 사용 -GET은 쿼리 파라미터 사용해서 데이터를 전달 (권장하지않음) 3.HTML Form을 통한 데이터 전송 - 회원 가입, 상품 주문, 데이터 변경 - POST 사용 4.HTTP API를 통한 데이터 전송 - 회원가입, 상품주문, 데이터 변경 - 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax) HTML form 태그 데이터 전송 HTML form submit시 POST전송 - 회

HTTP 상태코드 [내부링크]

상태코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx(Information) : 요청이 수신되어 처리중 2xx(Successful): 요청 정상처리 3xx(Redirection): 요청을 완료하려면 추가 행동이 필요 4xx(Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5xx(Server Error): 서버오루, 서버가 정상 요청을 처리하지못함 만약 모르는 상태 코드가 나타날 경우 상위 상태코드로 해석해서 처리 299 -> 2xx(Successful) 451 -> 4xx(Client Error) 599 -> 5xx(Servcer Error) 2xx 성공 클라이언트의 요청을 성공적으로 처리 - 200 OK - 201 Created - 202 Accepted - 204 No Content 서버가 요청을 성공적으로 수행했지만, 응답 페이지로 본문에 보낼 데이터가 없음. 3xx - 리다이렉션 요청을 완료하기 위해 유저 에

HTTP 헤더 - 일반헤더 [내부링크]

HTTP 헤더 개요 - HTTP 전송에 필요한 모든 부가정보 ex) 메시지 바디의 내용, 메시지 바디의 크기 ,압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등 - 표준 헤더가 너무 많음 - 필요시 임의의 헤더 추가 가능 ex) helloworld:hihi RFC723x - 엔티티 -> 표현(Representation) - Representation = representation Metadata + Representation Data - 표현 = 표현 메타데이터 + 표현 데이터 HTTP BODY - 메시지 본문 을 통해 데이터 전달 - 메시지 본문 = 페이로드(payload) - 표현은 요청이나 응답에서 전달할 실제 데이터 - 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공 ex)데이터 유형(html,json),데이터 길이 압축정보 등 표현 Content-Type :표현 데이터 형식 - 미디어 타입, 문자 인코딩 - 예) text/html; charset=utf-

HTTP 헤더 - 캐시와 조건부 요청 [내부링크]

캐시 기본동작 캐시가 없을 경우 매번 HTTP 요청을하여 데이터를 가져와야함 즉 데이터가 변경되지 않아도 계속네트워크를 이용하며 브라우저 로딩속도가 느려짐 캐시가 유효한 시간(초) cache-control: max-age=60 HTTP 응답결과를 브라우저 캐시에 저장(60초동안)하며 HTTP 통신을 하지 않으며 브라우저 캐시에서 꺼내 사용 캐시 시간 초과 60초초과 시. 다시 HTTP 요청해야함

페리카나 양념치킨 상도동점 [내부링크]

페리카나 상도동점 서울특별시 동작구 만양로 7 처갓집 양념치킨과 비교해보면 처갓집 양념치킨은 소스가 달달하지만 바삭바삭함이 없다, 페리카나는 소스는 처갓집보다 못하지만 바삭바삭하다 양념을 묻히고 바삭바삭함을 유지하는곳이 페리카나.. #양념치킨

롯데푸드 구구바 googoo바 [내부링크]

동네 마트에서 600원에 샀다 구구바 구구크러스트 퍼먹던 맛인데 겉이 엔초마냥 초코로 덮혀있다 맛있다 ㅋㅋㅋ 아이스크림 리뷰는 첨인데 맛있음 칼로리가 245kcal이라 좀 무서움..

내일채움공제 적립금 확인방법 [내부링크]

1. 우선 https://www.sbcplan.or.kr/page.do?mCode=B120000000&introGbn=02 상품안내 미취업 청년의 중소·중견기업 유입을 촉진하고, 청년 근로자의 장기근속과 자산 형성을 지원하기 위해 ´16년 7월부터 시행 www.sbcplan.or.kr 페이지로 이동한 후 공인인증서로 로그인한다 2. 마이페이지의 계약정보를 선택한다. 3.해당정보를 확인한다. 적립금, 남은 개월 수 확인이 가능하다. 난 아직 많이남았따 ㅠ

큰집닭강정 상도점 [내부링크]

큰집닭강정 상도점 서울특별시 동작구 성대로 28 1층 집 가는길에 항상 봤던곳이다 15,000원 닭강정 + 콜라 10,000원 닭강정 + 콜라 이렇게 또 뭐 하나 있긴한데 10,000원 닭강정 + 콜라를 사봤다. 콜라는 코크콜라, 나는 제로만 마셔서 안먹었고 닭강정은 맛있다 떡도 쫄깃쫄깃하다, 만원짜리 하나 먹었는데 배가 불렀다. 대만족이다. 가끔먹을예정 #큰집닭강정 #상도점 #신대방삼거리 #닭강정

강서구 양천로 남산수제돈까스 [내부링크]

남산수제돈까스 서울특별시 강서구 양천로 82-1 남산수제돈까스 6,900원 감자튀김 3,000원 남산수제돈까스를 시키면 기본적으로는 소스가 부어져나온다 소스가 부어나와서 한 번 리뷰를 찍먹파에게 안좋다고 썻던적이 있는데 사장님이 답글로 소스 따로 달라고 말하면 따로 주신다고 댓글을 다셧던적이 있다. 그래서 이번에 방문했을땐 소스를 따로 달라고하고 먹었다. 원래 떡볶이 대략 5천원? 인것도 시키는데 이번엔 감자튀김을 시켜봤다. 나쁘지않았다. 돈까스 먹고싶으면 가끔 가면좋을듯. #남산수제돈까스 #강서구 #돈까스

생활맥주 장승배기역점 [내부링크]

생활맥주 장승배기역점 서울특별시 동작구 상도로15길 131 8,000원 이었던걸로 기억. 레드락 생활맥주 자주 가는편인데 2차로 가볍게 가기좋다, 나초, 떡볶이 이정도가 나는 괜찮은듯 오징어도 괜찮..

[처갓집양념치킨 신대방점] 슈프림양념치킨 [내부링크]

처갓집양념치킨 신대방점 서울특별시 동작구 여의대방로24길 77 이집 치킨은 정말 큰 닭을 쓴다 닭의 목을 보면 알 수 있다. 다른 치킨집은 새끼손가락만하다면 여기는 중지보다 크다 ㅋㅋㅋ 양도 많고..맛도 있음 원래는 노말 양념치킨만 시켰는데 모처럼 슈프림양념치킨을 시켜봤다 처음엔 맛있었는데 먹다보니 너무 느끼했다, 저게 마요네즈 인가? 그냥 노멀 양념치킨 시켜야겠다 #양념치킨 #처갓집양념치킨 #슈프림양념치킨

[김포롯데몰 오장동흥남집] 갈비탕 [내부링크]

오장동흥남집 김포공항점 서울특별시 강서구 하늘길 38 김포롯데몰에 오장동흥남집에 갔다. 냉면집인데 냉면이 엄청 비싸다 만원이 넘는다 ㅋㅋ 그 돈 내고 냉면먹을바엔 갈비탕 14,000원짜리 시켰다 내껀 만두2개 + 갈비탕해서 16,000원이었다. 맛은 그냥쏘소 #오장동흥남집 #갈비탕 #김포롯데몰

그리디 알고리즘 (탐욕적알고리즘) [내부링크]

그리디 알고리즘은 최적해를 구하는데에 사용되는 알고리즘이다. 여러 경우중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행된다. 말 그대로 눈앞에 보이는것부터 가져가서 최종 정답에 간다고 봐도 된다. 눈앞에 보이는것부터 챙겨가니까 계산속도가 빠르지만 효율적이고 최적의 해를 항상 가져간다고 장담하지 못한다. 그리디 알고리즘 적용하기 위해 충족되어야 할 조건 * 탐욕스런 선택 조건(greedy choice property) 앞의 선택이 이후의 선택에 영향을 주지 않아야 한다. * 최적 부분 구조 조건 (optimal substructure) 문제에 대한 최적해가 부분 문제에 대해서도 최적해여야 한다. 그리디 알고리즘 문제 풀어보는법 https://programmers.co.kr/learn/courses/30/parts/12244 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와

[JAVA] Math.min/ max [내부링크]

Math.max() - static int max(int a, int b) - static double max(double a, double b) - static float max(float a, float b) - static long max(long a, long b) 둘 중 큰 값을 리턴 Math.min() - static int max(int a, int b) - static double max(double a, double b) - static float max(float a, float b) - static long max(long a, long b) 둘중 작은 값을 리턴 #Math함수 #JAVA #min #max

[spring] 게시글 수정 [내부링크]

회사에서 너무 바쁘기도했고, 알고리즘도 공부하면서 기본적으로 알고 있는 게시판 만들기를 등한시 했다. 회사가 좀 한가해지고 연봉협상도 만족스러웠고(갑자기) 그래서 다시 쭉 시작 BoardMapper.XML <update id="boardupdate" parameterType="com.my.project.model.BoardVO"> /* boardupdate */ UPDATE BOARD SET TITLE = #{TITLE}, CONTENT = #{CONTENT}, UPDATEDATE = SYSDATE WHERE BNO= #{BNO} </update> 내 게시판의 경우 TITLE, CONTENT, UPDATEDATE(수정날짜)만 수정해줄것이다. BoardService.java public void update(BoardVO vo) throws Exception; boardServiceImpl.java @Override public void update(BoardVO vo) throws

[Spring] 게시글 조회수 [내부링크]

게시글을 상세조회 할때 '조회수' 컬럼 (inview) 를 +1 해주면된다. mapper에 inview+1 update 쿼리를 작성하고 service를 BoardRead 컨트롤러에 작성해주면된다. 어렵지않다. BoardMapper.xml <update id="inview" parameterType="com.my.project.model.BoardVO"> /* inview */ UPDATE BOARD SET INVIEW = INVIEW+1 WHERE BNO= #{BNO} </update> BoardService.java public void inview(int bno) throws Exception; 쿼리에서 where bno = #{bno} 이다. bno를 찾아 보내줘야한다. 그러므로 매개변수로 bno를 설정한다. BoardServiceImpl.java @Override public void inview(int bno) throws Exception { dao.inview(bno);

스프링 시큐리티 기본개념 [내부링크]

스프링 시큐리티 정의 아이디와 비밀번호를 입력해서 로그인하여 사용자를 인증(Authentication)하고, 로그인 후 프로그램의 각각의 기능에 대한 권한을 부여(Authorization)하는 기능을 구현하는 프레임워크 * 스프링시큐리티는 스프링 프레임워크 4.2버전 이상부터 동작 스프링시큐리티 특징 보안과 관련해서 체계적으로 많은 옵션들을 제공해서 편리하게 사용할 수 있음. Filter 기반으로 동작하기 때문에 MVC와 분리되어 관리 및 동작. XML과 애너테이션으로 설정 가능. 보안 관련 용어 접근 주체(Principal): 보호된 대상에 접근하는 유저 인증(Authenticate): 현재 유저가 누구인지 확인하는 과정(로그인) 인가(Authorize): 유저가 해당 기능에 접근할 수 있는 권한이 있는지 검토 권한: 인증된 주체가 기능을 사용할 수 있도록 결정 필터 총 11개의 필터가 존재한다. 인증 관련 필터 UsernamePasswordAuthenticationFilter 접

스프링 시큐리티 내장표현식 [내부링크]

표현식 설명 hasRole([role]) 현재 로그인된 사용자가 지정된 role을 가지고 있으면 true 반환. 제공된 role이 'ROLE'로 시작하지 않으면 기본적으로 'ROLE'을 추가. DefaultWebSecurityExpressionHandler에서 defaultRolePrefix를 수정하여 커스텀마이즈 가능 hasAnyRole([role1,role2]) 현재 로그인된 사용자가 콤마(,)로 분리하여 주어진 role들 중 하나라도 가지고 있으면 ture반환. 제공된 role이 'ROLE'로 ㅣ작하지 않으면 기본적으로 'ROLE' 추가. DefaultWebSecurityExpressionHandler에서 defaultRolePrefix를 수정하여 커스텀마이즈 가능 hasAuthority([authority]) 현재 로그인된 사용자가 지정된 권한이 있으면 ture 반환 hasAnyAuthority([authority1,authority2]) 현재 로그인된 사용자가 콤마(,)로

GraphQL VS REST API [내부링크]

API 를 만들 때 GraphQL 과 REST API 디자인 아키텍처를 사용할 수 있다. 이 두 방식의 차이점은 오버 패칭(Over-fetching) 과 언더 패칭(Under-fetching) 에 의해 설명될 수 있다. 오버 패칭이란 클라이언트에서 요구하는 데이터보다 더 많은 데이터를 수신하는 문제이며, 언더 패칭은 그 반대 의미이다. 즉, REST 방식은 수신되는(Response) 데이터 구조를 서버에서 정의하며, GraphQL 은 클라이언트에서 정의한다는 것이 가장 큰 차이점이다. (In REST you define the object on the Backend and in GraphQL you define this object on the Frontend.) * 출처: https://javascript.plainenglish.io/stop-using-rest-for-apis-d697727ae6dd

ArrayList 와 배열의 차이점 [내부링크]

배열 1.여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 자료구조, index 값과 쌍으로 구성 2. Index는 유일무이한 식별자. 중복x 3.논리적 저장장소와 물리적 저장장소 순서가 일치 4.연속된 메모리의 공간. 5.배열은 정의와 동시에 길이가 지정., 정적인 메모리 장점 1.인덱스를 통한 검색 2.연속적이므로 메모리 관리 편함 단점 1.크기가 고정 2.삭제된 공간은 빈공간, 메모라 낭비,컴파일 이후 메모리 크기 지정 불가! 리스트 1.리스트는 순서가 있는 엘리먼트의 모임, 배열과 다르게 빈 엘리먼트트 허용 x 2.리스트는 배열이 가지고 있는 인덱스의 장점을 버리고 대신 빈틈없는 데이터의 적재라는 장점 취함. 3.리스트에서 인덱스는 몇 번째 데이터인가 정도의 의미를 가짐. 4.순차성을 보장하지않음. 5.불연속적으로 메모리 공간 차지. 6.포인터를 통한 접근 장점 1.포인터를 통하여 다음 데이터의 위치를 가르키고 있으므로 삽입 삭제가 용이 2.동적인 메모리 3.메모리 재사

스택프레임 [내부링크]

스택프레임 스택은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다!!!!! 스택 영역은 함수의 호출과 함께 할당됨, 함수 호출완료시 소멸! 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역 변수등이 저장. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임이라고 함. 함수의 호출이 모두 끝난 뒤에 해당 함수가 호출되기 이전 상태로 되돌아 갈 수 있는게 스택프레임 덕분. 코드를 보자 재귀함수를 예로 들어봄. public class Basic{ public void stack(int n){ if(n==0) return; else{ System.out.print(n%2+" "); // 1 stack(n/2); System.out.print(n%2+" "); // 2 } } public static void main(String [] args){ Basic T = new Basic T.stack(5) }

ROWNUM,ROW_NUMBER [내부링크]

회사에서 페이징처리 때문에 꽤나 애먹었다. ROWNUM, ROW_NUMBER를 사용하려고 애썼는데 잘 안됐어서 다시 공부해본다. ROWNUM() ROWNUM은 위치가 가장 중요하다. 인라인-뷰를 제거하고 ROWNUM을 실행할 시. ROWNUM은 ORDER BY 이전에 처리되므로. 정렬 순서가 뒤죽박죽된다. SELECT * FROM ( SELECT ROWNUM NO, T1.* FROM ( SELECT T1.ORD_SEQ,T1.ORD_YMD, T1.CUS_ID FROM T_ORD_JOIN T1, M_CUS T2, WHERE T1.ORD_YMD LIKE '202103%' AND T1.CUS_ID=T2.CUS_ID ORDER BY T1.ORD_YMD DESC, T1.ORD_SEQ DESC ) T1 WHERE ROWNUM <=60 )T2 WHERE T2.RNO >=31; 14라인을 보면 두번째 페이지의 마지막까지 조회되도록 ROWNUM <=60 조건을 사용하고 있다. ROWNUM 을 60까지

ORDER SIBLINGS BY [내부링크]

계층형 쿼리 SELECT ID, PARENT_ID, NAME, PARENT_NAME, TYPE FROM SITE_LIST START WITH PARENT_ID = 0 /* 부모의 시작 조건 */ CONNECT BY PRIOR ID = PARENT_ID /* 자신의 키와 부모키를 비교 */ ORDER SIBLINGS BY PARENT_ID ASC, ID ASC; /* 정렬 (일반적인 ORDER BY 가 아닌 계층내에서 정렬 할 수 있는 ORDER SIBLINGS BY) */ CONNTEXT BY : 상위 코드와 하위 코드를 이용하여 TREE 형태로 보여줄 수 있는 것 ORDER SIBLINGS BY: 특정 컬럼에 대한 ORDER BY를 실행(조회된 데이터에 대해) CONNECT BY를 사용하기 위한 구조 1. 부모의 컬럼과 자식의 컬럼이 존재해야함. 2. 부모의 데이터와 자식의 데이터가 매핑되어야함. 3.자식, 부모 라고 가정을 해야함. 4.부모와 자식 데이터가 서로 연결되어 있어야함

DFS,BFS, 백트레킹(Backtracking) [내부링크]

정리가 너무 잘되어있는 블로그를 찾았다. DFS,BFS, 백트레킹까지.. 움짤... 감탄.;; 수시로 들어가서 볼것. https://velog.io/@leobit/DFS-BFS-%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9Backtracking DFS, BFS, 백트래킹(Backtracking) 계층/깊이 별로 순환탐색하는 방법대표적 예) 친구 찾기 → 큐 이용깊이마다 노드들을 우선순위에 따라 차례대로 넣고 큐에서 순서대로 꺼내어 순환을 하는 형태자식 노드의 자식 노드를 탐색할 때, 메모리 소모가 크다. 트리의 깊이마다 노드들이 많고 트리가 넓을 때 등은 보통 velog.io

Spring Boot 프로젝트 생성 [내부링크]

좌측 Package Exploer에서 마우스 좌클릭 후 New - Spring Staarter Project 선택 Name과 Group을 적고 Next 선택. Spring Boot Version을 선택하고.. Spring Boot DevelTools, Thymleaf, Spring Web 선택하고 Finish 선택! 프로젝트가 생성됨.! 쉽다쉬워!

lombok 설치 [내부링크]

1.jar파일 다운로드 주소 https://projectlombok.org 2.중앙 상단에 Download 클릭 3.Download.1.18.20 클릭. 4.명령 프롬프트에서 jar 파일가 있는 디렉토리로 들어간다. java -jar lombok.jar 5. Install/Update 클릭 6. 설치완료

자바빈즈 (JavaBeans) [내부링크]

자바빈즈(JavaBeans) 자바로 작성된 소프트웨어 컴포넌트. "빌더 형식의 개발도구에서 가시적으로 조작이 가능하고 또한 재상용이 가능한 소프트웨어 컴포넌트" 자바빈즈 관례 1. 클래스는 직렬화되어야 한다.(클래스의 상태를 지속적으로 저장 혹은 복원) 2. 클래스는 기본 생성자를 가지고 있어야 한다. 3. 클래스의 속성들은 get,set 혹은 표준 명명법을 따르는 메서드들을 사용해 접근할 수 있어야 한다. 4. 클래스는 필요한 이벤트 처리 메서드들을 포함하고 있어야 한다. 자바빈즈 직렬화 반드시 직렬화 할 필요는 없으나 미리 구현해 두는 것이 무난하다. 1. JPA 프로바이더가 제공하는 캐시 기술 Serialization 인터페이스를 요구하는 경우 2. 자바빈즈 객체를 세션 스코프에서 관리하는 경우 3. 다수의 서버에서 세션 객체를 공유해야 하는 경우 예시) Getter(), Setter(), ToString(),HashCode()

Lombok [내부링크]

*까먹었거나 잘 몰른체 사용했던것 위주로 정리 Lombok Anotation @Getter @Setter 객체의 게터와 세터를 생성 자주사용 (블로그주인) @ToString toString() 메서드 생성 자주사용 (블로그주인) @EqualsAndHashCode 자바의 equals() 메서드와 hashCode() 메서드를 생성 @NoArgsConstructor 인자가 없는 기본 생성자 생성 @RequiredArgsConstructor @NonNull이 적용된 필드값이나 final로 선언된 필드값만 인자로 받는 생성자 생성 자주사용 (블로그주인) @AllArgsConstructor 객체의 모든 필드값을 인자로 받는 생성자 생성 @Data @Getter @Setter @ToString @EqualsAndHashCode @RequiredArgsConstructor 에너테이션을 합쳐놓은 애너테이션 자주사용 (블로그주인) @Builder 빌더 패턴을 사용할 수 있도록 코드 생성 @Log @S

컨트롤러 요청 매핑 http [내부링크]

***간만에 복습*** 요청 경로를 동적으로 표현이 가능한 경로 패턴을 지정할 수 있다. - URL경로 상의 변하는 값을 경로 변수로 취급 - 경로 변수에 해당하는 값을 파라미터 변수에 설정할 수 있다. 요청과 매핑 예시 http://localhost:8080/board/read/100 @GetMapping("/read") public STring read(@ParhVariable("boardNo")int boardNo){ log.info("read boardNo:"+ boardNo); retrun "board/read"; } Http 메서드 매핑 요청A <form th:action="@{/board/register}"> <input type="submit" value="register(GET)"> </form> 컨트롤러 A @GetMapping("/register") public String registerForm(){ log.info("registerForm); retrun "

URLEncoder 특수문자 '+'처리하기 [내부링크]

URLEncoder URLEncoder를 사용하게 되었는데 처리하는데 애를 먹었다. Encode를 해서 던지는데 받는쪽에서 자꾸 +를 " "로 받았다. 이유를 찾아보니 URLEncoder가 퍼센트인코딩이라고 불리는데, HTML 양식컨텐츠로 던지는거라고 한다. 그러다보니 +를 " " 로 받게되는 버그가 발생.. 왜 +를 " "로 받느냐! 그거는 URLEncoder가 " " 를 +로 encoder하기때문이다. 그러니까 " "를 +로 해야할지, +를 " "로 해야할지 URLEncoder도 헷갈려한다 ㅋㅋㅋㅋ 아무튼 특수문자 +는 제대로 encode 된다면 '%2B'로 인코드 되어야한다. URLEncoder.encode(map.get("key"),"UTF-8") 로 던져주기전에 쿼리에서 Replace를 해줬다 SELECT REPLACE(KEY,'+','%2B') AS KEY FROM TABLE_NAME 왜 자바에서 .replace 안해주고 쿼리로 했느냐... 자바에서 replace를 해서

자바빈즈 클래스타입 [내부링크]

자바빈즈 클래스 타입 @ResponseBody 반환값이 객체 타입이면 JSON 타입으로 자동 변환한다. @ResponseBody @GetMapping("/goHome0301") public Member home0301(){ Member member =new Member(); return member; } {"userid":"hongkd", "password":"1234"} 그외에도 List,Map 도 JSON 타입으로 자동변환 *(사실 회사를 다니면서 99%는 JSON타입으로 파싱한다. xml은 공공데이터 openApi 연계 할때 한 번 받아봤다.) 컬렉션 Map 타입 @ResponseBody @GetMapping("/goHome05") public Map<String,Member> home05(){ Map<String,Member> map =new HashMap<String,Member>(); Member member = new Member(); map.put("key1",memb

[spring] 게시판 조회 상세조회 [내부링크]

BoardService.java상세조회는 게시글 번호 즉 bno 값으로 데이터를 받아와야한다.반환형은 BoardVO로 하고 매개변수는 int bno로 해준다.그래서 bno 값이 넘어가고 받아올 수 있다.BoardServiceImpl.java여기서도 bno 값을 넘겨준다.BoardDAO.javaBoardDAOImpl.javaselectOne()메소드는 오직 한개의 객체만 리턴한다.selectList()메소드는 여러개의 객체를 리턴한다.selectMap() 메소드는 결과값을 Map 형태로 변환하여 뿌린다아래와 같이 사용할 수 도 있다.BoardContoller.java@RequestParam 어노테이션으로 int bno 값을 가져온다. 이 값은 boardRead.jsp에서 받아온 bno 값이다.BoardVO list &#x3D; bs.getRead(bno); BoardVO 형태의.......

김포 롯데몰 도제 [내부링크]

김포공항 롯데몰 도제콰트로치즈에그 2500명란마요 3000소라와사비 2500항상 지나가면서 맛있어보였는데ㅋㅋ 드디어먹음이렇게 3가지 포장했다.지하철타고 오느라 흐트러졌는데결론적으로 약간 짜다.간이 좀 짬..콰트로치즈,명란마요는 맛있었는데 타코와사비는 비추#롯데몰 #도제 #유부초밥

탐나종합어시장 성대시장점 [내부링크]

배민 리뷰쓰면 소라무침을 서비스로 준다.그리고 배달비도 공짜.광어우럭 세트 25000원쌈도준다.광어보다는 우럭이 더 싱싱했음.전반적으로 훌륭했음단점을 하나 말하면 와사비가 액체임 .;;#탐나종합어시장 #성대시장점 #광어우럭 #회

짬뽕지존 역삼점 [내부링크]

짜장면이 맛있음밥도 아주 조금 주는게 아주 맘에듬#짬뽕지존 #역삼점 #짜장면 #짬뽕

신대방삼거리 인생곱창 [내부링크]

소곱창 모듬이다두명이서 모듬 2인분 시키고 또 1인분 더 시켰다맛있다. 근데 양이 적다.아쉬운부분.확실히 맛은있음.#인생곱창 #소곱창 #신대방삼거리

[김포롯데몰]코코이찌방야 [내부링크]

이집 카레 좋아하는편, 닭가슴살, 돈까스토핑 추가했다. 저거 노란색동그란거 뭐더라.. 기억이잘안나는데 저건 별로였다.#코코이찌방야 #김포롯데몰 #카레

[상도점]뚱보집/껍데기 [내부링크]

뚱보집 특수부위 전문점이다. 특수부위 모두 맛있는데 양에 비해 너무 비싸다여기는 껍데기가 진짜 맛있다.쫀득쫀득하니 존맛

[홍대점] 고쿠텐 텐동 [내부링크]

&#x27;만원&#x27; 이었던걸로 기억한다.전체적으로 맛있었다. 간도 잘되어있었고고추튀김이 좀 더 있었으면 더존맛이었을듯.

[노량진] 피맥하우스 [내부링크]

여기 피자 진짜 맛있다 포장해가고싶을만큼.가격도 저렴피맥을 좋아해서 항상 여기서먹는데사장님도 좋으신분인지 서비스를 엄청주신다여름에는 수박도 잘라서 주신적있고 평소에 가면 샐러드도 서비스로 주신다다른 피맥하우스도 가봤지만 노량진이 젤 낫다

[Mybatis] Mapped Statements collection does not contain value for ~ [내부링크]

위 에러코드는 Mapper.xml의해당 쿼리의 id가 안맞는것.#mybatis #mapperid #id안맞음

[Spring boot] 스프링부트 프로젝트 설정하기 [내부링크]

https://start.spring.io 로 이동한다.위와같은 페이지가 나온다.Group은 그룹의 도메인명,Artifact는 빌드의 결과물 이다.나머지는 상관없다첫번째 사진 우측의 Add Dependences를 클릭하여 Spring Web과Thymeleaf를 선택한다Thymeleaf는 html을 호환하기 위한것이다.아래의 Generate를 클릭하면해당 프로젝트가 Zip파일로 다운로드된다

인터넷 네트워크 [내부링크]

인터넷 통신통신은클라이언트 ---------&#62; 인터넷 -------------&#62; 서버클라이언트 &#60;---------- 인터넷 &#60;--------------서버인터넷 망을 통해서 보내게되며 이 통신은수많은 노드를 거쳐야함. 이 노드에는 IP주소를 통해 전달되게 됌.IP(Internet Protocol)IP의 역할 지정한 IP주소(IP Address)에 데이터 전달패킷(Packet)이라는 통신 단위로 데이터 전달인터넷 프로토콜 스택의 4계층1계층 애플리케이션 계층 - HTTP,FTP2계층 전송 계층 - TCP,UDP3계층 인터넷계층 -IP4계층 네트워크 인터페이스 계층 (랜카드 등)IP 패킷 정보출발지 IP, 목적지IP, 기타..예를들어 클라이언트(IP:100.100.100.1) ---------&#62; 인터넷 --.......

URI와 웹 브라우저 요청 흐름 [내부링크]

URI (Uniform Resource Identifier)URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다.URL: 리소스가 있는 위치를 지정URN: 리소스 명칭URIUniform : 리소스 식별하는 통일된 방식Resource: 자원, URI로 식별할 수 있는 모든것 (제한없음)Identifier: 다른 항목과 구분하는데 필요한 정보URL전체 문법scheme://[userinfo@]host[:port][/path][?query][#fragment]ex)https://google.com:443/search?q&#x3D;hello&#38;hl&#x3D;ko프로토콜:https호스트명:www.google.com포트번호: 443패스 : /search쿼리 파라미터 : q&#x3D;hello&#38;hl&#x3D;ko주로 프로토콜 사용프로토콜: 어떤 방식으로 자원에 접근할 것인가 하.......

[Eclipse] UTF-8 설정하기 [내부링크]

이클립스 상단 메뉴Window -&#62; Preference 선택모두 utf-8로 바꿔준다#Eclipse #UTF-8 #인코딩 #이클립스

The prefix "context" for element "context:component-scan" is not bound. [내부링크]

root-context에xmlns:context&#x3D;&#34;http://www.springframework.org/schema/context&#34;추가component 요소들은classpath를 스캔하여 @annotation이 명시된 요소들을 스프링 빈으로 등록#spring #root-context

[spring] VO,DTO 객체에는 @Autowired 붙이지않는다. [내부링크]

VO,DTO 객체는 데이터를 담는 역할을 하기 때문에 Autowired를 사용하지 않는다.#Autowired #spring

[ORACLE] 테이블 컬럼 데이터타입 확인 [내부링크]

#ORACLE #컬럼 #타입 #데이터타입

[spring] 프로젝트 설정 [내부링크]

어느덧 내가 1년차 개발자가 되었다.별로 한것도 없는데 벌써..실력향상을 위해 체크할겸 토이 프로젝트를 진행해보도했다.네이버 블로그는 코드가 5000자까지만 작성이 된다.. 부분부분궁금한게 있으면 댓글달아주시면 알려드리겠습니다.pom.xml이제 root-context.xmlservlet-context.xml#spring #스프링 #게시판 #spring게시판 #spring설정

[Spring] 게시판 목록(LIST) [내부링크]

우선 게시판 목록 부터 만들겠다프로젝트 디렉토리는 아래와 같다.BoardVOlombok을 사용해도 되지만 일단 처음 공부하시는 분들을 위해 getter,setter를 선언해주었다롬복을 사용할경우@Data@Getter@Setter어노테이션을 선언해주면된다.BoardMapper.xmlDate타입을 String 타입으로 변환하기위해 TO_CHAR() 함수를 사용했다.BoardServiceBoardService에 interface를 만든다.게시판 목록을 List형식으로 받아올 것이기 때문에 List&#60;&#62; 타입으로 해준다.VO객체를 만들어서 데이터를 전달한다.그렇기에 List&#60;BoardVO&#62; 타입으로 service를 만들어준다.BoardServiceImpl인터페이스에서 만들어놓은 Service를 @Override해준다.......

교촌치킨 대방1호점 [내부링크]

교촌치킨 대방1호점시켜본 교촌치킨들중에 (허니콤보) 양념도 가장 골고루 잘 발라져있고 괜찮다.#교촌치킨#대방1호점#허니콤보#교촌치킨대방1호점

24시나인식양평해장국 작동본점 선지해장국 [내부링크]

선지해장국 9000원해장국 건데기가 엄청많다.소스도 고추빻은거 + 와사비 + 고추기름 스까무라맛있다#24시나인식양평해장국작동본점#해장국

처갓집양념치킨 신대방점 [내부링크]

양념치킨18000원이다맛있다여기 진짜 괜찮음, 다른 지점은 모르겠는데 일단 배민 리뷰만봐도소스가많다고 함.. 근데 진짜많음닭도 다른 치킨집들보다 큰거같음..배가꽉찬다#처갓집양념치킨#신대방점#양념치킨

롯데몰 삼미식당 [내부링크]

이게 8천원맛있다비빔밥도 보리밥이었던걸로 기억,대식가라 양이 살짝 부족했음돈까스 소스가 달달하니 맛있음 돈까스가 젤나앗음#삼미식당#롯데몰#김포공항롯데몰

쿼리를 리스트 담아서 jsp로 뿌리기 [내부링크]

#쿼리list에담기#jsp바인딩#데이터바인딩#spring

[java] [javascript] if문 문자열 비교, [내부링크]

javajavascript자바스크립트에서는 문자열 변수는 모두 객체이기 때문에 문자열변수 &#x3D;&#x3D; 문자열변수로 비교#java#if문#문자열if문#문자열비교#javascript#equals

[spring] 게시판 글쓰기 write [내부링크]

boardService.javawirte는 리턴해줄게 없다. boardServiceImpl.javaboardDAO.javaboardDAOImpl.javacontrolelr.javacontroller에서는 우선 boardwrite.jsp로 이동하기위한 boardWrite() 메소드를 작성한다.그래야 boardWrite.jsp로 이동할 수 있다.그리고 기능으로 작동하기 위해 write기능 담당하는 controller 메소드를 작성한다.boardWrite1() 메소드로 하였다.mybatis.xmlboardWrite.jsp#spring #boardwrite #게시판 #게시판글쓰기

CheckBox 선택시 select 선택안되게하기 [내부링크]

chk 는 checkbox의 id값을 가져온다chk가 chekced 되었을경우해당 select들을 if문을 통해 제어하는것. #selectBOx #Checkbox #javascript #selectbox제어

checkbox 중복 불가하게 하기 [내부링크]

#checkbox중복불가#checkbx#html#javascript

case when then 문 [내부링크]

#oracle #조건문 #casewhenthen

jsp에서 로그찍기 [내부링크]

#JSP #JSP에서로그 #LOG #CONSOLE.LOG

git 설치, 기본명령어 [내부링크]

https://git-scm.com/downloads기본명령어저장소 생성 : git init저장소에 파일추가 git add filename저장소에 변경 내용의 반영 git commit , git commit -m&#34;massage&#34;저장소의 상태 확인 git status로그확인 git log 가장위에가 최신로그gitk UI화면에서 log확인현재 branch 위치 확인 : git branch / / *master 별표 되어있는곳이 현재 브랜치brach 추가 : git branch branch 이름brach 이동 : git checkout 이동할branch명brach 커밋 후 머지 : git merge merge할파일명brach 삭제: git brach -d 브랜치명git 파일 충돌시 충돌한 파일 열어서 일일히 수정해줌...병합작업그런 후 git add 파일명git add * 모든파일.......

jquery - ajax [내부링크]

사실 jqeury-ajax는 굉장히 자주 쓰는거지만나는 제대로 공부한적이 없다.. 남이 쓴거 복붙할때가 더 많았어서..jquery-ajax 공부 필요성을 느껴서 공부해본다.ajax Settingdata - 서버로 데이터를 전송할 때 사용dataType - 서버측에서 전송한 데이터를 어떤 형식의 데이터로 해석할 것인가를 지정. xml,json,script,html 형식을 지정하지 않으면 jquery가 알아서 판단.success - 성공했을때 호출할 콜백을 지정 ex) function(PlainObject data, String textStatus, jqXHR jqXHR)type - 데이터전송 방법 지정. get,post#Jquertajax #ajax #jquery

jquery_jqgrid 설정하기1 [내부링크]

jqgrid 설치 urlhttp://www.trirand.com/blog/?page_id&#x3D;6jquery.jqGrid-4.4.3.zip 파일로 받아진다.jqGrid는 jquery 기반이기 때문에 jquery가 먼저 실행되어야한다.다쓸 필요는 없으며 필요한것만 골라서 쓰시길..#jquery #jqgrid #spring #그리드

[노량진] 남경 [내부링크]

배달시켜먹었다 노량진 남경 짜장면+탕수육세트 16000원짜장면은 평범하고 양이 좀 적은데 탕수육은 맛있음 쫀득쫀득하고탕수육 맛집임#노량진#남경#중국집#짜장면

[노량진] 시장족발 [내부링크]

족발 중막국수족발은 뭐 먹을만했고, 막국수는 너무 셔서 (아이셔 같은,.) 물을 좀 붓고 먹었습니다#노량진 #족발 #시장족발

[장승배기]상도동 신짱스시 [내부링크]

만원짜리 연어롤맛있음#장승배기역 #상도동 #신짱스시 #연어롤

[spring] controller에서 ajax로 데이터 리턴하기 [내부링크]

ajax에서 controller로 보내는건 사실 흔하게 쓰인다.하지만 controller에서 ajax로 보내는건 사실 많이 쓰진않는다나도 애먹었다우선 json이 {key : value} 형식이기 때문에 controller 에서도 key, value로 받아야한다.보통으로 받아준다.자 소스를보면 이해가 쉬울것이다.이해가 안가면 기초가 부족한거니 기본기부터 공부하....(내가 이런말 할순 없다)우선 흔한 ajax 쿼리.controller@RequestBody - HTTP 요청 데이터를 자바 객체로 전달받는다, @ResponseBody - 자바 객체를 HTTP 응답 몸체로 전송한다. 자바 객체를 HTTP 요청의 body로 매핑.한마디로 HTTP로 주고받는것이다. 보통 RequestBody만 사용하는편이다#ResponseBody.......

[김포공항역] Dairy Queen [내부링크]

메뉴사진하고는 좀 많이 다름..햄버거도 좀 작고근데 저렴한가? 흠 모르겠음2점 / 5점#DairyQuuen #햄버거 #김포공항역

[mybatis] resultType 정리 [내부링크]

자주쓰는것만 정리#mybatis#resulttype

[ORACLE] SUB QUERY3 [내부링크]

ALL 모두 일치해야 참ALL조건은 메인 쿼리의 비교조건이 서브 쿼리의 검색 결과와 모든 값이 일치하면 참찾아진 값에 대해서 AND연산을 해서 모두 참이면 참이 되는 셈이 됩니다. &#62;ALL은 &#34;모든 비교값보다 크냐&#34; 고 묻는 것이 되므로 최대값보다 더 크면 참이 됩니다.MAX와같음ALL연산자ANY연산자 하나만 참이면 참메인쿼리의 비교조건에서 서브쿼리의 검색 결과와 하나 이상만 일치하면 참#ORACLE #SUBQUERY#서브쿼리

[ORACLE] 데이터 무결성 제약조건 [내부링크]

무결성 제약 조건의 개념과 종류데이터 무결성 제약 조건이란 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙을 말함.OWNER는 제약 조건을 소유한 사용자명을 저장하는 칼럼CONSTRAINT_NAME은 제약조건 명CONSTRAINT_TYPE은 제약조건 유형유형은 P : PRIMARY KEY R : FOREIGN KEY U : UNIQUE C : CHECK, NOT NULLFOREINGN KEY는 PRIMARY KEY를 참조하기 때문에 무결성을 지켜야함CHECK 조건일 경우에는 어떤 내용이 조건으로 사용되었는지를 기록하고 있어야 하는데,SEARCH, CONDITION은 제약 조건 유형이 C인 경우 각 행에 대한 조건을 설명해줌R_CONSTRAINT_N.......

[ORACLE] 시퀀스 [내부링크]

시퀀스 개념오라클에서는 행을 구분하기위해 기본 키를 두고 있는데, 기본 키는 중복된 값을 가질 수 없기 때문에생성하는데 부담이된다.기본키가 유일한 값을 갖으면서 사람이 부담을 안갖게 도와주는게 시퀀스이다.테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기이다. 시퀀스를 기본 키로 사용하게 되면 사용자의 부담을 줄일 수 있다.START WITH - 시퀀스 번호의 시작값을 지정할 때 사용, 만일 1부터 시작되는 시퀀스를 생성하려면 START WTIH 1이라고 하면 된다 INCREMENT BY - 연속적인 시퀀스 번호의 증가치를 지정할 때 사용된다. 만일 1씩 증가하는 시퀀스를 생성하려면 INCREMENT BY 1이라고 기술하면 된다.MA.......

[ORACLE] INDEX 인덱스 [내부링크]

INDEX장점:빠른검색을 위해 인덱스를 사용.데이터를 빨리 찾기 위해 사용.단점: B+트리 형식으로 구성되어 있음. B+트리를 생성하기위한 자원이 필요함.인덱스를 삭제할때 인덱스 사용 컬럼이 변경될 위험도있음.(오라클 서바가 알아서함)INSERT,UPDATE,DELETE가 자주 일어나는 경우 오히려 성능이 저하됌. INDEX 정보조회인덱스는 기본 키나 유일 키와 같은 제약 조건을 지정하면 따로 생성하지 않아도 자동으로 생성됌.기본키나 유일 키는 데이터 무결성을 확인하기 위해 수시로 데이터를 검색하기 때문에 빠른 조회를 목적으로 오라클에서 내부적으로 해당 컬럼에 인덱스를 자동생성 결합인덱스

[ORACLE] 권한부여 [내부링크]

사용자 생성 권한부여#ORACLE #권한부여#admin

[리눅스] 명령어 [내부링크]

pwd(print working directory) : 현재 디렉토리 정보 출력cd(change directory) : 경로이동 상대경로와 절대경로 이동이 가능cd~ : 어느 곳에든 홈디렉토리로 바로 이동cd/dir : 절대경로 dir로 이동할경우 사용ls(list) : 디렉토리 목록 확인ls -l : 자세한 내용까지 출력ls -a : 숨겨진 파일이나 디렉토리도 보여줌ls -al : ls - r : 거꾸로 출력ls -R :하위 디렉토리까지 출력ls -h : 파일 크기까지 보여줌cp(copy) : 복사mv(move) : 파일, 디렉토리 이동 , 실제로 원하는 위치로 이동할때도 사용하지만 이름을 변경하는 용도로도 사용한다. mkdir (make directory) : 디렉토리 생성 -p 옵션을 주면 하위 디렉토리까지 한 번.......

[리눅스] vi명령어 [내부링크]

명령모드 command mode에서 명령어i : 현재 커서 위치에 삽입a ; 현재 커서 다음 위치에삽입o : 현재 줄 다음 위치에 삽입x : 커서가 위치한 곳의 글자 1개 삭제dw : 커서가 위치한곳에서 부터 단어 삭제dd: 삭제u : 명령 취소(컨트롤+z)yy: 복사k : 위로j : 아래로l : 오른쪽h : 왼쪽G : 파일의 끝으로마지막 행 모드(last line mode)esc 누르고 : 을 누르면 나오는 상태w 파일 저장q vi종료wq 저장후 종료wq! 저장후 강제종료$ 파일의 맨 끝 줄로 이동set nu vi 라인 번호 출력set nonu vi 라인 번호 출력 취소명령모드esc 눌렀을때, vi 처음들어갔을때파일 끝으로 이동 G한줄 잘라내기 dd붙여넣기 p한글자 삭제 x단어 삭.......

Annotation-specified bean name 'Service' for bean class] conflict [내부링크]

Annotation-specified bean name &#x27;Service&#x27; for bean class] conflict1.@Service annotation의 이름이 중복되어서 충돌이 생기는것이다.2. 그래도 에러가 나온다면.. Controller로 가서 #Annotation #spring #에러#conflict

[Oracle] Merge Into [내부링크]

Merge Into는 회사에오고 처음 보았다.동시에 Insert와 update를 진행한다.구문에 조건을 넣어 조건과 일치할시 update를 진행,조건과 불일치 할시 Insert를 진행한다.실제로 현업에서는 isnert문과 update문을 한번에 처리하기 위해 사용한다.#Oracle #MergeInto #Merge #update

JS 따옴표 [내부링크]

이거는 출력document.write(&#x27;아이구야 &quot;hello&quot;&#x27;);document.write(&#x27;아이구야 /&qu...

자바스크립트 변수선언 [내부링크]

var 변수명 &#x3D; value;var num&#x3D; 100;var num &#x3D; 200;첫번째 num이 선언된 후 두번째 ...

자바스크립트 단순 연산자 [내부링크]

연사자 +피연산자 20, 30산술 연산자 + - * / %문자 연산자문자 결합 연산자: +피문자열: 문자...

자바스크립트 복합대입연산자, 증감연산자 [내부링크]

복합대입연산자var num1 &#x3D;10;var num2 &#x3D;30;num1 +&#x3D;5; // num&#x3D; num+5;num1 %&#...

자바스크립트 논리연산자, 삼항조건연산자 [내부링크]

논리 연산자연산자: &amp;&amp;(and), ||(OR), !(NOT)&amp;&amp; 둘다 True여야 하나라도 False면 ...

자바스크립트 조건문 if, if-else, else-if문 [내부링크]

조건문: 조건 만족 여부에 따라 스크립트코드 수행if(5&gt;10){ document.write(&quot;hello&quot;,...

자바스크립트 선택문 switch문 [내부링크]

var game &#x3D; &quot;바위&quot; , num;swich(game){  case &quot;가위&quot;: num&#x3D;1; break; ca...

자바스크립트 반복문 while문, for문 [내부링크]

var num&#x3D;1;while(num &lt;&#x3D; 5){  documnet.write(&quot;hello&quot;,num, &quot;&lt;br&gt;&q...

자바스크립트 객체 [내부링크]

객체는 한 사물의 특징을 만들어놓은것속성- 색상,배기량,가격메소드- 전진,후진,스톱객체-오디오,바퀴,...

자바스크립트 함수 [내부링크]

함수: 코드의 재활용을 높이기 위해 사용변수 - 데이터 저장 공간함수- 스크립트 저장공간기본형functi...

자바스크립트 함수2 [내부링크]

스코프: 변수 또는 함수의 이용가능한 유효범위지역변수: 소코프 영역에서 var를 붙여 선언된 면수, 스코프...

JAVA 1110번 [내부링크]

https://www.acmicpc.net/problem/1110

No default constructor found [내부링크]

예시)public aaa(){ } Vo클래스에 기본생성자 생성

[Spring] Ckeditor 사용 [내부링크]

다운로드 주소 : . https://ckeditor.com/ckeditor-4/download/ 4.11.4 버전 사용다운받은 후 압...

[Spring] 기초복습 @RequestMapping() [내부링크]

RequsetMapping(value&#x3D;&quot;/login&quot;) 의 value값은 http의 요청을 가져온다.메소드의ret...

[Spring] servlet-context.xml에 빈객체 설정 [내부링크]

나는 개인적으로 servlet-context에 빈객체를 만들어서 주입하진 않지만이런 방법도 있고 난 아직 애송이니...

[Spring] form 값 받아오기. [내부링크]

첫번째 방법@RequestMapping(value&#x3D;&quot;/join&quot;, method&#x3D;RequestMethod.POST)...

[Spring] @ModelAttribute [내부링크]

@ModelAttributejsp 파일에 반환되는 model객체에 속성을 주입하거나 바인딩view단에서${ member.me...

[Spring] Model & ModelAndView [내부링크]

컨트롤러에서 뷰에 데이터를전달하기 위해 사용되는 객체로 Model과 ModelAndView 두가지가 있음.두 ...

[Spring] 세션 [내부링크]

http 통신은 클라이언트의 요청을 처리하기위해 서버의 연결을 시켜주는 통신이다.하지만. 요청이 있을때...

[Spring] 쿠키 Cookie [내부링크]

@RequestMapping(&quot;/main&quot;)public String Main (Main main, HttpServletResponse...

[Spring] 리다이렉트 redirect [내부링크]

리다이렉트(redirect): 현재 페이지에서 특정 페이지로 전환하는 기능!ex)회원정보 수정 요청 --&gt; 로...

[SPRING] 인터셉터 Interceptor [내부링크]

인터셉터 Interceptor리다이렉트를 사용해야 하는경우가 너~~무 많은 경우 HandlerInterceptor를 이용...

데이터 모델링. [내부링크]

데이터 모델링정보시스템을 구축하기 위한 데이터관점의 업무 분석 기법현실세계의 데이터(what)에 대해 ...

데이터베이스 ERD [내부링크]

ERD 작성 순서ERD(Entity-Relationship Diagram)1. 엔터티를 그린다.2. 엔터티를 적절하게 배치...

데이터 모델링의 관계 [내부링크]

ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않지만 클래스 다이어 그램에서는 이것을 구분하...

데이터베이스 식별자 [내부링크]

식별자 종류엔터티 내에서 대표성을 가지는가에 따라 주식별자(Primary Identifier)와 보조식별자(Alter...

성능 데이터 모델 [내부링크]

데이터베이스 성능 향상을 목적으로 설계단계의데이터 모델링 때부터 성능과 관련된 사항이 데이터 모...

오라클데이터베이스 쿼리 요약 [내부링크]

Oracle** 윈도우 서버 HOST명은 제어판 -&gt; 시스템 -&gt; 컴퓨터 이름의 전체 컴퓨터 이름이다...

[SPRING]스프링의 기본 구조 및 각 xml 파일 [내부링크]

*&lt;--&gt; 주거니 받거니 요청 -----&gt;디스패쳐 서블릿 1.&lt;--&gt; 핸들러매핑 @RequestMapping을 ...

[SPRING] web.xml UTF-8 인코딩Encoding [내부링크]

web.xml에 복붙하시면 됩니다.#SPRING #SPRING한글 #Encoding #utf8 #스프링

ORA-01745: 호스트/바인드 변수명이 부적합합니다 [내부링크]

ORA-01745: 호스트/바인드 변수명이 부적합합니다해결방법:빈칸지우거나 컴마를 지우고 다시 써본...

ORA-00911: 문자가 부적합합니다 [내부링크]

mybatis 쿼리문 끝에 세미콜론 ; 을 넣은건 아닌지 확인해보자!; 넣으니 에러가떴다... 깜빡하고 넣었으....

[Java] JDK, JRE, JVM [내부링크]

JRE란?먼저 JRE는 Java Runtime Environment의 약자로 자바 프로그램을 실행시켜주는 환경을 구...

[SPRING] AOP 기본개념 [내부링크]

AOP ( Aspect Oriented Programming ) - 사용자 관점이 아닌 개발자, 운영자 관점에서 프로그래밍 하...

[ORACLE] 기본쿼리 [내부링크]

복습하는김에 정리해보았다.스키마:서로 연관된 테이블을 그룹핑하는 일종의 디렉토리 , 테이블을 ...

[ORACLE] 조인 [내부링크]

LEFT JOIN - A 테이블 있는 정보와 B에도 있는 정보를 출력하는것. A U (AnB)INNE...

[SPRING] 트랜잭션 처리 [내부링크]

tx-context.xml을 만든다.&lt;?xml version&#x3D;&quot;1.0&quot; encoding&#x3D;&quot;UTF-8&quo...

[ORACLE] 조인 JOIN [내부링크]

조인 - 조인을 하는이유는 메모리를 아끼기위해SELECT * FROM board LEFT JOIN me...

[ES6] let const [내부링크]

letfor문안에 변수를 let으로 지정한다면console.log는 for문안에 들어와야한다..console.log가 for문 밖에...

[ES6] 문자열 첫문자,끝문자 [내부링크]

startsWith str의 첫문자로 시작하느냐 묻고있으며endsWith는 끝으로 시작하냐고 묻고있다.str은 hello...

[ES6] for of , forEach [내부링크]

forEach결과값)&quot;valueis&quot;1&quot;valueis&quot;2&quot;valueis&quot;undefined&quot;valueis&q...

[ES6] spread operator [내부링크]

spread operator은 복사하는것이다.pre 배열 변수값을newData 값에 복사한다.... 은 펼치다 라는 의미를 ...

[ES6] li태그 단어 뽑아내기 [내부링크]

#ES6 #javascript #li태그뽑아내기 #string #length #fromlist 변수에 document.query...

[ES6] Destructuring Array [내부링크]

1)결과값)2)#ES6 #Array #배열 #Destructuring

[ES6] Set [내부링크]

set은 중복된 값을 찾을 수 있다.예를들어 아래의 코드와 같이 crong을 두 번 입력했을때출력물에서는 cron...

[ES6] weakset [내부링크]

참조를 가지고 있는 객체만 저장이 가능.#ES6 #javascript #weakset

[ES6] 로또 [내부링크]

#ES6 #ECMAscript #javascript #로또

[JAVA] Call by value 와 call by reference [내부링크]

call by value매개변수의 값을 복사하여 함수의 인자로 전달한다. 변수 명이 같다고해서 같은 값을 갖는게 ...

[JAVA] stack [내부링크]

stack은 후입 선출 Last in First Out조금 치사한 놈이다. 늦게온놈이 먼저 나간다. 어떻게보면 적응...

[JAVA] Queue [내부링크]

Queue는 정직한놈이다. 먼저 들어온 놈이 먼저 나간다First in Firt out fifo 라고 한다. Queue 는...

jquery 3.4.1 [내부링크]

https://code.jquery.com/jquery-3.4.1.min.js들어가서 다른이름으로 저장 js.min 으로 나온다.#...

[java] oop 객체지향 [내부링크]

OOP (Object-oriented programming)모든 데이터를 오브젝트(물체)로 취급하여 프로그래밍 하는 방법...

ORA-28002: the password will expire within 5 days [내부링크]

우선 권한이 없다면아래와 같이 cdm에 들어가서 권한을 주자아래의 scott은 사용자 이름이니 알아서 변경...

[Mybaits]There is no getter for property named.. [내부링크]

오타 문제였다.나같은경우 #{ reply_seq.nextval}  이런식으로 해놔서 에러가 생긴거였다.공부를 하면 ...

[Mybatis] Mapped Statements collection does not contain value for [내부링크]

이것또한... 오타 문제였다.&lt;insert id&#x3D;&quot;오타오타&quot;&gt;&lt;/insert&gt;ins...

[Spring] Field error in object...For input string: "" [내부링크]

이문제로 2일정도 힘들었다.정말 힘들었다결국 jsp 디버깅까지했다. 맨처음에는 Null값이 들어간...

git 버전 명령어 [내부링크]

working tree 버전xStaging Area 버전을 2개, 1개만 올릴때Repository 내문서-git폴더로cd Documen...

[강남] 농민백암순대국밥 [내부링크]

점심 저녁시간에 항상 사람들이 막 줄서서있길래..한 번 먹어봐야지.. 했다가 먹었다.순대국(8천원)을 줄서...

[JAVA] 2강 자바 실행구조 [내부링크]

JAVA 실행구조jdk폴더의 bin폴더 안에 있을것이다.java.exe 파일은 JVM 구동명령javac.exe 파일은...

[JAVA] 3강 변수 [내부링크]

변수 int i&#x3D;10;int j&#x3D;20;이렇게 변수를 선언할 경우메모리 공간에 10, 20이 저장된다.*메...

[JAVA] 4강 기본자료형 [내부링크]

기본 자료형과 객체 자료형기본 자료형은 데이터가 변수에 직접 저장되고,객체 자료형은 객체 메모리 주소...

[JAVA] 5강 특수 문자와 서식문자 [내부링크]

특수문자\t 탭\n 줄바꿈\&#x27; 작은 따옴표\&quot; 큰따옴표\\ 역슬래쉬서식문자%d 10진수%o 8진수%x ...

[JAVA] 6강 연산자 [내부링크]

연산자단항 연산자 - 피연산자가 1개ex) +x, -x, !x!x - x를 부정.이항 연산자 - 피연산자가 2개x&#x3...

[인계동] 노바스시 [내부링크]

Atype 연어세트가 JMT이다#인계동 #노바스시 #연어초밥 #인계동연어초밥

[JAVA] 7강 배열 [내부링크]

배열이란?인덱스를 이용해서 자료형이 같은 데이터를 관리하는 것. a[1] &#x3D; scanner.nextInt();a[1] ...

[JAVA] 8강 배열과 메모리 [내부링크]

배열을 구성하는 데이터의 자료형에 따라서 배열의 메모리 크기가 결정된다.기본 자료형 데이터를 담...

[JAVA] 9강 조건문 [내부링크]

조건문 if문 switch 문 #JAVA #자바 #if문 #switch문 #조건문

[JAVA] 10강 반복문 [내부링크]

반복문프로그램 진행을 특정 조건에 따라 반복적으로 진행하는것.for,while문 조건이 참일 때까지 반복 수...

[JAVA] 11강 객체프로그래밍 [내부링크]

세상에 존재하는 모든 것을 뜻하며, 프로그래밍에서 속성과 기능을 가지는 프로그램 단위.객체(인간세...

[JAVA] 12강 클래스제작 및 객체생성 [내부링크]

클래스 제작클래스는 멤버 변수(속성), 메서드(기능), 생성자 드응로 구성된다.*JVM은 가장 먼저 메인...

[JAVA]13강 메서드 [내부링크]

메서드 선언과 호출메서드 호출중복 메소드 overloading이름은 같고, 매개변수의 개수 또는 타입이 다른 메...

[JAVA]14강 객체와 메모리 [내부링크]

메모리에서 객체 생성(동적)객체는 메모리에서 동적으로 생성되며 객체가 더 이상 필요 없게 되면 Gab...

[JAVA] 15강 생성자와 소멸자 this키워드 [내부링크]

디폴트 생성자디폴트생성자디폴트 생성자가 없는 경우 사용자 정의 생성자 소멸자객체가 GC에 ...

[JAVA] 16강 패키지와 static [내부링크]

패키지packageJAVA 프로그램은 많은 클래스로 구성되고, 이러한 클래스를 폴더 형식으로 관리하는 것...

[JAVA] 17강 데이터 은닉 [내부링크]

멤버변수의 private 설정public String name; 를 다른 패키지에서 사용할 경우 충분히 수정가능;그래...

[JAVA] 18,19강 상속 [내부링크]

부모 클래스를 상속받은 자식 클래스는 부모 클래스의 속성과 기능도 이용할 수 있다.parent class 을 chil...

[JAVA] 20강 내부클래스와 익명 클래스 [내부링크]

내부클래스(잘 사용안함)내부 클래스: 클래스 안에 또다른 클래스를 생성하는것.익명클래스이름이 없는 ...

[JAVA] 21강 인터페이스 [내부링크]

인터페이스란?인터페이스에서 객체를 생성할 순 없다.클래스에서 인터페이스의 기능을 구현하는 단계를 거...

[JAVA] 22강 추상클래스 [내부링크]

추상클래스란?클래스의 공통된 부분을 뽑아서 별도의 클래스(추상클래스)로 만들어 놓고, 이것을 상속해서 ...

[JAVA] 23강 람다식 [내부링크]

람다식?객체지향이 아닌 함수지향으로 프로그래밍 하는 방법.익명 함수를 이용해서 익명 객체를 생성하기 ...

[jqgrid] onCellSelect: [내부링크]

$(&quot;#list&quot;).jqGrid({  . . . onCellSelect: function(rowid,icol,cellcontent,e){  rowid : 선...

ORA-28001 비밀번호 만료 [내부링크]

sqlplus에 들어가서로그인하면 자동으로 비번 바꾸라고한다새비밀번호로 바꿔주면된다.#oracle #오라...

[ORACLE] UNION, UNION ALL [내부링크]

UNION - 조회한 다수의 SELECT 문을 하나로 합치고 싶을때 사용ex)SELECT 이름,나이 FR...

[JAVA] 24강 문자열클래스 [내부링크]

String 객체와 메모리문자열을 다루는 String클래스(객체)는 데이터가 변하면 메모리상의 변화가 많아 속...

[JAVA] 25강 Collections [내부링크]

데이터를 주거니 받거니 하는 방법ListList는 인터페이스로 이를 구현한 클래스는 인덱스를 이용해서 ...

[JAVA] 26강 예외처리 [내부링크]

예외처리프로그램에 문제가 있을 것을 말하며, 예외로 인해 시스템 동작이 멈추는것을 막는것,Exception...

[JAVA] 27강 입력과 출력 [내부링크]

입출력이란?다른 곳의 데이터를 가져오는 것을 입력이라 하고, 다른 곳으로 데이터를 내보내는 것을 출력이...

[JAVA] 28강 네트워킹 [내부링크]

네트워크 데이터 입력 및 출력네트워크 대상(객체) 사이에 입출력(InputStream, OutputStream)를 이용...

[ORACLE] 데이터형식 [내부링크]

VARCHAR2 가변길이이다.CHAR는 길이가 정해져있다.예를들어 CHAR(4)이면 반드시 4BYTE...

[ORACLE] 데이터형식2 [내부링크]

LONG - 잘안씀 , 설정에 제약이 많음.CLOB - 대용량 텍스트 데이터 타입(최대 4Gbyte), N...

[ORACLE] ALTER [내부링크]

테이블 컬럼 데이터타입 수정ALTER TABLE NEWMEMBER MODIFY ID NVARCHA...

[ORACLE] INSERT [내부링크]

INSERT 명령 규칙INSERT INTO &lt;테이블&gt; VALUES &lt;VALUSE&gt;원하...

[ORACLE] UPDATE, DELETE, TRANSACTION [내부링크]

UPDATEPWD를 222로 변경 , WHERE절로 조건을 주는것이 필수안그러면 전체 다바뀜ID D...

[ORACLE] 산술연산자 [내부링크]

공지사항의 조회수를 조회하시오. 단 기존값에 1을 더해서 조회하시오.문자열 더하기|| #ORAC...

[ORACLE] 비교연산자 관계연산자 [내부링크]

비교연산자필터링하기위해 주로 사용&#x3D; , !&#x3D;, ^&#x3D;, &lt;&gt; , &gt; , &lt; &gt;&#x3...

[ORACLE] 정규식 패턴연산 [내부링크]

정규식패턴연산문자열을찾을때 사용하는 검색 패턴 기호\d 0-9를 의미[] 하나의 문자를 대변함01[016789]...

[ORACLE] 문자열비교정규식 [내부링크]

[email protected]@ .orgcomnet\w : 하나의 글자\w+@\w+ .org net com (org | net |com)org 또...

[ORACLE] ROWNUM 행제한 [내부링크]

#ORACLE #ROWNUM #행제한

[ORACLE] 중복값 제거 DISTINCT [내부링크]

DISTINCT - 중복값 제거#ORACLE#중복값제거 #DISTINCT

[ORACLE] 문자열함수 1 [내부링크]

문자열 추출함수 SUBSTR(문자열 , 시작위치, 길이)문자열 덧셈 함수 CONCAT , ||문자열 트...

[ORACLE] 문자열함수2 [내부링크]

문자열 패딩함수 LPAD,RPAD첫 글자를대문자로 바꾸는 함수 INITCAT문자열 검색 함수 ...

[ORACLE]숫자함수 [내부링크]

절대값을 구하는 함수 ABS(n)음수/양수를 알려주는 함수 SIGN(n)숫자 반올림 값 알려주는 함수 ...

[ORACLE] 날짜 함수 [내부링크]

현재 시간을 얻는 함수 SYSDATE 날짜 추출함수 EXTRACT 날짜를 누적하는 함수 ADD_...

[ORACLE] 형식변환함수 [내부링크]

숫자 -&gt; 문자열 TO_CHAR()문자 -&gt; 날짜 TO_DATE()날짜-&gt;문자 TO_CHAR()문자-...

[ORACLE] NULL함수 [내부링크]

NVL(NULL,대체값)NVL2(입력값,NOTNULL 대체값, NULL 대체값)두 값이 같은 경우...

[ORACLE] SELECT 절 [내부링크]

SELECT문의 구절SELECT,FROM,WHERE,GROUP BY, HAVING, ORDER BY...

[ORACLE] HAVING절 [내부링크]

HAVINGGROUP BY는 HAVING을 사용쓰는 순SELECT, FROM, WHERE, GRO...

[ORACLE] 순위함수 [내부링크]

ROW_NUMBER(), RANK()그룹별 등수 OVER (PARTITION BY)#ORACLE#순위...

[ORACLE] 서브쿼리 [내부링크]

구절의 순서를 바꿔야하는 경우#ORACLE#서브쿼리

[ORACLE] INNER JOIN 이너조인 [내부링크]

조인여러테이블을 엮어 필요한 정보만 가져옴종류: INNER JOIN, OUTER JOIN, SELF ...

[ORACLE] OUTER JOIN [내부링크]

OUTER JOIN참조키를 기준으로 일치하지 않는 행도 포함시키는 조인관계가 없지만 포함된 값들은 ...

[ORACLE] 셀프 조인 SELFJOIN, ORACLEJOIN [내부링크]

SELF JOIN 자기가 자기자신을 조인데이터가 서로 포함 관계를 가지는 경우 : 담당, 구성 ,연락댓글...

[ORACLE] UNION [내부링크]

UNION 테이블 컬럼을 합치는건 아니고 레코드를 합침 관련없어도 합칠 수 있음 , 아래의 사진은 ID...

[ORACLE] VIEW [내부링크]

VIEW한마디로 물리적인 테이블을 근거한 논리적인 가상 테이블이미 존재하고 있는 테이블에 제한적으로...

[ORACLE] SUB QUERY 서브쿼리 [내부링크]

서브쿼리쿼리문안에 쿼리문서브쿼리를 포함하고 있는 쿼리문을 메인쿼리, 포함된 쿼리를 서브쿼리비교...

[ORACLE]서브쿼리2 [내부링크]

다중행 서브쿼리 사용FROM절서브쿼리다중 행 서브쿼리는 서브쿼리에서 반환되는 결과가 하나 이상의 행...