• [问题求助] altas 200dk支不支持AScend -DMI,Benmark
    【功能模块】altas200dk 【操作步骤&问题 1我尝试在altas 200dk使用Ascend-dmi,好的首先我先尝试  固件版本:c75-驱动:1.0.8-candnn 10.1,根据文档Atlas 200 DKV100R020C10环境部署指南,只让我安装了pyacl,然后要用到AScend-dmi,他跟我说这是toolbox自带的,然后跳转到这个地址https://support.huaweicloud.com/instg-cli-cann/atlascli_03_0023.html。 然后我是rc模式嘛,肯定就是运行环境(推理),好的,我按照运行环境推理安装了toolbox和nnrt(几经波折:我普通用户HwHiAiUser安装toolbox会漏了aicpu,后面得root补充安装,好嘛报错了见日志1,怎么改也改不过来,后来放弃了直接全部root用户了),然后安装结束倒是没啥问题,但我现在ascend-dmi试一下看能用不,报错了(ascend-dmi: symbol lookup error: /home/HwHiAiUser/Ascend/nnrt/latest/acllib/lib64/libruntime.so: undefined symbol: _ZN6Msprof6Engine4InitERKSsPKNS0_10EngineIntfE。)然后我ldd -r了一下,具体信息见日志2,查看了了一下以来的库都在,然后我就去看了一下,ASend-dmi环境适配信息,好像没有alats200dk,然后我问头头,是不是搞错了啊,altas200dkrc不能用ascend-dmi和benmark啊,他说这altas 200dk,核心是ascend 310,型号是 3000,跟500只能小站一个核心,咋不能用,别糊涂了,然后我就开始了第二轮安装 2、这次我索性直接安装最新的cadnn 5.0.2alpha5,对应,固件c78,驱动1.0.11,然后下载的时候我发现咋没有toolbox,看了一下这个[altas 200dk -1.0.11](https://support.huaweicloud.com/environment-deployment-Atlas200DK1011/atlased_04_0016.html) 哦哦,原来集成了toolbox,不过功能简介怎么没包含nnrt,不管了继续安装,按照什么的指导我bash *.sh提示我很多文件夹不存在,也创建不了,安安静静的结束之后我的Ascend文件夹没有任何变化,我在root下执行了几次还是一样,后来想了想之前都是./*.run --install ,不如试试呗,万一有用呢,还真有点用至少创建了aclib和pyacl这些,我想了下再执行了一下bash update_200dk.sh,可以了,至少没报什么错了,具体见日志3,只是这中间创建的nnrt文件夹怎么被删除了,Ascend-dmi我记得之前就放在这路径下面,我find了以下,还是没找到,执行asend-dmi没有这个命令,我也不知道路径在哪里,看了一下各个驱动版本下的altas200dk安装都没有涉及到asend-dmi,开始怀疑是不是有asend-dmi,希望大伙能给个确切答案。 【日志信息1】 >HwHiAiUser@davinci-mini:~/Ascend/AICPU/Tuscany/common$ sudo ./Ascend310-aicpu_kernels-1.75.0.1.220.run --full [sudo] password for HwHiAiUser: Verifying archive integrity... 100% SHA256 checksums are OK. All good. Uncompressing ASCEND310 AICPU_KERNELS RUN PACKAGE 100% WARNING: base version was destroyed or not exist. Start time: 2021-10-29 06:09:21 LogFile: /var/log/ascend_seclog/ascend_install.log OperationLogFile: /var/log/ascend_seclog/operation.log /var/davinci/driver/version.info version meet requirement Old run package will be removed, and new run package will be installed The old install path of aicpu_kernels: /var/davinci/opp error:not find upgrade-tool. Run package install failed, please retry after check your device and reboot! 【日志信息2】 >HwHiAiUser@davinci-mini:~/Ascend$ ldd -r /home/HwHiAiUser/Ascend/nnrt/latest/acllib/lib64/libruntime.so linux-vdso.so.1 (0x0000fffeffffc000) libc_sec.so => /usr/lib64/libc_sec.so (0x0000fffeffe82000) libascend_hal.so => /usr/lib64/libascend_hal.so (0x0000fffeff80b000) libslog.so => /usr/lib64/libslog.so (0x0000fffeff7e7000) libmsprof.so => /usr/lib64/libmsprof.so (0x0000fffeff395000) libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000fffeff369000) libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000fffeff354000) libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000fffeff1c0000) libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000fffeff107000) libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000fffeff0e3000) libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000fffefef89000) /lib/ld-linux-aarch64.so.1 (0x0000fffefffd1000) libmmpa.so => /usr/lib64/libmmpa.so (0x0000fffefef6d000) libdevmmap.so => /usr/lib64/libdevmmap.so (0x0000fffefef52000) librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000fffefef3b000) undefined symbol: _ZN6Msprof6Engine4InitERKSsPKNS0_10EngineIntfE (/home/HwHiAiUser/Ascend/nnrt/latest/acllib/lib64/libruntime.so) undefined symbol: _ZN6Msprof6Engine6UnInitERKSs (/home/HwHiAiUser/Ascend/nnrt/latest/acllib/lib64/libruntime.so) 【日志信息3】 >root@davinci-mini:/home/HwHiAiUser/Ascend# ./update_200dk.sh start update Creating directory /home/HwHiAiUser/Ascend/nnrt Verifying archive integrity... 100% SHA256 checksums are OK. All good. Uncompressing ASCEND_RUN_PACKAGE 100% AICPU_FLAG is 0 /home/HwHiAiUser/Ascend/nnrt/run_package/Ascend310-aicpu_kernels_minirc-1.78.t30.0.b300.run [INFO] start upgrade Acllib Verifying archive integrity... 100% All good. Uncompressing ASCEND acllib RUN PACKAGE 100% [Acllib] [2021-11-02 09:28:12] [INFO]: Start time:2021-11-02 09:28:12 [Acllib] [2021-11-02 09:28:12] [INFO]: LogFile:/home/HwHiAiUser/var/log/ascend_seclog/ascend_install.log [Acllib] [2021-11-02 09:28:12] [INFO]: InputParams:--upgrade [Acllib] [2021-11-02 09:28:12] [INFO]: OperationLogFile:/home/HwHiAiUser/var/log/ascend_seclog/operation.log [Acllib] [2021-11-02 09:28:12] [INFO]: Check version matched! [Acllib] [2021-11-02 09:28:12] [INFO]: base version is 1.78.T30.0.B300. [Acllib] [2021-11-02 09:28:12] [INFO]: uninstall /home/HwHiAiUser/Ascend run [Acllib] [2021-11-02 09:28:19] [INFO]: step into run_acllib_uninstall.sh ...... [Acllib] [2021-11-02 09:28:19] [INFO]: uninstall targetdir /home/HwHiAiUser/Ascend, type run. [Acllib] [2021-11-02 09:28:19] [INFO]: Acllib package uninstall success! Uninstallation takes effect immediately. [Acllib] [2021-11-02 09:28:19] [INFO]: upgrade /home/HwHiAiUser/Ascend run [Acllib] [2021-11-02 09:28:19] [INFO]: step into run_acllib_upgrade.sh ...... [Acllib] [2021-11-02 09:28:19] [INFO]: upgrade targetdir /home/HwHiAiUser/Ascend, type run. [Acllib] [2021-11-02 09:28:19] [INFO]: acllib upgrade upgradePercentage:10% [Acllib] [2021-11-02 09:28:43] [INFO]: acllib upgrade upgradePercentage:100% [Acllib] [2021-11-02 09:28:43] [INFO]: Upgrade base version success. [Acllib] [2021-11-02 09:28:43] [INFO]: Acllib package upgrade success! The new version takes effect immediately. Please make sure that - LD_LIBRARY_PATH includes /home/HwHiAiUser/Ascend/acllib/lib64 [Acllib] [2021-11-02 09:28:43] [INFO]: End time:2021-11-02 09:28:43 [INFO] start upgrade pyacl Verifying archive integrity... 100% SHA256 checksums are OK. All good. Uncompressing pyACL 100% [pyACL] [2021-11-02 09:28:44] [INFO] upgrade start [pyACL] [2021-11-02 09:28:44] [WARNING] this package version installed now, it will be reinstalled [pyACL] [2021-11-02 09:28:44] [INFO] Ascend-pyACL-20.2.rc1 upgrade success cat: /var/davinci/aicpu_kernels/version.info: No such file or directory [INFO] Aicpu is not installed, start the installation Verifying archive integrity... 100% All good. Uncompressing ASCEND aicpu_kernels RUN PACKAGE 100% [Aicpu] [2021-11-02 09:28:51] [INFO]: Start time: 2021-11-02 09:28:51 [Aicpu] [2021-11-02 09:29:09] [INFO]: LogFile: /home/HwHiAiUser/var/log/ascend_seclog/ascend_install.log [Aicpu] [2021-11-02 09:29:09] [INFO]: OperationLogFile: /home/HwHiAiUser/var/log/ascend_seclog/operation.log [Aicpu] [2021-11-02 09:29:10] [INFO]: version meet requirement [Aicpu] [2021-11-02 09:29:10] [INFO]: Aicpu_kernels package has been installed on the path /home/HwHiAiUser/Ascend, the version is 1.78.T30.0.B300, and the version of this package is 1.78.T30.0.B300, do you want to continue? [y/n] [Aicpu] [2021-11-02 09:29:10] [WARNING]: Old run package will be removed, and new run package will be installed [Aicpu] [2021-11-02 09:29:10] [INFO]: The old install path of aicpu_kernels: /home/HwHiAiUser/Ascend [Aicpu] [2021-11-02 09:29:10] [INFO]: upgradePercentage: 20% [Aicpu] [2021-11-02 09:29:11] [INFO]: upgradePercentage: 50% [Aicpu] [2021-11-02 09:29:11] [INFO]: upgradePercentage: 100% [Aicpu] [2021-11-02 09:29:11] [INFO]: Aicpu_kernels package install success! The new version takes effect immediately. [Aicpu] [2021-11-02 09:29:11] [INFO]: Using requirements: when aicpu module install finished or before you run the aicpu module, execute the command [ export ASCEND_AICPU_PATH=/home/HwHiAiUser/Ascend ] to set the environment path. [Aicpu] [2021-11-02 09:29:11] [INFO]: End time: 2021-11-02 09:29:11 If the upgrade is successful, switch to the running user and run the source ~/.bashrc command to make the environment variables take effect.
  • [技术干货] 智能OCR图像文字识别
    体验通过DevStar服务的“智能OCR图像文字识别”模板一站式生成应用代码并部署到函数工作流FunctionGraph,实现识别指定图片中的文字信息并显示在页面上。您将学到什么您将学会如何通过DevStar实现一站式快速开发基于Serverless的智能识别图片文字信息应用,并在此基础上基于华为云EI产品开放能力进行对应用的自定义扩展,体验云上开发的乐趣您需要什么硬件要求PC电脑软件要求Chrome浏览器需要的知识点熟悉常规电脑操作常识具备基本的软件开发能力环境准备注册华为云账号、实名认证如果您已拥有华为账号且已通过实名认证,可直接体验。若您还没有通过实名认证的账号,请注册华为账号,然后完成实名认证(推荐使用“扫码认证”方式,即时完成)。参考如何实名认证和如何扫码认证。应用开发及部署使用Chrome浏览器,登录DevStar,在搜索栏输入“智能OCR图像文字识别”关键字进行搜索,在卡片上点击“开发应用”首次使用可以开通服务“同意授权”并继续创建应用在应用创建页面根据页面提示完成项目、应用名信息输入注:如果没有任何DevCloud项目,可点击“创建项目”新建一个项目注:在创建项目过程中如提示“该企业租户服务处于关闭状态 ”,请点击“立即开通”。然后在DevCloud服务购买页面,选择基础版进行购买操作(基础版5人及以下免费)。开通后,继续完成项目创建注:创建完项目后,点击所属项目选项列表旁的“刷新”图标,可显示新创建的项目,选中并完成页面其它信息输入,点击“立即创建”按钮,进入应用详情界面等待应用使用的代码仓等资源创建完成(约20s),点击左侧的“应用部署”菜单,查看依赖云服务的状态。若有云服务未开通,则点击“去开通”按钮完成服务开通。查看文字识别服务增值税发票识别的开通状态,如果未开通,点击“开通服务”。注意:增值税发票识别API按需付费模式每月0~1千次(含)调用免费,如果超出则会产生费用,计费详情可点击“参考价格”查看。函数工作流FunctionGraph若实际使用量每月调用不超过100万次且计量时间不超过400,000 GB-秒免费,如果超过则会产生费用,计费详情可点击“参考价格”查看。完成服务开通后,点击对应服务的刷新按钮,查看服务开通状态。依赖的云服务全部完成开通后,点击“部署”按钮,进行应用部署。待部署完成后,点击“看看”链接访问部署到函数工作流的云函数。在智能OCR识别页面,点击“选择文件”上传发票图片,体验使用OCR精准识别发票图片上的文字。注:上传的发票图片为JPG/JPEG/BMP/PNG格式,建议大小不超过5M(超出有可能会失败),推荐1M。进阶体验-使用Huawei Cloud Toolkit在本地进行快速开发Huawei Cloud Toolkit是华为云提供的IDE插件工具,支持VSCode平台和Intellij平台。支持查看华为云开放API的文档、SDK、错误码、示例代码、代码模板;基于代码模板快速创建本地工程;智能代码自动补全等场景,能极大提高开发者在本地开发基于华为云API的应用的开发效率。这里我们使用Huawei Cloud Toolkit辅助,给原来的代码快速扩展一个新的“通用文本识别”功能。在应用详情页面的代码仓库栏,点击右边的“克隆/下载”,复制弹出框中的https链接,然后在本地命令行中输入:git clone <仓库链接>,既可把代码仓克隆到本地。(克隆的时候会提示输入用户名和密码,用户名为<华为云账号名>/<华为云账号名形式>,具体可以在codehub的配置页面查找到https://devcloud.cn-north-4.huaweicloud.com/codehub/https)使用本地IDE(使用Intellij或者VSCode)打开刚克隆的代码,这里以Intellij为例。安装 Huawei Cloud Toolkit插件,Intellij点击 File -> Settings -> Plugins,在 Marketplace中搜索“HuaweiCloud Toolkit”,点击“install”进行安装。注:如果您使用VSCode,也可以在VSCode插件市场中搜索“HuaweiCloud”,选择安装“HuaweiCloud Extension Pack”这个插件。打开链接https://console.huaweicloud.com/iam/?region=#/mine/accessKey,点击“新增访问秘钥”添加一个您租户账号的AK/SK。在Intellij中,点击左侧的“Huawei Cloud Toolkit”标签,点击登录图标。将刚才生成的AK/SK(注意excel中的AK/SK后面有一个空格,需要去掉)填入配置中,点击“apply”和“ok”按钮,插件即可登录成功。登录成功后我们在右侧搜索栏搜索“OCR”。选择“云服务”标签下的“文字识别 OCR”,可以看到OCR服务出了支持身份证识别外,还支持很多的其他的文字识别功能。这里我们选择下方的“通用文字识别”,点击“查看文档”。接口文档包含的接口的说明,请求参数,返回参数的详细信息,这里看到这个接口的请求参数只需要一个图片的base64字符串即可。在对要实现的接口有了了解后,我们来改造一下原理的代码。在Intellij中打开代码中的“java”文件。为了方便扩展功能,我们已经在代码中预留好扩展的位置。找到代码的第50行,按注释提示添加一个识别类型:修改后:接着我们来实现调用接口的逻辑,找到代码中第101行的函数“recognizeGeneralText”:把注释删掉,输入我们刚才搜到的api名称“recognizeGeneral”,这是我们看到会有自动提示弹出,选择第一个提示选择后可以看到API调用的基础代码已经被插入:然后我们只需要简单的添加一下输出和输入即可实现API调用的功能,添加下图红框里面的两行代码:到这里我们的代码已经完成,为了使用“通用文本识别”功能,我们需要到OCR服务开通该服务,打开OCR页面:https://console.huaweicloud.com/ocr/#/ocr/overview,找到“通用文本识别”点击开通服务。(按需计费模式下,每个月的前1000次调用免费)将代码push到远端的git仓库,回到我们的应用部署页面,重新部署应用(请参考本文“应用开发及部署小节步骤6、7”),现在可以上传一张带有文字内容的图片,体验添加的通用文本识别功能,识别图片中的文本。到这里我们已经实现了一个新的识别功能的添加,您可以继续查看OCR服务的文档,添加更多的文本识别功能到项目中。恭喜您已完成体验,您还可以了解和体验DevStar AI识图作诗应用开发模板。
  • [技术干货] IDEA数据库工具--database
    我们开发中经常用到一些第三方连接数据库的工具 ( navicat/SQLyog/sqldeveloper等 ) 进行调试, 这样回来切换工具很不方便。其实IDEA集成了一个数据库管理工具,可以可视化管理很多种类的数据库。配置IDEA版本:2020.3Windows 101、打开IDEA工具,选择view---Tool Windows---Database鼠标点击+----Data Source,会出现很多种数据库类型,点击自己对应的就行。2、 本人以oracle为例,进行连接先点击switch,配置对应的oracle驱动信息其次按要求填写对应的连接信息填写完成后,点击Test Connection按钮,查看是否可以正常连接。连接成功,会提示下方的语句。3、访问数据库简单的查询到此结束。还可以创建表等一些信息,后续再详细写!
  • [产品体验官] 【中级体验任务】Huawei Cloud Toolkit Intellij插件体验测评
    体验形式:本次体验采用有奖征集体验评测报告+群内交流反馈的形式。我们将在体验官群内(点击链接申请成为体验官)筛选体验官若干位,然后按照体验官任务卡的要求操作和体验产品,最后输出体验报告(完成PPT任务卡填写即可),并按照华为云账号名+微信昵称+体验报告附件的格式回复至本帖。我们会从中筛选出高质量体验报告,给予礼品奖励和积分奖励。  产品简介:Huawei Cloud Toolkit Intellij插件,提供在Intellij中的以下功能:1、自动补全华为云sdk代码。2、查找和浏览华为云api。3、查找和浏览DevStar代码模板和Codelabs代码示例。4、根据DevStar代码模板创建工程。  体验流程:1、体验场景描述您是一位使用华为云的Java软件开发工程师,最喜爱的IDE是Intellij,这天你正准备使用华为云的AI能力开发一个项目,为了更高效地使用华为云的能力,您在Intellij上面安装了Huawei Cloud Toolkit插件。2、体验流程在Intellij上安装Huawei Cloud Toolkit插件 -> 配置华为云AK/SK -> 使用DevStar代码模板创建Spring项目 -> 使用 API 搜索功能查找相关的人脸识别API -> 使用代码自动补全功能和SDK自动引入功能编写代码 -> 实现人脸检测和人脸对比3、体验完成条件使用华为云API实现人脸检测和人脸对比4、体验报告模板详见附件  活动流程:1.如您已经成为产品体验官,小助手会在群内发布招募公告,直接报名即可。2.如您还未申请成为体验官,请点击链接先申请成为体验官,再参与活动哦~申请链接:https://developer.huaweicloud.com/activity/experience-officer.html  ☆奖品设置如下☆参与奖:若干名活动要求:按照要求完成任务卡奖品:公牛插排1个+3体验官积分    优秀奖:若干名活动要求:被专家评为优秀报告奖品:颈枕1个+5体验官积分    体验评测报告交稿时间:- 招募期:2021.8.30-2021.9.12- 测试期:2021.9.13-2021.9.26
  • [技术干货] idea神器推荐
    RESTKit工具介绍 一套 RESTful 服务开发辅助工具集。 1.根据 URL 直接跳转到对应的方法定义 ( Ctrl \ or Ctrl Alt N ); 2.提供了一个 Services tree 的显示窗口; 3.一个好用的类似Postman的 http 请求工具; 4.其他功能: java 类上添加 Convert to JSON 功能。 支持 Spring 体系 (Spring MVC / Spring Boot) 支持 JAX-RS 支持 Java 和 Kotlin 语言。 安装 小编使用的idea工具版本为2020.3 ctrl +alt +s  →settings plugins →Marketplace 搜索框输入:RESTKit→Install 具体操作见下图: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202108/24/171539zgwzdubbw1fq6o0t.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202108/24/171546vmfdzrosv7kesyak.png) 安装后,重启IDEA,插件才能生效,此时,右侧工具栏出现RESTKit ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202108/24/171554tetkuli5osekcua0.png) 配置基本信息 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202108/24/1716026i0fumla5eoepgux.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202108/24/171608vg4oye9bf4bibxk0.png) 测试 可以在Params配置参数信息 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202108/24/171621jvgoqnofyvtm1hlo.png) 配置完成后,点击send,就会出现返回值信息。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202108/24/171632o3tbllwdpc9iii3y.png) 如果没有返回值,可能是参数配置不正确,插件会给出提示信息,注意查看! 工具唯一不足的地方就是每次都需要填写参数信息,没有请求记录。
  • [毕昇JDK] 【技术剖析】6. JNI 中错误的信号处理导致 JVM 崩溃问题分析
    作者:宋尧飞编者按:JNI 是 Java 和 C 语言交互的主要手段,要想做好 JNI 的编程并不容易,需要了解 JVM 内部机理才能避免一些错误。本文分析 Cassandra 使用 JNI 本地库导致 JVM 崩溃的一个案例,最后定位问题根源是信号的错误处理(一些 C 编程人员经常会截获信号,做一些额外的处理),该案例提示 JNI 编程时不要随意截获信号处理。现象在使用 Cassandra 时遇到运行时多个位置都有发生 crash 现象,并且没有 hs_err 文件生成,这里列举了其中一个 crash 位置:分析首先直接基于上面这个 crash 的 core 文件展开分析,下面分别是对应源码上下文和指令上下文:使用 GDB 调试对应的 core 文件,如下图所示:在 GDB 中进行单步调试(GDB 调试可以参考官方文档),配合源代码发现 crash 的原因是传入的 name 为 null,导致调用 name.split("\_") 时触发了 SIGSEGV 信号,直接 crash。暂时抛开这个方法传入 name 为 null 是否有问题不论,从 JVM 运行的机制来说,这里有个疑问,遇到一个 Null Pointer 为什么不是抛出 Null Pointer Exception(简称 NPE)而是直接 crash 了呢?这里有一个知识需要普及一下:Java 层面的 NPE 主要分为两类,一类是代码中主动抛出 NPE 异常,并被 JVM 捕获 (这里的代码既可以是 Java 代码,也可以是 JVM 内部代码);另一类隐式 NPE(其原理是 JVM 内部遇到空指针访问,会产生 SIGSEGV 信号, 在 JVM 内部还会检查运行时是否存在 SIGSEGV 信号)。带着上面的疑问,又看了几处其他位置的 crash,发现都是因为对象为 null 导致的 SIGSEGV,却都没有抛出 NPE,而是直接 crash 了,再结合都没有 hs_err 文件生成的现象, hs_err 文件生成功能位于 JVM 的 SIGSEGV 信号处理函数中,代码如下:由于 hs_err 文件没有产生,一个很自然的推断:Cassandra 运行中可能篡改了或者捕获了 SIGSEGV 信号,并且可能做了处理,以至于 JVM 无法正常处理 SIGSEGV 信号。然后排查业务方是否在 Cassandra 中用到了自定义的第三方 native 库,果然笔者所猜测的,有两个 native 库里都对 SIGSEGV 信号做了捕获,注释掉这些代码后重新跑对方的业务,crash 现象不再发生,问题(由于 Cassandra 中对 NPE 有异常处理导致 JVM 崩溃)解决。总结C/C++ 的组件在配合 Java 一起使用时,需要注意的一点就是不要随意去捕获系统信号,特别是 SIGSEGV、SIGILL、SIGBUS 等,因为会覆盖掉 JVM 中的信号捕获逻辑。附录 这里贴一个 demo 可以用来复现 SIGSEGV 信号覆盖造成的后果,有兴趣的可以跑一下:// JNITest.java import java.util.UUID; public class JNITest { public static void main(String[] args) throws Exception { System.loadLibrary("JNITest"); UUID.fromString(null); } }// JNITest.c #include <signal.h> #include <jni.h> JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) { signal(SIGSEGV, SIG_DFL);//如果注释这条语句,在运行时会出现NullPointerExcetpion异常 return JNI_VERSION_1_8; }通过 GCC 编译并执行就可以触发相同的问题,编译执行命令如下:$ gcc -Wall -shared -fPIC JNITest.c -o libJNITest.so -I$JAVA_HOME/include -I$JAVA_HOME/include/linux $ javac JNITest.java $ java -Xcomp -Djava.library.path=./ JNITest后记如果遇到相关技术问题(包括不限于毕昇 JDK),可以进入毕昇 JDK 社区查找相关资源,包括二进制下载、代码仓库、使用教学、安装、学习资料等。毕昇 JDK 社区每双周周二举行技术例会,同时有一个技术交流群讨论 GCC、LLVM、JDK 和 V8 等相关编译技术,感兴趣的同学可以添加如下微信小助手,回复 Compiler 入群。原文转载自 openEuler-JNI 中错误的信号处理导致 JVM 崩溃问题分析
  • [技术干货] IDEA+git+华为云配置
    将IDEA中的项目提交到git远程仓库版本管理,git远程仓库使用华为云进行代码托管。市面上常见的git托管平台有github、华为云、码云、开源中国、Gitlab等。0、下载和安装git:https://git-scm.com/download/一、创建华为云账号:1、从U+实训课程页面,进入到华为华为云首页,U+已与华为云账号打通,华为云和U+共用相同的账号和密码。2、首次进入华为云需要进行实名认证,请自行实名认证二、在IDEA中创建本地仓库1.将idea项目交给版本控制工具,VCS  ——>  Enable Version Control Integration...  2.选择交给git进行管理,点击ok之后,该项目就会交给git进行管理,且在项目所在目录创建本地代码仓库,可以到项目所在目录看到有一个.git的隐藏文件,该目录就是git本地仓库。3.将代码提交到本地仓库(commit)代码提交到本地仓库了。4、为了验证有没有提交成功,可以查看代码的提交历史    右击项目  ——>  Git  ——>  Show History双击某一次提交记录,可以查看该提交的详细内容。三、创建远程仓库以上步骤我们只是将代码提交到了本地仓库,如果实现共享和版本控制,我们要创建远程仓库,远程仓库使用华为云的代码托管。1、华为云首页选择 服务--->代码托管普通新建 输入仓库名,然后确定此处就该仓库的https地址,将项目提交到远程仓库时,根据该地址提交。 mark1三、将本地仓库中的代码提交到远程仓库1、git---》push,提交时push,下载是pull2. 第一次提交需要设置远程仓库地址,其中url是远程仓库的地址(mark1处)3、点击ok  ----》push后需要输入华为云的仓库的账号和密码,仓库账号和密码在如下位置进行查看和修改,默认就是华为云的登陆密码4、 异常处理,第一次提交因为本地项目和远程项目没有关联,所以会提交失败解决办法参考:在项目所在目录下执行git bash,执行命令:(参考:https://www.jianshu.com/p/f8c9fb05681b)git push -u origin master -f或者在idea中使用快捷键  alt+f12  打开命令行Terminal窗口,执行git push -u origin master -f命令,如下图:本地项目和远程仓库进行关联成功,然后在选择idea中vcs--->git---->push   将本地仓库中的代码提交到远程仓库。提交成功后,在网页上可以看到,本地的代码已经提交提交到远程仓库,在网站端可以查看、修改提交的内容。5、(1)如果其他开发人员更新了远程仓库,可以选择通过pull进行下载下来。(2)如果想下载在远程仓库的项目,可以在开发工具中选择check out from version Control,然后输入仓库url(3)总结:每次先本地提交commit,在push
  • [问题求助] 【MRS_spark2.x】【对接205环境Kafka】网络能ping通,本地IDEA能连接,MRS集群连接失败
    【功能模块】MRS—  sparkstreaming_kafka_010【操作步骤&问题现象】1、IDEA编写程序,POM依赖与示例程序一致,本地调式无误后,打包上传。2、集群主节点上运行kinit user    bin/spark-submit --master yarn --deploy-mode client --class com.spark.core.Kafka_sparkStreaming_elasticSearch /opt/sparkTest/sparkdemo-1.0-SNAPSHOT.jar【截图信息】1.spark程序所使用依赖。2.提交到MRS集群上之后运行报错位置,显示集群节点不能连接(Kafka配置与本地Idea完全一致,idea能正常消费数据。集群上kafka消费组与idea环境一致不一致都不能连接)【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 如何用IDEA 上的database 连接数据湖,在IDEA 读取到schema信息,或直接执行SQL
    【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] idea增加内存
    最近升级了下idea工具,发现运行代码超级卡顿,于是检查了下内存使用情况,显示内存长期占用在80%以上....最简单的办法,增加内存设置help-edit custom vm options下,设置-Xms1024m-Xmx2048m然后重启idea.搞定
  • [技术干货] IntelliJ IDEA快捷键
    ctrl+W //选中单词ctrl+<-- --> //上一个/下一个单词ctrl+shift+enter//自动完成,句尾加分号alt+enter //智能提示,如生成变量ctrl+alt+L //整个代码缩进格式化ctrl+/  //单行注释ctrl+shift+/ //块注释ctrl+alt+shift+J //列操作esc//退出列模式shift+F6 //重命名
  • [热门活动] 周年直播倒计时3天,攒足惊喜等你开场! | MindSpore 开源一周年
    撒花撒花,我们的小孢子破壳快满1周年啦!在MindSpore 1周岁生日即将到来之际,为了感谢开发者的厚爱,3月28日-29日10:00-22:00,「MindSpore官方」将在B站开启全球直播和大家一起开轰趴!开源大咖空降直播间等你来撩,懂的不懂的问题百无禁忌!激发你的小宇宙,与志同道合的伙伴一起探索智能世界,玩转头脑风暴!赶紧积攒脑力,把你想了解的内容打在直播间公屏上!大咖还要手把手教你如何使用新工具!就算你是刚出道的小白,也能跟上大咖的脚步了解技术的奥义(名师出高徒,你懂的)!还有还有!每天12小时直播礼品满屏撒弹幕抽奖形式多多,快来抓住一年欧气!赶快跟着小编操作一波现在快去B站关注MindSpore官方MindSpore周年生日趴3月28日10:00等你一起开场!
  • [技术干货] idea添加数据库图文教程
    我们平时在写代码的时候经常会用到数据库,我们需要时常查看我们的数据是不是符合预期的,我们希望有一个图形界面可以直接看到数据,而不需要每次都手动敲指令,这样工作效率会比较低。本文将教会你怎么直接在idea中配置数据库,然后能直接看到我们的数据。一、配置在idea最右侧有一个工具栏,我们点击DataBase按钮,然后会出现如上界面,我们选择添加按钮选择MySQL输入DataBase,User,Password最后点击Apply,OK这时候我们已经能看到我们数据库中所有的表了,我们随便点击一个看看吧点击之后我们就能看到我们表中存好的数据了,很方便吧。哈哈补充知识:idea添加自定义live template模板idea添加自定义live template模板环境说明:idea版本:2018.03.06idea知道有这个功能,不知道eclipse有没有idea有一个非常方便编码的功能,就是Live Template,这个功能的本质就是构建一个常用代码段和一个缩写的映射,在编码时,使用这些缩写就可以快速的输入这些常用的代码块,了解了这些,将大大提高我们的编码效率;当然,除了默认的live template,我们还可以自定义自己的代码模板,在模板中,可以使用一些变量的引用,在带入代码模板的同时带入自定义一些类名、方法名等,提高编码效率。File->Settings…,进入设置页面;设置页面左侧Editor->Live Templates,展开右侧的列表,就可以看见一些常用的、默认的代码模板了,如果在编码的过程中遇到常用的代码段,可以来看看有没有已经定义好的代码模板可用;现在我们以创建对方法描述的模板为例来自定义自己的代码模板;Live Templates面板右侧上方,依次点击"+"->Template Group,在弹出的框中填写自定义模板组的名称,这里写MyGroup,将我们自定义的代码模板放在MyGroup模板组里面,与其他默认模板区分开;接着点击列表中出现的MyGroup模板组,再点击刚才的"+"->Live Template;在下方Abbreviation选项中填入自定义的模板对应的缩写,我这里写成mi(method info的首字母缩写),在Description选项中填入对此模板的描述,在Template text选项中填入模板原文,还有Live Temple面板左下方红色的No applicable context yet.选项,点击后面的Define选项,选择Java,最后记得点击右下角Apply按钮;在模板原文中可以使用变量,比如这里的模板原文中的$METHOD_NAME$、$METHOD_PARAMETER$、$END$、就是一个变量,在输入时,会置空或用与参数连接的内置或自定义函数来填充,比如若将$METHOD_NAME$与系统内置的methodName()函数连接起来,在输入的时候,在某方法内部,输入我们设置好的缩写mi,IDE会提示输入,点击之后,会发现在我们设置的方法模板内部,已经将方法名、参数、返回值自动填充好了;**如何连接变量与函数表达式呢?**先选中一个参数,然后看模板原文右侧上方,有一个Edit variables选项,点击之后,就可以进入绑定的面板,在idea中内置了许多表达式,可以在文首的“参考”信息中查看详细的表达式的解释;
  • [技术干货] 用IDEA构建一个简单的Java程序范例
    一、创建项目1.点击菜单栏File->New->Project...2.从左边栏找到Java,例如我这里是Java Enterprise(每个人的可能不一样,因为IDE版本可能不同),然后选择project SDK,没有的话点击Download JDK...,有的话点击Add JDK...3. Download JDK是这个界面,Vendor我这里选择Oracle OpenJDK(各位可以根据需要选择),Version是版本,Location是位置4.下载或者添加之后,点击Next,这里可以选择Specification和Implementation,大家根据需要选择,我这里直接Next5.创建项目和名称二、编写代码1.项目结构如下2.我们打开src的main,右键点击main里的java,选择New->Package,输入包的名字,我这里是Hello3.新建一个class,输入名字,我这里是Hello4.输入代码package Hello; public class Hello { public static void main(String []args){ System.out.println("Hello!"); } }
  • [基础介绍] 【活动未达要求,取消活动】物联网创意畅享,不限场景、不限设备,只要你有关于物联网的好的应用idea,就有机会赢取大奖
    物联网创意畅享,创意是唯一要求。不限场景!不限设备!只要你有关于物联网的好的应用idea,都可以回帖回复。【活动时间】2020年8月10日-2020年8月30日 0:00【参与方式】在本帖下直接回复你的创意即可。【盖楼要求】为了避免刷帖影响公平,活动期间每人最多可盖3楼,超过3楼将取消资格【基础奖励和额外奖励获得要求】基础奖励参与人数40,额外奖励参与人数70【活动奖品】奖品1(基础奖励):50元京东卡将从所有回复中的有效楼层数的10%、50%、90%选出3名幸运用户,获得50元京东卡      奖品2(额外奖励):荣耀移动电源2 20000mAh (Max 18W) 快充版(颜色随机)将从所有回复中选取最具创意(即获得点赞数最多的)的回复一名,获得荣耀移动电源2 20000mAh (Max 18W) 快充版(颜色随机,图片仅供参考)还等什么,快来参与吧!注:活动遵守华为云社区常规活动规则https://bbs.huaweicloud.com/forum/thread-5766-1-1.html 
总条数:162 到第
上滑加载中