建设网站的企业专业服务软件外包什么意思

web/2025/10/8 8:36:40/文章来源:
建设网站的企业专业服务,软件外包什么意思,刚做的网站怎么才能搜到我,济宁建设工程信息网转自 #xff1a; 最近学习了Http连接池 - 五月的仓颉 - 博客园 【1】使用线程池与否的程序性能 我的任务定义#xff1a;从0 累加到 100w#xff1b; public class ThreadPoolMain {/*** 线程池测试*/private static final AtomicInteger THREAD_EXECUTED_TOTAL new At…转自 最近学习了Http连接池 - 五月的仓颉 - 博客园 【1】使用线程池与否的程序性能 我的任务定义从0 累加到 100w public class ThreadPoolMain {/*** 线程池测试*/private static final AtomicInteger THREAD_EXECUTED_TOTAL new AtomicInteger(0); // 已执行线程总数private static final AtomicLong EXECUTE_COST_MS new AtomicLong(0); // 执行耗时毫秒private static final Integer ACCUMULATED_SUM_UPPER 1000000; // 单个任务累加和上限private static final Integer TASK_TOTAL 1000; // 任务总计private class IncreaseThread implements Runnable {public void run() {long startTime System.currentTimeMillis();AtomicInteger counter new AtomicInteger(0);for (int i 0; i ACCUMULATED_SUM_UPPER; i) {counter.incrementAndGet();}// 累加执行时间EXECUTE_COST_MS.addAndGet(System.currentTimeMillis() - startTime);if (THREAD_EXECUTED_TOTAL.incrementAndGet() TASK_TOTAL) {System.out.println(cost: EXECUTE_COST_MS.get() ms);}}} 【1.1】方式1不使用线程池 来一个任务就开启线程运行它 /*** 不使用线程池* 来一个任务就开启线程运行它*/Testpublic void testRunWithoutThreadPool() {ListThread tList new ArrayListThread(TASK_TOTAL);for (int i 0; i TASK_TOTAL; i) {tList.add(new Thread(new IncreaseThread()));}for (Thread t : tList) {t.start();}for (;;);} // cost: 2418156 ms 【1.2】方式2使用线程池 创建包含多个线程的线程池来一个任务从线程池中取出线程运行任务而不是重新创建一个 /*** 使用线程池*/Testpublic void testRunWithThreadPool() {ThreadPoolExecutor executor new ThreadPoolExecutor(100, 100, 0, TimeUnit.MILLISECONDS,new LinkedBlockingQueue());for (int i 0; i TASK_TOTAL; i) {executor.submit(new IncreaseThread());}for (;;);} // cost: 27306 ms 小结 很显然使用线程池后运行任务的速度更快性能更高 主要原因在于 方式1不使用线程池创建线程成本累加起来非常高耗费资源多然后这些资源却没有真正执行业务逻辑计算 【2】http连接池 1http 运行架构 /*** 连接池基类*/ public class BaseHttpClientTest {protected static final int REQUEST_COUNT 5;protected static final String SEPERATOR ;protected static final AtomicInteger NOW_COUNT new AtomicInteger(0);protected static final StringBuilder EVERY_REQ_COST new StringBuilder(200);/*** 获取待运行的线程*/protected ListThread getRunThreads(Runnable runnable) {ListThread tList new ArrayListThread(REQUEST_COUNT);for (int i 0; i REQUEST_COUNT; i) {tList.add(new Thread(runnable));}return tList;}/*** 启动所有线程*/protected void startUpAllThreads(ListThread tList) {for (Thread t : tList) {t.start();// 这里需要加一点延迟保证请求按顺序发出去try {Thread.sleep(300);} catch (InterruptedException e) {e.printStackTrace();}}}/*** 计算执行成本包括耗时*/protected synchronized void addCost(long cost) {EVERY_REQ_COST.append(cost);EVERY_REQ_COST.append(ms);EVERY_REQ_COST.append(SEPERATOR);} } 【2.1】方式1不使用连接池发送http请求 /*** 不使用连接池测试*/ public class HttpWithoutPoolTest extends BaseHttpClientTest {Testpublic void test() throws Exception {startUpAllThreads(getRunThreads(new HttpThread()));// 等待线程运行for (;;);}private class HttpThread implements Runnable {public void run() {/*** HttpClient是线程安全的因此HttpClient正常使用应当做成全局变量但是一旦全局共用一个HttpClient内部构建的时候会new一个连接池* 出来这样就体现不出使用连接池的效果因此这里每次new一个HttpClient保证每次都不通过连接池请求对端*/CloseableHttpClient httpClient HttpClients.custom().build();HttpGet httpGet new HttpGet(https://www.baidu.com/);long startTime System.currentTimeMillis();try {CloseableHttpResponse response httpClient.execute(httpGet);if (response ! null) {response.close();}} catch (Exception e) {e.printStackTrace();} finally {addCost(System.currentTimeMillis() - startTime);if (NOW_COUNT.incrementAndGet() REQUEST_COUNT) {System.out.println(EVERY_REQ_COST.toString());}}}} } // 460ms 461ms 462ms 462ms 462ms 【2.2】方式2使用连接池发送http请求 /*** 使用连接池测试*/ public class HttpWithPoolTest extends BaseHttpClientTest {private CloseableHttpClient httpClient null;Beforepublic void before() {initHttpClient();}Testpublic void test() throws Exception {startUpAllThreads(getRunThreads(new HttpThread()));// 等待线程运行for (;;);}private class HttpThread implements Runnable {public void run() {HttpGet httpGet new HttpGet(https://www.baidu.com/);// 长连接标识不加也没事HTTP1.1默认都是Connection: keep-alive的httpGet.addHeader(Connection, keep-alive);long startTime System.currentTimeMillis();try {CloseableHttpResponse response httpClient.execute(httpGet);if (response ! null) {response.close();}} catch (Exception e) {e.printStackTrace();} finally {addCost(System.currentTimeMillis() - startTime);if (NOW_COUNT.incrementAndGet() REQUEST_COUNT) {System.out.println(EVERY_REQ_COST.toString());}}}}private void initHttpClient() {final PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager();// 总连接池数量connectionManager.setMaxTotal(1);// 可为每个域名设置单独的连接池数量connectionManager.setMaxPerRoute(new HttpRoute(new HttpHost(www.baidu.com)), 1);// setConnectTimeout表示设置建立连接的超时时间// setConnectionRequestTimeout表示从连接池中拿连接的等待超时时间// setSocketTimeout表示发出请求后等待对端应答的超时时间RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(1000).setConnectionRequestTimeout(2000).setSocketTimeout(3000).build();// 重试处理器StandardHttpRequestRetryHandler这个是官方提供的看了下感觉比较挫很多错误不能重试可自己实现HttpRequestRetryHandler接口去做HttpRequestRetryHandler retryHandler new StandardHttpRequestRetryHandler();httpClient HttpClients.custom().setConnectionManager(connectionManager).setDefaultRequestConfig(requestConfig).setRetryHandler(retryHandler).build();// 服务端假设关闭了连接对客户端是不透明的HttpClient为了缓解这一问题在某个连接使用前会检测这个连接是否过时如果过时则连接失效但是这种做法会为每个请求// 增加一定额外开销因此有一个定时任务专门回收长时间不活动而被判定为失效的连接可以某种程度上解决这个问题Timer timer new Timer();timer.schedule(new TimerTask() {Overridepublic void run() {try {// 关闭失效连接并从连接池中移除connectionManager.closeExpiredConnections();// 关闭30秒钟内不活动的连接并从连接池中移除空闲时间从交还给连接管理器时开始connectionManager.closeIdleConnections(20, TimeUnit.SECONDS);} catch (Throwable t) {t.printStackTrace();}}}, 0 , 1000 * 5);} } // 346ms 205ms 184ms 167ms 169ms 小结 使用 http连接池发送请求的性能 优于不使用http连接 更深层次原因refer2 最近学习了Http连接池 - 五月的仓颉 - 博客园 这张图特别有意思可以看到发送请求与接收响应的详情

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

