对象的数组属性存在
一般情况下,data()
返回的 JSON 中 user 的数组属性 roles 预先定义:
1 | <template> |
点击按钮修改数组内容后界面立即响应。
大圣,此去欲何?踏南天,碎凌霄。若一去不回…… 便一去不回!
一般情况下,data()
返回的 JSON 中 user 的数组属性 roles 预先定义:
1 | <template> |
点击按钮修改数组内容后界面立即响应。
项目使用 Vue Cli 3 创建,SCSS 作为 Css Pre-processors,按照 iView 自定义主题文档 https://www.iviewui.com/docs/guide/theme 的步骤进行操作时报错了,下面是解决自定义主题的方法:
安装 Less: yarn add less less-loader --dev
在 vue.config.js 中配置 Less:
1 | module.exports = { |
创建文件 public/static/iview-theme.less,在里面覆盖需要修改的 iView 主题的变量 (默认字体为 12px,有点小,修改为 14px):
1 | @import '~iview/src/styles/index.less'; |
在入口文件 main.js
内导入这个 less 文件:
1 | import 'iview/dist/styles/iview.css'; |
启动项目,主题修改成功,但发现 Modal 中的字体还是 12px (modal.less 中写死了),Switch 的字体为 14px 有点大,使用下面的样式强制修改它们的字体大小:
1 | .ivu-modal-body { |
完整的变量列表可以查看 默认样式变量,覆盖需要修改的变量即可 (提示: 删除 @import "color/colors"
这一行)。
Sortable is a JavaScript library for reorderable drag-and-drop lists,下面介绍和 Vue 的简单集成:
添加依赖: yarn add sortablejs
页面中引入 Sortable: import Sortable from 'sortablejs'
HTML 中创建被拖拽的列表
使用被拖拽元素的容器创建 Sortable 对象: Sortable.create(element, config)
onEnd 事件触发时,修改 Vue 管理的数据
和 Vue 集成最关键的是拖拽结束后需要手动修 Vue 管理的数据,Sortable 不会帮我们修改,具体请参考 onEnd
函数。
ElasticSearch (下面简称 ES) 是一个基于 Lucene 的全文检索服务器,本文简单的介绍 ES 的安装、配置、启动、一些基本概念、中文分词以及使用 Java 编程访问 ES 等。
安装: 目前 spring-data-elasticsearch 最高支持 elasticsearch-6.2.2 (可参考最后的版本对应进行选择),所以下载 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.zip,解压即可
配置: 修改配置文件 config/elasticsearch.yml
(只介绍单机环境的,中小型应用足够了):
1 | cluster.name: ebag # 集群名称 |
启动: elasticsearch -d
,注意: Linux 下不允许使用 root 用户启动,可以创建一个用户如 elasticsearch,然后使用此用户启动 ES:
useradd elasticsearch
passwd elasticsearch
su elasticsearch
elasticsearch -d
浏览器中访问 http://localhost:9200,输出如下则说明 ES 启动成功:
1 | { |
启动时如果发生错误,可参考 https://www.jianshu.com/p/312dfaa3a27b。
表单验证插件 jQuery Validation 一文中介绍过表单验证的库 jQuery Validation,这里简单的介绍另外一个表单验证的库 async-validator (iView 的表单验证也是使用了这个库),了解基础使用后,请阅读官方文档深入学习。
1 | yarn add async-validator |
1 | // 1. 导入 async-validator |
注意: require 为 true 时表示需要验证,为 false 表示不进行验证,required 默认值为 false。
Spring Boot 启动时如果发现 ApplicationContext 中某个 Bean 的类继承了 org.springframework.core.convert.converter.Converter
,则会自动的把它注册为 Converter。
例如前端传一个字符串格式的日期,Controller 中想自动转换为 java.time.LocalDate 对象,像下面这样做就可以了:
1 | package com.xtuer.converter; |
使用 FFmpeg 的命令把一种格式的视频转换为另一种格式的视频,例如把 test.avi 转为 test.mp4 的命令为 ffmpeg -i test.avi -vcodec h264 test.mp4
,Java 中可以用 ProcessBuilder 调用这个命令执行转换:
1 | public static void main(String[] args) throws IOException { |
直接调用命令转换虽然很方便,但是如果视频比较大,转换需要的时间比较长时,希望能够及时的得到转换进度并反馈给客户端,就要解析命令的输出获取转换进度,这时就比较麻烦了。接下来介绍 ffmpeg-cli-wrapper 的使用,它对 FFmpeg 的命令进行了封装,简化视频转换的开发难度。
ffmpeg-cli-wrapper: A fluent interface to running FFmpeg from Java.
AspectJ with Xml 和 AspectJ with Annotation 中介绍了 2 中实现 AoP 的方式:
这里我们介绍实现 AoP 的第三种方法: 使用注解配置切面和切入点,主要有以下几个部分:
下面就以实现一个分布式锁的注解来进行介绍。
同一个动态链接库里定义的全局变量在不同的应用程序 (进程) 里有各自独立的内存空间,互不影响。
如上图所示项目之间的依赖关系:
则全局变量 count:
类的静态成员变量也是全局变量,单例可使用类的静态成员变量实现,单例的类可编译成 Lib 提供给其他程序放心的使用,不同程序之间同一个类的单例对象不会互相影响。
LibAndGlobalVariable.7z 是按照上图的依赖关系创建的项目,可以下载来运行观察以便更好的加深印象。
很开心 Qt 5.0 发布后好几个版本 Windows 和 Mac 都自带了 MySQL 的驱动,以为以后就省事了。Qt 5.12 时 Windows 下也还带有 MySQL 驱动,不过忽然发现 Mac 下不带了,哎,又只好自己去编译了。
下面就介绍一下我们在 Mac 中编译 MySQL 驱动成功的步骤:
/usr/local
(不要用 brew 安装)cd /Users/Biao/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/mysql
QMAKE_USE += mysql
这一行qmake "INCLUDEPATH+=/usr/local/mysql/include" "LIBS+=-L/usr/local/mysql/lib -lmysqlclient" mysql.pro
make && make install
,然后在 Qt 的 plugins/sqldrivers
目录下就能看到 MySQL 的驱动 libqsqlmysql.dylib 了编译的过程中出现下面的警告,忽略即可:
Cannot read /Users/Biao/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory
随便提一下,按照 Qt 自带帮助文档中的步骤进行编译:
cd $QTDIR/qtbase/src/plugins/sqldrivers
qmake – MYSQL_PREFIX=/usr/local
make sub-mysql
报错:
Cannot read /Users/Biao/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library ‘mysql’ is not defined.
可能是因为 MySQL 的安装问题吧,但是文档里也没提示这种情况下 Mac 里 MySQL 应该怎么安装,具体就不深入研究了,反正上面的方式能编译成功。
Windows 编译时参考上面 Mac 的步骤,只需要把第 4 步中的
-lmysqlclient
修改为-lmysql
,其他步骤不变,使用 MinGW 编译参考下面 2 条命令:
F:\Qt\Qt5.13.0\5.13.0\mingw73_32\bin\qmake.exe "INCLUDEPATH+=D:/mysql-5.7.29-win32/include" "LIBS+=-LD:/mysql-5.7.29-win32/lib -lmysql" mysql.pro
F:\Qt\Qt5.13.0\Tools\mingw730_32\bin\mingw32-make.exe
编译出来的 DLL 在目录 F:\Qt\Qt5.13.0\5.13.0\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers 中