精华内容
下载资源
问答
  • 优化页面访问速度(三) ——服务端优化,优化访问速度优化页面访问速度(三)——服务端优化一、概述服务端的优化,主要可以通过消息队列、减少数据库请求(缓存)、并发处理、页面静态化等方式处理。二、消息队列1、解决...

    优化页面访问速度(三) ——服务端优化,优化访问速度

    优化页面访问速度(三)

    ——服务端优化

    一、概述

    服务端的优化,主要可以通过消息队列、减少数据库请求(缓存)、并发处理、页面静态化等方式处理。

    二、消息队列

    1、解决问题

    消息队列(Message Queue,MQ)有许多不同的实现方式,可以用rabbitmq、activemq、rocketmq,也可以用任务分发系统gearman。

    消息队列主要是解决消息的异步发送,即对于某个系统不需要关心的内容,只需要发布一个处理完毕的消息,带上一些参数,有需要的系统自行订阅。例如一些任务执行完成的回调函数,就可以用mq来实现异步回调。

    2、处理方式

    以rabbitmq为例。Rabbitmq的服务器,可以认为是消息的生产者和消费者的中转平台。生产者发布消息给rabbitmq服务器的交换机(exchange),发布的时候会定义一些路由规则(routing key)。Rabbitmq服务器根据路由规则,将消息从exchange转发到对应的队列(queue)中,再由消费者从queue中取消息,进行处理。如下图所示:

    1620

    为了加快处理速度,防止队列的堆积,可以同时起多个消费者进程,用于消费队列的内容。

    3、确保消费

    Rabbitmq有重试机制,在没有发布成功时,会自动重试发送。当然,如果要确保消息被消费,可以设置类似TCP的三次握手方式,要求消费者完成消息的处理后,再发布一条消息,告知生产者。

    生产者可以将发送的消息单独记录到数据库的一张表中,并且在接到消费者确认处理的消息后,把对应的数据置状态。

    同时,可以编写一个crontab,定时来扫描这个表,将超过一定时间(如10分钟)未被置成功状态的记录,重新发布一次。

    用单独的表来记录信息,好处在于,只要表中有数据,表明消息已经发布出去。这样当出现消息为被处理的问题的时候,易于确认是消息未发布还是消息接收处理存在问题。

    当然,这要求消息接收方的处理方法是幂等的,即对同一条消息,无论接到多少次,只处理一次。

    4、rabbitmq的routing key

    Rabbitmq有好几种处理方式,如下:

    1)广播

    将消息发布到所有队列中,由消费者去接收感兴趣的消息,对于不感兴趣的消息直接丢弃。

    2)direct

    指定发送到某个队列中。

    3)topic

    采用正则的方式,将消息发布到某些队列中,例如a.*,发布到所有名为a.开头的队列。

    三、缓存

    1、解决问题

    缓存的目的,主要在于减少对数据库的操作。数据库的请求,需要占用I/O资源,而缓存是存在内存中的,速度会快的多。

    因此,对于频繁访问的数据,且实时性要求没那么高的,可以通过缓存来减少对数据库的压力。

    另外,对于需要频繁修改数据的(如文章点击量)、短时间内大量访问的(秒杀系统),用缓存也是比较好的解决方案。

    缓存常用的就是redis和memcache。

    2、redis和memcache的区别

    Memcache是纯粹的缓存,只有一种key-value形式的存储。

    Redis功能更加强大,支持五种数据结构,包括string、list、hash、set、sorted-set,支持数据的持久化(AOF、快照),支持事务处理,支持哨兵监控,且可以临时突破内存限制(通过持久化的方式)。

    3、key的设置方式

    通常,用 方法名:id 的方式来作为key,这样比较方便来查找。

    4、缓存会出现的问题

    缓存会出现缓存穿透、缓存雪崩、缓存击穿。

    1)缓存穿透

    当大量查询不存在的key,由于正常情况下查询结果不存在的不会存到缓存中,这样会导致大量的查询绕过缓存直接查询数据库。

    解决方案:对于数据库不存在的内容,也可以保存一小段时间随机的时间,如3分钟,这样可以避免绕过数据库的行为。

    2)缓存雪崩

    当所有的key都设置成同一个时间,会出现同一个时间所有key都过期,这样会发生一瞬间大量请求数据库的情况。

    解决方案:对不同的key,设置一个随机的时间范围,比如4分58秒~5分3秒的过期时间,这样可以避免同一时间都过期。

    3)缓存击穿

    对于某个key,在一个很短的时间内并发大量访问,则所有的请求都绕过缓存去数据库取数据。

    解决方案:可以设置互斥锁来解决问题。即请求缓存不存在的时候,先去访问互斥锁,redis的setnx、memcache的add 某个key。此时,请求数据库,并将请求结果存入缓存。

    这样,下一个请求来的时候,由于存在互斥锁,key存在的时候无法添加,则表示数据被锁了,可以随机等待一个短暂的时间再请求锁,直到请求成功,再去访问一次缓存,通常此时缓存已经有内容了。如果还没有内容,可以再去请求数据库。

    5、缓存过期策略——LRU

    缓存内容太多,超过机器的内存时,需要一个策略剔除部分缓存内容,最常用的是LRU策略,即最近最少使用。

    具体实现方式,是使用一个队列来维护缓存,当某个缓存被访问,则从队列底部去除,再添加到队列的头部,这样需要剔除的数据都是最久没有访问的数据。

    存在问题:

    当某个时间有大量的不同的key的访问,会把队列弄脏,造成需要的数据被剔除。

    解决方案:

    1)可以用两个队列,当数据访问一次放到第一个队列,再次访问挪到第二个队列去,然后LRU规则先清理第一个队列。

    2)也可以用多个权重队列,把重要的内容、可能常访问的内容,都缓存到高级别的队列中去,把一些不怎么用的内容放到低级的队列中。

    四、并发处理

    PHP的并发处理,可以用swoole框架来解决,其可以控制并发消费内容。例如一个页面的展示,需要从几个不同的系统取数据,则可以异步取多个地方的数据,在最终汇总后一起处理。

    Swoole框架我也不太熟,后面学习了再分享这部分内容。

    五、页面静态化

    Nginx没有处理PHP的能力,遇到PHP文件都要转发给php-fpm来处理,而遇到html、js、css等,可以直接处理返回给浏览器。

    因此,在没有实现前后端完全分离的页面,可以使用静态化的方式,将不常变动的内容,在第一次访问php文件的时候,将其转存为html文件,并且设定一个过期时间。

    后面访问的时候,根据Linux文件创建的时间,判断是否过期,当未到过期时间,可以由Nginx直接取对应的html文件进行返回。

    http://www.dengb.com/PHPjc/1375726.htmlwww.dengb.comtruehttp://www.dengb.com/PHPjc/1375726.htmlTechArticle优化页面访问速度(三) ——服务端优化,优化访问速度 优化页面访问速度(三) 服务端优化 一、概述 服务端的优化,主要可以通过消...

    展开全文
  • glassfish服务端优化配置(2009-06-11 17:06:31)标签:软件测试工作室软件测试glassfishit为了使glassfish在产品环境中运行的更快,可以调整一些参数来提高性能:Java虚拟机参数将-client改为-server。根据服务器的...

    glassfish服务端优化配置

    (2009-06-11 17:06:31)

    标签:

    软件测试工作室

    软件测试

    glassfish

    it

    为了使glassfish在产品环境中运行的更快,可以调整一些参数来提高性能:

    Java虚拟机参数将-client改为-server。

    根据服务器的内存大小调整堆使用参数,如果服务器内存为2G,可以调整堆内存为-Xms1024m, -Xmx1024m。

    一般应用服务器发布程序后页面不需要经常更改,网站改版后可以重新发布,所以可以禁用页面和类自动检测功能。

    glassfish的自动发布功能在开发时很有用,不过正式的网站服务器上可以禁用此功能来避免线程检测,提高性能。

    为了提高并发连接数,需要增大线程数,默认的最大线程数一般比较小,glassfish最大为20。

    提高Keep Alive的连接数量,对AJAX站点来说这点很重要,很多页面刷新需要经常请求服务器处理,提高Keep

    Alive连接数目可以复用打开的连接,减少请求的时间。

    启用Http Cache,打开Admon Console -> Configuration

    -> HTTP Service -> HTTP File

    Cache,选中Globally和File Transmission选项,根据网站内容的不同适当调整文件缓存的大小。

    分享:

    a4c26d1e5885305701be709a3d33442f.png喜欢

    0

    a4c26d1e5885305701be709a3d33442f.png赠金笔

    加载中,请稍候......

    评论加载中,请稍候...

    发评论

    登录名: 密码: 找回密码 注册记住登录状态

    昵   称:

    评论并转载此博文

    a4c26d1e5885305701be709a3d33442f.png

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    展开全文
  • package com.llb.tcp.服务器优化; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.UUID; import java.util.concurrent.ArrayBlockingQueue; import java.util....

    在实际中,服务器端很少关闭

    package com.llb.tcp.服务器优化;
    
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.UUID;
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    
    public class Server {
        public static void main(String[] args) throws IOException {
            //循环方式
    //        whileMethod();
            //UUID生成新文件名
    //        uuidNameMethod();
            //用多线程优化  同时处理多个客户端
            //以上两种,同一时间,只能有一个服务端访问服务器
    //        threadMethod();
            //用线程池优化
            threadPoolMethod();
        }
        //循环方式
        private static void whileMethod() throws IOException {
            ServerSocket serverSocket = new ServerSocket(10014);
            while (true) {
                Socket socket = serverSocket.accept();
                InputStream is = socket.getInputStream();
                BufferedInputStream bis = new BufferedInputStream(is);
    
                BufferedOutputStream bos =
                        new BufferedOutputStream(
                                new FileOutputStream("Day15\\b.png"));
    
                int len;
                byte[] bytes = new byte[1024];
                while ((len=bis.read(bytes))!=-1){
                    bos.write(bytes,0,len);
                    bos.flush();
                }
                bos.close();
                //告诉客户端上传完毕
                OutputStream os = socket.getOutputStream();
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
                bw.write("上传完毕");
                bw.newLine();
                bw.flush();
    
                socket.close();
            }
    //        serverSocket.close();
        }
        //UUID生成新文件名
        private static void uuidNameMethod() throws IOException {
    
            ServerSocket serverSocket = new ServerSocket(10014);
            while (true) {
                Socket socket = serverSocket.accept();
                InputStream is = socket.getInputStream();
                BufferedInputStream bis = new BufferedInputStream(is);
                String uuid =
                        UUID.randomUUID().toString().replace("-","");
                BufferedOutputStream bos =
                        new BufferedOutputStream(
                                new FileOutputStream("Day15\\"+uuid+".png"));
    
                int len;
                byte[] bytes = new byte[1024];
                while ((len=bis.read(bytes))!=-1){
                    bos.write(bytes,0,len);
                    bos.flush();
                }
                bos.close();
                //告诉客户端上传完毕
                OutputStream os = socket.getOutputStream();
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
                bw.write("上传完毕");
                bw.newLine();
                bw.flush();
    
                socket.close();
            }
    //        serverSocket.close();
        }
        //用多线程优化  同时处理多个客户端
        private static void threadMethod() throws IOException {
            ServerSocket serverSocket = new ServerSocket(10014);
            while (true) {
                //服务器只负责接收客户端的访问,然后把任务交给子线程
                //服务端只负责接收客户端请求,子线程负责处理业务
                Socket socket = serverSocket.accept();
                //通过构造方法传递socket  给ServerThread
                ServerThread st = new ServerThread(socket);
                Thread thread = new Thread(st);
                thread.start();
            }
    //        serverSocket.close();
        }
        //用线程池优化
        private static void threadPoolMethod() throws IOException{
            ServerSocket serverSocket = new ServerSocket(10014);
            ThreadPoolExecutor pool = new ThreadPoolExecutor(
                    3, //核心线程数量
                    10, //最大线程数
                    60, //空闲线程最大存活时间
                    TimeUnit.SECONDS, //空闲线程最大存活时间的单位
                    new ArrayBlockingQueue<Runnable>(5), //任务队列,容量为5
                    Executors.defaultThreadFactory(), //创建线程的工厂
                    new ThreadPoolExecutor.AbortPolicy() //拒绝策略
            );
            while (true) {
                //服务器只负责接收客户端的访问,然后把任务交给子线程
                //服务端只负责接收客户端请求,子线程负责处理业务
                Socket socket = serverSocket.accept();
                //通过构造方法传递socket  给ServerThread
                ServerThread st = new ServerThread(socket);
                pool.submit(st);
            }
        }
    }
    
    
    
    package com.llb.tcp.服务器优化;
    
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.UUID;
    
    public class ServerThread implements  Runnable {
        private Socket socket;
    
        public ServerThread(Socket socket) {
            this.socket = socket;
        }
    
        public void run() {
            BufferedOutputStream bos = null;
            try {
                InputStream is =
                        socket.getInputStream();
                BufferedInputStream bis =
                        new BufferedInputStream(is);
                String uuid =
                        UUID.randomUUID().toString().replace("-","");
                bos =new BufferedOutputStream(
                        new FileOutputStream("Day15\\"+uuid+".png"));
                int len;
                byte[] bytes =
                        new byte[1024];
                while ((len=bis.read(bytes))!=-1){
                    bos.write(bytes,0,len);
                    bos.flush();
                }
    
                //告诉客户端上传完毕
                OutputStream os =
                        socket.getOutputStream();
                BufferedWriter bw =
                        new BufferedWriter(new OutputStreamWriter(os));
                bw.write("上传完毕");
                bw.newLine();
                bw.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if (socket!=null){
                    try {
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (bos!=null){
                    try {
                        bos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
    
    
    package com.llb.tcp.服务器优化;
    
    import java.io.*;
    import java.net.Socket;
    
    public class Client {
        public static void main(String[] args) throws IOException {
            Socket socket = new Socket("127.0.0.1",10014);
            //要上传的文件
            BufferedInputStream bis = new BufferedInputStream(
                    new FileInputStream("Day15\\a.png")
            );
            //
            OutputStream os = socket.getOutputStream();
            BufferedOutputStream bos = new BufferedOutputStream(os);
            int len;
            byte[] bytes = new byte[1024];
            while ((len=bis.read(bytes))!=-1){
                bos.write(bytes,0,len);
                bos.flush();
            }
            bis.close();
            //告诉服务器上传完毕
            socket.shutdownOutput();
            //获取服务器端上传结果
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String s = br.readLine();
            System.out.println(s);
            socket.close();
    
        }
    }
    
    
    
    
    
    
    展开全文
  • 首先,无论是一对一直播系统还是一对多直播系统的开发,都包含语音和视频的功能,并且都会用到流媒体... 直播软件系统开发是个难题,各环节存在着不同的难点,在开发时一定要做到播放端配合服务端优化,做到精确调度。

    首先,无论是一对一直播系统还是一对多直播系统的开发,都包含语音和视频的功能,并且都会用到流媒体的传输,都需要做好系统的兼容性以及产品的并发。

    总的来说是下面几个方面:

    语音视频的几个模块:回声消除,噪声抑制,自动增益,丢帧补偿,前向纠错,网络抖动。

    因此,我们需要了解一下直播系统源码开发实现在线直播的原理:

    直播软件系统源码开发公司基本都有现成的开源实现,推拉流、美颜、私信、弹幕、礼物动画、播放都有。直播系统源码开发技术其实不是很难,而且现在很多云厂商都提供SDK,直播系统源码搭建的功能大同小异,不同的是整个直播平台服务差异和接入的简易性。

    直播系统开发行业发展到今天,技术相对都比较成熟,设备也都支持硬编码,直播系统源码实现相对容易。IOS还提供现成的 Video ToolBox框架,可以对摄像头和流媒体数据结构进行处理,Video ToolBox框架只兼容8.0以上版本,8.0以下就需要用x264的库软编了。

    直播软件系统开发,播放端配合服务端优化,做到精确调度

    音频采样率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。

    在当今的主流采集卡上,采样频率一般共分为11025Hz、22050Hz、24000Hz、44100Hz、48000Hz五个等级,11025Hz能达到AM调幅广播的声音品质,而22050Hz和24000HZ能达到FM调频广播的声音品质,44100Hz则是理论上的CD音质界限,48000Hz则更加精确一些。

    从技术层面来说,要满足这些要求,意味着更高的开发难度,在播放端如何做到秒开,直播过程中保证画面和声音清晰度相同,稳定、流畅、无花屏等,这些都需要播放端配合服务端做好优化,做到精确调度。

    直播软件系统的开发中,播放端是直播内容的重要生产环节,负责产出直播内容,直播的视频画面和音频并不能直接作为传输内容进行传递,需要经过一系列的解码、编码、前处理后才能推流到CDN进行分发。

    服务端是编码技术的关键,服务端需要对视频进行解码,常见的流媒体协议有RTMP、HLS、RTSP等格式,支持一路转多路以此来适配不同网络和分辨率的终端设备,同时需要在视频中加入平台水印保存。用户看到的是不加水印的直播,政策要求下,需要另外保存带水印的直播录像15天。

    直播软件系统开发是个难题,各环节存在着不同的难点,在开发时一定要做到播放端配合服务端优化,做到精确调度。

    展开全文
  • 服务端优化 使用CDN 添加Expires或Cache-Control报文头 Gzip压缩传输文件 配置ETags 尽早flush输出 使用GET Ajax请求 避免空的图片src Cookie优化 减少Cookie的大小 Cookie被用来做认证或个性化设置,其...
  • 如果你开服的版本在1.8+,我会推荐你使用PaperSpigot服务端,这款服务端是在Spigot基础上优化而来的,相比Spigot有着显著的性能提升(Tiles几乎不再消耗CPU时间,爆炸算法优化,红石不再卡服,流水算法优化,区块...
  • 安装screen yum install -y screen 1 yuminstall-yscreen 安装完成后我们新建一个脚本 nano /mc/minecraft/start.sh 1 nano/mc/minecraft/start.sh 将下面的优化启动参数放进去(最大最小内存你根据配置修改) #!...
  • 如果你开服的版本在1.8+,我会推荐你使用PaperSpigot服务端,这款服务端是在Spigot基础上优化而来的,相比Spigot有着显著的性能提升(Tiles几乎不再消耗CPU时间,爆炸算法优化,红石不再卡服,流水算法优化,区块...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼...现在就来教大家如何通过修改启动Java脚本来优化Minecraft客户/服务端。以下是启动脚本java -server -d64 -Xmx3550M -Xms3550M -Xss256k -XX:PermSize=256m -XX:MaxP...
  • 你可以把这个整合包当作一个“起点”来优化你的游戏,然后再添加更多的功能模组,或者你可以把它当作原版一样玩——当然选择是你的。该整合包只为客户端添加了性能和图形增强的功能,因此它可以在任何世界和服务器上...
  • entity-activation-range: animals: 8 monsters: 20 misc: 2 #如果你的服务器有大量的漏斗红石设备,设置更高会降低漏斗的运算速度,能够提高微微性能 ticks-per: hopper-transfer: 8 hopper-check: 8 #服务端自带的...
  • Java高性能高并发秒杀系统方案优化实战——更多资源,课程更新在 多智时代 duozhishidai.com多智时代资源,简介:Java高性能高并发秒杀系统方案优化实战Java秒杀系统方案优化 高性能高并发实战以“秒杀”这一Java高...
  • 类别:视频语言:Java发布日期: 2019-03-02介绍:以“秒杀”这一Java高性能高并发的试金石场景为例,带你通过一系列系统级优化,学会应对高并发。第1章 课程介绍(讲师参与学习讨论)本章将为大家介绍课程目标,课程技术...
  • 小编为大家带来了《我的世界》服务器优化教程优化插件和玩法建议,很多新手腐竹自己开好服务器后觉得自己的插件mod装的也不是很多,但是玩起来又不流畅,不知道如何是好,这里小编就来为大家讲解下要如何优化自己的...
  • 小编为大家带来了《我的世界》服务器优化教程怎么选择区块优化插件,很多新手腐竹自己开好服务器后觉得自己的插件mod装的也不是很多,但是玩起来又不流畅,不知道如何是好,这里小编就来为大家讲解下要如何优化自己...
  • 目录前端性能优化第六章:服务端和网络优化6.1 CDN——如何合理配置CDN缓存6.2 DNS——主流的DNS优化方法有哪些?6.3 HTTP:如何减少 HTTP 请求6.4 Cookie—— 减少 Cookie 大小的策略和益处6.5 服务器——缓存配置...
  • 360源码屋源码分享:Java高性能高并发秒杀系统方案优化实战以“秒杀”这一Java高性能高并发的试金石场景为例,带你通过一系列系统级优化,学会应对高并发。第1章 课程介绍(讲师参与学习讨论)本章将为大家介绍课程目标...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼首先,全球的DNF都是支持多核心优化,包括国服没更新s3前,都是cpu占用平均分配到各个cpu里的。然而那个2货程序员,我可以好肯定他是用的双核心2线程的机子,来缝合...
  • 小编为大家带来了《我的世界》服务器优化教程怎么调试启动脚本,很多新手腐竹自己开好服务器后觉得自己的插件mod装的也不是很多,但是玩起来又不流畅,不知道如何是好,这里小编就来为大家讲解下要如何优化自己的...
  • nuxt.js 是一个基于 Vue.js 的服务端渲染应用框架,使用nuxt.js在做同构项目开发时,需要考虑的一些点总结如下:一、node服务端性能优化(提高node应用程序处理高流量的能力)基于nuxt.js的服务端渲染项目我们能做的...
  • 对于常规项目,服务端的压力通常来自以下几个方面: 数据处理 1.1 接收请求 1.2 处理请求(响应时间) 数据存储 2.1物理介质存储容量上限 2.2大量数据的存储,影响数据处理速度 物联网项目特点 ...
  • 前言这个服务端优化的想法是我在一篇文章看到的,可惜不记得文章的链接了,如果有印象的读者可以评论一下文章来源,谢谢。背景用Nuxt.js开发的网站,因为依赖于服务端的功能,无法使用nuxt generate去生成静态文件,...
  • 游戏名称:神鬼世界单机版 游戏类型:3D暗黑风格 游戏设置:仿官方设置 配套工具:数据库修改 版本介绍:高压的镜像端,进行大量的BUG修复,个人单机游戏不错 1. 屠魔装备已经打了补丁属性,可以正常添加获取(推荐...
  • 对于网络来讲,常见的优化方式有 CDN、 AND和专线, 分别适用于不同的场景。服务器端 RT = Thread CPU Time + Thread Wait Time。单线程 QPS = 1000ms / RT。多线程情况下,最佳线程数 = ( RT / CPU Time ) x ...
  • 1.问题:在学习Java的Socket编程,写了一些代码练习,但是又不知道是否规范,是否有优化的空间?2.代码:package com.nekolr.socket;import com.google.common.util.concurrent.ThreadFactoryBuilder;import java.io...
  • 现在就来教大家如何通过修改启动Java脚本来优化Minecraft客户/服务端。以下是楼主的启动脚本(以Minecraft官方1.8服务端为例):参数说明-server:一定要作为第一个参数,会使JVM启动速度变慢,但会显著提升JVM性能-d...
  • 时隔两年,换了部门后,竟然接到了一项任务,优化公司自己的长连接服务端。 再次搜索网上技术资料后才发现,相关的很多难点都被攻破,网上也有了很多的总结文章,单机 50W-100W 的连接完全不是梦,其实人人都可以...
  • 公钥文件的权限不正确所以会拒绝登录,检查客户端复制到服务端的公钥信息文件权限是否正确 五、优化加速 服务器端修改配置文件中一下两项进行修改 vim /etc/ssh/sshd_conf UseDNS no GSSAPIAuthentication no UseDNS...
  • Netty编程(八)—— 多线程优化服务端 文章目录Netty编程(八)—— 多线程优化服务端多线程架构Worker类的实现多Worker服务端代码 多线程架构 之前说到的服务端程序都是在一个线程上进行的,这个线程不仅负责连接...
  • Vue SSR服务端渲染 服务端渲染获取页面静态数据 VueX 预取ajax(后台)数据 /src下创建entry-client.js、entry-server.js文件 entry-client.js import Vue from 'vue' import { createApp } from './main.js' ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,064
精华内容 63,625
关键字:

服务端优化