休闲食品网站模板企业手机端网站源码下载

开启靶场,打开链接: 是个贪吃蛇小游戏,看不出来有什么特别的地方 用burp抓包看看情况: 嗯?点击“开始”没有抓取到报文,先看看网页源代码是什么情况 居然直接给出flag了,不知道这题的意义何在 …

dede 友情链接 网站简况 调用和wordpress类似

深度挖掘商品信息,特别是在电商平台上,对于商家、开发者和用户来说都至关重要。jd.item_get API作为京东开放平台提供的一个强大工具,能够帮助用户轻松获取商品的全面规格参数,进而为商品分析、推荐、比较等提供有力的数据支撑。 …

西安网站建设多少钱白云百度seo公司

工业交换机,应用于工业控制领域的以太网交换机设备,使用的是透明而统专一的TCP/IP协议,本身与商属业网络在数据链路层、网络层、协议层等方面并无本质区别,接下来飞畅科技的小编来为大家详细介绍下工业交换机技术,感兴…

做网站一般需要什么烟台做网站需要多少钱

向量 //三维向量 - Vector3 //Vector3有两种几何意义 //1.位置 -- 代表一个点 print(this.transform.position);//2.方向 -- 代表一个方向 print(this.transform.forward); print(this.transform.up); 两点决定一个向量 //A和B此时 几何意义 是两个点Vector3 A new Vector3(…

成都公司核名的网站给别人网站做跳转

1.iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据 2.iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据 3.iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据转载于:https://www.cnblogs…

那里做网站比较好产品外观设计流程

同学你好!本文章于2021年末编写,已与实际存在较大的偏差! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)…

网站没有备案做竞价吗免费空间说说点赞

