C++ UDP Socket发送速率

我写了一个UDP发送数据的程序,每个包设置为1024B,如果不控制发送,一直循环
sendto,接收端就会丢包,如果一直sendto一次就Sleep(1),发送速度又太慢了,
网络发送速率才65KB/s,求大神有没有什么好的解决办法?

4个回答

发送的包较大,超过接受者缓存导致丢包:包超过mtu size数倍,几个大的udp包可能会超过接收者的缓冲,导致丢包。这种情况可以设置socket接收缓冲。以前遇到过这种问题,把接收缓冲设置成64K试试。
int nRecvBuf=64*1024;//设置为64K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
具体设置代码可以参考下面链接:
http://blog.sina.com.cn/s/blog_a459dcf5010153mp.html
另外,发送速度太快确实不行,你可以用usleep或者nanosleep设置更短的延迟

发送端可以,发送五次左右,再Sleep

/***********
服务端程序
************/
#include <Winsock2.h>
#include <stdio.h>

void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

......
答案就在这里:C++Socket(UDP)
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++ UDP Socket发送速率

我写了一个UDP发送数据的程序,每个包设置为1024B,如果不控制发送,一直循环 sendto,接收端就会丢包,如果一直sendto一次就Sleep(1),发送速度又太慢了, 网络发送速率才65KB/s,求大神有没有什么好的解决办法?

C语言UDP SOCKET编程求助

