


Menggunakan Durid untuk pengurusan kolam sambungan pangkalan data dalam pembangunan API Java
Semasa proses pembangunan Java API, menyambung ke pangkalan data adalah keperluan biasa. Memandangkan menggunakan DriverManager untuk mendapatkan sambungan pangkalan data setiap kali akan membawa overhed yang tinggi, adalah perlu untuk menggunakan teknologi pengumpulan sambungan. Druid ialah kumpulan sambungan JDBC berprestasi tinggi dengan satu siri fungsi berkuasa seperti pemantauan, statistik dan pengembangan Artikel ini akan memperkenalkan cara menggunakan Druid dalam pembangunan Java API.
1. Pengenalan kepada Druid
Druid ialah kumpulan sambungan pangkalan data yang dibangunkan oleh Alibaba. Ia mempunyai ciri-ciri prestasi cemerlang, fungsi yang kaya dan penggunaan yang mudah. Kelebihan kumpulan sambungan Druid adalah seperti berikut:
- Respon pantas terhadap permintaan SQL
- Menyediakan keupayaan pemantauan SQL
- Menyediakan nilai purata, maksimum, minimum SQL masa pelaksanaan, dsb. Statistik
- Dayakan fungsi suntikan anti-SQL
- Kod Druid adalah sekecil pemacu pangkalan data, tidak lebih daripada 2MB, yang sangat sesuai untuk aplikasi terbenam.
2. Gunakan Druid untuk pengurusan kumpulan sambungan
Mari kita lihat cara menggunakan Druid untuk pengurusan kumpulan sambungan dalam aplikasi Java.
- Perkenalkan kebergantungan Druid
Perkenalkan kebergantungan berkaitan Druid dalam pom.xml
<!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency>
- Konfigurasikan kumpulan sambungan Druid
Sebelum menggunakan kumpulan sambungan Druid , yang perlu dikonfigurasikan. Konfigurasi Druid boleh dicapai melalui dua kaedah: kod dan fail konfigurasi Di sini kita mengambil kaedah kod sebagai contoh.
//创建 Properties 对象用于存储配置信息 Properties props = new Properties(); //设置连接池基本属性 props.put("driverClassName", "com.mysql.jdbc.Driver"); props.put("url", "jdbc:mysql://localhost:3306/test"); props.put("username", "root"); props.put("password", "root"); //连接属性配置 props.put("initialSize", "5"); props.put("minIdle", "5"); props.put("maxActive", "20"); props.put("maxWait", "60000"); props.put("timeBetweenEvictionRunsMillis", "60000"); props.put("minEvictableIdleTimeMillis", "300000"); props.put("validationQuery", "SELECT 'x'"); props.put("testWhileIdle", "true"); props.put("testOnBorrow", "false"); props.put("testOnReturn", "false"); props.put("poolPreparedStatements", "true"); props.put("maxOpenPreparedStatements", "20"); props.put("filters", "stat,wall,log4j"); //创建 DruidDataSource 实例 DruidDataSource dataSource = new DruidDataSource(); dataSource.configFromPropety(props);
Dalam kod di atas, kami menetapkan URL sambungan pangkalan data, nama pengguna, kata laluan, serta bilangan awal sambungan, bilangan maksimum sambungan dan maklumat konfigurasi lain. Antaranya, maksud setiap konfigurasi adalah seperti berikut:
- driverClassName: JDBC driver full class name
- url: database connection URL
- username: database connection user nama
- kata laluan: kata laluan sambungan pangkalan data
- initialSize: bilangan sambungan fizikal yang diwujudkan semasa permulaan. Permulaan berlaku pada permulaan.
- maxActive: Bilangan maksimum kumpulan sambungan
- minIdle: Bilangan minimum kumpulan sambungan
- maxTunggu: Masa menunggu maksimum apabila mendapatkan sambungan, dalam milisaat.
- timeBetweenEvictionRunsMillis: mempunyai dua maksud: 1) Benang Destroy akan mengesan selang sambungan. 2) Untuk asas penghakiman testWhileIdle, sila rujuk perihalan atribut testWhileIdle untuk butiran
minEvictableIdleTimeMillis: masa kemandirian minimum sambungan dalam kolam, dalam milisaat.
validationQuery’ digunakan untuk menyemak sama ada sambungan itu sah. Ia memerlukan pernyataan pertanyaan (hasil pelaksanaan pernyataan itu tidak penting).
-testWhileIdle: Diuji semasa memohon sambungan Jika masa melahu lebih besar daripada timeBetweenEvictionRunsMillis, laksanakan validationQuery untuk menyemak sama ada sambungan itu sah.
-testOnBorrow: Apabila memohon sambungan, laksanakan validationQuery untuk menyemak sama ada sambungan itu sah Konfigurasi ini akan mengurangkan prestasi.
-testOnReturn: Apabila mengembalikan sambungan, jalankan validationQuery untuk menyemak sama ada sambungan itu sah dengan melakukan konfigurasi ini akan mengurangkan prestasi dan menambah pertimbangan pada kumpulan sambungan
-poolPreparedStatements: sama ada untuk cache preparedStatement. PSCache. PSCache sangat meningkatkan prestasi pangkalan data yang menyokong kursor, seperti Oracle. Adalah disyorkan untuk menutupnya di bawah mysql.
-maxOpenPreparedStatements: Selepas menghidupkan poolPreparedStatements, anda perlu menentukan bilangan pernyataan cache pada setiap sambungan
-penapis: Jenis atribut ialah pemalam Sambungan dikonfigurasikan melalui pemalam yang biasa digunakan. ins ialah:监控统计用的filter:stat 日志用的filter:log4j 防御SQL注入的filter:wall
- Dapatkan sambungan pangkalan data
Selepas contoh DruidDataSource dicipta, kita boleh mendapatkan sambungan melalui kaedah DruidDataSource.getConnection().
Connection conn = dataSource.getConnection();
- Pelaksanaan statistik pemantauan dan log pelaksanaan SQL
Selain fungsi asas kumpulan sambungan, Druid juga menyediakan fungsi praktikal seperti statistik pemantauan dan log pelaksanaan SQL. Kita boleh mencapai ini dengan menetapkan Penapis semasa membangunkan kod.
// 创建 Druid 连接池 DruidDataSource dataSource = new DruidDataSource(); //... 配置数据库连接池信息 // 配置监控统计 // 设置监控统计用的 Filter,用于统计监控信息 WallFilter wallFilter = new WallFilter(); wallFilter.setDbType("mysql"); StatFilter statFilter = new StatFilter(); statFilter.setSlowSqlMillis(1000); statFilter.setLogSlowSql(true); // 设置 Druid 连接池的 Filters dataSource.setProxyFilters(Arrays.asList(wallFilter, statFilter)); // 打印 SQL 执行日志 Log4jFilter logFilter = new Log4jFilter(); logFilter.setStatementExecutableSqlLogEnable(true); dataSource.setProxyFilters(Collections.singletonList(logFilter));
Semasa proses pelaksanaan khusus, kita boleh memilih untuk menggunakan statistik pemantauan atau fungsi log mengikut keperluan.
3. Kesimpulan
Artikel ini memperkenalkan cara menggunakan Druid untuk pengurusan kumpulan sambungan dalam pembangunan Java API. Dengan menggunakan Druid, kami bukan sahaja boleh meningkatkan prestasi aplikasi, tetapi juga memperoleh pemahaman yang lebih komprehensif tentang pengendalian aplikasi melalui fungsi seperti statistik pemantauan dan log pelaksanaan SQL.
Atas ialah kandungan terperinci Menggunakan Durid untuk pengurusan kolam sambungan pangkalan data dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pertama, aktifkan fungsi skala terbina dalam penyemak imbas UC, pergi ke Tetapan → Layari Tetapan → Font dan Typesetting atau Page Scaling, dan pilih nisbah pratetap atau peratusan tersuai; Kedua, anda boleh memaksa saiz paparan halaman dengan membuka atau mencubit gerak isyarat dengan dua jari; Untuk laman web yang menyekat skala, anda boleh meminta versi desktop laman web untuk membuka kunci sekatan; Pengguna lanjutan juga boleh mengubah suai atribut Viewport dengan melaksanakan kod JavaScript di bar alamat untuk mencapai kesan skala paksa yang lebih fleksibel.

