Асинхронный вход к базе данных [закрытый] .NET

Я неправильно понял ваш вопрос, вот пересмотренный ответ

Вы можете сначала написать функцию, которая делает это для вектора

f <- function(x) {
    s <- sign(x)
    if (all(is.na(s))) return( c(NA, NA))
    if (all(s == -1)) return( c(NA, NA))
    mn <- min(x[which(s==-1)])
    mx <- max(x[which(s==1)])
    r <- c(mn, mx)
    r[!is.finite(r)] <- NA
    r
}

И проверить ее

a <- c(5,-1,2)
b <- c(-5,-1,-2)
f(a)
#[1] -1  5
f(b)
#[1] NA NA
f(c(NA, NA, NA))
#[1] NA NA
f(c(0, 0, 0))
#[1] NA NA
[117 ] Есть предупреждение, которое можно игнорировать (или отключить) Теперь с растровыми данными:

library(raster)
r1 <- r2 <- r3 <- raster(ncol=10, nrow=10)
set.seed(1)    
values(r1) <- runif(ncell(r1), -1, 1)
values(r2) <- runif(ncell(r2), -1, 1) / 2
values(r3) <- runif(ncell(r3), -1, 1) * 1.5
s <- stack(r1, r2, r3)

x <- calc(s, f)
x

#class       : RasterBrick 
#dimensions  : 10, 10, 100, 2  (nrow, ncol, ncell, nlayers)
#resolution  : 36, 18  (x, y)
#extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
#data source : in memory
#names       :       layer.1,       layer.2 
#min values  : -1.3561226050,  0.0004409726 
#max values  :   -0.04476076,    1.44469038 

Или с растровой алгеброй, что-то вроде этого:

pos <- reclassify(s, cbind(-Inf, 0, NA))
neg <- reclassify(s, cbind(0, Inf, NA))
xp <- max(pos, na.rm=TRUE)
nn <- min(neg, na.rm=TRUE)
nn <- mask(nn, xp)
r <- stack(nn, xp)
r

(я был не совсем уверен, как вы хотите иметь дело с ячейками, которые имеют только нулевое значение, поэтому я не беспокоился об этом)

6
задан mickdelaney 15 April 2009 в 16:09
поделиться

6 ответов

Мы просто регистрируемся в базе данных по ошибке, потому что мы интенсивно используем OLTP-систему.

Если БД работает вниз, значит, система не работает: асинхронная регистрация, когда телефоны раскалены, является избыточной ...

0
ответ дан 10 December 2019 в 00:44
поделиться

Я очень рекомендую изучить NLOG . Он очень гибкий и регистрируется асинхронно. Вы можете настроить его для входа в конкретный файл или базу данных. Однако вам нужно будет создать свой собственный просмотрщик журналов.

Мы религиозно используем NLOG и не можем быть счастливее с ним.

2
ответ дан 10 December 2019 в 00:44
поделиться

Log4Net доставляет сообщения журнала синхронно, но они могут вести себя асинхронно в соответствии с этим . SqlServerAppender имеет свойство bufferSize, которое контролирует, сколько событий журнала собирается в буфере до их записи в базу данных. Если это не соответствует вашим потребностям, вы можете написать свой собственный заявитель. Ответ в на этот пост дает рабочий пример.

3
ответ дан 10 December 2019 в 00:44
поделиться

Попробуйте logFaces , это централизованный сервер журналов, агрегатор и просмотрщик, прекрасно работает с приложением log4net UDP. .

Раскрытие : я являюсь автором этого продукта.

3
ответ дан 10 December 2019 в 00:44
поделиться

Когда мы сделали это, мы просто записали в простую внутреннюю очередь и сделали поток, выполняющий фактическую запись. Таким образом, наш код, который регистрировался, подвергается минимальному воздействию, и простая очередь и поток смогли поддерживать нас в курсе.

2
ответ дан 10 December 2019 в 00:44
поделиться

Я видел ссылки на людей, которые использовали средство ведения журнала Microsoft Enterprise Library в сочетании с MSMQ для достижения асинхронного протоколирование. Никакой помощи зрителю.

0
ответ дан 10 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: