首页
学习
活动
专区
圈层
工具
发布

聊一聊Socket通信基本原理

应用层和内核互通的机制,就是通过 Socket 系统调用。所以经常有人会问,Socket 属于哪一层,其实它哪一层都不属于,它属于操作系统的概念,而非网络协议分层的概念。...在客户端浏览器,我们将请求封装为 HTTP 协议,通过 Socket 发送到内核。...应用层通过 Socket 监听某个端口,因而读取的时候,内核会根据 TCP 头中的端口号,将网络包发给相应的应用。HTTP 层的头和正文,是应用层来解析的。...当应用层处理完 HTTP 的请求,会将结果仍然封装为 HTTP 的网络包,通过 Socket 接口,发送给内核。...在 Linux 服务器 A 上,经过层层解封装,通过 socket 接口,根据客户端的随机端口号,发送给客户端的应用程序,浏览器。于是浏览器就能够显示出一个绚丽多彩的页面了。

37200
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    聊一聊最难的设计模式 - 单例模式

    很多人上来肯定一脸懵逼,因为在你的印象中,单例模式实现起来还是很简单的。不要着急,慢慢往下看,你就知道为什么我说它最难了。 1. 基本概念 单例模式是一种常用的创建型设计模式。...这不就清楚了嘛,有readResolve()方法的时候,直接通过调用该方法返回了单例对象,那我们处理起来也就简单了,为我们的单例类添加一个方法即可。...该方法完美解决了序列化及反射对单例模式的破坏。...至此我们也就明白了,为什么 Enum 单例可以完美防止序列化及反射对单例模式的破坏了。 OK 了,我们再来搞两个相关的东西 10....基本的单例模式的实现:懒汉式和饿汉式。 针对多线程下的单例模式线程安全的讨论。 序列化和反序列化对单例模式的破坏。 反射对单例模式的破坏。 Enum 枚举单例。 单例容器。

    42920

    Hi,我们再来聊一聊Java的单例吧

    什么是单例? 单例对象的类必须保证只有一个实例存在——这是维基百科上对单例的定义,这也可以作为对意图实现单例模式的代码进行检验的标准。...对单例的实现可以分为两大类——懒汉式和饿汉式,他们的区别在于: 懒汉式:指全局的单例实例在第一次被使用时构建。 饿汉式:指全局的单例实例在类装载时构建。...从它们的区别也能看出来,日常我们使用的较多的应该是懒汉式的单例,毕竟按需加载才能做到资源的最大化利用嘛。 3. 懒汉式单例 先来看一下懒汉式单例的实现方式。...饿汉式单例 下面再聊了解一下饿汉式的单例。 如上所说,饿汉式单例是指:指全局的单例实例在类装载时构建的实现方式。...总结 OK,看到这里,你还会觉得单例模式是最简单的设计模式了么?再回头看一下你之前代码中的单例实现,觉得是无懈可击的么? 可能我们在实际的开发中,对单例的实现并没有那么严格的要求。

    46910

    Hi,我们再来聊一聊Java的单例吧

    什么是单例? 单例对象的类必须保证只有一个实例存在——这是维基百科上对单例的定义,这也可以作为对意图实现单例模式的代码进行检验的标准。...对单例的实现可以分为两大类——懒汉式和饿汉式,他们的区别在于: 懒汉式:指全局的单例实例在第一次被使用时构建。 饿汉式:指全局的单例实例在类装载时构建。...从它们的区别也能看出来,日常我们使用的较多的应该是懒汉式的单例,毕竟按需加载才能做到资源的最大化利用嘛~ 3. 懒汉式单例 先来看一下懒汉式单例的实现方式。...饿汉式单例 下面再聊了解一下饿汉式的单例。 如上所说,饿汉式单例是指:指全局的单例实例在类装载时构建的实现方式。...总结 OK,看到这里,你还会觉得单例模式是最简单的设计模式了么?再回头看一下你之前代码中的单例实现,觉得是无懈可击的么? 可能我们在实际的开发中,对单例的实现并没有那么严格的要求。

    45610

    「聊设计模式」之单例模式(Singleton)

    本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶,欢迎持续关注&&收藏&&订阅! 大家下午好,我是bug菌,今天我们继续聊设计模式。...本文将会介绍单例模式的概念以及如何在Java语言中实现单例模式。 摘要   单例模式是一种创建型设计模式,在一个系统中,保证一个类仅有一个实例,并提供一个全局的访问点。...单例模式缺点 单例模式需要在程序运行之前就创建好实例,对于那些复杂并且需要依赖外部环境的单例模式(比如需要从网络获取配置文件的单例模式),会增加程序的复杂度。...饿汉式 VS 懒汉式   饿汉式单例模式和懒汉式单例模式都是用于实现对象的单例模式,其差异在于对象的创建时间和线程安全性。 饿汉式单例模式   在程序启动时就创建了单例对象,因此被称为“饿汉式”。...☀️建议/推荐你   如果想系统性的全面学习设计模式,建议小伙伴们直接毫无顾忌的关注这个专栏《聊设计模式》,无论你是想提升自己的编程技术,还是渴望更好地理解代码背后的设计思想,本专栏都会为你提供实用的知识和启发

    65042

    用 abstract unix socket 实现进程单实例运行

    二,abstract namespace unix socket http://linux.die.net/man/7/unix unix socket 有3种: 基于文件的 socketpair 创建的...,匿名的 abstract namespace 的,Linux特有 Linux 下, AF_UNIX socket 支持一种特殊的 abstract namespace unix socket 。...相比 普通的基于文件系统的 unix socket,abstract namespace unix socket : 没有磁盘文件 进程挂了以后自动删除,无残留文件 无需担心与 文件系统上的文件冲突,不需要关心文件系统上的绝对路径是否存在的问题...在 lsof 的结果里面看起来,就是有一些 类似 @test_abstract_ns 这样的 文件项 代码中使用也很简单, abstract namespace unix socket 在 bind...三,代码 于是我用 abstract unix socket 实现了一个 SysSem 工具类( 一个 system 范围的 semaphore ), 用来: 让一个程序只启动一个实例。

    1.5K10

    钉钉机器人单聊实现互动卡片推送

    而采用卡片通知又分群聊和单聊场景. 并且卡片通知整个流程也挺曲折, 下面我将 把我走过的坑重新梳理下, 让更多需要的人更快搭建此场景....因为主要介绍的是钉钉机器人单聊发送卡片业务实现, 所以在这里简单提一下. 钉钉创建待办案例代码地址 经过自己自测发现, 钉钉现在做逻辑是, 如果在待办中有配置pc端和app的跳转url....因为以上的原因, 我们觉得采用钉钉卡片, 以微应用或机器人的形式进行单聊发送....机 器人单聊和场域相关的参数好不容易补充好, 结果最终还是请求失败. 但是在阅读官方文档的时, 无意中发现, 在机器人这一章节, 有发送卡片的功能以及接口. 因此就在这里测试了....感兴趣的也可以看看 DingTalk钉钉机器人单聊互动卡片消息的一次实现(附仓库). 基于该博主的demo代码.

    3.8K30
    领券