Welcome 微信登录

首页 / 操作系统 / Linux

多线程TCP的socket通信

多线程TCP的socket通信

应用多线程来实现服务器与多客户端之间的通信。基本步骤:1.服务器端创建ServerSocket,循环调用accept()等待客户端的连接2.客户端创建一个socket并请求和服务器端的连接3.服务器端接收客户端的请求,创建socket与该客户端建立专线连接4.建立连接的两个socket在一个单独的线程上对话5.服务器端继续等待新的客户端的连接Server.javapublicclassServer{publicstaticvoidmain(String[]...
基于TCP协议的socket通信

基于TCP协议的socket通信

一、服务器端1、创建serverSocket,即服务器端的socket,绑定指定的端口,并侦听此端口ServerSocket server = new ServerSocket(8888);2、调用accept()方法,开始侦听,等待客户端的连接,在未连接成功之前,处于阻塞状态,返回的socket,用于与客户端连接Socket socket = server.accept();3、获取输入流,用来读取客户端发来的信息InputStream is = soc...
Spring IOC的简单实现

Spring IOC的简单实现

IoC则是一种 软件设计模式,简单来说Spring通过工厂+反射来实现IoC。原理简单说明:其实就是通过解析xml文件,通过反射创建出我们所需要的bean,再将这些bean挨个放到集合中,然后对外提供一个getBean()方法,以便我们获得这bean。通俗来讲就如同婚姻介绍所,只需要告诉它找个什么样的女朋友,然后婚介就会按照我们的要求,提供一个mm,如果婚介给我们的人选不符合要求,我们就会抛出异常。简单实现:1.需要引用maven依赖: <depen...
C++ 头文件系列(vector)

C++ 头文件系列(vector)

简介vector头文件包含vector的类模版以及该模版的显示特化版本vector< bool >。vector是C++容器库中非常通用的一种容器,如果你不知道该决定使用哪一种容器,或者没有足够的理由使用其它容器,那么就用它,没错的!从整体上来看,vector就像是一种动态数组,它拥有数组的所有功能并且能够动态增长。 它主要有以下性质:序列性容器动态增长可定制的内存分配策略内存分配器如果在一些特殊的应用场景中,默认的内存分配策略拉低了运行效率,...
C++ 头文件系列(map)

C++ 头文件系列(map)

简介该头文件包含两个概念相似的容器----map、multimap。 而这两个容器反映的概念就是 映射。这两个容器 相同 的属性有:关联性映射动态增长键(Key)唯一性这两个不相同的属性是:映射关系容器类别既然说到关联性容器,自然得说说标准库的容器类别。 C++库容器主要能分成以下几类:序列性容器: 将存储对象组织成线性模型,使用户能够像线性数组那样存取。关联性容器: 将存储内容以键(Key)相关联 ,通过键来存取内容。乱序容器: 存储对象以乱序存储,不具...
C++ 头文件系列(forward_list)

C++ 头文件系列(forward_list)

简介forwrad_list字面意思为前向列表,但实际上它是一种单向列表,只能从单一方向遍历。单向链表实现forward_list内部是用单向列表实现的,并且设计该库的时候就是以近乎手写的单向链表的运行效率(时间上和空间上)为目的的。 这导致了它是唯一一个C++标准库容器中没有size成员函数的容器, 因为维护这样一个信息会造成效率上的轻微损失。作为单向链表,它有以下几个属性:潜在可能的非连续内存分配线性时间的元素位置获取常数时间的元素插入、删除、移动与l...
C++ 头文件系列(list)

C++ 头文件系列(list)

简介list实现的实际上是双向链表,所以叫它doubly-linked list也许更好。 因为实现的是双向链表,所以它有两个非常重要的性质:双向链表双向双向意味着----给定一个元素,我们能够知道后一个元素和前一个元素。而这在单项链表里是不可能实现的,因为单向链表只维护了单个方向的元素信息。这种具体实现决定了,list的迭代器是双向迭代器(Bidirectional Iterator)。链表优点链表, 即 链?表。 它暗示了链接的实质,也就是说,链表中的...
C++ 头文件系列(stack)

C++ 头文件系列(stack)

简介该头文件只含有一个类模版stack, 它实现栈的概念,是一个容器适配器(说实话,在写这篇随笔之前我都不知道有这么个类模版)。栈栈只有一个重要的特性:LIFO(last-in first-out): 后入栈的元素先出栈。栈有两个典型的操作----入栈和出栈,一般来说我们认为这两个操作都发生在栈的顶端(top)。操作对应的函数入栈 -> push出栈 -> pop(没错,这个头文件的内容确实少)本文永久更新链接地址:http://www.lin...
C++ 头文件系列(queue)

C++ 头文件系列(queue)

简介这个头文件定义了两个跟队列有关的类----quque、priority_queue,分别实现的是队列 和 优先队列这两个概念。 但是与这两个类模版与其它类模版(vector、array等)最大的不同是,它们是 容器适配器。容器适配器顾名思义,容器适配器是对容器的适配,从代码层面来讲,它就是对容器的再封装。 因此,这些容器适配器实际上都是由其他容器的功能实现的。 不难看出, 容器适配器所具有的功能是内部容器功能的子集。普通的类封装一般是为了封装成特定问题...
C++ 头文件系列(deque)

C++ 头文件系列(deque)

简介deque是double ended queue(即双端队列)的简称。 就像C++中的大部分容器的一样,deque具有以下属性:顺序的(sequence)动态增长的(dynamic growing)自定义内存分配的(allocator-aware)动态内存分配容器的顺序性(或序列性)和内存分配器我们留到以后再说,这里我们先来探讨下容器的动态增长需求所带来的动态内存分配性质。动态内存分配在这里的意思是容器的大小会随着需要而增长,这经常伴随着一些内存需求性...
Android Studio导入Eclipse项目的两种方法

Android Studio导入Eclipse项目的两种方法

Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Studio。1. 直接导入打开Android Studio,如果里面已经打开了项目,选择关闭当前的项目,会弹出一个Welcome对话框:选择Import project (Eclipse ADT, Gradle, etc.),然后再选择要导入的Eclipse项目:...
Go并发编程实践

Go并发编程实践

前言并发编程一直是Golang区别与其他语言的很大优势,也是实际工作场景中经常遇到的。近日笔者在组内分享了我们常见的并发场景,及代码示例,以期望大家能在遇到相同场景下,能快速的想到解决方案,或者是拿这些方案与自己实现的比较,取长补短。现整理出来与大家共享。简单并发场景很多时候,我们只想并发的做一件事情,比如测试某个接口的是否支持并发。那么我们就可以这么做:func RunScenario1() { count := 10 var wg sync.WaitG...
Pivotal发布包含反应式数据访问特性的新一代Spring Data的第一个里程碑版本

Pivotal发布包含反应式数据访问特性的新一代Spring Data的第一个里程碑版本

Pivotal最近发布了下一代Spring Data项目的第一个里程碑版本,他们将其称之为Release Train Kay。在发布文档中,这样写到:这是一个特殊的释放版本,会带领我们驶往新一代的Spring Data,在前行的过程中也会包含几项破坏性的变更。重要的变更包括:基础设施升级,完全支持:Java 8Spring 5对如下数据库提供了反应式(Reactive)支持:MongoDBApache CassandraRedis废弃了JRedis和SRP...
Golang 语法学习笔记

Golang 语法学习笔记

Golang 语法学习笔记包、变量和函数。包每个 Go 程序都是由包组成的。程序运行的入口是包 main。包名与导入路径的最后一个目录一致。"math/rand" 包由 package rand 语句开始。import ( "fmt" "math/rand" )用圆括号组合了导入,是“打包”导入语句。在 Go 中,首字母大写的名称是被导出的。函数函数可以没有参数或接受多个参数。注意类型在变量名 之后。func add(x int, ...
枚举全排列(包括数列中有重复数)的C语言实现

枚举全排列(包括数列中有重复数)的C语言实现

据说是用了DFS的思想……然鹅并不知道这是DFS。主要就是选取一个数放到数组相应位置上,然后递归的排列剩下的数组,将剩下的数组递归排列完了之后再把数放回去,然后这一层递归就返回了……有重复数的话遇到重复的不要重复放置就好了……//// main.c// Full Permutation//// Created by 余南龙 on 2016/12/13.// Copyrigh...
Linux编程之PING的实现

Linux编程之PING的实现

PING(Packet InterNet Groper)中文名为因特网包探索器,是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把回复报文传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。所以,我们想知道我这台主机能不能和另一台进行通信,我们首先需要确认的是我们两台主机间的网络是不是通的,也就是我说的话能不能传到你那里,这是双方进行通信的前提。在...
<< 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 >>