導航:首頁 > 萬維百科 > 網頁在線聊天架構設計

網頁在線聊天架構設計

發布時間: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"
}
}

與網頁在線聊天架構設計相關的知識