先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return “User [id=” + id + “, name=” + name + “, age=” + age + “]”;
}
}
Cost.java
package com.dk.oss.entity;
import java.sql.Timestamp;
/**
-
实体类
-
@author Cher_du
*/
public class Cost {
private Integer costId;
private String name;
//基本时长
private Integer baseDuration;
//基本费用
private Double baseCost;
//单位费用
private Double unitCost;
//状态:0-启用;1-禁用;
private String status;
//描述
private String descr;
//创建时间
private Timestamp creatime;
//开通时间
private Timestamp startime;
//资费类型:1-包月;2-套餐;3-计时;
private String costType;
@Override
public String toString() {
return “User [costId=” + costId + “, name=” + name + “, baseDuration=” + baseDuration + “, baseCost=” + baseCost
-
“, unitCost=” + unitCost + “, status=” + status + “, descr=” + descr + “, creatime=” + creatime
-
“, startime=” + startime + “, costType=” + costType + “]”;
}
public Integer getCostId() {
return costId;
}
public void setCostId(Integer costId) {
this.costId = costId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getBaseDuration() {
return baseDuration;
}
public void setBaseDuration(Integer baseDuration) {
this.baseDuration = baseDuration;
}
public Double getBaseCost() {
return baseCost;
}
public void setBaseCost(Double baseCost) {
this.baseCost = baseCost;
}
public Double getUnitCost() {
return unitCost;
}
public void setUnitCost(Double unitCost) {
this.unitCost = unitCost;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDescr() {
return descr;
}
public void setDescr(String descr) {
this.descr = descr;
}
public Timestamp getCreatime() {
return creatime;
}
public void setCreatime(Timestamp creatime) {
this.creatime = creatime;
}
public Timestamp getStartime() {
return startime;
}
public void setStartime(Timestamp startime) {
this.startime = startime;
}
public String getCostType() {
return costType;
}
public void setCostType(String costType) {
this.costType = costType;
}
}
Admin.java
package com.dk.oss.entity;
import java.sql.Timestamp;
/**
-
实体类
-
注:
-
与要操作的表保持一致。
-
@author Cher_du
*/
public class Admin {
private Integer adminId;
private String adminCode;
private String password;
private String name;
private String telephone;
private String email;
private Timestamp enrolldate;
public Integer getAdminId() {
return adminId;
}
public void setAdminId(Integer adminId) {
this.adminId = adminId;
}
public String getAdminCode() {
return adminCode;
}
public void setAdminCode(String adminCode) {
this.adminCode = adminCode;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Timestamp getEnrolldate() {
return enrolldate;
}
public void setEnrolldate(Timestamp enrolldate) {
this.enrolldate = enrolldate;
}
}
DAO层:
UserDAO.java
package com.dk.oss.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import com.dk.oss.entity.User;
/**
-
使用JdbcTemplate实现数据库访问
-
@author Cher_du
*/
@Repository(“userDAO”)
public class UserDAO {
@Resource(name=“jt”)
private JdbcTemplate jt;
public void save(User user){
jt.update("INSERT INTO user_dk "+
“VALUES(1,?,?)”,
new Object[]{user.getName(),user.getAge()});
}
/*
-
需要写一个实现了RowMapper接口的类,
-
该类规定了如何将结果集中的一条记录
-
转换成相应的java对象(比如User对象)。
*/
public List findAll(){
List users = new ArrayList();
String sql = “SELECT * FROM user_dk”;
users = jt.query(sql, new UserRowMapper());
return users;
}
/*
-
queryForObject方法:
-
如果找不到相应的记录,会抛出异常。
*/
public User findById(int id){
User user = null;
String sql = "SELECT * FROM user_dk "
+“WHERE ID=?”;
user = jt.queryForObject(sql, new Object[]{id}, new UserRowMapper());
return user;
}
public User findById2(int id){
User user = null;
String sql = "SELECT * FROM user_dk "
+“WHERE id=?”;
List users = jt.query(sql, new Object[]{id}, new UserRowMapper());
if(users !=null && users.size() >0){
return users.get(0);
}
return user;
}
public void update(User user){
String sql = "UPDATE user_dk "
+“SET name=?,age=? WHERE id=?”;
jt.update(sql,new Object[]{user.getName(),user.getAge(),user.getId()});
}
public void delete(int id){
String sql =“DELETE FROM user_dk WHERE id=?”;
jt.update(sql,new Object[]{id});
}
/*
-
获得总的记录数。
-
建议使用queryForObject方法。
-
不建议使用queryForInt方法。
*/
public int getTotalRow(){
String sql = “SELECT COUNT(*) FROM user_dk”;
return jt.queryForObject(sql, Integer.class);
}
class UserRowMapper implements RowMapper{
/*
-
rst:结果集。
-
rowNum:记录的下标,从0开始。
*/
public User mapRow(ResultSet rst, int rowNum)
throws SQLException {
User user = new User();
user.setId(rst.getInt(“id”));
user.setName(rst.getString(“name”));
user.setAge(rst.getInt(“age”));
return user;
}
}
}
CostDAO.java
package com.dk.oss.dao;
import java.util.List;
import com.dk.oss.entity.Cost;
/**
- DAO接口
*/
public interface CostDAO {
public List findAll();
}
CostDAOJdbcImpl.java
package com.dk.oss.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.springframework.stereotype.Repository;
import com.dk.oss.entity.Cost;
/**
-
DAO实现类
*/
@Repository(“costDAO”)
public class CostDAOJdbcImpl implements
CostDAO{
//注入DataSource
@Resource(name=“ds”)
private DataSource ds;
//查询出所有资费信息
public List findAll() {
List costs =
new ArrayList();
Connection conn = null;
PreparedStatement prep = null;
ResultSet rst = null;
try {
conn = ds.getConnection();
String sql = "SELECT * FROM cost "
- “ORDER BY cost_id”;;
prep =
conn.prepareStatement(sql);
rst = prep.executeQuery();
while(rst.next()){
Cost c = createCost(rst);
costs.add©;
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}finally{
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return costs;
}
//将结果集中的记录转换成一个对象。
private Cost createCost(ResultSet rst) throws SQLException {
Cost c = new Cost();
c.setCostId(rst.getInt(“cost_id”));
c.setName(rst.getString(“name”));
c.setBaseDuration(rst.getInt(“base_duration”));
c.setBaseCost(rst.getDouble(“base_cost”));
c.setUnitCost(rst.getDouble(“unit_cost”));
c.setStatus(rst.getString(“status”));
c.setDescr(rst.getString(“descr”));
c.setCreatime(rst.getTimestamp(“creatime”));
c.setStartime(rst.getTimestamp(“startime”));
c.setCostType(rst.getString(“cost_type”));
return c;
}
}
AdminDAO.java
package com.dk.oss.dao;
import com.dk.oss.entity.Admin;
/**
- DAO接口
* 注:
* 任何接口,都不要涉及任何具体的实现。
*/
public interface AdminDAO {
public Admin findByCode(String code);
}
AdminDAOJdbcImpl.java
package com.dk.oss.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.springframework.stereotype.Repository;
import com.dk.oss.entity.Admin;
/**
-
DAO实现类
-
@author Cher_du
*/
@Repository(“adminDAO”)
public class AdminDAOJdbcImpl implements AdminDAO{
//注入datasource。
@Resource(name=“ds”)
private DataSource ds;
public Admin findByCode(String code) {
Admin admin = null;
Connection conn = null;
PreparedStatement prep = null;
ResultSet rst = null;
try {
conn = ds.getConnection();
String sql = "SELECT * FROM admin_info "
+“WHERE admin_code=?”;
prep = conn.prepareStatement(sql);
prep.setString(1, code);
rst = prep.executeQuery();
if(rst.next()){
admin = new Admin();
admin.setAdminId(rst.getInt(“admin_id”));
admin.setAdminCode(rst.getString(“admin_code”));
admin.setPassword(rst.getString(“password”));
admin.setName(rst.getString(“name”));
admin.setTelephone(rst.getString(“telephone”));
admin.setEmail(rst.getString(“email”));
admin.setEnrolldate(rst.getTimestamp(“enrolldate”));
}
} catch (SQLException e) {
//记日志(保留现场)
e.printStackTrace();
/*
-
异常是否恢复,如果不能够恢复
-
(发生了系统异常,比如数据库服务
-
暂停,网络中断),则提示用户稍后
-
重试。如果能够恢复,则立即恢复。
*/
throw new RuntimeException(e);
}finally{
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return admin;
}
}
Service层:
AdminService.java
package com.dk.oss.service;
import com.dk.oss.entity.Admin;
/**
-
业务层接口
*/
public interface AdminService {
//用于登录处理
public Admin checkLogin(String code,
String pwd);
}
AdminServiceImpl.java
package com.dk.oss.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.dk.oss.dao.AdminDAO;
import com.dk.oss.entity.Admin;
/**
-
业务层实现
*/
@Service(“adminService”)
public class AdminServiceImpl implements AdminService{
@Resource(name=“adminDAO”)
private AdminDAO adminDAO;
public Admin checkLogin(String code, String pwd) {
//调用AdminDAO访问数据库
Admin admin = adminDAO.findByCode(code);
if(admin == null){
//账户不存在,需要提示用户。
//抛出一个应用异常(用户在使用系统
//的过程当中,做了一些错误的操作,比如
//输出入错误的账户或密码)。
throw new AppException(“账户错误”);
}
if(!admin.getPassword().equals(pwd)){
//密码错误,需要提示用户
throw new AppException(“密码错误”);
}
//登录成功
return admin;
}
}
AppException.java
package com.dk.oss.service;
/**
-
应用异常类。
*/
public class AppException
extends RuntimeException {
public AppException() {
}
public AppException(String message) {
super(message);
}
}
CostService.java
package com.dk.oss.service;
import java.util.List;
import com.dk.oss.entity.Cost;
public interface CostService {
public List list();
}
CostServiceImpl.java
package com.dk.oss.service;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.dk.oss.dao.CostDAO;
import com.dk.oss.entity.Cost;
@Service(“costService”)
public class CostServiceImpl implements CostService{
@Resource(name=“costDAO”)
private CostDAO dao;
public List list() {
List costs = new ArrayList();
costs = dao.findAll();
return costs;
}
}
Controller层:
CostController.java
package com.dk.oss.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.dk.oss.entity.Cost;
import com.dk.oss.service.CostService;
@Controller
public class CostController {
@Resource(name=“costService”)
private CostService costService;
@RequestMapping(“/cost.do”)
public String cost(HttpServletRequest request){
try{
List costs = costService.list();
request.setAttribute(“costs”, costs);//Integer.valueOf(“w”);
}catch(Exception e){
e.printStackTrace();
//系统异常,提示用户稍后重试。
return “error”;
}
return “cost”;
}
}
LoginController.java
package com.dk.oss.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.dk.oss.entity.Admin;
import com.dk.oss.service.AdminService;
import com.dk.oss.service.AppException;
@Controller
public class LoginController {
@Resource(name=“adminService”)
private AdminService adminService;
@RequestMapping(“/toLogin.do”)
public String toLogin(){
return “login”;
}
@RequestMapping(“/login.do”)
public String checkLogin(HttpServletRequest request,
HttpSession session){
//读取请求参数值
String adminCode = request.getParameter(“adminCode”);
String pwd = request.getParameter(“pwd”);
System.out.println(“adminCode:”+adminCode+" pwd:"+pwd);
//调用业务层模块来进行登录处理
Admin admin = null;
try{
admin = adminService.checkLogin(adminCode, pwd);
System.out.println(admin);
}catch(Exception e){
if(e instanceof AppException ){
//应用异常,需要明确提示用户。
request.setAttribute(“errorMsg”, e.getMessage());
//转发到登录页面。
return “login”;
}else{
//系统异常,提示用户稍后重试
return “error”;
}
}
//登录成功,重定向到首页。
//将一些数据绑定到session对象上,用于
//session验证。
session.setAttribute(“admin”, admin);
return “redirect:index.do”;
}
@RequestMapping(“/index.do”)
public String toIndex(){
return “index”;
}
}
SessionInterceptor.java
package com.dk.oss.interceptors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
-
拦截器,用于session验证。
-
@author Cher_du
*/
public class SessionInterceptor implements HandlerInterceptor{
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler)
throws Exception {
System.out.println(“SessionInterceptor的preHandle方法…”);
//session验证
HttpSession session = request.getSession();
Object obj = session.getAttribute(“admin”);
if(obj == null){
//没有登录,跳转到登录页面
response.sendRedirect(“toLogin.do”);
//中断处理流程。
return false;
}
//已经登录,继续向后调用
return true;
}
public void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response,
Object handler,
Exception ex)
throws Exception {
}
}
TestCase.java
package test;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.oss.dao.AdminDAO;
import com.dk.oss.dao.CostDAO;
import com.dk.oss.entity.Admin;
import com.dk.oss.entity.Cost;
import com.dk.oss.service.AdminService;
import com.dk.oss.service.CostService;
public class TestCase {
@Test
//测试DataSource
public void test1() throws SQLException{
ApplicationContext ac =
new ClassPathXmlApplicationContext(
“app.xml”);
DataSource ds =
ac.getBean(“ds”,DataSource.class);
System.out.println(
ds.getConnection());
}
@Test
//测试DAO
public void test2() {
ApplicationContext ac =
new ClassPathXmlApplicationContext(
“app.xml”);
AdminDAO dao =
ac.getBean(“adminDAO”,
AdminDAO.class);
Admin admin =
dao.findByCode(“caocao”);
System.out.println(admin);
}
@Test
//测试AdminService
public void test3() {
ApplicationContext ac =
new ClassPathXmlApplicationContext(
“app.xml”);
AdminService service =
ac.getBean(“adminService”,
AdminService.class);
Admin admin =
service.checkLogin(“caocao”,
“123”);
System.out.println(admin.getTelephone());
}
@Test
//测试CostDAO
public void test4() {
ApplicationContext ac =
new ClassPathXmlApplicationContext(
“app.xml”);
CostDAO dao =
ac.getBean(“costDAO”,CostDAO.class);
List costs =
dao.findAll();
System.out.println(costs);
}
@Test
//测试CostService
public void test5() {
ApplicationContext ac =
new ClassPathXmlApplicationContext(
“app.xml”);
CostService service =
ac.getBean(“costService”,CostService.class);
List costs =
service.list();
System.out.println(costs);
}
}
TestCase2.java
package test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.oss.dao.UserDAO;
import com.dk.oss.entity.User;
public class TestCase2 {
@Test
总结
面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。
以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
ationContext(
“app.xml”);
AdminDAO dao =
ac.getBean(“adminDAO”,
AdminDAO.class);
Admin admin =
dao.findByCode(“caocao”);
System.out.println(admin);
}
@Test
//测试AdminService
public void test3() {
ApplicationContext ac =
new ClassPathXmlApplicationContext(
“app.xml”);
AdminService service =
ac.getBean(“adminService”,
AdminService.class);
Admin admin =
service.checkLogin(“caocao”,
“123”);
System.out.println(admin.getTelephone());
}
@Test
//测试CostDAO
public void test4() {
ApplicationContext ac =
new ClassPathXmlApplicationContext(
“app.xml”);
CostDAO dao =
ac.getBean(“costDAO”,CostDAO.class);
List costs =
dao.findAll();
System.out.println(costs);
}
@Test
//测试CostService
public void test5() {
ApplicationContext ac =
new ClassPathXmlApplicationContext(
“app.xml”);
CostService service =
ac.getBean(“costService”,CostService.class);
List costs =
service.list();
System.out.println(costs);
}
}
TestCase2.java
package test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.oss.dao.UserDAO;
import com.dk.oss.entity.User;
public class TestCase2 {
@Test
总结
面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。
以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考
[外链图片转存中…(img-A3Dm395u-1713458496804)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-xevkpsYm-1713458496805)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!