java面试专辑

一、如何更高效率地插入大量数据

1、INSERT INTO workinfo (column1, column2) VALUES (1, 2), (2, 3),(4,5);,这样可以减少一些INSERT语句

2、推荐多线程并行插入

 

代码范例:

PreparedStatement ps = con.prepareStatement(sql);
for(int i = 0; i < 100000; i++) {
    ps.setString(1,"1");
    ps.setString(2,"2");
    ps.addBatch();
}
ps.executeBatch();

//3.使用PreparedStatement + 批处理
public void exec3(Connection conn){
  try {
   conn.setAutoCommit(false);
   Long beginTime = System.currentTimeMillis();
   PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");
  
   for(int i=1;i<=100000;i++){   
    pst.setInt(1, i);
    pst.addBatch();
    if(i%1000==0){//可以设置不同的大小;如50,100,500,1000等等
     pst.executeBatch();
     conn.commit();
     pst.clearBatch();
    }
   }
   Long endTime = System.currentTimeMillis();
   System.out.println("pst+batch:"+(endTime-beginTime)/1000+"秒");
   pst.close();
   conn.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}

 

二、数据库中索引,视图的概念

1. 概述

1.1、什么是视图

1.视图是查看数据库表中数据的一种方法;

2.视图提供了存储预定义的查询语句作为数据库中的对象以备以后使用的能力;

3.视图只是一种逻辑对象,并不是物理对象,因为视图不占物理存储空间;

4.在视图中被查询的表称为视图的基表;

5.视图的内容包括:基表的列的子集或者行的子集;两个或者多个基表的联合;两个或者多个基表的连接;基表的统计汇总;另外一个视图的子集;视图和基表的混合。

 

1.2、视图的优点

1.集中用户使用的数据;

2.掩码数据库的复杂性,视图把数据库设计的复杂性与用户屏蔽分开;

3.简化用户权限的管理;

4.为向其他应用程序输出而重新组织数据。

 

2、创建视图

语法

: CREATE VIEW <视图名> [(列名1,列名2,……)]

       [WITH ENCRYPTION]

       AS

       SELECT_STATEMENT

[WITH CHECK OPTION]

功能:创建视图

例1:创建一个成绩单视图

CREATE VIEW dbo.vw_cjd(name, cid, result)

     AS

       SELECT name, report.cid, report.result FROM student JOIN report

          ON student.sid=report.sid

例2:显示成绩单视图

Select * from vw_cjd

例3:创建一个按专业统计平均年龄的视图

   CREATE VIEW dbo.vw_avg(speciality, avage)

   AS

           SELECT speciality, avg(age) FROM student

                  GROUP BY speciality

例4:显示平均年龄视图

Select * from vw_avg

 

3.修改视图与删除视图

3.1修改视图

语法:ALTER VIEW <视图名> [(列名1,列名2,……)] [WITH ENCRYPTION]

      AS

SELECT statement [WITH CHECK OPTION]

例:修改视图vw_cjd

ALTER VIEW vw_cjd

AS

 Select name, report.cid, report.result, address From student join report

    ON student.sid=report.sid

查看Select * from vw_cjd

 

3.2. 删除视图

语法:DROP VIEW <视图名>

例:删除视图vw_cjd

    DROP VIEW vw_cjd

三、数据库中的索引

略。  

四、ajax的同步、异步

举个例子:普通B/S模式(同步)AJAX技术(异步)
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
--------------------------------------------------------------------------------------------------------------------
同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。
--------------------------------------------------------------------------------------------------------------------
举个例子 打电话时同步 发消息是异步

看看open方法的几个参数。

.open (http-method, url, async, userID, password)

(后面是帐号和密码,在禁止匿名访问的http页面中,需要用户名和口令)

首先看看异步处理方式。

其中async是一个布尔值。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式:Flase。

$.ajax({ 

        type: "post", 

       url: "path", 

       cache:false, 

       async:false, 

        dataType: ($.browser.msie) ? "text" : "xml", 

         success: function(xmlobj){ 

        } 

});

五、js 中json字符串和对象互相转换

var str1='{"name":"cxh","sex":"man"}';
var obj={"name":"cxh","sex":"man","address":[{"province":"shanghai","city":"shanghai","post":"26000"}]};

alert(obj.address[0].city);//shanghai

var obj1=JSON.parse(str1);
alert(obj1.name);
var str2=JSON.stringify(obj);
alert(str2.length);

 

六、数据库中 case when 的使用方法

select * from user_info;
+------------+--------+-------------+----------+------+-----------+
| userInfoId | userId | phone       | address  | age  | education |
+------------+--------+-------------+----------+------+-----------+
|          1 |      2 | NULL        | NULL     | NULL | NULL      |
|          2 |      3 | NULL        | NULL     | NULL | NULL      |
|          3 |      1 | 13145682001 | 中国安徽 |   28 | 博士      |
|          4 |      4 | NULL        | NULL     | NULL | NULL      |
|         17 |     17 | 123456789   | 中通     |   27 | 大专      |
+------------+--------+-------------+----------+------+-----------+

 

select userId,case address when '中通' then '中国' else address end as address from user_info; 
+--------+----------+
| userId | address  |
+--------+----------+
|      2 | NULL     |
|      3 | NULL     |
|      1 | 中国安徽 |
|      4 | NULL     |
|     17 | 中国     |
+--------+----------+

 

select userId,case  when address is null then '中国' else address end as address from user_info; 
+--------+----------+
| userId | address  |
+--------+----------+
|      2 | 中国     |
|      3 | 中国     |
|      1 | 中国安徽 |
|      4 | 中国     |
|     17 | 中通     |
+--------+----------+

  

转载于:https://www.cnblogs.com/yuhero/p/7532919.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值