【开发问题解决方法记录】02.dian

news2024/9/30 23:39:54

想重命名表名,但是失败了,提示[0A000][3001] ORA-03001: 未实施的功能 Position: 0.

获取到USER_ID和ROLE_ID但是无法新增成功

问题出在哪里捏?

报错:ORA-06502: PL/SQL: 数字或值错误 : 字符到数值的转换错误

展示的是NAME(nvarchar类型),存入的是ID(number类型)

新增出错:Access to undefined Per Request (Memory Only) variable P35_ROLE_ID

访问未定义的每个请求 (仅内存)变量P35 ROLEID

是因为传入的项有ROLE_ID

在前台打印ROLE_ID,USER_ID,发现无法将其转化为想要的NUMBER类型

原来是测试用的输出语句错误,换成

console.log('角色id:' + $v('P35_ROLE_ID'));
console.log('用户id:' + $v('P35_USER_ID'));

可以在F12后在控制台看到USER_ID和ROLE_ID。

试试多用户的情况:

也能获取到,那就是存储SQL的问题了

晶点 p35 用户角色表单保存
-- 晶点 p35 用户角色表单保存
declare
   v_err_msg nvarchar2(2000);
    row_count number(20) := 1;
    /**
     * create by: xiaoxian
     * create date:2023/11/17 13:19
     * modify by:
     * modify date:
     * describe:晶点 p35 用户角色表单保存
     */
begin
--     更新对应关联表单
 update BASIC_SYSTEM_USER_ROLE set
       USER_ID = :P35_USER_ID,
       ROLE_ID = :P35_ROLE_ID,
       REMARK = :P35_REMARKE,
       IS_ENABLE = :P35_IS_ENABLE,
       UPDATED_BY = :USER_ID,
       UPDATE_DATE = sysdate
     where USER_ROLE_ID = :P35_USER_ROLE_ID;

    -- 删除本次取消选中的用户表单
    delete BASIC_SYSTEM_USER_ROLE s
    where s.USER_ID = :P35_USER_ID
      and not exists(
            select 1
            from JA_UTILS_PKG.SPLIT_STR(:P35_USER_ID, ':') A
            where s.USER_ID = A.data_val
        );

-- 选中该的USER_ID分割  222360914514053:222360909348997  把: 去除
    MERGE INTO BASIC_SYSTEM_USER_ROLE A
    USING (
        select data_val user_id, :P35_USER_ROLE_ID user_role_id
        from JA_UTILS_PKG.SPLIT_STR(:P35_USER_ID, ':')
    ) B
    ON (A.USER_ROLE_ID = B.USER_ROLE_ID and A.USER_ID = B.USER_ID)
    WHEN NOT MATCHED THEN
        insert (created_by, updated_by, user_role_id, user_id)
        values (:USER_ID, :USER_ID, B.USER_ROLE_ID, B.USER_ID);

    commit;
    apex_util.set_session_state('P35_ROW_COUNT', row_count);

exception
    when others then
        rollback;
        apex_util.set_session_state('P35_ROW_COUNT', 0);
        v_err_msg := sqlerrm || chr(13) || dbms_utility.format_error_backtrace;
        JA_WRITE_LOG('P' || :APP_PAGE_ID || '-用户 角色管理-保存', 'ERROR', V_ERR_MSG, :USER_ID, :USER_TENANT,
                     :APP_NAME || ':' || :APP_ID);
end;
-- 查询结果[2023-11-17 14:03:35] 不安全的查询: 不带 ''where'' 的 ''Update'' 语句会同时更新所有表行

[2023-11-17 14:03:35] 不安全的查询: 不带 ''where'' 的 ''Update'' 语句会同时更新所有表行

动态权限

晶台登录 apex_mpf_authentication_basic

登陆后验证  LOGIN_SUCCESS_SAVE_USER_BASIC

create function apex_mpf_authentication_basic(
    p_username in varchar2,
    p_password in varchar2)
    return boolean
as
    v_password varchar2(64);
    v_mobile   varchar2(64);
    v_job_number   varchar2(64);
    v_err_msg  varchar2(2000);
