自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 【无标题】

C++知识const小结:对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const 引用传递”,目的是提高效率。例如将void func(A a) 改为void func(const A &a)。对于内部数据类型的输入参数,不要将“值传递”的方式改为“const 引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。例如void func(int x) 不应该改为void func(const int &x)。以上解决了两个面试问题:(1)如果函数需要传入

2021-11-29 15:27:03 345

原创 UDP通信

UDP通信UDP协议提供了一种面向无连接模式的通信。由于这种特性,使用UDP协议进行传输时的开销更小,但同时并不能保证被传输的数据能够到达目的地。udp服务器的顺序应该是1.创建socket2.绑定ip以及端口3.接收数据4.发送数据udp客户端顺序是1.创建socket2.发送数据3.接收数据4.关闭socket所设计的函数recvfrom()ssize_t recvfrom(int sockfd,void *buf, size_t len, int flags,struct

2021-05-09 19:56:27 70

原创 TCP通信

TCP通信Socket 起源于 Unix,而Unix基本哲学之一就是一切皆文件,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符,下图就是基于C/S架构的tcp通信模型server的生命周期:创建socket绑定地址,端口监听网络连接接收连接关闭连接clinet的生命周期创建socket绑定地址发起连接关闭连接

2021-05-08 13:42:46 82

原创 Socket通信学习笔记

Socket通信学习笔记之前写了网络协议架构,详细的写了tcp/ip协议,因为socket是建立在tcp/ip协议基础之上,所以先阅读物联网网络通信Socket的位置既然是建立在tcp/ip之上,那么具体在哪个位置呢?有人将其抽象后安排在应用层和运输层之间我们都知道Socket通信是基于C/S架构的,那么如何利用Socket的一些函数实现服务器和客户端通信,这就不得不提TCP的三次握手和四次挥手。三次握手第一次握手:客户端发出请求,发出syn = 1, 并产生一个seq number随机值,

2021-05-07 12:14:08 475

原创 物联网网络通信

物联网网络通信网络通信是当代物联网发展最重要的一环,它是将各种设备交流信息传递的媒介,物联网通信常用的架构是CS架构,如套接字socket就是为了C/S架构软件的开发。实现客户端client和服务器server的通信。网络协议架构在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。具体怎么理解呢?首先从物理层开

2021-05-06 20:39:16 390 1

原创 Android Activity生命周期探寻

Android Activity生命周期探寻返回栈Android是通过使用任务(task)来管理Activity的,一个task就是一组存放在栈里的Activity集合,这个栈也叫返回栈(back stack),在默认情况下每当启动一个新的Activity,它就会在返回栈的栈顶出现,每当使用back或者调用finish()方法时候,栈顶的Activity就会出栈,前一个出现的Activity就会重新回到栈顶的位置。Activity状态1.运行状态当Activity位于栈顶,就是运行状态,该状态不

2021-04-21 13:13:04 139

原创 Kotlin入门学习

Kotlin学习变量val (value)的缩写,用它来申明一个不可变的变量 在初始化赋值后不可以再变var (variable)的缩写, 用来申明一个可变的变量package com.ybr.helloworldfun main() { val a = 10 //会自动推导 为 整形变量 若 把字符串赋值给a 则a被推导为字符串 println("a = " + a)}但是自动推导不是一直都可以 若延迟赋值的话,需要显示地声明变量类型val a: Int = 10类

2021-04-18 12:10:56 214 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除