MySQL 中 KEY vs PRIMARY KEY vs UNIQUE KEY vs INDEX 的区别

对于标题中提出的问题,可以拆分来一步步解决。先来区分 MySQL 中的 KEY 和 INDEX ,之后问题就可以简化为 PRIMARY KEY,UNIQUE KEY 和 INDEX 的区别。而这三者也正好是索引的划分,主键索引,唯一索引和普通索引(INDEX)。 INDEX 可以用来提高数据库中查询数据的速度。INDEX 通常加在那些 JOIN, WHERE,和 ORDER BY 子句的列上。创建索引时,需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记 Read more ...

2017-07-24 mysql , linux , key , index

树莓派中安装MySQL 5.7

最近用到 MySQL 5.7 把所有设备上的 MySQL 版本都升级到了最新,在 Ubuntu/Debian 上升级MySQL 5.7 的内容可以在之前的文章看到。现在记录一下树莓派中升级 MySQL 的步骤。使用到 MySQL 5.7 主要也是因为其支持的新数据类型,之前项目用到了,迁移的时候会遇到问题。在网上寻找解决方案的时候遇到了一个和我遭遇差不多的,需要使用到 MySQL 5.7+ 才支持的 JSON data-type。 在 respberry pi 官方的源中,只有稳定版的 5.5 MySQL,如果要用到最新的版本只能够自己手动编译更新安装 Read more ...

2017-07-23 MySQL , Linux , RespberryPi

每天学习一个命令:使用 rsync 增量同步备份文件

rsync 全名 Remote Sync,是类 UNIX 系统下的数据镜像备份工具。可以方便的实现本地,远程备份,rsync 提供了丰富的选项来控制其行为。rsync 优于其他工具的重要一点就是支持增量备份。 rsync - a fast, versatile, remote (and local) file-copying tool rsync 是一个功能非常强大的工具,其命令也有很多功能选项,它的特性如下: 可以保持文件原来的权限、时间、所有者、组信息、软硬链接等等 可以从远程或者本地镜像保存整个目录树和文件系统 无须特殊 Read more ...

2017-07-22 linux , rsync , scp , sync , command

终端复用工具 Tmux 使用介绍

Tmux 是一个很棒的终端复用工具,和 screen 命令类似,但是 Tmux 终极的分屏功能要比 screen 强大很多,当然入门也比 screen 要高很多。如果你长时间在终端进行编程或者操作,或者你陷入无数的 Tab 而无法自拔,那么你应该需要开始了解一些 Tmux 的基本使用。 本文会从如下几个方面对 Tmux 进行介绍: Tmux 基本使用 Tmux 的基本模块 Windows Panes Sessions Tmux 主要包括以下几个模块: session Read more ...

2017-07-21 tmux , linux , command , screen , terminal

将 MySQL 升级到 5.7

这些天折腾 Django 的时候用到了 MySQL,然而本地和VPS 上使用的版本不一致,本地使用了 5.7 版本,而 VPS 上使用了 5.5 的老版本,在数据迁移的时候遇到了 5.5 版本下不支持 DATETIME(6) 这样的数据类型。 DATETIME(6) 用来保存精确到微秒的时间。 环境: 系统:Debian 7, 按道理 Ubuntu/Debian 系应该都可以 无奈只能升级 MySQL 到 5.7 , 结果也比较顺利,官方有很详细 的升级说明: wget http://dev.mysql.com/get/mysql-apt-con Read more ...

2017-07-20 MySQL , Linux

Java 查漏补缺之 class

Java 程序在运行时,Java 运行时系统一直对所有的对象进行所谓的运行时类型标识。Class 类封装一个对象和接口运行时的状态,当装载类时,Class 类型的对象自动创建。 Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个 Class 对象。 虚拟机为每种类型管理一个独一无二的 Class 对象。也就是说,每个类(型)都有一个 Class 对象。运行程序时,Java 虚拟机 (JVM) 首先检查是否所要加载的类对应的 Class Read more ...

