Hello World!
What is “Hello, World!”A “Hello, world!” program is generally a computer program that outputs or displays the message “Hello, world!”. A small piece of code in most general-purpose programming languages, this program is used to illustrate a language’s basic syntax. “Hello, world!” programs are often the first a student learns to write in a given language, and they can also be used as a sanity check to ensure computer software intended to compile or run source code is correctly installed, and tha ...
Docker基本使用
什么是 docker作为一个开源的应用容器引擎,docker主要用于开发和运行应用。docker容器和虚拟机有些类似,但二者在原理上不同。容器是将操作系统层虚拟化,而虚拟机则是虚拟化硬件。因此容器相较于虚拟机来说更加便携、轻量以及高效。
所以我们可以简单的将docker容器理解为一个轻量版的虚拟机。在docker之上我们可以高效地运行各式各样的应用,应用之间相互独立而又可以互相协调。
docker组成
其中,容器和镜像的概念一定要分清。他俩的关系就像是Java中的类与对象。镜像是一个只读模板,用于指示创建容器,而容器是镜像的可运行实例。一个镜像也可以创建很多个容器,这些容器可以相互独立运行。
Docker注册中心(Docker registry)也被称为Docker仓库,主要用于存储docker镜像。Docker Hub是一个公共的注册中心,任何人都可以在此处下载镜像。
docker基本常用命令镜像相关
检索镜像
1docker search [关键字]
获取镜像(默认从Docker Hub下载)
1docker pull [选项] [Docker Registry 地 ...
TensorFlow启用GPU加速
前言据官网介绍,对于 tensorflow1.15 及更早版本,CPU和GPU软件包是分开的。
12pip install tensorflow==1.15 # CPUpip install tensorflow-gpu==1.15 # GPU
而之后的版本,我们可以直接在CPU版本的基础上开启GPU加速。
参考:GPU支持 | TensorFlow (tensorflow官方网站,国内访问可能较慢)
安装TensorFlow最新版1pip install tensorflow
如果嫌弃安装速度太慢,也可以使用国内豆瓣源
1pip install tensorflow -i https://pypi.doubanio.com/simple/
启用GPU加速前提
硬件要求
支持以下带有 GPU 的设备:
CUDA® 架构为 3.5、5.0、6.0、7.0、7.5、8.0 或更高的 NVIDIA® GPU 卡。请参阅支持 CUDA® 的 GPU 卡列表。
如果 GPU 采用的 CUDA® 架构不受支持,或为了避免从 PTX 进行 JIT 编译,亦或是为了使用不 ...
如何进行内网穿透
什么是内网穿透百度百科:内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
维基百科:在电脑科学中,NAT穿越(NAT traversal)涉及 TCP/IP 网络中的一个常见问题,即在处于使用了NAT装置的私有 TCP/IP 网络中的主机之间建立连接的问题。
我的理解:内网穿透其实就是把局域网内的资源或服务映射到公网,从而达到通过互联网访问内网的效果。
根据我的理解,可以做出如下图:
因为内网穿透服务器是暴露在互联网(公网)的,所以它必须拥有公网IP地址。用户服务器既可以是公司内部的服务器集群,也可以是PC个人电脑。
一些常见的内网穿透工具的使用Ngrok官方文档:https://ngrok.com/docs
ngrok是一款非常便捷简单的内网穿透工具。内网穿透服务器由他们来提供,我们只需要指定要穿透的端口即可实现一键内网穿透
下载安装
从官方下载地址下载对应版本的ngrok
下载好后进行解压,会得到如下文件(先别急着运行)
注册一个账号,注册 ...
Git基本使用
前言曾经稍微学习过一点git,对git稍微有一点认识,但不够全面。本笔记主要用来记录一下git的常用命令和功能以及我的一些个人理解。
参考:
Git-Reference
廖雪峰的官方网站
阮一峰的网络日志
什么是git对于什么是git,官方文档是这样介绍它的:Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.
总结下来,git是一个可扩展的 、分布式的 版本控制系统 。
安装gitwindowsLinux通过官方下载网站下载相应安装包正常安装,当鼠标右键出现Git Bash Here时即为安装成功对于Debian/Ubuntu等一些常见的Linux发行版,可以直接通过默认的包管理工具进行安装,参照官方Linux安装指南
也可以通过源码进行安装,源码安装方式如下:
在该镜像网站下载对应 ...
Butterfly常用标签外挂
前言我也是最近刚了解到Hexo的标签外挂,同时也觉得他很方便。于是想写一篇笔记记录一下它的基本语法,看了一些网上的教程,结果hexo g的时候控制台一阵爆红。果然,看教程还是看官方文档比较靠谱。
本文参考:標籤外掛(Tag Plugins)
什么是标签外挂?标签外挂也叫外挂标签,我的理解就是Hexo对于markdown的扩展语法(其实就是通过CSS代码修改文章特定语法的文字的样式),它是Hexo博客框架所独有的。通过使用标签外挂,可以让markdown语法具备更强的表达能力。一般不同的主题或者CSS样式提供的标签外挂语法也是不一样的。我这里介绍的主要是Butterfly主题所提供的标签外挂语法。
常用标签外挂语法分区标签tabs代码展示:
12345678910111213141516{% tabs Tags %}<!-- tab 标题1 -->内容1<!-- endtab --><!-- tab 标题2 -->内容2{% tabs Tags %}<!-- tab 标题2.1 -->内容2. ...
Jupyter设置代码自动补全
Jupyter Notebook是我们用Python进行数据分析和机器学习的不二之选,但是Jupyter Notebook默认是不带代码自动补全功能的,我们可以通过安装插件的方式使其具有这个功能
安装模块
打开 Anaconda Powershell Prompt (Anaconda)
输入pip install jupyter_contrib_nbextensions回车开始安装
注:此方法默认使用国外的源,如果出现安装失败,参考以下方法
方法一:使用阿里云的源pip install jupyter_contrib_nbextensions -i https://mirrors.aliyun.com/pypi/simple/
方法二:使用conda包管理器conda install jupyter_contrib_nbextensions
配置
打开 Anaconda Powershell Prompt (Anaconda) (方法同上)
输入命令jupyter contrib nbextension install --user并回车
打开Jupyter N ...
MyBatis基本使用
1. 简介什么是 MyBatis?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2. 基本使用最惯常的使用步骤:
2.1. 在数据库中准备好相应的数据库、数据表等(以 book 表为例)123456789101112# 创建表CREATE TABLE book( id INT, bookName VARCHAR(50), price DOUBLE);# 稍微添加一些数据INSERT INTO book VALUES(1, "C语言程序设计", 10),(2, "Python程序设计", 20),(3, "Java程序设计", 30);
2.2. 新建一个 maven 项目,修改 pom.xml 文件
加入依赖 mybatis ...
Java集合
1. 集合框架图如下:
大致可以看出,Java 集合框架主要包含两种容器。一种是存储元素集合的 Collection,另一种是存储键值对的 Map。
总结:
集合主要分为两组(单列集合,双列集合)
Collection 接口有两个重要的子接口 List 和 Set,他们实现的子类都是单列集合
Map 接口实现的子类则是双列集合,存放K-V键值对
2. Collection 接口2.1 Collection接口常用方法:1234567891011121314151617181920212223242526272829303132add 参数:array.add(Object o); 添加元素 remove 参数:array.remove(Object o); 删除指定元素 contains 参数:array.contains(Object o); 查找元素是否存在 size 获取元素个数 isEmpty 判断是否为空 clear 清空 addAll 参数:array.addAll(Collection c); 将另一个集合添加(添加多个元素) containsAll 参数:arr ...
Java数组
1. 一维数组1.1 声明及创建123456789101112//一维数组的声明double[] array;//一维数组的创建double[] array = new double[10];//一维数组初始化int[] array = {2, 3, 5, 7, 11, 13};//初始化匿名数组new int[] {17, 19, 23, 29};//使用这种方式进行初始化时,数组的大小就是初始值的个数
1.2 数组的遍历123456789//for循环for (int i = 0; i < array.length(); i++) { System.out.println(array[i]);}//增强for循环(for-each循环)for (int i: array) { System.out.println(i);}
1.3 数组常用方法(Arrays类)12345678910111213141516171819202122import java.util.Arrays;// ...