-
2020-10-22:谈谈java中的LongAdder和LongAccumulator的相同点和不同点。
-
AR502H的容器是开放的,并且制作容器的脚本已经发布了,请参考《软件二次开发指南》中相关章节那么如何在这个脚本中修改,制作带有JDK的容器内,可参考以下步骤:第一步:在build目录下创建一个jdk目录,里面存放下载好的jdk文件,以下已OpenJDK为例第二步:修改编译环境中的/usr/local/bin/create-rootfs的脚本,新增3处内容,如下图红框内的部分第三步:参考边缘计算网关二次开发指南中的LXC容器包制作章节,制作LXC的ova镜像最后,在设备上安装容器,登录到容器内,查看java版本号注:如何把java程序制作成应用,后续会发布出来,调测阶段,可以先使用java -jar拉起对应的程序试试效果。如在使用过程中有问题请跟帖讨论。原创文章,转载请注明出处
-
2020-10-18:java中LongAdder和AtomicLong有什么区别?#福大大架构师每日一题#
-
大多数人选择Java可能只是因为听说Java前景好、Java比较好找工作、Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体好在哪里,心里却是没有什么概念的。今天娜娜米就带大家一起了解一下,学编程选Java的8大理由。1、Java广受欢迎Java仍然是世界上最受欢迎的编程语言之一,有无限多种方法使用Java。根据2019年月TIOBE指数和IEEE Spectrum排名,Java依然是最受欢迎的编程语言。2、薪资可观最新的一些报告证明,Java程序员是业内薪资最高的程序员之一。根据全球数字化业务媒体机构Quartz的分析,拥有Java技能有利于提高薪资。职业规划公司Gooroo在2015年薪资和需求报告中指出,Java仍然是美国、英国和澳大利亚最受欢迎和薪资最高的编程语言之一。根据全球就业相关内容搜索引擎Indeed.com对职业排名的报告显示,2016年2月美国Java开发人员招聘职位的平均薪资为102,000美元。3、Java程序员市场紧缺雇主对Java编程技能有着很高的需求。Java是广泛使用的编程语言,拥有庞大的客户群。Java程序员如今虽然很火,但市场依旧是供不应求的,而且在待遇上Java程序员也比大多数其他语言编程人员要高,因此学习Java还是大有可为,学好后,不用担心自己的所学没有用武之地。java 项目大全:www.1b23.com4、Java无处不在据估计,全球范围内有超过30亿部设备运行Java,超过其他任何一种语言。Java被用于全球最知名的众多网站中,包括eBay.com、Linkedin.com、Amazon.com和Facebook.com。Java尤其适用于在几乎任何行业中开发企业应用等,包括金融服务、医疗保健和制造业。这也意味着Java方面的工作比较好找,另一点是在做Java开发时如果遇到问题,可以很容易从网上找到解决办法。5、简单易学Java是一个面向对象的编程语言,容易理解。而且略去了多重加载、指针等难以理解的概念。并且实现了自动垃圾回收,大大简化了程序设计。6、安全高效的工具选择编程语言的一个重要因素是:能够确保工作效率的优秀开发工具。许多工具都是免费或者开源提供。NetBeans和Eclipse都是集成开发环境(IDE)空间的最佳证明。而且,Java充满安全性,Java中没有指针,这样就没有办法直接访问内存了。另外Java也不容易出现内存泄露。7、充满激情的Java社区全球约有900万名Java开发人员,创造了一个充满活力和积极进取的Java社区,大家共同努力发展壮大这个功能强大的编程语言。它能够通过多种方式融入你的整个职业生涯中。8、Java拥有强大的发展路线图Oracle仍将遵循强大的路线图致力发展Java。同时Java有着更快的更新频率,Oracle计划将该平台模块化,同时提高安全性和使用性能。这将使Java扩展更为轻松,可用于从大型软件系统到小型设备的各种设备规模,其中包括嵌入式物联网处理器。以上就是娜娜米为大家介绍的Java开发的8大优势的相关内容啦,希望对大家有所帮助。
-
看putObject的时候meta里面会过滤掉这些header
-
2020-10-06:java中垃圾回收器让工作线程停顿下来是怎么做的?#福大大架构师每日一题#
-
2020-10-04:java中GC Root 对象有哪些?#福大大架构师每日一题#
-
2020-10-03:java中satb和tlab有什么区别?#福大大架构师每日一题#
-
通过Hcatalog的java接口,获取hive表的元数据信息 一、获取hive表元数据的方式: 1、通过hive的beeline客户端命令获取表元数据,如在beeline客户端中执行desc tablename; 2、通过hive的jdbc接口获取获取表元数据; 3、通过HCatalog的hcat客户端获取表元数据,如执行hcat -e "desc tablename"; 4、通过HCatalog的java接口获取表元数据; 5、通过WebHcat的restful接口获取表元数据; 6、通过hive表的元数据库高斯DB获取表元数据(hive表的元数据库不对外开放)。 二、关于HCatalog HCatalog建立在Hive Metastore之上,具有Hive的DDL能力。 从另外一种意义上说,HCatalog还是Hadoop的表和存储管理层,它使用户能够通过使用不同的数据处理工具(比如Pig和MapReduce),更轻松地在网格上读写HDFS上的数据, HCatalog还能为这些数据处理工具提供读写接口,并使用Hive的命令行接口发布数据定义和元数据探索命令。此外,经过封装这些命令,WebHcat Server还对外提供了RESTful接口。 HCatalog接口直接访问Hive Metastore,在效率上更为高效。本章节主要介绍通过Hcatalog的java接口,获取hive的元数据信息。 三、java代码 样例代码功能:获取hive表中列的个数。 package com.huawei.bigdata.hcatalog.example; import java.util.HashMap; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; import org.apache.hive.hcatalog.data.schema.HCatSchema; import org.apache.hive.hcatalog.mapreduce.HCatOutputFormat; import org.apache.hive.hcatalog.mapreduce.OutputJobInfo; public class HCatalogExample extends Configured implements Tool { public HashMap<String, Integer> hm = new HashMap<>(); public int run(String[] args) { HiveConf.setLoadMetastoreConfig(true); String[] tablenames = args[0].split(","); Job outputJob = null; HCatSchema schema = null; try { outputJob = Job.getInstance(); for (int i = 0; i < tablenames.length; i++) { OutputJobInfo outputjobInfo = OutputJobInfo.create("default", tablenames[i], null); HCatOutputFormat.setOutput(outputJob, outputjobInfo); schema = outputjobInfo.getOutputSchema(); hm.put(tablenames, schema.getFieldNames().size()); } } catch (Exception e) { e.printStackTrace(); return 1; } return 0; } public static void main(String[] args) throws Exception { HCatalogExample he = new HCatalogExample(); int errcode = ToolRunner.run(he, args); he.hm.forEach((a, b) -> System.out.println("表"+a + "的列的个数为:" + b)); System.exit(errcode); } } 四、调试代码 1、安装集群的客户端,例如安装目录为“/opt/client”; 2、将上述代码打包成 HCatalog-examples.jar,并上传至客户端所在服务器的指定目录下,例如上传目录为“/opt/hive_client”; 3、加载如下环境变量: export HCAT_CLIENT=/opt/hive_client export HADOOP_HOME=/opt/client/HDFS/hadoop export HIVE_HOME=/opt/client/Hive/Beeline export HCAT_HOME=$HIVE_HOME/../HCatalog export LIB_JARS=$HCAT_HOME/lib/hive-hcatalog-core-3.1.0.jar,$HCAT_HOME/lib/hive-metastore-3.1.0.jar,$HCAT_HOME/lib/hive-standalone-metastore-3.1.0.jar,$HIVE_HOME/lib/hive-exec-3.1.0.jar,$HCAT_HOME/lib/libfb303-0.9.3.jar,$HCAT_HOME/lib/slf4j-api-1.7.10.jar,$HCAT_HOME/lib/antlr-3.5.2.jar,$HCAT_HOME/lib/jdo-api-3.0.1.jar,$HCAT_HOME/lib/antlr-runtime-3.5.2.jar,$HCAT_HOME/lib/datanucleus-api-jdo-4.2.4.jar,$HCAT_HOME/lib/datanucleus-core-4.1.17.jar,$HCAT_HOME/lib/datanucleus-rdbms-fi-4.1.19.jar,$HCAT_HOME/lib/log4j-api-2.10.0.jar,$HCAT_HOME/lib/log4j-core-2.10.0.jar export HADOOP_CLASSPATH=$HCAT_HOME/lib/hive-hcatalog-core-3.1.0.jar:$HCAT_HOME/lib/hive-metastore-3.1.0.jar:$HCAT_HOME/lib/hive-standalone-metastore-3.1.0.jar:$HIVE_HOME/lib/hive-exec-3.1.0.jar:$HCAT_HOME/lib/libfb303-0.9.3.jar:$HADOOP_HOME/etc/hadoop:$HCAT_HOME/conf:$HCAT_HOME/lib/slf4j-api-1.7.10.jar:$HCAT_HOME/lib/antlr-3.5.2.jar:$HCAT_HOME/lib/jdo-api-3.0.1.jar:$HCAT_HOME/lib/antlr-runtime-3.5.2.jar:$HCAT_HOME/lib/datanucleus-api-jdo-4.2.4.jar:$HCAT_HOME/lib/datanucleus-core-4.1.17.jar:$HCAT_HOME/lib/datanucleus-rdbms-fi-4.1.19.jar:$HCAT_HOME/lib/log4j-api-2.10.0.jar:$HCAT_HOME/lib/log4j-core-2.10.0.jar 4、执行提交命令: yarn --config $HADOOP_HOME/etc/hadoop jar $HCAT_CLIENT/HCatalog-examples.jar com.huawei.bigdata.hcatalog.example.HCatalogExample -libjars $LIB_JARS table10,table11,table12
-
一. 需要数据库hzppb(汉字拼音表)和Xsxxb(学生信息表)二. 对Xsxxb进行更新时的触发器SQLSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONG**ATE TRIGGER update_xmsx_after_update_xsxxb_xm ON dbo.Xsxxb AFTER UPDATE --在更新数据时对表中数据进行更新AS BEGIN IF UPDATE(xm) --如果表中的xm字段发生了更新,才执行对表中xmsx字段的更新 BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @xsid INT,@xm VARCHAR(50); --定义变量 ,@xm 姓名 可变字符串长度为五十 @xsid 学生ID 整型变量 SELECT @xsid=xsid,@xm=xm FROM Inserted;--在执行插入的操作后,在Inserted的临时表中获取xsid和xm,并将其赋给@xsid和@xm UPDATE Xsxxb SET xmsx=dbo.PysxCx(@xm) WHERE xsid=@xsid;-- 更新Xsxxb中的数据,使用函数PysxCx在表hzpyb中查询@xm对应的xmsx(姓名缩写), -- 并当@xsid 和Xsxxb表中的xsid相同时,更新对应的xmsx -- Insert statements for trigger here END else print '没有更新姓名,不对表的xmsx进行更新' END GO三. 对表Xsxxb进行更新时的触发器USE SSMSTest --使用的数据库名称 go set ANSI_NULLS ON GO Set QUOTED_IDENTIFIER ON GO CREATE TRIGGER Update_xmsx_after_insert_xsxxb ON dbo.Xsxxb AFTER INSERT --在插入数据后对Xsxxb进行更新 AS BEGIN SET NOCOUNT ON; DECLARE @xm VARCHAR(50),@xsid INT; --定义变量,@xm 姓名 可变字符串长度为五十 @xsid 学生ID 整型变量 SELECT @xsid=xsid,@xm=xm FROM Inserted; --在执行插入的操作后,在Inserted的临时表中获取xsid和xm,并将其赋给@xsid和@xm UPDATE Xsxxb SET xmsx=dbo.PysxCx(@xm) where xsid=@xsid; -- 更新Xsxxb中的数据,使用函数PysxCx在表hzpyb中查询@xm对应的xmsx(姓名缩写), -- 并当@xsid 和Xsxxb表中的xsid相同时,更新对应的xmsx END
-
GC按照回收区域分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)1.部分收集:不是完整收集整个Java堆的垃圾收集。其中分为: 新生代收集(Minor GC / Young GC):只是新生代的垃圾收集 老年代收集(Major GC / Old GC):只是老年代的收集。 注意很多时候Major GC 会和Full GC混淆使用,需要具体分辨是老年代回收还是整堆回收2.整堆收集(Full GC):收集整个Java堆和方法区的垃圾回收。Minor GC 只在Eden区满的时候触发,Survivor区满并不会触发Minor GC,但是并不是说Survivor区不会被垃圾回收,而是说在Eden区满时触发Minor GC然后Eden区和Survivor区一起被垃圾回收,可以说Survivor区时被动垃圾回收的在老年代空间不足的时候,会先尝试触发Minor GC,如果之后空间还不足,就会执行Major GC。Full GC触发机制(1)调用System.gc()时,系统建议执行Full GC,但是不必然执行(2)老年代不足的时候(3)方法区不足的时候(4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存(5)由Eden区,survivor0(From Space)区先survivor1(To Space)区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小说明:Full GC是开发或者调优中尽量要避免的,这样暂停时间会短一些
-
个要看你的具体需求了.如果是有分隔符的那种例如"a,b,c";就直接分割就行了.String string = "a,b,c";String [] stringArr= string.split(","); //注意分隔符是需要转译滴...如果是"abc"这种字符串,就直接String string = "abc" ;char [] stringArr = string.toCharArray(); //注意返回值是char数组如果要返回byte数组就直接使用getBytes方法就ok了~~String string = "abc" ;byte [] stringArr = string.getBytes();同时,前台也可以 通过拼接 参数 传到后台 ,可以这样写使用“a,b,c”的 方式转成 数组形式,如果拼接成“[”+a+b+"]",需要 在后台 做相关操作:方法1:1234String demo = "[a,b,c]";String demosub = demo.substring(1,demo.length()-1);String demoArray[] = demosub.split(",");List<String> demoList = Arrays.asList(demoArray);方法 2:Arrays.asList("[a,b,c]").get(0)补充知识:Java将String型字符串转换成int型(或int型数组)转换成int型数组代码实现1234567String str = "6921168509256";int[] arr = new int[str.length()];for (int i = 0; i < str.length(); i++) { arr[i] = Integer.parseInt(str.substring(i, i + 1));//substring是找出包含起始位置,不包含结束位置,到结束位置的前一位的子串}for(int i:arr)//输出数组arr System.out.print(i+" ");转换成int型代码实现123String str = "69211685";int a = Integer.parseInt(str);System.out.print(a);
-
TestNG是一个开源自动化测试框架,“NG”表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展,相较于Junit而言,功能更强大,使用起来更加方便,比较适合测试人员来进行集成测试或是接口回归测试。一、TestNG的特点使用java和面向对象的功能方法的名称就不必受限于某种固定的格式,可以通过注释来识别需要执行的方法;方法中需要的一些参数可以通过注释传递;注释是强类型的,所以有错误可以在编译期体现出来;支持分组测试,依赖测试,并行测试,负载测试等支持多线程测试二、TestNG常用的注释类型注释描述@Test将类或是方法标记为测试的一部分@BeforeSuite在该套件的所有测试都运行在注释的方法之前,仅运行一次。@AfterSuite在该套件的所有测试都运行在注释的方法之后,仅运行一次@BeforeClass在调用当前类的所有测试方法之前执行,注释方法仅运行一次@AfterClass在调用当前类的所有测试方法之后执行,注释方法仅运行一次@BeforeTest注释的方法将在属于 标签内的类的所有测试方法运行之前运行@AfterTest注释的方法将在属于 标签内的类的所有测试方法运行之后运行。@BeforeGroups此方法是保证在运行属于任何这些组的第一个测试方法之前,该方法被调用@AfterGroups此方法是保证运行属于任何这些组的所有测试方法执行之后,该方法被调用@BeforeMethod被注释的方法将在每个测试方法之前执行@AfterMethod被注释的方法将在每个测试方法之后执行@DataProvider被注释的方法的作用是提供测试数据,如果某个测试方法希望从这个DataProvider接收数据,就必须使用一个名字等于这个注解名字的DataProvider@Parameters介绍如何将参数传递给测试方法三、TestNG参数化测试TestNG提供了2种传递参数的方式。第一种: testng.xml这种方式的优点是使得代码和测试数据分离,方便维护;缺点就是如果需要传递的参数不是基本的java类型,或是需要的值只能在运行时创建,这种方法就不再适用。第二种:@DataProvider这种能够提供比较复杂的参数(也叫data-driven testing)。我们项目中使用的是第二种如图示:首先给测试方法添加值为WithdrawBatchQueryLoopData的属性dataProvider,然后提供一个name与之对应的@DataProvider方法,这个方法里的具体实现,就是从配置文件或是数据库中读取数据。四、TestNG分组测试分组测试是TestNG中的创新功能,分组测试使得我们可以进行各种灵活的测试,在想要并行多组不同的测试时,不需要重新进行编译。分组可以应用在方法上(一个方法可以属于一到多个分组),也可以应用在类上,应用在类上时,这个类中的所有public方法都变成测试方法,即便他们没有被注解,也可以继续在需要增加属性的方法上重复@Test注解。分组执行测试方法有多种形式:可以通过在testng.xml配置,来指定具体要执行的分组也可以通过集成到jenkins中,通过参数化构建来设置要执行的分组还可以通过运行Run Configurations时,设置要执行的分组需要注意的一点:Group标签会导致@BeforeMethod失效@BeforeMethod的作用是标明所注解的方法在每一个测试方法运行之前会执行一次。例如:正常的执行的顺序为:beforeMehod—> testCase1—> beforeMehod—> testCase2但是,在将testCase放入某一个Group之后,@BeforeMethod就失效了再次执行脚本,执行顺序变为testCase1—>testCase2解决方法:1、将@BeforeMethod同样加入group12、设置@BeforeMethod的属性alwaysRun=true五、TestNG依赖测试我们经常会遇到要测试的多个接口之间存在依赖关系,即某一个接口的执行需要依赖上一个接口的返回结果,比如执行批付查询时,需要先执行批量代付,那么这时就使用到了TestNG的依赖测试,TestNG使用dependsOnMethods配合alwaysRun来设置测试方法之间的依赖关系,使用dependsOnGroups来设置分组之间的依赖关系强依赖:在测试方法运行之前,所有的依赖方法都必须运行并且成功,哪怕只有一个失败,测试方法都不会被调用(是skip而不是fail)软依赖(alwaysRun=true):测试方法在依赖方法运行之后总是会被执行,即便某些依赖方法运行失败。六、TestNG预期异常测试测试中,有时候我们期望某些代码抛出异常。TestNG通过@Test(expectedExceptions) 来判断期待的异常, 并且判断Error Message七、TestNG测试报告执行完测试用例之后,会在项目的test-output(默认目录)下生成测试报告打开index.html文件可以看到测试结果摘要,包括:套件名、测试用例成功数、测试用例失败数、测试用例忽略数、执行时间和testng.xml文件。测试用例都成功的话,测试结果以绿底标志,测试用例有失败的话,测试结果以红底标志。testNG自带生成的测试报告不太美观,可以使用testng-xslt进行美化。
-
【功能模块】【操作步骤&问题现象】1、上传java工程源码,2、执行/opt/depadv/tools/cmd/bin/dependency-advisor -S /home/yx/code --tos 'centos7.6' -C 'GCC4.8.5' -T 'make' --cmd 'make'没有报告生成,请问如何解决,对java工程和前端工程js代码如何进行扫描检测?【截图信息】【日志信息】(可选,上传日志内容或者附件)[Sat, 19 Sep 2020 18:21:14] [INFO] [entrance_util:record_task_begin_info:68] -------------------------------Start-----------------------------------[Sat, 19 Sep 2020 18:21:14] [INFO] [entrance_util:record_task_begin_info:70] *********************************************************************[Sat, 19 Sep 2020 18:21:14] [INFO] [entrance_util:record_tool_begin:58] **** The dependency advisor function: Generate a Kunpeng dependency report.[Sat, 19 Sep 2020 18:21:14] [INFO] [entrance_util:record_tool_begin:60] **** The dependency advisor version: dependency advisor v2.2.0.SPC200[Sat, 19 Sep 2020 18:21:14] [INFO] [entrance_util:record_task_begin_info:74] **** The current scanning task starting at 2020-09-19 18:21:14[Sat, 19 Sep 2020 18:21:14] [INFO] [entrance_util:record_task_begin_info:76] **** The current scanning task id: 20200919182114[Sat, 19 Sep 2020 18:21:14] [INFO] [entrance_util:record_task_begin_info:78] **** scanning begin>>>[Sat, 19 Sep 2020 18:21:14] [INFO] [entrance_util:record_task_begin_info:79] **** Start scan task from command line ...[Sat, 19 Sep 2020 18:21:14] [INFO] [scan_api:__scan_source_target:238] Scan source files...[Sat, 19 Sep 2020 18:21:14] [INFO] [project:do_exclude_make_scanner:621] call make parse start[Sat, 19 Sep 2020 18:21:15] [INFO] [project:do_exclude_make_scanner:624] call make parse succeed[Sat, 19 Sep 2020 18:21:15] [INFO] [project:do_exclude_scanner:769] get exclude scanner:-1 [Sat, 19 Sep 2020 18:21:15] [INFO] [project:do_exclude_scanner:781] do_exclude_scanner failed /home/yx/code/[Sat, 19 Sep 2020 18:21:15] [INFO] [scanner:do_scan:123] no C/C++ file in directory.skipping...[Sat, 19 Sep 2020 18:21:15] [INFO] [scanner:do_scan:123] no asm file in directory.skipping...[Sat, 19 Sep 2020 18:21:15] [INFO] [makefile_scanner:do_scan:45] no makefile file in directory.skipping...[Sat, 19 Sep 2020 18:21:15] [INFO] [cmake_scanner:do_scan:75] no cmake scan result in directory.skipping...[Sat, 19 Sep 2020 18:21:15] [INFO] [automake_scanner:do_scan:66] no automake file in directory.skipping...[Sat, 19 Sep 2020 18:21:15] [INFO] [fortran_scanner:do_scan:42] no fortran file in directory.skipping...[Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:110] ------------------------------ project ------------------------------------[Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:113] [Scan Directories]: ['/home/yx/code/'][Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:114] [Compiler]: GCC4.8.5, [Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:117] [ReportType]: [<ReporterType.CsvReporter: 0>][Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:118] [KeepGoingSwitch]: True[Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:119] [ConstructTool]: make[Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:120] [Command]: make[Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:121] [Target]: centos7.6-4.14.0[Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:123] [ProjectDirectory]: /opt/depadv/tools/cmd/report[Sat, 19 Sep 2020 18:21:15] [INFO] [project:dump:124] [ProjectTime]: 20200919182114[Sat, 19 Sep 2020 18:21:15] [INFO] [scan_api:__scan_source_target:275] Scan source files ended.[Sat, 19 Sep 2020 18:21:15] [WARNING] [scan_api:__scan_binary_and_source:208] There is nothing to report: wrong files or path[Sat, 19 Sep 2020 18:21:15] [INFO] [scan_api:scan_binary_and_source:109] There is nothing to be ported.[Sat, 19 Sep 2020 18:21:15] [INFO] [entrance_util:record_task_end_info:85] The current scanning task ending at 2020-09-19 18:21:15[Sat, 19 Sep 2020 18:21:15] [INFO] [entrance_util:record_task_end_info:87] **** scanning end >>>[Sat, 19 Sep 2020 18:21:15] [INFO] [entrance_util:record_task_end_info:88] -------------------------------End-----------------------------------[19955]options Namespace(always_make=True, debug=False, disable_builtin_rules=False, disable_builtin_variable=False, dump_json=True, dump_json_dir=['/opt/depadv/tools/make'], env_override=False, eval_string=[], ignore_errors=False, include_dirs=[], job_count=1, just_print=True, keep_going=False, load_avg=1, makefiles=[], new_file=[], old_files=[], opt_bm=False, output_sync=False, print_database=False, print_dir=False, print_version=False, question=False, silent=False, source_dir=['/home/yx/code'], symlink_times=False, touch=False, trace=False, verbose=False, warn_undefined_variables=True, work_dir='/home/yx/code')[19955]arguments [][19955]===================================================================================================[19955]start in make_interface:['--dump-json', '--source-dir=/home/yx/code', '--dump-json-dir=/opt/depadv/tools/make', '--always-make', '--just-print', '-C', '/home/yx/code'][19955]interpreter_path=/opt/depadv/tools/cmd/bin/dependency-advisor[19955]log_file_path=/opt/depadv/tools/cmd/bin/../logs/makefile_parser.log[19955]===================================================================================================[19955]include dirs:['/usr/gnu/include', '/usr/local/include', '/usr/include', '.'][19955]include directory /usr/gnu/include not exist, ignored[19955]options Namespace(always_make=False, debug=False, disable_builtin_rules=False, disable_builtin_variable=False, dump_json=False, dump_json_dir=[], env_override=False, eval_string=[], ignore_errors=False, include_dirs=[], job_count=1, just_print=False, keep_going=False, load_avg=1, makefiles=[], new_file=[], old_files=[], opt_bm=False, output_sync=False, print_database=False, print_dir=False, print_version=False, question=False, silent=False, source_dir=[], symlink_times=False, touch=False, trace=False, verbose=False, warn_undefined_variables=True, work_dir=None)[19955]arguments ['-'][19955]options Namespace(always_make=False, debug=False, disable_builtin_rules=False, disable_builtin_variable=False, dump_json=False, dump_json_dir=[], env_override=False, eval_string=[], ignore_errors=False, include_dirs=[], job_count=1, just_print=False, keep_going=False, load_avg=1, makefiles=[], new_file=[], old_files=[], opt_bm=False, output_sync=False, print_database=False, print_dir=False, print_version=False, question=False, silent=False, source_dir=[], symlink_times=False, touch=False, trace=False, verbose=False, warn_undefined_variables=True, work_dir=None)[19955]arguments ['-'][19955]add GNUMAKEFLAGS val [19955]debug in add_make_var(): MAKE=/opt/depadv/tools/cmd/bin/makefile_parser[19955]add MAKELEVEL val 0[19955]start parse[19955]variable assign:AR with:ar[19955]add AR val ar[19955]variable assign:ARFLAGS with:rv[19955]add ARFLAGS val rv[19955]variable assign:AS with:as[19955]add AS val as[19955]variable assign:CC with:cc[19955]add CC val cc[19955]variable assign:CXX with:g++[19955]add CXX val g++[19955]variable assign:CPP with:$(CC) -E[19955]add CPP val $(CC) -E[19955]variable assign:RM with:rm -f[19955]add RM val rm -f[19955]variable assign:LD with:ld[19955]add LD val ld[19955]variable assign:OUTPUT_OPTION with:-o $@[19955]add OUTPUT_OPTION val -o $@[19955]variable assign:LINK.o with:$(CC) $(LDFLAGS) $(TARGET_ARCH)[19955]add LINK.o val $(CC) $(LDFLAGS) $(TARGET_ARCH)[19955]variable assign:LINK.s with:$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c[19955]add LINK.s val $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c[19955]variable assign:LINK.S with:$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)[19955]add LINK.S val $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)[19955]variable assign:LINK.c with:$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)[19955]add LINK.c val $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)[19955]variable assign:LINK.cc with:$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)[19955]add LINK.cc val $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)[19955]variable assign:LINK.C with:$(LINK.cc)[19955]add LINK.C val $(LINK.cc)[19955]variable assign:LINK.cpp with:$(LINK.cc)[19955]add LINK.cpp val $(LINK.cc)[19955]variable assign:LINK.cxx with:$(LINK.cc)[19955]add LINK.cxx val $(LINK.cc)[19955]variable assign:COMPILE.s with:$(AS) $(ASFLAGS) $(TARGET_MACH)[19955]add COMPILE.s val $(AS) $(ASFLAGS) $(TARGET_MACH)[19955]variable assign:COMPILE.S with:$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c[19955]add COMPILE.S val $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c[19955]variable assign:COMPILE.c with:$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c[19955]add COMPILE.c val $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c[19955]variable assign:COMPILE.cc with:$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c[19955]add COMPILE.cc val $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c[19955]variable assign:COMPILE.C with:$(COMPILE.c)[19955]add COMPILE.C val $(COMPILE.c)[19955]variable assign:COMPILE.cpp with:$(COMPILE.cc)[19955]add COMPILE.cpp val $(COMPILE.cc)[19955]variable assign:COMPILE.cxx with:$(COMPILE.cc)[19955]add COMPILE.cxx val $(COMPILE.cc)[19955]variable assign:PREPROCESS.S with:$(CC) -E $(CPPFLAGS)[19955]add PREPROCESS.S val $(CC) -E $(CPPFLAGS)[19955]variable assign:.FEATURES with:order-only second-expansion target-specific undefine else-if[19955]add .FEATURES val order-only second-expansion target-specific undefine else-if[19955]variable assign:MAKE_VERSION with:4.2.1[19955]add MAKE_VERSION val 4.2.1[19955]start parse[19955]search for [origin:(%), prefix:(, suffix:), ]:[<tool.make.sub_module.prerequisite.Prerequisite object at 0x7f3235ea4ac0>][19955]add pattern:[origin:(%), prefix:(, suffix:), ][19955]add MFLAGS val -Bn --dump-json[19955]add MAKEFLAGS val Bn --dump-json$(COMMNAD_EVALS)[19955]environment variable MAKEFILES is start parse
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签