Java基础学习

自己花了500多大洋在慕课上买的教程 https://class.imooc.com/sc/64/learn#

1、快速熟悉java
1、java基础
1、基本数据类型
整型
字符串
浮点
2、各种运算符
1、比较运算符 > == >= <=
2、布尔运算符 && ||
3、或运算符
4、小括号运算符
5、运算符优先级
6、位运算符
1、按位并 (AND) & 如果两个数的二进制位都是1,返回true
2、按位或 (OR) | 如果两个数的二进制位有一个是1,返回true
3、按位异或 (XOR) ^ 如果两个数的二进制位只要不相同那就是1,若两个位相同那就是0
4、按位取反 ~ 需要一个操作数,对一个数二进制取反
7、快速运算写法
a ^= 1
a >> = 1

3、类型转换
1、自动类型转换
2、强制类型转换
4、字符串
1、字符集、编码
2、字符串加法
5、if/else流程控制语句
6、for、while、do … while循环
7、switch
8、数组
特点:
1、数组是连续的内存空间
1、一维数组
2、多维数组
9、类、对象
10、包
11、方法
1、方法重载 (方法名相同,参数列表不同,注: 返回值类型不在考虑范围)
12、传值、传引用
1、类型分为普通数据类型、引用数据类型
普通数据类型,比如int、string等
引用数据类型:数组、对象
13、可变参数列表和数组的区别
1、可变参数列表必须排在最后
2、一个方法参数中只能有一个可变参数列表
14、面向对象
1、声明对象是在栈空间,实例化对象是在堆空间
2、构造方法
1、构造方法间可以通过this()进行构造方法的调用
2、父类的构造方法不允许被继承、不允许被重写
3、父类如果没有无参构造方法,会影响子类的对象的实例化
3、封装
不带修饰符、public、protected、private
4、static 关键字
1、无论实例化多少个对象,它们都公用一个静态成员
2、既可以通过“对象.静态成员”,也可以通过“类名称.静态成员”访问
3、可以加在类属性、方法前面
5、继承
定义:
1、两个类之间满足“A is a B”的关系就可以形成继承关系,如小轿车(或者大货车)都是汽车,那小轿车(或大货车)都继承自汽车
2、可以通过“extends”来实现
方法重写
1、是子类重写父类的方法
2、要求:方法名相同、参数列表相同(参数类型、个数、类型),返回值类型相同
3、子类的访问修饰符必须大于或等于父类方法的访问修饰符
4、子类中是可以重写父类的成员属性的
5、静态方法和final方法不能被重写
6、重写方法访问权限必须大于等于父类方法
7、继承加载顺序为:父类静态代码块 > 子类静态代码块 > 父类代码块 > 父类构造方法 > 子类代码块 > 子类构造方法
6、super关键字
1、可以访问父类属性、方法
2、子类可以通过该关键字调用父类其它构造方法
3、调用构造方法时必须放在方法体第一行
4、”super.(方法/属性)”,super()或者super(参数)必须在构造方法中执行
7、this和super的区别:
1、都不能在static方法中运行
2、this可以访问当前类的属性、方法(包括构造方法)
3、super可以访问当前类的父类的属性、方法(包括构造方法)
8、多态
1、向上转型
当父类引用指向子类实例时,父类可以调用子类重写父类的方法
2、向下转型
1、当子类引用指向父类实例时,必须对父类实例进行强制转换,这时候能调用子类特有方法(但是如果父类实例并没有该方法时,编译虽然能通过,但是执行时仍会报错 — 可以用 instanceof 运算符进行判断)
3、類型轉換
不能进行兄弟类间的强制类型转换,若编写该语法,则编译不会报错,但运行过程会报错
9、抽象
1、不能被直接实例化、只能被继承
2、包含抽象方法的类一定是抽象类
3、static、final、private不能作为抽象类的抽象方法修饰符
10、接口
1、接口类中常量可以写成 “int TMP1 = 10;”
2、接口常量在定义的时候必须初始化其值
3、接口之间可以相互继承、并且可以继承多个
11、内部类
1、分类:成员内部类、静态内部类、方法内部类、匿名内部类
2、特点:
1、内部类在外部类使用时,无法直接实例化,需要借由外部类信息才能完成实例化
2、内部类的访问修饰符,可以任意,但是访问范围会受到影响
3、内部类可以直接访问外部类的方法和属性,如果出现了相同的属性,优先使用内部类定义的
4、内部类可以使用 外部类.this.成员方法/属性 的方式,访问外部类中同名的信息
5、外部类访问内部类信息,需要通过内部类实例化访问,无法直接访问
12、方法内部类
1、内部类名称不能包含public、private、protected、static关键字
13、匿名内部类
1、适用于只用一次的场景
2、匿名内部类没有类型名称、实例对象名称
3、编译后的文件命名: 外部类名$数字.class
4、无法编写构造方法、可以添加构造代码块
5、不能出现静态成员 (带final关键字的static可以用)
14、异常
1、按类型分为: 两个大类,error和exception,exception分为: check异常(SQLexception等)、uncheck异常两类 (runtime exception:内存溢出、空指针异常等)
2、异常捕获主要靠5个关键字:try catch finally throw throws

