当前位置: 首页 > news >正文

一站式装修公司有哪些500人在线网站建设配置

一站式装修公司有哪些,500人在线网站建设配置,丹阳信息网,京东网站建设的基本情况一、#x1f49b;并发基本概念 并发的基本意思#xff1a; 什么是并发呢#xff1f;简单的理解就是同一时间执行 服务器同一时刻#xff0c;给多个客户端提供服务#xff5e;#xff5e;#xff0c;这两个客户端都可以给服务器提交事务。 如果提交两个事务#xff0c;改…一、并发基本概念 并发的基本意思 什么是并发呢简单的理解就是同一时间执行 服务器同一时刻给多个客户端提供服务这两个客户端都可以给服务器提交事务。 如果提交两个事务改不同的表还没啥影响假如要改相同的表这时候可能会出现麻烦。 二、 脏读 由并发产生的第一个问题——脏读什么是脏读呢就是有脏数据就是临时的数据不是最终数据就比如说我改完代码还没有提交数据库你正在读这样你读的数据和我改的数据有偏差也就是你读的都是错误的数据就叫脏读 那么我们如何解决脏读呢 我们要给写操作加锁当事务A正在写的时候事务B就不可以读取了知道事务A写完为止提交其他事务的事务B才可以读取事务A 引入了写加锁降低了两个事务的并发性提高了隔离性。降低了效率却提高了稳定性 三、 不可重复读 有并发产生的第二个问题——不可重复读什么是不可重复读呢 同一个读取数据的事务中可能会涉及到多次读的操作多次读的数据不同 比如我在写代码同学们正在看我写代码他们看的时候我正在修改然后我就继续修改完事同学们是一直都在执行看我代码这一个事务在第一眼看和后面看的数据结果不同。 那我们该怎么解决不可重复读呢    那就是给读操作加锁写操作加锁是我写的时候别人不可以读。给读操作加锁是别人在执行读的过程的时候我可以再开一个事务去写在第二个事务开始之前其他读事务读到的就是旧数据第二个事务提交之后别人再读就是新版数据了 注意哈脏读和不可重复读肯容易混    不可重复读是一个事务要多次读取然后有个小傻子在啪啪的改写完你第一次读和第二次读的数据不一样。 脏读是一个小帅哥在写完了但是还没交这时候一个小傻子过来读取数据发现的读的数据全是错的数据毕竟我还没交交完才是正确的。 四、 幻读 我在写代码的时候已经加上了读加锁写加锁的情况下  同学们正在看的事务我没修改我只是又增加了一些东西读着读着多个类啥的这种问题 我们该如何解决幻读呢办法只有一个了就是串行化彻底放弃并发性执行事务所有的事务都是一个挨着一个多串行执行执行完一个事务再去执行下一个事务并发性最低的隔离性是最高的效率是最低的数据也是最可靠的 MySQL提供了四种事务隔离级别 1.read uncommitted.  存在脏读不可重复读幻读三种可能隔离性最小并发性最大数据可靠性最低效率最高 2.read committed(存在写加锁了解决了脏读其他两个还存在隔离性上升并发性下降可靠性上升效率下降 3.repeatable read(解决了脏读不可重复读给写读加锁存在幻读隔离性上升并发性下降可靠性上升效率下降 4.serializable :事务彻底串行执行全解决了问题隔离性最大并发性最小数据可靠性最高效率最低 最终弹-完结篇最后一块 一、Java的JDBC编程 通过java代码来操作数据库  实际开发中我们大部分都是使用代码去操作数据库但是代码也是要依赖SQL的 一个成熟的数据库一般都会提供有一些APIApplication Programming interface 应用程序编程接口广义概念 提到接口大家肯定会想起来这个interface接口特指java语法中一个特殊的语法格式狭义上的概念java中的interface也是一种提供API的方式 成熟的数据库会提供一些API供你使用API有一些类的方法 每个数据库的API制作者是不同的人设计出来的API当然也会相差很多这样往往会提高学习成本于是老大哥java站出来了让他们遵守一套统一的API让所有数据库按照一样的方式进行操作使用只要掌握一套API就可以操作各种数据库 数据库厂商会提供对应的代码这个代码就完成针对API的转换 API写了一个程序这个程序要给比尔提供哪些功能这些功能往往是通过函数/类这样的方式提供的如之前的Random,Scanner,ArrayList,String) 那么java如何使用JDBC操作MySQL呢 1.创建一个项目正常java的创建操作 2.引入MySQL的驱动包作为项目依赖把驱动包下载出来导入到项目中 那我们该如何下载呢 方法一Oracle的官网去下载但是不是很好用 方法二github 方法三中央仓库-圈子里面的功德活佛把知名的知名的第三方库都收放到一起了知道去中央仓库找    https://mvnrepository.com/(牛逼的佬) ♐️  ♐️  ♐️   搜索完mysql之后选择第二个点击那个头像图片  翻地下寻找对应的版本大版本相同就行5.1就可以 点击那个版本号5.19 选择下面图的jar包就行下载完事 ☀️☀️☀️☀️ 下一步点击这里面的Directory ,名字可以写lib把jar包复制粘贴粘贴到lib里面. 粘贴后点击这个然后点击OK就行。  此时准备工作完成了可以接下来写代码了 首先之前一直说Demo:例子 以后找一些第三方库软件啥的可以用demo。 JDBC的流程固定套路记住可以 步骤一创建数据源-数据库服务器是在哪里 你在之前自己建一个student(id name)的表 DataSource dataSourcenew MysqlDataSource(); 步骤二向上转型 ((MysqlDataSource)dataSource).setUrl(); 给大家回顾一下向上转型和向下转型 向上转型子类对象转成父类。 向下转型父类对象转成子类。 实际上⚠️⚠️ MysqlDataSource dataSourcenew MysqlDataSource(); dataSource.setUrl()其实就可以了    当然这么做肯定有他们的道理。 按照最初的转型方法本质是希望让MysqlDataSource不要扩散到代码的其他部分··思想其实是想降低mysql驱动包和我们项目之间的耦合关系避免后续更换数据库成本过大。 Url唯一资源定位符通常用Url来描述网络上一个资源的位置mysql本体是服务器相当于是网络上的资源里面写的东西直接复制贴贴就行不用背 jdbc:mysql://127.0.0.1:3306/java108?characterEncodingutf8useSSLfalse 这个是括号里面需要填写的下面我们来分析一下每一块都是什么意思。 jdbc:mysql♈️url是一个什么类型的url 这里的意思就是jdbc:mysql就是说给jdbc的mysql使用的。 127.0.0.1 ♉️网络上的一个地址是通过这一串数字来表示的这一串数字通常是4个部分各个部分取值范围是0-2554个部分使用分割 3306♍️ 端号区分主机上的应用程序 java108♋️数据库名字 characterEncodingutf8useSSLfalse; 统一字符集utf8 statement:是把sql原封不动的直接发给数据库服务器数据库服务器自己解析sql PreparedStatement,会先在客户端这边初步解析SQL验证语法是否正确此时服务器就不用做这些检查了从而降低服务器负担另外本身SQL存在String类型JDBC提供statement对象让我们把String对象转换成statement再发给服务器执行但是一般会使用PrparedStatement(预处理的语句对象代替statement. import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException;public class Main {public static void main(String[] args) throws SQLException {//1.创建数据源DataSource dataSourcenew MysqlDataSource();((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java108?characterEncodingutf8useSSLfalse); //设置你的数据库名字的密码不是随便设置哈你自己的数据库密码root也是不能乱设置((MysqlDataSource)dataSource).setUser(root);((MysqlDataSource)dataSource).setPassword(lcl15604007179);//2.和数据库服务器建立链接认准第二个sql的Connection,第一个com那个是mysql的驱动包Connection connectiondataSource.getConnection();//构造SQL语句String sql insert student values(1,张三) ;PreparedStatement statementconnection.prepareStatement(sql);//4.执行SQL语句int nstatement.executeUpdate(); //返回有几行收到了影响System.out.println(n);//5.释放必要资源关闭链接 -注意关闭顺序后创建的先关闭statement.close(); //创建的对象都会持有一些计算机硬件软件中资源connection.close();} }Java有垃圾回收机制自动释放内存但是资源不仅仅是内存啊所以才需要关闭资源需要手动关闭。 但是我们这么写写出来的数据是写死的什么张三啥的那我们该如何在动态的让用户输入数据呢 PreparedStatement提供了我们占位符的写法可以更优雅更安全的解决上述问题 ?是一个占位符后续PreparedStatement会把变量数值带入到中 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner;public class Main {public static void main(String[] args) throws SQLException {Scanner scannernew Scanner(System.in);System.out.println(输入姓名);String namescanner.nextLine();System.out.println(输入数字);int idscanner.nextInt();//1.创建数据源DataSource dataSourcenew MysqlDataSource();((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java108?characterEncodingutf8useSSLfalse);((MysqlDataSource)dataSource).setUser(root);((MysqlDataSource)dataSource).setPassword(lcl15604007179);//2.和数据库服务器建立链接Connection connectiondataSource.getConnection();//3.构造SQL语句String sql insert student values(?,?) ;PreparedStatement statementconnection.prepareStatement(sql);statement.setInt(1,id); //表示的是第一个问号statement.setString(2,name); //表示的是第二个问号//4.返回受影响的行数int nstatement.executeUpdate();System.out.println(n);//5.释放必要资源关闭链接statement.close();connection.close();} }就算是插入修改删除也没有区别删除就是轻微的改动下面的setString和SQL语句而已 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner;public class Main {public static void main(String[] args) throws SQLException {Scanner scannernew Scanner(System.in);System.out.println(输入姓名);String namescanner.nextLine();//1.创建数据源DataSource dataSourcenew MysqlDataSource();((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java108?characterEncodingutf8useSSLfalse);((MysqlDataSource)dataSource).setUser(root);((MysqlDataSource)dataSource).setPassword(lcl15604007179);//2.和数据库服务器建立链接Connection connectiondataSource.getConnection();//3.构造SQL语句String sql delete from student where name? ;PreparedStatement statementconnection.prepareStatement(sql);statement.setString(1,name);//4.执行SQL语句int nstatement.executeUpdate();System.out.println(n); //5关闭statement.close();connection.close();} }❤❤❤但是查询有说法,一下就是查询要注意的操作。 //4.执行查询操作要使用excuteQuery,返回值是一个ResultSet类型的对象表示了一个表格       ResultSet resultSet statement.executeQuery(); //遍历结果集合       while (resultSet.next())  这个意思是什么捏想象有一个光标这个光标的初始情况下指向第一行记录的前一个位置 如果每次调用next为true取这行数据 取完这一行下次又要调用next此时要是返回false循环结束 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Scanner;public class Main {public static void main(String[] args) throws SQLException {Scanner scanner new Scanner(System.in);//1.创建数据源DataSource dataSource new MysqlDataSource();((MysqlDataSource) dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java108?characterEncodingutf8useSSLfalse);((MysqlDataSource) dataSource).setUser(root);((MysqlDataSource) dataSource).setPassword(lcl15604007179);//2.和数据库服务器建立链接Connection connection dataSource.getConnection();//构造SQL语句String sql select * from student ;PreparedStatement statement connection.prepareStatement(sql);//4.执行查询操作要使用excuteQuery,返回值是一个ResultSet类型的对象表示了一个表格ResultSet resultSet statement.executeQuery(); //遍历结果集合while (resultSet.next()) { //获取这一行学号列int id resultSet.getInt(id); //获取姓名列String name resultSet.getString(name);System.out.println(id: id ,name: name);}statement.close();connection.close();} }当然里面也可以包含一些占位符。 public class Main {public static void main(String[] args) throws SQLException {Scanner scanner new Scanner(System.in);int student_idscanner.nextInt();//1.创建数据源DataSource dataSource new MysqlDataSource();((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java108? characterEncodingutf8useSSLfalse); ((MysqlDataSource) dataSource).setUser(root);((MysqlDataSource) dataSource).setPassword(lcl15604007179);//2.和数据库服务器建立链接Connection connection dataSource.getConnection();//注意哈这里面是id不是你写的那个变量student_idString sql select * from student where id ? ;PreparedStatement statement connection.prepareStatement(sql);statement.setInt(1,student_id);//4.执行SQL语句ResultSet resultSet statement.executeQuery();while (resultSet.next()) {int id resultSet.getInt(id);String name resultSet.getString(name);System.out.println(id: id ,name: name);} //5.注意关闭的时候result也需要关闭resultSet.close();statement.close();connection.close();} }复杂的SQL也是这么写都支持create table ,drop table都可以就是不推荐 DataSource Connection PreparedStatement Result 四大天王通过这四个类就可以基本吃遍JDBC编程 大佬会对JDBC进行进一步封装数据库操作框架虽然项目中不一定使用JDBC一般都用框架代替但是JDBC是不变化的框架是可变的基于JDBC去使用框架
http://www.zqtcl.cn/news/326382/

