- 浏览: 732023 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
任楚娴:
你好,请问html = nvl(html); 这句中的nvl( ...
java html串转换成文本串 -
u013246812:
,谢拉!
jQuery ui Dialog 讲解参数 -
大宝剑99:
...
前端优化
用JDBC操作Oracle的存储过程返回值
Oracle的存储过程可以返回任何类型,包括一个ResultSet,JDBC自带的CallableStatement可以提供操作这些返回值得借口,其中我们可以通过registerOutParameter来注册需要返回的类型。CallableStatement是PrepareStatement的一个子类,但提供了返回和注册Out类型参数的功能。
我们看一下例子,在Oracle里面我们定义了一个包如下:
create or replace package GP_TESTP is
type my_dCursor is ref cursor;
procedure GP_Test(m_cursor2 OUT my_dCursor);
end GP_TESTP;
create or replace package body GP_TESTP is
procedure GP_Test(m_cursor2 OUT my_dCursor) is
begin
open m_cursor2 for select bom.material_no,bom.product_no from gp2_bom bom where bom.year=2006 ;
end GP_Test;
end GP_TESTP;
在JDBC里面我们可以通过如下的接口来得到返回的动态游标的内容
Global.start(); //初始化连接池
ConnectionWrapper wrapper=ConnectionPoolFactory.getPoolInstance().borrowConnection();//从连接池里面返回连接
Connection conn=wrapper.getConnection();
try {
String callSql="{call GP_TESTP.GP_Test(?)}";
CallableStatement cs = null;
ResultSet rs=null;
cs = conn.prepareCall(callSql);
cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
rs = (ResultSet)cs.getObject(2);
while(rs.next()){
//String s=rs.get("");
String component=rs.getString(2);
String productNo=rs.getString(4);
System.out.println("component="+component+"-------productNo="+productNo);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
注意兰颜色的代码是注册动态游标和返回结果集的关键代码。
=======================================
2008年07月06日 星期日 07:41 P.M.一:无返回值的存储过程
存储过程为:
CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS
BEGIN
INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);
END TESTA;
然后呢,在java里调用时就用下面的代码:
package com.hyq.src;
import java.sql.*;
import java.sql.ResultSet;
public class TestProcedureOne {
public TestProcedureOne() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
CallableStatement cstmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");
proc.setString(1, "100");
proc.setString(2, "TestOne");
proc.execute();
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}
当然了,这就先要求要建张表TESTTB,里面两个字段(I_ID,I_NAME)。
二:有返回值的存储过程(非列表)
存储过程为:
CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS
BEGIN
SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;
END TESTB;
在java里调用时就用下面的代码:
package com.hyq.src;
public class TestProcedureTWO {
public TestProcedureTWO() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");
proc.setString(1, "100");
proc.registerOutParameter(2, Types.VARCHAR);
proc.execute();
String testPrint = proc.getString(2);
System.out.println("=testPrint=is="+testPrint);
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}
}
注意,这里的proc.getString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是proc.getString(1),如果是第三个位置,就是proc.getString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。
2008年07月06日 星期日 07:42 P.M.由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分,
1, 建一个程序包。如下:
CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
2,建立存储过程,存储过程为:
CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;
END TESTC;
可以看到,它是把游标(可以理解为一个指针),作为一个out 参数来返回值的。
在java里调用时就用下面的代码:
package com.hyq.src;
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;
public class TestProcedureTHREE {
public TestProcedureTHREE() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "hyq", "hyq");
CallableStatement proc = null;
proc = conn.prepareCall("{ call hyq.testc(?) }");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet)proc.getObject(1);
while(rs.next())
{
System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");
}
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
} finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
================================
create or replace procedure proc_assess_optr is
date_cycle varchar2(20); --周期
start_date varchar2(10); --开始日期
end_date varchar2(10); --结束日期
region_code varchar2(32); --region code
db_user varchar2(30); --用户名
del_sql varchar2(1000);--删除这个周期的数据
begin
declare
cursor cur_user is
SELECT distinct DB_USER, CODE FROM REGION_CONFIG;
begin
start_date := to_char(last_day(add_months(SYSDATE, -2)) + 1, 'yyyy-MM-dd');--上个月的1号
end_date := to_char(last_day(add_months(SYSDATE, -1)) + 1 , 'yyyy-MM-dd');--这个月1号
date_cycle := to_char(sysdate - interval '1' month, 'yyyyMM');
--遍历所有的用户
begin
dbms_output.enable(1000000);
open cur_user;
loop
fetch cur_user
into db_user, region_code;
exit when cur_user%notfound;
begin
del_sql := 'delete from ' || db_user ||
'.guideline_instance t where t.cycle_id=''' ||
date_cycle || ''' and t.guidline_id in(''1'',''2'',''3'',''4'')';
DBMS_OUTPUT.put_line(del_sql);
execute immediate del_sql; --动态立即执行一个SQL语句
---具体数据分析执行
proc_assess_optr_exeute(db_user,
start_date,
end_date,
date_cycle);
end;
end loop;
close cur_user;
commit;
end;
end;
end proc_assess_optr;
/
Oracle的存储过程可以返回任何类型,包括一个ResultSet,JDBC自带的CallableStatement可以提供操作这些返回值得借口,其中我们可以通过registerOutParameter来注册需要返回的类型。CallableStatement是PrepareStatement的一个子类,但提供了返回和注册Out类型参数的功能。
我们看一下例子,在Oracle里面我们定义了一个包如下:
create or replace package GP_TESTP is
type my_dCursor is ref cursor;
procedure GP_Test(m_cursor2 OUT my_dCursor);
end GP_TESTP;
create or replace package body GP_TESTP is
procedure GP_Test(m_cursor2 OUT my_dCursor) is
begin
open m_cursor2 for select bom.material_no,bom.product_no from gp2_bom bom where bom.year=2006 ;
end GP_Test;
end GP_TESTP;
在JDBC里面我们可以通过如下的接口来得到返回的动态游标的内容
Global.start(); //初始化连接池
ConnectionWrapper wrapper=ConnectionPoolFactory.getPoolInstance().borrowConnection();//从连接池里面返回连接
Connection conn=wrapper.getConnection();
try {
String callSql="{call GP_TESTP.GP_Test(?)}";
CallableStatement cs = null;
ResultSet rs=null;
cs = conn.prepareCall(callSql);
cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
rs = (ResultSet)cs.getObject(2);
while(rs.next()){
//String s=rs.get("");
String component=rs.getString(2);
String productNo=rs.getString(4);
System.out.println("component="+component+"-------productNo="+productNo);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
注意兰颜色的代码是注册动态游标和返回结果集的关键代码。
=======================================
2008年07月06日 星期日 07:41 P.M.一:无返回值的存储过程
存储过程为:
CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS
BEGIN
INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);
END TESTA;
然后呢,在java里调用时就用下面的代码:
package com.hyq.src;
import java.sql.*;
import java.sql.ResultSet;
public class TestProcedureOne {
public TestProcedureOne() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
CallableStatement cstmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");
proc.setString(1, "100");
proc.setString(2, "TestOne");
proc.execute();
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}
当然了,这就先要求要建张表TESTTB,里面两个字段(I_ID,I_NAME)。
二:有返回值的存储过程(非列表)
存储过程为:
CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS
BEGIN
SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;
END TESTB;
在java里调用时就用下面的代码:
package com.hyq.src;
public class TestProcedureTWO {
public TestProcedureTWO() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hyq ", " hyq ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");
proc.setString(1, "100");
proc.registerOutParameter(2, Types.VARCHAR);
proc.execute();
String testPrint = proc.getString(2);
System.out.println("=testPrint=is="+testPrint);
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}
}
注意,这里的proc.getString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是proc.getString(1),如果是第三个位置,就是proc.getString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。
2008年07月06日 星期日 07:42 P.M.由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分,
1, 建一个程序包。如下:
CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
2,建立存储过程,存储过程为:
CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;
END TESTC;
可以看到,它是把游标(可以理解为一个指针),作为一个out 参数来返回值的。
在java里调用时就用下面的代码:
package com.hyq.src;
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;
public class TestProcedureTHREE {
public TestProcedureTHREE() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "hyq", "hyq");
CallableStatement proc = null;
proc = conn.prepareCall("{ call hyq.testc(?) }");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet)proc.getObject(1);
while(rs.next())
{
System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");
}
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
} finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
================================
create or replace procedure proc_assess_optr is
date_cycle varchar2(20); --周期
start_date varchar2(10); --开始日期
end_date varchar2(10); --结束日期
region_code varchar2(32); --region code
db_user varchar2(30); --用户名
del_sql varchar2(1000);--删除这个周期的数据
begin
declare
cursor cur_user is
SELECT distinct DB_USER, CODE FROM REGION_CONFIG;
begin
start_date := to_char(last_day(add_months(SYSDATE, -2)) + 1, 'yyyy-MM-dd');--上个月的1号
end_date := to_char(last_day(add_months(SYSDATE, -1)) + 1 , 'yyyy-MM-dd');--这个月1号
date_cycle := to_char(sysdate - interval '1' month, 'yyyyMM');
--遍历所有的用户
begin
dbms_output.enable(1000000);
open cur_user;
loop
fetch cur_user
into db_user, region_code;
exit when cur_user%notfound;
begin
del_sql := 'delete from ' || db_user ||
'.guideline_instance t where t.cycle_id=''' ||
date_cycle || ''' and t.guidline_id in(''1'',''2'',''3'',''4'')';
DBMS_OUTPUT.put_line(del_sql);
execute immediate del_sql; --动态立即执行一个SQL语句
---具体数据分析执行
proc_assess_optr_exeute(db_user,
start_date,
end_date,
date_cycle);
end;
end loop;
close cur_user;
commit;
end;
end;
end proc_assess_optr;
/
发表评论
-
mysql 配置
2019-07-16 09:42 311mysql.cnf 【mysqld】 wait_t ... -
jdbc方式以 sys账号连接oracle数据的问题
2017-08-22 10:44 448多年以后,在操作oracle 时 发现 jdbc 连 ... -
mysql 1067错误处理
2015-03-10 17:21 583收藏:1067错误 MySql 服务无法启动,发生系 ... -
cassandra
2014-06-23 08:55 833cassandra 客户端命令操作流程: 具体流程 ... -
mysql 动态表创建
2014-04-15 14:25 726mysql 动态表创建 ,首先要检测是否存在。 使用sql ... -
oracle imp 与exp 参数说明
2014-01-15 16:52 582查看表空间下的所有的表进行删除: select 'drop ... -
SQL语句大全
2013-05-20 14:18 976针对mysql: 1、说明:创建数据库 C ... -
sql优化
2013-05-20 13:28 944以下针对mysql数据库 sql优化方式: ... -
oracle 更改数据库字符集编码UTF8
2012-11-08 16:28 1745oracle 更改数据库字符集编码UTF8 首先: c ... -
sqllite 字符串大小写敏感
2012-04-24 12:44 2204大部分数据库在进行字符串比较的时候,对大小写是不敏感的。 ... -
mysql root 密码忘记
2012-02-17 14:18 1008indow 1、net stop mysql 停止MySQL ... -
mysql 字符编码修改 utf8
2011-12-29 11:19 1078从网上搜了一下, 按照以下进行修改即可: 安装后 /e ... -
java毕业设计
2011-11-26 17:55 53您好, 从事软件开发5年,主要进行java企业级应 ... -
java毕业设计 计算机毕业设计 软件定制开发
2011-10-01 07:00 86工作室承接各种毕业设计以及软件定制开发。 java毕业设计 ... -
mysql 基础 数据导入到其他表
2011-09-07 09:00 995如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数 ... -
mysql service 不见了
2011-06-01 08:30 980参考以下命令: 5.1及后续版本: D:\MySQL\ ... -
悲观锁 与 乐观锁 概念
2011-04-16 07:01 1161悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事 ... -
oracle 学习笔记(简单1)
2010-08-14 16:11 11141。总结oracle 常用的 语 ... -
mysql 导入 导出 命令
2010-08-11 14:12 1154导出数据库:mysqldump -uroot -proot d ...
相关推荐
《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。 《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是...
MySQL存储过程之java调用 9 MySQL存储过程实现动态查询 12 MySQL应用总结 12 MySQL数据管理 15 数据管理 15 MySQL数据导出 15 MySQL数据还原 15 MySQL灾难性复制恢复总结 16 MySQL授权管理 17 未解决及已解决问题 19...
2.3 线程本地存储(Java.lang.ThreadLocal) 15 2.4 线程阻塞 17 2.4.1 调用sleep(millisecond)使任务进入休眠状态 17 2.4.2 等待输出与输入 17 2.4.3 对象锁不可用 17 2.4.4 通过wait()使线程挂起。 17 2.5 线程...
JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做...
oracle 日常学习的记录…… java调用oracle的存储过程 oracle number(1)一般对应于Java中的类型 Oracle常用函数 oracle触发器new Oracle中自增字段的两种方法 字典表查询
(v1 int ,v2 int)--存储过程的参数列表 as --声明局部变量 begin null; end; 调用过程 1.declare调用 2.命令调用 删除存储过程:drop procedure p1; 学习状态:学一个东西,有欲望,写东西出来 三段式:被动,自发...
9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:不是。可以用任意类型。 10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text....
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
比如mysql的Java的JDBC驱动程序——mysql-connector-java-5.1.26-bin.jar。再比如.net平台的操作数据库的规范ADO。 模块2:连接池,Mysql自身有个连接池,为了连接线程的复用,Mysql将其进行了池化。将连接资源进行...
名称空间:类似java中的包 集合: 代表: 访问修饰符:private、public、protected、internal:局部的 readonly:只读修饰符 new(新的)、static(静态的)、virtual(虚拟的)、override()、sealed(密封的)、abstranct...
:sun:小剑Javaの学习:cloud:整理笔记:red_heart: Backstage-end-learning-to-organize-notes ###springcloud alibaba 系列: nacos:注册中心(服务注册/发现),配置中心(动态配置管理) 原fescar --> seata ...
java连接sqoop源码AWS 大数据专业证书研究 免责声明:本指南是我学习的尾声,因此并不完整,主要集中在琐事/问题上。 取自 . 数据采集 服务说明 200 毫秒延迟(1 个标准消费者),70 毫秒,增强型扇出 HTTP2 推送...
每周学习的数据结构和算法的概念和理论,以及java方法,核心java都在每周学习总结下有详细的介绍。 目录 Bitwise Operation Recursion 按位运算 Java 数据类型有符号两个补码 按位运算符 按位运算符 象征 和 & 或者 ...
方法从调用到执行完成的过程中,就对应这一个栈帧在虚拟机中入栈到出栈的过程。 局部变量表:存放了编译器可知的8大基本类型和应用类型,其中Long和double是64位的,会占用两个局部变量空间,其余的数据类型只会占用...
声明式的函数并不会马上执行,需要我们调用才会执行:funname(); * 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分号结束。 函数表达式 var x = function( 参数 ){ ...执行...
在开发中我们需要将一 些简单的类型数据保存在本地,因此我们使用 SharedPreferences,它是一种 采用键值对存储的轻量级的数据存储方式。 主页面本界面本着功能性强、操作性简便、易用性较好等几个方面设计的,使使...
VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...
workQueue:一个阻塞队列,用来存储等待执行的任务,这个参数的选择也很重要,会对线程池的运行过程产生重大影响,一般来说,这里的阻塞队列有以下几种选择 ArrayBlockingQueue; LinkedBlockingQueue; ...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
│ │ 深入理解Java内存模型.pdf │ │ │ └─课后资料 │ ├─笔记 │ │ 淘淘商城_day20_课堂笔记.docx │ │ │ └─视频 │ 07-使用Jedis连接集群操作.avi │ 00-今日大纲.avi │ 01-RDB持久化方式.avi │ 02...