6月14
5月31
如将10.0.1.155的/u01/attachments 目录挂载到10.0.1.156对应的/u01/attachments 目录下。
使用以下命令:
mount 10.0.1.155:/u01/attachments /u01/attachments
使用以下命令:
mount 10.0.1.155:/u01/attachments /u01/attachments
5月29
一、在项目根目录下安装
npm install --save js-base64
npm install --save js-md5
1
2
二、在项目文件中引入
import md5 from 'js-md5';
let Base64 = require('js-base64').Base64;
1
2
3
三、在项目文件中使用
base64
Base64.encode('heckjj.com'); // aGVja2pqLmNvbQ==
Base64.encode( '大将军'); // 5aSn5bCG5Yab+
Base64.encodeURI('大将军'); // 5aSn5bCG5Yab-
Base64.decode(aGVja2pqLmNvbQ=='); // heckjj.com
Base64.decode('5aSn5bCG5Yab+'); // 大将军
// note .decodeURI() is unnecessary since it accepts both flavors
Base64.decode('5aSn5bCG5Yab-'); // 大将军
md5
md5(''); // d41d8cd98f00b204e9800998ecf8427e
md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6
md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0
// It also supports UTF-8 encoding
md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07
// It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`
md5([]); // d41d8cd98f00b204e9800998ecf8427e
md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e
// Different output
md5(''); // d41d8cd98f00b204e9800998ecf8427e
md5.hex(''); // d41d8cd98f00b204e9800998ecf8427e
md5.array(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.digest(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.arrayBuffer(''); // ArrayBuffer
md5.buffer(''); // ArrayBuffer, deprecated, This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
npm install --save js-base64
npm install --save js-md5
1
2
二、在项目文件中引入
import md5 from 'js-md5';
let Base64 = require('js-base64').Base64;
1
2
3
三、在项目文件中使用
base64
Base64.encode('heckjj.com'); // aGVja2pqLmNvbQ==
Base64.encode( '大将军'); // 5aSn5bCG5Yab+
Base64.encodeURI('大将军'); // 5aSn5bCG5Yab-
Base64.decode(aGVja2pqLmNvbQ=='); // heckjj.com
Base64.decode('5aSn5bCG5Yab+'); // 大将军
// note .decodeURI() is unnecessary since it accepts both flavors
Base64.decode('5aSn5bCG5Yab-'); // 大将军
md5
md5(''); // d41d8cd98f00b204e9800998ecf8427e
md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6
md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0
// It also supports UTF-8 encoding
md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07
// It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`
md5([]); // d41d8cd98f00b204e9800998ecf8427e
md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e
// Different output
md5(''); // d41d8cd98f00b204e9800998ecf8427e
md5.hex(''); // d41d8cd98f00b204e9800998ecf8427e
md5.array(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.digest(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.arrayBuffer(''); // ArrayBuffer
md5.buffer(''); // ArrayBuffer, deprecated, This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
5月28
Element UI Upload 上传文件上传文件一次 ,不论是上传成功之后修改文件再上传还是上传失败重新上传,再次点击上传均无反应。
方法一:利用 :on-success
ref=‘upload’
:on-success=“handleSuccess”
注意: ref='upload 一定要加上ref 不然不起作用
<el-upload
class="upload-demo"
action=""
:limit="1"
:show-file-list="false"
:http-request="uploadLogo"
ref='upload'
:on-success="handleSuccess"
>
<el-button style="width: 150px; height: 35px;line-height: 0;margin-left: 20px" size="medium"
type="primary">
{{$t('StaffManage.bulkImport')}}
</el-button>
</el-upload>
handleSuccess(res, file) {
this.$refs.upload.clearFiles(); //上传成功之后清除历史记录
// this.tableReload()
},
方法二:利用if el-upload让移除文档流
<el-upload
v-if="!form.contractFileUrl"
class="upload-demo"
action=""
:limit="1"
:show-file-list="false"
:http-request="uploadLogo"
>
<el-button size="medium" type="primary">{{$t('AttendanceInformation.ClickUpload')}}</el-button>
</el-upload>
uploadLogo(param) {
let _this = this
_this.form.contractFileUrl = '1'
let formData = new FormData();
formData.append("file", param.file);
_this.$send.post({url: '/contract/upload', data: formData}, res => {
if (res.code === 10000) {
_this.isdisabled = true
_this.form.contractFileUrl = res.data.url
_this.form.contractFileId = res.data.id
} else {
_this.form.contractFileUrl = null
_this.form.contractFileId = null
_this.$msg.error(res.message)
}
})
},
方法一:利用 :on-success
ref=‘upload’
:on-success=“handleSuccess”
注意: ref='upload 一定要加上ref 不然不起作用
<el-upload
class="upload-demo"
action=""
:limit="1"
:show-file-list="false"
:http-request="uploadLogo"
ref='upload'
:on-success="handleSuccess"
>
<el-button style="width: 150px; height: 35px;line-height: 0;margin-left: 20px" size="medium"
type="primary">
{{$t('StaffManage.bulkImport')}}
</el-button>
</el-upload>
handleSuccess(res, file) {
this.$refs.upload.clearFiles(); //上传成功之后清除历史记录
// this.tableReload()
},
方法二:利用if el-upload让移除文档流
<el-upload
v-if="!form.contractFileUrl"
class="upload-demo"
action=""
:limit="1"
:show-file-list="false"
:http-request="uploadLogo"
>
<el-button size="medium" type="primary">{{$t('AttendanceInformation.ClickUpload')}}</el-button>
</el-upload>
uploadLogo(param) {
let _this = this
_this.form.contractFileUrl = '1'
let formData = new FormData();
formData.append("file", param.file);
_this.$send.post({url: '/contract/upload', data: formData}, res => {
if (res.code === 10000) {
_this.isdisabled = true
_this.form.contractFileUrl = res.data.url
_this.form.contractFileId = res.data.id
} else {
_this.form.contractFileUrl = null
_this.form.contractFileId = null
_this.$msg.error(res.message)
}
})
},
5月17
4月21
IS浏览器无法读取mp4视频怎么办?针对这个问题,今天总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。
IIS7以上的不支持mp4的时候提示如下报错
有时候会报404找不到文件,可视频文件明明在,就是访问不到。
由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
原因:因为服务器IIS默认不支持mp4等一些文件类型,只要在IIS上添加MIME 类型即可。
iis6.0版本
打开iis管理器找到你要设置的站点,右键属性,找到http头,就可以看到mime类型的按钮了,我们点击进去
比如你要添加mp4的mime我们就输入,扩展名.mp4 类型video/mp4,然后点击确人完成后测试下
iis7.5设置
找到你要设置的站点,点击功能视图,找到MIME类型选项
进入mime类型功能之后点击右上角的添加按钮添加扩展名.mp4 类型video/mp4,然后点击确人完成后测试下
常见的mime类型后续更新Mime类型扩展名意义
application/msexcel*.xls *.xlaMicrosoft Excel Dateien
application/mshelp*.hlp *.chmMicrosoft Windows Hilfe Dateien
application/mspowerpoint*.ppt *.ppz *.pps *.potMicrosoft Powerpoint Dateien
application/msword*.doc *.dotMicrosoft Word Dateien
application/octet-stream*.exeexe
video/mp4*.mp4MP4
application/pdf*.pdfAdobe PDF-Dateien
application/postscript*.ai *.eps *.psAdobe Postscript-Dateien
application/rtf*.rtfMicrosoft RTF-Dateien
application/x-httpd-php*.php *.phtmlPHP-Dateien
application/x-javascript*.jsserverseitige JavaScript-Dateien
application/x-shockwave-flash*.swf *.cabFlash Shockwave-Dateien
application/zip*.zipZIP-Archivdateien
audio/basic*.au *.sndSound-Dateien
audio/mpeg*.mp3MPEG-Dateien
audio/x-midi*.mid *.midiMIDI-Dateien
audio/x-mpeg*.mp2MPEG-Dateien
audio/x-wav*.wavWav-Dateien
image/gif*.gifGIF-Dateien
image/jpeg*.jpeg *.jpg *.jpeJPEG-Dateien
image/x-windowdump*.xwdX-Windows Dump
text/css*.cssCSS Stylesheet-Dateien
text/html*.htm *.html *.shtml-Dateien
text/javascript*.jsJavaScript-Dateien
text/plain*.txtreine Textdateien
video/mpeg*.mpeg *.mpg *.mpeMPEG-Dateien
video/vnd.rn-realvideo*.rmvbrealplay-Dateien
video/quicktime*.qt *.movQuicktime-Dateien
video/vnd.vivo*viv *.vivoVivo-Dateien
IIS7以上的不支持mp4的时候提示如下报错
有时候会报404找不到文件,可视频文件明明在,就是访问不到。
由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
原因:因为服务器IIS默认不支持mp4等一些文件类型,只要在IIS上添加MIME 类型即可。
iis6.0版本
打开iis管理器找到你要设置的站点,右键属性,找到http头,就可以看到mime类型的按钮了,我们点击进去
比如你要添加mp4的mime我们就输入,扩展名.mp4 类型video/mp4,然后点击确人完成后测试下
iis7.5设置
找到你要设置的站点,点击功能视图,找到MIME类型选项
进入mime类型功能之后点击右上角的添加按钮添加扩展名.mp4 类型video/mp4,然后点击确人完成后测试下
常见的mime类型后续更新Mime类型扩展名意义
application/msexcel*.xls *.xlaMicrosoft Excel Dateien
application/mshelp*.hlp *.chmMicrosoft Windows Hilfe Dateien
application/mspowerpoint*.ppt *.ppz *.pps *.potMicrosoft Powerpoint Dateien
application/msword*.doc *.dotMicrosoft Word Dateien
application/octet-stream*.exeexe
video/mp4*.mp4MP4
application/pdf*.pdfAdobe PDF-Dateien
application/postscript*.ai *.eps *.psAdobe Postscript-Dateien
application/rtf*.rtfMicrosoft RTF-Dateien
application/x-httpd-php*.php *.phtmlPHP-Dateien
application/x-javascript*.jsserverseitige JavaScript-Dateien
application/x-shockwave-flash*.swf *.cabFlash Shockwave-Dateien
application/zip*.zipZIP-Archivdateien
audio/basic*.au *.sndSound-Dateien
audio/mpeg*.mp3MPEG-Dateien
audio/x-midi*.mid *.midiMIDI-Dateien
audio/x-mpeg*.mp2MPEG-Dateien
audio/x-wav*.wavWav-Dateien
image/gif*.gifGIF-Dateien
image/jpeg*.jpeg *.jpg *.jpeJPEG-Dateien
image/x-windowdump*.xwdX-Windows Dump
text/css*.cssCSS Stylesheet-Dateien
text/html*.htm *.html *.shtml-Dateien
text/javascript*.jsJavaScript-Dateien
text/plain*.txtreine Textdateien
video/mpeg*.mpeg *.mpg *.mpeMPEG-Dateien
video/vnd.rn-realvideo*.rmvbrealplay-Dateien
video/quicktime*.qt *.movQuicktime-Dateien
video/vnd.vivo*viv *.vivoVivo-Dateien
4月7
(一)事务传播机制 7种
Required (默认):
如果当前没有事务,就新建一个事务,如果已存在一个事务中
加入到这个事务中,这是最常见的选择。
Supports :
支持当前事务,如果没有当前事务,就以非事务方法执行。
Mandatory :
中文翻译为强制,支持使用当前事务,如果当前事务不存在,则抛出Exception。
Requies_new :
创建一个新事务,如果当前事务存在,把当前事务挂起。
Not_Supported :
无事务执行,如果当前事务存在,把当前事务挂起。
Never :
无事务执行,如果当前有事务则抛出Exception。
Nested :
嵌套事务,如果当前事务存在,那么在嵌套的事务中执行。
如果当前事务不存在,则表现跟REQUIRED一样。
注解配置时如:@Transactional(propagation=Propagation.REQUIRED)
7种事务举例子可看此篇博客 感觉不错: https://www.cnblogs.com/myseries/p/10800430.html
(二)事务隔离级别
事务隔离级别 脏读 不可重复读 幻读
读未提交(Read-Uncommitted) 是 是 是
不可重复读(Read-Committed) 否 是 是
可重复读(Repeatable-Read) 否 否 是
串行化(Serializable) 否 否 否
注解配置时如:@Transactional(isolation = Isolation.READ_UNCOMMITTED)
Mysql 默认 可重复读 ---repeatable-read
事务的并发问题
1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,
对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,
但是系统管理员B就在这个时候插入了一条具体分数的记录,
当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。
解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表
Required (默认):
如果当前没有事务,就新建一个事务,如果已存在一个事务中
加入到这个事务中,这是最常见的选择。
Supports :
支持当前事务,如果没有当前事务,就以非事务方法执行。
Mandatory :
中文翻译为强制,支持使用当前事务,如果当前事务不存在,则抛出Exception。
Requies_new :
创建一个新事务,如果当前事务存在,把当前事务挂起。
Not_Supported :
无事务执行,如果当前事务存在,把当前事务挂起。
Never :
无事务执行,如果当前有事务则抛出Exception。
Nested :
嵌套事务,如果当前事务存在,那么在嵌套的事务中执行。
如果当前事务不存在,则表现跟REQUIRED一样。
注解配置时如:@Transactional(propagation=Propagation.REQUIRED)
7种事务举例子可看此篇博客 感觉不错: https://www.cnblogs.com/myseries/p/10800430.html
(二)事务隔离级别
事务隔离级别 脏读 不可重复读 幻读
读未提交(Read-Uncommitted) 是 是 是
不可重复读(Read-Committed) 否 是 是
可重复读(Repeatable-Read) 否 否 是
串行化(Serializable) 否 否 否
注解配置时如:@Transactional(isolation = Isolation.READ_UNCOMMITTED)
Mysql 默认 可重复读 ---repeatable-read
事务的并发问题
1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,
对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,
但是系统管理员B就在这个时候插入了一条具体分数的记录,
当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。
解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表
3月21
var grid = $("#grid").kendoGrid({
dataSource: dataSource,
resizable: true,
scrollable: true,
navigatable: false,
rownumber: true,
selectable: 'multiple, rowbox',
dataBound: function () {
if (parent.autoResizeIframe) {
parent.autoResizeIframe('${RequestParameters.functionCode!}')
}
},
columns: [
{
field: "name",
title: '<@spring.message "物料名称"/>',
width: 80
},
{
field: "spc",
title: '<@spring.message "规格"/>',
width: 80
},
{
field: "num",
title: '<@spring.message "计划量"/>',
width: 60,
required: true
},
{
field: "unitCode",
title: '<@spring.message "单位"/>',
width: 60
},
{
field: "prdNoSup",
title: '<@spring.message "货号"/>',
width: 80
},
{
field: "planMoney",
title: "计划单价",
width: 80,
format: "{0:c}",
},
{
field: "startingPrice",
title: "起拍价",
width: 80,
format: "{0:c}",
},
{
field: "minPriceCut",
title: "最低降价幅度",
width: 120,
format: "{0:c}",
},
{
field: "productId",
title: '<@spring.message "ERP物料名称"/>',
width: 80,
hidden: true,
},
{
field: "purcNo",
title: 'ERP物料编码',
width: 120,
editor: function (container, options) {
$('<input name="' + options.field + '"/>')
.appendTo(container)
.kendoLov($.extend(<@lov"LOV_SELECT_PRODUCT"/>, {
textField: 'prdNo',
model: options.model,
select: function (e) {
options.model.set('purcNo', e.item.prdNo)
options.model.set('productId', e.item.productId)
options.model.set('proName', e.item.name)
options.model.set('proUnitCode', e.item.unitCode)
options.model.set('currentMoney', e.item.currentMoney)
}
}
));
}
},
{
field: "proName",
title: '<@spring.message "ERP物料名称"/>',
width: 100
},
{
field: "proUnitCode",
title: '<@spring.message "ERP主单位"/>',
width: 120
},
{
field: "currentMoney",
title: '<@spring.message "最新价格"/>',
width: 80
},
],
editable: true
}).data('kendoGrid');
以下是获取当前选中行的方法,在网上找了很多个都不管用,还是使用以下方法新测可用
var grid =$("#grid").data('kendoGrid');
var items = grid.selectedDataItems();
dataSource: dataSource,
resizable: true,
scrollable: true,
navigatable: false,
rownumber: true,
selectable: 'multiple, rowbox',
dataBound: function () {
if (parent.autoResizeIframe) {
parent.autoResizeIframe('${RequestParameters.functionCode!}')
}
},
columns: [
{
field: "name",
title: '<@spring.message "物料名称"/>',
width: 80
},
{
field: "spc",
title: '<@spring.message "规格"/>',
width: 80
},
{
field: "num",
title: '<@spring.message "计划量"/>',
width: 60,
required: true
},
{
field: "unitCode",
title: '<@spring.message "单位"/>',
width: 60
},
{
field: "prdNoSup",
title: '<@spring.message "货号"/>',
width: 80
},
{
field: "planMoney",
title: "计划单价",
width: 80,
format: "{0:c}",
},
{
field: "startingPrice",
title: "起拍价",
width: 80,
format: "{0:c}",
},
{
field: "minPriceCut",
title: "最低降价幅度",
width: 120,
format: "{0:c}",
},
{
field: "productId",
title: '<@spring.message "ERP物料名称"/>',
width: 80,
hidden: true,
},
{
field: "purcNo",
title: 'ERP物料编码',
width: 120,
editor: function (container, options) {
$('<input name="' + options.field + '"/>')
.appendTo(container)
.kendoLov($.extend(<@lov"LOV_SELECT_PRODUCT"/>, {
textField: 'prdNo',
model: options.model,
select: function (e) {
options.model.set('purcNo', e.item.prdNo)
options.model.set('productId', e.item.productId)
options.model.set('proName', e.item.name)
options.model.set('proUnitCode', e.item.unitCode)
options.model.set('currentMoney', e.item.currentMoney)
}
}
));
}
},
{
field: "proName",
title: '<@spring.message "ERP物料名称"/>',
width: 100
},
{
field: "proUnitCode",
title: '<@spring.message "ERP主单位"/>',
width: 120
},
{
field: "currentMoney",
title: '<@spring.message "最新价格"/>',
width: 80
},
],
editable: true
}).data('kendoGrid');
以下是获取当前选中行的方法,在网上找了很多个都不管用,还是使用以下方法新测可用
var grid =$("#grid").data('kendoGrid');
var items = grid.selectedDataItems();
3月14
项目中的一些依赖由于需要手动添加,很多时候都会创建一个私服仓库,比如nexus,将第三方jar添加到私服中,然后在pom中引用。刚来公司接手一个3年前的一个项目,该项目之前下过依赖,这些依赖本地依旧存在,如今重新导入该项目,由于没了私服,于是删去私服地址后,执行mvn package后项目会重新到配置的仓库中找这些依赖下载。
此时会报错"was cached in the local repository..." 或者 " Could not resolve dependencies for project"
解决方法,找到该依赖本地资源库位置,删去_remote.repositories文件 和 xx.lastUpdated文件
此时会报错"was cached in the local repository..." 或者 " Could not resolve dependencies for project"
解决方法,找到该依赖本地资源库位置,删去_remote.repositories文件 和 xx.lastUpdated文件