前两课稍稍介绍了一下函数,但光说概念还是有些抽象了,今天就来把之前那个小游戏用函数改写一下。我希望有这样一个函数,它比较两个数的大小。如果第一个数小了,就输出“too small”如果第一个数小了,就输出“too big”…

p2p网站建设报价2p排名网页设计实验报告遇到的问题

在特征工程中,将分类特征转换为数字特征的任务称为编码。 有多种方法来处理分类特征,如OneHotEncoding和LabelEncoding,FrequencyEncoding或通过其计数替换分类特征。同样,我们可以使用均值编码(MeanEncoding)。 均值编码 均值…

网站项目上线流程常见的简单的营销软件

1、 开启gradle单独的守护进程 在下面的目录下面创建gradle.properties文件 /home/<username>/.gradle/ (Linux) /Users/<username>/.gradle/ (Mac) C:\Users\<username>\.gradle (Windows) 最好是从一个项目里面拷贝过来然后修改下 #Project-wide Gradle …

大连网站网络公司网络营销能做什么

C语言进阶课程学习记录-第22课 - 条件编译使用分析 条件编译基本概念条件编译实验条件编译本质实验-ifdefinclude本质实验-间接包含同一个头文件解决重复包含的方法-ifndef实验-条件编译的应用小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源…

wordpress自建表格绍兴网站seo

ClickHouse安装过程&#xff1a; ClickHouse支持运行在主流64位CPU架构&#xff08;X86、AArch和PowerPC&#xff09;的Linux操作 系统之上&#xff0c;可以通过源码编译、预编译压缩包、Docker镜像和RPM等多种方法进行安装。由于篇幅有限&#xff0c;本节着重讲解离线RPM的安…

东莞品牌网站设计网站服务器的作用

HTML之二&#xff1a;body标记的属性及属性值在HTML之一中&#xff0c;介绍了必须要写入的结构、title用于显示标题栏的内容、网页的内容大部分在body中编辑&#xff0c;下面简单介绍body常用的属性以及属性值。<body background"图片位置" #设置背…

flash全站案例网站预览深圳设计公司vi设计模板

网站运营者的救星&#xff1a;雷池WAF社区版 ️ 嘿朋友们&#xff01;今天我超级激动要跟你们分享一个神器——雷池WAF社区版。这个宝贝对我们这帮网站运营者来说&#xff0c;简直就是保护伞&#xff01; 智能语义分析技术&#xff1a;超级侦探上线 先说说为啥我这么稀饭它。雷…

阿里网站建设需要准备什么律师网站建设推广

多进程并发服务器 设计流程 框架一&#xff08;使用信号回收僵尸进程&#xff09; void handler(int sig) {while(waitpid(-1, NULL, WNOHANG) > 0); }int main() {//回收僵尸进程siganl(17, handler);//创建服务器监听套接字 serverserver socket();//给服务器地址信息…

浙江省建设部网站建设投资公司网站

目录 Linux环境变量配置 Linux读取环境变量 Linux环境变量配置方法一&#xff1a;export PATH Linux环境变量配置方法二&#xff1a;vim ~/.bashrc Linux环境变量配置方法三&#xff1a;vim ~/.bash_profile Linux环境变量配置方法四&#xff1a;vim /etc/bashrc Linux环境变量…

北京 网站开发 大兴html5网站有哪些

目录 0100 系统环境0200 下载0300 安装0400 服务管理0401 关闭、启动、重启服务0402 查看服务状态 0500 查看配置文件0600 账号管理0601 添加账号0602 删除账号0603 修改密码0604 忘记root密码 0700 自动备份0800 远程访问 0100 系统环境 [rootlocalhost ~]# cat /proc/versio…

岐山县住房和城市建设局网站大宗商品电子交易平台

1、简介 在容器中的Bean要实例化为对象有三种方式 1、构造方法 2、静态工厂 3、实例工厂 4、实现工厂接口 2、构造方法 构造方法实例化Bean即是直接通过构造方法创建对象 <bean id"bookDao" class"com.wn.spring.dao.impl.BookDaoImpl"/> 当不存在…

0基础学网站建设做网站怎么更新静态页

背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。SolidUI 是一个创新的项目&#xff0c;旨在将自然语言处理&#xff08;NLP&#xff09;与计算机图形学相…

焦溪翠冠梨做的网站企业网站推广的方法有哪些

2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu 13.04下的安装eclipse 一、eclipse安装过程 首先确保在安装eclipse之前已经安装好Java虚拟机 1. eclipse官网下载压缩包 下载地址&#xff1a;http://www.eclipse.org/downloads/download.php?file/technology…

网站建设好了怎么弄手机网站建设成安企业做网站推广

目录 什么是 Harbor &#xff1f; 一、Harbor 的优势 二、Harbor 架构构成 三、Core services 这是 Harbor 的核心功能 什么是 Harbor &#xff1f; Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Reg…