Blogs

莫名其妙的报错

太吓人了可恶,今天写完运行的时候报了两个错

D:\Desktop\hhsqdmz\Project\Substitute driver\代码\daijia-parent\service-client\service-map-client\src\main\java\com\atguigu\daijia\map\client\MapFeignClient.java:19:5
java: 找不到符号
  符号:   类 Result
  位置: 接口 com.atguigu.daijia.map.client.MapFeignClient

D:\Desktop\hhsqdmz\Project\Substitute driver\代码\daijia-parent\service-client\service-map-client\src\main\java\com\atguigu\daijia\map\client\MapFeignClient.java:3:40 java: 程序包com.atguigu.daijia.common.result不存在

然后我按照报错原因按个排插,看了半天没发现问题,最后我使用了最原始的方法:回溯

我按照步骤挨个回退,一路删删删,最后发现问题居然是ALT+Enter,快速的加入了一个依赖在最外层父项目,然后那个依赖本身就存在,两个相同的依赖导致出错,并且报错原因和真实原因毫不相关

气煞我也!

规则引擎

规则引擎概述

  • 规则引擎,全称为业务规则管理系统,英文名为BRMS

  • 就是把业务里经常变动的代码给抽离出来,接收数据输入,解释业务规则,并根据业务规则做出业务决策

  • 主流产品:drools、VisualRules、iLog

drools

概述

drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(例如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。

drools官网地址:https://drools.org/

drools源码下载地址:https://github.com/kiegroup/drools

基础使用

创建spring boot工程

引入drools依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>drools</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>17</java.version>
        <drools.version>8.41.0.Final</drools.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-core</artifactId>
            <version>${drools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <version>${drools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-decisiontables</artifactId>
            <version>${drools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-mvel</artifactId>
            <version>${drools.version}</version>
        </dependency>
    </dependencies>

</project>

创建drools配置类

@Configuration
public class DroolsConfig {

    private static final KieServices kieServices = KieServices.Factory.get();
    //制定规则文件的路径
    private static final String RULES_CUSTOMER_RULES_DRL = "rules/order.drl";

    @Bean
    public KieContainer kieContainer() {
        //获得Kie容器对象
        KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
        kieFileSystem.write(ResourceFactory.newClassPathResource(RULES_CUSTOMER_RULES_DRL));

        KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
        kieBuilder.buildAll();

        KieModule kieModule = kieBuilder.getKieModule();
        KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());

        return kieContainer;
    }
}
  • 定义了一个 KieContainerBeanKieContainer用于通过加载应用程序的/resources文件夹下的规则文件来构建规则引擎。

mybatis-plus 组件策略

默认的组件策略 ASSIGN_ID 雪花算法

  • mp有默认的组件策略 ASSIGN_ID,会生成一个唯一的值,包含数字

  • 雪花算法:使用一个64位的长型的数字作为全局唯一ID

  • 表对应类型 bigint 或者 varchar类型

ASSIGN_UUID

  • ASSIGN_ID 还有另一个相近的策略 ASSIGN_UUID,生成唯一的uuid值,包含数字和字母

  • 表对应字段的类型 varchar(32) 类型,实体类字段对应 String

自增策略 AUTO

  • 想要主键自增需要配置以下操作

校园闪送项目笔记

搭建前端环境

注册微信开发者账号

打开微信公总平台,按照流程一步步注册:https://mp.weixin.qq.com/

然后去申请开通三个我们项目会用到的接口 ![[Pasted image 20250417092751.png]]

以及我们需要用到的插件 ![[Pasted image 20250417093027.png]]

https://fuwu.weixin.qq.com/search?tab=3&type=&serviceType=3&page=1&kw=腾讯位置服务地图选点 fuwu.weixin.qq.com/search?tab=3&type=&serviceType=3&page=1&kw=微信同声传译

安装 node.js 和微信开发者工具

下载node.js:https://nodejs.org/en/download 版本选择16.20.0 ![[Pasted image 20250417093149.png]]

微信开发者工具也是点击下载一步步走就行

开源实践入门

看完感觉跟没看一样,学习笔记就直接把课件CV一份,好歹也是看了

开源软件定义

非盈利组织 Open Source Initiative(OSI)极力倡导,任何开源软件都必须遵循如下标准

  • 可以被免费进行二次分发。
  • 源代码应当公开、可用。
  • 可以与原始软件不同的格式进行修改和分发。
  • 软件本身不应歧视任何个人或团体。
  • 软件本身不应限制其他软件的使用或调用。

开源不仅仅意味着源码开放,同时还需要支持衍生物发行、符合传播规范、满足非歧视原则等要求OSI让开源具有了教育和倡导开放式开发流程的优势。(社会价值) 开源软件提供了一种与潜在的软件用户和开发人员相互动的宝贵方法。通过一个具有互动参与性的社区大家可以创建新的或改进原有的源代码。(项目价值)

自由软件 & 开源软件 & 免费软件

  • 所谓“Free Software”中的“free”-词强调的是自由,而不是价格上的免费。
  • 自由软件有比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都能被称为“自由”。
  • 免费软件就是不要钱的软件,但“不要钱”的定义往往是模糊的:是指人们取得该软件时无需付费,还是说人们在使用的过程中都无需付费,亦或是指该软件的发行者不从中获取利益?实际情况往往是复杂而黑暗的。

开源软件的意义

从软件分发而言

  • 任何人可以修改源代码,以满足使用需求
  • 打破专有软件垄断,根据许可证要求再分发
  • 降低软件总拥有成本,促进软件行业快速发展

从行为动机而言

  • 礼物文化:付出热情、智慧和努力,得到认可
  • 行动中学习,教与学的过程,例如 Code Review

从技术发展而言

  • 标准化快速落地,打破软件烟囱,技术生态繁荣发展
  • 沟通协作和技术场景复杂,促进代码和架构的模块化
  • 开源引领技术创新,成为新技术的摇篮

从组织管理而言

  • 打造开放式组织,最大化知识工作者的效益
  • Private Collective Model,即成员私有投入,产出公开可见
  • 民主与决策,Communityovercode 下的社区治理实践