JAVA客户端与服务端通信问题 25C
public void sendCMD(final byte[] buffer,final String ip)
{
    new Thread(new Runnable() {  
        @Override
        public void run() {

            Socket socket=null;
            try{

                 socket = new Socket(InetAddress.getByName(ip), Proxys.PORT_RECEIVE + Max); 
                 InputStream inputStream = new ByteArrayInputStream(buffer);
                 OutputStream outputStream = socket.getOutputStream();
                 byte buffer [] = new byte[1024];
                 int temp=0;
                 while((temp = inputStream.read(buffer)) != -1){
                     outputStream.write(buffer,0,temp);}
                 outputStream.flush();
                    }
                            客户端发送指令给服务端



                                public void run() {
    // 消息循环
     ServerSocket serverSocket = null;  
     Socket socket = null;  
 try {  
     //定义TCP监听  
     serverSocket = new ServerSocket(Proxys.PORT_RECEIVE + con.Max);  
     socket = serverSocket.accept(); 
     int temp=0;
     //定义缓冲区  
     byte[] buffer=new byte[1024];  
     String str="";
     //定义接收数据包  
     InputStream inputStream = socket.getInputStream();  
     while ((temp = inputStream.read(buffer)) != -1) { 
         str=new String(buffer, 0, temp);}

                服务端接收客户端发送的流




                                不知道哪个地方有问题,请大神看一下上面贴上的代码是否有问题   谢谢

8个回答

代码太乱。能否贴上完整的代码?

客户端

 public class DayTimeClient {
    //请求服务器,获得信息并输出
    public static void main(String[] args) {
        try (Socket socket = new Socket("localhost",13)) {
            socket.setSoTimeout(15000);
            InputStream in = socket.getInputStream();

            StringBuilder sb = new StringBuilder();
            InputStreamReader reader = new InputStreamReader(in,"ASCII");
            for (int c = reader.read(); c != -1 ; c = reader.read()) {
                sb.append((char) c);
            }
            System.out.println(sb);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }//end main()
}

服务器

 public class DayTimeServer {

    public static void main(String[] args) {
        DayTimeServer dayTimeServer = new DayTimeServer();
        dayTimeServer.start();
    }//end main()

    public void start(){
        //线程池
        ExecutorService pool = Executors.newFixedThreadPool(50);
        //服务器Socket
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(13);
            while(true){
                //获取请求信息Socket
                Socket connection = serverSocket.accept();
                Callable<Void> task = new DayTimeTask(connection);
                pool.submit(task);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                if(serverSocket != null) {serverSocket.close();}
            } catch (IOException e) {}
        }
    }//end test()
}

服务器用到的一个线程类

 public class DayTimeTask implements Callable<Void> {

    private Socket socket;

    public DayTimeTask (Socket socket) {
        this.socket = socket;
    }//end DayTimeTask()

    @Override
    public Void call() {
        try {
            Writer writer = new OutputStreamWriter(socket.getOutputStream(),"ASCII");
            Date now = new Date();
            writer.write(now.toString()+"\r\n");
            writer.flush();
        } catch(IOException e) {
            System.err.println(e);
        } finally {
            try {
                socket.close();
            } catch (IOException e) {
            }
        }
        return null;
    }//end call()
}
sunfeilong1993
sunfeilong1993 回复qq_18337481: 不好意思,前几天家里面有事儿,回家了,没有网络。如果还有问题可以联系我 qq:1498282352。
接近 5 年之前 回复
qq_18337481
qq_18337481 你好,可否留个邮箱 我把代码给你看一下,UDP没事的,我换成TCP不知道哪个地方出问题了,可能是包没封装好,或者读出来的格式不对
接近 5 年之前 回复
qq_18337481
qq_18337481 你好,可否留个邮箱 我把代码给你看一下,UDP没事的,我换成TCP不知道哪个地方出问题了,可能是包没封装好,或者读出来的格式不对
接近 5 年之前 回复

给你个例子你参考一下吧


 Server.java: 

import java.io.*;
import java.net.*; 
public class Server{       
    publicstatic void main(String[] args){             
        try{
            ServerSocket s = newServerSocket(9000);
            while (true) {
                Socket incoming =s.accept();
                try{
                    FileInputStreamfstream = new FileInputStream("Server.java"); //假设输入文件为Server.java
                    DataInputStream in =new DataInputStream(fstream);
                    BufferedReaderbr = new BufferedReader(new InputStreamReader(in));
                    OutputStreamostream = incoming.getOutputStream();
                    PrintWriterout = new PrintWriter(ostream, true);
                    String strLine;
                    while ((strLine =br.readLine()) != null) {
                        out.println(strLine);
                    }
                    in.close();
                } finally {
                    incoming.close();
                }
            } 
        }catch (Exception e){ 
            e.printStackTrace();
        }
    }
}

客户端Client.java: 

import java.io.*;
import java.net.*;
import java.util.*; 
public class Client{       
    publicstatic void main(String[] args){
        try {
            Sockets = new Socket("localhost", 9000);
            try {
                InputStreaminStream = s.getInputStream();
                Scannerin = new Scanner(inStream);
                PrintWriter out = newPrintWriter("test.txt");//假设输出文件为test.txt
                while(in.hasNextLine()){
                    Stringline = in.nextLine();
                    System.out.println(line);
                    out.println(line);
                }
                out.close();
            } finally {
                s.close();
            } 
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

你代码贴不不全,不过JAVA的socket通信网上有很多例子的,耐心看懂就ok了 没什么难的

你具体有什么问题呢?

你代码不全,好像是定义的变量是局部变量。到其他函数,就没有用了。
参照“PB人生”

去看下我的博客,有个nio实现通信

问题好多。你这个还会粘包

问题好多。你这个还会粘包

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
netty客户端与服务端连接后的通信

最近做的项目学习netty,时间紧来不及学,希望请教大家一些问题, 1.netty的客户端与服务端建立长连接后,客户端如何与服务端通信?要随心所欲发送自定义的消息? 2.netty的自定义编码器,解码器,希望也能得到帮助, 3.第一个问题为主要问题。 数据包结构: 包头:2字节 0ddd 0fff。 消息体:全部为文本(ASCII码),汉字是GB2312编码。 包尾:2字节 0xxx 0aaa。 最后,先感谢每一位浏览解答的朋友,我会多多赠送C币给那些乐于帮助的人。 补充一些: 我是客户端,需要与服务端长连接;接通后需要发送登陆消息数据包; 每30秒发送一条链路数据 这些我熬夜两天,时间太紧张,希望大家不吝指教。

java socket客户端一直监听服务端返回数据

连接服务端之后,一直要监听服务端的加载信息,当检测到特定格式的数据,干什么事。目前是用readLine!=null循环读取数据的,关闭是用ajax发一条命令给服务端,当检测到这条命令时,退出循环读取,但是这个方法是阻塞的,及不方便,如发送心跳包,有什么更好的方法实现吗

客户端和服务端通过建立socket通信,协议是tcp/ip

有一个问题咨询:一个客户端和一个服务端通过tcp/ip连接(之间建立socket通信),在不断网的情况下,服务端关闭,客户端报警,重新开启服务器,客户端能够重新连接上服务端,但是如果拔掉网线,客户端就连接不上服务端了,但从服务端发送过来的数据还是可以读到,可是从客户端发送的数据不能到达服务端,这是为什么???

android 客户端与WEB服务端通信问题

okhttp android服务端与客户端的使用问题 我想要一个通过okhttp 实现,android客户端向WEB服务端发送JSON数据,WEB服务端获取JSON数据并解析,并且可以回传数据给客户端,客户端获取JSON数据后并解析。 有没有好心人帮下忙。我需要服务端和客户端的代码,最好是能把项目贴出来。 弄了好久弄不出来,求求大家了。 ![图片说明](https://img-ask.csdn.net/upload/201903/16/1552735397_666331.jpg)

java客户端 c#服务端(同一台电脑)进行socket通讯 客户端发送文本消息到服务端

socket连接部分可以省略 只要客户端的发送数据部分和服务端的接收数据部分 我主要不知道java和C#的字符集以及该用什么方法比较好

java小程序,模拟客户端和服务端通信的,编译通过,运行时没有任何输出,求教

客户端代码: import java.io.*; import java.net.*; public class ClientTalk implements Runnable { Socket s; DataOutputStream dos; DataInputStream dis; InputStreamReader isr; BufferedReader br; public void run() { try { String string2 = dis.readUTF(); while(string2.equalsIgnoreCase("exit") != true) { System.out.println("server : " + string2); string2 = dis.readUTF(); } dis.close(); }catch (Exception e) { } } public static void main(String []args) { try { Socket s = new Socket("127.0.0.1",8888); DataOutputStream dos = new DataOutputStream(s.getOutputStream()); DataInputStream dis = new DataInputStream(s.getInputStream()); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); Runnable myRunnable = new ClientTalk(); Thread thread = new Thread(myRunnable); thread.start(); String string = br.readLine(); while(string.equalsIgnoreCase("exit") != true) { dos.writeUTF(string); string = br.readLine(); } dos.close(); }catch (Exception e) { e.printStackTrace(); } } } 服务端代码: import java.io.*; import java.net.*; public class ServerTalk implements Runnable { ServerSocket ss; Socket s; DataOutputStream dos; DataInputStream dis; InputStreamReader isr; BufferedReader br; public void run() { try { String string2 = dis.readUTF(); while(string2.equalsIgnoreCase("exit") != true) { System.out.println("client : " + string2); string2 = dis.readUTF(); } dis.close(); }catch (Exception e) { } } public static void main(String []args) { try { ServerSocket ss = new ServerSocket(8888); Socket s = ss.accept(); DataOutputStream dos = new DataOutputStream(s.getOutputStream()); DataInputStream dis = new DataInputStream(s.getInputStream()); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); Runnable myRunnable = new ServerTalk(); Thread thread = new Thread(myRunnable); thread.start(); String string = br.readLine(); while(string.equalsIgnoreCase("exit") != true) { dos.writeUTF(string); string = br.readLine(); } dos.close(); }catch (Exception e) { e.printStackTrace(); } } } 编译通过了,分别在两个命令提示符中运行客户端和服务端,在命令行中输入信息后没有任何的输出。请问这是为什么?

java socket通讯 服务端如何主动给指定的客户端发送消息?

java socket通讯 服务端如何主动给指定的客户端发送消息?

Java中的Socket服务中如何实现客户端和服务端多次通讯

比如,服务器给客户端发一个信息。然后服务端根据客户端发送的信息判断,再回复一个信息,就是多次读和写的问题

WebSocket客户端与Java的Socket服务器通信

客户端使用websocket,服务器使用Java Socket。客户端经过new webSocket(utl)之后,服务器端可以收到请求头,但是客户端的webSocket.readyState一直是0,没有连接成功,这个是因为什么呢?是不是因为服务器端不可以用Java Socket

TCP传输消息客户端和服务端

需要客户端和服务端,我用安卓APP发送消息到服务器端,然后客户端接受消息就控制单片机上面的灯泡..一直找不到

微信小程序客户端+java服务端. 只能使用websocket进行通信吗?

微信小程序客户端+java服务端. 只能使用websocket进行通信吗? 还有没有其他方式方法?

使用socket通信服务端如何处理客户端请求

场景如下: 一个服务端,一个客户端通过socket连接服务端,假如客户端要请求服务端做一件事(如调用服务端A类的a方法), 因为socket传输的是字符串,所以我现在的做法是让客户端传一个标识符a到服务端,然后服务端 通过判断传过来的是a则调用A类的a方法, 如果我要执行A类的b方法,则传b过去再判断 我想问的是有没有更好的解决方案,或现成的框架可用

模拟客户端和服务端通信的的java小程序,但运行时显示ConnectException,求教

服务端程序: import java.net.*; import java.io.*; public class TestServer { public static void main( String []args) { try { ServerSocket ss = new ServerSocket(7777); while (true){ Socket s = ss.accept(); OutputStream os = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); dos.writeUTF("hello " + s.getInetAddress() + s.getPort() + "byebye"); dos.flush(); dos.close(); s.close(); } } catch (Exception e) { e.printStackTrace(); } } } 客户端程序: import java.net.*; import java.io.*; public class TestClient { public static void main(String []args) { try { Socket s = new Socket("127.0.0.1",7777); DataInputStream dis = new DataInputStream(s.getInputStream()); System.out.println(dis.readUTF()); dis.close(); s.close(); }catch (Exception e) { e.printStackTrace(); } } } 两个程序运行在不同的命令行窗口上,但运行客户端程序的窗口显示java.net.ConnectException.这是为什么?

android客户端与服务端交互数据问题

下面是我的LoginActivity package textview.exam; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import org.apache.http.client.HttpClient; import org.apache.http.impl.client.DefaultHttpClient; import java.util.HashMap; import java.util.Map; public class LoginActivity extends Activity { Button okbutton; EditText id; EditText pass; String uname; HttpClient httpClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); final ActionBar actionBar = getActionBar(); actionBar.hide(); httpClient=new DefaultHttpClient(); okbutton=(Button)findViewById(R.id.ok); okbutton.setOnClickListener(loginokListener); id = (EditText)findViewById(R.id.login_id); pass = (EditText)findViewById(R.id.login_password); Button loginback=(Button)findViewById(R.id.backlogin); loginback.setOnClickListener(backloginListener); } View.OnClickListener backloginListener=new View.OnClickListener() { @Override public void onClick(View v) { Intent in = getIntent(); in.putExtra( "result","欢迎登录家友" ); LoginActivity.this.setResult(1, in); LoginActivity.this.finish(); } }; View.OnClickListener loginokListener=new View.OnClickListener() { @Override public void onClick(View v) { // 执行输入校验 if (validate()) // ① { // 如果登录成功 if (loginPro()) // ② { Log.i("LoginServlet","1561161"); Intent in = getIntent(); in.putExtra( "result", uname ); LoginActivity.this.setResult(0, in); LoginActivity.this.finish(); } else { Toast.makeText(LoginActivity.this, "用户名或密码错误!", Toast.LENGTH_LONG).show(); } } } }; private boolean loginPro() { // 获取用户输入的用户名、密码 String uid = id.getText().toString(); String upass = pass.getText().toString(); try { uname=loginyanzheng(uid, upass); Log.i("服务器的问题"+uname,""); // 如果uname不为空 if (uname!=null) { return true; } } catch (Exception e) { Toast.makeText(this,"服务器响应异常,请稍后重试!", Toast.LENGTH_LONG).show(); e.printStackTrace(); } return false; } // 对用户输入的用户名、密码进行校验 private boolean validate() { String uid = id.getText().toString().trim(); if (uid.equals("")) { Toast.makeText(this,"账号不许为空!", Toast.LENGTH_LONG).show(); return false; } String upass = pass.getText().toString().trim(); if (upass.equals("")) { Toast.makeText(this,"请输入密码!", Toast.LENGTH_LONG).show(); return false; } return true; } // 定义发送请求的方法 private String loginyanzheng(String id, String pass) throws Exception { // 使用Map封装请求参数 Map<String, String> map = new HashMap<>(); map.put("id", id); map.put("pass", pass); Log.i("按时吃饭三coin啊搜in粗偶i","1"); // 定义发送请求的URL String url = HttpUtil.BASE_URL+"LoginServlet"; Log.i("爱上擦擦实现擦拭小","2"); // 发送请求 return HttpUtil.postRequest(url, map); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { Intent in = getIntent(); in.putExtra( "result", "欢迎登录家友"); LoginActivity.this.setResult(1, in); LoginActivity.this.finish(); } return false; } //返回动画 protected void onPause() { super.onPause(); overridePendingTransition(R.anim.in_from_down, R.anim.out_to_up); } } 下面是我HttpUitl package textview.exam; import android.util.Log; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class HttpUtil { // 创建HttpClient对象 public static HttpClient httpClient = new DefaultHttpClient(); public static final String BASE_URL = "http://192.168.1.88:8888/auction/android/"; /** * * @param url 发送请求的URL * @return 服务器响应字符串 * @throws Exception */ public static String getRequest(final String url) throws Exception { FutureTask<String> task = new FutureTask<String>( new Callable<String>() { @Override public String call() throws Exception { // 创建HttpGet对象。 HttpGet get = new HttpGet(url); // 发送GET请求 HttpResponse httpResponse = httpClient.execute(get); // 如果服务器成功地返回响应 if (httpResponse.getStatusLine() .getStatusCode() == 200) { // 获取服务器响应字符串 String result = EntityUtils .toString(httpResponse.getEntity()); return result; } return null; } }); new Thread(task).start(); return task.get(); } /** * @param url 发送请求的URL * @param请求参数 * @return 服务器响应字符串 * @throws Exception */ public static String postRequest(final String url , final Map<String ,String> rawParams)throws Exception { FutureTask<String> task = new FutureTask<String>( new Callable<String>() { @Override public String call() throws Exception { // 创建HttpPost对象。 HttpPost post = new HttpPost(url); // 如果传递参数个数比较多的话可以对传递的参数进行封装 List<NameValuePair> params = new ArrayList<>(); for(String key : rawParams.keySet()) { //封装请求参数 params.add(new BasicNameValuePair(key , rawParams.get(key))); } // 设置请求参数 post.setEntity(new UrlEncodedFormEntity( params, "gbk")); // 发送POST请求 HttpResponse httpResponse = httpClient.execute(post); Log.i("所发生的初三大四","按时打算"); // 如果服务器成功地返回响应 if (httpResponse.getStatusLine() .getStatusCode() == 200) { // 获取服务器响应字符串 String result = EntityUtils .toString(httpResponse.getEntity()); return result; } Log.i("暗示法撒旦吃撒多长","按时打算"); return null; } }); new Thread(task).start(); return task.get(); } } 下面是我服务端Servlet代码 package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.factory.DAOFactory; import vo.Users; public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GBK"); request.setCharacterEncoding("utf-8"); Users users = new Users(); //客户端的账号以及密码 users.setUserid(request.getParameter("id")); users.setUpwd(request.getParameter("pass")); try { if(DAOFactory.getUserDAOInstance().findLogin(users)){ request.getSession().setAttribute("name", users.getUname()); //request.getRequestDispatcher("index.jsp").forward(request, response); //向客户端发送字符串 response.getWriter().println("aisd"); System.out.println("登录成功"); } else{ response.getWriter().print("对不起,用户名、密码不符合!"); System.out.println("对不起,用户名、密码不符合!"); } } catch (Exception e) { e.printStackTrace(); } } }

netty客户端向远程服务端发送数据包

首先,感谢每一位来关注的IT前辈,真诚希望您提出宝贵的意见。 我需要的效果: 1.客户端与服务端长连接TCP通信; 2.客户端通过自定义解码器,解析服务端返回的数据包; 3.客户端在服务端返回连接结果后,发送登录请求数据包,需要对数据自定义编码器解析; 4.因为是长连接,服务不能断,还需要发送登陆请求,以及其他验证消息。很重要。 **数据包结构:** 1.固定包头2字节; 2.消息体,全部为文本(ASCII码),汉字是GB2312编码。 3.固定包尾2字节; 我目前代码: public class TCPClient { public void connect(int port,String host)throws Exception{ //网络事件处理线程组 EventLoopGroup group=new NioEventLoopGroup(); //配置客户端启动类 Bootstrap b=new Bootstrap(); b.group(group).channel(NioSocketChannel.class) .option(ChannelOption.TCP_NODELAY, true)//设置封包 使用一次 大数据的写操作,而不是多次小数据的写操作 .handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast("decoder",new DealMsg()); //设置自定义解码器 ch.pipeline().addLast("encoder",new MsgEncode()); //设置自定义编码器 ch.pipeline().addLast(new TCPClientHandler()); //设置客户端网络IO处理器 } }); //连接服务器 同步等待成功 ChannelFuture f = b.connect(new InetSocketAddress(host,port)); //同步等待客户端通道关闭 // f.channel().closeFuture().sync(); //不关闭会发生阻塞 Channel channel = f.sync().channel(); Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入"); CarData carData = new CarData(); String line = scanner.nextLine(); carData.setBody(line); //发送请求 channel.writeAndFlush(carData); } //释放线程组资源 // group.shutdownGracefully(); } } public class TCPClientHandler extends ChannelHandlerAdapter { @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { System.out.println("通信异常!!"); cause.printStackTrace(); } @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { System.out.println("链接服务端成功!"); } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { System.out.println("退出链接!!"); } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { System.out.println("接受服务器数据:【 "+msg); } @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { ctx.channel().writeAndFlush("数据读取完成!"); } }

java实现tcp的多客户端通信时,每个客户端只能通信一次

每个客户端与服务端只能通信一次,第二次通信就会抛出连接异常,求大神指导

java进阶使用Executors线程池实现服务端和客户端通信。

实现一个客户端和服务端(8001端口)。客户端发送字符串hello.html, 服务端读取hello-server.html的内容并返回。hello-server.html的内容是以下字符串<.html><.body>hello world<./body><./html>。客户端接受到反馈字符串后,保存为文件hello.html。服务端采用Executors线程池实现

C++ http服务器与 java客户端的问题

老大 让我用C++写http服务器,让java的人写客户端 我们在完工后进行对调,不知道为什么 他向我进行url请求时候 我能解析出来进行一系列处理 发送的时候 他那边总是报错 第一次 我先发响应头的信息 类似于 --"HTTP/1.1 200 OK \r\nServer:........ 然后再发html文本的内容 ,他那边接收类型是html类型 但是总是接收不到,显示error,显示出来还是空的。 第二次 我设置纯文本类型 我就直接把字符串发给他结果还是一样的结果,不知道为什么。 求大神们指点一下吧

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

ArrayList源码分析(入门篇)

ArrayList源码分析 前言: 写这篇博客的主要原因是,在我上一次参加千牵科技Java实习生面试时,有被面试官问到ArrayList为什么查找的速度较快,插入和删除的速度较慢?当时我回答得不好,很大的一部分原因是因为我没有阅读过ArrayList源码,虽然最后收到Offer了,但我拒绝了,打算寒假学得再深入些再广泛些,下学期开学后再去投递其他更好的公司。为了更加深入理解ArrayList,也为

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

玩转springboot启动banner定义所得

最近接手了一个springboot项目,不是不熟悉这个框架,启动时打印的信息吸引了我。 这不是我熟悉的常用springboot的打印信息啊,我打开自己的项目: 还真是的,不用默认的感觉也挺高大上的。一时兴起,就去研究了一下源代码,还正是有些收获,稍后我会总结一下。正常情况下做为一个老程序员,是不会对这种小儿科感兴趣的,不就是一个控制台打印嘛。哈哈! 于是出于最初的好奇,研究了项目的源代码。看到

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

立即提问
相关内容推荐