首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

Android开发需要了解的网络协议

TCP/IP 分层网络 1. 应用层 应用层决定了向用户提供应用服务时通信的活动。 TCP/IP 协议族内预存了各类通用的应用服务。例如:HTTP、SSH、FTP 等。 2. 传输层 应用层的下一层就是传输层,提供处于网络连接中的两台计算机之间的数据传输 常见的传输层协议有 TCP、UDP 等。 3. 网络层 网络层又称网络互连层。 网络层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方的计算机,并把数据包传送给对方。 网络层的作用就是在众多选项内选择一条合适的传输路径。 4. 链路层 链路层又称数据链路层,网络接口层 用来处理连接网络的硬件部分,控制操作系统、硬件的设备驱动。 我们能够看到的交换机、网线、光纤等也属于物理层 TCP 是什么 TCP 的全称是传输控制协议(Transmission Control Protocol)位于传输层,它是一种有连接的协议,提供可靠的字节流服务[注1]。而可靠的传输服务是指,能够将数据准确可靠的传递给对方。数据为何能准确无误的送达目标处,就是因为 TCP 协议采用了三次握手策略,当然除了三次握手,TCP 协议还有其他手段来保证通信的可靠性 TCP 三次握手 发送端首先发送一个带 SYN 标志的数据包给对方 接收端收到标有 SYN 的数据包后回传一个带有 SYN/ACK 标志的数据包表示确认信息 发送端在发送一个带有 ACK 标志的数据包给接收端表示握手成功 如果握手成功后连接断开,再次连接还需要重新握手 TCP 四次挥手 由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。 第一次挥手: Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 第二次挥手: Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。 第三次挥手: Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。 第四次挥手: Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。 时序图 UDP 是什么 UDP 的全称是用户数据报协议(User Datagram Protocol)同样位于传输层,它是一种无连接的协议,提供面向事务的简单不可靠信息传送服务 UDP 报头 TCP 与 UDP 的差异 TCP 是有连接的而 UDP 是无连接的 TCP 是可靠的连接而 UDP 是不可靠的 UDP 不需要各种可靠性策略所以相比 TCP 性能要高不少 因为 UDP 的连接步骤少,报头内容少所以相比 TCP 更加的省流量 TCP 只能一对一连接传递消息而 UDP 可以一对一、一对多、多对一和多对多 参考 参考资料 https://blog.csdn.net/huangxy10/article/details/8012180 抓包软件 Wireshark 注1:字节流服务是指,为了方便传输,将大块数据分割成报文段为单位的数据包进行管理的服务

优秀的个人博客,低调大师

如何使用区块链技术进行项目开发

区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的分布式数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足了共享经济的一个必须要求——低成本的可信环境。 本文以联盟链为例,描述了实践一个联盟链的基本过程。 总体思路 首先要确定这个区块链的类型,是公证型区块链还是价值型? 公证型区块链是指仅限一些关键数据自证、披露、防篡改等功能的区块链,通常是在价值型区块链中附带的功能,也可以单独扩展,用于公示公开等。价值型区块链是指可以进行资产所有权转移的一种记账账本。 如果确定是价值型区块链,我们又需要确定目标区块链的总体定位:到底是一个普适的价值传输区块链,还是特定场景下的区块链?如果是特定场景下的区块链,我们通常推荐超级账本作为技术原型,如果

优秀的个人博客,低调大师

iOS开发之TabBar再次点击实现刷新

需求 之前已经实现了自定义TabBar,如图所示: 自定义TabBar.jpeg 现在需要实现一个类似今日头条TabBar的功能 —— 如果继续点击当前TabBar的选中项,那么该界面需要刷新UITableView。 分析 既然已经自定义了TabBar,那么最简单的就是在自定义中给TabBar中需要的UITabBarButton添加事件 —— 点击就发送通知,并且将当前的索引传出去。对应的界面监听通知,拿到索引比对,如果和当前索引一致,就执行对应的操作。 实现 自定义TabBar的layoutSubviews中绑定事件 - (void)layoutSubviews { [super layoutSubviews]; for (UIButton * tabBarButton in self.subviews) { if ([tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton")]) { //监听tabbar的点击 //绑定tag 标识 tabBarButton.tag = index; //监听tabbar的点击 [tabBarButton addTarget:self action:@selector(tabBarButtonClick:) forControlEvents:UIControlEventTouchUpInside]; } } } 监听事件,发送通知 - (void)tabBarButtonClick:(UIControl *)tabBarBtn{ //判断当前按钮是否为上一个按钮 //再次点击同一个item时发送通知出去 对应的VC捕获并判断 if (self.previousClickedTag == tabBarBtn.tag) { [[NSNotificationCenter defaultCenter] postNotificationName: @"DoubleClickTabbarItemNotification" object:@(tabBarBtn.tag)]; } self.previousClickedTag = tabBarBtn.tag; } 对应的UIViewController监听通知 - (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(doubleClickTab:) name:@"DoubleClickTabbarItemNotification" object:nil]; } 监听到通知,比对后执行操作 -(void)doubleClickTab:(NSNotification *)notification{ //这里有个坑 就是直接用NSInteger接收会有问题 数字不对 //因为上个界面传过来的时候封装成了对象,所以用NSNumber接收后再取值 NSNumber *index = notification.object; if ([index intValue] == 1) { //刷新 } } 2018.4.28 补充 本文被转载后,有很多好心的读者进行批评指正:这种方式不够优雅,不够简单。怎么最简单呢?其实只要重写UITabBarController的代理就可以实现,方法如下 //这个是UITabBarController的代理方法 - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ // 判断哪个界面要需要再次点击刷新,这里以第一个VC为例 if ([tabBarController.selectedViewController isEqual:[tabBarController.viewControllers firstObject]]) { // 判断再次选中的是否为当前的控制器 if ([viewController isEqual:tabBarController.selectedViewController]) { // 执行操作 NSLog(@"刷新界面"); return NO; } } return YES; }

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册