删除大表T_HP_PRODUCT

本文探讨了在处理大型数据库表时,采用不同方法进行数据删除与重建的效率优化,包括直接删除、构建表结构并插入数据以及使用createTableAsSelect等策略,重点分析了外键约束、索引与碎片化的影响,以及undo表空间满导致的插入失败问题。通过案例研究,提出了优化策略以提升操作速度与稳定性。

删除一张大表的过程

1,直接删除,删除4万行用了半小时

2,建好表结构(包括索引和约束),然后insert ,,, As Select * From ,这种方式将undo插入满了,虽然我这里用的是appendnologging的方式。

3,直接create Table As Select * From ,,,这种方式建好表只要6分钟,然后就是建立索引和约束了。

 

 

-----------------------------------------------------------------

删除的第一部始终是检查它是否当了别人的’部门‘,虽然直接删除此表数据

会报外键约束的错误,但是通过rename的方式移表可以跳过外键检查,这里

就会很危险,所以必须要检查清楚

select   a.owner 主键拥有者,

         a.table_name 主键表,

         b.column_name 主键列,

         C.OWNER 外键拥有者,

         c.table_name 外键表,

         d.column_name 外键列

from user_constraints a,

     user_cons_columns b,

     user_constraints C,

     user_cons_columns d

where  a.constraint_name=b.constraint_name

and C.R_CONSTRAINT_NAME=a.constraint_name

and c.constraint_name=d.constraint_name

and a.constraint_type='P'

and a.table_name='T_HP_PRODUCT' --需要查看主外键关系的表

order by a.table_name

 

它没有当别人的部门,可以直接删除它的数据,这里也不会

报外键约束错误。

-----------------------------------------------------------------

 

Select Count(*) From T_HP_PRODUCT

Select Max(SALE_DATE) From T_HP_PRODUCT  --2050/12/31

Select Min(SALE_DATE) From T_HP_PRODUCT  --2010/1/1

-----------------------------------------------------------------

-----------------------------------------------------------------

 

<1>采用直接删除的方法,4万行的数据居然用了半个小时,这里绝对是

外键,索引和碎片的问题

Delete From T_HP_PRODUCT Where SALE_DATE  

Between to_date('2010-01-01 00:00:00','yyyy/MM/DD/ HH24:MI:SS')

    and to_date('2010-03-02 00:00:00','yyyy/MM/DD/ HH24:MI:SS')

 

查看此表发现者张表上面有很多索引

Select User_Ind_Columns.Index_Name,

       Index_Type,

       Uniqueness,

       Last_Analyzed,

       Column_Name,

       User_Indexes.Table_Name,

       Tablespace_Name

  From User_Indexes, User_Ind_Columns

 Where User_Indexes.Index_Name = User_Ind_Columns.Index_Name

   And User_Indexes.Table_Name = 'T_HP_PRODUCT';

 

直接删除的方法多半行不通

--------------------------------------------------------------------

 

 

-----------------------------------------------------------------

-----------------------------------------------------------------

<2>我先将表T_HP_PRODUCT的建表结构提出来,建立好表以及表上的索引和

约束,然后直接将需要的数据插入此表,并准备用rename的方式移动此表

下面的是要插入的数据行数,此处建立的是表T_HP_PRODUCT_1

 

Select Count(*)  From T_HP_PRODUCT Where

SALE_DATE>=  to_date('2011-01-01 00:00:00','yyyy/MM/DD/ HH24:MI:SS')

 

首先让T_HP_PRODUCT_1不记日志

Alter Table T_HP_PRODUCT_1 nologging

 

然后通过直接路径插入,我在晚上凌晨运行此条SQL

Insert /*+append*/ Into t_Hp_Product_1 

Select * From t_Hp_Product

Where Sale_Date >=To_Date('2011-01-01 00:00:00', 'yyyy/MM/DD/ HH24:MI:SS')

        

        

第二天上班报出此错:

ora-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS2' 

可以看见,是undo表空间UNDOTBS2被插满了,但是这种情况数据库并没有挂起,

插入的操作被自动中断了然后回滚了。表空间满了是不是不会引起数据库挂起

只要当磁盘上面的空间满了之后数据库才会挂起。

这里插入失败应该是上面的索引还会写undo,因为直接插入应该是不写索引的

我现在将表的索引全部删除,然后使外键失效

---------------------------------------------------------------

 

 

 

-----------------------------------------------------------------

-----------------------------------------------------------------

<3>create Table As Select * From 的方式来建表,这种情况下出来的表

是没有索引和约束的,下的这种情况运行起来要大大快于上面的情况,那么

是不是可以把上面慢的情况完全定位到索引和外键约束身上去了呢?

 

--下面命令用时6分钟半钟,这个涨I/O(应该有50142652)

Create Table t_Hp_Product_2 As Select * From t_Hp_Product

Where Sale_Date >= To_Date('2011-01-01 00:00:00', 'yyyy/MM/DD/ HH24:MI:SS')

 

要用operation_time 把差异数据补回去了

 

--这个不涨I/O5分钟完成,这张表移动过去后吃了5G左右空间,现在还没添加索引

 alter table t_Hp_Product_2 move tablespace USERLOB;

 

