Почему нам нужно создавать, открывать и закрывать соединения БД для получения нескольких наборов результатов, но не для получения одного набора?

Используя Swift 4 и Xcode 9, это рабочий пример округления ImageView с теневой тканью и границей.

    //set dimensions and position of image (in this case, centered)
    let imageHeight: CGFloat = 150, imageWidth: CGFloat = 150
    let xPosition = (self.view.frame.width / 2) - (imageWidth / 2)
    let yPosition = (self.view.frame.height / 2) - (imageHeight / 2)

    //set desired corner radius
    let cornerRadius: CGFloat = 20

    //create container for the image
    let imageContainer = UIView(frame: CGRect(x: xPosition, y: yPosition, width: imageWidth, height: imageHeight))

    //configure the container
    imageContainer.clipsToBounds = false
    imageContainer.layer.shadowColor = UIColor.black.cgColor
    imageContainer.layer.shadowOpacity = 1
    imageContainer.layer.shadowOffset = CGSize(width: 3.0, height: 3.0)
    imageContainer.layer.shadowRadius = 5
    imageContainer.layer.shadowPath = UIBezierPath(roundedRect: imageContainer.bounds, cornerRadius: cornerRadius).cgPath

    //create imageView
    let imageView = UIImageView(frame: imageContainer.bounds)

    //configure the imageView
    imageView.clipsToBounds = true
    imageView.layer.cornerRadius = cornerRadius
    //add a border (if required)
    imageView.layer.borderColor = UIColor.black.cgColor
    imageView.layer.borderWidth = 1.0
    //set the image
    imageView.image = UIImage(named: "bird")

    //add the views to the superview
    view.addSubview(imageContainer)
    imageContainer.addSubview(imageView)

Если вы хотите, чтобы изображение было кругом: (и показано без рамки)

let cornerRadius = imageWidth / 2

0
задан azure boy 17 January 2019 в 12:08
поделиться

1 ответ

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

Таким образом, рекомендуемый подход состоит в том, чтобы открывать соединение с базой данных только при необходимости и закрывать, как только цель его открытия обслуживается.

В приведенном вами примере несколько операций с базами данных выполняются за один раз. Таким образом, вместо открытия соединения индивидуально для каждой операции, открывается только одно соединение, и оно закрывается после выполнения операции. Здесь соединение открывается и закрывается вручную.

Новые подходы DataAccess Layers, такие как EntityFramework и т. Д., Выполняют эту работу внутренне.

UsersPhonesDBContext.Database.SqlQuery<Phones>("dbo.InsertPhones @model", sqlParam);

В этой строке кода соединение с базой данных открывается и закрывается внутри, не беспокоясь об этом.

Таким образом, основной мотив состоит в том, чтобы свести к минимуму операции по открытию и закрытию соединения и закрыть соединение, как только цель его открытия закончится.

0
ответ дан Chetan Ranpariya 17 January 2019 в 12:08
поделиться
Другие вопросы по тегам:

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