프로그래밍
-
[PHP] 게시판 만들기 - 관리자 기능 ①프로그래밍/PHP 2020. 9. 25. 23:17
여태까지의 실습을 통해 게시판에 필요한 대부분의 기능들을 구현해보았습니다. 실습을 끝내려다가, 완성된 게시판을 관리할 수 있는 관리자 기능을 추가하면 좋겠다고 생각하여, 번외로 이번 실습을 진행해볼까합니다. 관리자 계정으로 할 수 있는 기능 요구사항은 다음과 같습니다. 1. 모든 회원의 정보를 수정, 삭제할 수 있다. (DB구조를 모두 엎어야해서 시간관계상 생략 하겠습니다;;) 2. 모든 게시판 글을 수정, 삭제할 수 있다. 3. 모든 댓글을 삭제할 수 있다. 먼저 DB 구조를 조금 수정해보도록 하겠습니다. 127.0.0.1/phpmyadmin에 접속한 후 현재 프로젝트에서 사용하고 있는 DB에 들어가 user 테이블을 클릭한 후, SQL 클릭, 아래와 같이 SQL 쿼리를 작성한 후, Ctrl Enter..
-
[C/C++] STL Map, Set, Multiset 사용법프로그래밍/C,C++ 2020. 9. 22. 16:39
Map 인덱스로 다양한 자료형을 사용할 수 있음 key-value가 한쌍인 트리 구조 (레드 블랙 트리로 구현되어있음) key는 중복 허용을 하지 않음 key를 기준으로 정렬된 상태이기 때문에 검색 속도가 빠른 게 장점 key-value를 같이 쓰면서, 검색을 빨리해야 하는 경우 사용 /* STL Map 사용법 */ #include #include using namespace std; int main(void) { map M; // Map 선언 map::iterator it; // iterator를 통해 Map에 접근 M['A']=3; // key : A - value : 3 M['A']=5; // key는 중복허용이 안된다! 따라서 key 'A'의 value가 5로 갱신 M['B']=2; M.inser..
-
[C/C++] STL Stack, Queue 사용법프로그래밍/C,C++ 2020. 9. 22. 15:49
1. 스택(Stack) 선입후출, FILO(First In Last Out) DFS에서 많이 사용됨(실행순서를 기록해야할 때 등) /* STL Stack 사용법 */ #include #include // 반드시 선언 using namespace std; int main(void){ stack S; // 스택 선언 S.push(10); // 스택 값 push S.push(-3); S.push(15); printf("%d\n",S.top()); // 스택 맨 위의 값 리턴 : 15 printf("%d\n",S.size()); // 스택의 크기(원소의 개수) 리턴 while(!S.empty()) { // 스택이 비어있는지 확인 S.pop(); // 스택 값 pop } } ※ Stack이 비어있는데 top() ..
-
[JAVA] 문자열 클래스프로그래밍/JAVA 2020. 9. 7. 21:54
String 클래스 java.lang 패키지에 포함된 클래스로 문자열을 나타냄 String을 선언하는 방법은 크게 다음과 같이 두가지가 존재 // 리터털 String str2 = "JAVA"; // new 연산자 char data[] = {'J', 'A', 'V', 'A'}; String str2 = new String(data); String str3 = new String("JAVA"); // str2, str3 모두 "JAVA" 문자열 여기서 String을 리터럴로 선언하는 것과 new 연산자를 이용해 선언하는 것과 굉장히 중요한 차이점이 존재! String str1 = "JAVA"; String str2 = "JAVA"; if(str==str2) { // 두 객체의 메모리 주소를 비교 System..
-
[JAVA] 추상 클래스와 인터페이스프로그래밍/JAVA 2020. 9. 7. 17:49
추상클래스 추상 클래스는 상속에서 슈퍼클래스로 사용 (계층 구조를 만들기에 좋음) 추상 클래스는 추상 메소드를 포함하는 경우, 포함하지 않는 경우가 있음 /* 추상 메소드를 포함하는 클래스 */ abstract class Shape { public Shape() { } public void paint() { draw(); } abstract public void draw(); // 추상 메소드 선언 } /* 추상 메소드가 없는 클래스 */ abstract class MyComponent { String name; public void load(String name) { this.name = name; } } 추상 메소드란 선언은 되어 있으나 코드 구현은 되어 있지 않은 메소드를 의미 추상 메소드의 구현은..
-
[JAVA] 배열 사용법프로그래밍/JAVA 2020. 9. 3. 00:37
/* 20200903 - 자바 배열의 개념, 사용법 스터디 */ import java.util.Arrays; import java.util.Scanner; import java.util.stream.IntStream; public class MainClass { public static void main(String[] args) { // 배열 선언 후 초기화 int[] arr1 = new int[5]; IntStream.range(0, arr1.length).forEach(i -> { arr1[i] = 100 * (i + 1); System.out.println("arr1[" + i + "] : " + arr1[i]); }); // 배열 선언과 동시에 초기화 int[] arr2 = {10, 20, 30..
-
[C/C++] map 자료구조를 이용한 문자열 문제 해결프로그래밍/C,C++ 2020. 9. 2. 14:35
/* 알파벳의 개수 구하기 */ #include #include // map 자료구조를 사용하기 위한 헤더파일 선언 using namespace std; int main(void) { ios_base::sync_with_stdio(false); freopen("input.txt","rt",stdin); map ch; // key-value 형태의 자료구조 map::iterator it; // map 접근자 char a[100]; cin>>a; for(int i=0;a[i]!='\0';i++) { ch[a[i]]++; // key로 접근하고 value값을 1 증가 } for(it=ch.begin();it!=ch.end();it++) { cout
-
[JAVA] final프로그래밍/JAVA 2020. 8. 10. 00:48
final 클래스 final이 클래스 앞에서 사용되면 클래스를 상속받을 수 없음을 지정 final class FinalClass { // 이 클래스는 상속 불가 .... } class SubClass extends FinalClass { // 컴파일 오류 발생, FinalClass 상속 불가 .... } final 메소드 final로 메소드를 선언하면 오버라이딩할 수 없는 메소드임을 선언 자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속받아 사용하게끔 함 public class SuperClass { protected final int finalMethod() { .... } // finalMethod()는 자식이 오버라이딩 불가 } class SubClass extend..