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 ...
如何进行内网穿透
什么是内网穿透百度百科:内网穿透,也即 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;// ...
Java数据类型
Java是一种强类型语言。每个变量都必须要有一种数据类型。Java一共有八种基本的数据类型。其中有4种整型,2中浮点型,一种用于表示Unicode编码的字符单元的字符类型char类型,和一种用于表示真值的boolean类型。(注意:String不是基本数据类型)
1. 整型整型用于表示没有小数部分的数值,它允许是负数。类型如下:
类型
字节大小
取值范围
byte
1字节
-128 ~ 127
short
2字节
-32 768 ~ 32 767(3万左右)
int
4字节
-2 147 483 648 ~ 2 147 483 647(20亿左右)
long
8字节
-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
此外,可以用不同的前后缀来表示不同的进制:
0x 前缀表示十六进制数值
0 前缀表示八进制数值
0b 前缀表示二进制数值
在书写较大的数字时,可以用_来分割,例如 0b000_111_010_100 表示468,Java编译器回去除这些下划线。
注意:在c和c++中,int ...
Java接口
接口实际上是一种规范。实现接口,是对 Java 单继承的一种补充。接口也具有多态性。
注意事项:
接口不能被实例化
接口中的所有方法都是 public 类型,接口中的抽象方法可以不用 abstract 修饰
一个普通类实现接口就必须将接口中的所有方法实现
抽象类去实现接口时,可以不实现接口的抽象方法
一个类可以实现多个接口
接口中的属性,只能是 final,而且是 public static final 修饰符
接口中属性的访问形式:接口名.属性名
接口不能继承其他的类,但是可以继承多个别的接口
接口的修饰符只能是 public 和默认,和类的修饰符一样
例子如下:
123456789101112131415//camera.javapackage com.pushihao.接口;public class camera implements machine { @Override public void work() { System.out.println("the camera is working"); ...