首页 文章 精选 留言 我的

精选列表

搜索[计算机基础],共10007篇文章
优秀的个人博客,低调大师

涵盖最广的计算机编程学习资料

版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/78241066 文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众获取更多干货资源。 本文为sydMobile原创文章,可以随意转载,但请务必注明出处! 国庆假期结束,又要投入紧张的学习工作中了,算起来也有许多天没有更新了,所以这次更新要补偿一下,给大家带来了满满的干货!今天的干货内容涵盖了许多编程语言的学习资料,从入门到高级都有。毫不夸张的说,如果你把这次资料的内容全部学精那么你就完成可以成为别人口中的那个大牛了! 提前声明这些学习资料全部是我平时在网络上自己一点点收集的学习资料,仅供大家学习交流使用,严禁商业用途!版权所有属于视频作者! 1.首先先奉上最近大火的Python语言学习资料 这里面涵盖了 Python语言学习从入门到一些框架的使用! 2.大火的大数据学习资料 3.Google 发布一套 DVD 将 Google Developers 上的在线技术文档和视频打包到离线文件中。内容包括 Android 官方文档和SDK、Google Cloud 文档和视频、Web Fundamentals 文档、I/O 大会和 Dev Bytes 视频、Google Udacity 课程视频 等等。 4.Android源码 5.与编程有关的电子书 6.PS相关学习资料 7.UI相关的学习资料 8.C语言、数据结构、SQL学习资料 9.html+css+js 10.Java学习资料 这里几乎涵盖各市面上所有的Java教学资料,通过这些资料的学习相信你会对Java有全新的认识! 由于资料过多,今天就先分享到这里,剩下的以后继续,大家如果对什么资料感兴趣可以通过留言告诉我,或者加我微信。 最后上面的这些资料统一微信公众号回复 干货1 获取

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

Google首页纪念“人类计算机”女士诞辰

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 Google今天在首页放上了一个新的涂鸦,计算器数字拼凑出Google,最左边是一位女士的照片。如果你熟悉数学,应该能认出这位来自印度的数学家,她就是Shakuntala Devi。 Google今天的首页涂鸦是为了纪念Shakuntala Devi女士84岁诞辰。Shakuntala Devi(夏琨塔拉·戴维)在1929年11月4日出生于印度的邦加罗尔,她是印度的数学家,常被称誉为“人类计算器”、“世上最聪明的女人”。她曾在全球各大学接受测试,现场示范其***的特殊能力:在28秒内计算出两个任意13位数的乘积。

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

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()

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

Docker基础之六: Docker基础命令

