首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10017篇文章
优秀的个人博客,低调大师

机器学习零基础?手把手教你用TensorFlow搭建图像识别系统(二)| 干货

现在,我们可以开始建立我们的模型啦。实际上数值计算都是由TensorFlow来完成,它使用了一个快速并高效的C++后台程序。TensorFlow希望避免频繁地在Python和C++之间切换,因为那样会降低计算速度。一般的工作流程是,首先为了定义所有的运算,先建立一个TensorFlow图表。在这个过程中没有计算,我们只是进行设置操作。之后,我们才针对输入数据运行计算操作并记录结果。 让我们开始定义我们的图表。首先通过创建占位符来描述TensorFlow输入数据的形式。占位符不包括任何实际数据,它们只是定义了数据的类型和形状。 在我们的模型中,我们首先为图像数据定义了占位符,它们包括浮点数据(tf.float32)。shape参数定义了输入数据的大小。我们将同时输入多幅图像(稍后我们将谈到这些处理),但是我们希望可以随时改变实际输入图像

优秀的个人博客,低调大师

elk搭建完整搭建【篇1】

【参考】 官网: https://www.elastic.co/downloads 参考: http://517sou.net/archives/centos%E4%B8%8B%E4%BD%BF%E7%94%A8elk%E5%A5%97%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90%E5%92%8C%E7%9B%91%E6%8E%A7%E5%B9%B3%E5%8F%B0/ http://my.oschina.net/itblog/blog/547250 http://baidu.blog.51cto.com/71938/1676798 【ELK组成】 Elasticsearch: Searchandanalyzedatainrealtime. Logstash: Collect,enrich,andtransportdata. Kibana: Exploreandvisualizeyourdata. 注意:三个组建缩写ELK 【安装系统环境和软件包】 系統信息: [root@log_serversrc]#du-shelasticsearch-2.2.1.tar.gzlogstash-all-plugins-2.2.0.tar.gzkibana-4.4.2-linux-x64.tar.gz 29Melasticsearch-2.2.1.tar.gz 72Mlogstash-2.2.2.tar.gz 32Mkibana-4.4.2-linux-x64.tar.gz 可以检查的校验码与官网对比是否包已经下载完整 [root@log_serversrc]#sha1sumkibana-4.4.2-linux-x64.tar.gz 6251dbab12722ea1a036d8113963183f077f9fa7kibana-4.4.2-linux-x64.tar.gz [root@log_serversrc]#cat/etc/redhat-release;uname-m CentOSrelease6.4(Final) x86_64 关闭防火墙 [root@log_serversrc]#/etc/init.d/iptablesstatus iptables:Firewallisnotrunning. [root@log_serversrc]#getenforce Disabled 最大文件描述符(默人用户级别的1024太小咯 要求是65536以上) [root@master ~]# ulimit -n 102400 修改方式: 打开文件增加两行/etc/security/limits.conf * soft nofile 102400 * hard nofile 102400 查看 ulimit -n [root@log_serversrc]#java-version javaversion"1.7.0_99" OpenJDKRuntimeEnvironment(rhel-2.6.5.0.el6_7-x86_64u99-b00) OpenJDK64-BitServerVM(build24.95-b01,mixedmode) 注意:jdk可自行网上搜索安装方法 注:由于Logstash的运行依赖于Java环境, 而Logstash 1.5以上版本不低于java 1.7,因此推荐使用最新版本的Java。因为我们只需要Java的运行环境,所以可以只安装JRE,不过这里我依然使用JDK,请自行搜索安装。 (推荐yum安装yum install -yjava-1.7.0-openjdk) yum install -y java-1.8.0-openjdk.x86_64 (推荐用1.8 否则会有警告) !!! Please upgrade your java version, the current version '1.7.0_09-icedtea-mockbuild_2013_01_16_18_52-b00' may cause problems. We recommend a minimum version of1.7.0_51 这是版本建议(推荐1.8) 【下载来自官网源和软件安装介绍】 系统环境和版本信息:本文把ELK套件部署在一台CentOS单机上。 具体的版本要求如下: 1 wgethttps: //download .elasticsearch.org /elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2 .2.1 /elasticsearch-2 .2.1. tar .gz 1 wgethttps: //download .elastic.co /logstash/logstash/logstash-2 .2.2. tar .gz 1 wgethttps: //download .elastic.co /kibana/kibana/kibana-4 .4.2-linux-x64. tar .gz 【安装elasticsearch】 解压、软连接、cd到目录下 1 2 3 tar xvfelasticsearch-2.2.1. tar .gz-C /usr/local/ ln -s /usr/local/elasticsearch-2 .2.1/ /usr/local/elasticsearch cd /usr/local/elasticsearc 安装这个重要的插件: 1 [root@masterelasticsearc] #./bin/plugininstallmobz/elasticsearch-head -> Installing mobz/elasticsearch-head... Plugins directory [/usr/local/elasticsearc/plugins] does not exist. Creating... Trying https://github.com/mobz/elasticsearch-head/archive/master.zip ... Downloading .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE Verifying https://github.com/mobz/elasticsearch-head/archive/master.zip checksums if available ... NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify) Installed head into /usr/local/elasticsearc/plugins/head 创建用户和目录(因为elasticsearch 2.0.0 以上版本不能用root用户运行) 1 2 3 4 5 [root@masterelasticsearc] #groupadd-g1000elasticsearch [root@masterelasticsearc] #useradd-g1000-u1000elasticsearch [root@masterelasticsearc] #sudo-uelasticsearchmkdir/tmp/elasticsearch [root@masterelasticsearc] #ls/tmp/elasticsearch [root@masterelasticsearc] #sudo-uelasticsearchmkdir/tmp/elasticsearch/{data,logs} mkdir /usr/local/elasticsearch/config/scripts 编辑配置文件vim config/elasticsearch.yml 加如以下四行(注意冒号后面有空格): path.data: /tmp/elasticsearch/data path.logs: /tmp/elasticsearch/logs network.host: 192.168.100.10 network.port: 9200 启动配置默认,启动elasticsearch 1 sudo -uelastsearch /usr/local/elasticsearch/bin/elasticsearch 注意:如果正式应用需要在后台运行 1 sudo -uelastsearch /usr/local/elasticsearch/bin/elasticsearch -d 查看进程和端口 [root@master ~]# ps -ef | grep java 1000 9477 9338 2 21:02 pts/4 00:00:07 /usr/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/local/elasticsearch -cp /usr/local/elasticsearch/lib/elasticsearch-2.2.1.jar:/usr/local/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start root 9620 9576 0 21:07 pts/0 00:00:00 grep --color=auto java [root@master ~]# netstat -tulnp |grep java tcp 0 0 ::ffff:192.168.100.10:9200 :::* LISTEN 9477/java tcp 0 0 ::ffff:192.168.100.10:9300 :::* LISTEN 9477/java 注意: 可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。 #curl 192.168.100.10:9200 { "name":"WilsonFisk", "cluster_name":"elasticsearch", "version":{ "number":"2.2.1", "build_hash":"d045fc29d1932bce18b2e65ab8b297fbf6cd41a1", "build_timestamp":"2016-03-09T09:38:54Z", "build_snapshot":false, "lucene_version":"5.4.1" }, "tagline":"YouKnow,forSearch" } 返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。 刚刚安装的head插件,它是一个用浏览器跟ES集群交互的插件,可以查看集群状态、集群的doc内容、执行搜索和普通的Rest请求等。现在也可以使用它打开http://192.168.100.10:9200/_plugin/head/页面来查看ES集群状态: 上面的功能还是不错的! 【安装Logstash---数据日志存储和传输】 Logstash的功能如下: 其实它就是一个收集器而已,收集(input)和传输(output),我们需要为它指定Input和Output(当然Input和Output可以为多个)。可以指定input的日志和output到elasticsearch中 解压、软连接 1 2 tar xvflogstash-2.2.2. tar .gz-C /usr/local/ ln -s /usr/local/logstash-2 .2.2/ /usr/local/logstash 测试logstash (1) 屏幕输入输出方式测试 /usr/local/logstash/bin/logstash-e'input{stdin{}}output{stdout{}}' 我们可以看到,我们输入什么内容logstash按照某种格式输出,其中-e参数参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。使用CTRL-C命令可以退出之前运行的Logstash。 使用-e参数在命令行中指定配置是很常用的方式 不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。例如:在logstash安装目录下创建 配置logstash 1 2 3 4 5 创建配置文件目录: mkdir -p /usr/local/logstash/etc vim /usr/local/logstash/etc/hello_search .conf 输入下面: #cat/usr/local/logstash/etc/hello_search.conf input{ stdin{ type=>"human" } } output{ stdout{ codec=>rubydebug } elasticsearch{ hosts=>"192.168.100.10:9200" } } 启动: /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/hello_search.conf (以频幕上输入的方式输入,以rubydebug格式输出到屏幕,并且传递到elasticsearch) 测试logstash日志是否传输到了elasticsearch 通过以下接口: curl'http://192.168.100.10:9200/_search?pretty' 表明已经接收到了日志 至此,你已经成功利用Elasticsearch和Logstash来收集日志数据了。 【安装kibana---展示数据】 注:现在kibanna可以自带了web服务,bin/kibana就可以直接启动了,建议不用nginx进行配合启动了。 使用自带的web 5.1 安装Kibana 下载kibana后,解压到对应的目录就完成kibana的安装 解压、软连接 1 2 tar -xzvfkibana-4.4.2-linux-x64. tar .gz-C /usr/local/ ln -s /usr/local/kibana-4 .4.2-linux-x64/ /usr/local/kibana 启动kibanna 1 /usr/local/kibana-4 .4.2-linux-x64 /bin/kibana 或者 1 /usr/local/kibana/bin/kibana 此时是没有连接上elasticsearch 配置kibanna vim/usr/local/kibana/config/kibana.yml 修改 #elasticsearch.url:"http://localhost:9200" elasticsearch.url:"http://192.168.100.10:9200" 重启 /usr/local/kibana/bin/kibana web访问: 监听了5601作为web端口 使用http://kibanaServerIP:5601访问Kibana,登录后,首先,配置一个索引,默认,Kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。 In order to use Kibana you must configure at least one index pattern. Index patterns are used to identify the Elasticsearch index to run search and analytics against. They are also used to configure fields. 为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index 点击“Discover”,可以搜索和浏览Elasticsearch中的数据,默认搜索的是最近15分钟的数据。可以自定义选择时间。 到此,说明你的ELK平台安装部署完成。 补充: [配置logstash作为Indexer] 将logstash配置为索引器,并将logstash的日志数据存储到Elasticsearch,本范例主要是索引本地系统日志 cat/usr/local/logstash/etc/logstash-indexer.conf input{ file{ type=>"syslog" path=>["/var/log/messages","/var/log/secure"] } syslog{ type=>"syslog" port=>"5544" } } output{ stdout{codec=>rubydebug} elasticsearch{hosts=>"192.168.100.10:9200"} } 执行: /usr/local/logstash/bin/logstash-f/usr/local/logstash/etc/logstash-indexer.conf 执行: echo"谷歌alphago和李世石围棋大战" >> /var/log/messages 刷新kibana 每个收集日志的启动,都是一个独立的进程 本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1769525如需转载请自行联系原作者 cuizhiliang

