当前位置: 首页 > news >正文

建站公司哪家做出来的网站好域名和空间都有了怎么做网站

建站公司哪家做出来的网站好,域名和空间都有了怎么做网站,做网站书面报告申请,系统开发费用一、select和epoll原理分析 外设设备网卡、鼠标、键盘等通过总线写到内存中#xff0c;中间就有DMA拷贝#xff0c;操作系统怎么知道内存中有数据了#xff0c;这就需要操作系统通过中断机制确定#xff0c;如果有中断信号过来#xff0c;cpu会首先打断用户程序执行…一、select和epoll原理分析 外设设备网卡、鼠标、键盘等通过总线写到内存中中间就有DMA拷贝操作系统怎么知道内存中有数据了这就需要操作系统通过中断机制确定如果有中断信号过来cpu会首先打断用户程序执行响应硬件的程序的信号然后再恢复用户程序的执行不同外设设备对应的驱动程序不同发送的中断信号也就不同操作系统根据对应信号做出相应的处理 1、操作系统如何处理中断请求 内核和设备驱动是通过中断方式来处理的。所谓中断可以理解当设备上有数据到达时会给cpu的相关引脚上发一个电压变化以通知cpu来处理数据硬件产生的信号需要cpu立马处理否则数据可能丢失 网络模块比较耗时中断时会过度占用cpu导致cpu无法响应其它设备因此在Linux中段处理函数分上半部和下半部上半部通知cpu下半部响应 2、进程阻塞 操作系统为了支持多任务实现进程调度功能会把进程分为“运行”和“等待”等几种状态。运行状态是获取cpu使用权正在执行的代码是运行状态等待状态是阻塞状态详情参照下图个人理解 3、内核接收网络数据 一旦有cpu响应中断操作就会拷贝数据到内存经过协议层的解析到socket应用层就有了数据就会唤醒进程A重新进入到工作队列中 4、同时监视多个socket的简单方法 select实现思路很直接。假如程序同时监视socket1、socket2、socket3那么调用select之后操作系统把进程A分别加入到这三个socket的等待列表中当任何一个socket收到数据都会中断程序唤醒进程A所有的socket的等待队列中的进程A都会被移除加入到工作队列中 如上图所示进程A只知道Socket有数据过来并不知道哪些Socket有数据所以就需要遍历Socket列表并且处于遍历的性能考虑select最大只能监视1024个Socket 5、epoll的原理 当执行epoll_create方法时内核会创建一个eventpoll对象当Socket收到数据后中断程序会操作eventpoll对象而不直接操作进程中断程序会给rdlist引用收到的数据Socket2、Socket3当执行epoll_wait如果rdlist已经引用了Socket那么epoll_wait直接返回如果rdlist为空阻塞进程 当Socket接收到数据中断程序一方面修改rdlist另一个方面唤醒 eventpoll等待队列的线程线程A回到工作队列中去由于rdlist引用了接收了数据的Socket所以不用对所有的进行遍历 二、Netty基础 1、Netty的组件 Bootstrap是Netty框架的启动类和主入口类分为客户端类Bootstrap和服务器类ServerBootstrap两种。EventLoop暂时可以看成一个线程、EventLoopGroup 自然就可以看成线程组。Channel是Java NIO的一个基本构造。ChannelHandler和ChannelPipeline每个事件都可以被分发给 ChannelHandler 类中的某个用户实现的方法既然事件分为 入站和出站用来处理事件的 ChannelHandler 也被分为可以处理入站事件的 Handler 和出站 事件的 Handler当然有些 Handler 既可以处理入站也可以处理出站这些 ChannelHandler 都放在 ChannelPipeline 中统一管理ChannelFuture异步获取结果的类类似于JDK的java.util.concurrent.Future类 2、使用示例 dependencygroupIdio.netty/groupIdartifactIdnetty-all/artifactIdversion4.1.42.Final /versionscopecompile/scope /dependency 服务端 public class EchoServer {private static final Logger LOG LoggerFactory.getLogger(EchoServer.class);private final int port;public EchoServer(int port) {this.port port;}public static void main(String[] args) throws InterruptedException {int port 9999;EchoServer echoServer new EchoServer(port);LOG.info(服务器即将启动);echoServer.start();LOG.info(服务器关闭);}public void start() throws InterruptedException {/*线程组*/EventLoopGroup group new NioEventLoopGroup();try {/*服务端启动必备*/ServerBootstrap b new ServerBootstrap();b.group(group).channel(NioServerSocketChannel.class).localAddress(new InetSocketAddress(port)).childHandler(new ChannelInitializerSocketChannel() {Overrideprotected void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(new EchoServerHandler());}});/*异步绑定到服务器sync()会阻塞到完成*/ChannelFuture f b.bind().sync();LOG.info(服务器启动完成。);/*阻塞当前线程直到服务器的ServerChannel被关闭*/f.channel().closeFuture().sync();} finally {group.shutdownGracefully().sync();}}} 客户端 public class EchoClient {private final int port;private final String host;public EchoClient(int port, String host) {this.port port;this.host host;}public void start() throws InterruptedException {/*线程组*/EventLoopGroup group new NioEventLoopGroup();try {/*客户端启动必备和服务器的不同点*/Bootstrap b new Bootstrap();b.group(group).channel(NioSocketChannel.class)/*指定使用NIO的通信模式*//*指定服务器的IP地址和端口和服务器的不同点*/.remoteAddress(new InetSocketAddress(host,port))/*和服务器的不同点*/.handler(new ChannelInitializerSocketChannel() {Overrideprotected void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(new EchoClientHandler());}});/*异步连接到服务器sync()会阻塞到完成和服务器的不同点*/ChannelFuture f b.connect().sync();f.channel().closeFuture().sync();/*阻塞当前线程直到客户端的Channel被关闭*/} finally {group.shutdownGracefully().sync();}}public static void main(String[] args) throws InterruptedException {new EchoClient(9999,127.0.0.1).start();} } 服务端的ChannelHandler public class EchoServerHandler extends ChannelInboundHandlerAdapter {Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {ByteBuf in (ByteBuf)msg;System.out.println(server accept : in.toString(CharsetUtil.UTF_8));ctx.writeAndFlush(in);//ctx.close();}Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {System.out.println(连接已建立);super.channelActive(ctx);}Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {cause.printStackTrace();ctx.close();} } 客户端的ChannelHandler public class EchoClientHandler extends SimpleChannelInboundHandlerByteBuf {/*读取到网络数据后进行业务处理,并关闭连接*/Overrideprotected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {System.out.println(client Acceptmsg.toString(CharsetUtil.UTF_8));//关闭连接///ctx.close();}/*channel活跃后做业务处理*/Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {ctx.writeAndFlush(Unpooled.copiedBuffer(Hello,Netty,CharsetUtil.UTF_8)); // ctx.pipeline().write() // ctx.channel().write()ctx.alloc().buffer();} }
http://www.hkea.cn/news/14280240/

