Rust에서 제너릭 데이터 타입 사용법을 간단하게 살펴보고 또한 Rust에서 모든 참조는 Lifetime을 갖는 데 이 부분에 있어 다른 개발 언어와 약간 독특한 문법을 가지고 있어서 간단한 예제로 정리하였다. 어떠한 객체가 있고 이를 가리키는 참조가 있다면 객체가 삭제되었는데 참조가 여전히 존재하는 경우를 해결하는 방법이라고 생각하자.
// 기본 참조 예제
fn main() {
let mut var1 = 10;
let mut var2 = 20;
let mut var3 = 0;
get_int_ref(&mut var1, &mut var2, &mut var3);
println!("{} + {} = {}", var1, var2, var3);
}
fn get_int_ref(p1: &mut i32, p2: &mut i32, p3: &mut i32) {
*p1 = *p1 + 1;
*p2 = *p2 - 1;
*p3 = *p1 + *p2;
}
MongoDB를 C#에서 CRUD 형태로 조작해보는 간단한 샘플 예제이다. Visual Studio 2019에서 .NET Core 콘솔 프로젝트를 생성하고 Nuget에서 MongoDB.Driver 패키지를 추가한다. 대상 프레임워크는 3.1이며 Visual Studio 버전은 16.5.3이다.
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace ConsoleMongo
{
//[BsonIgnoreExtraElements]
public class BoardModel
{
[BsonId]
//[BsonIgnoreIfDefault]
[BsonElement("_id")]
public ObjectId ID { get; set; }
public string UserID { get; set; }
public string UserName { get; set; }
//[BsonElement("userkind")]
public string UserKind { get; set; }
public AddressModel Address { get; set; }
}
public class AddressModel
{
public string StreetAddress { get; set; }
public string ZipCode { get; set; }
}
}
AMM(Auto Memory Management)이란 오라클에서 인스턴스 메모리를 관리하는 가장 간단한 방법이다. 오라클에는 PGA(System Global Area), SGA(Program Global Area) 불리는 메모리 영역이 존재한다. 11g 이상에서 도입한 AMM 관리 기법은 SGA+PGA를 자동으로 관리하는 방식이다. 이때 전체 메모리를 설정하는 memory_max_target, memroy_target 파라미터를 설정해 주어야 하는 데 리눅스 운영체제의 /dev/shm
크기가 최대치가 된다. 리눅스는 기본적으로 전체 메모리의 50%를 ‘/dev/shm’에 할당하는 데 필요한 경우 이 영역을 변경하고 오라클 파라미터를 설정해야 오류가 나지 않는다. CentOS 8, Database 설치 글을 참고하여 필요한 만큼 설정(fstab, size)한다.
AMM 기능을 사용하면 SGA_TARGET, PGA_AGGREGATE_TARGET의 값을 0으로 지정하는 것이 좋다. 0이 아닌 경우 그 값을 최솟값으로 인식하기 때문이다.
su - oracle
sqlplus /nolog
SQL> conn / as sysdba
SQL> show parameter target
# 현재 설정되어 있는 memory_max_target, memory_target,
# pga_aggregate_target, sga_target 값을 확인한다.