begin
    select PASSWORD, MOBILE,JOB_NUMBER
    into v_password,v_mobile,v_job_number
    from BASIC_SYSTEM_LOGIN_USER
    where LOGIN_USER_ID in (SELECT u.LOGIN_USER_ID
                            FROM BASIC_SYSTEM_USER_ROLE u
                            where u.IS_ENABLE = 1
                              and u.USER_ID in (select a.USER_ID
                                                from SHARE_BASIC_USER_V a
                                                where a.IS_LEAVE = 0 -- 中台 EHR账户“未离职”的状态下
                                                  and a.TENANT_ID = apex_util.get_session_state('USER_TENANT'))
                              and u.TENANT_ID = apex_util.get_session_state('USER_TENANT'))
      and JOB_NUMBER = upper(p_username)
      and SYSTEM_TYPE = 'BASIC'
      and DEL_FLAG = 0
      and TENANT_ID = apex_util.get_session_state('USER_TENANT');
    if v_password is null then
        return false;
    else
        if JA_UTILS_PKG.ENCRYPT_ENC(p_password) <> v_password then
            return false;
        else
            return true;
        end if;
    end if;
exception
    when others then
        v_err_msg := sqlerrm || chr(13) || dbms_utility.format_error_backtrace;
        JA_WRITE_LOG(JA_UTILS_PKG.GET_FN_NAME(), 'error', v_err_msg, apex_util.get_session_state('USER_ID'),
                     apex_util.get_session_state('USER_TENANT'), V('APP_NAME') || ':' || V('APP_ID'));
        return false;
end;
/
create procedure LOGIN_SUCCESS_SAVE_USER_BASIC
as
    v_user_id                 number(20);
    v_basic_login_user_id     number(20); --晶台登录用户ID
    v_tenant_id               varchar2(10);
    v_tenant_name             varchar2(64);
    v_name                    varchar2(64);
    v_job_number              varchar2(64);
    v_mobile                  varchar2(64);
    app_key                   VARCHAR2(100);
    app_secret                VARCHAR2(100);
    v_err_msg                 VARCHAR2(2000);
    v_basic_role_id           number(20); --晶台角色ID
    v_basic_role_level        number(20); -- 晶台角色级别
    v_is_sync_user            number(20); -- 晶台角色 是否同步为晶系列用户,1同步,0未同步
    v_original_dept_id        VARCHAR2(200);
    v_parent_original_dept_id VARCHAR2(200);
    V_PARENT_DEPT_ID          number(30); -- 虚拟组织 上级ID
    V_IS_OTHERS_LOGIN_USER_ID NUMBER(20) := 0; -- 晶系列角色用户ID是否存在
    V_OTHERS_LOGIN_USER_ID    NUMBER(20) := 0; -- 晶系列角色用户ID

