专业做网站制作paypal网站做外贸

news/2025/9/22 23:51:02/文章来源:
专业做网站制作,paypal网站做外贸,小程序首页模板,做网站邯郸我发现org.apache.commons.pool非常有用且健壮#xff0c;但没有充分记录。 因此#xff0c;我将在这里帮助您解释如何使用Apache KeyedObjectPool 。 什么是KeyedObjectPool #xff1f; 它是一个映射#xff0c;其中包含多种类型的实例池。 可以使用任意键访问每种类型。… 我发现org.apache.commons.pool非常有用且健壮但没有充分记录。 因此我将在这里帮助您解释如何使用Apache KeyedObjectPool 。 什么是KeyedObjectPool 它是一个映射其中包含多种类型的实例池。 可以使用任意键访问每种类型。 在此示例中我将创建一个JSch ssh连接池并将使用一个名为ServerDetails的简单getter setter对象作为键。 基本上对于每个服务器我希望有10个可重用的ssh连接池。 因此首先要做的是创建一个Sessionfactory一个负责创建要存储在池中的实际对象的类。 在我们的示例中这将是ssh连接。 Sessionfactory需要扩展BaseKeyedPoolableObjectFactory KV其中K是此池中键的类型 V是此池中保存的对象的类型。 All you need to do is implement the makeObject方法 All you need to do is implement the方法需要在池中实际创建对象而destroyObject显然需要在释放对象并将其放回池中时实现代码。 package org.grep4j.core.command.linux; import org.apache.commons.pool.BaseKeyedPoolableObjectFactory; import org.grep4j.core.model.ServerDetails; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.UserInfo; /*** This class is used to handle ssh Session inside the pool.* * author Marco Castigliego**/ public class SessionFactory extends BaseKeyedPoolableObjectFactoryServerDetails, Session {/*** This creates a Session if not already present in the pool.*/Overridepublic Session makeObject(ServerDetails serverDetails) throws Exception {Session session null;try {JSch jsch new JSch();session jsch.getSession(serverDetails.getUser(), serverDetails.getHost(), serverDetails.getPort());session.setConfig(StrictHostKeyChecking, no); // UserInfo userInfo new JschUserInfo(serverDetails.getUser(), serverDetails.getPassword());session.setUserInfo(userInfo);session.setTimeout(60000);session.setPassword(serverDetails.getPassword());session.connect();} catch (Exception e) {throw new RuntimeException(ERROR: Unrecoverable error when trying to connect to serverDetails : serverDetails, e);}return session;}/*** This is called when closing the pool object*/Overridepublic void destroyObject(ServerDetails serverDetails, Session session) {session.disconnect();} } 您需要做的第二件事是创建实际的密钥池对象。 在我们的示例中我们创建一个拥有StackKeyedObjectPool的单例。 数字10是池中“睡眠”实例数量的上限。 如果11个客户端尝试为同一服务器获取ssh连接第11个客户端将等待直到前10个客户端之一释放其连接。 package org.grep4j.core.command.linux; import org.apache.commons.pool.KeyedObjectPool; import org.apache.commons.pool.impl.StackKeyedObjectPool; import org.grep4j.core.model.ServerDetails; import com.jcraft.jsch.Session; /*** Pool controller. This class exposes the org.apache.commons.pool.KeyedObjectPool class.* * author Marco Castigliego**/ public class StackSessionPool {private KeyedObjectPoolServerDetails, Session pool;private static class SingletonHolder {public static final StackSessionPool INSTANCE new StackSessionPool();}public static StackSessionPool getInstance() {return SingletonHolder.INSTANCE;}private StackSessionPool(){startPool();}/*** * return the org.apache.commons.pool.KeyedObjectPool class*/public KeyedObjectPoolServerDetails, Session getPool() {return pool;}/*** * return the org.apache.commons.pool.KeyedObjectPool class*/public void startPool() {pool new StackKeyedObjectPoolServerDetails, Session(new SessionFactory(), 10);} } 如何使用它简单明了。 要从池中获取ssh连接我们只需要调用 StackSessionPool.getInstance().getPool().borrowObject(serverDetails) 其中serverDetails是我们的关键我们希望每个服务器有一个ssh连接池。 当不再需要连接时我们使用以下命令将其放回池中 StackSessionPool.getInstance().getPool().returnObject(serverDetails, session);package org.grep4j.core.command.linux;import org.grep4j.core.command.ExecutableCommand; import org.grep4j.core.model.ServerDetails; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.Session; /*** The SshCommandExecutor uses the net.schmizz.sshj library to execute remote* commands.* * ol* liEstablish a connection using the credential in the {link serverDetails}/li* liOpens a session channel/li* liExecute a command on the session/li* liCloses the session/li* liDisconnects/li* /ol* * author Marco Castigliego* */ public class JschCommandExecutor extends CommandExecutor {public JschCommandExecutor(ServerDetails serverDetails) {super(serverDetails);}Overridepublic CommandExecutor execute(ExecutableCommand command) {Session session null;Channel channel null;try {session StackSessionPool.getInstance().getPool().borrowObject(serverDetails);//...do stuff} catch (Exception e) {throw new RuntimeException(ERROR: Unrecoverable error when performing remote command e.getMessage(), e);} finally {if (null ! channel channel.isConnected()) {channel.disconnect();}if (null ! session) {try {StackSessionPool.getInstance().getPool().returnObject(serverDetails, session);} catch (Exception e) {e.printStackTrace();}}}return this;} } 请记住当您不再需要使用PoolSessionPool.getInstance。getPool。close时关闭该池。 参考 使用来自我们的JCG合作伙伴 Marco Castigliego的Apache KeyedObjectPool的ssh连接池位于“ 删除重复和修复不良名称”博客中。 翻译自: https://www.javacodegeeks.com/2013/02/pool-of-ssh-connections-using-apache-keyedobjectpool.html

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

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