容器相关的命令 (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。) 在上例中,我们用3种方式运行了容器,在上节中我们学习了: docker ps : 查看容器列表 docker logs:查看容器的日志 docker stop:停止容器 在本节中,我们将通过事例来熟悉一些其他的docker命令,并学习docker client。 1 Docker Client Docker Client和Docker Daemon实际使用的是同一个二进制程序,通过docker --help命令可以直接查看docker的所有命令及选项: 查看docker可执行程序的路径: root@shev:~# which docker /usr/bin/docker docker命令的帮助信息: root@shev:~# docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ --help | -v | --version ] A self-sufficient runtime for containers. Options: --config=~/.docker Location of client config files -D, --debug=false Enable debug mode --disable-legacy-registry=false Do not contact legacy registries -H, --host=[] Daemon socket(s) to connect to -h, --help=false Print usage -l, --log-level=info Set the logging level --tls=false Use TLS; implied by --tlsverify --tlscacert=~/.docker/ca.pem Trust certs signed only by this CA --tlscert=~/.docker/cert.pem Path to TLS certificate file --tlskey=~/.docker/key.pem Path to TLS key file --tlsverify=false Use TLS and verify the remote -v, --version=false Print version information and quit Commands: attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on a container or image kill Kill a running container load Load an image from a tar archive or STDIN login Register or log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container network Manage Docker networks pause Pause all processes within a container port List port mappings or a specific mapping for the CONTAINER ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart a container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save an image(s) to a tar archive search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop a running container tag Tag an image into a repository top Display the running processes of a container unpause Unpause all processes within a container version Show the Docker version information volume Manage Docker volumes wait Block until a container stops, then print its exit code Run 'docker COMMAND --help' for more information on a command. 具体的含义,我们在日后再一一讲解。我们先关注头几行: Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ --help | -v | --version ] 剖析: 第一行实际是docker client的语法格式,它接收OPTIONS参数,并跟一个COMMAND,之后紧跟该命令对应的参数 第二行实际是docker daemon的语法格式,有兴趣的朋友可以通过docker daemon –help进行查看 第三行就是docker client的帮助,有需要都可以执行并查看。 一个我们经常用的查看docker版本信息的命令: root@shev:~# docker version Client: Version: 1.9.0 API version: 1.21 Go version: go1.4.2 Git commit: 76d6bc9 Built: Tue Nov 3 17:43:42 UTC 2015 OS/Arch: linux/amd64 Server: Version: 1.9.0 API version: 1.21 Go version: go1.4.2 Git commit: 76d6bc9 Built: Tue Nov 3 17:43:42 UTC 2015 OS/Arch: linux/amd64 这个命令会列出当前docker的client和server的基本信息. 2 通过容器来运行web应用 容器可以运行任何程序,那么一个主要的用途就是运行web应用,并对外提供服务,下面我们就用官方的一个例子来进行演示: 2.1 启动容器 root@shev:~# docker run -d -P training/webapp python app.py Unable to find image 'training/webapp:latest' locally latest: Pulling from training/webapp 2880a3395ede: Pull complete 515565c29c94: Pulling fs layer 98b15185dba7: Pulling fs layer 2ce633e3e9c9: Verifying Checksum 2ee0b8f351f7: Download complete 2505b734adda: Downloading [=====================> ] 8.732 MB/20.71 MB 20dd0c759013: Downloading [> ] 515.2 kB/50.25 MB f95ebd363bf2: Verifying Checksum 1952e3bf3d7e: Download complete abb991a4ed5e: Download complete 7cbae6914197: Pulling fs layer f74dd040041e: Pulling fs layer 54bb4e8718e8: Download complete Pulling repository docker.io/training/webapp 02a8815912ca: Download complete e9e06b06e14c: Download complete a82efea989f9: Download complete 37bea4ee0c81: Download complete 07f8e8c5e660: Download complete 23f0158a1fbe: Download complete 0a4852b23749: Download complete 7d0ff9745632: Download complete 99b0d955e85d: Download complete 33e109f2ff13: Download complete cc06fd877d54: Download complete b1ae241d644a: Download complete b37deb56df95: Download complete Status: Downloaded newer image for training/webapp:latest docker.io/training/webapp: this image was pulled from a legacy registry. Important: This registry version will not be supported in future versions of docker. 7736775bd89f6d0373b7a6c39a91126d156d9b0ce5467c30f0275506e012be4e 我们查看一下程序是否启动: root@shev:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7736775bd89f training/webapp "python app.py" 9 minutes ago Up 9 minutes 0.0.0.0:32768->5000/tcp agitated_poitras e221abf45a0b ghostcloud.cn:5000/gcali:1.2 "/usr/local/ghostclou" About an hour ago Up About an hour gcsagent 剖析: 我们从Docker Hub拉取了training用户下的webapp的最新版本,然后用python执行app.py 我们的启动参数包括:-d 在后台运行,-P导出容器需要导出的端口,由于Docker Hub在国外,因此拉取的时间可能会有点长,但是一旦本地有了镜像,之后就会很快了。 通过ps 命令,我们可以看到主机的32768端口映射到了容器的5000端口 2.2 访问网页 我们通过主机的32768端口进行访问: 2.3 查看容器的端口导出情况 root@shev:~# docker port 7736 5000/tcp -> 0.0.0.0:32768 2.4 查看容器的运行日志 root@shev:~# docker logs -f 7736 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 192.168.0.103 - - [02/Dec/2015 10:03:07] "GET / HTTP/1.1" 200 - 192.168.0.103 - - [02/Dec/2015 10:03:07] "GET /favicon.ico HTTP/1.1" 404 - 192.168.0.103 - - [02/Dec/2015 10:08:11] "GET / HTTP/1.1" 200 - 剖析: -f会一直绑定到容器的标准输出上,不带-f时,运行后命令立刻就会退出 运行完logs –f后,我们访问网页时,就会在命令行里面显示日志 2.5 查看容器中的进程信息 root@shev:~# docker top 7736 UID PID PPID C STIME TTY TIME CMD root 5115 4051 0 17:53 ? 00:00:00 python app.py 2.6 查看容器的详细信息 root@shev:~# docker inspect 7736 [ { "Id": "7736775bd89f6d0373b7a6c39a91126d156d9b0ce5467c30f0275506e012be4e", "Created": "2015-12-02T09:53:41.35592583Z", "Path": "python", "Args": [ "app.py" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 5115, "ExitCode": 0, "Error": "", "StartedAt": "2015-12-02T09:53:41.62798274Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "02a8815912ca800f99b7d912485e8c618260e27c6de8d7a161b356b322d5c121", "ResolvConfPath": "/var/lib/docker/containers/7736775bd89f6d0373b7a6c39a91126d156d9b0ce5467c30f0275506e012be4e/resolv.conf", "HostnamePath": "/var/lib/docker/containers/7736775bd89f6d0373b7a6c39a91126d156d9b0ce5467c30f0275506e012be4e/hostname", "HostsPath": "/var/lib/docker/containers/7736775bd89f6d0373b7a6c39a91126d156d9b0ce5467c30f0275506e012be4e/hosts", "LogPath": "/var/lib/docker/containers/7736775bd89f6d0373b7a6c39a91126d156d9b0ce5467c30f0275506e012be4e/7736775bd89f6d0373b7a6c39a91126d156d9b0ce5467c30f0275506e012be4e-json.log", "Name": "/agitated_poitras", "RestartCount": 0, "Driver": "aufs", "ExecDriver": "native-0.2", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": null, "ContainerIDFile": "", "LxcConf": [], "Memory": 0, "MemoryReservation": 0, "MemorySwap": 0, "KernelMemory": 0, "CpuShares": 0, "CpuPeriod": 0, "CpusetCpus": "", "CpusetMems": "", "CpuQuota": 0, "BlkioWeight": 0, "OomKillDisable": false, "MemorySwappiness": -1, "Privileged": false, "PortBindings": {}, "Links": null, "PublishAllPorts": true, "Dns": null, "DnsOptions": null, "DnsSearch": null, "ExtraHosts": null, "VolumesFrom": null, "Devices": [], "NetworkMode": "default", "IpcMode": "", "PidMode": "", "UTSMode": "", "CapAdd": null, "CapDrop": null, "GroupAdd": null, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "SecurityOpt": null, "ReadonlyRootfs": false, "Ulimits": null, "LogConfig": { "Type": "json-file", "Config": {} }, "CgroupParent": "", "ConsoleSize": [ 0, 0 ], "VolumeDriver": "" }, "GraphDriver": { "Name": "aufs", "Data": null }, "Mounts": [], "Config": { "Hostname": "7736775bd89f", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "5000/tcp": {} }, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "python", "app.py" ], "Image": "training/webapp", "Volumes": null, "WorkingDir": "/opt/webapp", "Entrypoint": null, "OnBuild": null, "Labels": {}, "StopSignal": "SIGTERM" }, "NetworkSettings": { "Bridge": "", "SandboxID": "02c2de9e7171ed418869e53297b0b1956052be67d2c9c4c75f99829fff646fdd", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "5000/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "32768" } ] }, "SandboxKey": "/var/run/docker/netns/02c2de9e7171", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "f623f99d87ec63cc3bfdc024886d24d40bd1cf1771e249951133a7c66424d6e9", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:02", "Networks": { "bridge": { "EndpointID": "f623f99d87ec63cc3bfdc024886d24d40bd1cf1771e249951133a7c66424d6e9", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02" } } } } ] 2.7 停止并重启容器 root@shev:~# docker stop 7736 7736 root@shev:~# root@shev:~# docker start 7736 7736 root@shev:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7736775bd89f training/webapp "python app.py" 25 minutes ago Up 2 seconds 0.0.0.0:32769->5000/tcp agitated_poitras 注意:容器的在主机上的映射端口变成了32769,原因是我们没有指定主机的端口。 2.8 指定主机和容器的端口映射 root@shev:~# docker run -d -p 80:5000 training/webapp python app.py 54132a474d29d44a7fc6431184ae1c1c77b4c8fb31975d477aab73647a008837 root@shev:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 54132a474d29 training/webapp "python app.py" 3 seconds ago Up 2 seconds 0.0.0.0:80->5000/tcp grave_williams 剖析: 通过-p 参数可以指定端口映射,通过-P则是随机分配 由于我们导出主机的80端口,因此我们再次访问网页的时候,可以不需要指定端口: 是不是眼前一亮,是的,我们可以将我们的网页直接运行在容器里面! 想象一下,你拥有一台云主机……

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

