程序员常说的底层是指什么?
我们现在开发软件的时候 , 有多种库或者说是组件可引用 , 这样就会提高软件开发的效率 , 当然也会降低开发的难度 。所谓的“底层开发” , 一般指的是“原生开发” , 也就是不用或者少用别人大量封装的代码库来进行的软件开发!比如对于WINDOWS应用程序的开发来说 , 用Visual C或者C#之类的进行开发 , 它们就已经对系统的具体实现 , 进行了大量的封装 , 对于开发者来说 , 是透明的 , 不知道它的具体执行过程是怎么样的 。
但如果使用WINDOWS系统提供的原始API进行这样的开发 , 那你就要掌握系统的具体执行过程 , 要知道它的原理 , 这样才能进行软件的开发 。而这是提升一个人系统开发能力的最佳途径!所以 , 作为专业的软件开发人员 , 应该从所谓的“底层”去了解系统是如何运行的 , 这样 , 我们在进行软件开发的时候 , 就可以利用起来 , 对代码进行改进、优化 , 提高软件的运行效率与健壮性 。
Java开发需要哪些TCP/IP知识?
Java开发需要哪些TCP/IP知识 , 可能题主是想做一些Java网络编程方面的开发 。本人做过一些网络编程的项目 , 对网络编程有比较深入的了解 。个人感觉可能需要以下几方面的知识:第一、Java网络编程的基础 。TCP相关的Socket、ServerSocket , UDP相关的DatagramSocket的使用 , 这是基础 。
通过这些的使用可以对Java网络编程有基础的了解 。第二、IP地址、端口号的基础知识 。了解什么是IP地址 , 什么是端口号 。既然做网络编程开发 , 就需要知道IP地址 , 知道端口号 。服务端都有自己的监听端口 。客户端连接服务端需要知道服务端的IP地址和端口号 。第三、基本的命令使用 。例如IP地址查看命令 , 端口对应TCP连接情况查看命令 。
ifconfig(Linux)\ipconfig(windows) 。端口号查看netstat等 。telnet(windows)检测端口监听是否成功 。ping检测对端IP地址是否通 。第四、防火墙的开关和简单配置 。很多情况下会发现明明对端IP地址是可以ping通 , 但是就是连接不上 , 这个时候很有可能是防火墙配置问题 。
这个时候可以关闭防火墙 , 配置简单的路由规则 , 或者清空防火墙的理由规则 。第五、TCP/IP协议的基础知识 。了解TCP/IP协议之间的不同层次之间是如何工作的 , 有助于理解消息的传送 。了解IP协议、TCP协议格式 。了解TCP协议的三次握手和四次握手 。了解网络连接的不同状态CLOSE_WAIT、LISTEN等 。
【DatagramSocket,datagramsocket】第六、IO只是基础 , NIO使用采用更广泛 。官方认为NIO为新IO , 但很多人将其理解为Non-block 。大部分网络编程会使用netty或者mina框架来代替使用jdk的nio编程 。第七、心跳的使用 。大部分网络连接通过心跳来检测连接的状态 , 这个也是一个基础知识 。第八、netty框架的使用 。学会使用netty框架 。
netty框架使用更为广泛 。第九、拆包和粘包的使用 。数据从一台机器发送另一台机器 , 中间需要使用拆包和粘包来完整的接收和处理业务消息 。第十、编解码的使用 。可以使用多种编解码技术 。例如protobuf、avro、thrift等等等 , 也可以自定义 。还有以下大小端的概念 , 还有数据类型之间的转换 , 例如int与byte数组互转 , long与byte数组的互转等等 。