深入理解PreparedStatement

预处理

@Overridepublic boolean login(String username, String userpwd) {Connection  con = DBUtils.getConnection();try {if(con != null){PreparedStatement pstmt = con.prepareStatement("select username,userpwd from " +" users where username=? and userpwd=?");pstmt.setString(1,username);pstmt.setString(2,userpwd);ResultSet rs = pstmt.executeQuery();if(rs.next()){return  true;}else{return  false;}}} catch (SQLException e) {throw new RuntimeException(e);}return  false;}

分层

utils 工具类
entity/pojo 实体类/标准封装类
dao 数据库对象操作层
service 服务层
controller 业务控制层
在这里插入图片描述

JavaSE 项目

项目要求:

1、优化人事管理系统,要有完整的业务关系。
2、人事管理系统中要包含网络编程。
3、人事管理系统中要包含多线程。

连接池

数据库连接池负责分配、管理和释放数据库链接,它允许应用程序重复使用一个现有的数据库链接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库链接来避免因为没有释放数据库链接而引起的数据库链接遗漏。这项技术能明显提高对数据库操作的性能。

最小连接数:

是连接池一直保持的数据库链接数,所以如果应用程序对数据库链接的使用量不大,将会有大量的数据库链接资源被浪费,合理设置最小连接数,能够有效提高数据库链接性能。

最大连接数:

是连接池能申请的最大数据库连接数,如果数据库链接请求超过此数,后面的数据库链接请求将被加入到等待队列中,这会影响之后的数据库链接操作,因此合理设置最大连接数,也能够有效提高数据库链接性能。

最小连接数与最大连接数差距:

最小连接数与最大连接数相差太大,那么最先的链接请求将会获利,之后超过最小连接数量的链接请求等价于建立一个新的数据库链接,不过,这些大于最小连接数的数据库链接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

DBCP Apache 连接池
在这里插入图片描述

连接池配置文件内容如下:

