下载Android NDK
http://developer.android.com/ndk/downloads?hl=zh-cn
下载Pikafish源码
http://github.com/official-pikafish/Pikafish
编译
在Pikafish的src目录下创建如下bat文件
set clang=D:\android-ndk-r25c\toolchains\llvm\prebuilt\windows-x86_64\bin\aarch64-linux-android31-clang++
%clang% ^
-static-libstdc++ ^
-Wall ^
-Wcast-qual ^
-Wextra ^
-Wshadow ^
-std=c++17 ^
-DNDEBUG -O3 ^
-DUSE_NEON=8 ^
-DIS_64BIT ^
-DUSE_PTHREADS ^
-DUSE_POPCNT ^
-pedantic ^
-fno-exceptions ^
-flto=full ^
-DANDROID_STL=c++_shared ^
benchmark.cpp ^
bitboard.cpp ^
evaluate.cpp ^
main.cpp ^
misc.cpp ^
movegen.cpp ^
movepick.cpp ^
position.cpp ^
search.cpp ^
thread.cpp ^
timeman.cpp ^
tt.cpp ^
tune.cpp ^
uci.cpp ^
ucioption.cpp ^
nnue\evaluate_nnue.cpp ^
nnue\features\half_ka_v2_hm.cpp ^
external\zip.cpp ^
-o pikafish
具体的clang路径需要根据自己的ndk版本进行修改, -static-libstdc++
不加也能编译成功,但在安卓上运行时会报找不到libc++_shared.so的错误,所以采用静态链接的方式。
上一篇系列文章向大家介绍了HelloAIWorld在JetsonNANO2GB上运行HelloAIWorld。 接下来的这篇文章将讲述HelloAIWorld的环境安装。首先进入项目网页https://github.com/dusty-nv/jetson-inference,在系统安装(SystemSetup)处里有三个部分:SettingupJetsonwithJetPackRunningtheDockerContainerBuildingtheProjectfromSource第一个部分“安装Jetpack”已经在上一篇系列文章中讲解地非常清楚,因此可以忽略不管;第二个部分“执行Docker容器版本”,考虑到大部分初学者对Docker比较陌生,如果熟悉Docker应用技巧的人,可以自行进入下载合适的版本去使用,本文不做说明。第三个部分是标准的安装流程,也是通用性最高的方法,本文将讲述以这个方式为主进行的安装。在安装过程中需要下载实验中需要用到的一些网络模型,全部合计共4.7GB容量,当然也可以只下载系统预设的2.7GB容量的模型,因此整个实验建议只是保留4~6GB的存储空间给这个项
一、感谢今天我们不讨论技术,只是个人的一些感想,和大家随便聊聊公众号写作的事情。另外,在文末给大家送一个福利,当然了肯定不是那种:“只要回复1024,立刻得到1个T的学习大礼包!”我从来没有下载过这种学习大礼包,那么多的资料一下子摆在面前,我的头就变大 我觉得学习应该是一个主动的过程,只有清楚的知道我需要学习什么,然后再按图索骥查找相关的资料来学习,这样的效果会更好一些。二、随便聊聊1.为什么写文章我的公众号是从2020年11月份开始写总结文章的,虽然这个号在几年前就申请了,但是一直躺在角落里吃灰。正好那段时间比较迷茫,不知道该干什么,于是就想把自己在这些年的项目开发中,感觉比较有价值的东西进行总结,正好可以放在公众号里分享。自从进入嵌入式开发领域,刚开始的那几年非常喜欢总结文章。大概是09、10年的时候,当时联发科的MTK方案的功能机大行其道,还有高通的BREW平台,那时候智能手机刚开始露头,我在CSDN上分享了很多与开发工作相关的文章。随后几年换了工作,主要在物联网领域做一些产品和项目,工作强度和时间都降低了很多,但是写总结文章的好习惯却丢掉了,现在想想很可惜,没有坚持下来。昨天看
1.安装Fcitx输入框架相关的依赖库和框架都会自动安装上sudoaptinstallfcitx-bin sudoapt-getinstallfcitx-table复制2.下载Linux版本搜狗输入法(搜狗输入法官网中根据自己情况选择32位和64位)然后进入相应的下载目录,进行安装(安装过程中如果有错,运行sudoapt–fix-brokeninstall,删除安装,重新开始)sudodpkg-isougou的文件名.deb复制法遇到dpkg:errorprocessingpackagesogoupinyin(–install):dependencyproblems–leavingunconfigured输入sudoapt-getinstall-f中间有提示,输入YDoyouwanttocontinue?[Y/n]Y执行完成即可! 出现安装错误可以使用,检查修复依赖:sudoapt-getinstall-f复制安装完成后重启系统3.进行相关设置settings–>Region&language–>ManageInstalledLanguages更改输入框架为fcit
作者|王绍儒 编辑|唐里本篇文章是AI科技评论AAAI2020论文系列解读第02篇往期论文解读 新角度看双线性池化,冗余、突发性问题本质源于哪里?|AAAI系列解读01本文对中科院自动化所、地平线合作的论文《RDSNet:ANewDeepArchitectureforReciprocalObjectDetectionandInstanceSegmentation》进行解读,该论文发表在AAAI2020,且已开源: 论文链接:https://arxiv.org/abs/1912.05070代码链接:https://github.com/wangsr126/RDSNet论文其中第一作者王绍儒为中科院自动化所硕士生,目前在地平线实习。论文对当前目标检测及实例分割算法的现状进行了简要的概述,并对各种方法的优劣进行了简要的分析,据此提出了一套完整的框架,同时完成目标检测与实例分割任务,并且两个任务相互辅助,同时取得了性能的提升。一、问题背景目标检测与实例分割是计算机视觉领域重要的两个任务,近年来出现了非常多优秀的算法解决这两个问题,且都取得了优异的效果,但是,却鲜有文章深入分析两者之间的关联,
【练习】spring的简易实现(一)在第一部分我们实现读取xml的配置,然后实例化xml中的bean 首先定义一个xml和相关的class类<?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <beanid="petStore" class="org.litespring.service.v1.PetStoreService"
本篇博客主要介绍了自动化工具这个概念,在微服务集群当中的作用,算抛砖引玉,欢迎大家提出自己的见解。写在前面在了解自动化工具的概念之前,我们先了解一下微服务和集群的概念。什么是微服务这个概念其实有些广泛,而我的知识广度也有限,我会尽量用通俗的语言来描述什么是微服务,什么是集群,以及为什么我们需要微服务集群。为什么需要集群可以去看看《小强开饭店-从单体应用到微服务》,这篇文章用非常通俗的语言和配图,通过一个漫画故事简单的解释了为什么我们需要微服务集群。微服务传统的后端服务多为单体应用,例如使用SprintBoot或者Node又或者Gin搭建的简单的后端服务,在此基础之上,实现了基本的业务之后再部署到服务器上运行起来,这就成为了一个单体应用。随着业务需求的增加、业务代码慢慢的累加,单体应用变的也越来越大。同时各个模块的大量业务代码相互纠缠在一起,开发以及维护变得尤其困难。想象一下一个刚刚加入项目的新人看到相互纠缠的、逻辑复杂的业务代码的绝望。这个时候我们就需要了解微服务的概念了。如果想要讲这个庞大的单体应用可维护、可扩展以及高可用,我们就需要对单体应用按照模块进行业务拆分。例如将用户相关的所
前言 相信很多人都在使用Chrome浏览器,其流畅的浏览体验得到了不少用户的偏爱,但流畅只是一方面,Chrome最大的优势还是其支持众多强大好用的扩展程序(Extensions)。 最近为了更好的利用谷歌浏览器,博主整理了一些常用的谷歌插件,分享给大家,考虑到一些无法正确上网的童鞋,给力的博主当然是顺便给出离线安装文件(见文章底部)。 ps:下面的很多插件都是工具向,在日常的工作开发中可以经常使用,用好了可以极大的提高工作效率,每年轻松省出一个年假,在别人熬夜加班的时候,你可以尽情的happy。 正文 闲话不多说,直接上推荐的插件,能合理上网的可直接在谷歌商店搜索下载,不行的在文章底部我也会给出离线安装文件。 通用类插件 1、OneTab:将无数Tab合并在一个页面 很多时候我们在一个窗口打开太多的tab,每一个tab太小不容易管理,这时候使用OneTab能够把所有tab收起放在一个页面,点击就可打开该tab,非常方便。 2、Momentum:美到爆表的新标签页 受够了新建页面时候的空白页的话可以试试,Momentum每天都会提供一张高清大图,都很好看。 3、markdownhere
ROS机器人编程:原理与应用 (ASystematicApproachtoLearningRobotProgrammingwithROS)Ubuntu14.04和ROSIndigo:学习源码:https://github.com/wsnewman/learning_ros扩展资源:https://github.com/wsnewman/learning_ros_external_packagesUbuntu16.04和ROSKinetic:学习源码:https://github.com/wsnewman/learning_ros_kinetic扩展资源:https://github.com/wsnewman/learning_ros_external_pkgs_kinetic本书设置脚本这里的脚本假设您在github上有一个帐户(在github.com上是免费的)。您需要在计算机上安装“git”才能使用这些脚本。如果您的计算机上尚未安装“git”,则可以安装: sudoapt-get--yes--force-yesinstallgit 获取脚本并使其可执行要运行这些脚本,请在任何目录中
1、CommitLog文件生成规则偏移量:每个CommitLog文件的大小为1G,一般情况下第一个CommitLog的起始偏移量为0,第二个CommitLog的起始偏移量为1073741824(1G=1073741824byte)。2、怎么知道消息存储在哪个CommitLog文件上?假设1073742827为物理偏移量(物理偏移量也即全局偏移量),则其对应的相对偏移量为1003(1003=1073742827-1073741824),并且该偏移量位于第二个CommitLog。index和ComsumerQueue中都有消息对应的物理偏移量,通过物理偏移量就可以计算出该消息位于哪个CommitLog文件上。3、CommitLog文件命名规则publicMappedFilegetLastMappedFile(finallongstartOffset,booleanneedCreate){ longcreateOffset=-1; MappedFilemappedFileLast=getLastMappedFile(); //1、如果mappedFileLast为空或者已满,则计算新文件的物
2015年3月,北京文安公司发布了基于大数据下深度学习的机动车厂牌型号识别技术。车辆身份识别系统是智能交通的重要分支,它需要人工智能、图像处理、计算机视觉、模式识别等相关技术的综合应用。目前国内的车牌识别技术已经日益成熟,随着智能交通技术应用的不断加深,业界迫切希望提取更多元的车辆信息,除车牌号码外,还需要车辆的厂牌、型号以及颜色等信息特征。这些特征在停车场无人管理、交通事故处理、交通肇事逃逸、违章车辆自动记录等领域具有广泛而迫切的应用需求。技术实现途径机动车厂牌型号识别技术分为多个环节,一般是通过对摄像机采集的数字图像进行去噪、增强、车标定位、特征提取、识别等分析完成。为了得到较高的识别率,要求每一个处理步骤要有很高的准确率,而实际背景复杂,四季、昼夜、晴雨等不同情况的光照以及车辆运动速度的快慢等直接影响车辆图像的成像环节,造成车辆图像颜色失真、车身及车标区域灰度不均匀、边缘模糊、粘连等问题,增加了处理难度;反光、逆光、夜晚光照不足、树荫、车身颜色显著区域分布位置不同等情况又增加车身颜色识别难度;再加上车辆类别繁多以及车身本身的污损、遮挡、模糊,也为进一步提高识别率带来诸多困难。北京
民生服务领域每一秒都有海量的数据产生,收集分析运用管理好这些数据,让大数据更好地服务民生,是政府面临的重要课题。推进政府治理体系和治理能力现代化,加强精细化管理,都必须要培养“大数据观念”、应用好“大数据思维”。西安弈聪信息技术有限公司(简称:弈聪软件)CEO卓建超认为,对政府而言大数据资源是“放大镜”,也是“望远镜”。对大数据资源进行充分管理,不仅是政府为市民提供更优质服务的加速器,更是政府从被动管理变为主动服务的助推器,是转变政府治理方式的“催化剂”。政府通过大数据分析,找准民生服务的难点痛点堵点,“解码”公众需求、实现精准对接,才能真正让公共服务有温度。卓建超表示,公共服务领域采用大数据技术和大数据思维,既可以为政府进行公共服务决策和加强公共服务监管服务,可以为公共服务消费者在内的社会公众提供个性化和精准化服务,也有助于公共服务提供者降低成本,从而更好地实现公共服务自身的经济和社会特性并存的要求。但是,大数据不仅是一种海量的数据状态及相应的数据处理技术,更是一种思维方式,是一场由技术变革推动的社会变革。卓建超同时指出,在公共服务领域真正实现与大数据的融合,现实中还存在着多重挑战。
glew/glut/glfw3/gltools它们都是OpenGL的扩展或工具,其中glut是mac自带的,这里就不用讲了,直接就可以用。一、安装homebrewbrew的官方网站:http://brew.sh/ 在官方网站对brew的用法进行了详细的描述,安装方法:在Mac中打开Termal:输入命令:/usr/bin/ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"复制下面是homebrew的一些命令: brewsearch搜索软件包 brewinstall安装软件包 brewuninstall卸载软件包 brewinfo查询软件包信息 brewlist查询已经安装的软件包 brewupdate更新 brewdeps显示包依赖二、利用homebrew安装cmake输入:brewinstallcmake复制如果一切正常就到到下一步,这里可能报下面错误:Error:Thebrewlinkstepdidnotcompletesuccessfully
对于Linux操作系统来说,一般通过VNC、Teamviewer和SSH等工具来进行远程管理,SSH是SecureShell的缩写,由IETF的网络小组(NetworkWorkingGroup)所制定;SSH为建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH客户端适用于多种平台,几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平台都可运行SSH。KaliLinux渗透测试平台默认配置SSH服务。SSH进行服务器远程管理,仅仅需要知道服务器的IP地址、端口、管理账号和密码,即可进行服务器的管理,网络安全遵循木桶原理,只要通过SSH撕开一个口子,对渗透人员来时这将是一个新的世界。本文对目前流行的ssh密码暴力破解工具进行实战研究、分析和总结,对渗透攻击测试和安全防御具有一定的参考价值。一、SSH密码暴力破解应用场景和思路1.应用场景(1)通过Structs等远程命令执行获取了root权限。 (2)通过webshe
了解到C语言的函数调用,6个以内的参数通过寄存器传递,6个以外的在栈上传递。网上多篇Go的函数调用分析文章,说Go的函数调用时参数都是通过栈传递,自己通过实际运行Go1.17版本函数调用的汇编代码发现,Go的函数调用时参数是通过寄存器传递。对于这点有些好奇,专门写篇文章分析下。0.结论先把结论提前摆出来,有不愿花时间看分析过程的,可以直接看结论:1)Go1.17.1之前的函数调用,参数都在栈上传递;Go1.17.1以后,9个以内的参数在寄存器传递,9个以外的在栈上传递;2)Go1.17.1之前版本,callee函数返回值通过caller栈传递;Go1.17.1以后,函数调用的返回值,9个以内通过寄存器传递回caller,9个以外在栈上传递;由于CPU访问寄存器的速度要远高于栈内存,各业务团队将自己程序的Go版本升级到Go1.17以上,能够提高程序性能。在Go1.17的版本发布说明文档中有提到:切换到基于寄存器的调用惯例后,一组有代表性的Go包和程序的基准测试显示,Go程序的运行性能提高了约5%,二进制文件大小减少约2%。1.函数调用基本概念调用者caller与被调用者callee如果一
在Java设计模式-工厂模式(1)简单工厂模式中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。 地点:湖南永州市蓝山县舜河村 作者:用心笑*?Java设计模式-工厂模式(2)工厂方法模式一、前言1)概述:2)角色结构:3)类图关系:二、代码实现1)Coffce咖啡抽象类(产品抽象类)2)AmericanCoffee、LatteCoffee类(具体产品类)3)CoffeeFactory(抽象工厂类)4)AmericanCoffeeFactory、LatteCoffeeFactory类(具体实现工厂)5)咖啡店(用具体产品的客户)6)测试三、总结3.1、小结:3.2、优点:3.3、缺点:3.4、应用场景:四、自言自语一、前言1)概述:工厂方法(FactoryMethod)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的
title:lingo与matlab求解非线性规划 excerpt:万一用得到呢 tags:[数学建模,matlab] categories: -[学习,数学建模] index_img:https://picture-store-repository.oss-cn-hangzhou.aliyuncs.com/PicGo/shujian.jpg banner_img:https://picture-store-repository.oss-cn-hangzhou.aliyuncs.com/PicGo/sjban.jpg date:2020-08-2322:39:11 comment:true math:true 复制 1.题目 2.lingo代码 model: p1=17; p2=2.67; k1=0.3; k2=8; p3=1700; N1=550/(1+1.2*@exp(-0.8*x1)); N2=25/(1+1.1*@exp(-0.4*x2)); Max=Z; Z=k1*p1*N1+k1*p3*N2+(k2-x1-x2)*N1*p2; 0<=x1+x2;x1+x1<=
阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一个列表l=['a','b','c','d','e'],我想取列表中的内容,有几种方式? 首先,我可以通过索引取值l[0],其次我们是不是还可以用for循环来取值呀? 你有没有仔细思考过,用索引取值和for循环取值是有着微妙区别的。 如果用索引取值,你可以取到任意位置的值,前提是你要知道这个值在什么位置。 如果用for循环来取值,我们把每一个值都取到,不需要关心每一个值的位置,因为只能顺序的取值,并不能跳过任何一个直接去取其他位置的值。 但你有没有想过,我们为什么可以使用for循环来取值? for循环内部是怎么工作的呢? 迭代器 返回顶部 python中的for循环 要了解for循环是怎么回事儿,咱们还是要从代码的角度出发。 首先,我们对一个列表进行for循环。 foriin[1,2,3,4]: print(i)复制 上面这段代
没事就提醒我安全更新,GUI界面里只能禁一部分,烦死了。 网上找了一个老版本的方法,不知道对20.04是不是有用 sudosystemctldisableapt-daily.serviceapt-daily-upgrade.service sudosystemctldisableapt-daily.timerapt-daily-upgrade.timer sudosystemctlstopapt-daily.serviceapt-daily-upgrade.service sudosystemctlstopapt-daily.timerapt-daily-upgrade.timer复制