最后
Java架构进阶面试及知识点文档笔记
这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理
Java分布式高级面试问题解析文档
其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!
互联网Java程序员面试必备问题解析及文档学习笔记
Java架构进阶视频解析合集
- c3p0,dbcp,druid
*/
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
/**
-
绝对不能使用单例
-
@author Administrator 硬编码
*/
public class JdbcUtil {
private static Connection con = null;
private static DataSource ds = null;
private static Properties pt = null;
static {
// 1.获得当前类的加载器
ClassLoader cl = JdbcUtil.class.getClassLoader();
// 通过该加载器得到一个输入流
InputStream in = cl.getResourceAsStream(“jdbc.properties”);
// 通过输入创一个properties对象
pt = new Properties();
try {
pt.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getCon() {
if (ds == null) {
try {
ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(pt);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
return ds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void closeCon(Connection con) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
具体使用模板:
public static void main(String[] args) throws Exception{
//使用自己的工具类,获取数据库的连接对象
Connection conn = MyJDBCUtils.getConnection();
//创建QueryRunner类对象
QueryRunner qr = new QueryRunner();
String sql = “UPDATE gjp_ledger set money=? , ldesc=? where lid=?”;
Object[] params = {998,“买钻石”,3};
int result = qr.update(conn, sql, params);
System.out.println(result);
DbUtils.close(conn);
}
二.QueryRunner类获取查询结果集ResultSetHandler
===================================================================================================
1.常用Handler
- ArrayHandler 将结果集第一行转成对象数组
public static void main(String[] args) throws Exception{
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger where lid=?”;
//结果集处理方式,ArrayHandler 第一行转成对象数组
QueryRunner qr = new QueryRunner();
Object[] objects = qr.query(conn, sql, new ArrayHandler(),3);
for(Object obj : objects){
System.out.println(obj);
}
}
- ArrayListHandler 将结果集中的每一行数据都转成一个对象数组,再将转成的多个对象数组存放到List
public static void main(String[] args) throws Exception{
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger”;
QueryRunner qr = new QueryRunner();
//执行query方法,传递连接对象,SQL语句,结果集处理方式
ArrayListHandler
List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());
for(Object[] objects : list){
for(Object obj : objects){
System.out.print(obj+" ");
}
System.out.println();
}
}
- BeanHandler 将结果集第一行数据封装到一个对应的业务类实例中
(1): 定义业务数据类Ledger(实体类,javaBean)
public class Ledger {
//要生成空参、有参构造、set和get方法、toString方法
private int lid;
private String parent;
private double money;
private int sid;
private String account;
private String createtime;
private String ldesc;
}
(2)测试案例代码
public static void main(String[] args) throws Exception{
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger”;
QueryRunner qr = new QueryRunner();
//BeanHandler泛型,构造方法(和反射有关系的对象)
Ledger legder = qr.query(conn, sql, new BeanHandler(Ledger.class));
System.out.println(legder);
}
- BeanListHandler 将结果集中的每一行数据都封装到一个对应的业务类实例中,再将多个业务类实例对象存放到List里。
public static void main(String[] args) throws Exception {
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger”;
//结果集处理方式,BeanListHandler 每一行数据封装到业务数据类中
QueryRunner qr = new QueryRunner();
List list = qr.query(conn, sql, new BeanListHandler(Ledger.class));
for(Ledger ledger : list){
System.out.println(ledger);
}
}
- MapHandler 将结果集中的第一行数据封装到一个Map中,key是列名,value是对应的值。
public static void main(String[] args) throws Exception {
结局:总结+分享
看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了Java互联网工程师面试1000题,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱
- Java互联网工程师面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
- 程序员代码面试指南–IT名企算法与数据结构题目最优解
- 其余像设计模式,建议可以看看下面这4份PDF(已经整理)
- 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!
s9CV4k-1715565021876)]
- 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
[外链图片转存中…(img-DGBQoGhy-1715565021877)]
以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!