相关文章:

  • 深圳网站建设价格多少做废旧金属的网站
  • wordpress 文档超级优化空间
  • 湖北seo网站推广官方网站怎么制作
  • 随州网站seo诊断wordpress 只显示一个主题
  • 建站登录可信网站认证 费用
  • 互站网站源码用jsp做网站一般会用到什么
  • 个人免费设计网站fomo3d 网站怎么做
  • 菏泽做网站公司公关公司经营范围
  • 钓鱼网站营销型网站建设实战
  • 可以下载电影的网站怎么做做网站公司西安
  • 自己做签名网站网店美工培训教程
  • 宁波产品网站设计模板php 网站 教程
  • 制作一个网站的费用是多少免费网站空间怎么
  • 如何建立自己的微网站网站建设教程怎么建
  • seo网站项目讲解沈阳网红
  • 苏州大型网站建设公司网站外链优化
  • 阿里云购买域名后怎么建网站沂南网站设计
  • 网站建设基础考试php网站开发入门
  • 广州五屏网站建设seo诊断报告示例
  • 周浦高端网站建设公司信阳做网站的公司
  • 博客网站怎么建设湛江新闻头条最新消息
  • 外贸网站建设 评价有没有教做网站实例视频
  • 县 住房和城乡建设局网站wordpress接入支付宝
  • 网站建设初期推广方式天津网站建设案例
  • 销项税和进项导入是在国税网站做吗凡科网站模块
  • 苏州建网站皆去苏州聚尚网络常州企业建站系统
  • 网站建设明细wordpress 主题稳定
  • 网站设计论文前言怎么写肇庆网站开发哪家专业
  • 商城建站系统松江新城做网站公司
  • 长沙招聘做搜狗pc网站优化排