相关文章

大连网站推广爱得科技公司建网站怎么建

Python数据库编程实战:sqlite3模块详解 在Python中,数据库编程是一项重要且实用的技能。通过数据库,我们可以高效地存储、检索和管理大量数据。Python提供了多种数据库编程接口,其中sqlite3模块是一个轻量级的关系型数据库引擎&a…

Modularity —— A thinking to separate complexity

Modularity —— A thinking to separate complexityPosted on 2025-09-22 23:48 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:Modularity —— A thinking to separate complexityModularity —— A thinkin…

同构系统与异构系统深度对比分析

同构系统与异构系统深度对比分析Posted on 2025-09-22 23:48 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:同构系统与异构系统深度对比分析️ 同构系统与异构系统深度对比分析 概述 在分布式系统架构设计中,…

# Redis内存管理与过期策略深度解析

# Redis内存管理与过期策略深度解析Posted on 2025-09-22 23:48 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:# Redis内存管理与过期策略深度解析Redis内存管理与过期策略深度解析 思维路线导读 本文将从Re…

# AI时代的软件工作流革命:从历史演进到未来探索

# AI时代的软件工作流革命:从历史演进到未来探索Posted on 2025-09-22 23:48 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:# AI时代的软件工作流革命:从历史演进到未来探索AI时代的软件工作流革命:从历史…

建设会员网站需要多少钱云南学校 手机网站建设

人工智能入门与实战第一季:python基础语法字符串是比较常见的数据类型,在第一章中我们最早接触的数据类型就是字符串:"hello world",字符串可以用单引号’‘或双引号""来表示代码示例:name "…

班级网站建设html制作哪个国家的绘本网站做的好

我们在处理数据时,会遇到需要在每行数据前面、后面、开头、结尾添加各种不一样的字符 如果数据不多,我们可以自己手动的去添加,但如果达到了成百上千行,此时再机械的手动添加是不现实的 这里教给大家如何快速的在数据每行的前后…

建设班级网站过程跨境电商运营基础知识