Vue基础

1.vue优点? 答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb; 简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习; 双向数据绑定:保留了angular的特点,在数据操作方面更为简单; 组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势; 视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作; 虚拟DOM:dom操作是非常耗费性能的, 不再使用原生的dom操作节点,极大解放dom操作,但具体操作的还是dom不过是换了另一种方式; 运行速度更快:相比较与react而言,同样是操作虚拟dom,就性能而言,vue存在很大的优势。 2.vue父组件向子组件传递数据? 答:通过props 3.子组件像父组件传递事件? 答:$emit方法 4.v-show和v-if指令的共同点和不同点? 答: 共同点:都能控制元素的显示和隐藏; 不同点:实现本质方法不同,v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译一次;v-if是动态的向DOM树内添加或者删除DOM元素,若初始值为false,就不会编译了。而且v-if不停的销毁和创建比较消耗性能。 总结:如果要频繁切换某节点,使用v-show(切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用v-if(初始渲染开销较小,切换开销比较大)。 5.如何让CSS只在当前组件中起作用? 答:在组件中的style前面加上scoped 6.<keep-alive></keep-alive>的作用是什么? 答:keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。 7.如何获取dom? 答:ref="domName" 用法:this.$refs.domName 8.说出几种vue当中的指令和它的用法? 答:v-model双向数据绑定; v-for循环; v-if v-show 显示与隐藏; v-on事件;v-once: 只绑定一次。 9. vue-loader是什么?使用它的用途有哪些? 答:vue文件的一个加载器,将template/js/style转换成js模块。 用途:js可以写es6、style样式可以scss或less、template可以加jade等 10.为什么使用key? 答:需要使用key来给每个节点做一个唯一标识,Diff算法就可以正确的识别此节点。 作用主要是为了高效的更新虚拟DOM。

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

Dokcer基础

centos7 yum -y install docker docker加速 1 curl-sSLhttps: //get .daocloud.io /daotools/set_mirror .sh|sh-shttp: //224ac393 .m.daocloud.io 4.systemctl start docker 1 2 3 4 5 6 7 8 9 10 [root@web01~] #systemctlstatusdocker ●docker.service-DockerApplicationContainerEngine Loaded:loaded( /usr/lib/systemd/system/docker .service;enabled;vendorpreset:disabled) Active:active(running)sinceThu2016-12-2220:25:00CST;1weeks5daysago Docs:http: //docs .docker.com MainPID:799(docker-current) Memory:39.1M CGroup: /system .slice /docker .service ├─799 /usr/bin/docker-current daemon--registry-mirror=http: //224ac393 .m.daocloud.io-- exec -optnative.cg... └─28516docker-proxy-prototcp-host-ip59.110.25.215-host-port88-container-ip192.168.0.2-container-p.. 4.拉公共的镜像 1 2 3 4 5 6 7 8 dockerpullcentos dockerpullnginx dockersave-onginx. tar .gznginx dockersave-ocentos. tar .gzcentos dockerload--inputnginx. tar .gz dockerload--inputcentos. tar .gz 5.启动一个nginx 1 2 3 4 5 dockerrun-d--namemynginx-p59.110.25.215:88:80nginx 说明:基于nginx镜像启动一个mynginx的容器本机端口88端口对应容器80端口 浏览: 指定多个端口: dockerrun-d--namemynginx-p59.110.25.215:88:80-p59.110.25.215:443:443nginx 6.查看对应的端口 1 2 3 4 5 dockerportmynginx [root@web01~] #dockerportmynginx 80 /tcp ->59.110.25.215:88 [root@web01~] # 7.进入docker容器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/bin/bash #Usensentertoaccessdocker docker_in(){ NAME_ID=$1 PID=$(dockerinspect-f "{{.State.Pid}}" $NAME_ID) nsenter-t$PID-m-u-i-n-p } docker_in$1 上述的脚本就是dockerin.sh [root@web01~] #dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 1f3d2f356995nginx "nginx-g'daemonoff" 18minutesagoUp18minutes443 /tcp ,59.110.25.215:88->80 /tcp mynginx [root@web01~] #bashdockerin.sh1f3d2f356995 root@1f3d2f356995:/ # 8.进入容器以后修改容器内部的东西 1 2 3 4 root@1f3d2f356995: /usr/share/nginx/html #echo"helloeveryone">index.html root@1f3d2f356995: /usr/share/nginx/html #pwd /usr/share/nginx/html root@1f3d2f356995: /usr/share/nginx/html # 本文转自 小小三郎1 51CTO博客,原文链接:http://blog.51cto.com/wsxxsl/1888718,如需转载请自行联系原作者

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

Android基础

1, protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);#任何的项目都需要覆写父类的onCreate方法 setContentView(R.layout.activity_main);#显示出你所定义的布局,或指在当前活动中加载你所需要的布局 } 2,创造加载布局 res/layout/new/android xml file <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"//让当前元素变得和父类一样宽 android:layout_height="match_parent" android:orientation="vertical" >布局是垂直的,添加文件只能垂直添加 <Button android:id="@+id/button1"//添加一个按钮 android:layout_width="match_parent" android:layout_height="wrap_content"//只能包裹住文字 android:text="Button" /> </LinearLayout> 3, @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏 setContentView(R.layout.first_layout); } 4, protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏 setContentView(R.layout.first_layout); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() {//创造一个按钮的监听器,点击会有响应,如果出现错误,点击//ctrl+shift+o即可 @Override public void onClick(View v) { // TODO 自动生成的方法存根 Toast.makeText(getApplicationContext(), "you clicked button1", Toast.LENGTH_SHORT).show(); } }); } 本文转自眉间雪 51CTO博客,原文链接:http://blog.51cto.com/13348847/2045017,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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部分的功能。

用户登录
用户注册