2017-07-17 java , linux , class , reflection

Docker 入门

Docker 是一个能够把开发环境的应用程序自动部署到容器的开源引擎。该引擎的目标是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。 Docker 使用客户端 - Read more ...

2017-07-16 docker , linux , 容器 , 虚拟化

Google Guava 库学习笔记

Guava 是 Google 开源的 Java 核心类库,包含了 Java 开发中众多的核心功能,其中最著名最好用的也就是合集和缓存相关的工具了。 Guava 有很多学习材料,比如官方 Wiki https://github.com/google/guava/wiki 源码包的简单说明:   com.google.common.annotations:普通注解类型。   com.google.common.base:基本工具类库和接口。   com.google.common.cache:缓存工具包,非常简单易用且功能强大的 JVM 内缓 Read more ...

2017-07-13 google , guava , java , java-lib , lib , utils

Spring MVC 处理文件上传

Spring MVC 处理文件上传 添加Maven依赖 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> &l Read more ...

2017-07-11 SpringMVC , Java , Web , File

Maven 插件学习之:Versions maven plugin 版本管理插件

Versions Plugin 该插件用于需要管理项目 用来设置版本号 mvn versions:set -DnewVersion=1.0.1 如果需要回滚 mvn versions:revert 确认则使用 mvn versions:commit reference http://www.mojohaus.org/versions-maven-plugin/index.html Read more ...

2017-07-09 maven , versions , maven-plugin

最近文章

  • screen.garden:让 Obsidian 拥有 Google Docs 般的实时协作体验 之前我介绍过 Fast Note Sync,这是一款开源的 Obsidian 笔记同步方案,可以实现多设备之间的笔记同步和实时协作。Fast Note Sync 的优势在于完全开源、数据自主可控,但它有一个门槛——你需要自己搭建和维护服务器。对于有技术背景并且享受折腾的朋友来说这不是问题,但如果你不想操心服务器的事情,或者团队里有非技术背景的成员,那么一个开箱即用的托管服务可能是更好的选择。这就是我今天要介绍的 screen.garden,一个为 Obsidian 设计的付费实时协作服务。
  • Clawdbot 深度调研:打造完全属于自己的全平台 AI 助手 最近在折腾各种 AI 工具的时候,发现了一个有意思的现象:市面上大部分 AI 助手要么被牢牢绑定在某个特定平台上(比如只能在 Discord 里用的机器人),要么就是完全依赖某家公司的 SaaS 服务,你的对话数据都在别人的服务器上。作为一个对隐私比较在意的人,我一直在想,能不能有一个完全由自己掌控、可以在所有常用聊天软件里使用的 AI 助手呢?直到我在 GitHub 上发现了 [[Clawdbot]] 这个项目,才发现原来真的有人在认真解决这个问题。
  • 推荐我使用的 Agent Skills 随着 AI 编程助手的快速发展,[[Claude Code]]、[[Codex]]、[[Gemini CLI]] 等工具已经成为开发者日常工作中不可或缺的伙伴。然而,这些工具的默认功能往往只是冰山一角。通过安装和配置 Agent Skills,我们可以大幅扩展这些 AI 助手的能力,让它们更加智能、更加专业。
  • Antigravity Agent Skills 功能介绍与实战指南 2026 年 1 月 14 日,[[Google]] 为其 AI 驱动的开发工具 [[Antigravity]] 推出了 Agent Skills 功能。这个开放标准的技能系统让开发者可以将专业知识打包成可复用的技能包,极大地扩展了 AI 智能体的能力边界。
  • Gemini CLI Agent Skills 功能介绍与上手指南 [[Gemini CLI]] 最近推出了一个非常强大的新功能,名为 [[Agent Skills]]。这个功能极大地扩展了命令行 AI 助手的边界,允许用户根据自己的需求定制专业的技能包。