begin
    select u.USER_ID,
           u.NAME,
           u.JOB_NUMBER,
           u.MOBILE,
           u.TENANT_ID,
           s.LOGIN_USER_ID
    into
        v_user_id,v_name,v_job_number,v_mobile,v_tenant_id,v_basic_login_user_id
    from BASIC_USER u
             inner join BASIC_SYSTEM_LOGIN_USER s
                        on s.USER_ID = u.USER_ID and s.TENANT_ID = u.TENANT_ID and s.DEL_FLAG = 0
    where u.DEL_FLAG = 0
      AND s.SYSTEM_TYPE = 'BASIC'
      and u.JOB_NUMBER = upper( V( 'P9999_USERNAME' ) )
      and u.TENANT_ID = apex_util.get_session_state( 'USER_TENANT' );

    -- 晶系列角色登录用户ID
    SELECT COUNT( 1 )
    INTO V_IS_OTHERS_LOGIN_USER_ID
    FROM BASIC_SYSTEM_LOGIN_USER
    WHERE JOB_NUMBER = (SELECT JOB_NUMBER
                        FROM BASIC_SYSTEM_LOGIN_USER
                        WHERE LOGIN_USER_ID = v_basic_login_user_id
                          AND SYSTEM_TYPE = 'BASIC'
                          AND DEL_FLAG = 0
                          AND TENANT_ID = apex_util.get_session_state( 'USER_TENANT' ))
      AND SYSTEM_TYPE = 'OTHERS'
      AND DEL_FLAG = 0
      AND TENANT_ID = apex_util.get_session_state( 'USER_TENANT' );

    -- 存在的情况下
    IF V_IS_OTHERS_LOGIN_USER_ID > 0 THEN
        SELECT LOGIN_USER_ID
        INTO V_OTHERS_LOGIN_USER_ID
        FROM BASIC_SYSTEM_LOGIN_USER
        WHERE JOB_NUMBER = (SELECT JOB_NUMBER
                            FROM BASIC_SYSTEM_LOGIN_USER
                            WHERE LOGIN_USER_ID = v_basic_login_user_id
                              AND SYSTEM_TYPE = 'BASIC'
                              AND DEL_FLAG = 0
                              AND TENANT_ID = apex_util.get_session_state( 'USER_TENANT' ))
          AND SYSTEM_TYPE = 'OTHERS'
          AND DEL_FLAG = 0
          AND TENANT_ID = apex_util.get_session_state( 'USER_TENANT' );
    END IF;

    select APP_KEY, APP_SECRET
    into app_key,app_secret
    from TENANT_APP
    where TENANT_ID = v_tenant_id
      and IS_MANAGE = 1
      and DEL_FLAG = 0
      and ROWNUM = 1;

    -- 获取租户名称
    select NAME
    into v_tenant_name
    from TENANT
    where TENANT_ID = v_tenant_id
      and DEL_FLAG = 0
      and ROWNUM = 1;

    -- 获取当前角色ID和角色等级
    select ROLE_ID, ROLE_LEVEL, IS_SYNC_USER
    into v_basic_role_id,v_basic_role_level,v_is_sync_user
    from (select role.ROLE_ID, role.ROLE_LEVEL, role.IS_SYNC_USER
          from BASIC_SYSTEM_USER_ROLE u
                   inner join BASIC_SYSTEM_ROLE role
                              on u.ROLE_ID = role.ROLE_ID and role.TENANT_ID = u.TENANT_ID and
                                 role.DEL_FLAG = 0
          where u.LOGIN_USER_ID = v_basic_login_user_id
            and role.SYSTEM_TYPE = 'BASIC'
            and u.IS_ENABLE = 1 --账户“启用”的状态下
            and u.TENANT_ID = v_tenant_id
          order by role.ROLE_LEVEL desc)
    where rownum = 1;

    -- 获取当前角色所在的数据权限
    select max( ORIGINAL_DEPT_ID ), max( PARENT_ORIGINAL_DEPT_ID )
    into v_original_dept_id,v_parent_original_dept_id
    from (select A.ORIGINAL_DEPT_ID, A.PARENT_ORIGINAL_DEPT_ID
          from BASIC_SYSTEM_USER_ORIGINAL A
          where A.LOGIN_USER_ID = v_basic_login_user_id
            and A.ROLE_ID = v_basic_role_id
            and SYSTEM_ID is null
            and A.TENANT_ID = v_tenant_id
          order by PARENT_ORIGINAL_DEPT_ID)
    where rownum = 1;


    -- 虚拟组织 上级ID
    SELECT LISTAGG( DEPT_ID , ',' )
    INTO V_PARENT_DEPT_ID
    FROM BASIC_DEPT
    WHERE (PARENT_DEPT_ID IS NULL or PARENT_DEPT_ID = 1)
      AND DEL_FLAG = 0
      AND TENANT_ID = v_tenant_id;
    IF V_PARENT_DEPT_ID IS NULL THEN
        V_PARENT_DEPT_ID := 1;
    END IF;

    apex_custom_auth.set_user( v_name );
    apex_util.set_session_state( 'USER_ID' , v_user_id );
    apex_util.set_session_state( 'BASIC_LOGIN_USER_ID' , v_basic_login_user_id );
    apex_util.set_session_state( 'OTHERS_LOGIN_USER_ID' , V_OTHERS_LOGIN_USER_ID );
    apex_util.set_session_state( 'USER_TENANT' , v_tenant_id );
    apex_util.set_session_state( 'USER_TENANT_NAME' , v_tenant_name );
    apex_util.set_session_state( 'USER_NAME' , v_name );
    apex_util.set_session_state( 'USER_JOB_NUMBER' , v_job_number );
    apex_util.set_session_state( 'USER_MOBILE' , v_mobile );
    apex_util.set_session_state( 'APP_KEY' , app_key );
    apex_util.set_session_state( 'APP_SECRET' , app_secret );
    apex_util.set_session_state( 'API_URL' , 'http://gateway_test.ywjasolar.com' );
    apex_util.set_session_state( 'BASIC_ROLE_ID' , v_basic_role_id );
    apex_util.set_session_state( 'BASIC_ROLE_LEVEL' , v_basic_role_level );
    apex_util.set_session_state( 'BASIC_ROLE_IS_SYNC_USER' , v_is_sync_user );
    apex_util.set_session_state( 'USER_ORIGINAL_DEPT_ID' , v_original_dept_id );
    apex_util.set_session_state( 'USER_PARENT_ORIGINAL_DEPT_ID' , v_parent_original_dept_id );
    apex_util.set_session_state( 'BASIC_PARENT_DEPT_ID' , V_PARENT_DEPT_ID );

