导航:首页 > 万维百科 > 网页在线聊天架构设计

网页在线聊天架构设计

发布时间:2020-11-13 02:57:10

1、软件工程专业都有哪些就业方向?

软件工程专业都有就业方向Web开发、移动终端开发、从事大数据开发、计算机系统工程师、视频开发工程师 、计算机软件应用工程师。

第一、Web开发

Web开发包括前端开发和后端开发两个大的岗位划分,前端开发主要以应用Html、CSS和JavaScript为主,而后端开发则可以使用Java、Python、PHP、C#等语言。早期大部分毕业生会选择以后端开发为主。

目前也有不少同学会选择前端开发作为主要方向。Web开发在IT行业内有大量的就业岗位,从未来发展的前景来看也是不错的选择。

第二、移动终端开发

随着移动互联网的发展,目前有不少毕业生会专注于移动端App的开发,主要包括iOS终端开发和Android终端开发。随着5G标准的落地应用,未来移动终端的开发场景也会进一步得到拓展,比如与物联网的深度结合等。

当前不少开发团队已经把移动端开发并入到前端开发团队,这就要求从事移动端开发的技术人员进一步丰富自身的知识结构。

第三、从事大数据开发

大数据技术已经发展多年,技术体系已经趋于成熟,当前正处在落地应用的初期,随着产业互联网的发展,未来大数据领域将释放出大量的就业岗位。从近些年的就业情况来看,从事大数据相关岗位的毕业生还是比较多的,以大数据应用开发、大数据分析和大数据运维几个岗位为主。

第四、计算机系统工程师  

系统架构设计师是指进行数据库安装、配置、优化,根据需求进行数据的挖掘及展示,以及数据库方面的探索及开发的专业人员。  

第五、视频开发工程师  

你一定体验过语音或视频聊天所带来的舒适感觉,可能也享受过在线视频所带来的方便快捷,这些都是语音/视频开发工程师们的功劳。语音和视频的应用还远不止上面提到的,它包括从商业应用到个人应用的各种产品需求。想要成为一名出色的语音/视频开发工程师吗?那么你需要熟悉MPEG。 

第六、计算机软件应用工程师  

软件研发工程师是指从事某种行业,对某种不存在的事物进行系统的研究和开发并具有一定经验的专业工作者,或者对已经存在的事物进行改进以达到优化目的的专业工作者。

2、Java实现一个网络聊天室 可以用什么设计架构?怎么设计

那看你用什么写了。如果B/S方式的话,简单点struts配上ajax就可以了。C/S方式的话,网上找几个例子,看看tcp连接怎么建立,线程怎么使用,swing怎么用

3、几十万人同时在线的直播间聊天,如何设计服务端架构

几十万人真心不少了。。。
首先考虑客户端的连接层, 考虑到一个服务器的吞吐量回和答socket限制,建议用负载均衡将不同的频道的客户分散到不同的前端连接器上,连接器的socket可以考虑libevent + 线程池这种架构, 消息用protobuf序列化.
后台可以考虑用redis加kafka来完成session管理和消息分发, 由于消息太多了可能会影响kafka的性能, 建议给消息一个优先级。 给优先级低的消息一个消息池。另外由于消息会大量产生和释放, 用普通的内存管理开销太大, 碎片也会很严重。 建议使用TCMalloc做内存分配器或者自己写一个slab, redis尽量做一个MS,用户会话session可以集中管理

4、怎么设计一个基于socket的分布式高并发聊天室的架构

.聊天室服务器端逻辑
//Debug.java
import java.util.*;
public class Debug {
public static String p(String s) {
System.out.println(s);
return s;
}
public static Object p(Object O) {
System.out.println(O.toString());
return O;
}
public static Object[] p(Object[] O) {
System.out.print("[");
String s = "";
for (Object o : O) {
System.out.print(s);
System.out.print(o.toString());
s = ",";
}
System.out.println("]");
return O;
}
public static int p(int i) {
System.out.println(i);
return i;
}
public static long p(long i) {
System.out.println(i);
return i;
}
public static Map.Entry p(Map.Entry l) {
System.out.println(l);
return l;
}
public static HashSet p(HashSet l) {
System.out.println(l);
return l;
}
public static HashMap p(HashMap l) {
System.out.println(l);
return l;
}
public static Map p(Map l) {
System.out.println(l);
return l;
}
public static LinkedHashSet p(LinkedHashSet l) {
System.out.println(l);
return l;
}
public static TreeSet p(TreeSet l) {
System.out.println(l);
return l;
}
public static Set p(Set l) {
System.out.println(l);
return l;
}
public static ArrayList p(ArrayList l) {
System.out.println(l);
return l;
}
public static LinkedList p(LinkedList l) {
System.out.println(l);
return l;
}
public static List p(List l) {
System.out.println(l);
return l;
}
}

