jfinal配置文件路由配置规则

时间: 2023-07-18 07:37:10 浏览: 67
在 JFinal 的配置文件中,可以通过实现 Config 类并重写 configRoute() 方法来配置路由规则。具体步骤如下: 1. 创建 Config 类并重写 configRoute() 方法 ```java public class MyConfig extends JFinalConfig { @Override public void configRoute(Routes routes) { routes.add("/user", UserController.class, "/user"); } } ``` 上述代码中,重写了 configRoute() 方法,并在其中使用 routes.add() 方法添加了路由规则。其中,第一个参数为请求路径前缀,第二个参数为处理请求的 Controller 类名,第三个参数为视图路径前缀。 2. 在 JFinal 启动时加载 Config 类 在 JFinal 启动时,需要加载 Config 类并初始化配置。可以通过继承 JFinalConfig 类并重写 configClass() 方法来实现,例如: ```java public class MyConfigLoader extends JFinalConfig { @Override public void configConstant(Constants me) { // 配置常量 } @Override public void configRoute(Routes routes) { // 配置路由 } @Override public void configPlugin(Plugins me) { // 配置插件 } @Override public void configInterceptor(Interceptors me) { // 配置拦截器 } @Override public void configHandler(Handlers me) { // 配置处理器 } @Override public void configEngine(Engine me) { // 配置模板引擎 } @Override public void afterJFinalStart() { // JFinal 启动后执行 } @Override public void beforeJFinalStop() { // JFinal 停止前执行 } @Override public Class<? extends JFinalConfig> configClass() { return MyConfig.class; } } ``` 上述代码中,重写了 configClass() 方法,并返回了自定义的 Config 类 MyConfig.class。在 JFinal 启动时,会自动加载该类并执行其中的配置方法。 需要注意的是,在使用 JFinal 的配置文件时,需要将启动类中的启动方法修改为 JFinal.start(),例如: ```java public static void main(String[] args) { JFinal.start(new MyConfigLoader(), 8080, "/"); } ``` 上述代码中,通过 JFinal.start() 方法启动 JFinal,并传入自定义的 ConfigLoader 类 MyConfigLoader。

相关推荐