Select Count(*) From t_Hp_Product_2 --50142652

Select Count(*) From t_Hp_Product  Where Sale_Date >= To_Date('2011-01-01 00:00:00', 'yyyy/MM/DD/ HH24:MI:SS') --50142730

--49591190

Select Max(operation_time) From t_Hp_Product 

---------------------------------------

在创建完约束和索引后,添加索引的过程仍然消耗i/o,一个索引5分钟左右。

 

要用operation_time 把差异数据补回去了

 

Select Max(operation_time) From t_Hp_Product 

Insert Into t_Hp_Product_2 Select * From  t_Hp_Product Where operation_time> To_Date('2012-3-26 17:29:06', 'yyyy/MM/DD/ HH24:MI:SS')

 

Rename t_Hp_Product To t_Hp_Product_bakk;

Rename t_Hp_Product_2 To t_Hp_Product;

 

 

 

exec dbms_stats.gather_index_stats('gc','PK_T_HP_PRODUCT');

 

select PRODUCT_ID From  t_Hp_Product_2

Minus

select PRODUCT_ID From  t_Hp_Product

 

Delete From t_Hp_Product_2 Where product_id In (

'462473047',

'462473048',

........

'513828813'

 

)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10678398/viewspace-720574/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10678398/viewspace-720574/

