先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
// 当登陆成功,给用户反馈成功
bw.write(“恭喜你登陆成功!!!!”);
bw.flush();
} else {
bw.write(“账号或密码错误!!!!”);
bw.flush();
}
//4、关闭流
bw.close();
br.close();
os.close();
is.close();
s.close();
ss.close();
}
}
//对象流的代码实例
import java.io.Serializable;
/**
-
封装了用户信息
-
@author Administrator
*/
public class User implements Serializable{
String name;//登录账号
String pwd;//密码
int id;//身份标识
public User(String name, String pwd, int id) {
super();
this.name = name;
this.pwd = pwd;
this.id = id;
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/**
- 基于TCP协议的 socket网络编程 1、服务器serversocket建立一个服务器端,还有一个客户
端,两者通过socket对象建立通道连接起来
- 2、两者可以通过流进行数据传输 如果数据有类型,使用datainputStream
dataoutputStream, object
-
3、实际上数据访问还是通过流实现的,但是两端都是来自网络
-
@author Administrator
*/
public class LoginClient {
// 使用字符流发送数据,一定要及时刷新flush,每写一行数据需要 newline
public static void main(String[] args) throws UnknownHostException,
IOException {
Socket s = new Socket(“127.0.0.1”, 8888);
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
oos.writeObject(new User(“望舒”, “111111”, 1));
// 读取服务器给的反馈
InputStream is = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
System.out.println(br.readLine());
// 关闭流
is.close();
oos.close();
s.close();
}
}
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
-
Tcp Socket 双向: 客户端向服务器发送对象,服务器接收到之后给出反馈 模拟登陆
-
利用线程知识 可以多客户端
-
@author Administrator
*/
public class LoginServer {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
// 1、创建一个服务器,指定端口号
ServerSocket ss = new ServerSocket(8888);
boolean flag = true;
while (flag) {
Socket s = ss.accept();
new LoginThread(s).start();
}
ss.close();
}
}
class LoginThread extends Thread {
Socket s = null;
public LoginThread(Socket s) {
this.s = s;
}
@Override
public void run() {
try {
login();
} catch (ClassNotFoundException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 接收客户端信息的方法
public void login() throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
User user = (User) ois.readObject(); //向下转型
System.out.println(user.name + “正在登录”);
OutputStream os = s.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write(“服务端接收成功”);
bw.flush();
os.close();
ois.close();
s.close();
}
}
2、UDP对应的是DatagramSocket。
实现流程:
服务器端(server):
1. 构造DatagramSocket实例,指定本地端口。
2. 通过DatagramSocket实例的receive方法接收DatagramPacket.DatagramPacket中间就包含了通信的内容。
3. 通过DatagramSocket的send和receive方法来收和发DatagramPacket.
客户端(client):
1. 构造DatagramSocket实例。
2.通过DatagramSocket实例的send和receive方法发送DatagramPacket报文。
3.结束后,调用DatagramSocket的close方法关闭。
不多说,实例代码:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;
/**
-
一对多聊天
-
@author Administrator
*/
public class UdpServer {
public static void main(String[] args) throws Exception {
// 服务器
DatagramSocket ds = new DatagramSocket(6666);
Scanner input = new Scanner(System.in);
boolean flag = true;
while (flag) {
// dengdai客户端发送消息
byte bs[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(bs, bs.length);
ds.receive(dp);
// 解析数据
String str = new String(dp.getData(), 0, dp.getLength());
// str xiaomi:string
System.out.println(str);
// 端口号和ip地址不确定
int port = dp.getPort();
InetAddress ia = dp.getAddress();
System.out.println(ia.getHostAddress());
String msg = input.next();
// 把消息发送给客户端
DatagramPacket dp1 = new DatagramPacket(msg.getBytes(),
msg.getBytes().length, ia, port);
ds.send(dp1);
}
ds.close();
}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;
public class UdpClient {
public static void main(String[] args) throws Exception {
// 1、创建一个客户端 并指定端口
DatagramSocket ds = new DatagramSocket(8881);
boolean flag = true;
while (flag) {
// 2、准备数据
Scanner input = new Scanner(System.in);
String str = input.next();
str = “客户端说:”+str;
//结束客户端
if(str.equals(“exit”) || str.equals(“quit”)){
break; //打断循环
//continue: 打断当前这次循环执行下一次
//return 结束方法
}
// 3、打包数据
DatagramPacket dp = new DatagramPacket(str.getBytes(),
str.getBytes().length,
InetAddress.getByName(“192.168.1.218”), 8888);
// 4、发送数据
ds.send(dp);
// 5、接收服务器端的反馈
byte[] buf = new byte[1024];
DatagramPacket dp1 = new DatagramPacket(buf, buf.length);
ds.receive(dp1);
System.out.println(“服务器说:” + new String(dp1.getData()));
// 6、关闭客户端
}
ds.close();
}
}
//实例二:发送文件
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/**
-
通过udp传递文件
-
@author Administrator
*/
public class UdpServer {
public static void main(String[] args) {
DatagramSocket ds = null;
boolean flag = true;
try {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(“e:\xiaomiyanzhao.gif”, true));
ds = new DatagramSocket(6666);
// 等待接收数据
byte[] bs = new byte[2000];
while (flag) {
最后总结我的面试经验
2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。
另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。
BAT面试经验
实战系列:Spring全家桶+Redis等
其他相关的电子书:源码+调优
面试真题:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。
[外链图片转存中…(img-qzuPDRS4-1713615035756)]
BAT面试经验
实战系列:Spring全家桶+Redis等
[外链图片转存中…(img-wqbUTh0d-1713615035756)]
其他相关的电子书:源码+调优
[外链图片转存中…(img-RC8dpOEw-1713615035757)]
面试真题:
[外链图片转存中…(img-ZPkVvwde-1713615035757)]
[外链图片转存中…(img-O2JoDHKh-1713615035758)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-4ttpResj-1713615035758)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!