本人初入计算机网络,最近在编写一个简单的UDP模型,主要功能是1.Server先开启监听 2.Client用sendto发送一条信息 3.Server用recvfrom接收 4.再用sendto回复 5.Client用recvfrom接收 参考了一些例子,但是从第四步开始总出错,ERRNO为97(#define EAFNOSUPPORT 97 /* Address family not supported by protocol */)在网上搜索无果,希望有经验的朋友们帮助一下我,十分谢谢!!! 我用C语言在UBUNTU18.10下实现。 以下是代码及运行结果: ``` UDPServer.c #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #define PORT 8004 //远端地址端口号 void main(void) { int serverSocket,peerlen,buflen; char buf[200]; struct sockaddr_in local_addr,addr_from; if(-1==(serverSocket=socket(AF_INET,SOCK_DGRAM,0))) puts("socket开启失败"); else puts("socket开启成功"); bzero(&local_addr, sizeof(local_addr));//清空字节 local_addr.sin_family = AF_INET; local_addr.sin_port = htons(PORT); local_addr.sin_addr.s_addr =INADDR_ANY;//s_addr到底是个什么类型? //inet_addr是一个计算机函数,功能是将一个点分十进制的IP //转换成一个长整数型数(u_long类型)等同于inet_addr()。 if(bind(serverSocket,(struct sockaddr*)&local_addr, sizeof(local_addr))==-1) printf("%s\n","绑定失败"); else printf("%s\n","绑定成功"); if(-1==(buflen=recvfrom(serverSocket,buf,strlen(buf),0,(struct sockaddr *)&addr_from,&peerlen))) puts("接受失败\n"); else puts("接受成功\n"); puts(buf); if(-1==(int)sendto(serverSocket,"REC",strlen("REC"),0, (struct sockaddr *)&addr_from,sizeof(addr_from))) puts("发送失败\n"); else puts("发送成功\n"); close(serverSocket); printf("%d",errno); } UDPClient.c #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #define PORT 8004 //远端地址端口号 void main(void) { int clientSocket,buflen,addrlen,peerlen; char addr[]="10.14.21.68",buf[200]; struct sockaddr_in remoteaddr,addr_from; if(-1==(clientSocket=socket(AF_INET,SOCK_DGRAM,0))) puts("socket开启失败"); else puts("socket开启成功"); bzero(&remoteaddr, sizeof(remoteaddr));//清空字节 remoteaddr.sin_family = AF_INET; remoteaddr.sin_port = htons(PORT); remoteaddr.sin_addr.s_addr =inet_addr(addr); if(-1==(sendto(clientSocket,"HI",strlen("HI"),0, (struct sockaddr *)&remoteaddr,addrlen=sizeof(remoteaddr)))) puts("发送失败\n"); else puts("发送成功\n"); if(-1==(buflen=recvfrom(clientSocket,buf,sizeof(buf),0, (struct sockaddr *)&remoteaddr,&addrlen))) puts("接受失败\n"); else puts("接受成功\n"); puts(buf); close(clientSocket); } 运行结果 Server: socket开启成功 绑定成功 接受成功 HI3Z� 发送失败 97 Client: socket开启成功 发送成功 ```

win7 raw socket 发送接收udp有时成功有时失败

在win7系统,使用raw socket分别编写发送和接收udp的程序。一开始可以成功,后来莫名其妙就接收不到。然后试过一次相同的代码可以接收成功,但过几个小时之后有接收不了。 以下是做的一些测试:(源地址和目的地址都是127.0.0.1) ①使用raw socket发送,wireshark可以捕获到,且数据、端口正确。但是raw socket编写的接收端和java编写的接收端接收不到 ②使用java的发送端发送,raw socket接收端可以接收 据测试应该是发送端问题,可是之前成功过,同一份代码却无端失败。所以猜测会不会是系统或其他的问题。

udp socket通讯问题!

在使用udp通讯的时候,在网上找寻的资料几乎全是使用两个udpclient来用于一个专门接收的socket,另一个用来发送。为什么不直接使用一个进行发送和接收,这又不会相互影响,而且还省一些消耗。有大神能帮我解答疑惑么!?

android中UDP socket通信的问题

我使用两个线程,一个用来发送 数据,一个用来接收数据,先开启接收数据线程,接收到数据之后然后回应给对方,但是发送一直停在SocketAddess s=pacakge.getSocketAddess这一步,pacakge是接收到的包.接收线程是这样的: while(true){ socket.receive(packge); }接收到包之后我开启发送线程就卡在上面 那步了,是不是 socket在处于阻塞状态时不能发送数据包啊?

socket UDP发送数据返回10013

win7系统,已经是Administrator用户,单播使用的28900端口,并没有其他进程占用端口。在使用sendFrameData函数之前,用了一次广播sendFrameBoradCast。之后在使用单播时,就出现10013错误码,请各位大大帮我解答,谢谢了!!! int IBUdpDev::sendFrameBoradCast(IBFrame &mFrame) { int errCode = -1;; DWORD sendLen = 0; DWORD dataLen = 0; errCode = WSAStartup(MAKEWORD(2, 2), &wasData); if (errCode != 0) { return -1; } SOCKET bcSocket = socket(AF_INET, SOCK_DGRAM, 0); if (bcSocket == INVALID_SOCKET) { errCode = WSAGetLastError(); closesocket(bcSocket); printf("%s: socket eror errCode:%d\n", __func__, errCode); return errCode; } //3.设置该套接字为广播类型, bool opt = true; setsockopt(bcSocket, SOL_SOCKET, SO_BROADCAST, reinterpret_cast<char FAR *>(&opt), sizeof(opt)); //4.设置发往的地址 sockaddr_in addrbc; //发往的地址 memset(&addrbc, 0, sizeof(addrbc)); addrbc.sin_family = AF_INET; //地址类型为internetwork addrbc.sin_addr.s_addr = INADDR_BROADCAST; //设置ip为广播地址 addrbc.sin_port = htons(BROADCAST_PORT); //端口号为 int nlen = sizeof(addrbc); sendLen = mFrame.getFrameLen(); dataLen = sendLen; BYTE *data = mFrame.getFrameBuffer(); if (!data) { closesocket(bcSocket); printf("%s: !data errCode:%d\n", __func__, errCode); return errCode; } while (dataLen > 1024) { if (sendto(bcSocket, (char *)&data[sendLen - dataLen], 1024, 0, reinterpret_cast<sockaddr*>(&addrbc), nlen) == SOCKET_ERROR) { errCode = WSAGetLastError(); closesocket(bcSocket); printf("%s: sendto 11 errCode:%d\n", __func__, errCode); return errCode; } dataLen = dataLen - 1024; } if (dataLen > 0) { if (sendto(bcSocket, (char *)&data[sendLen - dataLen], dataLen, 0, reinterpret_cast<sockaddr*>(&addrbc), nlen) == SOCKET_ERROR) { errCode = WSAGetLastError(); closesocket(bcSocket); printf("%s: sendto 22 errCode:%d\n", __func__, errCode); return errCode; } dataLen = 0; } closesocket(bcSocket); WSACleanup(); return 0; } int IBUdpDev::sendFrameData(IBFrame &mFrame, const char *mIp, int mPort) { int errCode = -1;; DWORD sendLen = 0; DWORD dataLen = 0; errCode = WSAStartup(MAKEWORD(2, 2), &wasData); if (errCode != 0) { return errCode; } SOCKET sendSocket= socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sendSocket == INVALID_SOCKET){ errCode = WSAGetLastError(); closesocket(sendSocket); return errCode; } //4.设置发往的地址 sockaddr_in addrsend; //发往的地址 memset(&addrsend, 0, sizeof(addrsend)); addrsend.sin_family = AF_INET; //地址类型为internetwork addrsend.sin_addr.s_addr = inet_addr(mIp); //设置ip为 addrsend.sin_port = htons(mPort); //端口号为 int nlen = sizeof(addrsend); sendLen = mFrame.getFrameLen(); dataLen = sendLen; BYTE *data = mFrame.getFrameBuffer(); if (!data) { closesocket(sendSocket); printf("%s: !data errCode:%d\n", __func__, errCode); return errCode; } if (dataLen > 0) { if (sendto(sendSocket, (char *)&data[sendLen - dataLen], dataLen, 0, reinterpret_cast<sockaddr*>(&addrsend), nlen) == SOCKET_ERROR) { errCode = WSAGetLastError(); closesocket(sendSocket); printf("%s: sendto 22 errCode:%d\n", __func__, errCode); return errCode; } dataLen = 0; } closesocket(sendSocket); WSACleanup(); return 0; }

C语言socket建立的简单文件传输问题

# 客户端发送文件 #include<stdio.h> #include<sys/stat.h> #include<sys/socket.h> #include<arpa/inet.h> #include<unistd.h> #include<fcntl.h> #include<string.h> int main(int argc,char **argv) { ssize_t i=1; char buf[512]; int fp; int ret; int socket_client; struct sockaddr_in addr_in; socket_client = socket(AF_INET,SOCK_STREAM,0);//创建套接字 if(socket_client<0){ perror("socket err"); return -1; } addr_in.sin_family = AF_INET; addr_in.sin_port = htons(9001); addr_in.sin_addr.s_addr = inet_addr("192.168.1.77"); ret = connect(socket_client,(struct sockaddr *)&addr_in,sizeof(addr_in));//链接 if(ret<0){ perror("connect err"); return -2; } scanf("%s",buf);//写入文件名 ret = send(socket_client,&buf,sizeof(buf),0);//发送文件名 if(ret<0){ perror("send err"); return -11; } fp = open(buf,O_RDONLY);//打开要发送的文件 if(fp<0){ fprintf(stderr,"open err\n"); return -1; } while(1){ if(i==0){ break; } memset(buf,0,sizeof(buf));//空间清0 i = read(fp,buf,sizeof(buf));//读文件到buf if(i<0){ perror("read err"); return -7; }else if(i==0){ break; } printf("%s\n",buf);//打印一遍用于观察 ret = send(socket_client,buf,sizeof(buf),0);//发送读取到的内容 if(ret<0){ perror("send err"); return -8; } printf("%d\n",ret);//打印发送的大小 sleep(1); } close(socket_client); return 0; } ## 服务器接收文件 #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/stat.h> #include<arpa/inet.h> #include<unistd.h> #include<string.h> #include<stdlib.h> #include<fcntl.h> int main(int aegc,char **argv) { char buf[512]; ssize_t i; int fp; int ret; int socket_sever; int socket_client; struct sockaddr_in addr_in; socket_sever = socket(AF_INET,SOCK_STREAM,0);//定义socket套接字 if(socket_sever<0){ perror("socket err"); return -1; } addr_in.sin_family = AF_INET; addr_in.sin_port = htons(9001); addr_in.sin_addr.s_addr = inet_addr("192.168.1.77"); ret = bind(socket_sever,(struct sockaddr *)&addr_in,sizeof(addr_in));//绑定 if(ret<0){ perror("bind err"); return -2; } ret = listen(socket_sever,5);//监听 if(ret<0){ perror("listen err"); return -3; } socket_client = accept(socket_sever,NULL,NULL);//建立链接 if(socket_client<0){ perror("accept err"); return -4; } ret = recv(socket_client,&buf,sizeof(buf),0);//接收文件明 if(ret<0){ perror("recv err"); return -6; } fp = open(buf,O_WRONLY | O_CREAT | O_APPEND,0644);//创建并打开文件 if(fp<0){ fprintf(stderr,"open err"); return -1; } while(1){ if(i==0){ break; } memset(buf,0,sizeof(buf));//接收空间清0 ret = recv(socket_client,buf,sizeof(buf),0);//接收 if(ret<0){ perror("recv err"); return -6; }else if(ret==0){ break; } printf("%s\n",buf);//打印一遍用于观察 i = write(fp,buf,sizeof(buf));//写入打开的文件 if(i<0){ perror("write err"); return -13; }else if(i==0){ break;} sleep(1); } close(socket_sever); close(socket_client); } 问题出现在写入完成后末尾出现连续的^@^@^@^@^@^@^@^@符号,占用空间

C#里用socket收发udp数据的问题

一:用udp收发数据,为什么接收方要发一帧数之后才能接收到数据? private Socket SetupUdpSocketObject(string localIp, string localPort, string remoteIp, string remotePort) { //得到本机IP,设置TCP端口号 var ip = new IPEndPoint(IPAddress.Parse(localIp), int.Parse(localPort)); var ret = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //绑定网络地址 ret.Bind(ip); var sender = new IPEndPoint(IPAddress.Any, 0); _remote = sender; EndPoint point = new IPEndPoint(IPAddress.Parse(remoteIp), int.Parse(remotePort)); ret.SendTo(new byte[] { 1, 2, 3 }, point); //发送一帧数据才能收到数据 return ret; } private void ProcessUdpData() { while (true) { var data = new byte[DataMaximumLength]; //发送接受信息 var recv = _udpSocket.ReceiveFrom(data, ref _remote); _recorder.RecordBytes(data, 0, recv); //记录数据 var cell = new AzimuthCell(data); NotifyAllObservers(cell); //发送通知 } } 如果不写ret.SendTo(new byte[] { 1, 2, 3 }, point); 就收不到数据。 二:socket接收和发送数据我都是用线程发送,一个while(true)循环,反复sendto发缓存区,反复recvfrom,但是这样两个线程的占用率很高,有没有其他办法收发数据,除了beginsendto和beginrecvfrom

Linux socket udp发送数据返回socket错误22

linux下用c网络编程用sendto发送数据,总返回socket error代号22是什么错误呢?

Linux平台C语言关于UDP广播的问题。

首先,我写了一个非常简单的UDP服务端,我看了看,是IP地址写的问题,(下面详细代码), 当我有inet_addr("192.168.152.128")的时候,是不能成功收到信息的,但我用 htonl(INADDR_ANY)的时候,却是可以收到信息,为什么?(我的客户端是用广播地址:192.168.152.255) ``` #include"myhead.h" char rbuf[50]; char wbuf[50]; int main() { int udp,size,len,opt=1; struct sockaddr_in laddr; struct sockaddr_in raddr; laddr.sin_family = AF_INET; laddr.sin_port = htons(8888); laddr.sin_addr.s_addr = inet_addr("192.168.152.128");//疑惑在这里 size = sizeof(struct sockaddr_in); udp = socket(AF_INET,SOCK_DGRAM,0); setsockopt(udp,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof opt); bind(udp,(struct sockaddr*)&laddr,size); len=sizeof(struct sockaddr); while(1) { recvfrom(udp,rbuf,50,0,(struct sockaddr*)&raddr,&len); printf("%s\n",rbuf); bzero(rbuf,50); } } ```

关于在Linux上使用套接字Socket发送一个较大UDP包的问题?

本人是菜鸟,参考了https://blog.csdn.net/tennysonsky/article/details/44925057 在Linux上编写了一个套接字发送UDP包的代码,目的是使用无线网卡,把一个较大的字符串数组写入UDP负载Payload中发送,但是在终端运行时提示sendto: Message too long。但是我所发送的数组长度是远小于64kb的,为什么还会出现数据太长的提示呢?要如何发送呢? 经过测试发现发送数组长度接近1500时就会提示sendto: Message too long,希望各路大神帮帮忙。如我想发送一个数组char send_msg[14800]={1,2,3......,14799}。要怎么编写代码呢?

在win7中使用socket UDP 编程时,数据发送不出来

各位大哥大姐,我在使用 socket 做 UDP编程时,遇到一个非常奇怪的问题 1,在win7下使用 sendto 函数发送数据时,sendto函数的返回值正常,但是有时候没有数据发送出来(抓不到数据包),但是当拔掉网线,重插一下就有数据了,但是待会儿就又没有了(这个不是网线接触不好,因为电脑上网一直正常) 2,同样程序,在XP系统里没有问题 求高手指点,感激不尽!!!!!

udp获取发送端的发送端口

udp进行数据接收,怎样获取发送方的发送端口,用GetPeerName()函数不行啊!谢谢大家!

qt udp通信接收速度。

有人测试过qt下 udp 最大接收速度能达到多少吗?需要保证不丢包。

boost udp::socket(io_service,endpoint)偶尔发生segment fault

在做多线程开发时,接收udp广播包,定义udp socket如下: ``` try { hdl_udp_socket_ = new boost::asio::ip::udp::socket(hdl_socket_service_, boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(), hdl_udp_endpoint_.port())); hdl_socket_service_.run(); } catch (const std::exception &e) { ``` 在触发这段程序运行时,会偶尔出现segment fault的问题,程序崩掉,并不是每次想要执行程序时都会发生。经过输出打印,确定是在 ``` hdl_udp_socket_ = new boost::asio::ip::udp::socket(hdl_socket_service_, boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(), hdl_udp_endpoint_.port())); hdl_socket_service_.run(); ``` 该处发生,但可以肯定的是hdl_udp_endpoint_.port()一定存在,hdl_socket_service在.h文件中定义(boost::asio::io_service hdl_socket_service_;),但没有初始化(不知道怎么初始化) 此外在接收广播包的函数中也会出现free(): invaild pointer的错误: ``` length = hdl_udp_socket_->receive_from (boost::asio::buffer (data, 2000), sender_endpoint); ``` 经过输出打印 可以确定该问题出在receive_from函数中,经查找boost中该函数,首先需要udp_socket.get_io_service()获得该udp socket的io_service,所以怀疑是否都是io_service的问题。 解决方法:找到为什么会io_service对象不能被找到,或者有方法检测io_service是否存在

udp传输中断不能继续的问题

环境VS2017,Qt5.9.1,在VS中编程socket程序,用Qt进行界面设计,在使用udp进行文件传输时,传输到一定大小后udp失去作用,一直在超时重传,对方也不接受重传的包,就是readyRead函数没有响应。这时为什么呢?是环境原因吗?我有一个同学通过降低Qt版本编译成功了,有些人就是重建udpsocket,但是传输速率很慢很慢。有谁知道吗?在此求教了!!!

.Net UDP Socket 通讯时 如何实现客户端连续发信息或服务端连续发信息

本人是新手,写了 C# 的UDP SOcket 通讯程序,目前只实现了 客户端向服务端发送消息,服务端收到消息后回复消息,而 不能实现客户端连续向服务端发消息,服务端连续回复消息。 在查找资料说要使用多线程,但是我不懂,请求高手指导。代码如下: Client: private void btSendMsg_Click(object sender, EventArgs e) { byte[] data = new byte[1024]; string input; //设置服务IP,设置端口号 IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(txtServerIP.Text.ToString()), 8001); //定义网络类型,数据连接类型和网络协议UDP Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); string welcome = "Hello! "; data = Encoding.ASCII.GetBytes(welcome); server.SendTo(data, data.Length, SocketFlags.None, ipep); IPEndPoint senderIP = new IPEndPoint(IPAddress.Any, 0); EndPoint Remote = (EndPoint)senderIP; data = new byte[1024]; int recv = server.ReceiveFrom(data, ref Remote); input = txtSend.Text; server.SendTo(Encoding.ASCII.GetBytes(input), Remote); data = new byte[1024]; recv = server.ReceiveFrom(data, ref Remote); txtRec.Text = Encoding.ASCII.GetString(data, 0, recv); server.Close(); } Server: private void btRec_Click(object sender, EventArgs e) { int recv; byte[] data = new byte[1024]; //得到本机IP,设置端口号 IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 8001); Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); newsock.Bind(ipep); //得到客户机IP IPEndPoint senderIP = new IPEndPoint(IPAddress.Any, 0); EndPoint Remote = (EndPoint)(senderIP); recv = newsock.ReceiveFrom(data, ref Remote); string welcome = "Welcome ! "; //字符串与字节数组相互转换 data = Encoding.ASCII.GetBytes(welcome); string strReturn; data1 = Encoding.ASCII.GetBytes(strReturn); //发送信息 newsock.SendTo(data, data.Length, SocketFlags.None, Remote); data = new byte[2048]; //发送接受信息 recv = newsock.ReceiveFrom(data, ref Remote); txtSerRev.Text = (Encoding.ASCII.GetString(data, 0, recv)); newsock.SendTo(data, data.Length, SocketFlags.None, Remote); }

socket5 udp 客户端.....

本人编写了一个socket5 udp版的客户端, 首先用tcp与服务器校验用户密码后用udp组装包头发送, 过几十秒tcp连接会被断开,这是为什么????

QT多网卡下,udpsocket如何绑定指定某个网卡的某个IP?

udpSocket->bind(“192.169.0.1”, 7755); 已经IP绑定某个PORT了,组播过来的数据仍然报这个错误,求大神指导![图片说明](https://img-ask.csdn.net/upload/201711/23/1511431193_654630.png)

关于socket udp 数据包传输时间的问题

两台计算机型号和千兆以太网卡全部相同,其中一台计算机作为服务器端,另一台作为客户端,两者通过socket建立连接(udp连接),客户端单次向服务器端发送一百万数据包(每个数据包大小为1024字节),服务器端只接收不回应,则共耗时15秒左右,但若设置服务器端将每次接收到的数据包再原路传输回去,客户端发送一个数据包,再接收到一个数据包,则客户端发送一百万包的时间为650秒,请问两者的时间为什么相差这么大?

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

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

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

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

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

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

和黑客斗争的 6 天!

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

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

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

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

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

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

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

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

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

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

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

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

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

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

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

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

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

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

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

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中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多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

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

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

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

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

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

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

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

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

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

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

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