//Service.java
import java.io.*;
import java.net.*;
import java.util.*;
public class Service extends Thread{
private Socket client=null;
private Server server=null;
public Service(Server server,Socket client){
this.server=server;
this.client=client;
}
public void run(){
try {
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
while(true){
String str=br.readLine();
List<Socket> li=server.getLi();
for(Socket c:li){
if(!c.isClosed() && c.isConnected()){
OutputStream os=c.getOutputStream();
os.write((str+"\n").getBytes());
}else{
client.close();
server.getLi().remove(client);
break;
}
}
}
}catch (IOException e) {
e.printStackTrace();
}
}
}

//Server.java
import java.util.*;
import java.io.*;
import java.net.*;
public class Server {
private List<Socket> li=new ArrayList<Socket>();
private ServerSocket ss=null;
public List<Socket> getLi(){
return li;
}
public Server(int port){
try {
ss=new ServerSocket(port);
} catch (IOException e) {
e.printStackTrace();
}
}
public void start(){
while(true){
Socket s;
try {
s = ss.accept();
li.add(s);
new Service(this,s).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new Server(8888).start();
}
}

17.聊天室客户端逻辑
//Debug.java
import java.util.*;
public class Debug {
public static String p(String s) {
System.out.println(s);
return s;
}
public static Object p(Object O) {
System.out.println(O.toString());
return O;
}
public static Object[] p(Object[] O) {
System.out.print("[");
String s = "";
for (Object o : O) {
System.out.print(s);
System.out.print(o.toString());
s = ",";
}
System.out.println("]");
return O;
}
public static int p(int i) {
System.out.println(i);
return i;
}
public static long p(long i) {
System.out.println(i);
return i;
}
public static Map.Entry p(Map.Entry l) {
System.out.println(l);
return l;
}
public static HashSet p(HashSet l) {
System.out.println(l);
return l;
}
public static HashMap p(HashMap l) {
System.out.println(l);
return l;
}
public static Map p(Map l) {
System.out.println(l);
return l;
}
public static LinkedHashSet p(LinkedHashSet l) {
System.out.println(l);
return l;
}
public static TreeSet p(TreeSet l) {
System.out.println(l);
return l;
}
public static Set p(Set l) {
System.out.println(l);
return l;
}
public static ArrayList p(ArrayList l) {
System.out.println(l);
return l;
}
public static LinkedList p(LinkedList l) {
System.out.println(l);
return l;
}
public static List p(List l) {
System.out.println(l);
return l;
}
}

//GetMessage.java
import javax.swing.*;
import java.io.*;
import java.net.*;
public class GetMessage extends Thread{
private JTextArea context=null;
private Socket s=null;
public GetMessage(JTextArea context,Socket s){
this.context=context;
this.s=s;
}
public void run(){
try {
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
while(true){
String str=br.readLine();
String c=context.getText();
context.setText(c+"\n"+str);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

//Client.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Client extends JFrame {
private String ip = "";
private int port = 0;
private Socket s = null;
private JTextArea context = new JTextArea(10, 10);
JScrollPane sp = new JScrollPane(context);
private JTextField say = new JTextField(10);
private Container c;
public Client(String ip, int port) {
c = this.getContentPane();
c.setLayout(new BorderLayout());
context.setEditable(false);
c.add(sp);
JPanel p = new JPanel();
p.add(BorderLayout.CENTER, say);
c.add(BorderLayout.SOUTH, p);
try {
s = new Socket(ip, port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
say.addActionListener(new ActionListener() {
private void send(String str) {
try {
OutputStream os = s.getOutputStream();
os.write(str.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent arg0) {
String str = say.getText();
send(str + "\n");
say.setText("");
}
});
new GetMessage(context, s).start();
this.setSize(300, 300);
this.setVisible(true);
this.setResizable(false);
}
public static void main(String[] args) {
String strIP = null;
try {
strIP = InetAddress.getLocalHost().getHostAddress().toString();
} catch (UnknownHostException e) {
e.printStackTrace();
}
new Client(strIP, 8888); //"127.0.0.1"
}
}

与网页在线聊天架构设计相关的知识