数据库连接池的实现及原理

数据库连接池的实现及原理

一个简单的数据库应用,对于数据库的访问不是很频繁,因此可以简单地在需要访问数据库时,创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但是对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,此时连接的使用就成了系统性能的瓶颈。 连接复用。通过建立一个数据库连接池以及一套连接使用管理策略,使得一个数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。 对于共享资源,有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放所造成的问题。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供...

编程 2020-02-16 PM 1201℃ 0条
Intellij IDEA 中JAVA常用配置项总结

Intellij IDEA 中JAVA常用配置项总结

详情请点击:**【[Intellij IDEA 中JAVA常用配置项总结](https://segmentfault.com/a/1190000021719915 "Intellij IDEA 中JAVA常用配置项总结")】**

开发工具 2020-02-12 PM 1935℃ 0条
求两数之和 | leetcode

求两数之和 | leetcode

## 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] ## 解法一 使用暴力解法,嵌套循环求和判断,时间复杂度为O(n^2): ```java class Solutio...

算法 2020-01-28 AM 2217℃ 0条
安装homebrew出现“curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused”

安装homebrew出现“curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused”

按照官方文档https://brew.sh/index_zh-cn 正常来说是可以很方便地安装homebrew的,偏偏被我遇到一个简单又很怪异的问题,这边文章记录一下出现的问题及解决方案。 当我执行如下命令: ```shell /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ``` 并未正常地进行下载、安装,而是出现 curl: (7) Failed to connect to raw.githubusercontent.com...

软件安装 2020-01-27 PM 3969℃ 0条
php hash算法实现memcached分布式

php hash算法实现memcached分布式

## 一、概述 Memcached和mysql一样,是一款客户端/服务器端(C/S)系统管理软件,有IP、端口,一旦启动,服务器就一直处于可用状态。 Mysql是通过SQL语句管理“磁盘中”的文件,Memcached是通过客户端发送的命令管理“内存中缓存”的数据。 需要缓存的对象或数据以 key/value 对的形式保存在服务器端,key的值通过hash(hash算法的意义在于提供一种快速存取数据的方法,它用一种算法建立键值与真实值之间的对应关系)进行转换,把value传递到对应的具体的某台服务器上。 ![](http://images.kuryun.com/blog/ty...

编程 2020-01-18 PM 1539℃ 0条
php7编译安装openssl扩展

php7编译安装openssl扩展

## 编译安装openssl拓展 因为PHP源码中自带扩展文件夹ext,该文件夹中可以找到openssl扩展源码。 ```shell cd /path/to/php-7.x.x/ext ls ``` 可以看到许多扩展文件夹: ![](http://images.kuryun.com/blog/typecho/1578998541.png) 进入openssl文件夹,开始编译工作。依次执行一下命令: ```shell cd openssl cp config0.m4 config.m4 phpize #用于生成PECL扩展的conf...

编程 2020-01-14 PM 2168℃ 0条
讨论多线程synchronized的用法

讨论多线程synchronized的用法

## 概念 synchronized 是 Java 中的关键字,利用锁的机制来实现同步的。 锁机制有如下两种特性: - 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制。只有这样,在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们通常称为操作的原子性。 - 可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能是在本地缓存的某个副本上继续操作从而引起不一致,产生所谓的“脏数据”。 ## synchronized修饰的...

编程 2019-12-29 PM 987℃ 0条
基于Swing的一对一聊天程序

基于Swing的一对一聊天程序

## 前言 在另一篇文章《[使用Java Socket演示客户端与服务端的一问一答](http://www.i366211.com/archives/59/ "使用Java Socket演示客户端与服务端的一问一答")》中有着重提到该文演示的客户端与服务端的通信是一问一答式的,但是当时没有解答原因是什么。这篇文章准备演示一个简单的自由沟通式聊天程序,因此我们要先明白之前的客户端与服务端只能一问一答的原因。对线程有一定了解的,其实可以很快想到原因,因为客户端、服务端的接收和发送都在主线程中,而同一个线程中同一时间只能处理接收或发送的任务。 为了实现同时收发消息,那就要做个特殊处理——把接...

编程 2019-12-28 AM 2685℃ 0条
使用Java Socket演示客户端与服务端的一问一答

使用Java Socket演示客户端与服务端的一问一答

## 一、什么是套接字(socket) 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。 套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。 网络套接字是IP地址与端口的组合。 Socket是Java网络编程的基础,所以有必要了解它的原理及使用。这篇文章主要介绍如何使用java的socket接口演示客户端与服务端***一问一答***(注意不是自由沟通,自由沟通会在其他文章介绍)式的通信。 ## 二、实验步骤 使用socket完成客户端与服务端的通信,主要包含以下几个步骤: 1....

编程 2019-12-27 AM 1756℃ 0条
找出一个文件夹下的最大和最小文件

找出一个文件夹下的最大和最小文件

记录一下使用Java获取一个文件夹(及其子文件夹)下的最大文件和最小文件。核心思想是对File类的方法进行灵活的调用,主要用到File类的以下几个方法: - exists(): 判断文件/文件夹是否存在 - isFile(): 判断是否是文件 - isDirectory(): 判断是否是文件夹 - length(): 获取文件大小(单位b) 具体实现代码及注释如下: ```java package io; import java.io.File; public class TestFile { public static void main...

编程 2019-12-05 PM 1110℃ 0条