首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在OptaPlanner中使用自定义分页器时的XStream ForbiddenClassException

是指在使用OptaPlanner进行规划时,当尝试使用自定义的分页器时,可能会遇到XStream ForbiddenClassException的异常。

OptaPlanner是一个开源的约束求解引擎,用于解决优化问题。它提供了一种灵活的规划框架,可以通过定义问题的约束和目标函数来解决各种规划问题。

分页器是OptaPlanner中的一个重要概念,用于将解空间分成多个子空间,以便更高效地搜索解空间。默认情况下,OptaPlanner使用内置的分页器来处理解空间的分页。然而,有时候我们可能需要使用自定义的分页器来满足特定的需求。

在使用自定义分页器时,可能会遇到XStream ForbiddenClassException的异常。这是因为OptaPlanner使用XStream库来序列化和反序列化解空间中的对象。XStream库默认情况下会禁止序列化某些类,以防止潜在的安全风险。

要解决这个问题,我们可以通过配置XStream来允许序列化自定义分页器所需的类。具体步骤如下:

  1. 创建一个继承自XStreamConfigurer的类,用于配置XStream。
  2. 在该类中重写configure方法,在方法中调用XStream对象的allowTypes方法,允许序列化自定义分页器所需的类。
  3. 在OptaPlanner配置文件中,将自定义的XStreamConfigurer类配置为XStreamConfigurer类的实现类。

以下是一个示例代码:

代码语言:java
复制
public class CustomXStreamConfigurer implements XStreamConfigurer {
    @Override
    public void configure(XStream xStream) {
        // 允许序列化自定义分页器所需的类
        xStream.allowTypesByWildcard(new String[] {
            "com.example.custompager.*"
        });
    }
}

在OptaPlanner配置文件中,将CustomXStreamConfigurer配置为XStreamConfigurer类的实现类:

代码语言:xml
复制
<xsolver>
    ...
    <xStreamAnnotatedClasses>
        ...
    </xStreamAnnotatedClasses>
    <xStreamConfigurers>
        <xStreamConfigurerClass>com.example.CustomXStreamConfigurer</xStreamConfigurerClass>
    </xStreamConfigurers>
</xsolver>

通过以上配置,我们可以解决在OptaPlanner中使用自定义分页器时的XStream ForbiddenClassException异常。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

详解Python项目开发自定义模块对象导入和使用

背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中对象;2)对于大型系统开发,一般不会把所有代码放到单个文件,而是根据功能将其分类并分散多个模块,在编写小型项目最好也能养成这样好习惯...本文介绍Python自定义模块对象导入和使用。...继续执行下面的代码: >>> import child.add >>> child.add.add(3,5) 8 自定义模块对象成功被导入并能够正常使用,也就是说,如果要使用对象子模块,应该单独使用...或者使用下面的方法: >>> from child import add >>> add.add(3,5) 8 接下来IDLE单击菜单“Restart Shell”恢复初始状态,然后执行下面的代码:...原因在于,如果文件夹作为包来使用,并且其中包含__init__.py文件,__init__.py文件特殊列表成员__all__用来指定from ... import *哪些子模块或对象会被自动导入

3K50

Go 装饰模式 API 服务程序使用

Python 装饰    Python ,装饰功能非常好解决了这个问题,下面的伪代码展示了一个例子,检查 token 逻辑放在了装饰函数 check_token 里,接口函数上加一个...虽然说不用装饰一样可以将公共逻辑抽取出来,但是调用还是要写在每个接口函数函数体里,侵入性明显大于使用装饰方式。 # 装饰函数,用来检查客户端 token 是否有效。...Go 中装饰应用   Go 语言也是可以使用相同思路来解决这个问题,但因为 Go 没有提供象 Python 一样便利语法支持,所以很难做到像 Python 那样漂亮,不过我觉得解决问题才是更重要...以下 API 服务代码示例是基于 Gin-Gonic 框架,对 Gin 不太熟悉朋友,可以参考我之前翻译一篇文章:如何使用 Gin 和 Gorm 搭建一个简单 API 服务 (一)   本文中代码为了方便展示...  接口可能会有要求客户端必须传某些特定参数或者消息头,而且很可能每个接口必传参数都不一样,这就要求装饰函数可以接收参数,不过我目前还没有找到 pipeline 方式下传参方法,只能使用最基本方式

3.3K20

火焰传感Arduino使用方法

