请问SOCKET程序如何才能在亚马逊云主机上使用 30C

情况是这样的,在亚马逊申请了云主机,
也做了基本的设置
图片说明

也设置好了弹性IP,
图片说明

设置了安全组
图片说明
图片说明

听说VPC也要设置些什么,因为这里不知需要设置些什么,就随便弄了下
图片说明


然后下面是我的SOCKET程序的部分主要片段
服务端:


            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 10000);// 
            // 创建套接字
            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // 绑定网络端点IPEndPoint
            serverSocket.Bind(ipep);//
            // 监听,参数为请求队列中的最大请求数
            serverSocket.Listen(10);

            while (true)
            {
                try
                {
                    // 接收客户的连接请求。   
                    clientSocket = serverSocket.Accept();
                    MessageBox.Show(clientSocket.RemoteEndPoint.ToString());
                    clientThread = new Thread(new ThreadStart(ReceiveData));
                    clientThread.Start();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("listening Error: " + ex.Message);
                }
            }

客户端:

 // 通过主机IP地址和端口号,形成到服务的连接点
            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(/*"183.31.134.37"*/"52.24.87.83"), 10000);
            // 创建套接字
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            //
            try
            {
                clientSocket.Connect(ipep);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("connect error: " + ex.Message);
                return;
            }

            while (true)
            {
                // 接收服务器信息
                int bufLen = 0;
                try
                {
                    // 获取接收到的数据长度
                    bufLen = clientSocket.Available;

                    clientSocket.Receive(data, 0, bufLen, SocketFlags.None);
                    if (bufLen == 0)
                    {
                        continue;
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("Receive Error:" + ex.Message);
                    return;
                }

            }

当把自己的服务端程序 放到亚马逊主机运行后,在其它电脑开启客户端进行连接,是连接不上的,请问下这是什么原因?
找了不少资料,也作了不少云主机设置的改变,但还是连接不上,虽然IP可以在命令行PING通,但程序就是连不上。
但上面的设置全部都是云主机启动之后在后台设置的,而且在部分地方也不知设置得到底对不对。

麻烦各位能支支招,先谢谢了。

1个回答

一个是检查你的程序所在的机器IP跟你PING的IP是同一个机器
另一个就是亚马逊的安全策略,是否允许对应端口访问。
这个问题还可以给亚马逊提ticket,让他们协助网络诊断

yxlovemoney
yxlovemoney 上面的安全组设置了端口范围了啊;PING的IP就是我在云主机分配的弹性IP啊,不会变了的。
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java的socket服务端程序传到Linux上编译运行成功,但是监听不到客户端的连接
(很急!!!没有财务值了,能帮我解决问题微信红包答谢!最好微信或者QQ交流 qq:543527507)我用了最简单的C/S程序TCP连接,在阿里云租了一个服务器,得到了一个公网IP,也把服务器socket与公网IP绑定,在自己电脑完全没问题,但是把它传到Linux远端服务器上运行,这个ServerSocket.accept()就监听不到我主机的客户端程序的连接,但是我主机的客户端能够连上公网IP的socket,但是服务器就监听不到?两个问题,第一,为什么我主机上能够连接但是服务器那边监听不到?第二,如果我主机连接的socket不是服务器的socket那我主机连接的是什么?
使用VS下空项目编写的socket程序能否与使用Qt编写的界面直接连接到一起?
使用VS下空项目编写的socket程序能否与使用Qt编写的界面直接连接到一起?
JAVA Socket获取主机名的问题
socket.getInetAddress().getHostName(); 这个语句为什么得到的是IP地址? 请问怎样获取客户端的主机名? 环境: RHEL 6.4 JAVA 1.6
Android Socket聊天程序
Android Socket聊天程序 Android 端做为服务器 在局域网情况下 用电脑(TCP调试助手)与 Telnet 进行链接 、 用TCP调试助手链接成功后 过大概10秒就自动断开了 而使用 Telnet 链接就不会断开 求大神指教
通过网页实时查看远程主机特定socket通讯数据实现方法
通过网页实时查看远程主机特定socket通讯数据实现方法,有没有什么思路。 因为我有一GPRS终端设备。我需要通过网页监视设备数据,所以我的思路是,我在我的主机上建立一个TCPservice,客服端通过HTML网页能访问我的主机,主机通过HTML把TCPservice和设备之间的通讯数据打印在HTML上给客户端看,需要什么语言或开发工具来实现这些东西比较方便呢?有其他思路没有呢?谢谢!
安卓 Socket通信,Socket连接不上,程序就在真机崩溃但在模拟器上正常
class ReceiveData extends Thread { int i=1; private void reconnect( ) { Log.i("第"+i+"次连接","reconnect刚开始执行"); try { Log.i("第"+i+"次连接","Socket之前"); Socket s=new Socket("192.168.0.103",40011); Log.i("第"+i+"次连接","Socket之后"); InputStream ins=s.getInputStream(); Log.i("第"+i+"次连接","InputStream之后"); BufferedReader br=new BufferedReader(new InputStreamReader(ins)); String data=null; Log.i("第"+i+"次连接","br之后"); i++; while((data=br.readLine())!=null) { String[] datas=data.split(","); Log.i("第"+i+"次连接","datas之后"); int dianping=Integer.parseInt(datas[0]); int zhiliang=Integer.parseInt(datas[1]); float jueduijiaodu=Float.parseFloat(datas[2]); float xiangduijiaodu=Float.parseFloat(datas[3]); // hcs.refresh(dianping,zhiliang); vcs.refresh(dianping,zhiliang ); disks.refresh(xiangduijiaodu, jueduijiaodu, dianping, zhiliang); cuslinear.refresh(jueduijiaodu, xiangduijiaodu, dianping, zhiliang); } }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("第"+i+"次连接","可能没连接上"); reconnect(); } catch(Exception e) { e.printStackTrace(); } } public void run() { reconnect(); } } 在客户端的一个Activity中,启动以上线程用来接收数据,当IP地址不对时,当然也就连通不了,于是抛出异常,再重新reconnect( ) (应该没有什么问题吧?),但是在真机上反复出现几次 ![CSDN移动问答][1] [1]: http://www.eoeandroid.com/data/attachment/forum/201403/28/141758f958x35x1733zhqp.jpg 后(大约7、8秒钟的时间,而且不会其他那几条的输出,这个我懂,因为socket没建成,于是try语句块中Socket s=new Socket("192.168.0.103",40011)后的语句就不会再执行了),该Activity就会崩溃,返回到上一个Activity,而且貌似说有内存溢出问题 ![CSDN移动问答][1] [1]: http://www.eoeandroid.com/data/attachment/forum/201403/28/141914bmqym1ezqlqwugt1.jpg 而在模拟器上却不会出现这个问题。如果IP地址正确,连通了,能够正常接收数据了,也不会出现这个问题。这到底是怎么回事呢?
大家谁有Fortran程序和其他程序语言socket通信,实现数据交换的例子?
大家谁有Fortran程序和其他程序语言socket通信,实现数据交换的例子?
请问java socket 如何与 nodejs socket 通信
java socket 如何与 nodejs socket 通信,例如nodejs的socket.on()里面的第一个参数是如何识别的?我用的客户端是java写的,服务器端是nodejs写的,现在java通过socket与服务器端通信,如何用java模拟nodejs的socket.emin()方法?
请问一般的windows程序具体是怎样与服务器进行socket交互的?
各位大神看到这个问题可能会觉得很好笑, 因为基于socket的方法实在太多了。 但是问题是一般的示例程序中, 是需服务器先打开相应的ipendpoint终端并处于等待状态, 其代码类似如下(c#): IPAddress clientAddress = IPAddress.Parse("222.222.222.222");//任意的客户端地址 IPEndPoint ipe = new IPEndPoint(clientAddress,2222); Socket socket = new socket(...); socket.bind(ipe); socket.Listen(1); Socket client = socket.Accept(); 当在执行最后一句时,线程将处于等待状态直到客户端连接。 但在实际情况比如聊天程序中,服务端是难以预测到客户端的访问的,也就是说 上面代码中的IPEndPoint并不确定,那又何谈等待客户端连接呢? 那么实际情况中服务器是如何知晓请求客户端的IPEndPoint即其IP地址以及端口号 而由此建立与客户端的双向Socket的呢?
请问eclips中能用socket么?socket怎么用
eclips开发高校无纸化考试系统,如果要联网,请问eclips中能用socket么?socket怎么用
有关于Socket的问题,简单的服务器程序与客户程序之间的通信
问题是这样的,我写了两个简单 的服务器程序,其中一个与一个简单的客户程序可以连续发多次信息,而另一个则不可以,发一次它就会不能继续再发了,程序并没有停止运行,而是服务器收不到它的信息了,求大侠帮忙看下啦~以下为两个服务器程序代码。因为我用的是同一个客户程序测试,所以跟client无关 吧。 //这个是可以连续发送信息的服务器 package Test20140210; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class EchoServer { private int port=8001; private ServerSocket serverSocket; public EchoServer() throws IOException{ serverSocket=new ServerSocket(port); System.out.println("Server Started ."); } public String echo(String msg){ return "echo :" +msg; } private PrintWriter getWriter(Socket socket) throws IOException{ OutputStream socketOut=socket.getOutputStream(); return new PrintWriter(socketOut,true); } private BufferedReader getReader(Socket socket) throws IOException{ InputStream socketIn=socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public void service(){ while (true){ Socket socket=null; try{ socket=serverSocket.accept(); //等待客户连接 System.out.println("New connection accepted "+socket.getInetAddress()+" : "+socket.getPort()); BufferedReader br=getReader(socket); PrintWriter pw=getWriter(socket); String msg=null; while((msg=br.readLine())!=null){ System.out.println("NEW Line : "+msg); //在服务器程序上打印 pw.println(echo("My message : "+msg)); //在客户程序上打印 if(msg.equals("bye")) break; } }catch(IOException e){ e.printStackTrace(); } finally{ try{ if(socket!=null) socket.close(); } catch(IOException e){ e.printStackTrace(); } } } } public static void main(String[] args) throws IOException { new EchoServer().service(); } } //以下这个是不可以连续发的服务器 package Test20140221; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class EchoServer { private int port = 8001; private ServerSocket serverSocket; private ExecutorService executorService; private final int POOL_SIZE=4; public EchoServer() throws IOException{ serverSocket=new ServerSocket(port); executorService=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE); System.out.println("numbers of CPU : "+Runtime.getRuntime().availableProcessors()); System.out.println("Server started."); } public void service(){ while(true){ Socket socket=null; try{ socket=serverSocket.accept(); executorService.execute(new Handler(socket)); }catch(IOException e){ e.printStackTrace(); } } } public static void main(String[] args) throws IOException{ new EchoServer().service(); } class Handler implements Runnable{ private Socket socket; public Handler(Socket socket){ this.socket=socket; } private PrintWriter getWriter(Socket socket) throws IOException{ OutputStream socketOut=socket.getOutputStream(); return new PrintWriter(socketOut); } private BufferedReader getReader(Socket socket) throws IOException{ InputStream socketIn=socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public String echo(String msg){ return "echo : "+msg; } public void run(){ try{ System.out.println("New connection accepted" +socket.getInetAddress()+ " : "+socket.getPort()); BufferedReader br=getReader(socket); PrintWriter pw=getWriter(socket); System.out.println("this is Handler!"); String msg=null ; while((msg=br.readLine())!=null){ System.out.println(msg);; pw.println(echo(msg)); if(msg.equals("bye")) break; } }catch(IOException e ){ e.printStackTrace(); }finally{ try { if(socket!=null) socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
最近学java,在socket 程序的测试时搞不懂,求指点
我最近在学java,刚好学到了socke程序,我按照教程上写了服务端和客户端的程序,但是在进行联合俩个程序进行通信的时候却测试不了了。 服务端代码: package severDemo; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class NetDemo { public static void main(String[] args) throws Exception { ServerSocket sever = new ServerSocket(8888);//在8888端口开启服务 Socket client = null; //定义连接的客户端 System.out.println("等待连接。。。"); client = sever.accept();//实例客户端 OutputStream out = client.getOutputStream() ; PrintStream pout = new PrintStream(out); pout.print("Hello,word!"); //输出内容 //关闭各个流和服务 pout.close(); out.close(); client.close(); sever.close(); } } 下面是客户端: package severDemo; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.Socket; public class NetDemo1 { public static void main(String[] args) throws Exception { Socket client = new Socket("localhost",8888); BufferedReader bdf = new BufferedReader(new InputStreamReader(client.getInputStream())); String str = bdf.readLine(); System.out.println("输出内容为:"+str); client.close(); } } 服务端我在eclipse中运行,客户端在cmd中执行,可结果如下: Exception in thread "main" java.lang.NoClassDefFoundError:NetDemo1<wrong name:severDemo/NetDemo1> 以此百度之:都说是java环境变量设置有问题,可还是我用了众所周知的“Hello word!”的小程序在cmd测试了,完全木有问题啊。纠结了NNN久,还是木有头绪。故来此,求解!!!
socket通信,我的计算机连不上服务器
我在阿里云上面租了一个服务器,然后在我的电脑上能用socket协议与服务器通信吗
内网主机socket连接。。。。。
当通讯的两台主机处于同一局域网或者都处于公网的情况下,其中一台主机的C++ socket代码如下,ip直接填写对方的ip就好了。但是现在两台主机处于不同的局域网中,所以其中一台电脑进行端口映射,映射后的ip地址为180.160.71.130:3389; 如果用这个ip直接替换下面的ip是不行的,那么正确的应该怎样写呢? SOCKADDR_IN local; local.sin_addr.S_un.S_addr = inet_addr("192.168.1.199"); local.sin_family = AF_INET; local.sin_port = htons(27015); if (connect(sockClient, (SOCKADDR*)&local, len) == INVALID_SOCKET) { printf("connect error/n"); Sleep(10080); return 0; }
socket producer scala
spark streaming 中如何使用socket做producer,求这个程序的scala版本
Socket编写的程序服务器客户端通信
Socket编写的程序服务器客户端通信在局域网内正常,客户端可以连接到服务器,如果服务 器与客户端电脑属于异地的话,就会报错,请教大神是什么原因
JAVA中在使用Socket从客户端项服务端传文件时,程序阻塞在获取Socket套接字输入流那一行是为什么?
这样写会阻塞在下面那一行,而调整位置后成功时什么问题,在我的理解中这一行的声明只要出现在使用之前就可以了。望解答,感谢 客户端上传文件程序 ``` Socket socket = new Socket("127.0.0.1", 8888); File file = new File("D:\\1610\\android素材\\bg04.jpg"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); **ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());** //阻塞在这一行?我把这一行放在下面时该程序就运行成功,这之间有什么关系吗?希望大神解答,感谢!!!! System.out.println(file.getName()); oos.writeUTF(file.getName()); oos.writeLong(file.length()); byte[] arr = new byte[1024]; int len; while((len = bis.read(arr)) != -1){ oos.write(arr,0,len); oos.flush(); } // 上面那一行放在该位置 System.out.println("1111"); if(ois.readUTF().equals("下载成功")){ System.out.println("文件上传成功"); ois.close(); oos.close(); bis.close(); socket.close(); } ``` 服务端接受文件代码块 ``` ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服务器已启动..."); while (true) { Socket socket = serverSocket.accept(); ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); //这个位置 String fileName=ois.readUTF(); long extent = ois.readLong(); System.out.println(extent); File file = new File("D:/TestFile"); if (file.isDirectory()) { System.out.println("文件夹已存在"); } else { file.mkdirs(); } BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getAbsolutePath() +"/"+ fileName)); BufferedWriter bw = new BufferedWriter(new FileWriter("down.log",true)); _**ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());**_//或者是我把这一行放在上面位置也能成功 byte[] arr = new byte[1024]; int len; long total = 0; while ((len = ois.read(arr)) != -1) { bos.write(arr, 0, len); total += len; bw.write("当前已下载" + (total * 100) / extent + "%" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); bw.newLine(); bw.flush(); if (total == extent) { oos.writeUTF("下载成功"); break; } } System.out.println("下载成功"); oos.close(); bw.close(); bos.close(); ois.close(); socket.close(); } ```
ubnutu socket实现不同主机通信 客户端链接服务端拒绝链接
客户端 ``` #include<stdlib.h> #include<sys/types.h> #include<stdio.h> #include<sys/socket.h> #include<string.h> #include<arpa/inet.h> #include<unistd.h> #include<errno.h> #include<pthread.h> void sent(int *qian){ int q=*qian; char buff[1024]; int len; while(1){ bzero(buff,1025); fgets(buff,1024,stdin); // len=send(q,buff,30,0); if(len<0){ perror("send "); break; } if(!strncasecmp(buff,"quit",4)){ printf("I will quit!\n"); break; } } close(q); pthread_exit(NULL); } int main(){ int lian,len; char buff[30]; struct sockaddr_in dest; if((lian=socket(AF_INET,SOCK_STREAM,0))<0){ printf("socket error!\n"); return -1; } printf("socket created\n"); bzero(&dest,sizeof(dest)); dest.sin_family=AF_INET; dest.sin_port=htons(8088); inet_aton(("127.0.0.1"),(struct in_addr*)&dest.sin_addr.s_addr); if(connect(lian,(struct sockaddr *)&dest,sizeof(dest))==-1){ perror("connect "); exit(1); } printf("sercer connect\n"); pthread_t sended; pthread_create(&sended,NULL,(void*)sent,&lian); while(1){ bzero(buff,30); len=recv(lian,buff,30,0); if(len<=0){ perror("recv "); break; } else if(len>0)printf("%s\n",buff); else { printf("the other one close,quit\n"); break; } } pthread_join(sended,NULL); //等待sended线程结束之后,主线程才能结束 close(lian); return 0; } ``` 服务端 ``` #include <stdlib.h> #include <sys/types.h> #include <stdio.h> #include <sys/socket.h> #include <string.h> #include <signal.h> #include <arpa/inet.h> #include <unistd.h> #include <pthread.h> #include <fcntl.h> #include <time.h> #include<errno.h> int num=0; int new_fd[5]; struct sockaddr_in myaddr,itaddr; void sended(int *qian){ char buf[30]; int len; int q=*qian; char mass[60]; len=sizeof(struct sockaddr); while(1){ if((recv(q,buf,30,0))<=0){ //接收来自客户端的消息 break; } if(strncasecmp(buf,"quit",4)==0){ printf("%d已退出聊天室\n",q); close(q); break; } printf("%d说:%s\n",q,buf); sprintf(mass,"%d说:%s",q,buf); int j=0; for(j=0;j<num;j++){ if(q-4!=j) send(new_fd[j],mass,60,0); } //将某个客户端的信息发送给其它客户端 bzero(buf,30); } printf("接受信息结束!\n"); close(q); pthread_exit(NULL); } void revied(int *qian){ int fd; int q=*qian; while(1){ char buf[1024]; char rizhi[100]; int fang; int len; len=sizeof(struct sockaddr); bzero(buf,1025); time_t t; t=time((time_t *) 0); //得到系统时间 if((fang=accept(q,(struct sockaddr *)&itaddr,&len))<0){ //接收来自客户端的连接申请 printf("accept error!\n"); exit(1); } else printf("server:gor connection from %s ,port %d,socket %d ,time:%s\n",inet_ntoa(itaddr.sin_addr),ntohs(itaddr.sin_port),fang, ctime(&t)); //打印出客户端连接信息 //将信息写入文件 sprintf(rizhi,"the %d user connection from %s ,port %d,socket %d ,time:%s\n",num+1,inet_ntoa(itaddr.sin_addr),ntohs(itaddr.sin_port),fang, ctime(&t)); fd =open("rizhi.txt",O_RDWR|O_CREAT, S_IRWXU); lseek(fd,0,SEEK_END); write(fd,rizhi,strlen(rizhi)); close(fd); new_fd[num]=fang; num++; printf("连接了%d用户\n",num); pthread_t sent; pthread_create(&sent,NULL,(void*)sended,&fang); //线程sended函数 sleep(0.2); } close(q); pthread_exit("线程安全退出!\n"); } int main(){ int i=1; int lian; int pid,len; char buf[1024]; pthread_t revi;//声明线程ID printf("Socket...\n"); lian=socket(AF_INET, SOCK_STREAM, 0); /* 创建套接字完成连接, 第一个参数为地址族,也就是ip地址类型,AF_INET表示地址类型为ipv4 第二个参数为数据传输方式/套接字类型,SOCK_STREAM表示流格式套接字/面向连接的套接字 第三个参数为传输协议,设为0,则系统会自动推演该使用什么传输协议 socket()函数返回文件描述符,唯一标识套接字 */ if(lian<0){ printf("%s\n","socket error!"); exit(1); } printf("Bind...\n"); myaddr.sin_family=AF_INET; myaddr.sin_port=htons(8088); //初始化sockaddr_in结构体参数 //sin_port存储端口号 //htons()将本地字节顺序转换为网络字节顺序 inet_aton(("127.0.0.1"),(struct in_addr*)&myaddr.sin_addr.s_addr); //inet_aton,将一个字符串ip转换为网络序列ip地址 if(bind(lian,(struct sockaddr*)&myaddr,sizeof(myaddr))<0) //bind(),创建本地捆绑 { printf("Bind failed.\n"); exit(1); } printf("listen...\n"); listen(lian,5); //linten()创建套接口并监听申请的连接 pthread_create(&revi,NULL,(void*)revied,&lian); /*建立线程 第一个参数为指向线程标识符的指针 第二和参数设置线程属性 第三个参数为线程运行函数的起始地址 第四个参数为该运行函数的参数 */ while(1){ int j=0; char massage[30]; char ass[60]; scanf("%s",&massage); sprintf(ass,"服务器说:%s",massage); if(strncasecmp("quit",massage,4)==0){ printf("即将退出!\n"); break; } if(num<=0)printf("没有客户端连接!\n"); else{ for(j=0;j<num;j++){ int ss=send(new_fd[j],ass,60,0); } //服务器的自己写的信息发送给客户端 } sleep(0.5); } pthread_join(revi,NULL); //等待revi线程结束之后,主线程才能结束 close(lian); return 0; } ```
局域网连接不上公网socket,4G却可以,为什么??
首先,阿里云服务器,socket服务端在局域网本地测试完全没有问题。 将服务端放到服务器后new socket(ip,port);中的ip不能使用阿里的公网IP,只能使用私有ip。 用客户端尝试连接socket,局域网连接失败,切换4G网络却可以。 想问问各路大神,怎么做才能使的在局域网也能正常连接socket?
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
立即提问