什么是AQS? 就是基于双向链表CAS实现的锁的一种机制或者方法思想。就是AbstractQueuedSynchronizer,是Java并发包下的一个基类基于AQS实现的同步器包括:ReentrantLock、CountDownLatch、Samaphone、FutureTask、ReentrantWriteLock Abstrac…

有什么做外贸的好网站网站跳出率高怎么办

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 队列、栈、列表 前言一、队列(Queue)二、栈(Stack)三、列表(List)总结 前言 队列、栈、列表是其中三个…

collectfrom企业网站模版交互式网站有哪些功能

极高的安全性 交易平台最重要的是数据安全,这涉及到产品、用户、平台信息等,能够保护数据隐私的安全,是网站交易的首要原则。 2020年,数据泄露、网络渗透、大量数据被销售、勒索软件爆发......每个网站都可能成为黑客的目标&#…

东莞网站建站模板广州市网站

总结:C的访问修饰符的作用是以类为单位,而不是以对象为单位。 通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问. 步骤是:通过一个对象调用其public成员函数,此成员函数可…

杭州公司网站制作驻马店网站建设公司

选自TowardsDataScience作者:George Seif本文转自机器之心(nearhuman2014)本文可以教你仅使用 3 行代码,大大加快数据预处理的速度。Python 是机器学习领域内的首选编程语言,它易于使用,也有很多出色的库来帮助你更快处理数据。但…

龙泉驿网站建设北京网站建设公司 蓝纤科技

文章目录 文章目录 pinia组成部分 pinia使用流程 注意Store获取到后不能解构,否则失去响应式 一、pinia原理? 功能:管理全局共享数据,pinia与vuex功能一样优势:pinia相对于vuex增加了对ts的支持,对响应式的…

国家工程建设标准化网站南京网站定制公司

目 录 2引脚说明 2.1引脚排列 2.2引脚定义 2.3内部引脚使用说明 2.4引脚上下拉、串联说明 2.5功能引脚信号走线长度与阻抗说明 本文档为创龙科技SOM-TLT507工业

一元夺宝网站怎么做wordpress上传权限设置密码

进行本示例的演示,需要先配置好Maven和Spring哦、见:【Spring】基于IntelliJ IDEA搭建Maven分析通过profile,我们可以获得不同的profile,我们可以获得不同的Bean。Spring4提供了一个更通用的基于条件的Bean的创建,即使用Condition…

网站备案在哪里审批我做的网站关键词到首页了没单子

第一部分:PyTorch 核心 欢迎来到本书的第一部分。在这里,我们将与 PyTorch 迈出第一步,获得理解其结构和解决 PyTorch 项目机制所需的基本技能。 在第一章中,我们将首次接触 PyTorch,了解它是什么,解决了…

网站界面(ui)设计形考任务1黄志达设计公司官网

发布时间:2015-09-10在游戏中新手玩家要注意些什么呢?今天就为大家带来新手必看技巧汇总,一起来看看吧. 新手必看技巧大全: 1.开局遇到人别急着标记,尽量先找到目标位置 2.如果开局 ...标签:发布时间:2016-04-29彩虹六号:围攻 地图攻略 总统…

自适应平台网站模板天元建设集团有限公司青岛分公司

2023.12.16 题目来源我的题解方法一 线段树(借鉴官方题解评论区 知白守黑) 题目来源 力扣每日一题;题序:2276 我的题解 方法一 线段树(借鉴官方题解评论区 知白守黑) 用一棵平衡二叉搜索树维护插入的区间…

门户网站网站制作帝国cms+wordpress

https://github.com/nihui/ruapu是nihui大佬开发的用单文件检测CPU特性的项目 ruapu.h的使用 "ruapu.h"主要提供了两个函数 ruapu_init 和 ruapu_supports,分别用于初始化和检测指令集支持。 // 使用示例见:https://github1s.com/nihui/rua…

郑州注册公司网上核名网站产品设计网站制作

SSL(Secure Sockets Layer,安全套接层)和 Kerberos(一种网络认证协议)都是用于提供身份验证和加密通信的技术。它们有以下主要区别: 目的: SSL 主要用于保护基于Web的应用的通信安全。而 Kerb…