Java实现的服务器,C++实现的客户端怎样实现图片消息类型的发送 5C

Java实现的服务器,C++实现的客户端 在客户端中socket怎样实现图片消息类型的发送

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java实现的服务器,C++实现的客户端怎样实现图片消息类型的发送
Java实现的服务器,C++实现的客户端 在客户端中socket怎样实现图片消息类型的发送
java 如何定义服务器和客户端功能代码
我在自学java,正在尝试做一个C/S结构的客户管理软件,目前全部功能的实现都是在客户端的应用程序中,服务器只做数据库使用,我觉得这样不太好。我希望可以把程序的主要功能实现放在服务器上,客户端程序只用来收发数据和展示界面!请问我该怎么实现这样的区分!
C++ http服务器与 java客户端的问题
老大 让我用C++写http服务器,让java的人写客户端 我们在完工后进行对调,不知道为什么 他向我进行url请求时候 我能解析出来进行一系列处理 发送的时候 他那边总是报错 第一次 我先发响应头的信息 类似于 --"HTTP/1.1 200 OK \r\nServer:........ 然后再发html文本的内容 ,他那边接收类型是html类型 但是总是接收不到,显示error,显示出来还是空的。 第二次 我设置纯文本类型 我就直接把字符串发给他结果还是一样的结果,不知道为什么。 求大神们指点一下吧
JAVA TCP通信,客户端给服务器发送java对象时报错
我在做JAVA TCP 编程时,我想实现客户端A与客户端B之间通过服务器C来通信,但是我通过客户端A给服务器发送消息时,我传送的是一个java对象MsgPackage类对象,我通过ObjectOutputStream.writeObject来传送,但是服务器去读取这个对象时报错了,没有能正确读取到客户端发送过来的对象,请各位大神指教一下。错误的消息是这样: java.lang.ClassNotFoundException: com.client.MsgPackage at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at com.server.ProcRequestThread.run(Server.java:79) at java.lang.Thread.run(Thread.java:619)
java Socket 在客户端断开之后才可以接收到客户端发送的消息!
``` //客户端 public class Test { private static boolean is = true; public static void main(String[] args) throws IOException, InterruptedException { Socket socket = new Socket("127.0.0.1", 6677); System.out.println("链接成功"); Scanner scanner = new Scanner(System.in); while (is) { System.out.println("请输入!!!"); int n = scanner.nextInt(); switch (n) { case 1: OutputStream os = socket.getOutputStream(); os.write("hello world".getBytes()); os.flush(); // os.close(); // socket.close(); // IoUtil.IoClose(os); System.out.println("发送成功"); break; case 2: System.out.println("循环关闭"); is = false; break; default: is = false; System.out.println("输入错误---循环关闭"); break; } } } } ``` ``` //服务器端 太多了 就贴一部分 @Override public void run() { MessageThread messageThread = null; InputStream iss = null; InputStreamReader isr = null; BufferedReader br = null; while (is) { try { // 监听 Socket socket = serverSocket.accept(); System.out.println("链接成功"); iss = socket.getInputStream(); isr = new InputStreamReader(iss); br = new BufferedReader(isr); String len; StringBuffer sb = new StringBuffer(); while ((len = br.readLine()) != null) { sb.append(len); } System.out.println(sb.toString()); // iss.close(); // IoUtil.IoClose(br, isr, iss); SocketMap.put(sb.toString(), socket); /** * 开启接受消息的线程 */ messageThread = new MessageThread(socket); messageThread.start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); messageThread.setFlag(false); } } ``` 大致代码就这些 问题出在 socket 可以链接成功 但是 客户端发送的消息要等 客户端断开链接之后才能接收到 或者 关闭客户端的输出流也可以! C#为客户端的时候也一样!
Java 如何在建立 Socket 通信后主动向 C#客户端发送信息
使用Java服务器与C#客户端成功建立套接字通信后,Java服务器如何主动向C#客户端发送消息?我只能在成功建立的那一刻向客户发送信息,但这不是我想要的。 项目启动时将开始创建套接字连接,但在建立之后,我无法自己向客户端发送信息。 -----这是负责建立套接字通信的代码。 ``` public void openSocket() throws IOException { Socket socket = null; try { ServerSocket serverSocket = new ServerSocket(5656); log.info("server msg : UnitySocket server start {port : [5656]}"); socket = serverSocket.accept(); log.info("server msg : socket msg [client send !]"); inputStream = new BufferedInputStream(socket.getInputStream()); byte[] out_massage = new byte[messageLengthBytes]; inputStream.read(out_massage); log.info("server msg : client msg is [ "+(new String(out_massage,"utf-8"))); OutputStream outputStream = socket.getOutputStream(); outputStream.write(socket_massage.getBytes()); // socket_massage = "welcome_send_server_!" } catch (IOException e) { e.printStackTrace(); }finally { if(socket != null){ socket.close(); } socket = null; } ``` 这是要发送给客户端的数据 ``` public Boolean askMoveUp(String address, String project, String name, String massage, String startTime, String endTime, String token) throws IOException { StringBuffer stringBuffer = new StringBuffer(); SocketMassage socketMassage = new SocketMassage(); String msg; stringBuffer.append(address).append("_"); stringBuffer.append(project).append("_"); stringBuffer.append(name).append("_"); stringBuffer.append(massage).append("_"); stringBuffer.append(startTime); msg = stringBuffer.toString(); socketMassage.setMsg(msg); return true; } ``` 我想要做的是askMoveUp()方法中的msg数据。如何在openSocket()方法中像socket_massage一样发送给客户端?当项目启动时,socket_massage中的数据被发送到客户端,但msg是如何发送的?希望大家能给我一个帮助,谢谢!
通过C++/java socket向服务器端传递字符串并接收服务器的反馈字符串与使用浏览器实现相同功能有何区别?
1.在写一个打开网络服务的软件的接口时(win10环境),用c++和java 的socket分别写了两个客户端,客户端的功能是通过端口8081向本地服务器localhost发送字符串“?scanX”,然后接收服务器的反馈“done!",但是在接收的过程中会出现网络中断,要写接口的软件报错;但如果用浏览器,直接在地址栏输入"http://127.0.0.1:8081/?scanB" ,浏览器会直接显示"done!".我想解决的是用c++写一个接口exe能及时向服务器传递字符串并接收反馈,但此时反馈出现了问题,本人小白,问了很多前辈也未能解决疑问,在此求教各位前辈,大佬。 2.以下为c++代码段,运行到"sended request success!"后网络服务器不知为何断开,要写接口的软件报错 #include <iostream> #include <windows.h> using namespace std; //在windows网络编程中需要引入库 #pragma comment(lib, "wsock32.lib") int main(int argc, char *argv[]) { //在windows网络编程中导入库,linux中不需要 WSADATA Ws; if (WSAStartup(MAKEWORD(2, 2), &Ws) != 0) { cout << "Init Windows Socket Failed::" << GetLastError() << endl; return -1; } //通过域名获取IP地址 HOSTENT *host_entry = gethostbyname("127.0.0.1"); if (!host_entry){ return -1; } //将网络字节序的网络地址转为本地字节序 char *serverIP = inet_ntoa(*((struct in_addr *)host_entry->h_addr)); cout << "server IP is " << serverIP << endl; //创建socket并且绑定了TCP协议 int hsocket = socket(AF_INET, SOCK_STREAM, 0); //socket创建失败,一般都是系统资源没有了,或者没有权限 if (hsocket == INVALID_SOCKET) *** { cout << "Create Socket Failed::" << GetLastError() << endl; return -2; } //连接http服务器 sockaddr_in servAddr; servAddr.sin_family = AF_INET; servAddr.sin_port = htons(8081); //指定端口号 servAddr.sin_addr.S_un.S_addr = inet_addr(serverIP); if (connect(hsocket, (struct sockaddr*)&servAddr, sizeof(servAddr)) == -1) { cout << "Connect error" << endl; return -3; } else cout << "Connected "<<serverIP<<" successed!" << endl; //发出页面URL请求数据 char req[] = "?connect0"; //注意send并不能保证你指定大小的数据它能够全部发送, if (send(hsocket, req, (int)strlen(req), 0) < 0) { cout << "send request error" << endl; return -4; } cout << "sended request success!" << endl; //接收数据的缓冲,应为是字符串所以结尾要加\0,我们一开始就将它全部置0 char buffer[10000] = {0}; int len; if ( recv(hsocket, buffer, sizeof(buffer)-1, 0) <0) { cout << "read error" << endl; exit(1); } cout << buffer << endl; getchar(); return 0; } ``` ``` 这是运行结果 ![图片说明](https://img-ask.csdn.net/upload/201903/24/1553395763_716349.png) 软件报错(查百度说这句话是因为读取软件数据导致的,不知正确与否) ![图片说明](https://img-ask.csdn.net/upload/201903/24/1553395434_777007.png) 对比使用浏览器通信,能直接收到反馈 ![图片说明](https://img-ask.csdn.net/upload/201903/24/1553395626_39803.png)
cocos2d-x 客户端和java mina 服务器通信问题
首先贴出我的客户端的代码 ODSocket cSocket; cSocket.Init(); cSocket.Create(AF_INET,SOCK_STREAM,0); cSocket.Connect("127.0.0.1",8120); char recvBuf[1204] = "\0"; Per per; per.len=8; per.code=789; per.playerid=123466; cSocket.Send((char*)&per,sizeof(per)+1,0); cSocket.Recv(recvBuf,64,0); cSocket.Close(); cSocket.Clean(); 这个是我的客户端的代码其中 Per 是一个结构体 struct Per{ short len; short code; int playerid; }; java端接受的时候不是我传递的数据,我想问下这个是什么情况,我在网上看说传递对象的时候 需要注意 大小端 结构的问题 通常情况下 c++ 是以小段存储数据 java 是以 大端存储的 这个是我改怎么弄 mina 部分接受代码 public void readHeader(IoBuffer in) { len = in.getShort(); code = in.getShort(); playerId = in.getInt(); } 但是java 端接收到这些数据都是乱的我想问下为什么 该怎么整
java socket如何接收C客户端发过来的结构体数据?
C做客户端向java服务器通过socket发送结构体数据,传送的是约定好的数字,但是服务端通过InputStream接收数据,然后放到byte数组中,然后再转为string类型的,现在出现乱码?这是怎么回事呢?直接将byte数组中的数据输出发现里面出现负数,约定的数据都是正的,这是怎么回事呢?是转码的问题还是接收的问题呢?请问如何解决呢?麻烦知道的帮助小弟一下。多谢
web应用中 服务器端能不能通过什么方法判断客户端唯一性
web应用中 服务器端能不能通过什么方法判断客户端唯一性 每个电脑有自己的 网卡 MAC 这个实现很麻烦 ,看相关资料 好像 java+jni+c++的dll 组建能获取客户端MAC 这样也算 还有就是cookie 但是这个不能跨域,也会受到 客户端机器设置干扰 除此之外还有什么方法 能从服务器端 判断 客户端 唯一呢(可以出现小的误差) 注意:非session直接 判断,有隔天时间差
关于socket编程在java与c下的传输问题
最近在做一个项目,使用c写的客户端,用java写的服务器,客户端传输结构体,采用函数memcpy转换为字符串传输,那么在服务器端应该如何接受并解析??目前为止本人一直接受到的都是乱码
Java Socket实现客户端服务画面同步,报错
java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.<init>(Socket.java:434) at java.net.Socket.<init>(Socket.java:211) at Chat.Client.start2(Client.java:59) at Chat.Client.main(Client.java:83) 客户端代码 package Chat; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.Socket; import javax.swing.*; public class Client { JFrame frame; MyPanel mp; JButton send; int width; int height; public Client() throws AWTException{ frame =new JFrame("Client"); frame.setSize(400, 400); JPanel pane = new JPanel(); frame.add(pane,BorderLayout.SOUTH); mp=new MyPanel(); send = new JButton("开始"); pane.add(send); send.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub width = 40; height = 40; mp.repaint(); } }); frame.add(mp,BorderLayout.CENTER); Thread t=new Thread(mp); t.start(); frame.setVisible(true); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); } }); } public void start2(){ Socket s = null; while(true){ try{ s = new Socket("127.0.0.1",5000); send.setEnabled(true); PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); out.println(mp.x); out.println(mp.y); out.println(mp.width); out.println(mp.height); mp.repaint(); out.close(); s.close(); // Thread.sleep(10); }catch(Exception e){ e.printStackTrace(); } } } public static void main (String args[]) { try { Client c = new Client(); c.start2(); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class MyPanel extends Panel implements Runnable{ int x=0; int y=0; int width = 40; int height = 40; boolean yAdd = true; boolean xAdd = true; public void paint(Graphics g){ g.setColor(Color.pink); g.fillOval(x, y,width ,height); } public void run() { while(true) { if(yAdd) y+=2; else y-=2; if(y >= this.getHeight()- height || y <= 0) yAdd=!yAdd; if(xAdd) x+=3; else x-=3; if(x >= this.getWidth()- width || x <= 0) xAdd=!xAdd; repaint(); try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } repaint(); } } } 服务器端代码 package Chat; import java.awt.*; import java.net.*; import java.io.*; import java.awt.event.*; import javax.swing.*; public class Server extends JFrame{ JFrame frame; JPanel pane; int x=0; int y=0; int height = 40; int width = 40; public Server(){ // super("Server"); frame = new JFrame("Server"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // pane = new JPanel(); // frame.setContentPane(pane); frame.setVisible(true); frame.setSize(400,400); // start(); } private void start(){ ServerSocket ss = null; try{ ss = new ServerSocket(5000); Socket s = ss.accept(); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String s_x = in.readLine(); String s_y = in.readLine(); String s_width = in.readLine(); String s_height = in.readLine(); x = Integer.parseInt(s_x); y = Integer.parseInt(s_y); width = Integer.parseInt(s_width); height = Integer.parseInt(s_height); Thread.sleep(10); repaint(); in.close(); s.close(); ss.close(); }catch(Exception e){ e.printStackTrace(); } } public void paint(Graphics g){ g.setColor(Color.pink); g.fillOval(x, y, height,width); } public static void main(String[] args){ Server s = new Server(); s.start(); } }
关于OAuth2授权码模式相关问题
![图片说明](https://img-ask.csdn.net/upload/202003/27/1585295872_211351.png) 网上授权码模式清一色的步骤,对C步骤和D步骤有点疑惑,C步骤用户同意授权后,认证服务器将客户端导向客户端事先指定的URI,那应该是从认证服务器跳转到uri地址,为什么D步骤又是说从客户端进行跳转?同时,客户端将token传递给资源服务器时,资源服务器是否需要请求第三方认证服务器对token进行校验?
java的socket服务端程序传到Linux上编译运行成功,但是监听不到客户端的连接
(很急!!!没有财务值了,能帮我解决问题微信红包答谢!最好微信或者QQ交流 qq:543527507)我用了最简单的C/S程序TCP连接,在阿里云租了一个服务器,得到了一个公网IP,也把服务器socket与公网IP绑定,在自己电脑完全没问题,但是把它传到Linux远端服务器上运行,这个ServerSocket.accept()就监听不到我主机的客户端程序的连接,但是我主机的客户端能够连上公网IP的socket,但是服务器就监听不到?两个问题,第一,为什么我主机上能够连接但是服务器那边监听不到?第二,如果我主机连接的socket不是服务器的socket那我主机连接的是什么?
C++客户端和java服务端TCP报错10061怎么回事?
这是我的C++客户端的代码,但连接不上JAVA的服务端,报错10061,是还需要写些什么吗? ``` WSADATA WsaData; char buff[BUFFER_SIZE]; memset(buff, 0, sizeof(buff)); if (WSAStartup(MAKEWORD(1, 1), &WsaData) != 0) { printf("%d \n", GetLastError()); return; } if (LOBYTE(WsaData.wVersion) != 1 || HIBYTE(WsaData.wVersion) != 1) { printf("%d \n", GetLastError()); WSACleanup(); system("pause"); return; } SOCKET SocketClient = socket(AF_INET, SOCK_STREAM, 0); SOCKADDR_IN root; root.sin_addr.S_un.S_addr = inet_addr("192.168.0.171"); root.sin_family = AF_INET; root.sin_port = htons(14870); if (connect(SocketClient, (struct sockaddr*)&root, sizeof(root)) == INVALID_SOCKET) { printf("连接服务器失败: %d \n", WSAGetLastError()); return ; } else { //接收数据 recv(SocketClient, buff, sizeof(buff), 0); } char Buffer[MAX_BUF_LEN]; strcpy(Buffer, Log.c_str()); send(SocketClient, Buffer, sizeof(Buffer), 0); closesocket(SocketClient); WSACleanup(); ``` 本人不懂JAVA语言,不清楚JAVA是这么写的,像我这样可以正常通信吗? 这是JAVA服务器的代码 ``` public class Receive { private static final int LISTEN_PORT = 14870; private ServerSocket serverSocket; @Test public void receive(){ System.out.println("日志代理接收器开始启动,监听端口:" + LISTEN_PORT + " 。。。"); try { serverSocket = new ServerSocket(LISTEN_PORT); } catch (IOException e) { System.out.println("启动日志代理接收器失败"); System.out.println(e); return; } while (true){ try(Socket socket = serverSocket.accept()) { BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg = br.readLine(); System.out.println("接收到一条日志:"+msg); } catch (IOException e) { e.printStackTrace(); } } } } ``` 更新下: ![图片说明](https://img-ask.csdn.net/upload/201903/28/1553759037_736946.png) 现在是我在占用服务器的接受端口14870,但服务器接受不到数据,我的程序也无法往下走
关于unity3d与java客户端通信传图片的问题
<p>最近项目中用到了unity,需要在unity中截图,并通过webservices将截图信息传递到java服务器端上。但是在java服务器端上出现了问题,我查了资料不知道如何解决,求指点!!</p> <p> </p> <p>这个是我在unity中写的截取图像的代码,图片信息需要通过WWWFORM上传到java服务器端上</p> <pre name="code" class="c#">public byte[] shot() { int width = Screen.width; int height = Screen.height; Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false); byte[] bytes = tex.EncodeToPNG(); return bytes; } public void getScreenshotByUrl(string data) { StartCoroutine(GetScreenshot(data)); } public IEnumerator GetScreenshot(string data) { byte[] result = shot(); IDictionary jsonDic = (IDictionary)Json.Deserialize(data); string normalUrl = (string)jsonDic["normalUrl"]; string time = string.Format("{0:yyyyMMddHHmmss}", DateTime.Now); //创建一个Web表单 WWWForm form = new WWWForm(); form.AddField("arg0", time); form.AddBinaryData("arg1", result); WWW www = new WWW(normalUrl.ToString(), form); yield return www; if (www.error != null) print(www.error); else print("Finished Uploading Screenshot"); }</pre> <p> 这个是在JAVA中的服务器端的webservices代码</p> <pre name="code" class="java"> @Override public int insertPic(String name,byte[] content) throws Exception { System.out.println(content); System.out.println(name); return (Integer) null; }</pre> <p> 这个是后台报的错误</p> <pre name="code" class="java">2012-10-17 10:13:05 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging 警告: Interceptor for {http://web.webservice.firems.suresource.com/}LocationWebserviceImplService has thrown exception, unwinding now org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader. at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:237) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123) at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:207) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154) at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:128) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:185) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:108) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:164) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[2,1] Message: Content is not allowed in prolog. at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594) at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTag(XMLStreamReaderImpl.java:1235) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:138) ... 27 more</pre>
java的socket编程问题:为什么客户端接收服务器的数据时会有空白数据项?
例如:03-17 07:02:00.330 1984-2007/? I/info﹕ client buff --> 0/20160316//早餐/123.0 03-17 07:02:00.340 1984-2007/? I/info﹕ insert expend_table 03-17 07:02:00.340 1984-2007/? I/info﹕ client buff --> 03-17 07:02:00.340 1984-2007/? I/info﹕ client buff --> 0/20160316//午餐/22.0 03-17 07:02:00.340 1984-2007/? I/info﹕ insert expend_table 03-17 07:02:00.340 1984-2007/? I/info﹕ client buff --> 03-17 07:02:00.340 1984-2007/? I/info﹕ client buff --> 0/20160316/22ss/服装/123.0 数据内容忽视。client buff是客户端接受到的数据 就是为什么会是一条有数据一条没有数据这样循环下去? 服务端代码: pw = new PrintWriter(s.getOutputStream()); Cursor c = dbManager.query(Constant.DATA_TABLE,"username=?",new String[]{username}); while (c.moveToNext()){ // client端发送数据的顺序: isIncome + "/" + date + "/" + title + "/" + content + "/" + money String title = c.getString(c.getColumnIndex("title")); String money = c.getString(c.getColumnIndex("money")); Long date = c.getLong(c.getColumnIndex("date")); String isIncome = c.getString(c.getColumnIndex("isIncome")); String content = c.getString(c.getColumnIndex("content")); String data = isIncome + "/" + date + "/" + title + "/" + content + "/" + money + '\n'; pw.println(data); pw.flush(); } String endFlag = username + "/end" + '\n'; pw.println(endFlag); pw.flush(); 客户端代码: br = new BufferedReader(new InputStreamReader(s.getInputStream())); String buff; while (!(buff = br.readLine()).endsWith(mUsername + "/end")) { // server端发送数据的顺序: isIncome + "/" + date + "/" + title + "/" + content + "/" + money String[] str = buff.split("/"); if (str.length == 5) { //确保接收的数据正确 ContentValues values = new ContentValues(); values.put("isIncome", str[0]); values.put("date", Long.valueOf(str[1])); values.put("title", str[2]); values.put("content", str[3]); values.put("money", str[4]); if ("0".equals(str[0])) { if (!dbManager.insert(Constant.EXPEND_TABLE, values)) { flag = false; break; } } else if ("1".equals(str[0])) { if (!dbManager.insert(Constant.INCOME_TABLE, values)) { flag = false; break; } } } } db.setTransactionSuccessful(); db.endTransaction();
JAVA UDP协议对接C#服务器 编码方式为unicode
![图片说明](https://img-ask.csdn.net/upload/201805/27/1527390334_516365.png) ![图片说明](https://img-ask.csdn.net/upload/201805/27/1527390372_218048.png) 上面图片使用测试工具实现效果。 JAVA代码无法实现,之前可以传输来着。一觉醒了居然不行了,捣鼓一晚上。 ``` package zyb.org.UDP; import java.io.IOException; import java.io.InterruptedIOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPClient { private static final int TIMEOUT = 5000; //设置接收数据的超时时间 private static final int MAXNUM = 5; //设置重发数据的最多次数 public static void main(String args[])throws IOException{ String str_send = "Cmd=Close,Para=1|Left,EndPoint=192.168.8.102:11001"; String unicode_Str = gbEncoding(str_send); byte[] buf = new byte[1024]; //客户端在9000端口监听接收到的数据 DatagramSocket ds = new DatagramSocket(11001); InetAddress loc = InetAddress.getLocalHost(); //定义用来发送数据的DatagramPacket实例 DatagramPacket dp_send= new DatagramPacket(unicode_Str.getBytes(),unicode_Str.length(),loc,11003); //定义用来接收数据的DatagramPacket实例 DatagramPacket dp_receive = new DatagramPacket(buf, 1024); //数据发向本地3000端口 ds.setSoTimeout(TIMEOUT); //设置接收数据时阻塞的最长时间 int tries = 0; //重发数据的次数 boolean receivedResponse = false; //是否接收到数据的标志位 //直到接收到数据,或者重发次数达到预定值,则退出循环 while(!receivedResponse && tries<MAXNUM){ //发送数据 ds.send(dp_send); try{ //接收从服务端发送回来的数据 ds.receive(dp_receive); //如果接收到的数据不是来自目标地址,则抛出异常 if(!dp_receive.getAddress().equals(loc)){ throw new IOException("Received packet from an umknown source"); } //如果接收到数据。则将receivedResponse标志位改为true,从而退出循环 receivedResponse = true; }catch(InterruptedIOException e){ //如果接收数据时阻塞超时,重发并减少一次重发的次数 tries += 1; System.out.println("Time out," + (MAXNUM - tries) + " more tries..." ); } } if(receivedResponse){ //如果收到数据,则打印出来 System.out.println("client received data from server:"); String str_receive = new String(dp_receive.getData(),0,dp_receive.getLength()) + " from " + dp_receive.getAddress().getHostAddress() + ":" + dp_receive.getPort(); System.out.println(str_receive); //由于dp_receive在接收了数据之后,其内部消息长度值会变为实际接收的消息的字节数, //所以这里要将dp_receive的内部消息长度重新置为1024 dp_receive.setLength(1024); }else{ //如果重发MAXNUM次数据后,仍未获得服务器发送回来的数据,则打印如下信息 System.out.println("No response -- give up."); } ds.close(); } /* * 中文转unicode编码 */ public static String gbEncoding(final String gbString) { char[] utfBytes = gbString.toCharArray(); String unicodeBytes = ""; for (int i = 0; i < utfBytes.length; i++) { String hexB = Integer.toHexString(utfBytes[i]); if (hexB.length() <= 2) { hexB = "00" + hexB; } unicodeBytes = unicodeBytes + "\\u" + hexB; } return unicodeBytes; } /* * unicode编码转中文 */ public static String decodeUnicode(final String dataStr) { int start = 0; int end = 0; final StringBuffer buffer = new StringBuffer(); while (start > -1) { end = dataStr.indexOf("\\u", start + 2); String charStr = ""; if (end == -1) { charStr = dataStr.substring(start + 2, dataStr.length()); } else { charStr = dataStr.substring(start + 2, end); } char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。 buffer.append(new Character(letter).toString()); start = end; } return buffer.toString(); } } ```
JAVA调用C++函数进行rdp加密
主要为了实现,直接在表单中修改文件。实现动态配置对应电脑的远程桌面连接参数,文件中只有密码是需要加密的。 找了很多地方都没有找到,求虐,求知道。 服务端 远程客户端 然后远程的时候希望点击直接进去,参数是配置在这个文件(主要文件中是只有密码是加密的), 如果客户端电脑修改密码了,服务器这个配置文件就需要更新参数.不可能让客户, 自己拿一个第三方exe对密码进行加密,然后还要他来直接操作文件更新配置参数(密码) 已知http://blog.csdn.net/wzsy/article/details/14120853这里给出了C++的RDP算法, 问:如何转化为JAVA方法,或者如何用Java调用这个函数,或者JAVA---JNI----C++交互,C++的环境又是怎么样(配置哪些东西,环境,安装什么软件,需要什么库)的,求大神。 这个是在远程连接的时候,点击保存会生成的,原文件是Default.rdp,但是文件里面没有密码这个参数。 没有密码调远程的时候就会要求输入密码。 密码属性是可以有的,不过只能放密文。现在这个是我通过第三方exe生成之后,我手动加进去的。 有这个参数在我添加进去之后,可以在远程连接的时候,直接读进去,不需要输入密码。 我这里有多个电脑需要通过WEB页面的按钮点击进去,每次都输入对应电脑的密码,不现实。 想通过把帐号密码直接存数据库,然后在web页面更改,直接更改文件,然后当客户端修改密码时,他就可以直接登入web端修改这个属性。 因为好像底层是C++的算法,一直没找到JAVA加密RDP的算法。
java 关于NIO实现UDP数据传输问题 ,急谢谢,C币不足请不要介意
各位大侠好,小弟想问一下问题,搞了一两天没有搞明白的。因为要实现一个UDP传输服务端,于是在网上找了很多资料然后就写了一个。但是写好之后发现有两个很严重的问题,希望各位大哥给点意见或者思路去解决。 问题一:启动服务端,同时也启动客户端,客户端传输数据服务器正常接收,但是断开客户端后,再启动客户端,服务器就收不到任何客户端发送的消息,好像是服务器关闭了UDP一样,但是重启服务器后(重新打开UDP)客户端既可以发送信息过来。 问题二:多个客户端。第一个客户端连接上后,第二个客户端怎么也链接不上了。即使关闭了第一个客户端也一样。 如下是代码: package com.gateway.socket; import java.io.IOException; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.nio.channels.DatagramChannel; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.util.Iterator; import java.util.Set; import org.apache.log4j.Logger; public class UDPEchoServerSelector extends Thread { private static final Logger log = Logger.getLogger(ServerSocket.class); // private InetSocketAddress inetSocketAddress; // socket处理类 private UDPSocketHandler handler = new UDPSocketHandler(); // 注册的接受服务 private SocketReceiver receiver = null; /** * 初始化socket * * @param receiver * @param hostname * @param port * @throws IOException * @throws UnknownHostException */ public UDPEchoServerSelector(SocketReceiver receiver, String hostname, int port) { if (hostname.isEmpty()) { inetSocketAddress = new InetSocketAddress(port); } else { inetSocketAddress = new InetSocketAddress(hostname, port); } this.receiver = receiver; } @Override public void run() { try { Selector selector = Selector.open(); // 创建选择器,可以处理多路通道。 DatagramChannel serverSocketChannel = DatagramChannel.open(); // 打开通道 serverSocketChannel.configureBlocking(false); // 非阻塞 serverSocketChannel.socket().bind(inetSocketAddress); /* * 将通道管理器和该通道绑定,并为该通道注册SelectionKey.OP_READ事件,注册该事件后, * 当该事件到达时,selector.select()会返回,如果该事件没到达selector.select()会一直阻塞。 */ serverSocketChannel.register(selector, SelectionKey.OP_READ, new ClientData()); log.info("Server: socket server started."); /* * 采用轮询的方式监听selector上是否有需要处理的事件,如果有,则进行处理 */ while (true) { // 轮询 // 当注册的事件到达时,方法返回;否则,该方法会一直阻塞 int nKeys = selector.select(); if (nKeys == 0) { continue; } // 得到选择键列表 Set Keys = selector.selectedKeys(); Iterator it = Keys.iterator(); while (it.hasNext()) { SelectionKey key = null; key = (SelectionKey) it.next(); // 键为位掩码 it.remove(); // 客户端请求连接事件 if (key.isValid() && key.isWritable()) { log.info("Server: SelectionKey is acceptable."); handler.handleWrite(key); } if (key.isReadable()) {// 获得了可读的事件 log.info("Server: SelectionKey is readable."); handler.receiveMsg(key, receiver); } } Keys.clear(); } } catch (IOException e) { e.printStackTrace(); } } public static class ClientData { public SocketAddress clientAddress; public ByteBuffer buffer = ByteBuffer.allocate(255); } } package com.gateway.socket; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.DatagramChannel; import java.nio.channels.SelectionKey; import org.apache.log4j.Logger; import com.gateway.common.DeviceDataTools; import com.gateway.common.data.HexUtils; import com.gateway.socket.UDPEchoServerSelector.ClientData; /** * * 处理socket类 * * @author Andy * */ public class UDPSocketHandler { private static Logger log = Logger.getLogger(UDPSocketHandler.class); /** * 链接请求 * * @throws IOException */ public void handleWrite(SelectionKey key) { try { DatagramChannel channel = (DatagramChannel) key.channel(); ClientData clntDat = (ClientData) key.attachment(); clntDat.buffer.flip(); // 从起始位置开始发送 int bytesSent; bytesSent = channel.send(clntDat.buffer, clntDat.clientAddress); if (bytesSent != 0) { key.interestOps(SelectionKey.OP_READ); // 关注客户端发送数据 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 读请求 * * @throws IOException */ public void receiveMsg(SelectionKey key, SocketReceiver receiver) { ByteBuffer byteBuffer = ByteBuffer.allocate(1024); byteBuffer.clear(); DatagramChannel socketChannel = (DatagramChannel) key.channel(); //非阻塞 try { socketChannel.configureBlocking(false); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println("channel code:" + socketChannel.hashCode()); try { while (true) { InetSocketAddress client = (InetSocketAddress) socketChannel .receive(byteBuffer); byteBuffer.flip(); // byteBuffer中传过来的是10进制的bytep[] byte[] dst = new byte[byteBuffer.limit()]; byteBuffer.get(dst); // 将10进制的byte[]转化成16进制字符串 String data = HexUtils.converBytesToHex(dst); System.out.println(data); log.info("Server: data1 = " + data); byteBuffer.clear(); receiver.udpreceive(socketChannel, data, client); break; } } catch (java.io.IOException e) { //e.printStackTrace(); //this.closeChannel(key, socketChannel); } catch (Exception e) { //e.printStackTrace(); //this.closeChannel(key, socketChannel); } } /** * * @param socketChannel */ private void closeChannel(SelectionKey key, DatagramChannel socketChannel) { try { while (socketChannel.isOpen()) { key.cancel(); socketChannel.close(); } } catch (IOException e1) { e1.printStackTrace(); } } /** * 根据socketKey从内存中获取channel,通过channel向client端发送消息 * * @param socketKey * 内存在channel对应的key * @param data * 发送的数据 * @return * @throws IOException */ public static boolean send(String socketKey, String data) throws IOException { DatagramChannel socketChannel = SocketChannelMapper .getUDPChannel(socketKey); if (socketChannel == null || !socketChannel.isOpen()) { return false; } InetSocketAddress client = SocketChannelMapper .getUDPInetSocketAddress(socketKey + "address"); boolean f = socketChannel.isConnected(); ByteBuffer byteBuffer = ByteBuffer.wrap(DeviceDataTools.hex2Byte(data)); if (f) { socketChannel.write(byteBuffer); } else { socketChannel.connect(new InetSocketAddress(client.getAddress(), client.getPort())); socketChannel.send(byteBuffer, client); } return true; } /** * 根据socketKey从内存中获取channel,通过channel向client端发送消息 * * @param socketKey * 内存在channel对应的key * @param data * 发送的数据 * @return * @throws IOException */ public static boolean send(DatagramChannel socketChannel, String data, InetSocketAddress client) throws IOException { if (socketChannel == null) { return false; } System.out.println("#########################ADDRESS" + client.getAddress()); System.out.println("#########################PORT" + client.getPort()); boolean f = socketChannel.isConnected(); ByteBuffer byteBuffer = ByteBuffer.wrap(DeviceDataTools.hexStr2ByteArray(data)); if (f) { socketChannel.write(byteBuffer); } else { socketChannel.connect(new InetSocketAddress(client.getAddress(), client.getPort())); socketChannel.send(byteBuffer, client); } return true; } }
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
C++(数据结构与算法):62---搜索树(二叉搜索树、索引二叉搜索树)
一、搜索树的复杂度分析 本文考察二叉搜索树和索引二叉搜索树 二叉搜索树的渐进性能可以和跳表媲美: 查找、插入、删除操作所需的平均时间为Θ(logn) 查找、插入、删除操作的最坏情况的时间为Θ(n) 元素按升序输出时所需时间为Θ(n) 虽然在最坏情况下的查找、插入、删除操作,散列表和二叉搜索树的时间性能相同,但是散列表在最好的情况下具有超级性能Θ(1) 不过,对于一个指定的关键...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
立即提问