为什么socket传输对象的时候要将对象序列化?

对象序列化不是将对象转化成字节存入硬盘或者文件数据库中吗?和socket传输有什么关系呢?谢谢,小白不是很懂

3个回答

将对象存入文件或者数据库叫做持久化。在持久化前需要先序列化。序列化的含义就是将层次的数据(一个对象包含很对字段,如果字段本身是对象,它还有它的字段,这个结构类似一颗树)变成扁平的,序列的数据。
无论是写文件还是网络传输,都必须将数据变成一串,或者说一个序列,这就是序列化的含义。

为啥要序列化,因为序列化后再反序列化后出来才是对象,不序列化的数据对象传输可能丢失数据?

对象序列化不是将对象转化成字节存入硬盘或者文件数据库中吗?是的。
socket传输的是什么?是字节。
所以,对象为什么要序列化呢?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java socket对象流输出时序列化的问题?
我现在需要服务端去查询数据库,得到一个Enumeration<>对象,然后该对象通过objetctOutputStream的对象传给客户端,为了序列化,我写了一个NetTransfer类。代码如下 ``` public class NetTransfer implements Serializable { Object obj; public Object getObj() { return obj; } public void setObj(Object obj) { this.obj = obj; } } ``` 服务端代码如下: ``` public static void getAllUser() { try { //服务器开始在数据库查询 Vector<User> userVec=new Vector<User>(); rSet=stmt.executeQuery("select * from userdata"); while(rSet.next()) { //以下只是我的程序中有不同类型的人,此处为多态 switch (rSet.getString("role")) { case "administrator": userVec.add(new Administrator(rSet.getString("name"), rSet.getString("password"), rSet.getString("role"))); break; case "operator": userVec.add(new Operator(rSet.getString("name"), rSet.getString("password"), rSet.getString("role"))); break; case "browser": userVec.add(new Browser(rSet.getString("name"), rSet.getString("password"), rSet.getString("role"))); break; default: break; } } Enumeration<User> e = userVec.elements(); NetTransfer allUsers=new NetTransfer(); allUsers.setObj(e); ObjectOutputStream oos=new ObjectOutputStream(client.getOutputStream()); /*异常提示此处没序列化*/ oos.writeObject(allUsers); oos.flush(); //oos.close(); }catch (Exception e) { e.printStackTrace(); } } ``` 客户端 ``` Enumeration<User> allUsers=null; //服务器返回的信息 ObjectInputStream ois=new ObjectInputStream(clientSocket.getInputStream()); NetTransfer allUsersTransfer=new NetTransfer(); allUsersTransfer=(NetTransfer)ois.readObject(); allUsers=(Enumeration<User>)allUsersTransfer.getObj(); //ois.close(); } catch (Exception e) { e.printStackTrace(); return allUsers; } return allUsers; } ``` 对序列化不是很懂,求助
求一个例子:java socket 采用ObjectInputStream序列化收发文件例子
求一个:java socket 采用ObjectInputStream序列化收发文件例子 求一个:java socket 采用ObjectInputStream序列化收发文件例子
java语言socket编程对象传递
我的需求是:在客户端传递一个对象到服务器,服务端根据发送过来的对象的一个属性的内容决定对这个对象进行对应的处理。现在碰到的问题是:1.我在服务器端用readObject方法反序列化获得对象的类型时Object,服务器如何知道该对象是什么类型并向下转型去获得该对象的属性值(我知道反射可以获得对象的类名,但是无法根据得到的类名进行向下转型((user.getClass()) object).reg()这句出现了编译错误)。2.我传过来的对象是各式各样的,方法名可以在对象参数中带(解决第一个问题就可以获得方法名);但是在反射时我需要知道方法的参数类型和个数才能获得方法,这样的话我无法用一个服务器端方法就能解决所有客户端的要求。3.服务端只有一个socket监听,我如果在一个socket写一个类的对应方法的操作,我如何通过这个socket去调用服务器的其他的类和方法? 恳请解答,感激不尽!
C# winform socket 序列化问题
有个可序列话类 比如叫做 MyClass, 把 这个类序列化后用 socket 发送的同时,如何把这个类的类结构一起发送
C#怎样用socket传输自己定义的一个类的对象
如题。。怎样传输一个对象。 MemoryStream mStream = new MemoryStream(); mStream.Position = 0; while (true) { int ReceiveCount = clientSocket.Receive(result,1024,0); if (ReceiveCount == 0) { break;//接收到的字节数为0时break } else { MessageBox.Show("成功获取到数据"); mStream.Write(result, 0, ReceiveCount); //将接收到的数据写入内存///流 } } 百度到一种方法是这样。可是ReceiveCount值出现过两次。一次为1024,一次为0.所以一直没有退出循环
关于Socket与Unity之间的传输数据UDP协议
在Socket中设定了接收者的端口号和ip,如果是SOCKET服务器与网络调试助手之间调传送数据就可以正常发送,但是如果换做Socket与Unity中的对象传输,即使Unity中的对象的端口号和ip设定与Socket中的接收者的端口号和ip相同,也不能进行传递,并且老师报错,端口号被占用,这是为什么
socket网络传输速度很慢的问题
请问一下各位,我的单个socket连接的socket client 和 server都在同一台电脑上的时候速度极快,20MB/s,为什么把server放到另外一台电脑上其中要经过交换机的时候速度就降到了90kB/s的样子,在同一台电脑上速度快说明发送和接收速度都很快的,而经过交换机以后速度就很慢说明时间是消耗在网络传输上,正常上网下载东西的时候速度不慢大概是5MB/s,请问一下是因为socket还有什么参数没设置吗,速度这么慢 补充一下,刚才我以多个socket通道连接的方式试了一下,连接数为1的时候速度大概为90KB/s,五个socket通道的时候速度大概130kB,20个socket通道的时候速度也是130kB/s,看来增加socket连接个数并不能增加网络传输的速度,我认为是不是交换机把我的应用的socket限速了,哪位见多识广的高手帮忙分析一下,感激不尽,谢谢。
基于socket的文件传输
用MFC做的一个小的聊天工具,要实现一个文件传输的功能,但是用ios::binary打开文件后有些文件发送不了,只能够发送txt文本,不知道为什么会这样 debug的时候发现用来将要发送的文件内容读取的缓冲区里的内容是 无效的字符串 ,按道理来说用ios::binary打开的文件应该是统一的二进制流文件,但是为什么有些字符无法读到缓冲区(字符型数组)里呢?望大神能够指点一二 ``` char *sendData; //定义一个缓冲区来装载文件内容 while (true) //进入死循环 { sendData = new char[sendMsg_size]{ '\0' }; //为缓冲区分配空间并且初始化 send_file.read(sendData, sendMsg_size - 2); //使用read方法从文件中读取适当的内容,send_file是fstream的文件对象,已经和文件关联了 for (int i = sendMsg_size - 1;i > 0;i--) //这一个循环主要是将所有读入的内容向后移动一个位置,从而给缓冲区第一个位置空出来,然后用一个‘f’来表示这一段内容是一个文件的内容,因为这是一个聊天工具,所以想要用不同的消息的头来表示这个消息的性质 { sendData[i] = sendData[i - 1]; } sendData[0] = 'f'; iResult = send(Client_socket, sendData, strlen(sendData), 0); //send函数来发送装有文件内容的缓冲区 if (iResult == SOCKET_ERROR) { pointer->MessageBox(_T("发送失败!"), _T("错误"), MB_OK | MB_ICONERROR); delete[]sendData; return 0; } //异常处理 delete[]sendData; //这一轮发完之后就删除堆中的分配的空间 while (recvData[0] != 'o'); //从客户端那里要发过来一个特定的消息才能够进入下一步,这是为了让服务器发送文件的速度和客户端接受文件并且写入的速度相符合 recvData[0] = '\0'; //客户端接受好了后,服务器重置消息头 if (send_file.peek() == EOF) { break; } //如果读到文件尾的话就说明文件已经读完了,就可以跳出死循环了 } sendData = "e"; //发送一个特定的消息给客户端,告诉它已经发完了 send(Client_socket, sendData, strlen(sendData), 0); send_file.close(); //关闭文件 ```
关于从Socket中读取对象的问题
从客户端向socket中写入一个类型为A的对象,服务器端从socket中读取这个对象 服务器端:A a = (A)objInput.readObject();用一个类型A的变量引用了客户端传过来的对象 想问一下, 1 对象A在传向服务器的过程中,都传递了一些什么?(对象a,对象a的Class描述对象,对象a引用的对象?还是其它?) 2 并且在服务器端,用A来引用了这个对象,那么这个A和客户端程序中的A有什么区别? 3 传过来的对象,说得是通过反序列化得到的,获取这个对象,对应着一个什么样的类装载器?
用socket写蓝牙通信的时候遇到accept不阻塞的情况
## socket中accept不阻塞的问题,网上的方法不起作用 最近比赛需要,要用到蓝牙通信。我打算用套接字实现,但是在写套接字的程序的时候,accept总是不阻塞,检查发现错误码10014,但是长度也没问题,实在不知道怎么回事了。时间比较急,那位大神懂行的还请帮忙指点一下,感激不尽! ``` #include <iostream> #include <cstring> #include <winsock2.h> #pragma comment(lib,"Ws2_32.lib") #include <ws2bth.h> #include <bthsdpdef.h> #include <bluetoothapis.h> #pragma comment(lib, "bthprops.lib") int main() { WSADATA wsaData; int err = WSAStartup(MAKEWORD(2, 2), &wsaData) ; std::cout <<"startup return: " << err << std::endl; SOCKET sock = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM); if (sock == SOCKET_ERROR) { std::cout << "sock define error !" << std::endl; } SOCKADDR_BTH bt_addr; bt_addr.addressFamily = AF_BTH; bt_addr.port = BT_PORT_ANY; bt_addr.btAddr = 0; bt_addr.serviceClassId = GUID_NULL; std::cout << WSAGetLastError() << std::endl; err = ::bind(sock, (sockaddr*)&bt_addr, sizeof(bt_addr)); std::cout << WSAGetLastError() << std::endl; std::cout << "bind return :" <<err<< std::endl; int l = sizeof(bt_addr); std::cout <<"get sockname return: "<< getsockname(sock, (sockaddr*)&bt_addr, &l) << std::endl; err = listen(sock, 1); std::cout << "lis_return: " << err << std::endl; SOCKADDR clntAddr; int l1 = sizeof(SOCKADDR);; std::cout << l1 << std::endl; SOCKET clntSock = accept(sock, (SOCKADDR*)&clntAddr, &l1); if (err = WSAGetLastError()) { std::cout << "阻塞出错。" << std::endl; std::cout << "错误码:" << err << std::endl; } closesocket(clntSock); closesocket(sock); WSACleanup(); return 0; } ```
socket in c ; 报文传输是什么? socket 怎么传输二进制图片?
大神能帮帮忙解释解释吗? 与结构体传输有关系吗? 二进制图片怎么通过socket传输? 跪求社区情。
C#通过Socket实现多文件传输
大概需求是客户端发送一个xml文件名给服务器,服务器返回xml文件。这一步没问题。 后面客户端需要解析xml文件,根据解析出的文件名,去服务器获取指定文件。现在问题是第一次服务器发送xml文件之后就侦听不到客户端后面的请求了 服务端代码: ``` #region 窗体加载 private void Form1_Load(object sender, EventArgs e) { Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Socket设置、IPv4、Stream类型套接字、TCP协议 IPAddress ip = IPAddress.Any;//获取本机IP IPEndPoint point = new IPEndPoint(ip, 18002);//设置IP和端口 socketWatch.Bind(point);//绑定端口 memoEdit1.Text = "开始侦听..."; socketWatch.Listen(100);//最大连接数 Thread th = new Thread(SendFileFuncssss);//创建新线程 th.Start(socketWatch);//启动线程 th.IsBackground = true;//设置后台运行线程 } #endregion #region 根据客户端传输文件名发送指定文件 public void SendFileFuncssss(object obj) { Socket socket = obj as Socket; while (true) { Socket socketServices = socket.Accept(); byte[] buffer = new byte[1024]; int num = socketServices.Receive(buffer);//接收到字节数 string str = Encoding.UTF8.GetString(buffer, 1, num - 1);//接收到字符串 if (buffer[0] == 0)//表示接收到的是消息数据 { TxtAddContent(socketServices.RemoteEndPoint + "连接成功"); string FileName = str; if (FileName.Equals("AutoUpdater.xml"))//获取xml配置文件 { //发送XML文件到客户端 using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + FileName, FileMode.Open)) { byte[] arrFile = new byte[1024 * 1024 * 5]; int length = fs.Read(arrFile, 0, arrFile.Length); byte[] arrFileSend = new byte[length + 1]; arrFileSend[0] = 1; // 用来表示发送的是xml文件数据 Buffer.BlockCopy(arrFile, 0, arrFileSend, 1, length); socketServices.Send(arrFileSend);// 发送数据到客户端 } } if (!FileName.Equals("AutoUpdater.xml")) { //发送更新文件到客户端 using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "\\FileFolder\\" + FileName, FileMode.Open)) { byte[] arrFile = new byte[1024 * 1024 * 50]; int length = fs.Read(arrFile, 0, arrFile.Length);//获取文件长度 byte[] arrFileSend = new byte[length + 1]; arrFileSend[0] = 1; // 用来表示发送的是xml文件数据 Buffer.BlockCopy(arrFile, 0, arrFileSend, 1, length); socketServices.Send(arrFileSend);// 发送数据到服务端 } } } } } #endregion ``` 客户端代码: ``` Socket socketClient = obj as Socket; socketClient.Connect(ipEndPoint); #region 修改本地文件名称 string Oldpath = AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater.xml";//修改前名称 string Newpath = AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater_Back.xml";//修改后名称 if (File.Exists(Oldpath)) { File.Delete(Newpath); File.Move(Oldpath, Newpath);//更改文件名 } #endregion if (socketClient.Connected) { try { TxtReceiveAddContent("连接成功"); //发送链接成功提示 byte[] arrMsg = Encoding.UTF8.GetBytes("AutoUpdater.xml"); byte[] arrSendMsg = new byte[arrMsg.Length + 1];//加一位标识用于表示是文字消息还是文件 arrSendMsg[0] = 0; // 用来表示发送的是消息数据 Buffer.BlockCopy(arrMsg, 0, arrSendMsg, 1, arrMsg.Length); socketClient.Send(arrSendMsg); //获取文件 string dirPath = Application.StartupPath; byte[] buffer = new byte[1024 * 1024 * 5]; int lenght = socketClient.Receive(buffer); if (buffer[0] == 1) { using (FileStream fs = new FileStream(dirPath + "\\AutoUpdater.xml", FileMode.Create)) { fs.Write(buffer, 1, lenght - 1); } TxtReceiveAddContent("配置文件接收成功:AutoUpdater.xml");//追加提示备注 } #region 获取XML里需要更新的文件和需要删除的文件 List<string> updatelist = new List<string>();//需要更新的文件集合 List<string> deletelist = new List<string>();//需要更新的文件集合 //获取历史xml文件更新时间以及更新版本 XDocument Olddocument = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater_Back.xml"); //获取到XML的根元素进行操作 XElement Oldroot = Olddocument.Root; XElement Oldele = Oldroot.Element("UpdateInfo"); //获取旧更新时间标签的值 XElement OldUpdateTime = Oldele.Element("UpdateTime"); //获取旧版本号标签的值 XElement OldVersion = Oldele.Element("Version"); //获取最新xml文件更新时间以及更新版本 XDocument Newdocument = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater.xml"); //获取到XML的根元素进行操作 XElement Newroot = Newdocument.Root; XElement Newele = Newroot.Element("UpdateInfo"); //获取旧更新时间标签的值 XElement NewUpdateTime = Newele.Element("UpdateTime"); //获取旧版本号标签的值 XElement NewVersion = Newele.Element("Version"); if (NewUpdateTime != OldUpdateTime || NewVersion != OldVersion) { //获取需要更新的文件列表 XElement NewUpList = Newroot.Element("UpdateList"); IEnumerable<XElement> UpList = NewUpList.Elements(); foreach (XElement item in UpList) { updatelist.Add(item.Value); } //获取需要删除的文件列表 XElement NewDelList = Newroot.Element("DeleteList"); IEnumerable<XElement> DelList = NewDelList.Elements(); foreach (XElement item in DelList) { deletelist.Add(item.Value); } } #endregion #region 循环获取更新文件 for (int i = 0; i < updatelist.Count; i++) { //发送链接成功提示 byte[] FileName = Encoding.UTF8.GetBytes(updatelist[i]); byte[] SendFileName = new byte[FileName.Length + 1];//加一位标识用于表示是文字消息还是文件 SendFileName[0] = 0; // 用来表示发送的是消息数据 Buffer.BlockCopy(FileName, 0, SendFileName, 1, FileName.Length); socketClient.Send(SendFileName); //获取文件 string FilePath = Application.StartupPath + "\\WebFile"; byte[] bufferByFile = new byte[1024 * 1024 * 50]; int lenghtByFile = socketClient.Receive(bufferByFile); if (bufferByFile[0] == 1) { using (FileStream fs = new FileStream(FilePath + "\\" + updatelist[i], FileMode.Create)) { fs.Write(bufferByFile, 1, lenghtByFile - 1); } TxtReceiveAddContent("文件接收成功:" + updatelist[i]); } } #endregion #region 循环删除指定文件 for (int i = 0; i < deletelist.Count; i++) { try { string path = AppDomain.CurrentDomain.BaseDirectory + "\\WebFile\\" + deletelist[i]; File.Delete(path); TxtReceiveAddContent("删除文件[" + deletelist[i] + "]成功"); } catch (Exception) { TxtReceiveAddContent("删除文件[" + deletelist[i] + "]失败"); continue; } } #endregion } catch (Exception ex) { File.Move(Newpath, Oldpath);//连接失败,还原文件名 MessageBox.Show(ex.ToString()); throw; } ``` 调试在客户端进循环的时候服务端侦听不到了 刚接触socket,多谢大佬们解答
多线程socket编程的问题,使用BIO模式的话,一个线程只能处理一个Socket吗?
我在做一些网络编程相关的学习,写了一个Demo,类似于一个聊天室,有一个WebServer,多个Client,当Client发起连接时,Server创建一个线程来处理,由于Client特别多,我打算使用固定的5个线程来处理这些所有的Client,也就意味着一个线程可能负责处理多个Socket。 我原本的打算是一个Client轮询地去读取每个Socket的字节流,后来发现行不通,在读取第一个Socket的输入流时就卡住了,完全是阻塞的。 代码如下: ``` public void handle() throws IOException, InvalidProtocolException { byte[] buf = new byte[1024]; StringBuilder sb = new StringBuilder(); int readLength; try { for(;;){ readLength = in.read(buf); if (readLength > 0) { sb.append(new String(buf, 0, readLength)); } else { break; } } parse(sb.toString()); } catch (IOException e1) { throw e1; } catch (InvalidProtocolException e2) { throw e2; } } ``` 在in.read这一行处,完全被阻塞,无法做到轮询。 那么是否意味着使用BIO时,一个线程只能处理一个Socket,直到这个Socket关闭? 那么在很多个客户端的情况下,线程数不会爆炸多吗? 求解。
Android基于UDP传输协议的Socket编程,控制台报错
源代码 ``` private synchronized void sendData(final byte[] data) { DhcpInfo dhcpInfo = wifiManager.getDhcpInfo(); final String ip; if (dhcpInfo != null) { ip = intToIp(dhcpInfo.serverAddress); } else { ip = "0.0.0.0"; } new Thread(new Runnable() { @Override public void run() { try { InetAddress address = InetAddress.getByName(ip); DatagramSocket ds = new DatagramSocket(); DatagramPacket dp = new DatagramPacket (data, data.length, address,8080); ds.send(dp); ds.close(); } catch (IOException e) { e.printStackTrace(); } } }).start(); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } ``` Android Studio控制台报错 ``` I/qtaguid: Untagging socket 59 failed errno=-22 ``` ``` I/qtaguid: Untagging socket 61 failed errno=-22 ```
socket 网络编程传输文件
进行网络通信,socket编程,传输文件过程中,如何来通过调用函数来获得传输文件的大小,以及传输该文件相对应的时间,有什么好的办法吗?
java socket如何传递对象?
java socket如何传递对象?并跟着对象还传递字符串等信息
Java TCP控制投影机出现 Connection reset by peer: socket write error ?
1:Java tcp 在控制DP投影机时出现 Connection reset by peer: socket write error 2:关于这个问题从网上查了许多,没有准确的解决办法,本人代码中把该关闭的流全部关闭,socket也已经close掉了,第一遍在开启和关闭投影机时是正常的,可是第二遍之后就不正常了,抛出异常Connection reset by peer: socket write error,经过循环测试,发现在第12次开启和关闭又正常(一次性的开机关机),这就很难懂为什么了。。。 3:由于代码比较过,没有贴上代码,本人TCP代码就是常规的socket,没有做特殊的技术上优化,有没有大神能够给予一些指导意见。。在线等。。。
如何获取SOCKET对象的句柄
wince下用c编程,使用到的SOCKET变量为一整数,现要使用socket对象的句柄(指针类型),如何获取该句柄呢?望各位大神赐教
java中假设有JTextArea()经过socket传输
java中假设有JTextArea()经过socket传输如何区分输出文本是从哪个JTextArea传出来的,要加个监听吗
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
《阿里巴巴开发手册》读书笔记-编程规约
Java编程规约命名风格 命名风格 类名使用UpperCamelCase风格 方法名,参数名,成员变量,局部变量都统一使用lowerCamelcase风格 常量命名全部大写,单词间用下划线隔开, 力求语义表达完整清楚,不要嫌名字长 ...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Linux 命令(122)—— watch 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] watch(1) manual
Linux 命令(121)—— cal 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] cal(1) manual
记jsp+servlet+jdbc实现的新闻管理系统
1.工具:eclipse+SQLyog 2.介绍:实现的内容就是显示新闻的基本信息,然后一个增删改查的操作。 3.数据库表设计 列名 中文名称 数据类型 长度 非空 newsId 文章ID int 11 √ newsTitle 文章标题 varchar 20 √ newsContent 文章内容 text newsStatus 是否审核 varchar 10 news...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问