Sistem masa nyata memerlukan tindak balas deterministik, kerana ketepatan bergantung pada masa penghantaran hasil; Sistem masa nyata yang sukar memerlukan tarikh akhir yang ketat, terlepas akan membawa kepada bencana, sementara masa nyata yang lembut membolehkan kelewatan sekali-sekala; Faktor-faktor yang tidak ditentukan seperti penjadualan, gangguan, cache, pengurusan memori, dan lain-lain mempengaruhi masa; Pelan pembinaan termasuk pemilihan RTO, analisis WCET, pengurusan sumber, pengoptimuman perkakasan dan ujian yang ketat.

Jawapannya ialah menggunakan thread.currentThread ().

Pengendalian pengecualian Java menangkap pengecualian melalui blok cuba, akhirnya blok memastikan pembersihan sumber, cuba-dengan-sumber secara automatik menguruskan sumber, melemparkan pengecualian, pengecualian adat untuk menangani kesilapan tertentu, dan mengikuti amalan terbaik seperti menangkap pengecualian tertentu, tidak mengabaikan pengecualian, dan mengelakkan blok tangkapan kosong, dengan itu mencapai kod yang rapi dan mengekalkan.

Kelas pilihan digunakan untuk mengendalikan nilai -nilai yang selamat yang mungkin menjadi batal, mengelakkan pengecualian penunjuk null. 1. Buat contoh menggunakan pilihan. Nullable untuk mengendalikan nilai null. 2. Semak dan nilai akses melalui ISPRESENT atau Keselamatan IFPRESENT untuk mengelakkan panggilan langsung untuk menyebabkan pengecualian. 3. Gunakan Orelse dan Orelseget untuk memberikan nilai lalai, atau gunakan Orelsethrow untuk membuang pengecualian tersuai. 4. Menukar atau menapis nilai melalui operasi peta dan penapis rantaian untuk meningkatkan kebolehbacaan kod dan ketahanan.