在 JFinal 中,路由配置规则主要由以下几种方式实现: 1. 使用 @RoutePath 注解 在 Controller 类中的方法上使用 @RoutePath 注解,可以指定该方法对应的路由规则,例如: java @RoutePath("/user/:id") public void getUser(int id) { // 处理用户信息 } 上述代码中,使用 @RoutePath 注解指定了路由规则为 /user/:id,其中 :id 表示动态参数,可以在方法中以参数形式获取。 2. 使用配置文件 在 JFinal 的配置文件中,可以使用 routes 属性来指定路由规则,例如: java public void configRoute(Routes routes) { routes.add("/user", UserController.class, "/user"); } 上述代码中,使用 routes.add() 方法来添加路由规则,其中第一个参数为请求路径前缀,第二个参数为处理请求的 Controller 类名,第三个参数为视图路径前缀。在这种方式下,请求路径为 /user/:method,其中 :method 表示请求方法名。 3. 使用 JFinal 提供的默认路由规则 JFinal 提供了一些默认的路由规则,例如: java // 自动扫描 Controller 类并添加路由规则 routes.scan(); // 添加默认路由规则 routes.add(new DefaultRoute("/user", UserController.class)); 上述代码中,使用 routes.scan() 方法可以自动扫描 Controller 类并添加路由规则,使用 DefaultRoute 类可以添加默认路由规则。 总的来说,JFinal 的路由配置规则非常灵活,可以根据实际需求选择不同的方式来进行配置。
在 JFinal 中配置 Content Security Policy(CSP)可以通过添加拦截器来实现。你可以在拦截器中设置 CSP 的指令,以允许加载图片模型。 以下是一个示例代码,可以在 JFinal 中设置 CSP 拦截器,其中包含允许加载图片模型的指令: java public class CSPInterceptor implements Interceptor { public void intercept(Invocation inv) { inv.invoke(); HttpServletResponse response = inv.getController().getResponse(); response.setHeader("Content-Security-Policy", "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:;"); } } 在这个例子中,我们添加了一个名为 "CSPInterceptor" 的拦截器,它会在每个请求之后被调用。在这个拦截器中,我们获取了 HttpServletResponse 对象,并设置了 CSP 的指令。 在这个 CSP 指令中,我们使用了 "default-src" 指令来限制默认来源。我们还使用了 "script-src"、"style-src" 和 "img-src" 指令来限制脚本、样式和图像的来源。在这个例子中,我们允许来自 'self' 和 data URL 的资源,这样就可以加载图片模型。如果你有其他来源需要加载,可以将它们添加到对应的指令中。 最后,将拦截器添加到 JFinal 的配置中,例如: java public class AppConfig extends JFinalConfig { public void configInterceptor(Interceptors me) { me.add(new CSPInterceptor()); } // 其他配置... } 这样,就可以在 JFinal 中配置 CSP 并允许加载图片模型了。
### 回答1: 好的,我可以回答这个问题。使用jfinal框架可以很方便地实现ftp文件上传。首先需要在pom.xml文件中添加jfinal-ftp的依赖,然后在Controller中编写上传文件的方法,使用FTPKit工具类进行文件上传。具体实现可以参考jfinal官方文档或者相关的教程。 ### 回答2: JFinal是一个基于Java的轻量级、高性能的Web框架,它提供了简单易用的API,方便开发人员快速开发Web应用程序。虽然JFinal主要用于开发Web应用程序,但是我们还是可以利用其强大的API来实现FTP文件上传功能。 实现FTP文件上传功能需要借助于Apache Commons Net库。首先,我们需要在项目中引入相应的依赖。在pom.xml文件中添加以下内容: xml <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.8.0</version> </dependency> 接下来,我们创建一个Controller类,在该类中编写上传文件的逻辑。首先,我们需要获取上传文件的相关信息,包括文件名、路径等。然后,利用FTPClient类实现与FTP服务器的连接和上传文件的功能。最后,根据上传结果返回相应的提示信息。 以下是一个简单的FTP文件上传的示例代码: java import com.jfinal.core.Controller; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import java.io.FileInputStream; import java.io.IOException; public class UploadController extends Controller { public void index() { // 获取上传文件的相关信息 String filename = getPara("filename"); String filepath = getPara("filepath"); // 创建FTPClient对象 FTPClient ftpClient = new FTPClient(); try { // 连接FTP服务器 ftpClient.connect("ftp.example.com", 21); ftpClient.login("username", "password"); // 设置文件传输类型为二进制 ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 设置文件上传路径 ftpClient.changeWorkingDirectory(filepath); // 上传文件 FileInputStream fis = new FileInputStream(filename); ftpClient.storeFile(filename, fis); fis.close(); // 上传成功提示信息 renderText("文件上传成功"); } catch (IOException e) { e.printStackTrace(); // 上传失败提示信息 renderText("文件上传失败"); } finally { // 断开与FTP服务器的连接 try { ftpClient.logout(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } 以上就是使用JFinal框架实现FTP文件上传的简单示例代码。我们可以通过访问URL来调用该接口并传递文件信息,从而实现文件的上传功能。当然,在实际开发中,我们还需要添加一些安全验证、错误处理等功能来完善这个上传文件的功能。 ### 回答3: 使用jfinal编写FTP文件上传功能非常简单。首先要添加jfinal的依赖包到项目中,并配置好jfinal的配置文件。 接着,在Controller类中创建一个方法用于处理文件上传请求。首先,我们需要获取到上传的文件,可以通过使用jfinal提供的方法getRequest().getFile("file")来实现。这个方法会返回一个UploadFile对象,其中包含了上传的文件信息。 接下来,我们需要将上传的文件保存到FTP服务器上。可以使用Apache Commons Net库中的FTPClient类来实现FTP文件上传功能。首先,我们需要连接到FTP服务器,可以通过调用FTPClient对象的connect()方法来连接。然后,使用login()方法进行登录。 接着,我们可以使用changeWorkingDirectory()方法切换到指定的目录。然后,使用storeFile()方法将上传的文件保存到FTP服务器上,其中需要传入服务器上保存的文件名和要上传的文件流。 上传完成后,记得要关闭FTP连接,可以使用logout()方法进行退出,然后调用disconnect()方法关闭连接。 最后,我们在Controller中处理上传结果,可以返回相应的消息给前端页面,告知上传是否成功。 总结一下,使用jfinal编写FTP文件上传功能主要包括以下步骤:获取上传的文件、连接到FTP服务器、上传文件、关闭FTP连接、处理上传结果。相比传统的socket编程方式,使用jfinal简化了很多操作,提高了开发效率。希望这个简单的回答能帮助到您。
可以使用以下代码实现FTP文件上传: import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.tx.Tx; import com.jfinal.upload.UploadFile; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import java.io.IOException; import java.io.InputStream; public class FtpController extends Controller { public void upload() { UploadFile file = getFile("file"); boolean success = false; try { success = uploadToFtp(file.getFileName(), file.getFile()); } catch (IOException e) { e.printStackTrace(); } if (success) { renderText("上传成功"); } else { renderText("上传失败"); } } @Before(Tx.class) public boolean uploadToFtp(String fileName, File file) throws IOException { FTPClient ftp = new FTPClient(); ftp.connect("ftp.example.com", 21); ftp.login("username", "password"); int reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return false; } ftp.setFileType(FTP.BINARY_FILE_TYPE); ftp.enterLocalPassiveMode(); InputStream input = new FileInputStream(file); boolean success = ftp.storeFile(fileName, input); input.close(); ftp.logout(); ftp.disconnect(); if (success) { Record record = new Record().set("file_name", fileName); Db.save("file", record); } return success; } } 这段代码使用了 jfinal 框架和 Apache Commons Net 库来实现 FTP 文件上传。在 uploadToFtp 方法中,我们连接到 FTP 服务器,设置文件类型为二进制,使用被动模式,然后将文件上传到服务器。如果上传成功,我们将文件名保存到数据库中。在 upload 方法中,我们使用 getFile 方法获取上传的文件,然后调用 uploadToFtp 方法将文件上传到 FTP 服务器。最后,我们根据上传结果返回相应的信息。
JFinal 框架本身没有提供定时任务功能,但是可以通过集成第三方库来实现定时任务。下面介绍两种实现方式: 1. 使用Quartz定时任务 Quartz 是一个开源的 Java 定时任务框架,可以实现复杂的定时任务调度。在 JFinal 框架中使用 Quartz 可以通过以下步骤实现: 1. 引入 Quartz 依赖 在 pom.xml 文件中添加以下依赖: xml <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version> </dependency> 2. 编写定时任务类 java public class MyJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello World!"); } } 3. 配置定时任务 在 JFinal 的配置文件中添加以下代码: java public class DemoConfig extends JFinalConfig { public void configConstant(Constants me) { // ... } public void configRoute(Routes me) { // ... } public void configPlugin(Plugins me) { // ... } public void configInterceptor(Interceptors me) { // ... } public void configHandler(Handlers me) { // ... } public void afterJFinalStart() { try { // 创建 Scheduler SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); // 创建 JobDetail JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "group1") .build(); // 创建 Trigger Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build(); // 将 JobDetail 和 Trigger 添加到 Scheduler 中 sched.scheduleJob(job, trigger); // 启动 Scheduler sched.start(); } catch (SchedulerException e) { e.printStackTrace(); } } } 以上代码会在 JFinal 启动后创建一个定时任务,每隔 10 秒钟打印一次 "Hello World!"。 2. 使用ScheduledExecutorService定时任务 ScheduledExecutorService 是 Java 提供的一个定时任务调度器,可以很方便地实现简单的定时任务。在 JFinal 框架中使用 ScheduledExecutorService 可以通过以下步骤实现: 1. 编写定时任务类 java public class MyTask implements Runnable { public void run() { System.out.println("Hello World!"); } } 2. 配置定时任务 在 JFinal 的配置文件中添加以下代码: java public class DemoConfig extends JFinalConfig { public void configConstant(Constants me) { // ... } public void configRoute(Routes me) { // ... } public void configPlugin(Plugins me) { // ... } public void configInterceptor(Interceptors me) { // ... } public void configHandler(Handlers me) { // ... } public void afterJFinalStart() { ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(new MyTask(), 0, 10, TimeUnit.SECONDS); } } 以上代码会在 JFinal 启动后创建一个定时任务,每隔 10 秒钟打印一次 "Hello World!"。 注意事项: 1. 定时任务需要在 JFinal 启动后创建,因此需要在 afterJFinalStart() 方法中配置定时任务。 2. 如果使用 Quartz 定时任务,需要在 JFinal 启动前初始化 Quartz,否则会出现 "Scheduler is not started" 的错误。
JFinal 是一个基于 Java 语言的极速 WEB + ORM 框架,它的 Configuration 对象用于配置 JFinal 的全局参数。下面是使用 JFinal 实现 Configuration 的示例代码: 1. 创建一个 Config 类,继承 JFinalConfig 类,并实现其中的抽象方法: public class Config extends JFinalConfig { @Override public void configConstant(Constants me) { // 配置常量 } @Override public void configRoute(Routes me) { // 配置路由 } @Override public void configPlugin(Plugins me) { // 配置插件 } @Override public void configInterceptor(Interceptors me) { // 配置拦截器 } @Override public void configHandler(Handlers me) { // 配置处理器 } } 2. 在 Config 类中重写 configConstant() 方法,用于设置 JFinal 的常量: public void configConstant(Constants me) { me.setDevMode(true); // 开启开发模式 me.setEncoding("UTF-8"); // 设置编码 me.setViewType(ViewType.JSP); // 设置视图类型 me.setBaseUploadPath("/upload"); // 设置文件上传路径 me.setMaxPostSize(1024 * 1024 * 10); // 设置最大 POST 大小 } 3. 在 Config 类中重写 configRoute() 方法,用于设置 JFinal 的路由: public void configRoute(Routes me) { me.add("/hello", HelloController.class); // 添加路由 } 4. 在 Config 类中重写 configPlugin() 方法,用于设置 JFinal 的插件: public void configPlugin(Plugins me) { DruidPlugin druidPlugin = new DruidPlugin("jdbc:mysql://localhost:3306/test", "root", "123456"); me.add(druidPlugin); // 添加数据源插件 ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin(druidPlugin); me.add(activeRecordPlugin); // 添加 ORM 插件 } 5. 在 Config 类中重写 configInterceptor() 方法,用于设置 JFinal 的拦截器: public void configInterceptor(Interceptors me) { me.addGlobalServiceInterceptor(new MyInterceptor()); // 添加全局拦截器 } 6. 在 Config 类中重写 configHandler() 方法,用于设置 JFinal 的处理器: public void configHandler(Handlers me) { me.add(new MyHandler()); // 添加处理器 } 7. 启动 JFinal: public static void main(String[] args) { JFinal.start("src/main/webapp", 80, "/", 5); } 以上就是使用 JFinal 实现 Configuration 的示例代码。
jfinal是一个基于Java语言的轻量级JavaWeb开发框架,而shiro是一个开源的安全框架,提供了认证、授权、加密等功能。在jfinal中引入shiro可以增加系统的安全性和用户权限管理。 在jfinal中引入shiro主要有以下几个步骤: 第一步,需要在pom.xml文件中添加shiro的依赖。可以通过在dependencies标签中添加如下代码来引入shiro依赖: <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.7.1</version> </dependency> 第二步,需要编写一个继承自JFinalConfig的配置类,并重写其configInterceptor方法。在该方法中,可以通过使用ShiroInterceptor来进行拦截器配置。可以添加如下代码: @Override public void configInterceptor(Interceptors interceptors) { interceptors.add(new ShiroInterceptor()); } 第三步,需要编写一个继承自Controller的控制器类,并通过注解来配置需要进行权限控制的接口。可以使用RequiresPermissions注解来指定需要的权限,例如: @RequiresPermissions("user:create") public void createUser() { // 创建用户的逻辑 } 第四步,还需要编写一个继承自AuthorizingRealm的类,并重写doGetAuthenticationInfo和doGetAuthorizationInfo方法。在这两个方法中,可以实现用户认证和授权逻辑。 第五步,通过在JFinalConfig的configConstant方法中添加如下代码来启用shiro: JFinal.me().getServletContext().setAttribute(Factory.class.getName() + ".jfinalFactory", new ShiroFactory()); 通过以上步骤,就可以在jfinal中成功引入shiro。引入shiro后,可以实现用户认证和授权的功能,提高系统的安全性和用户权限管理能力。
你可以使用 JFinal 框架来监听消息队列。JFinal 框架本身并没有提供直接的消息队列监听功能,但你可以结合第三方的消息队列服务来实现。 首先,你需要选择一个合适的消息队列服务,例如 RabbitMQ、ActiveMQ 或者 Kafka。这些消息队列服务通常提供了 Java 客户端库,你可以根据你的需求选择其中一个。 接下来,在 JFinal 中创建一个监听器类,用于监听消息队列中的消息。你可以使用 JFinal 提供的插件机制,在启动时初始化监听器并注册到消息队列服务中。 以下是一个简单的示例代码,演示如何在 JFinal 中监听 RabbitMQ 的消息队列: java import com.jfinal.plugin.IPlugin; import com.rabbitmq.client.*; public class RabbitMQPlugin implements IPlugin { private final String QUEUE_NAME = "your_queue_name"; private final String HOST = "your_rabbitmq_host"; private final int PORT = 5672; private final String USERNAME = "your_username"; private final String PASSWORD = "your_password"; @Override public boolean start() { ConnectionFactory factory = new ConnectionFactory(); factory.setHost(HOST); factory.setPort(PORT); factory.setUsername(USERNAME); factory.setPassword(PASSWORD); try { Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); channel.basicConsume(QUEUE_NAME, true, (consumerTag, message) -> { String body = new String(message.getBody(), "UTF-8"); // 处理接收到的消息 System.out.println("Received message: " + body); }, consumerTag -> {}); } catch (Exception e) { e.printStackTrace(); } return true; } @Override public boolean stop() { // 停止监听器的逻辑,可根据实际情况进行实现 return true; } } 然后,在 JFinal 的配置文件中注册该插件: java public class DemoConfig extends JFinalConfig { @Override public void configPlugin(Plugins plugins) { // 注册 RabbitMQ 插件 RabbitMQPlugin rabbitMQPlugin = new RabbitMQPlugin(); plugins.add(rabbitMQPlugin); } // ... } 这样,在 JFinal 启动时,就会初始化 RabbitMQ 插件并监听指定的消息队列。 请根据你使用的消息队列服务和具体的业务需求,进行相应的配置和调整。希望对你有所帮助!

最新推荐

JFinal技术框架解析

JFinal框架介绍,对于JFinal官方文档是一个有益的补充。针对高级JFinal使用者。

JFinal技术架构浅析.doc

JFinal技术架构浅析,入门级教程。 注:本人非作者,作者见文档,仅学习分享,侵权立删。

市建设规划局gis基础地理信息系统可行性研究报告.doc

市建设规划局gis基础地理信息系统可行性研究报告.doc

"REGISTOR:SSD内部非结构化数据处理平台"

REGISTOR:SSD存储裴舒怡,杨静,杨青,罗德岛大学,深圳市大普微电子有限公司。公司本文介绍了一个用于在存储器内部进行规则表达的平台REGISTOR。Registor的主要思想是在存储大型数据集的存储中加速正则表达式(regex)搜索,消除I/O瓶颈问题。在闪存SSD内部设计并增强了一个用于regex搜索的特殊硬件引擎,该引擎在从NAND闪存到主机的数据传输期间动态处理数据为了使regex搜索的速度与现代SSD的内部总线速度相匹配,在Registor硬件中设计了一种深度流水线结构,该结构由文件语义提取器、匹配候选查找器、regex匹配单元(REMU)和结果组织器组成。此外,流水线的每个阶段使得可能使用最大等位性。为了使Registor易于被高级应用程序使用,我们在Linux中开发了一组API和库,允许Registor通过有效地将单独的数据块重组为文件来处理SSD中的文件Registor的工作原

要将Preference控件设置为不可用并变灰java完整代码

以下是将Preference控件设置为不可用并变灰的Java完整代码示例: ```java Preference preference = findPreference("preference_key"); // 获取Preference对象 preference.setEnabled(false); // 设置为不可用 preference.setSelectable(false); // 设置为不可选 preference.setSummary("已禁用"); // 设置摘要信息,提示用户该选项已被禁用 preference.setIcon(R.drawable.disabled_ico

基于改进蚁群算法的离散制造车间物料配送路径优化.pptx

基于改进蚁群算法的离散制造车间物料配送路径优化.pptx

海量3D模型的自适应传输

为了获得的目的图卢兹大学博士学位发布人:图卢兹国立理工学院(图卢兹INP)学科或专业:计算机与电信提交人和支持人:M. 托马斯·福吉奥尼2019年11月29日星期五标题:海量3D模型的自适应传输博士学校:图卢兹数学、计算机科学、电信(MITT)研究单位:图卢兹计算机科学研究所(IRIT)论文主任:M. 文森特·查维拉特M.阿克塞尔·卡里尔报告员:M. GWendal Simon,大西洋IMTSIDONIE CHRISTOPHE女士,国家地理研究所评审团成员:M. MAARTEN WIJNANTS,哈塞尔大学,校长M. AXEL CARLIER,图卢兹INP,成员M. GILLES GESQUIERE,里昂第二大学,成员Géraldine Morin女士,图卢兹INP,成员M. VINCENT CHARVILLAT,图卢兹INP,成员M. Wei Tsang Ooi,新加坡国立大学,研究员基于HTTP的动态自适应3D流媒体2019年11月29日星期五,图卢兹INP授予图卢兹大学博士学位,由ThomasForgione发表并答辩Gilles Gesquière�

PostgreSQL 中图层相交的端点数

在 PostgreSQL 中,可以使用 PostGIS 扩展来进行空间数据处理。如果要计算两个图层相交的端点数,可以使用 ST_Intersection 函数来计算交集,然后使用 ST_NumPoints 函数来计算交集中的点数。 以下是一个示例查询,演示如何计算两个图层相交的端点数: ``` SELECT ST_NumPoints(ST_Intersection(layer1.geometry, layer2.geometry)) AS intersection_points FROM layer1, layer2 WHERE ST_Intersects(layer1.geometry,

漕河渡槽Ⅳ标段_工程施工土建监理资料建筑监理工作规划方案报告.doc

漕河渡槽Ⅳ标段_工程施工土建监理资料建筑监理工作规划方案报告.doc

HAL多学科开放获取档案库的作用及代理重加密和认证委托的研究

0HAL编号:tel-038172580https://theses.hal.science/tel-038172580提交日期:2022年10月17日0HAL是一个多学科开放获取档案库,用于存储和传播科学研究文档,无论其是否发表。这些文档可以来自法国或国外的教育和研究机构,也可以来自公共或私人研究中心。0HAL多学科开放获取档案库旨在存储和传播法国或国外的教育和研究机构、公共或私人实验室发表或未发表的研究文档。0代理重加密和认证委托的贡献0Anass Sbai0引用此版本:0Anass Sbai. 代理重加密和认证委托的贡献. 离散数学[cs.DM]. 皮卡第朱尔大学, 2021. 法语. �NNT:2021AMIE0032�. �tel-03817258�0博士学位论文0专业“计算机科学”0提交给科技与健康学院博士学位学校0皮卡第朱尔大学0由0Anass SBAI0获得皮卡第朱尔大学博士学位0代理重加密和认证委托的贡献0于2021年7月5日,在评审人的意见后,面向考试委员会进行