前言 智能家居环境监测项目需要使用传感元件,火焰传感是一种简单易用传感。...使用这种红外传感之前,我们首先需要了解一下什么是红外线: 红外线原理 红外光线是波长介于微波与可见光波之间电磁波,波长在760纳米到1毫米之间,是波形比红光更长不可见光。...自然界一切温度高于绝对零度(-273.15℃)物体,其表面就会辐射红外线。 ? 那么燃烧火焰其辐射红外线特征跟为明显,利用这一点,把红外感应管便可以作为火焰传感元件来使用。...); //LED亮 delay(1000); //火灭后LED多亮1秒 } } 实验效果 火焰传感附近适当距离用使用打火机,LED亮,打火机熄灭后,LED也熄灭。...---- 注意事项 火焰传感对火焰敏感,对普通光也是有反应,一般用作火焰报警灯用途; 传感模块环境火焰光谱或者光源达不到设定阈值,DO 口输出高电平,当外界环境火焰光谱或者光源超过设定阈值

3.2K10

探索异步迭代 Node.js 使用

上一节讲解了迭代使用,如果对迭代还不够了解可以回顾下《从理解到实现轻松掌握 ES6 迭代》,目前 JavaScript 还没有被默认设定 [Symbol.asyncIterator...本文也是探索异步迭代 Node.js 都有哪些使用场景,欢迎留言探讨。...异步迭代与 Writeable MongoDB 中使用 asyncIterator MongoDB cursor MongoDB 异步迭代实现源码分析 使用 for await...of...上述示例 chunk 每次接收值是根据创建可读流 highWaterMark 这个属性决定,为了能清晰看到效果,创建 readable 对象我们指定了 highWaterMark 属性为...) { console.log(val.name); } 对于遍历庞大数据集使用游标它会批量加载 MongoDB 数据,我们也不必担心一次将所有的数据存在于服务内存,造成内存压力过大

7.5K20

4.自定义类加载实现及tomcat应用

对于我们自定义类加载来说需要做到两点即可 这个自定义类加载继承自ClassLoader 这个类加载要重写ClassLoader类findClass()方法 另外我们还可以参考AppClassLoader...我们来看一下源码 我们自定义类加载, 继承自ClassLoader类加载, 那么调用自定义类加载构造方法之前, 应该先加载父类ClassLoader无参构造函数....通常,我们服务安装一个tomcat下会部署多个应用。而这多个应用可能使用类库版本是不同。比如:项目A使用是spring4,项目B使用是Spring5。...先面我们就来详细看看tomcat自定义类加载 1. tomcat第一部分自定义类加载(黄色部分) 这部分类加载, tomcat7及以前是tomcat自定义三个类加载, 分别加载不同文件家下...思考: tomcat自定义类加载, 有一个jsp类加载,jsp是可以实现热部署, 那么他是如何实现呢?

1.3K30

使用Next Terminal浏览管理你服务

Next Terminal是使用Golang和React开发一款HTML5远程桌面网关,具有小巧、易安装、易使用、资源占用小特点,支持RDP、SSH、VNC和Telnet协议连接和管理。...批量执行命令 在线会话管理(监控、强制断开) 离线会话管理(查看录屏) 双因素认证 感谢 naiba 贡献 资产标签 资产授权 用户分组 安装Next Terminal 为了方便演示,这里使用...使用体验 Next Terminal可以很方便浏览中直接连接服务,无需每台电脑上安装额外客户端工具。同时Next Terminal支持简单用户权限控制,满足团队使用需求。...有兴趣同学可自行安装体验。 虽然Next Terminal支持两步验证,但使用Next Terminal同时,也意味着服务多了一个入口,潜在风险也随之增加。...使用建议开启两步验证,并尽量避免Next Terminal暴露在公网,以免产生安全问题。

2.4K31

OptaPlanner规划引擎工作原理及简单示例(2)

这个关于NPC或NP-Hard问题文章已有介绍,这里不再重复。 面对这类NP问题,人类是如何解决呢。...且寻找最佳方案(应该是寻找更佳方案)过程,它集成了一堆已被证明卓有成效数学寻优算法,例如在问题初始化阶段可以使用First Fit, First Fit Decreasing等算法,寻优阶段使用禁忌搜索法...还有一个是score属性,它用于规划过程对各种约束违反情况进行打分,因为本例存在了硬约束与软约束。因此我们使用Score为 HardSoftScore....,是OptaPanner引擎一步一步帮我们找最优方案过程输出。...其实 OptaPlanner不需要对Java过份精通即可使用,因为它使用都是Java最基本知道,但还是需要有基本Java知识才行,希望大家找我研究讨论,如果Java, Maven等方面仍接触较少

3.4K11

tensorflow2.2使用Keras自定义模型指标度量

本文中,我将使用Fashion MNIST来进行说明。然而,这并不是本文唯一目标,因为这可以通过训练结束简单地验证集上绘制混淆矩阵来实现。...训练获得班级特定召回、精度和f1至少对两件事有用: 我们可以看到训练是否稳定,每个类损失图表显示时候没有跳跃太多 我们可以使用一些技巧-早期停止甚至动态改变类权值。...还有一个关联predict_step,我们在这里没有使用它,但它工作原理是一样。 我们首先创建一个自定义度量类。...由于tensorflow 2.2,可以透明地修改每个训练步骤工作(例如,一个小批量中进行训练),而以前必须编写一个自定义训练循环中调用无限函数,并且必须注意用tf.功能启用自动签名。...最后做一个总结:我们只用了一些简单代码就使用Keras无缝地为深度神经网络训练添加复杂指标,通过这些代码能够帮助我们训练时候更高效工作。