优秀的个人博客,低调大师

使用Docker搭建Cloudera Hadoop 环境搭建

单节点 单节点:https://hub.docker.com/r/cloudera/quickstart/ 相关命令 docker pull cloudera/quickstart:latest docker run --privileged=true --hostname=quickstart.cloudera -p 8020:8020 -p 7180:7180 -p 21050:21050 -p 50070:50070 -p 50075:50075 -p 50010:50010 -p 50020:50020 -p 8888:8888 -t -i 4239cd2958c6 /usr/bin/docker-quickstart /home/cloudera/cloudera-manager --force --express boot2docker user: docker pass: tcuser 说明 Windows下需要采用桥接模式,要不然访问不到容器内的Cloudera Manager端口 集群 集群:https://hub.docker.com/r/cloudera/clusterdock/ 待续未完成

优秀的个人博客,低调大师

ELK搭建

ELK安装 elasticsearch安装 * 下载elasticsearch-5.0.0.tar.gz,并解压。 通过elasticsearch.yml可设置host和port。 vim config/elasticsearch.yml network.host: 192.168.33.10 http.port: 9200 通过jvm.options可设置jvm相关参数。 vim config/jvm.options 后台方式启动elasticsearch。 ./bin/elasticsearch -d 验证是否安装成功,通过http://192.168.33.10:9200/?pretty返回类似下面的json格式即安装成功。 curl 'http://192.168.33.10:9200/?pretty' { "name" : "Y88DRRb", "cluster_name" : "elasticsearch", "cluster_uuid" : "-WVdXX65Rw6dpo7Ne8WX0A", "version" : { "number" : "5.0.0", "build_hash" : "253032b", "build_date" : "2016-10-26T04:37:51.531Z", "build_snapshot" : false, "lucene_version" : "6.2.0" }, "tagline" : "You Know, for Search" } logstash安装 * 下载logstash-5.0.2.tar.gz并解压。 * 验证是否安装成功,通过./bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}',然后输入hello。返回类似如下信息则安装成功。 { "message" => "hello", "@version" => "1", "@timestamp" => "2016-11-30T02:40:16.043Z", "host" => "hb-localhost" } kibana安装 * 下载kibana-5.0.1-linux-x86_64.tar.gz并解压。 * 通过kibana.yml可设置kibana主机和端口,及elasticsearch服务地址。 vim config/kibana.yml server.port: 5601 server.host: "192.168.33.10" elasticsearch.url: "http://192.168.33.10:9200" 启动kibana。 ./bin/kibana 浏览器输入http://192.168.33.10:5601/即可进入kibana。 应用日志输出格式 为方便logstash处理,尽量让日志以json格式输出,比如下面格式: {"sql":"select * from product","time":"22","exception":"nullpointException","timeConsuming":"1231ms"} 日志文件名可以以天分割,比如db-2016-11-29.log。 logstash处理日志 创建logstash的配置文件logstash.conf,内容如下。input用于声明日志文件位置及处理相关配置。logstash会匹配db-xxx.log日志并从头开始处理,以json格式解析。output用于声明处理后的输出,将以common-sql-%{+YYYY.MM.dd}索引名输出到192.168.33.10:9200的es上。 input { file { path => "/home/vagrant/logstash/db-logs/db-*.log" start_position => "beginning" type => "sql" codec => json { charset => "UTF-8" } } } output { if "_grokparsefailure" in [tags] { }else{ if [type] == "sql"{ elasticsearch { hosts => ["http://192.168.33.10:9200"] index => "common-sql-%{+YYYY.MM.dd}" } } } } kibana展示 logstash处理后输出到es后即有日志了。 浏览器输入http://192.168.33.10:5601/进入主界面。 创建新的索引匹配 : Management -> Index Patterns -> Add New -> 输入common-sql-* -> Create 查看写入到es的日志记录,Discover -> 选择 common-sql-* -> 右上角选择时间 -> 搜索。 创建一个可视化,Visualize -> Line chart -> common-sql-* -> X-Axis -> Aggregation 选择 Terms -> Field 选择 time.keyword -> Apply changes ========广告时间======== 鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。 为什么写《Tomcat内核设计剖析》 =========================

