首页
斐讯设备
疯言疯语
系统运维
编程语言
网站建设
友情连接
推荐
autojs
Search
1
charles破解注册码(含windows和mac)最新安装教程「亲测有效」
40 阅读
2
【omv5安装教程二】N1盒子Armbian系统下,一条命令搞定Openmediavault(OMV5)安装
18 阅读
3
告别破解!用Aspose.Words实现Java版Word转PDF的实战指南
14 阅读
4
【N1和Armbian】一、N1刷Linux系统armbian
12 阅读
5
aris常用命令收集
12 阅读
登录
Search
标签搜索
JAVA
JAVA学习系列
docker
Linux
js
N1
git
模块二
端口
模块一
模块五
模块九
数据库
模块四
镜像
模块三
模块六
MySQL
百度网盘
nginx
DaiMaFengZi
累计撰写
588
篇文章
累计收到
9
条评论
首页
栏目
斐讯设备
疯言疯语
系统运维
编程语言
网站建设
页面
友情连接
推荐
autojs
搜索到
588
篇与
的结果
2024-06-07
[上]JAVA学习系列模块八第一章161.封装_有参构造的定义和使用
[上]JAVA学习系列模块八第一章161.封装_有参构造的定义和使用视频{bilibili bvid="BV1YT4y1H7YM" /}笔记3.2有参构造1.格式: public 类名(形参){ 为属性赋值}作用: a.new对象 b.为属性赋值特点: jvm不会自动提供有参构造,但是将有参构造手写出来,jvm将不再提供无参构造,所以建议有参,无参的构造都手写上去public class Person { private String name; private int age; //无参构造 public Person(){ System.out.println("我是无参构造"); } //有参构造 public Person(String name,int age){ this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } }如何快速知道调用的成员是哪个类中的哪个成员呢?按住ctrl不放,鼠标点击对应的成员 -> 会跳到对应的位置
2024年06月07日
0 阅读
0 评论
0 点赞
2024-06-07
[上]JAVA学习系列模块八第一章160.封装_无参构造方法的定义和使用
[上]JAVA学习系列模块八第一章160.封装_无参构造方法的定义和使用视频{bilibili bvid="BV1YT4y1H7YM" /}笔记构造方法1.概述:方法名和类名一致并且能初始化对象的方法分类: a.无参构造:没有参数 b.有参构造:有参数,参数是为指定的属性赋值 c.满参构造:给所有属性赋值 以上构造咱们不用记那么详细,我们就记有参和无参构造就可以了特点: a.方法名和类名一致 b.没有返回值,连void都没有3.1空参构造1.格式: public 类名(){}作用: new对象使用特点: 每个类中默认都有一个无参构造,不写也有,jvm会自动提供使用:一new对象就是在调用构造方法
2024年06月07日
0 阅读
0 评论
0 点赞
2024-06-07
[上]JAVA学习系列模块八第一章159.封装_this关键字在set方法中的使用
[上]JAVA学习系列模块八第一章159.封装_this关键字在set方法中的使用视频{bilibili bvid="BV1YT4y1H7YM" /}2.this的介绍1.如果成员变量和局部变量重名时,我们遵循"就近原则",先访问局部变量this概述:代表的是当前对象作用:this可以区分重名的成员变量和局部变量 this点出来的一定是成员的变量this代表当前对象,那么具体代表哪个对象呢? 哪个对象调用的this所在的方法,this就代表哪个对象public class Person { String name; /* 哪个对象调用的this所在的方法,this就代表哪个对象 */ public void speak(String name){ System.out.println(this+"........"); System.out.println(this.name+"您好,我是"+name); } }public class Test01 { public static void main(String[] args) { Person person = new Person(); System.out.println(person+"========="); person.name = "沉香"; person.speak("刘彦昌"); System.out.println("=========="); Person person2 = new Person(); System.out.println(person2+"+++++"); person2.name = "奥特曼"; person2.speak("奥特曼之父"); } }
2024年06月07日
1 阅读
0 评论
0 点赞
2024-06-07
[上]JAVA学习系列模块八第一章158.封装_get&set方法的使用
[上]JAVA学习系列模块八第一章158.封装_get&set方法的使用视频{bilibili bvid="BV1YT4y1H7YM" /}笔记2.问题:属性被私有化了,外界直接调用不了了,那么此时属性就不能直接赋值取值了,所以需要提供公共的接口 get/set方法 set方法:为属性赋值 get方法:获取属性值public class Person { private String name; private int age; //为name提供get/set方法 public void setName(String xingMing) { name = xingMing; } public String getName() { return name; } //为age提供get/set方法 public void setAge(int nianLing) { if (nianLing < 0 || nianLing > 150) { System.out.println("你脑子是不是秀逗啦!岁数不合理"); } else { age = nianLing; } } public int getAge() { return age; } }public class Test01 { public static void main(String[] args) { Person person = new Person(); //person.name = "涛哥"; //person.age = -18; //System.out.println(person.name); //System.out.println(person.age); person.setName("涛哥"); person.setAge(18); String name = person.getName(); int age = person.getAge(); System.out.println(name+"..."+age); } }小结:用private将属性封装起来,外界不能直接调用,保护了属性对外提供一套公共的接口(set/get方法),让外界通过公共的接口间接使用封装起来的属性
2024年06月07日
1 阅读
0 评论
0 点赞
2024-06-07
[上]JAVA学习系列模块八第一章157.封装_private的使用
[上]JAVA学习系列模块八第一章157.封装_private的使用视频{bilibili bvid="BV1YT4y1H7YM" /}笔记1.问题: 定义成员变量,只要是new出来对象,就可以随便调用,随便赋值,哪怕是不合理的值我们也挡不住,怎么办? 将属性封装起来(隐藏细节)a.关键字:private(私有化的) -> 被private修饰的成员只能在本类中使用,在别的类中使用不了b.注意:将代码放到一个方法中,也是封装的体现 一个成员被private修饰也是封装的体现,只不过private最具代表性 c.private的使用:修饰成员变量:private 数据类型 变量名 修饰方法:将public改成private,其他的都一样
2024年06月07日
1 阅读
0 评论
0 点赞
2024-06-07
[上]JAVA学习系列模块八第一章156.封装_介绍
[上]JAVA学习系列模块八第一章156.封装_介绍视频{bilibili bvid="BV1YT4y1H7YM" /}笔记将一个物品封装起来,外界不能直接使用了,提高了物品的安全性1.封装的介绍以及使用1.面向对象三大特征: [封装] 继承 多态什么是封装思想: a.我们找来了一个对象(洗衣机),只需要按一下按钮就可以了(使用洗衣机功能的过程就是在使用面向对象思想编程的过程),每一个按钮下面都包含了很多内部结构的细节(细节被封装到按钮里面了->封装),在使用的时候有必要了解洗衣机的内部构造吗?我们没有必要去了解内部结构,我们只知道调用就可以了所以,洗衣机来说,将细节隐藏起来了,细节我们不要关注,会对外提供了一个公共的接口(按钮),供我们人类使用 b.隐藏对象内部的复杂性,只对外提供公开,公共的接口,便于外界调用,从而提高了系统的可扩展性,可维护性,安全性,通俗来说,把该隐藏的隐藏起来(细节),把该暴露的暴露出来(对外提供的供别人使用的接口),这就是封装思想 我们只需要调用这个接口(功能)即可,此接口背后封装起来的细节就开始执行了,但是我们不需要关注细节,只关注公共的接口怎么调用c.将细节隐藏起来,不让外界随便使用,但是我们可以提供一个公共的接口让外界间接使用隐藏起来的细节->封装思想
2024年06月07日
2 阅读
0 评论
0 点赞
2024-06-04
Rsync+Inotify 实现数据同步,双向同步,单向同步
基本了解什么是rsync?与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!什么是inotify?Inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。在上面章节中,我们讲到,rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。rsync+inotify同步逻辑图环境准备服务器类型IP地址应用操作系统源服务器(数据源服务器),客户端192.168.130.161rsync inotify-tools 脚本centos7/redhat7目标服务器(备份服务器),服务端192.168.130.160rsynccentos7/redhat7重要提示关闭服务端和客户端的防护墙(不是必须,可以开放端口)、selinux(必须)。 #临时关闭 setenforce 0 #长久关闭---使用此方法。需要重启生效。所以可以先执行上面那句,再执行这句。就暂时可以不重启,先配置 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config如果未关闭,会提示错误:rsync: failed to set times on "." (in backup): Permission denied (13) rsync: recv_generator: failed to stat "ccc" (in backup): Permission denied (13)目标服务器(备份服务器),服务端一:安装rsycn在Centos上只要一句代码而已,其他系统自己找。yum install -y rsync二:添加配置文件参数。[root@server ~]# vim /etc/rsyncd.conf ##日志文件位置. log file = /var/log/rsyncd.log ##pid文件的存放位置 pidfile = /var/run/rsyncd.pid ##支持max connections参数的锁文件 lock file = /var/run/rsync.lock ##用户认证配置文件,用于保存用户名称和密码,必须手动创建 secrets file = /etc/rsync.pass #自定义同步资源名称。 [qingjun] #rsync服务端数据存放路径,客户端的数据将同步至此目录 path = /tmp/ comment = sync runtime from client #设置rsync运行权限为root uid = 0 #设置rsync运行权限为root gid = 0 #默认端口 port = 873 #表示出现错误忽略错误 ignore errors #默认为true,修改为no,增加对目录文件软连接的备份 use chroot = no #设置rsync服务端为读写权限 read only = no #不显示rsync服务端资源列表 list = no #最大连接数 max connections = 200 #设置超时时间 timeout = 600 #执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开 auth users = admin #允许进行数据同步的源服务器IP地址,可以设置多个,用英文状态下逗号隔开 hosts allow = 192.168.0.0/24三:创建用户认证文件,设置文件权限为600。echo 'admin:123456' > /etc/rsync.pass chmod 600 /etc/rsync.pass 四:启动服务,设置开机自启。systemctl enable rsyncd systemctl start rsyncd五:验证是否监听端口ss -antl源服务器(数据源服务器),客户端一:安装rsycn在Centos上只要一句代码而已,其他系统自己找。yum install -y rsync二:配置epel源,安装inotify-tools服务。wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo #################################### wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel* sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel* ####################################### yum -y install inotify-tools二:创建认证密码文件,只需写密码,设置文件权限为600。echo '123456' > /etc/rsync.pass chmod 600 /etc/rsync.pass三:创建同步目录runtime。mkdir /runtime四:进入同步目录创建文件,开始同步。rsync -avH --port 873 --progress --delete /runtime admin@192.168.130.160::qingjun --password-file=/etc/rsync.pass 说明: rsync -avH --port 873 --progress --delete 源服务器需要同步到其他服务器的目录 admin@同步到哪个服务器IP::上面定义的同步模块 --password-file=/etc/rsync.pass五:服务端查看结果。六:自动同步- 1.写个脚本,给脚本设置开机启动执行。 #!/bin/bash host=192.168.130.160 src=/runtime des=qingjun password=/etc/rsync.pass user=admin inotifywait=/usr/bin/inotifywait $inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \ | while read files;do rsync -avzP --delete --timeout=100 --password-file=${password} $src $user@$host::$des echo "${files} was rsynced" >>/tmp/rsync.log 2>&1 done保存上面脚本到你想存放的目录,这边就存放到了opt目录下- 2. 后台执行脚本。nohup bash /opt/qingjun.sh &- 3. 添加到rc.local,实现开机自动启动这个脚本OK完美收工!
2024年06月04日
3 阅读
0 评论
0 点赞
2024-06-03
Linux 定时备份文件到另一台服务器
1. 需求用户要求将 Tomcat 的日志文件定时备份到另一台服务器。同事给我提供了一个写好的 java 框架,但实在不想给用户再维护另一个服务了,所以另寻他法。2. 问题使用 scp 等跨服务器传输命令时需要手动输入用户名的密码才可进行文件传输,定时任务会卡在这个节点上。3. 解决方案- 使用 crond 服务设置定时任务。 - 使用 sshpass 跳过手动输入密码过程。 - 使用 scp 命令传输文件。 3.1 crond 服务3.1.1 cron 表达式# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed3.1.2 crond 服务涉及命令# 编辑当前用户的cron表达式文件 crontab -e # 启动服务 /sbin/service crond start # 关闭服务 /sbin/service crond stop # 重启服务 /sbin/service crond restart # 重新载入配置 /sbin/service crond reload # 查看服务状态 service crond status3.2 sshpass + scp# 工具安装 yum install sshpass -y # 命令格式 # -p password 提供密码作为参数(安全性不明智) sshpass -p password scp -r -o StrictHostKeyChecking=no source_directory username@destination_ip:destination_directory # 示例 sshpass -p 123456 scp -r -o StrictHostKeyChecking=no /root/test.txt root@192.168.21.1:/root/其他问题你会发现执行命令之后无反应?可以添加下面代码可以添加-o StrictHostKeyChecking=no选项【表示远程连接时不提示是否输入yes/no】参考几种方法来实现scp拷贝时无需输入密码附上写的一键备份达梦数据库的脚本本地下载2024060308552755{cloud title="蓝奏网盘" type="lz" url="https://daimafengzi.lanzout.com/idnfL20q26gd" password=""/}{cloud title="天翼网盘(访问码:5qie)" type="default" url="https://cloud.189.cn/web/share?code=RjMrIjzMzMVf" password=""/}
2024年06月03日
1 阅读
0 评论
0 点赞
1
...
18
19
20
...
74