n1 openwrt docker安装宝塔面板5.9

docker run  --name webServer  -it  --network=host   azking/arm64_bt59_lnmp  bash /www/init.sh

面板登陆地址:http://192.168.x.x:9999
镜像内容: arm64架构|centos|宝塔5.9|php5.6|php7.1|mysql5.5|nginx|ftp

     面板端口: 9999  
     账号: btadmin  
     密码: azking/baota59
     phpmyadmin端口: 999
     网站默认端口: 81 (防止和路由器 openwrt自身80端口冲突).

这样就可以直接食用了。

建议切换到国内源不然很慢

docker ps
docker exec -it 775c7c9ee1e1 /bin/bash  

openwrt扩容导出根目录到u盘

usb.sh:

mkdir -p /tmp/introot && 
mkdir -p /tmp/extroot && 
mount --bind / /tmp/introot && 
mount /dev/sda1 /tmp/extroot && 
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf - && 
umount /tmp/introot && 
umount /tmp/extroot && 
echo "success"
nohup sh usb.sh > log_out.txt 2>&1 & 

查看执行日志:

tail -f log_out.txt

/etc/fstab 只读无法修改的解决办法

重新挂载为读写文件系统

 mount -o remount,rw / 

修改/etc/config/fstab文件

删除默认的mount信息


config global
    option anon_swap '0'
    option anon_mount '1'
    option auto_swap '1'
    option auto_mount '1'
    option delay_root '5'
    option check_fs '0'

config mount
    option target '/rom'
    option uuid '1f045de8-469f-4786-9614-85ebdf19b519'
    option enabled '0'

config mount
    option target '/mnt/mmcblk2p3'
    option uuid '7df14b19-6e49-4532-bda7-8901e5388e36'
    option enabled '1'

config mount
    option target '/mnt/mmcblk2p4'
    option uuid 'c48f430a-443e-4992-9424-e575f1e1f159'
    option enabled '1'

config mount
    option target '/'
    option uuid 'e5e198c0-53ee-407a-b2a2-a0fc98d68715'
    option enabled '1'

config mount
    option enabled '1'
    option uuid 'e5e198c0-53ee-407a-b2a2-a0fc98d68715'
    option target '/opt'

config mount
    option enabled '1'
    option uuid 'e5e198c0-53ee-407a-b2a2-a0fc98d68715'
    option target '/overlay'

设置显示从哪里启动的:

echo Booted from internal rom >> /etc/banner

docker根目录设置

openwrt根目录扩容

例如当前 U 盘挂载点为 /dev/sda,先执行卸载命令:umount /dev/sda

  1. 格式化U盘为 EXT4 格式,输入命令:mkfs.ext4 -m 0 /dev/sda
  2. 复制当前 OpenWrt 系统至 U 盘,依次执行下列命令:

创建导入目录,用于将 OpenWrt 绑定挂载至此目录中。

mkdir -p /tmp/introot

创建导出目录,用于将 U 盘挂载至此目录,以复制系统文件至 U 盘中。

mkdir -p /tmp/extroot

将根目录绑定至导入目录。

mount --bind / /tmp/introot

将 U 盘挂载至导出目录。

mount /dev/sda /tmp/extroot

将整个 OpenWrt 系统复制到导出目录。

tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -

卸载导入目录。

umount /tmp/introot

卸载导出目录。

umount /tmp/extroot

打开“系统”-“挂载点”界面,点击下方“挂载点”区域内的“添加”按钮,手动配置挂载信息,然后“保存并应用”,如图所示。

最后重启系统即可,路由器会自动从 U 盘加载启动,再查看软件包界面就会显示成 U 盘的容量。

完毕!

备注:

为了便于区分是从设备的ROM启动还是U盘启动。可以对U盘上的/etc/banner文件末尾添加Boot From USB!这样再设备启动时候或者telnet进去的时候可以看到此banner。

CompareTO(Object o)方法的重写及其用于排序的原理

CompareTo()方法是java.lang.Comparable接口的一个抽象方法。
其方法的主要作用是根据依据比较 对象的大小,比如Integer型,比较的是数值的大小,String形等,
调用这个方法的对象比 形参对象大的话返回 1 比形参小的话 返回 -1 等于 形参的话 返回 0
根据返回的值就可以确定两个对象的大小 进而进行排列。
注:当在重写CompareTo()方法比较String 等非数值类型属性的大小时。我们可以直接借用String 方法中的 CompareTo()方法来比较。
向TreeSet中添加元素时,首先按照compareTo的方法进行比较,一旦返回0,虽然仅是两个对象的此属性
值相同,但是程序扔会认为这个对象是相同的,进而后一个对象进不来。
如:

public int compareTo(Object o){
            if(o instanceof Person){
            Person p = (Person)o;
            return this.name.compareTo(p.name);//这里就借用String中的CompareTo()方法来比较String类型的
                                                //的大小
            }
            return 0;
            }

所以我们要比较另一个属性的大小

public int compareTo(Object o) {
        if(o instanceof Person) {
            Person p = (Person)o;
            int i =  this.name.compareTo(p.name);
            if(i == 0) {
                return this.age.compareTo(p.age);
                
            }else {
                return i;
            }
            }return 0;
            
        
    }
    

}

微信小程序实现公告自动滚动效果

<!-- 公告 start-->
<view class='notice'>
  <view class='notice-contain'>
    <text class="cuIcon-notificationfill text-red"></text>
    <view class="notice-containTitle">公告栏</view>
    <swiper class="tab-right" vertical="true" autoplay="true" circular="true" interval="2000" display-multiple-items='1'>
      <view class="right-item">
        <block wx:for="{{msgList}}">
          <swiper-item>
            <view class='content-item'>
              <view class="swiper-item text-red text-bold">{{item.title}}</view>
            </view>
          </swiper-item>
        </block>
      </view>
    </swiper>
  </view>
</view>
<!-- 公告 end -->
/* 公告栏 */
.notice {
  display: flex;
  justify-content: center;
  align-items: center;
  /* margin-top: 10rpx */
}

.notice-contain {
  box-shadow: 0px 1px 1px 1px rgba(202, 199, 199, 0.993);
  display: flex;
  flex-direction: row;
  background: #FFFFFF;
  width: 700rpx;
  height: 82rpx;
  border-radius: 10px;
  justify-content: center;
  align-items: center;
}

.notice-containTitle {
  font-weight: bold;
  font-size: 32rpx;
  position: relative;
  /* top: 0; */
  left: 14rpx;
}

.notice-containTitle::after {
  position: absolute;
  top: -4rpx;
  left: 110rpx;
  content: "";
  display: block;
  background: #AAAAAA;
  width: 2px;
  height: 54rpx;
}

.tab-right {
  height: 55rpx;
  width: 80%;
  line-height: 55rpx;
  padding-left: 70rpx;
}

.swiper-item {
  font-size: 28rpx;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  letter-spacing: 2px;
}
 msgList: [{
      title: "视频无水印解析免费无限次使用~"
    }, {
      title: "视频无水印解析免费无广告使用~"
    }]