driverClassName = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/wlx
username = root
password = 123456
#初始连接数
initialSize = 10
#最大链接数
maxActive = 100
#最小空闲数
minldle = 100
#最大空闲数
maxldle = 200
package com.wlx.day15.utils;import org.apache.commons.dbcp.BasicDataSourceFactory;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;public class DBPoolUtils
{//链接数据库的数据源对象private  static DataSource  dataSource;//将链接存储在多线程中,一个链接一个线程private static  ThreadLocal<Connection>  threadLocal = new ThreadLocal<>();//数据库链接对象private  static  Connection con;static{try {Properties  source = new Properties();source.load(DBPoolUtils.class.getClassLoader().getResourceAsStream("db.properties"));//初始化数据源对象dataSource = BasicDataSourceFactory.createDataSource(source);} catch (Exception e) {e.printStackTrace();}}/*** 一个链接一个线程* 一个线程一个事务* 一个事务一个业务* @return*/public static  Connection getConnection(){try {//获取ThreadLocal中的数据库链接对象con = threadLocal.get();if(con == null){con = dataSource.getConnection();threadLocal.set(con);return con;}} catch (SQLException e) {e.printStackTrace();}return con;}}

泛型

1.1、定义
就是允许在定义类/接口时指定类型形参,这个类型形参将在声明变量创建对象时传入实际的参数。
分为:泛型类、泛型接口、泛型变量、泛型方法。

1.2、泛型通配符

?表示任意类型
通配符后可以直接跟 extends/super,表示有限制的通配符。

<? extends Parent> 设置泛型的上限 <? super Child> 设置泛型的下限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389240.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬核!288页Python核心知识笔记(附思维导图,建议收藏)

不少朋友在学习Python时&#xff0c;都会做大量的笔记&#xff0c;随着学习进度的增加&#xff0c;笔记越来越厚&#xff0c;但有效内容反而越来越少。 今天就给大家分享一份288页Python核心知识笔记&#xff0c;相较于部分朋友乱糟糟的笔记&#xff0c;这份笔记更够系统地总结…

【Vue3】具名插槽

【Vue3】具名插槽 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本文内…

AcWingTrie树

字典树的应用背景&#xff1a; 看以下几个题: 1、给出n个单词和m个询问&#xff0c;每次询问一个单词&#xff0c;回答这个单词是否在单词表中出现过 答:简单!map&#xff0c;短小精悍。 好。下一个 每次询问一个前缀&#xff0c;回答询问是多少个单词的前缀。2、给出n个单词和…

零基础入门转录组数据分析——机器学习算法之boruta(训练模型)

零基础入门转录组数据分析——机器学习算法之boruta&#xff08;训练模型&#xff09; 目录 零基础入门转录组数据分析——机器学习算法之boruta&#xff08;训练模型&#xff09;1. boruta基础知识2. boruta&#xff08;Rstudio&#xff09;——代码实操2. 1 数据处理2. 2 构建…

【SQL Server】默认端口与自定义端口

目录 第4章&#xff1a;默认端口与自定义端口 SQL Server 默认端口号 更改 SQL Server 端口号 使用自定义端口的好处 示例&#xff1a;更改 SQL Server 端口为 1434 示例代码&#xff1a;更新连接字符串 安全注意事项 第4章&#xff1a;默认端口与自定义端口 SQL Serve…

只有4%知道的Linux,看了你也能上手Ubuntu桌面系统,Ubuntu简易设置,源更新,root密码,远程服务...

创作不易 只因热爱!! 热衷分享&#xff0c;一起成长! “你的鼓励就是我努力付出的动力” 最近常提的一句话&#xff0c;那就是“但行好事&#xff0c;莫问前程"! 与辉同行的董工说​&#xff1a;​守正出奇。坚持分享&#xff0c;坚持付出&#xff0c;坚持奉献&#xff0c…

深化理解电子商务领域的“二清”风险与合规路径

在电子商务的快速发展中&#xff0c;“二清”风险成为了不容忽视的话题。这一现象不仅触及金融监管红线&#xff0c;还潜藏诸多风险&#xff0c;包括资金安全、信息泄露、合规性挑战以及监管盲点。鉴于“二清”问题的复杂性与潜在危害&#xff0c;电商平台必须采取有效措施&…

NLB快速实现IPv4服务的负载均衡

阿里云网络型负载均衡NLB&#xff08;Network Load Balancer&#xff09;支持TCP、UDP和TCPSSL协议&#xff0c;提供了强大的四层负载均衡能力。 为了实现IPv4服务的负载均衡&#xff0c;需要快速创建一个NLB实例&#xff0c;并将来自客户端的访问请求转发至后端服务器。 操作…

AI-WEB-1.0 靶机

AI-WEB-1.0 一、安装靶机环境 下载地址&#xff1a; https://www.vulnhub.com/entry/ai-web-1,353/ 下载压缩文件打开 开启虚拟机 二、信息收集 1.查看NAT模式IP段 编辑–>虚拟网络编辑器 御剑2014查IP 找到ip之后就访问网站 用扫描目录的工具扫描当前网站的目录 访问…

MongoDB change stream 详解

文章目录 什么是 Chang Streams实现原理故障恢复使用场景Spring Boot整合Chang Stream 什么是 Chang Streams Change Stream指数据的变化事件流&#xff0c;MongoDB从3.6版本开始提供订阅数据变更的功能。 Change Stream 是 MongoDB 用于实现变更追踪的解决方案&#xff0c;类…

职场进阶还是智商税?一文看六西格玛绿带培训的真面目

随着企业对精细化管理需求的日益增长&#xff0c;六西格玛绿带培训逐渐成为职场人士争相追逐的热门课程。它不仅能够帮助学员掌握先进的质量管理工具&#xff0c;还能培养逻辑思维、数据分析能力以及团队合作精神&#xff0c;这些都是现代职场不可或缺的软实力。 职场助力or智商…

ElasticSearch优化实战:打造高性能搜索引擎的秘籍

在当今这个大数据时代&#xff0c;信息的海量增长对搜索技术提出了前所未有的挑战。用户不仅需要快速准确地从数以亿计的数据中找到所需信息&#xff0c;还希望搜索引擎能够提供个性化和智能化的搜索体验。ElasticSearch作为市场上领先的搜索引擎&#xff0c;因其强大的全文搜索…

Spring框架和Maven项目搭建

Spring Spring框架是一个用于构建企业级应用程序的开源Java框架。它提供了一个全面的编程和配置模型&#xff0c;用于开发现代化的Java应用程序。 Spring从早期的大量XML配置逐渐演变为采用注解和自动配置的方式&#xff0c;显著减少了配置的工作量。同时&#xff0c;Maven的…

mysql更改密码后,若依 后端启动不了解决方案

我原先的mysql 密码是 数字字符串 我想改成000 纯数字 改完之后&#xff0c;连接的数据库的代码 也更改后 &#xff0c;后端启动不了 因为原先 密码数字字符串 不需要用引号" " 括起来 我改成纯数字 需要用 " " 括起来 如下图 然后就可以运行成功了

软件测试基础1--功能测试

1、什么是软件测试&#xff1f; 软件是控制计算机硬件运行的工具。 软件测试&#xff1a;使用技术手段验证软件是否满足使用需求&#xff0c;为了发现软件功能和需求不相符合的地方&#xff0c;或者寻找实际输出和预期输出之间的差异。 软件测试的目的&#xff1a;减少软件缺陷…

C#用Socket实现TCP客户端

1、TCP客户端实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks;namespace PtLib.TcpClient {public delegate void Tcp…

CSS 的工作原理

我们已经学习了CSS的基础知识,它的用途以及如何编写简单的样式表。在本课中,我们将了解浏览器如何获取 CSS 和 HTML 并将其转换为网页。 先决条件:已安装基本软件,了解处理文件的基本知识以及 HTML 基础知识(学习 HTML 简介。目的:要了解浏览器如何解析 CSS 和 HTML 的基…

总线①I2C

很久以前就听说总线这个词了&#xff0c;一直不懂&#xff0c;所以觉得很牛叉。。。这次有机会学习&#xff0c;就干脆一起看看吧。 1 环境介绍 说实话&#xff0c;计算机的学习最好还是有个环境&#xff0c;裸学真的要难一些。这次搭的环境总的来说还是用之前的树莓派Pico搭配…