群晖docker部署甜糖星愿
起因从恩山论坛上看到甜糖官方提供了甜糖星愿的x86版本Docker镜像,加上最近收益基本为0,决定重新部署一下甜糖。
创建macvlan首先 创建一个macvlan网络
1docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=ovs_eth0 bridge-host
创建容器ttnode uid 由 mac 地址和 hostname 决定,mac 地址和hostname 不变,ttnode uid 才能不变。mac 地址是主机地址了,所以指定 hostname 给容器,就可以固定 uid 了。注意ip 和mac-address地址不能重复!
1234567891011docker run -d -v /volume1/ttnode/cache:/mnt/data/ttnode/.yfnode/cache \ -v /var/run/docker.sock:/var/run/docker.sock \ --name ttnode \ --hostname t ...
Docker部署MQTT服务mosquitto
简介MQTT是什么MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
Mosquitto是什么Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本5.0, 3.1.1和 3.1 。Mosquitto轻量,适用于低功耗单板计算机到完整服务器的所有设备。Mosquitto项目还提供了用于实现MQTT客户端的C库以及非常受欢迎的mosquitto_pub和mosquitto_sub命令行MQTT客户端。
Community page: http://mqtt.org/
MQTT v3.1.1 standard: https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
MQTT v5.0 standard: https://docs.oasis-open ...
Caddy2 踩坑指北
前言利用这个国庆假期,将威盒网站+服务端迁移到新的服务器上。全部服务容器化,利用Docker进行部署。
网站由于多年前网站全部使用php编写,除了不同的网站需要的php版本不同外,没有什么坑。使用webdevops/php-nginx镜像进行部署。这个镜像有有比较详细的文档可以直接通过环境变量修改配置文件中的关键内容主要的环境变量配置:WEB_DOCUMENT_INDEX 覆盖nginx配置文件中index配置项WEB_DOCUMENT_ROOT 覆盖nginx配置文件中ROOT配置项
一个容器配置一个网站。使用Docker-compose来管理所有的容器(别问我为啥不用k8s,访问量没这么大)
Caddy2本次使用Caady2进行反向代理,由Caddy2吧不同的域名转发到不同的容器中。同时Caddy2自动进行ssl证书的申请和续期。但是!caddy2最低支持TLS1.2协议!这里就为下面留下了坑。贴一下Caddyfile例子
12345store.vlabpro.com { reverse_proxy localhost:xxxx { header_up X-Re ...
群辉套件重启命令
1cd /var/packages/
1synoservice --restart pkgctl-VPNCenter
JAVA学习笔记8集合
概述:List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口Set下有HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap,TreeMapCollection接口下还有个Queue接口,有PriorityQueue类
JAVA学习笔记7内部类
内部类的含义在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。
作用
实现了更好的封装,我们知道,普通类(非内部类)的访问修饰符不能为private或protected,而内部类可以。当我们将内部类声明为private时,只有外部类可以访问内部类,很好地隐藏了内部类。
内部类可以继承(extends)或实现(implements)其他的类或接口,而不受外部类的影响。
内部类可以直接访问外部类的字段和方法,即使是用private修饰的,相反的,外部类不能直接访问内部类的成员。
内部类在编译后也会生成一个class文件,文件名为:外部类名$内部类名.class
分类Java内部类可分为成员内部类、局部内部类、匿名内部类、静态内部类。
成员内部类定义在外部类的成员(属性、方法)位置可以使用四种访问权限修饰符修饰内部类可以在内部类的内部定义属性和方法注意:内部类不允许有静态成员
成员内部类的访问权限成员内部类前可加上四种访问修饰符。private:仅外部类可访问。protected:同包下或继承类可访问。default:同包下可访 ...
JAVA学习笔记6子类和父类的强制转换
子类强转父类父类引用指向子类对象:在java语言中子类强转父类,实际上依然是子类;该引用只能调用父类中定义的方法和变量;如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法。
1234567891011121314151617// A是父类,B是子类A a = new A();a.setName("a1");a.sayA(); // sayAB b = new B();b.setName("b1");b.setSex(true);b.sayA(); // sayA from Bb.sayB(); // sayB// Java中的对象进行类型提升,依然保持其原有的类型。A a2 = (A) b; // 子类强转父类,其实仍然是子类System.out.println(a2.toString()); // B [name=b1, age=0, sex=true]// 该引用只能调用父类中定义的方法和变量; // a2.sayB(); // The method sayB() is undefined for the t ...
JAVA学习笔记5抽象类和接口
抽象(abstract)抽象(abstract)当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。我们都知道,父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化。这样,抽象类也就诞生了。
用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法。
抽象方法和抽象类所以,抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。1.抽象类与抽象方法的关系是:抽象方法必须在抽象类中,如果抽象方法不在抽象类中,则会编译报错,这个是规定的。2.抽象类中的方法不一定要必须是抽象方法,可以有抽象方法,和非抽象方法。其中非抽象方法,往往都是抽象类的所有子类所具有的,而抽象方法则由具体的不同子类实现不同的方法
抽象方法不能有方法主体。格式如下:1abstract void xxx();
抽象类不能被实例化。因为抽象类中方法未具体化,这是一种不完 ...
JAVA学习笔记4初始化代码块及类变量
初始化代码块初始化代码块分为静态初始化代码块和非静态初始化代码块。当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。这些初始化代码块起到了类的构造方法的作用,当无参实例化一个类的对象时,完全可以用代码块代替构造方法的位置。非静态初始化块隐性运行于创建类的对象时,顺序依据代码块的先后排列,且这些代码块间可以存在其他方法。也就是说在实例化这个对象时,会从类的头到尾检索一遍来运行初始化代码块。
静态初始化代码块创建对象,或者调用静态方法或属性时执行静态代码块不管多少对象只执行一次静态初始化代码块在非静态代码块之前执行静态代码块多用于容器的连接
类变量使用static修饰符修饰的实例变量叫做类变量,也叫做静态变量实例变量和类变量统称为属性
类变量不在属于这个类的某个对象,而是所有的类共享类变量。也就是说类变量属于类不属于对象
JAVA学习笔记3继承和多态
继承定义继承就是在原有的类(父类)的基础上,增加新的方法或者修改原有的方法,产生的新的类型(子类)。我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类、超类),如果我们新定义的一个类没有明确地指定继承自哪个基类,那么JAVA就会默认为它是继承自Object类的。
类的分类类:使用class定义且不含有抽象方法的类。抽象类:使用abstract class定义的类,它可以含有,也可以不含有抽象方法。接口:使用interface定义的类。
类的继承规则类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。抽象类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。接口只能继承(extends)接口。普通类继承接口后,必须实现接口的全部方法,否则只能定义成抽象类
以上三条规律同时遵守下面这些约束:
类和抽象类都只能最多继承一个类,或者最多继承一个抽象类,并且这两种情况是互斥的,也就是说它们要么继承一个类,要么继 ...