2、java进阶 (待定)
1、jvm

2、快速搭建一个spring boot项目
1、introduction

发表在 java | 留下评论

mongodb菜鸟教程

# 连接数据库
# mongo
> mongodb://admin:123456@localhost/test

# 创建数据库
# use leaseapp

# 插入数据 (存入默认表)
db.leaseapp.insert({“name”:”菜鸟教程”})

# 删除数据库
db.dropDatabase()

# 创建集合(表)
db.createCollection(“EmployeeModel”, {capped:true, size:100000})

# 查看集合(表)
show tables
或者
show collections

# 删除表
db.(表名).drop()

# 创建记录
db.EmployeeModel.insert({title: ‘MongoDB 教程2′,
description: ‘MongoDB 是一个 Nosql 数据库’,
by: ‘菜鸟教程’,
url: ‘http://www.runoob.com’,
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})

# 查看插入记录
db.EmployeeModel.find()

# 更新记录
db.EmployeeModel.update({‘title’:'MongoDB 教程’},{$set:{‘title’:'MongoDB’}})

# 替换
db.EmployeeModel.save({
“_id” : ObjectId(“5cf60689586e9b6e5f63fa4e”),
“title” : “MongoDB”,
“description” : “MongoDB 是一个 Nosql 数据库”,
“by” : “Runoob”,
“url” : “http://www.runoob.com”,
“tags” : [
"mongodb",
"NoSQL"
],
“likes” : 110
})

# 删除记录
db.EmployeeModel.remove({‘title’:'MongoDB’})

# 删除所有
db.EmployeeModel.remove({})

# 添加并给用户授权 root为最高权限
use leaseapp

db.createUser({
user:”martin”,
pwd:”123456″,
roles:[{
role:"root",
db:"admin"
},{
role:"dbAdmin",
db:"leaseapp"
}]
})

db.auth(“martin”, “123456″)

# 重启mongo服务
./mongod –auth

# 测试账号登录
mongo 127.0.0.1:27017/leaseapp -u martin -p 123456

# 更多查询

https://itbilu.com/database/mongo/EJfP_czOe.html

发表在 mongodb | 留下评论

win10增加linux+docker

https://zhuanlan.zhihu.com/p/39187620

发表在 扫盲 | 留下评论

模拟防火墙封禁

# 模拟reject
iptables -A INPUT -s 103.69.155.91 -p tcp -j REJECT –dport 80 –reject-with tcp-reset

# GET or POST
tcpdump -i eth0 -s 0 -A ‘(tcp[(tcp[12]>>2):4] = 0×47455420) or (tcp[(tcp[12]>>2):4] = 0x504f5354)’

发表在 linux | 留下评论

traceroute

https://www.zhihu.com/question/50220087

发表在 扫盲 | 留下评论

VPN:Can’t assign requested address

https://blog.csdn.net/doc_sgl/article/details/49835069

1.关闭tunnelblick

2.关闭wifi

3.运行脚本或者单独运行脚本里面的命令

4.命令执行成功后,打开wifi,打开tunnelblick,ok了。

单独运行命令的话:

sudo ifconfig en0 down
sudo route flush
sudo ifconfig en0 up
发表在 扫盲 | 留下评论

Traceroute相关资料

https://juejin.im/post/5a9c007a518825558001b05d

发表在 扫盲 | 留下评论

nc传输文件

两个网段相互间如果端口不被限制的话,可以用nc进行数据传输,但是传输之前先要判断两个ip端能够通信,对方的端口是否能够访问到

1、检测ip+端口是否能够访问:

nc -v -w 2 -z 192.168.0.100(目标IP) 20-25

# nc  -v  -w 10 %IP%   -z  %PORT%

-v  显示指令执行过程。
-w  <超时秒数>   设置等待连线的时间。
-u  表示使用UDP协议
-z  使用0输入/输出模式,只在扫描通信端口时使用。

参考: https://www.cnblogs.com/shangzekai/p/4519919.html

2、文件传输

https://blog.csdn.net/mtj66/article/details/74959287

发表在 小工具 | 留下评论

用GO+Redis实现离线IP查询功能

原理很简单:

https://www.cnblogs.com/weiguang3100/p/4342233.html

离线IP数据库文件:

https://lite.ip2location.com/database-ip-country-region-city-latitude-longitude-zipcode-timezone

GO会用到:

https://blog.csdn.net/a_ran/article/details/78875768

https://xiequan.info/%E4%BD%BF%E7%94%A8go%E8%AF%AD%E8%A8%80%E6%A0%87%E5%87%86%E5%BA%93%E5%AF%B9csv%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E8%AF%BB%E5%86%99/

Redis Sorted-Set类型操作

https://www.cnblogs.com/stephen-liu74/archive/2012/03/23/2354994.html

发表在 GO | 留下评论

charles安装指南

https://www.jianshu.com/p/468e2905a3e1

发表在 小技巧 | 留下评论