Edge menduduki CPU yang tinggi kerana penggunaan sumber yang tinggi berdasarkan kernel kromium, ditambah dengan faktor-faktor seperti halaman multi-tab, plug-in berjalan, skrip laman web dan mekanisme rendering; Penyelesaian termasuk: 1. Tutup sambungan yang tidak perlu untuk mengurangkan beban latar belakang; 2. Dayakan fungsi "Tag Tidur" untuk mengurangkan penggunaan sumber tag terbiar; 3. Bersihkan proses latar belakang dan tutup tetapan yang berkaitan dengan GPU; 4. Kemas kini penyemak imbas dan sistem untuk memastikan keserasian dan pengoptimuman prestasi.

Gunakan kaedah getClass () untuk mendapatkan kelas runtime objek, seperti str.getClass () untuk mengembalikan objek kelas; Untuk jenis, anda boleh menggunakan sintaks string.class secara langsung. Kelas kelas menyediakan kaedah seperti getName (), getImpleName () untuk mendapatkan maklumat kelas, seperti num.getClass (). GetImpleName () untuk output integer.

DiaplacemethodinjavareturnsanewstringwithalloccurrencesofspecifiedCharactersorsorsreplaced.ithastwoforms: OneForReplacingsinglecharactersandanotherforsubstrings.sincestringsareimmutable, theoriginalremainsuncle, "
