🐬MySQL数据库高级管理---备份恢复

参考教材: MySQL数据库技术与应用 张素青、翟慧、黄静 ○ 主编 数据库的备份和恢复 数据库的备份 直接在命令行执行,而不用登录MySQL数据库 备份单个数据库: mysqldump -u username -h host -p dbname [tbname1,tbname2,….] > filename.sql 备份多个数据库 mysqldump -u username -h host -p –databases dbname1 [dbname2 dbname3 …] > filename.sql 备份所有数据库 mysqldump -u username -h host -p –all-databases > filename.sql username: 用户名 (root … host: 主机名 (localhost… tbname: [tbname1,tbname2,….] 参数若缺省代表备份整个数据库 可以直接在命令行输入密码 -p123456 (-p和密码之间不能有空格),-p单独使用回车后会要求用户输入密码 > 重定向符号 ,重定向输入到 filename.sql filename.sql 备份后的文件名 –databases 后边 至少要指定一个数据库 多个数据库用空格隔开 ...

July 3, 2024 · 1 min · Yalois

🐻‍❄️给Bear主题加一个文章分页

前言 记得hugo是有官方的文章分页的,但是我这个主题没有,我也不想去研究怎么使用,直接自己造一个,折腾一下!改! 之前我改过很多次了,直接找到目录,MyBlog\themes\bearblog\layouts。 目录下的文件就是网页的框架(模板。 hugo是go开发的所以是go模板(go html template)。 我对go不太熟悉,然后问了好多次GPT,也学到了不少关于go的东西。 下面直接说我的思路吧。 问题思考 本来的主题是直接一个ul列表,我需要按指定数量给分页。 本来是想要在hugo生成静态文件的时候,10个一页,然后给每一页生成一个html文件, 比如/blog/1.html和/blog/2.html 分别代表第一页目录和第二页目录,然后点下一页的时候跳转,但是这样有些丑陋。还有就是我不会… 看了看别人的博客案例,大概都是hugo在生成静态文件的时候,为每一页专门分一个目录,比如 /page/1/文章xxx /page/2/文章xxx 大概率和主题有关,我的网站目录结构默认不是这样的( 如果是这样可能就有分页功能了, 我的博客文章的链接直接就是/blog/xxx。 在简の单的思考了之后,✨一个想法在我脑中浮现, 生成出所有目录页,都放在一个页面,然后根据css display:none 来隐藏和显示某一个目录页。 比如我有10个文章,3个分一页 我能分4页。 本来网站上只有一个ul来显示目录,现在我3个文章生成一个目录。 ---- <ul>目录</ul> ---- --- <ul>目录1</ul> 显示 <ul>目录2</ul> 隐藏 <ul>目录3</ul> 隐藏 <ul>目录4</ul> 隐藏 --- 然后轮流隐藏显示。 代码 用VSCode读代码找到了\themes\bearblog\layouts\_default\list.html这个文件是目录模板文件, 原来的目录生成代码如下 <ul class="blog-posts"> {{ range .Pages }} <li> <span> <i> <time datetime='{{ .Date.Format "2006-01-02" }}' pubdate> {{ .Date.Format (default "02 Jan, 2006" .Site.Params.dateFormat) }} </time> </i> </span> <a href="{{ .Permalink }}">{{ .Title }}</a> </li> {{ else }} <li> No posts yet </li> {{ end }} </ul> 原来是直接遍历Pages来生成一个列表。我就需要在这里进行魔改。 ...

July 1, 2024 · 2 min · Yalois

✒️Vim基础使用学习

Tips: 光看不练可不行,多操作几遍,把常用的操作记下来。 参考url 知乎学习地址 b站学习视频 vim的三种模式(状态) 命令模式(Command mode) 插入模式(Insert mode) 尾行模式(Last line mode) 命令模式下的指令 文本插入命令 i:在光标所在字符前开始插入 a:在光标所在字符后开始插入 o:在光标所在行的下面另起一行插入 s:删除光标所在的字符并开始插入 I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入 A:在光标所在行的行尾开始插入 O:在光标所在行的上面另起一行开始插入 S:删除光标所在行并开始插入 光标操作命令 单个字符移动: h: 向左移动 l: 向右移动 j: 向下移动 k: 向上移动 xh: 向左移动x个字符距离 (hjkl都能用) 输入数字后会在最下面显示数字 $: 将光标移动到当前行的行尾 0: 将光标移动到当前行的行首 ^: 将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置) 2|: 移到当前行的第2列 fx: 将光标移动到当前行的第一个字符x上 3fx: 将光标移动到航前行的第3个字符x上 tx: 将光标移动到目标字符x的前一个字符上 fx和tx可以通过;和,进行重复移动,一个是正向重复,一个是反向重复 %: 用于符号间的移动,它会在一对()、[]、{}之间跳跃 Ctrl+f 向前翻页 forward Ctrl+b向后翻页 backward Ctrl+u向上翻半页 Ctrl+d向下翻半页 G:快速跳转到文件的最后一行 gg:跳转到文件第一行 100G:跳转第100行 (:50到五十行一样效果) 文本操作命令 yy 复制一行内容 ...

June 29, 2024 · 1 min · Yalois

🏹Java学习之RMI远程调用

在学习序列化的时候发现了一个东西叫RMI,来学习一下 概念 远程调用 RMI(Remtoe Method Invocation) 顾名思义就是本地JVM通过网络远程调用另一个JVM上的某个方法。采用客户端/服务器通信方式(C/S)。需要在服务器上部署提供服务的远程对象,然后在客户端请求访问服务器上远程对象的方法。 RMI框架采用代理(Proxy)来负责客户端和服务端之间通信的细节。RMI框架分别生成了客户端代理和服务端代理。位于客户端的代理被称为存根(Stub),位于服务端的代理类被称为骨架(Skeleton)。 存根(Stub): 客户端调用远程对象时,实际上是通过本地代理对象(Stub)来进行的。Stub负责将方法调用转发到远程对象。 骨架(Skeleton): 位于服务端的代理对象,用于接受来自客户端的请求,并将请求转发给实际的远程对象。 使用流程 1.创建远程接口 远程接口,需要直接或者间接的继承Remote(java.rmi.Remote)接口,远程接口声明了可以被客户端访问的远程方法。而且接口中的方法都要抛出RemoteException(java.rmi.RemoteException)异常。 这里实现了一个求和方法。 import java.rmi.Remote; import java.rmi.RemoteException; interface HelloServer extends Remote { public int Sum(int a,int b) throws RemoteException; } 2.创建远程类 远程类用于实现远程接口。为了使远程类的实例能够提供服务,还需要把它导出为远程对象。有下面两种途径: 子类化UnicastRemoteObject import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; class HelloServerImpl extends UnicastRemoteObject implements HelloServer{ //远程类的构构方法必声明抛出RemoteException异常 public HelloServerImpl() throws RemoteException{ } @Override public int Sum(int a, int b) throws RemoteException { return a+b; } } 调用exportObject方法(如果远程类已经继承了其他类,无法继承UnicastRemoteObject。) import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; class HelloServerImpl [extends OtherClass] implements HelloServer{ public HelloServerImpl() throws RemoteException { //端口0代表监听任意一个匿名端口 UnicastRemoteObject.exportObject(this, 0); } @Override public int Sum(int a, int b) throws RemoteException { return a+b; } } 3.创建服务器程序 RMI有一个注册表,注册表将一个名称映射到远程对象。 服务器使用注册表注册其远程对象,以便可以查找它们。 客户端想要调用远程对象上的方法时,它必须首先使用其名称查找远程对象。 ...

June 13, 2024 · 2 min · Yalois

🍵Java对象的序列化和反序列化

知道了PHP的序列化,我竟然不会Java序列化,学! 先学个单词 Serialize v.序列化 英 [ˈsɪəriəlaɪz] 美 [ˈsɪriəlaɪz] 什么是对象的序列化 在Java中,序列化是指将对象转换为字节流的过程。序列化可以实现对象的持久化,转为字节流之后可以将其保存到文件、数据库或者在网络中传输。 **那什么是持久化呢?**持久化就是将内存中的数据保存起来使它能够长期存在。比如我把某个Java对象保存到本地的一个文件,下次使用的时候再反序列化出来用。 反序列就是逆过程,把字节流转化为对象。使字节流在内存中重新创建一个实际的Java对象。 下面是一个例子,不能说看完例子就学会实例化了,写代码的时候往往有很多情况和细节,这时候就需要多写一写代码,多思考了。(这是我对自己说的)不要只看文章前面 Java代码实现(例子) //代码由GPT提供 import java.io.*; // 定义一个可序列化的类 class Person implements Serializable { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } } public class SerializationExample { public static void main(String[] args) { Person person = new Person("Alice", 30); // 序列化对象 try { FileOutputStream fileOut = new FileOutputStream("person.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(person); out.close(); fileOut.close(); System.out.println("对象已序列化并保存到person.ser文件中"); } catch (IOException e) { e.printStackTrace(); } // 反序列化对象 try { FileInputStream fileIn = new FileInputStream("person.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); Person deserializedPerson = (Person) in.readObject(); in.close(); fileIn.close(); System.out.println("从person.ser文件中反序列化对象:" + deserializedPerson.name + " " + deserializedPerson.age); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } } 对象流 ObjectInputStream类和ObjectOutputStream类创建的对象称为对象输入流和对象输出流。 ...

June 11, 2024 · 3 min · Yalois