exception
    when others then
        v_err_msg := sqlerrm || chr( 13 ) || dbms_utility.format_error_backtrace;
        JA_WRITE_LOG( JA_UTILS_PKG.GET_FN_NAME( ) , 'error' , v_err_msg , apex_util.get_session_state( 'USER_ID' ) ,
                      apex_util.get_session_state( 'USER_TENANT' ) , V( 'APP_NAME' ) || ':' || V( 'APP_ID' ) );

end ;
/

晶点登录函数 apex_app_auth_authentication

登陆后函数 LOGIN_SUCCESS_SAVE_USER

create function apex_app_auth_authentication (
    p_username in varchar2,
    p_password in varchar2 )
    return boolean
as
    t_job_number varchar2(20);
    t_password  varchar2(20);
    t_count     number(10);
    T_TENANT NUMBER(10);
    V_ERR_MSG  varchar2(1000);
begin
    --获取租户
    T_TENANT := apex_util.get_session_state('P9999_USER_TENANT');
    --查询用户是否在中台中存在
    select count(1) into t_count from DIAN_SHARE_USER_V where upper(JOB_NUMBER) = upper(p_username) and IS_LEAVE = 0  AND TENANT_ID = T_TENANT;

    --select count(*) into t_count from TENANT_EXT_USERS where MOBILE = upper(p_username) and IS_LEAVE = 0 and DEL_FLAG = 0;
    --判断用户是否在中台中存在
    if t_count > 0 then
        --存在
        --查询用户是否在用户表中存在
        select count(1) into t_count from APEX_TENANT_USERS where JOB_NUMBER = upper(p_username) AND TENANT_ID = T_TENANT AND DEL_FLAG = 0;
        --判断用户是否在用户表中存在
        if t_count > 0 then
            --存在
            --查询该用户的工号和解密后的密码
            select JOB_NUMBER,UTILS_PKG.DECRYPT_DEC(PASSWORD) into t_job_number,t_password
            from APEX_TENANT_USERS
            where JOB_NUMBER = upper(p_username)
              AND TENANT_ID = T_TENANT
              AND DEL_FLAG = 0;
        else