select result.* from (select to_char(hp.bs_state_) as currentState, '' as laborDataSource, 'FP验收付款' as type, tp.payment_num as paymentNumber, case tp.fp_task_type when 'milestone' then '里程碑验收' else '结项验收' end as paymentType, '' as operationMode, tp.milestone_name as mileStoneName, tp.acceptance_conclusion as acceptanceConclusion, tp.is_costsharing as isCostSharing, tp.last_submit_date as lastSubmitDate, tp.creation_date as creationDate, tp.close_date as closeDate, tp.receive_num as receiptNumber, tp.po_num as poNumber, pr.po_line_desc as poLineDescription, '' as paymentMonth, case tp.is_costsharing when 'Y' then '是' else '否' end as isAdjustCostAllocation, tp.project_no as projectCode, p.project_name as projectName, p.project_type as projectType, p.hw_allot_model as hwAllotModel, p.develop_address as developAddress, pr.vendor_name as winningSupplier, org.hw_org_name as projectDepartment, (select u.lname from tpl_user_t u where u.user_id = p.hw_pm_work) as huaweiPM, (select u.lname from tpl_user_t u where u.user_id = tp.created_by) as creator, ct.current_deduction_money as deductionAmountExcludingTax, tp.payment_amount_no_tax as paymentAmountExcludingTax, ct.notpassed_reason || ' ' || ct.delay_reason || ' ' || ct.other_remark as deductionDescription, tp.payment_amount_no_tax as paymentAmountExcludingTax, vendor.supplier_first as firstSupplierApprover, vendor.supplier_last as finalSupplierApprover, null as huaweiPMFinalTM, hwpm.hwpm_last as huaweiPMFinalFP, resul.result_last as resultConfirmationFinalFP, manager.manager_last as finalApprover, to_char(replace(hp.bs_handlers_, 'u.', '')) as currentProcessor, tp.last_update_date as processCompleteTime, org.hw_org_name as hwDeptPath, org_v.l1_id as productLineId, org_v.l1_org_name as productLine, org_v.l2_id as productId, org_v.l2_org_name as product, org_v.l3_id as pduId, org_v.l3_org_name as pdu, org_v.l4_id as developId, org_v.l4_org_name as develop from omp_fp_task_payment_t tp left join act_hi_procinst ap on tp.payment_num = ap.business_key_ left join tpl_wf_hi_procform_t hp on ap.proc_inst_id_ = hp.bs_proc_inst_id_ left join omp_project_prpo_info_t pr on tp.po_num = pr.po_num left join omp_project_t p on tp.project_no = p.project_no inner join omp_org_config_t org on p.hw_dept_code = org.hw_org_code and org.status = 'ACTIVE' left join omp_local_org_t org_v on org_v.id = p.local_org_id left join omp_fp_task_payment_check_t ct on ct.payment_num = tp.payment_num left join omp_pr_apply_t apt on apt.project_id = tp.project_id left join (select l.workflow_no, min(l.creation_date) as supplier_first, max(l.creation_date) as supplier_last from omp_fp_task_payment_t q, omp_workflow_log_t l where q.payment_num = l.workflow_no and l.audit_node = '验收申请环节' and l.audit_role = '供应商PM' and l.audit_result in ('同意') group by l.workflow_no) vendor on vendor.workflow_no = tp.payment_num left join (select l.workflow_no, max(l.creation_date) as hwpm_last from omp_fp_task_payment_t q, omp_workflow_log_t l where q.payment_num = l.workflow_no and l.audit_node = '组织验收环节' and l.audit_role = '华为PM' and l.audit_result in ('同意') group by l.workflow_no) hwpm on hwpm.workflow_no = tp.payment_num left join (select l.workflow_no, max(l.creation_date) as result_last from omp_fp_task_payment_t q, omp_workflow_log_t l where q.payment_num = l.workflow_no and l.audit_node = '结果确认环节' and l.audit_result in ('同意') group by l.workflow_no) resul on resul.workflow_no = tp.payment_num left join (select l.workflow_no, max(l.creation_date) as manager_last from omp_fp_task_payment_t q, omp_workflow_log_t l where q.payment_num = l.workflow_no and l.audit_node in ('结果审批环节', '费用权签环节') and l.audit_result in ('同意') group by l.workflow_no) manager on manager.workflow_no = tp.payment_num where to_date(substr(tp.payment_num, 3, 8), 'YYYYMMDD') >= current_date - interval '2 years' and ( hp.bs_created_by_ = to_char(701667279626014) or exists (select 1 from act_hi_identitylink I where I.proc_inst_id_ = tp.proc_inst_id_ and I.type_ in ('owner', 'candidate', 'CC') and I.user_id_ = to_char(701667279626014)) or (1 = 1 and (1 = 1)))) as result where 1 = 1 order by result.creationDate desc 这个脚本查询的字段有重复的吗
08-26
中文分析FAILED: out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/LINKED/mwgifker.ko out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/LINKED/Module.symvers /bin/bash -c "(source out/var_export.sh && cd out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT && source /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/device/mediatek/build/tasks/env.sh;make -j \$(cat /proc/cpuinfo |grep processor|wc -l) -C /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/kernel/5.15_14 CC=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/prebuilts/clang/host/linux-x86/clang-r475365b/bin/clang ARCH=arm CROSS_COMPILE=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/prebuilts/mtk_toolchain/gcc-arm-linux-gnu-5.5.0-ubuntu/x86_64/bin/arm-linux-gnueabi- O=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/KERNEL_OBJ_5.15 LD=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/prebuilts/clang/host/linux-x86/clang-r475365b/bin/ld.lld M=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT LOCAL_PATH=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif KBUILD_EXTRA_SYMBOLS=\"/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/utpa2k.ko_intermediates/LINKED/Module.symvers\" src=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif KBUILD_MODPOST_WARN=y LOCAL_MODULE=mwgifker.ko ) && (prebuilts/build-tools/linux-x86/bin/acp /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/mwgifker.ko out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/LINKED/mwgifker.ko ) && (prebuilts/build-tools/linux-x86/bin/acp /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/Module.symvers out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/LINKED/Module.symvers ) && (mkdir -p out/target/product/khandala/symbols/ko/ ) && (prebuilts/build-tools/linux-x86/bin/acp /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/mwgifker.ko out/target/product/khandala/symbols/ko/mwgifker.ko )" out/var_export.sh: line 62: export: `apollo-prod-2105 -DCUSTOMER=mediatek -DVERSION=t-apollo-mp-2105-refu-1640-001-306 -DCOMPANY=mediatek -DBUILD_CMD=default -DPRODUCT_SW_VERSION=0.1.0.0.M001 -DDATA_SEPARATION_PRO_ID_PATH=/vendor/project_id -DDATA_SEPARATION_PRO_ID_FILE=project_id.ini -DDATA_SEPARATION_DATAINDEX_PATH=/vendor/cusdata/config/dataIndex -DSUPPORT_FUSION_TTY -DUTOPIA_SUPPORT -DSYS_CB_RECORD_SUPPORT -DSYS_MTAL_RECORD_SUPPORT -DCONFIG_SUPPORT_OVL -DFUSION_DFB_SUPPORT -DAPP_MERGE_INTO_ONE_OSD -DMW_MERGE_INTO_ONE_OSD -DCC_MERGE_INTO_ONE_OSD -DAPP_OLED_SUPPORT -DMW_FUSION_TV_SUPPORT -DAPP_FUSION_USE_MI_SYS_PARSE_INI_FILE -DSUPPORT_FILESYSTEM_UPGRADE_PARTITION -DAPP_FUSION_APOLLO_FILE_PATH=/vendor/tvconfig/apollo -DAPP_FUSION_MI_FILE_PATH=/vendor/tvconfig/config -DAPOLLO_TO_LOGCAT=1 -DAPP_BLUE_LIGHT_SUPPORT -DAPP_HDR_SUPPORT -DAPP_LEGACY_UX_DISABLE_SUPPORT -DAPP_CUSTOMER_DEF_SOLE_HP_VOL -DAPP_SUPPORT_HEVC_10_BIT -DSYS_ANDROID_TV_TIF_SUPPORT -DCECNFY5VSTATUS -DMW_SVL_EVERY_NOTIFY -DMW_SUPPORT_2STC -DNDEBUG -DMW_SYM_SUPPORT -DSIG_TRACER_ENABLED -DCLI_LEVEL_VERBOSE -DEXT_DBG_DEV -DCLI_SUPPORT -DCC_WIFI_U2_SPEED_ON_U3PORT -DMW_DBG_SUPPORT_CHARS_COUNTER -DMW_DBG_CHARS_COUNT_DFT_ENABLE -DTIME_MEASUREMENT -DTMS_INIT_LEVEL_COMMON=TMS_LEVEL_OFF_LINE -DTIME_MEASUREMENT_DEFAULT_OFF -DCC_MTD_ENCRYPT_SUPPORT -DCC_MSDC_AES_SUPPORT -DMW_FAKE_THREAD -DAPP_FUSION_TV_SUPPORT -DMW_SUPPORT_DOLBY_VISION -DCC_SUPPORT_DOLBY_VISION -DAPP_SUPPORT_DOLBY_VISION -DDT_SUPPORT_MULTI_CLOCK -DDLM_USE_AES_MODE -DCC_DLM_V2 -DDLM_SHA_256 -DDLM_GCPU_SHA_256 -DDLM_USE_GCPU_AES -DUPGRADE_PARTITION_NO_FS -DDLM_USE_LARGE_BUFFER -DSYS_MTKTVAPI_SUPPORT -DSYS_QUIET_HOT_BOOT_SUPPORT -DMW_FAKE_THREAD -DSYS_MTK_STREAM_RPC_SUPPORT -DSYS_CMPB_RPC_SUPPORT -DSYS_MTK_DRM_RPC_SUPPORT -DMTK_DRM_SUPPORT -DHELIX_SUPPORT -DMODEL_NAME=kenai2020 -DCUST_MODEL=kenai2020 -DSERIAL_NUMBER=IDTV -DUSB_UPG_VERSION= -DDUAL_CHANNEL_SUPPORT -DSN_FLASH_USE_NAND -DREPLACE_EEPROM_WITH_EMMC -DSYS_EMMC_SUPPORT -DSYS_EMMC_SUPPORT -DSN_NAND_FLASH_2=block/platform/mstar_mci.0/by-name/cha -DSN_NAND_FLASH_4=block/platform/mstar_mci.0/by-name/chb -DSN_FLASH_PVR=block/platform/mstar_mci.0/by-name/schedpvr -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DFM_EXT_FS_SUPPORT -D_CPU_LITTLE_ENDIAN_ -DLINUX_TURNKEY_SOLUTION -DSINGLE_PROCESS -DSYS_FAST_BOOT -DSYS_NETWORK_LAZY_INIT -DSYS_HOTKEY_WAKEUP_SUPPORT -DMW_HOTKEY_WAKEUP_SUPPORT -DLINUX_MEM_SOLUTION -DRPC_ENABLE -DHEADER_COMMON_H=inc/u_common.h -DSWI_CALLBACK -DKEY_FROM_DFB -DSVCTX_SPLIT_SUPPORT -DANA_TUNER_SUPPORT -DV4L_SUPPORT -DXML_SUPPORT -DINET_SUPPORT -DUSE_SMART_FILE -DMW_IPV6_SUPPORT -DSYS_IPV6_SUPPORT -DNETFLIX_SUPPORT -DCC_NETFLIX_CE3_SUPPORT -DANDROID_DLNA_SUPPORT -DANDROID_PULL_DLNA_SUPPORT -DMW_JPG_SUPPORT -DMW_BMP_SUPPORT -DMW_PNG_SUPPORT -DMW_GIF_SUPPORT -DMW_WEBP_SUPPORT -DMW_MP3_SUPPORT -DMW_CM_PLAYBACK_SUPPORT -DVIDEO_PLAYBACK_SUPPORT -DMW_MMP_VIDEO_SUPPORT -DMM_LAST_MEMORY_SUPPORT -DENABLE_MULTIMEDIA -DMW_TV_AV_BYPASS_SUPPORT -DTIME_SHIFT_SUPPORT -DTIME_SHIFT_ENCRYPTION -DMW_PVR_PAUSE_DONOT_STOP_STC -DMW_TV_AV_BYPASS_SUPPORT -DSYS_RECORD_SUPPORT -DMW_ENABLE_TRICK_REACH_VALID_RANGE_END_MSG -DAPP_NAV_REC_SUPPORT -DENABLE_DIVX_DRM -DCMPB_DASH_SUPPORT -DCMPB_OVER_MI_MM -DSUPPORT_RATING_PVR -DAPP_AM_NO_POWER_DOWN -DAPP_BACKGROUND_MANAGER_ENABLED -DSYS_SCHED_PVR_FLASH_SUPPORT -DFIRMWARE_UPGRADE -DAPP_UPG_SUPPORT -DAPP_NET_UPG_SUPPORT -DCC_OSD_USE_FBM -DSUPPORT_FLASH_PQ -DSUPPORT_FLASH_AQ -DADSP_BIN_SUPPORT -DCHIP_SPEC_SUPPORT -DLINUX_NAND_USE_SDM -DMW_ASH_DUALMONO_RECOVER -DDISABLE_BASIC_PART -DSYS_3RD_RO -DMW_MSS_SUPPORT -DAPP_FACT_SUPPORT -DCC_SECURE_BOOT_WO_RAMDISK -DANDROID -DIMGDRV_ANDROID -DANDROID_TOOLCHAIN -DANDROID_TWO_WORLDS -DDISABLE_TV_WORLD_NW_SETTING -DCC_NATIVE_CB2_NOTIFY -DCC_PDWNC_REBOOT_NOTIFY -DMW_SUPPORT_MTK_ANDROID_RM -DAPP_SUPPORT_MTK_ANDROID_RM -DAPP_SUPPORT_4K2K -DMW_SUPPORT_4K2K -DAPP_3D_PHOTO_SUPPORT -DMW_PHOTO_SHOW_ON_VDP -DAPP_SUPPORT_STR_CORE_OFF -DMW_SUPPORT_STR -DAPP_DOLBY_AUD_SUPPORT -DMW_DOLBY_AUD_SUPPORT -DAPP_DOLBY_AUD_SUPPORT_MS12B -DAPP_NAV_COMP_WW_ENABLE_CHECK_SUPPORT -DAPP_IF_MTAL_MULTIPROCESS_CALLBACK -DAPP_MPEG_NR_SUPPORT -DAPP_DI_SUPPORT -DAPP_GAME_MODE_SUPPORT -DAPP_MERGE_INTO_ONE_OSD -DMW_MERGE_INTO_ONE_OSD -DCC_MERGE_INTO_ONE_OSD -DAPP_MTK_MVIEW_SUPPORT -DFUSION_DFB_SUPPORT -DAPP_MENU_SUPPORT_DYNAMIC_LIFE_CYCLE -DAPP_IMG_UI -DAPP_537X_SUPPORT -DAPP_CFG_EEPROM_SUPPORT -DAPP_NAV_IPTS_LST -DAPP_NAV_IPTS_LST_BAR_ACTIVE -DAPP_NAV_IPTS_LST_BAR_DISABLE -DAPP_INPUT_SRC_HOTKEY -DAPP_EPG_ICON_MSG -DAPP_NAV_FRZ_SUPPORT -DAPP_NAV_MISC_COMP -DAPP_EPG_FULL_VIDEO -DAPP_MLM_S639_TO_LANGIDX_SUPPORT -DAPP_HV_POS_MODIFICATION_SUPPORT -DAPP_NAV_IPTS_DISABLE_XNG_CH_AS_FOCUS_AV -DAPP_SUPPORT_AM_DEFAULT_KEY_HANDLER -DAPP_5893_MHL_SUPPORT_PORT -DAPP_MENU_STORE_CH_LST_BY_AGENT -DAPP_SINGLE_COLOR_TEMP_PATH -DAPP_SPDIF_DELAY_SUPPORT -DAPP_NETWORK_SUPPORT -DAPP_NETWORK_WIFI_SUPPORT -DAPP_NETWORK_IPV6_SUPPORT -DAPP_MMP_VIDEO_PLAYBACK_ENABLE -DMMP_FB_RC_IS_ENABLE_VIDEO_FILTER -DMMP_FB_RC_IS_ENABLE_TEXT_FILTER -DAPP_NAV_REC_SUPPORT -DAPP_NAV_REC_TSHIFT_SUPPORT -DAPP_NAV_REC_DTV_TSHIFT_SUPPORT -DAPP_NAV_REC_SUPPORT -DAPP_NAV_REC_PVR_SUPPORT -DAPP_NAV_REC_DTV_PVR_SUPPORT -DAPP_MMP_PVR_SUPPORT -DAPP_REMINDER_UTIL_SUPPORT -DAPP_NAV_REC_PVR_SCH_SUPPORT -DAPP_SCHED_PVR_FLASH_SUPPORT -DAPP_VIDEO_FLIP_SUPPORT -DAPP_VIDEO_MIRROR_SUPPORT -DAPP_IMG_CENTER_SUPPORT -DAPP_NAV_USE_FRAME_AS_ROOT_WIDGET -DCONFIG_SUPPORT_OVL -DCC_FRAME_OFFSET -DCC_SOURCE_AUTO_DETECT -DFUSION_DFB_SUPPORT -DCC_MTD_SUPPORT_64_PARTITION -DCC_SUPPORT_AVB -DAPP_MERGE_INTO_ONE_OSD -DMW_MERGE_INTO_ONE_OSD -DCC_MERGE_INTO_ONE_OSD -DCC_SUPPORT_AB_UPDATE -DCC_SUPPORT_DTO -DCC_SUPPORT_DRAM_3GB -DCC_SUPPORT_DRAM_32BIT_SIZE -DPICACHU_SUPPORT -DCC_FBM_TWO_4K2K -DCC_SUPPORT_DOLBY_VISION -DCC_SUPPORT_SMI -DCC_SUPPORT_EMI -DCC_SUPPORT_M4U -DCC_DTVDRV_RUNTIME_PM -DCC_NO_BIM_INTR -DCC_SYM_SUPPORT -DSIG_TRACER_ENABLED -DCC_FBM_SUPPORT_SWDMX -DCC_KERNEL_HS400_SUPPORT -DCC_EMMC_HS400 -DCC_HDMI_2_0_HDCP_BIN -DCC_HDMI_2_0_SUPPORT -DCC_QUIET_HOT_BOOT_SUPPORT -DCC_BT_WAKEUP_SUPPORT -DCC_SUPPORT_CHIPID -DREPLACE_EEPROM_WITH_EMMC -DSYS_EMMC_SUPPORT -DCC_WIFI_WOWLAN_SUPPORT -DCC_WIFI_WOWLAN_LOW_ACTIVE -DCC_FBM_MAPPING_ONE_BY_ONE -DCC_VDEC_FBM_DYNAMIC_MAPPING -DCC_JPEG_FBM_DYNAMIC_MAPPING -DCC_UBOOT_MINIGUNZIP_SUPPORT -DCC_ENABLE_SEAMLESS_FOR_2D -DCC_ENABLE_SEAMLESS_FOR_MVC -DCC_SECURE_BOOT_WO_RAMDISK -DCC_SUPPORT_2STC -DDLM_USE_AES_MODE -DCC_DLM_V2 -DDLM_SHA_256 -DDLM_GCPU_SHA_256 -DDLM_USE_GCPU_AES -DUPGRADE_PARTITION_NO_FS -DDLM_USE_LARGE_BUFFER -DCC_ENABLE_SEAMLESS_FOR_MVC -DSYS_ANDROID_TV_TIF_SUPPORT -DCECNFY5VSTATUS -DMW_FAKE_THREAD -DCC_LOADER_LOGO_SUPPORT -DCC_SUPPORT_BL_DLYTIME_CUT -DCC_LOADER_LOGO_LONG_TIME -DCC_EMMC_UPGRADE_SUPPORT -DCC_SDMMC_EMMC_SUPPORT_USB_RECOVERY -DCC_MTD_ENCRYPT_SUPPORT -DCC_MSDC_AES_SUPPORT -DCC_UBOOT_QUIET_BOOT -DNDEBUG -DCC_KERNEL_NO_LOG -DOSAI_FOR_NUCLEUS -DLOADER_USB_UPGRADE -DAUTO_USB_UPGRADE_ENABLE=1 -DCC_DUALLOADER_SUPPORT -DCC_SUPPORT_STR -DCC_SUPPORT_STR_CORE_OFF -DCC_SUPPORT_STR_TEMP -DCC_SUPPORT_STR_DEBUG -DCC_STR_ONOFF_TEST_ENABLE -DTIME_MEASUREMENT -DLINUX_NAND_USE_SDM -DCC_NETFLIX_CMPB_SUPPORT -DNETFLIX_SUPPORT -DCC_NETFLIX_CE3_SUPPORT -DCC_FBM_TWO_FBP -DCC_SECOND_B2R_SUPPORT -DCC_SUPPORT_PRINT_MEM_INFO -DLINUX_TURNKEY_SOLUTION -DKEY_FROM_DFB -DSUPPORT_FLASH_PQ -DSUPPORT_FLASH_AQ -DADSP_BIN_SUPPORT -DCC_USE_2TB_EMMC -DCC_ENABLE_SKB -DCC_MSDC_ENABLE -DCC_EMMC_BOOT -DSN_FLASH_UBOOT_ENV=mmcblk0p3 -DTUNER_SUPPORT_MULTI_SYS_TV -DSUPPORT_MULTI_SYSTEM -DCC_H264_SUPPORT -DCC_IPV6_SUPPORT -DJPG_ENABLE -DCC_H264_SUPPORT -DENABLE_MULTIMEDIA -DTIME_SHIFT_SUPPORT -DSYS_RECORD_SUPPORT -DCC_AUD_MMP_FULL_SUPPORT -DCC_OSD_USE_FBM -DCHIP_SPEC_SUPPORT -DCC_DISABLE_BASIC_PART -DCC_FLIP_MIRROR_SUPPORT -DCC_FLIP_MIRROR_FROM_EEPROM -DCC_FLIP_ENABLE -DCC_FLIP_MIRROR_SUPPORT -DCC_FLIP_MIRROR_FROM_EEPROM -DCC_MIRROR_ENABLE -DCC_SUPPORT_4K2K -DCC_FBM_SUPPORT_4K2K -DSUPPORT_HDMI_YCBCR444 -DCC_4K2K_PHOTO_TO_VDO_BUFFER -DSUPPORT_3D_EXT_COMP_TRL=1 -DCC_VDEC_RM_SUPPORT -DCC_SUPPORT_VDEC_PREPARSE -DCC_SUPPORT_NPTV_SEAMLESS -DCC_SUPPORT_HDMI_FBOOTING -DCC_HDMI_ARC_SPDIF_CTRL -DCECNFY5VSTATUS -DCC_FBM_SUPPORT_DMXPID -DCC_3RD_RO -DANDROID -DCC_MIXSOUND_GAIN_NOT_SYNC_WITH_VOL -DCC_EMMC_ERASE_SIZE_ALIGNMENT_1M -DIMGDRV_ANDROID -DCC_ENABLE_ADECOMX -DCC_ENABLE_VDECOMX -DCC_ENABLE_VENCOMX -DVDEC_YUV_CVT_IMG -DCC_VOMX_TV_COEXIST -DCC_SECOND_B2R_SUPPORT -DCC_ENABLE_ADECOMX -DCC_SSIF_SUPPORT -DCC_3D_MM_DS_SUPPORT -DCC_SUPPORT_VSS -DCC_ENABLE_REBOOT_REASON -DANDROID_TOOLCHAIN -DCC_ANDROID_REBOOT -DCC_PDWNC_REBOOT_NOTIFY -DANDROID_TWO_WORLDS -DCC_ANDROID_TWO_WORLDS -DCC_SUPPORT_DYNAMIC_ENABLE_DFB_INPUTEVENT -DCC_SUPPORT_MTK_ANDROID_RM -DCC_SECURE_BOOT_V3 -DCC_SECURE_BOOT_SCRAMBLE -DCC_PRELOADER2_ENABLE -DCC_LOADER_VER_CHECK -DCC_MTAL_MULTIPROCESS_CALLBACK -DCC_SUPPORT_WIFI -DGAM_SUPPORT -DCC_FILMMAKER_MODE_SUPPORT -DENERGY_MODE_SUPPORT -DCC_SONYDEMOD_CXD2842 -DSONY_DEMOD_CRYSTAL_41M -DCC_EXTERNAL_DEMOD -DSUPPORT_USB30 -DCC_CONFIG_IRRX_COMMON_DRIVER_DTV -DDRV_IF_EU -DCC_NAV_DEMOD_DVBT -DCC_NAV_SCART -DUSE_ATD_IF_DEMOD -DCC_DVBT_SUPPORT -DCC_USE_MTAL -DCC_USB_SUPPORT_HUB -DCC_AUD_PWM_SAWLESS_PLL_EN -DCC_AUD_DVBT_SUPPORT -DCC_AUD_ENABLE_PLAY_MUTE_CONTROL -DCC_AUD_SILENCE_SUPPORT -DCC_MT5391_AUD_3_DECODER -DCC_MT5391_AUD_MW_AUTO_CTRL -DCC_AUD_4_DECODER_SUPPORT -DCC_AUD_DATASRAM -DCC_AUD_MIXSOUND_SUPPORT -DCC_AUD_HDMI_PARSER_2_0_SUPPORT -DCC_AUD_HDMI_PARSER_3_0_SUPPORT -DCC_AUD_SUPPORT_DUAL_DSP -DCC_AUD_DISABLE_2ND_DSP -DCC_AUD_DISABLE_2ND_DSP -DCC_AUD_ENLARGE_APROC_DRAM -DCC_AUD_ARM_SUPPORT -DCC_AUD_ARM11_SUPPORT -DCC_AUD_ARM_RENDER -DCC_AUD_RISCIEC_SUPPORT -DCC_AUD_RISCAOUT_SUPPORT -DCC_AUD_AOUT_128_SUPPORT -DCC_AUD_DSP_EU_MODEL -DCC_AUD_HP_DEPOP -DCC_AUD_RISCIEC_SUPPORT -DCC_AUD_RISCAOUT_SUPPORT -DCC_AUD_AOUT_128_SUPPORT -DCC_AUD_DOLBY_SUPPORT_MS12 -DCC_AUD_DOLBY_SUPPORT_MS12v2 -DCC_AUD_DOLBY_SUPPORT_MS12B -DCC_AUD_DOLBY_SUPPORT_DAPv2 -DCC_AUD_DOLBY_SUPPORT_MS12_RISCENC -DCC_AUD_CPUENC_SUPPORT -DCC_AUD_DOLBY_SUPPORT_DDC -DCC_AUD_DOLBY_SUPPORT_DDT -DCC_AUD_DTSM6 -DCC_AUD_NCSTOOL_SUPPORT -DCC_AUD_DSP_SUPPORT_MIXSOUND_MEMPLAY -DCC_AUD_DATA_UPLOAD_SUPPORT -DCC_AUD_SUPPORT_MS10 -DCC_AUD_SUPPORT_SPDIF_V20 -DCC_AUD_SUPPORT_NEW_TUNNEL_MODE -DCC_AUD_ENABLE_INTERNAL_LDO -DCC_SUPPORT_OD -DCC_PMIC_RICHTEK -DCC_ARM_GIC -DCC_ARM_TIMER -DNAV_CONFIG_FILE=config/nav_config_Oryx_m1v1.h -DCC_MT5893 -D_CPU_LITTLE_ENDIAN_ -DI1394_DRV_ONLY -DCC_SCPOS_EN -DCC_SRM_ON -DCC_53XX_SWDMX_V2 -Wall -Wno-format -DMT53XX_OSAI_MODULE -DMT53XX_FB_MODULE -DCC_DYNAMIC_POWER_ONOFF -DNDEBUG -Wno-unused-value -pipe -DONE_BINARY_REGION -DAPP_SEPARATE_INP_SRC_FOR_ATV_DTV -DCC_CI_PLUS_ECP_MI_SVP_SUPPORT -DCC_CI_PLUS_V20_SUPPORT -DCC_DVBT_SUPPORT -DCC_INTERNAL_CI -DCC_OPTEE_WITH_PVRKEY -DCC_PVR_PLAYBACK_USE_AESDMA -DCI_PLUS_IP_STRM_SUPPORT -DCI_PLUS_SUPPORT -DSYS_OAD_SUPPORT -DSYS_OVERRIDE_DISP_REGION_SUPPORT -DDVBT_CI_ENABLE': not a valid identifier Ubuntu OS=Ubuntu-18.04-x86_64 PATH=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/host/linux-x86/bin:/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/tools/binary/open/build-tools:/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/tools/binary/open/build-tools/1804:/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/tools/binary/open/build-tools/1804/usr/bin:/mtkeda/dtv/cluster/odb:/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/prebuilts/build-tools/path/linux-x86:/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/.path ANDROID_BUILD_PATHS= ANDROID_TOP=/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5 OS=Ubuntu-18.04-x86_64 make: Entering directory `/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/kernel/5.15_14' make[1]: Entering directory `/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/KERNEL_OBJ_5.15' CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/zlib/adler32.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/zlib/crc32.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/zlib/inffast.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/zlib/inflate.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/zlib/inftrees.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/zlib/uncompr.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/zlib/zutil.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/png.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/pngget.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/pngmem.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/pngread.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/pngrio.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/pngrtran.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/pngrutil.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/pngset.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/pngtrans.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/middleware/png/readpng.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/msapi_bmp_decoder.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/msapi_gif_decoder.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/msapi_png_decoder.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/msapi_stillimage_bm.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/msapi_stillimage_dataio_file.o CC [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/msapi_stillimage_dlmalloc.o /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/msapi_gif_decoder.c:388:9: warning: mixing declarations and code is a C99 extension [-Wdeclaration-after-statement] U8* ret = NULL; ^ /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/msapi_gif_decoder.c:1195:25: warning: mixing declarations and code is a C99 extension [-Wdeclaration-after-statement] U16 u16bgColor = RGB8888_TO_1555(((pstGIFInfo[u32ObjNum]->gif89.transparent != - 1) ? 0 : 1), ^ /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/msapi_gif_decoder.c:1230:29: warning: mixing declarations and code is a C99 extension [-Wdeclaration-after-statement] S32 rowstride_prev_prev_frame = 0; ^ /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/msapi_gif_decoder.c:1163:24: warning: mixing declarations and code is a C99 extension [-Wdeclaration-after-statement] GIF_FRAME* prev_frame; ^ /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/msapi_gif_decoder.c:1450:9: warning: mixing declarations and code is a C99 extension [-Wdeclaration-after-statement] S32 i; ^ /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/middleware/png/pngrutil.c:1825:10: warning: misleading indentation; statement is not part of the previous 'else' [-Wmisleading-indentation] Dapi_png_ptr->iwidth = (Dapi_png_ptr->width + Dapi_png_pass_inc[Dapi_png_ptr->pass] - 1 - Dapi_png_pass_start[Dapi_png_ptr->pass]) / ^ /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/middleware/png/pngrutil.c:1822:7: note: previous statement is here else ^ /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/msapi_gif_decoder.c:2252:10: warning: mixing declarations and code is a C99 extension [-Wdeclaration-after-statement] BOOL bPhase2; ^ /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/misdk/stbmsapi/gif/msapi_png_decoder.c:658:9: warning: mixing declarations and code is a C99 extension [-Wdeclaration-after-statement] U32 u32Remainder, u32Copied = 0;; ^ 1 warning generated. 1 warning generated. 6 warnings generated. LD [M] /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/mwgifker.o MODPOST /home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/Module.symvers FATAL: modpost: parse error in symbol dump file make[2]: *** [/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/obj/KERNEL_MODULES/mwgifker.ko_intermediates/BUILT/Module.symvers] Error 1 make[1]: *** [modules] Error 2 make[1]: Leaving directory `/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/out/target/product/khandala/KERNEL_OBJ_5.15' make: *** [__sub-make] Error 2 make: Leaving directory `/home/zhouzheng/MT9629_r2u_002/mtk_rls_ref5/vendor/mediatek/tv/kernel/5.15_14'
07-04
先看效果: https://renmaiwang.cn/s/jkhfz Hue系列产品将具备高度的个性化定制能力,并且借助内置红、蓝、绿三原色LED的灯泡,能够混合生成1600万种不同色彩的灯光。 整个操作流程完全由安装于iPhone上的应用程序进行管理。 这一创新举措为智能照明控制领域带来了新的启示,国内相关领域的从业者也积极投身于相关研究。 鉴于Hue产品采用WiFi无线连接方式,而国内WiFi网络尚未全面覆盖,本研究选择应用更为普及的蓝牙技术,通过手机蓝牙与单片机进行数据交互,进而产生可调节占空比的PWM信号,以此来控制LED驱动电路,实现LED的调光功能以及DIY调色方案。 本文重点阐述了一种基于手机蓝牙通信的LED灯设计方案,该方案受到飞利浦Hue智能灯泡的启发,但考虑到国内WiFi网络的覆盖限制,故而选用更为通用的蓝牙技术。 以下为相关技术细节的详尽介绍:1. **智能照明控制系统**:智能照明控制系统允许用户借助手机应用程序实现远程控制照明设备,提供个性化的调光及色彩调整功能。 飞利浦Hue作为行业领先者,通过红、蓝、绿三原色LED的混合,能够呈现1600万种颜色,实现了全面的定制化体验。 2. **蓝牙通信技术**:蓝牙技术是一种低成本、短距离的无线传输方案,工作于2.4GHz ISM频段,具备即插即用和强抗干扰能力。 蓝牙协议栈由硬件层和软件层构成,提供通用访问Profile、服务发现应用Profile以及串口Profiles等丰富功能,确保不同设备间的良好互操作性。 3. **脉冲宽度调制调光**:脉冲宽度调制(PWM)是一种高效能的调光方式,通过调节脉冲宽度来控制LED的亮度。 当PWM频率超过200Hz时,人眼无法察觉明显的闪烁现象。 占空比指的...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值