优秀的个人博客,低调大师

Redis简单搭建使用与集群的搭建

一、安装Redis1、将压缩包导入虚拟机redis-3.2.9.tar2、进入解压后的文件夹执行命令make3、在当前的目录src下有一系列的可执行的文件,这是与redis相关的命令,将可执行的命令添加到PATH变量中。 find . -type f -executable 4、开启redis服务:# redis-server5、连接reids数据库:# redis-cli redis 数据库的使用1、string字符串类型 设置键值对 set key value127.0.0.1:6379> set a chinaitsoftOK 获取键值:127.0.0.1:6379> get a"chinaitsoft" 将key中存储的数字加1127.0.0.1:6379> set b 2OK127.0.0.1:6379> I

优秀的个人博客,低调大师

NDK基础之Android.mk基础

Android NDK官方介绍Android Developers NDK 指南 1、 Android.mk介绍 用于向构建系统描述源文件和共享库 1.1 定义 Application.mk; 1.2 构建系统和环境变量所未定义的项目范围设置; 1.3 替换特定模块的项目范围设置。 2、 Android.mk基本写法 2.1 首先定义LOCAL_PATH变量 在这里,构建系统提供的红函数my-dir将范湖当前目录(包含Android.mk所在目录) LOCAL_PATH := $(call my-dir) 2.2 接着声明CLEAR_VARS变量 CLEAR_VARS变量指向特殊GNU Makefile,可为您清除许多LOCAL_XXX变量 注意:它不会清除LOCAL_PATH变量,此变量必须保留其值,因为系统在单一GNU Make执行环境(其中所有变量都是全局变量)解析所有构建控制文件,在描述每个模块之前,必须声明(重新声明)此变量 include $(CLEAR_VARS) 2.3 LOCAL_MODULE变量将存储您要构建的模块名称 XXX代表你要生成的库文件的名称 在生成过程中系统会自动在XXX前面加上lib,形成libXXX.so的形式 应用的每个模块都应该使用一个该变量LOCAL_MODULE := XXX 2.4 枚举源文件,以空格分隔多个文件 变量必须包含要构建到模块中的C或者C++等源文件列表 LOCAL_SRC_FILES := hello.c index.c 2.5 连接系统所有内容 BUILD_SHARED_LIBRARY 变量指向GNU Makefile脚本,用于收集您最近include后在LOCAL_XXX变量中定义的所有信息 GNU Makefile脚本确定要构建的内容及操作方法 include $(BUILD_SHARED_LIBRARY) 2.6 自定义变量,不要与NDK构建系统预留变量冲突如 以LOCAL_开头的名称,如LOCAL_MODULE 以PRIVATE_、NDK_、或APP开头的名称,构建系统在内部使用这些变量 小写名称,例如my-dir 如果为了方便需要自定义变量,建议名称前附件MY_;NDK变量和相关宏定义 Application.mk介绍 该文件实际也是微型GNU Makefile片段,用于定义编译的多个变量。该文件通常位于¥PROJECT/jni/下,与Android.mk同个目录,其中PROJECT指向应用的项目目录,另一种方式是将其放在顶级$NDK/apps/目录的子目录下。例如 $NDK/apps/<myapp>/Application.mk这里的myapp是用于向NDKgo构建系统描述应用的jianch个,他不会实际进入生成的共享库或者最终软件包。 3.1 APP_PROJECT_PATH 此变量用于存储应用项目根目录的绝对路径。 构建系统使用此信息将生成的 JNI 共享库的简缩版放入 APK 生成工具已知的特定位置。如果您将 Application.mk 文件放在 $NDK/apps// 下,则必须定义此变量。 如果将其放在 $PROJECT/jni/ 下,则此变量可选。 3.2 APP_MODULES 如果定义此变量,变量会指示 ndk-build 仅构建相应模块及其依赖的模块。 列出模块名称时必须用空格分隔,与其在 Android.mk 文件 LOCAL_MODULE 定义中的显示方式一样。 如果未定义此变量,ndk-build 会查找所有可安装的顶级模块的列表,即 Android.mk 文件及其直接包括的任何文件所列的模块。 但是,导入的模块不是顶级模块。 可安装的模块是共享库或可执行文件,后者会在 libs/$ABI/ 中生成一个文件。 如果未定义此变量,而且项目中没有可安装的顶级模块,ndk-build 就会改为构建所有顶级静态库及其依赖项。 这些库会放在 obj/ 或 obj-debug/ 下的常用位置。 3.3 APP_OPTIM 请将这个可选变量定义为 release 或 debug。 使用此变量可以在构建应用的模块时变更优化级别。 发布模式为默认模式,可以生成高度优化的二进制文件。 调试模式会生成未经优化的二进制文件,如此更容易调试。 请注意,您可以调试发布或调试二进制文件。 但是,发布二进制文件在调试时提供的信息较少。 例如,构建系统会优化掉一些变量,导致您无法对其进行检查。 此外,代码重新排序可能增大单步调试代码的难度;堆栈轨迹可能不可靠。 在应用清单的 标记中声明 android:debuggable 将导致 此变量默认为 debug 而非 release。 将 APP_OPTIM 设置为 release 可替换此默认值。 3.4 APP_CFLAGS 此变量用于存储一组 C 编译器标记,供构建系统在为任何模块编译任何 C 或 C++ 源代码时传递到编译器。 使用此变量可以根据需要给定模块的应用更改该模块的版本号,而无需修改 Android.mk 文件本身。 使用 APP_CPPFLAGS 只能为 C++ 指定标记。 这些标记中的所有路径都应相对于顶级 NDK 目录。 例如,如果您有以下设置: sources/foo/Android.mk sources/bar/Android.mk 要在 foo/Android.mk 中指定您在编译时要添加指向 bar 源文件的路径,应使用: APP_CFLAGS += -Isources/bar 或者: APP_CFLAGS += -I$(LOCAL_PATH)/../bar -I../bar 无效,因为它相当于 -I$NDK_ROOT/../bar。 3.5 APP_CPPFLAGS 此变量包含一组 C++ 编译器标记,仅供构建系统构建 C++ 源文件时传递到编译器。 使用 APP_CFLAGS 可以为 C 和 C++ 指定标记。 3.6 APP_LDFLAGS 在链接应用时,构建系统传递的一组链接程序标记。 仅当构建系统构建共享库和可执行文件时,此变量才相关。 当构建系统构建静态库时,它会忽略这些标记。 3.7 APP_BUILD_SCRIPT 默认情况下,NDK 构建系统在 jni/ 下查找名为 Android.mk 的文件。 如果您要替换此行为,可以将 APP_BUILD_SCRIPT 定义为指向替代构建脚本。 构建系统始终将非绝对路径解释为相对于 NDK 的顶级目录。 3.8 APP_ABI 默认情况下,NDK 构建系统会为所有非弃用 ABI 生成机器代码。 您可使用 APP_ABI 设置为特定的 ABI 生成机器代码。 表 1 显示不同指令集的 APP_ABI 设置。 3.9 APP_PLATFORM 此变量包含您想支持的最低版本的 Android 平台。 例如,android-15 值指定您的库使用在低于 Android 4.0.3(API 级别 15)的版本中不可用的 API,而且不能在运行低版本平台的设备上使用。 如需平台名称和对应 Android 系统映像的完整列表,请参阅 Android NDK 原生 API。 请勿直接更改此标记,而应设置您模块级 build.gradle 文件中 defaultConfig 或 productFlavors 块的 minSdkVersion 属性。 这样就能确保只有安装在 Android 版本足够高的设备上的应用才能使用您的库。 ndk-build 工具链使用以下逻辑,根据您所构建的 ABI 以及您指定的 minSdkVersion 来为您的库选择最低版本的平台: 如果现有 ABI 平台版本等于 minSdkVersion,则 ndk-build 会使用该版本。否则,如果现有 ABI 平台版本低于 minSdkVersion,则 ndk-build 会使用其中版本最高的平台。 这种选择较为合理,因通常情况下,平台版本缺失意味着自上一个可用版本以来,原生平台 API 未作任何改变。否则,ndk-build 会使用下一个高于 minSdkVersion 的可用平台版本。 3.10 APP_STL NDK 构建系统默认为 STLsystem。 其他选项包括 c++_shared、c++_static 和 none。 请参阅 NDK 运行时和功能。 3.11 APP_SHORT_COMMANDS 相当于 Application.mk 中的 LOCAL_SHORT_COMMANDS,适用于整个项目。 如需了解详细信息,请参阅 Android.mk 中有关此变量的文档。 3.12 APP_THIN_ARCHIVE 在 Android.mk 文件中,为此项目中的所有静态库模块设置 LOCAL_THIN_ARCHIVE 默认值。 如需了解详细信息,请参阅 Android.mk 中有关 LOCAL_THIN_ARCHIVE 的文档