2.5K10

【实战技巧】CSS自定义属性以及VUE3使用

---- 什么是css自定义属性 官方称之为 自定义属性 ,但我比较习惯叫它 变量 ,简单点说就是一种开发者可以自主命名和使用 CSS 属性. CSS变量和预处理变量有什么不同?...CSS变量是浏览中直接可用CSS属性,而预处理变量是用于编译成常规CSS代码,浏览其实对它们一无所知。...我们可以 样式表 内联样式 SVG标签 中直接使用CSS变量,甚至可以 运行时 用JavaScript直接修改它。但是我们是 无法 对预处理变量做上面这些操作....当然,可以同时使用CSS变量和预处理变量,他们是不冲突. CSS变量:语法 变量声明 css变量定义由--开头,这样浏览能够区分 自定义属性 和 原生属性 ,从而将它俩分开处理。...VUE3.0,可以CSS中使用 响应式变量, 通过下图可以看出,它原理就是运用了CSS自定义属性 我们先在HelloWorld.vue写入下方代码,我们使用定时两秒以后修改color值,

2.6K20

使用 System.Text.Json ,如何处理 Dictionary Key 为自定义类型问题

使用 System.Text.Json 进行 JSON 序列化和反序列化操作,我们会遇到一个问题:如何处理字典 Key 为自定义类型问题。...这时,我们就需要使用一个自定义 JSON 转换来解决这个问题。...使用建议 使用 System.Text.Json 进行序列化和反序列化操作,如果要处理字典 Key 为自定义类型问题,可以通过定义一个自定义 JSON 转换来解决。...定义自定义 JSON 转换,需要注意以下几点: 类型需要继承自 JsonConverter类型。...总结 本文通过一个实例,介绍了如何使用 System.Text.Json 进行序列化和反序列化操作,处理字典 Key 为自定义类型问题。

25620

ASP.NET MVC5实现具有服务端过滤、排序和分页GridView

介绍 本文中,我们将会学习如何实现服务分页,搜索和排序功能。从长远来讲,这是一种更好方式来应对数据集特别大情况。 我们将会修改前文中源代码,现在就开始吧!...如果完成了包安装,你将会在工程中看到以下引用界面: ? 配置数据库连接字符串 写控制代码之前,我们需要为实体框架配置连接字符串,以便在操作数据库来连接数据库。...实现控制排序、筛选和分页 完成安装之后,进入 AssetController,编写 Get 行为实现代码: public ActionResult Get([ModelBinder(typeof...在这之后,我们就实现了排序逻辑,排序列信息附带在使用自定义模型绑定模型使用 System.Linq.Dynamic 我们能够避免 if 和 switch 语句,我们将列迭代在用户请求排序上,并且通过以下代码排列行...服务端实现表格过滤、分页和排序等功能,能够减少客户端数据处理任务量,方便更好更快加载并显示数据。

5.4K80

0677-CDSW1.6使用你喜爱编辑

从CDSW1.6开始,你可以直接在CDSW运行这些基于Web编辑,就像其它库一样,编辑也是一个库,管理员可以直接将编辑安装到Engine,或者项目级别由CDSW普通用户自己安装。...要在CDSW中使用Jupyter Notebook,用户只需访问他们CDSW项目: ? 启动一个新交互式Session,选择Jupyter Notebook编辑: ?...这样就可以CDSW基于浏览环境使用Jupyter Notebook继续访问和编辑CDSW Project文件: ? ?...您机器上本地IDE 团队其它程序员,比如ML和DevOps工程师,往往是自己电脑本地IDE工作如PyCharm。...以上两种方法共同解决了Cloudera客户对编辑IDE偏好问题,这些功能在CDSW1.6开发过程也进行了测试。你同时也可以安装和配置其他基于浏览和本地IDE,使用类似的方法。

1.1K30

yii2 控制验证请求参数使用方法

写api接口一般会在控制简单验证参数正确性。 使用yii只带验证(因为比较熟悉)实现有两种方式(效果都不佳)。 针对每个请求单独写个Model , 定义验证规则并进行验证。...缺点:写好多参数验证Model 类。 使用独立验证 中提到$validator- validateValue() 方法直接验证变量值。缺点:写实例化很多验证对象。...从验证规则获取可赋值属性。 <?...使用参数验证模型 进行验证和存储验证错误消息。 使用魔术方法获取参数验证模型 验证错误消息。 <?...控制验证请求参数使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家

4.4K10
领券