--           insert into apex_tenant_users(ext_user_id,del_flag,tenant_id,sync_user_id,unionid,title,name,avatar,state_code,mobile,job_number,email,is_leave,leader_ext_user_id,hired_date,Is_Ext_User,LAST_SYNC_DATE)
--           select EXT_USER_ID,0,TENANT_ID,SYNC_USER_ID,UNION_ID,TITLE,NAME,AVATAR,STATE_CODE,MOBILE,JOB_NUMBER,EMAIL,IS_LEAVE,LEADER_EXT_USER_ID,HIRED_DATE,0,SYSDATE FROM DIAN_SHARE_USER_V WHERE JOB_NUMBER=upper(p_username) AND TENANT_ID = T_TENANT;
--           COMMIT;
--             --insert into APEX_TENANT_USERS select * from TENANT_EXT_USERS WHERE MOBILE = upper(p_username);
--             update APEX_TENANT_USERS set PASSWORD = UTILS_PKG.ENCRYPT_ENC('Aa123456') where JOB_NUMBER = upper(p_username) AND TENANT_ID = T_TENANT;
--             commit;
--
--             select JOB_NUMBER,UTILS_PKG.DECRYPT_DEC(PASSWORD) into t_job_number,t_password
--             from APEX_TENANT_USERS
--             where JOB_NUMBER = upper(p_username)
--             AND TENANT_ID = T_TENANT;
            --不存在,提示“工号不存在”
            apex_util.set_custom_auth_status(p_status => '工号不存在');
            return false;
        end if;
    else
        --不存在,提示“工号不存在”
        apex_util.set_custom_auth_status(p_status => '工号不存在');
        return false;
    end if;

    if (t_job_number is null or t_password is null) then
        apex_util.set_custom_auth_status(p_status => '工号和密码不能为空');
        return false;
    else if p_password <> t_password then
        apex_util.set_custom_auth_status(p_status => '工号或密码错误');
        return false;
    else if p_password = t_password then
        return true;
    end if;
    end if;
    end if;
    return false;
    EXCEPTION
    WHEN OTHERS THEN
        apex_error.add_error(
                p_message => '非管理员不能登录,请联系管理员',
                p_ignore_ora_error=> true,
                p_display_location => apex_error.c_inline_in_notification);
        V_ERR_MSG := SQLERRM || CHR(13) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE ;
        JA_WRITE_LOG(JA_UTILS_PKG.GET_FN_NAME(), 'error', V_ERR_MSG, -1, 2, '登录');
        return false;
end;
/

create procedure LOGIN_SUCCESS_SAVE_USER
as
    --登录验证后,保存用户基本信息与系统默认信息
    v_userid     number(20);
    v_tenantid   varchar2(10);
    v_name       varchar2(48);
    v_job_number  varchar2(10);
    v_mobile     varchar2(15);
    v_app_key    VARCHAR2(100);
    v_app_secret VARCHAR2(100);
    V_DEPT_ID    VARCHAR2(100);
    V_RULE_LEVEL NUMBER;
    V_ERR_MSG    VARCHAR2(1000);
begin
    select EXT_USER_ID,
           NAME,
           JOB_NUMBER,
           MOBILE,
           TENANT_ID
    into
        v_userid,v_name,v_job_number,v_mobile,v_tenantid
    from DIAN_SHARE_USER_V
    where IS_LEAVE = 0
      and JOB_NUMBER = upper(V('P9999_USERNAME'))
      and TENANT_ID = V('P9999_USER_TENANT')
      AND ROWNUM = 1;

    SELECT ORIGINAL_DEPT_ID
    INTO V_DEPT_ID
    FROM DIAN_BASIC_DEPT_HIERARCHICAL_USER_V
    WHERE TENANT_ID = v_tenantid
      AND USER_ID = v_userid
      AND ROWNUM = 1;

    select APP_KEY, APP_SECRET
    into v_app_key,v_app_secret
    from DIAN_TENANT_APP
    where TENANT_ID = v_tenantid
      and DEL_FLAG = 0
      and name = 'JING_DIAN'
      and ROWNUM = 1;

    apex_custom_auth.set_user(v_name);
    apex_util.set_session_state('USER_ID', v_userid);
    apex_util.set_session_state('DEPT_ID', V_DEPT_ID);
    apex_util.set_session_state('USER_TENANT', v_tenantid);
    apex_util.set_session_state('USER_NAME', v_name);
    apex_util.set_session_state('USER_JOB_NUMBER', v_job_number);
    apex_util.set_session_state('USER_MOBILE', v_mobile);

    apex_util.set_session_state('APP_KEY', v_app_key);
    apex_util.set_session_state('APP_SECRET', v_app_secret);
--     apex_util.set_session_state('API_URL', 'http://gateway_test.ywjasolar.com');
    apex_util.set_session_state('API_URL', 'http://gateway_dev.ywjasolar.com.cn:19999');


 EXCEPTION
    WHEN OTHERS THEN
        V_ERR_MSG := SQLERRM || CHR(13) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE ;
        WRITE_LOG(GET_FN_NAME(), 'ERROR', V_ERR_MSG, -1, v_tenantid);
end;
/

解决了一次选中多个用户的问题

declare
   v_row_count number(10) := 1;
   v_err_msg nvarchar2(2000);
    /**
     * create by: xiaoxian
     * create date:2023/11/17 16:28
     * modify by:
     * modify date:
     * describe:新增2.0(参考晶豹p247)
     */