相关文章:

  • 宝安做棋牌网站建设多少钱网站引流怎么做的
  • 信息化和网站建设管理工作情况WordPress没有必要缓存插件
  • 宜昌最权威网站建设公司门户网站解决方案
  • 网站中的冒号自己 做网站学什么 平面设计
  • 网站如何集成微信支付wordpress支付界面出现500
  • 网站目录文件夹中信建设有限责任公司陶杨
  • 招商网站设计钢结构
  • 做纺织外贸哪个贸易网站好企业网站营销的实现方式解读
  • 北京网站设计网站设计公司海口免费建站
  • 岳阳网站建设解决方案wordpress调用搜索结果
  • 网站加alt属性对优化有影响吗长春专业网站制作公司
  • 专做化妆品网站唯品会网站建设方案
  • 李连杰做的功夫网站黄骅港汽车站客车时刻表
  • 旅游信息管理网站开发文件WordPress页面增加底部栏
  • 阿里云电影网站建设教程e福州是哪个公司开发
  • 搞一个卖东西的网站怎么做网站定制设计方案
  • 网站开发质保金关键词优化软件排行
  • 中山网站的优化云南网直播
  • 扬中网站哪家做的好网站怎么做才算精致
  • 哪家公司做跳转网站qq推广群
  • 网站开发的图标织梦网站后台密码
  • 免费微网站制作教程视频做58网站怎么赚钱吗
  • 昆山做轮胎网站投票网站开发的背景和意义
  • 网站开发最后五个阶段方案模板网站
  • 建设银行给税对账在什么网站杭州行业网页设计公司
  • 微信群网站有哪些天津网站建设设计开发公司
  • 就业服务工作站建设规范鞍山一地发布最新通知
  • 网站首页源码十大美妆电商平台
  • 蚌埠北京网站建设网站流量多少
  • 做航模的网站信阳企业网站开发