优秀的个人博客,低调大师

JavaNIO基础02-缓存区基础

1.1、什么是缓存区? 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区。 Buffer在IO中很重要。在java.io包中的BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter在其实现中都运用了缓冲区。java.nio包公开了Buffer API,使得Java程序可以直接控制和运用缓冲区。 在Java NIO中,缓冲区主要是跟通道(Channel)打交道,数据总是从缓冲区写入到通道中,或者从通道读取数据到缓冲区。 1.2、缓存区的优点? 1、减少实际的物理读写次数 2、缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数 1.3、缓存区的存储位置 1、堆内内存 堆内内存是由JVM所管控的Java进程内存,我们平时在Java中创建的对象都处于堆内内存中,并且它们遵循JVM的内存管理机制,JVM会采用垃圾回收机制统一管理它们的内存。 2、堆外内存 堆外内存就是存在于JVM管控之外的一块内存区域,因此它是堆外内存不受JVM的管控。 1.4 缓存区常用类 缓存区类说明 类名称 说明 ByteBuffer 字节缓存区 HeapByteBuffer 堆内字节缓存区 HeapByteBufferR 堆内字节只读缓存区,以R结尾的类表示只读 MappedByteBuffer 文件映射到虚拟内存,读写性极能 DirectByteBuffer 堆外字节缓存区 - - ByteBufferAsCharBufferB 字节缓存区转字符缓存区,大端序列 ByteBufferAsCharBufferRB 字节缓存区转字符缓存区,只读、大端序列 ByteBufferAsCharBufferL 字节缓存区转字符缓存区,小端序列 ByteBufferAsCharBufferLB 字节缓存区转字符缓存区,只读、小端序列 DirectCharBufferS 堆外字符缓冲期,字节序反转 DirectCharBufferRS 堆外字符缓冲期,只读、字节序反转 DirectCharBufferU 堆外字符缓冲期,字节序非反转 2.1 缓存区4个属性 (1)capacity capacity指的是缓冲区能够容纳元素的最大数量,这个值在缓冲区创建时被设定,而且不能够改变。(2)limit limit指的是缓冲区中第一个不能读写的元素的数组下标索引,也可以认为是缓冲区中实际元素的数量。(3)position position指的是下一个要被读写的元素的数组下标索引,该值会随get()和put()的调用自动更新。(4)mark 一个备忘位置,调用mark()方法的话,mark值将存储当前position的值,等下次调用reset()方法时,会设定position的值为之前的标记值。 2.2 缓存区不变等式 0<=标记<=位置<=限制<=容量 2.3 缓存区操作示例 (1)创建缓存区 ByteBuffer buffer = ByteBuffer.allocate(10); //mark = -1; //position= 0; //limit=10; //capacity=10; 初始化状态 (2)添加数据 buffer.put((byte)1); buffer.put((byte)2); buffer.put((byte)3); buffer.put((byte)4); buffer.put((byte)5); //mark = -1; //position= 5; //limit=10; //capacity=10; 添加数据后 (3) 读取数据 读取缓冲区前,一般调用flip(反转) 方法。 buffer.flip(); //当前状态 //mark = -1; //position= 0; //limit=5; //capacity=10; 读取前翻转 buffer.get(); buffer.get(); //当前状态 //mark = -1; //position= 2; //limit=5; //capacity=10; 执行两次get后 (4)标记缓存区 buffer.mark(); //mark = 2; //position= 2; //limit=5; //capacity=10; 标记后 (5)重置缓存区 buffer.get(); buffer.get(); //mark = 2; //position= 4; //limit=5; //capacity=10; buffer.reset(); //mark = 2; //position= 2; //limit=5; //capacity=10; 重置缓存区 3 缓存常用方法 3.1 反转 flip 使缓冲区为一系列新的通道写入或相对获取 操作做好准备:它将限制设置为当前位置,然后将位置设置为 //flip 方法内部实现 limit = position; position = 0; mark = -1; 3.2 清理 clear 使缓冲区为一系列新的通道读取或相对放置 操作做好准备:它将限制设置为容量大小,将位置设置为 0 //clear内部实现 position = 0; limit = capacity; mark = -1; 3.3 重绕rewind 使缓冲区为重新读取已包含的数据做好准备:它使限制保持不变,将位置设置为 0 position = 0; mark = -1; 3.4 remaining 与 hasRemaining 常用用于判断缓存区可读内容的长度。 return limit - position; 3.5 标记mark()与重置reset()方法 mark 把 mark的值设置成position。 reset 把position设置成mark的值,相当于之前做过一个标记,现在要退回到之前标记的地方 3.6 压缩 compact 把从position到limit中的内容移到0到limit-position的区域内,position和limit的取值也分别变成limit-position、capacity。如果先将positon设置到limit,再compact,那么相当于clear()

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册