begin
    for c in (select USER_ID
              from DIAN_BASIC_USER_V
              where USER_ID in (
                  select *
                  from JA_UTILS_PKG.SPLIT_STR(:P35_USER_ID, ':')
              ))

        loop
            insert into BASIC_SYSTEM_USER_ROLE(USER_ID,ROLE_ID,REMARK,IS_ENABLE, TENANT_ID,
                                                   CREATED_BY, CREATION_DATE)
            values (c.USER_ID,:P35_ROLE_ID,:P35_REMARK, 1, :USER_TENANT, :USER_ID, sysdate);

        end loop;

    apex_util.set_session_state('P35_ROW_COUNT', v_row_count);

exception
    when others then
         apex_util.set_session_state('P35_ROW_COUNT', 0);
        v_err_msg := sqlerrm || chr(13) || dbms_utility.format_error_backtrace;
        JA_WRITE_LOG('P' || :APP_PAGE_ID || '用户-角色管理-新增', 'ERROR', V_ERR_MSG, :USER_ID, :USER_TENANT,
                     :APP_NAME || ':' || :APP_ID);
end;

新的问题

晶点P38切换角色

Ajax 调用为Execute Server-Side Code返回了服务器错误ORA-06550: 第 46 行, 第 4 列:
PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
(
begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> << continue close current delete fetch lock
insert open rollback savepoint set sql execute commit forall
merge pipe purge json_exists json_value json_query
json_object json_array。

ROLE_ID可以被获取

P37 角色权限新增

Hiding error additional_info, as it contains ORA error message: ORA-01400: 无法将 NULL 插入 (&quot;JING_DIAN&quot;.&quot;BASIC_SYSTEM_ROLE_PERMISSION&quot;.&quot;PERMISSION_ID&quot;)

是没获取到ROLE_PERMISSION_IDS吗?

ROLE_ID返回类型错误

【错误原因】本应是NUMBER类型的ROLE_ID变成了NVARCHAR类型的NAME

获取不到权限IDS

原因:

权限菜单ROLE_ID

动态权限

晶鱼 task_authentication

验证函数名 APEX_TASK_AUTHENTICATION

验证后过程名 LOGIN_SUCCESS_SAVE_USER_TASK_DEMO

权限分配函数 IS_HAVE_PERMISSION_TASK

create FUNCTION IS_HAVE_PERMISSION_TASK(P_USER_ID IN NUMBER,P_RULE_ID IN NUMBER, P_PAGE_ID IN NUMBER,P_TENANT_ID IN NUMBER)
RETURN BOOLEAN
IS
    V_COUNT NUMBER;
BEGIN
--     WRITE_LOG(GET_FN_NAME(),'info',P_PAGE_ID,-1,P_TENANT_ID);
    IF P_PAGE_ID = 1 THEN
        RETURN TRUE;
    END IF;
    WITH SY1 AS
               (SELECT A.USER_ID, A.RULE_ID, B.RULE_NAME, B.PERMISSION_RANGE, A.TENANT_ID
                  FROM TASK_APEX_USER_RULE A
                  LEFT JOIN TASK_APEX_RULE B
                            ON A.RULE_ID = B.RULE_ID
                 WHERE A.DEL_FLAG = 0
                   AND A.RULE_ID = P_RULE_ID
                   AND A.TENANT_ID = P_TENANT_ID
                   AND A.IS_ENABLE = 1
                   AND A.USER_ID = P_USER_ID)
    SELECT COUNT(*)
      INTO V_COUNT
      FROM TABLE (SPLITSTR((SELECT PERMISSION_RANGE FROM SY1), ','))
     WHERE COLUMN_VALUE = P_PAGE_ID;
    IF V_COUNT > 0 THEN
        RETURN TRUE;
    ELSE
        RETURN FALSE;
    END IF;
    EXCEPTION
        WHEN OTHERS THEN
            RETURN FALSE;
END;
/

【开发技巧】多值的获取与展示

需要借助函数Listagg(),可以帮助用户将多个列数据转换为一条数据记录,更加直观展示

【精选】Oracle列转行函数 Listagg()详解-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/tianxingyun/article/details/116222199

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

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

相关文章

不受平台限制,Sketch 网页版震撼登场

Sketch 是一种基于 Mac 的矢量图形编辑器&#xff0c;可用于数字设计。其主要功能包括无损矢量编辑、完美像素精度和数百个插件同步功能&#xff0c;可导出预设和代码。它是目前流行的页面交互协作设计工具。但是 Sketch 最大的缺点是对 Windows/PC 用户不友好。严格来说&#…

笔记十七、认识React的路由插件react-router-dom和基本使用

react-router 分类 web使用 react-router-dom native使用 react-router-native anywhere&#xff08;使用麻烦&#xff09; react-router 安装 yarn add react-router-dom main.jsx import React from "react"; import ReactDOM from "react-dom/client"…

宋仕强论道之华强北曼哈商城(十二)

宋仕强论道之华强北曼哈商城&#xff08;十二&#xff09;&#xff1a; 讲了华强北万佳百货以后要讲旁边配套的商场。在1995年&#xff0c;在万佳百货旁边开了一个曼哈商城&#xff0c;名字叫曼哈是因为老板是美国纽约曼哈顿留学回来的&#xff0c;是一个叫张虹女孩子。华强北曼…

DS图—图的最短路径/Dijkstra算法【数据结构】

DS图—图的最短路径/Dijkstra算法【数据结构】 题目描述 给出一个图的邻接矩阵&#xff0c;输入顶点v&#xff0c;用迪杰斯特拉算法求顶点v到其它顶点的最短路径。 输入 第一行输入t&#xff0c;表示有t个测试实例 第二行输入顶点数n和n个顶点信息 第三行起&#xff0c;每行…

C/C++字节对齐

C/C字节对齐 C/C字节对齐1.G_PACKED2.1 pack(push)2.2 pack(1) 全部例子 C/C字节对齐 1.G_PACKED #ifdef __GNUC__#define G_PACKED( __Declaration__ ) __Declaration__ __attribute__((packed)) #else#define G_PACKED( __Declaration__ ) __pragma( pack(push,1)) __Decla…

万宾科技第四代可燃气体监测仪的作用

燃气作为一种重要的能源已在居民生活、工业生产和商业活动等领域得到了广泛的应用。但是与之而来的便是各种各样的燃气管网的安全问题&#xff0c;其中燃气管网泄漏成为了城市生命线建设中亟待解决的安全隐患。因此采取切实有效的措施来保障燃气管网的安全运行&#xff0c;应用…

龙芯loongarch64服务器编译安装pyarrow

1、简介 pyarrow是一个高效的Python库,用于在Python应用程序和Apache Arrow之间进行交互。Arrow是一种跨语言的内存格式,可以快速高效地转移大型数据集合。它提供了一种通用的数据格式,将数据在内存中表示为表格,并支持诸如序列化和分布式读取等功能。 龙芯的Python仓库安…

Python爬虫之代理IP与访问控制

目录 前言 一、代理IP 1.1.使用代理IP的步骤 1.2.寻找可用的代理IP 1.3.设置代理IP 1.4.验证代理IP的可用性 二、访问控制 2.1.遵守Robots协议 2.2.设置访问时间间隔 2.3.多线程爬取 总结 前言 在进行Python爬虫过程中&#xff0c;代理IP与访问控制是我们经常需要处…

Codebeamer—软件全生命周期管理轻量级平台

产品概述 Codebeamer涵盖了软件研发的生命周期&#xff0c;在一个整合的平台内支持需求管理、测试管理、软件开发过程管理以及项目管理等&#xff0c;同时具有IToperations&DevOps相关的内容&#xff0c;并支持变体管理的功能。对于使用集成的应用程序生命周期管理&#xf…

C++-详解C++11中的左值,左值引用,右值,右值引用

目录 一.C语言中对左值和右值的定义 1.左值 2.右值 二.左值引用和右值引用 1.左值引用 2.右值引用 3.左值引用给右值取别名 4.右值引用给左值取别名 三.移动构造和移动赋值 1.移动赋值 2.移动拷贝 ​编辑​编辑 四.完美转发 1.先看一道试题&#xff1a; 一.C语言中对左值和…

C#实体类与XML互转以及List和DataTable转XML的使用

引言 在C#开发中&#xff0c;数据的存储和传输是非常常见的需求。使用XML作为数据格式有很多优点&#xff0c;例如可读性强、易于解析等。而实体类、List和DataTable是表示数据模型的常用方式。本文将介绍如何在C#中实现实体类、List和DataTable与XML之间的相互转换&#xff0c…

【100个Cocos实例】编码不规范,接手泪两行...

点击上方亿元程序员关注和★星标。 引言 规范编码&#xff0c;从文件头部注释规范做起。 头部注释规范是一种在代码文件开头添加注释信息的做法&#xff0c;通常用于描述文件的基本信息、作者、创建日期、修改历史等。 这有助于团队成员更好地理解和维护代码。 本文将介绍一…

基于Pix2Struct的文档信息提取【DocVQA】

文档信息提取涉及使用计算机算法从非结构化或半结构化文档&#xff08;例如报告、电子邮件和网页&#xff09;中提取结构化数据&#xff08;例如员工姓名、地址、职务、电话号码等&#xff09;。 提取的信息可用于各种目的&#xff0c;例如分析和分类。 DocVQA&#xff08;文档…

yolov5检测(前向)输入视频输出(不在图上画标签形式的原)图片的方法,及设置每隔几帧保存的方式(不每帧保存减少重复)

这些天我忽然有个需求&#xff0c;要更新迭代一个场景的检测模型&#xff0c;甲方爸爸提供的新数据集是监控视频形式的(因为拍视频确实更加的方便)&#xff0c;而我训练模型确实要标注好的图片形式。 根据这些条件的话&#xff0c;思路应该是要这样的&#xff1a;首先使用现有的…

EfficientViT:高分辨率密集预测的多尺度线性注意

EfficientViT: Multi-Scale Linear Attention for High-Resolution Dense Prediction 1、介绍2、方法2.1 多尺度线性注意模块2.1.1 启用全局接收域与ReLU线性注意2.1.2 解决ReLU线性注意力的局限性。 2.2 EfficientViT架构2.2.1 骨干2.2.2 头部 3、实验 贡献&#xff1a; 1、我…

【心得】XXE漏洞利用个人笔记

XML中关于DTD类型(内部(SYSTEM)的和外部(PUBLIC)的区别) xxe的利用 XML Entity 实体注入 当程序处理xml文件时&#xff0c;没有禁止对外部实体的处理&#xff0c;容易造成xxe漏洞 危害 主流是任意文件读取 XML 文件 一般表示带有结构的数据 祖父 3个叔父 8个堂弟堂妹 …

聚观早报 |魅族21搭载超声波指纹2.0;华为长安成立新公司

【聚观365】11月28日消息 魅族21搭载超声波指纹2.0 华为长安成立新公司 OPPO Reno11 Pro本周首销 淘宝天猫推出系列AI工具 长城汽车计划全面进入欧洲市场 魅族21搭载超声波指纹2.0 魅族官方此前已宣布&#xff0c;将于11月30日召开“2023魅族秋季无界生态发布会”&#x…

【JavaScript】封装自己的JavaScript公共工具函数,并上传到npm中 进行下载

js公共方法封装方式都有哪些 全局函数 function greet(name) {console.log("Hello, " name "!"); }greet("Alice"); // 调用全局函数对象字面量 var utils {add: function(a, b) {return a b;},subtract: function(a, b) {return a - b;}…

几何教学工具 Sketchpad几何画板 mac软件特色

Sketchpad几何画板 for Mac是一款适用于macOS系统的几何教学工具&#xff0c;用户可以在其画板上进行各种几何图形的绘制、演示&#xff0c;帮助教师了解学生的思路和对概念的掌握程度。此外&#xff0c;Sketchpad更深层次的功能则是可以用来进行几何交流、研究和讨论&#xff…

在Spring Boot中隔离@Async异步任务的线程池

在异步任务执行的时候&#xff0c;我们知道其背后都有一个线程池来执行任务&#xff0c;但是为了控制异步任务的并发不影响到应用的正常运作&#xff0c;我们需要对线程池做好相关的配置&#xff0c;以防资源过度使用。这个时候我们就考虑将线程池进行隔离了。 那么我们为啥要…