小菜鸟之java JDBC编程
JDBC技术
百度简介 : JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 JDBC并不能直接访问数据库,需要借助于数据库厂商提供的JDBC驱动程序。
JDBC中常用的类和接口可用于我们编程开发,利用这些类和接口可以方便的经行数据访问和处理。这些类和接口都位于java.sal包中。具体的下面一一揭晓~~
废话一堆后,其实这些废话都可以去百度找到的有木有发现百度很强大,很犀利,很友好,很无敌啊~~~~扯远了。。。。下面开始JDBC的旅途.
数据库连接
如果要在Java访问数据库,首先要加载一个数据库驱动,数据库驱动只需要在第一次访问时加载一次。然后再每次访问数据库时创建一个Connection实例,获取数据库连接,这样就可以执行操作数据库的SQL语句。最后用完后释放掉数据库的连接。
数据库驱动类
不同的数据库实现JDBC接口不同,所以就产生了不同的数据库驱动包。驱动包就包含一些负责数据库连接的类,把我们要操作的SQL语句传递到里面去。因为我上班的PC用的是SQL2012,所以我们要去这里http://www.microsoft.com/zh-cn/search/DownloadResults.aspx?q=jdbc下载下面的驱动:
可能会有人说为什么下这个呢怎么不是下面的3.0或者2.0的驱动呢!因为我的SQL版本是2012的所以下载这个,如果你是2008或者2005的话你就可以下载下面的3.0驱动包!说这么多在不明白就点进去看下:
看明白就去下载适合自己SQL版本的驱动吧!
加载数据库驱动类
Java加载数据库驱动的方法是调用Class类的静态方法forName().写法如下:
1
Class.forName(String driveManager);
forName()方法的参数用于指定要加载的数据库驱动。加载成功,将会加载驱动类注册给DriveManager.失败的话抛出ClassNotFoundExecption异常。
在扯一点没必要的闲话:为了把程序的出错性尽量的排斥掉,我可不希望我第一次用Java的JDBC就出一堆的错误,然后对在学者去用工具然后跳错。因为操作的是我PC本地的SQL12数据库,我准备一切都用默认(端口)的东西试试先。所以我们要开始就启动我们SQL网络配置协议TCP/IP设置为启动,当然已经启动的话就没必要在此去启动啦!
连接SQL2012数据库
把我们刚才下的驱动加载到 MyEclipse中来,如下:
好萌的东西,像个牛奶瓶o(^▽^)o。
下面开始我们SQL2012的数据连接操作:
1 10
11
12 package myJava.jdbc;
13
14 import java.sql.*;
15
16 public class SelectQuery {
17
18 Connection conn;
19
20 //创建一个返回值为Connection的方法
21
22 public Connection getConnection(){
23
24 try {
25
26 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
27
28 System.out.println("数据库驱动加载成功");
29
30 conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB_ShowData","sa","123456");
31
32 if(conn!=null){
33
34 System.out.println("数据库连接成功");
35
36 }
37
38 } catch (Exception e) {
39
40 // TODO Auto-generated catch block
41
42 e.printStackTrace();
43
44 }
45
46 //返回Connection对象
47
48 return conn;
49
50 }
51
52 /**
53
54 * @param args
55
56 */
57
58 public static void main(String[] args) {
59
60 // TODO Auto-generated method stub
61
62 SelectQuery getcon = new SelectQuery();
63
64 getcon.getConnection();
65
66
67
68 }
69
70 }
71
运行结果如下:
看到这个应该算是一路顺风吧!没出什么异常,然后我们趁热打铁连接成功啦查询一下有何不可,我搞一个很简单的查询具体代码如下:
1 package myJava.jdbc;
2
3 import java.sql.*;
4
5 public class SelectQuery {
6
7 Connection conn;
8
9 //创建一个返回值为Connection的方法
10
11 public Connection getConnection(){
12
13 try {
14
15 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
16
17 System.out.println("数据库驱动加载成功");
18
19 conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB_ShowData","sa","123456");
20
21 if(conn!=null){
22
23 System.out.println("数据库连接成功");
24
25 }
26
27 } catch (Exception e) {
28
29 // TODO Auto-generated catch block
30
31 e.printStackTrace();
32
33 }
34
35 //返回Connection对象
36
37 return conn;
38
39 }
40
41 /**
42
43 * @param args
44
45 */
46
47 public static void main(String[] args) {
48
49 // TODO Auto-generated method stub
50
51 SelectQuery getcon = new SelectQuery();
52
53 getcon.getConnection();
54
55 //查询
56
57 String sql = "SELECT * FROM [dbo].[User]";
58
59 try {
60
61 PreparedStatement Ps = getcon.conn.prepareStatement(sql);
62
63 ResultSet Rs = Ps.executeQuery();
64
65 while(Rs.next()){
66
67 String name = Rs.getString("Name");
68
69 String password = Rs.getString("Password");
70
71 System.out.println(name);
72
73 System.out.println(password);
74
75 }
76
77 Rs.close();
78
79 Ps.close();
80
81 } catch (SQLException e) {
82
83 // TODO Auto-generated catch block
84
85 e.printStackTrace();
86
87 }
88
89
90
91 }
92
93 }
94
运行结果如下:
结果出来啦o(^▽^)o不是重点,重点是这个查询里面我们都用到了JDBC技术中的那些类和接口,或许你看了上面的代码还是茫然我说的是和我一样入门的人,那么下面的解释后,你就懂得啦!
首先是我们在getConnection中用到的 DriverManager类
DriverManager类是用来管理数据库中所有的驱动程序,是JDBC的管理层,作用用户和驱动程序之间,并在数据库的驱动之间建立连接。DriverManager类中的方法都是静态方法,所以用的时候不需要实例化,直接调用类名就可以。
DriverManager类的常用方法如下:
方法
功能
getConnection(String url,String user,String password)
指定3个参数,连接数据库的url,数据库用户名,数据库密码
setLoginTimeout()
获取驱动程序试图登录到某一个数据库时可以等待的最长时间
printIn(String Message)
将一条消息打印到当前JDBC日志流中
其次我们看到就是Connection接口
Connection接口代表与特定的数据库的连接。要对数据表中的数据经行操作,首先要获取数据库连接。
Connection接口常用的方法如下:
方法
功能
createStatement()
创建Statement对象
createStatement(int resultSetType,int resultSetConcurrency)
创建一个Statement对象,该对象将生产具有给定类型,并发性和可保存性的ResultSet对象
prepareStatement()
创建预处理对象PreparedStatement
isReadOnly()
查看当前的Connection对象的读取模式是否为之读形式
setReadOnly()
设置当前Connection对象的读写模式i,默认是非只读模式
commit()
使所有上一次提交,回滚后进行的更改成为持久更改
roolback()
取消再当前事物中经行的所有更改,并释放此Connection对象当前持有的所有数据库锁
close()
立即释放Connection对象数据库和JDBC资源
PreparedStatement接口
PreparedStatement接口继承Statemetn接口,用于执行动态的SQL语句,通过PreparedStatement实例执行SQL语句,将被预编译并保存到PreparedStatement实例中,从而可以反复的执行SQL语句。可以通过Connection类的prepareStatement()方法获取PreparedStatement对象。PreparedStatement接口常用的方法:
<P>方法<BR>功能描述
<P>execute()<BR>在此PreparedStatement对象中执行SQL语句,该语句可以是任何类型的SQL语句
<P>executeQuery()<BR>在此PreparedStatement对象中SQL查询语句,返回结果为查询结果集ResultSet对象
<P>executeUpadte()<BR>在此PreparedStatement对象中执行SQL语句,该SQL语句必须是个INSET,UPDATE,DELETE语句,或者返回没有返回值的DDl语句
<P>setByte(int pIndex,byte bt)<BR>将参数pIndex位置上设置为给定的byte型参数值bt
<P>setDouble(int pIndex,double dou)<BR>将参数pIndex位置上设置为给定的double型参数值dou
<P>setInt(int pInde,int x)<BR>将参数pIndex位置上设置为给定的int型参数值x
<P>setObject(int pIndex,Object o)<BR>将参数pIndex位置上设置为给定的Object型参数值o
<P>setString(int pIndex,String str)<BR>将参数pIndex位置上设置为给定的String型参数值str</P>
ResultSet接口
ResultSet接口类似一张数据表,用来暂时存放数据库查询操作获得的结果集。ResultSet实例具有指向当前数据行的指定,指针开始的位置在查询的结果集第一条记录的前面。在获取查询结果集时,可通过next()方法将指针向下移动。如果存在下一行,还方法返回true,否则返回false.
方法
功能
getInt()
以intt形式获取ResultSet对象的当前行的指定值
getFloat()
以float形式获取ResultSet对象的当前行的指定值
getDate()
以Data形式获取ResultSet对象的当前行的指定值
getBoolean()
以boolean形式获取ResultSet对象的当前行的指定值
getString()
以String形式获取ResultSet对象的当前行的指定值
getObject()
以Object形式获取ResultSet对象的当前行的指定值
frist()
将指针移到当前记录的第一行
last()
将指针移到当前记录的最后一行
next()
将指针下移一行
beforeFirst()
将指针移到集合的开头
afterLast()
将指针移到集合的尾部
absolute(int index)
将指针一到ResultSet指定编号的行
inFist()
判断指针是否位于当前ResultSet集合的第一行
isLast()
判断指针是否位于当前ResultSet集合的最后一行
updateInt()
用指定的int值更新指定列
upadateFloat()
用指定的float值更新指定列
updateLong()
用指定的Long值更新指定列
updateString()
用String值更新指定列
updateObject()
用Object值更新指定列
updateNull()
将指定列的值改为NULL
updateDate()
用指定的Date值更新指定列
updateDouble()
用指定的double值更新指定列
getRow()
查看当前的索引号
insertRow()
将插入行的内容插入到数据库
updateRow()
将当前行的内容同步到数据库
deleteRow()
删除当前行,但不同步到数据库中,在执行close()方法后同步到数据库中
基本解释完了,有什么不具体或者不对的地方写到具体的地方可以去查下资料在看看,然后我们继续在写一个增加的方法:
1
2 package myJava.jdbc;
3
4 import java.sql.*;
5
6 public class SelectQuery {
7
8 Connection conn;
9
10 //创建一个返回值为Connection的方法
11
12 public Connection getConnection(){
13
14 try {
15
16 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
17
18 System.out.println("数据库驱动加载成功");
19
20 conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB_ShowData","sa","123456");
21
22 if(conn!=null){
23
24 System.out.println("数据库连接成功");
25
26 }
27
28 } catch (Exception e) {
29
30 // TODO Auto-generated catch block
31
32 e.printStackTrace();
33
34 }
35
36 //返回Connection对象
37
38 return conn;
39
40 }
41
42 /**
43
44 * @param args
45
46 */
47
48 public static void main(String[] args) {
49
50 // TODO Auto-generated method stub
51
52 SelectQuery getcon = new SelectQuery();
53
54 getcon.getConnection();
55
56 //查询
57
58 /** String sql = "SELECT * FROM [dbo].[User]";
59
60 try {
61
62 PreparedStatement Ps = getcon.conn.prepareStatement(sql);
63
64 ResultSet Rs = Ps.executeQuery();
65
66 while(Rs.next()){
67
68 String name = Rs.getString("Name");
69
70 String password = Rs.getString("Password");
71
72 System.out.println(name);
73
74 System.out.println(password);
75
76 }
77
78 Rs.close();
79
80 Ps.close();
81
82 } catch (SQLException e) {
83
84 // TODO Auto-generated catch block
85
86 e.printStackTrace();
87
88 }
89
90 **/
91
92 //添加
93
94 try {
95
96 Statement statement = getcon.conn.createStatement();
97
98 int count = statement.executeUpdate("INSERT INTO [dbo].[User] VALUES ('Superman','001002')");
99
100 getcon.conn.close();
101
102 System.out.println("添加行数为"+count);
103
104 } catch (SQLException e) {
105
106 // TODO Auto-generated catch block
107
108 e.printStackTrace();
109
110 }
111
112
113
114
115
116 }
117
118 }
119
来看下运行结果:
OK,当我看添加成功后!结果不是重点,重点是增加方法里面用到了Statement接口
Statement实例用于在已经建立连接的基础上向数据库发送SQL语句。该接口用来执行静态的SQL语句。Statement接口常用的方法如下:
方法
功能
execute(String sql)
执行静态的SELECT语句,该语句可能返回过个结果
executeQuery(String sql)
执行给定SQL语句,该语句返回ResultSet对象
clearBatch()
清空此Statement对象的当前SQL命令列表
executeBatch()
将一批命令提交给数据库执行,如果全部命令执行成功,则返回更新计数组的数组。
executeUpdate()
执行给定的SQL语句,该语句可以为INSERT,UPDATE或者DELETE
addBatch(String sql)
将给定的SQL命令添加到Satement对象的当前命令列表中。
close()
释放Statement实例占用的数据库和JDBC资源
接着我们在写一个删除这次的演示就搞完,删除代码如下:
1 package myJava.jdbc;
2
3 import java.sql.*;
4
5 public class SelectQuery {
6
7 Connection conn;
8
9 //创建一个返回值为Connection的方法
10
11 public Connection getConnection(){
12
13 try {
14
15 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
16
17 System.out.println("数据库驱动加载成功");
18
19 conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB_ShowData","sa","123456");
20
21 if(conn!=null){
22
23 System.out.println("数据库连接成功");
24
25 }
26
27 } catch (Exception e) {
28
29 // TODO Auto-generated catch block
30
31 e.printStackTrace();
32
33 }
34
35 //返回Connection对象
36
37 return conn;
38
39 }
40
41 /**
42
43 * @param args
44
45 */
46
47 public static void main(String[] args) {
48
49 // TODO Auto-generated method stub
50
51 SelectQuery getcon = new SelectQuery();
52
53 getcon.getConnection();
54
55 //查询
56
57 /** String sql = "SELECT * FROM [dbo].[User]";
58
59 try {
60
61 PreparedStatement Ps = getcon.conn.prepareStatement(sql);
62
63 ResultSet Rs = Ps.executeQuery();
64
65 while(Rs.next()){
66
67 String name = Rs.getString("Name");
68
69 String password = Rs.getString("Password");
70
71 System.out.println(name);
72
73 System.out.println(password);
74
75 }
76
77 Rs.close();
78
79 Ps.close();
80
81 } catch (SQLException e) {
82
83 // TODO Auto-generated catch block
84
85 e.printStackTrace();
86
87 }
88
89 **/
90
91 //添加
92
93 /** try {
94
95 Statement statement = getcon.conn.createStatement();
96
97 int count = statement.executeUpdate("INSERT INTO [dbo].[User] VALUES ('Superman','001002')");
98
99 getcon.conn.close();
100
101 System.out.println("添加行数为"+count);
102
103 } catch (SQLException e) {
104
105 // TODO Auto-generated catch block
106
107 e.printStackTrace();
108
109 }
110
111 **/
112
113 //删除
114
115 try {
116
117 Statement statement = getcon.conn.createStatement();
118
119 int count = statement.executeUpdate("DELETE FROM [dbo].[User] WHERE Name LIKE 'Superman'");
120
121 getcon.conn.close();
122
123 System.out.println("成功删除行数"+count);
124
125 } catch (SQLException e) {
126
127 // TODO Auto-generated catch block
128
129 e.printStackTrace();
130
131 }
132
133
134
135 }
136
137 }
138
运行结果如下:
OK!关于JDBC的操作就先简单的介绍到这里,后续我们在慢慢深入的学习,这个作为我的开始学习笔记,希望对我日后和新学Java的有所帮助,不过我的是针对SQL数据库的,其他数据库的就是在创建连接上有所不同,JDBC里面的接口的东西用法大同小异,可以试试去写下!
补充:
1 package JDBC编程;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.sql.Statement;
9
10 public class Test {
11
12 public static void main(String[] args) {
13 Connection connect = null;//代表数据库连接对象
14 Statement statement = null;//执行sql语句的工具接口
15 ResultSet resultSetstu = null;//结果集对象
16 ResultSet resultsetMark = null;
17
18 try {
19
20 Class.forName("oracle.jdbc.OracleDriver");// 第一步注册驱动(类加载
21 String connId = "jdbc:oracle:thin:@192.168.45.3:1521:XE";// 获取连接
22 connect = DriverManager.getConnection(connId, "hr", "123456");// 第一种方式利用DrivaManger
23
24 System.out.println(connect);// 测试connect正确与否
25 statement = connect.createStatement();// 第三步获取sql语句对象,第一种方式statement
26 // 第二种方式PreStatement
27 // PreparedStatement preparedStatement=connect.prepareStatement("select * from
28 // student");
29 // 第四步执行sql语句
30 // 第一种方式
31 // resultSetstu = statement.executeQuery("select * from student");
32 // resultSetstu = statement.executeQuery("insert into student (sid,sname,sage,ssex) values (126285,'叶晶1512',21,'女')");
33
34
35 resultSetstu = statement.executeQuery("select * from avgMark");//调用数据库
36 while (resultSetstu.next()) {
37 int sid = resultSetstu.getInt("sid");//查找
38 String sname = resultSetstu.getString("sname");
39 // String ssex = resultSetstu.getString("ssex");
40 double AMK=resultSetstu.getDouble("AMK");
41 // System.out.println("名字" + sname + "学号" + sid + "性别" + ssex);
42 System.out.println("名字\n" + sname + "学号\n" + sid + "平均成绩\n" + AMK);
43 }
44
45 } catch (ClassNotFoundException e) {
46 e.printStackTrace();//报异常
47
48 } catch (SQLException e) {//原始记录
49 // TODO Auto-generated catch block
50 e.printStackTrace();//打印该异常信息
51 } finally {
52 // 第六步关闭资源
53 try {
54 if (resultSetstu != null)//结果集
55 resultSetstu.close();
56 if (statement != null)//工具接口
57 statement.close();
58 if (connect != null)//连接对象
59 connect.close();
60 if (resultsetMark != null)
61 resultsetMark.close();
62 } catch (SQLException e) {
63 // TODO Auto-generated catch block
64 e.printStackTrace();
65 }
66 }
67 }
68 }
69
数据库代码:
1 create or replace view avgMark as
2 select s.sid,sname ,avg(cmark) amk from student s left outer join mark m on s.sid=m.sid group by s.sid,sname;
CallableStatement调用
1 cstmt = connect.prepareCall("{call abc(?,?,?,?,?)}");
2 cstmt.setString(1, "马云");
3 cstmt.registerOutParameter(2,Types.INTEGER);
4 cstmt.registerOutParameter(3, Types.INTEGER);
5 cstmt.registerOutParameter(4, Types.INTEGER);
6 cstmt.registerOutParameter(5, Types.DOUBLE);
7 cstmt.execute();
8 System.out.println("马云的学号是:"+cstmt.getInt(2)+",最高分是:"+cstmt.getInt(3)+",最低分是:"+cstmt.getInt(4)+",平均分是:"+cstmt.getDouble(5));
9
数据库代码
1 package JDBC编程; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
public abstract class Test1 { private static Connection connect; private static Statement statement; private static ResultSet resultSetStun;
public static void main(String[] args){ try { //第一步,注册驱动(类加载) Class.forName("oracle.jdbc.OracleDriver"); //第二步:获取连接 //第一种方式:利用DriverManager(常用) String connId="jdbc:oracle:thin:@192.168.45.3:1521:XE"; connect = DriverManager.getConnection(connId,"hr","123456"); //测试connect正确与否 System.out.println(connect); //第三步:获取执行sql语句对象 //第一种方式:statement statement = connect.createStatement();create or replace procedure abc
2 (
3 name in student.sname%type,
4 id out student.sid%type,
5 mak out mark.cmark%type,
6 mik out mark.cmark%type,
7 amk out mark.cmark%type
8 )
9 as
10 begin
11 select sid into id from student where sname=name;
12 select max(cmark) into mak from mark where sid=id;
13 select min(cmark) into mik from mark where sid=id;
14 select avg(cmark) into amk from mark where sid=id;
15 end;
16
17 declare
18 a student.sid%type;
19 b mark.cmark%type;
20 c mark.cmark%type;
21 d mark.cmark%type;
22 begin
23 abc('张三',a,b,c,d);
24 dbms_output.put_line('学号为'||a||'最高分为'||b||'最低分为'||c||'平均分为'||d);
25 end;
小菜鸟之java JDBC编程的更多相关文章
- 小菜鸟之JAVA面试题库1
四次挥手 客户端发送释放连接报文,关闭客户端到服务端的数据传输 服务端收到后,发送确认报文给客户端 服务端发送释放连接报文,关闭服务端到客户端的数据传输 客户端发送一个确认报文给服务端 ------- ...
- Java JDBC编程套路教程
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5847020.html 学习Java开发,一个必须掌握的知识点,就是数据库操作.当程序需要用到的数据达到一定程 ...
- java JDBC编程流程步骤
JDBC:Java Data Base Connection JDBC是用于运行sql语句并从数据库中获取新新的java API. JDBC是用来(让我们的程序)通过网络来操作数据库的,作用非常重要: ...
- 小菜鸟之java内存结构
JVM启动流程: JVM基本结构图: <深入理解Java虚拟机(第二版)>中的描述是下面这个样子的: Java中的内存分配: Java程序在运行时,需要在内存中的分配空间.为了提高运算效率 ...
- 小菜鸟之java基础
1. javac 命令的作用: javac 编译器解析 Java 源代码,并生成字节码文件的过程 2. java为什么可以跨平台: ava有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚 ...
- 小菜鸟之java异常
一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1.Java中的所有不正常类都 ...
- 小菜鸟之JAVA输入输出
Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观 ...
- Java JDBC下执行SQL的不同方式、参数化预编译防御
相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...
- Java网络编程——Socket
网络是连接不同计算机的媒介,不同的计算机依靠网络来互相通信,即传递数据. Java中与网络编程相关的部分主要是Socket(套接字),它作为一种抽象的结构,实现了与通信相关的各类方法,构成一套完整的通 ...
随机推荐
- OpenCV使用Cmake来管理工程
写篇入门级别的文章,对于配置OpenCV很多人不知道有这种方法,其实这种方法在OpenCV编译过程中已经使用到的了,如果有手动编译OpenCV经验的同学可以很快的学会这种工程管理方法 方法优点,只要有 ...
- Java集合框架之接口Iterator
简述 Iterator迭代器的定义:迭代器(Iterator)模式,又叫做游标(Cursor)模式.GOF给出的定义是,提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象 ...
- Java并发之CAS的三大问题
在Java并发包中有一些并发框架也使用了自旋CAS的方式实现了原子操作,比如:LinkedTransferQueue类的Xfer方法.CAS虽然很高效的解决了原子操作,但是CAS仍然存在三大问题:AB ...
- Xshell安装教程及Xshell安装程序集组件时出错的解决方法
部分小伙伴在安装Xshell的时候可能会遇到这个问题:“Xshell5安装程序集组件{0D7E67F6-1A6A-3A26-AF95-B8E83DDCCC3F}时出错.HRESULT0x80070BC ...
- linux vmware 安装步骤
一.下载vmware软件 二.下载centos镜像文件 三.安装步骤 以上相当于于硬件设备已经准备ok,接下来安装软件
- 在.slurm文件中激活Anaconda环境
超算中心使用slurm作为集群调度.原始slurm脚本如下: source activate tensorflow-gpu python neural_style.py --content conte ...
- ssh不输入密码
要通过跳转机器远程其他的机器 不方便使用秘钥 每次都要输入密码也很烦 使用sshpass可以复制一行命令就直接登录了 我的跳板机是Centos7安装sshpass很简单 直接如下搞定 yum inst ...
- oracle中关于clob类型字段的查询效率问题
今天,公司项目某个模块的导出报如下错误: HTTP Status 500 – Internal Server Error Type Exception Report Message Handler d ...
- 从浏览器地址栏输入url到显示页面的步骤
在浏览器地址栏输入URL 浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤 HTTP1.0提供Expires,值为一个绝对时间表示缓存新鲜日期 HTTP1.1增加了Cache-Cont ...
- [转]html中meta作用
meta是html语言head区的一个辅助性标签.几乎所有的网页里,我们可以看到类似下面这段的html代码: <head> <meta http-equiv="cont ...