SQL Server 2008R2 数据库出现“可疑”导致无法访问解决办法 - 技术_菜鸟 - 博客园

mikel阅读(937)

来源: SQL Server 2008R2 数据库出现“可疑”导致无法访问解决办法 – 技术_菜鸟 – 博客园

今天在客户服务器的数据库里面的一个数据库突然出现了点问题,数据库状态变为可疑了,这个问题之前有见过,虽然解决了,但并没有把过程和解决方法记录下来,决定这次记录在博客园里,方便自己也方便他人在遇到这个问题的时候,能快速解决!废话不多说,先说说数据库变可疑的原因:

在进行些不正常操作如数据库在读写时而无故停止数据库,从而导致SQL Server 数据库不正常中断,当再次打开数据库时会发现某些数据库会被标记为“可疑”(suspect),即在数据库名旁加上了黄色的惊叹号,这时数据库就不能再被打开了,但数据库的结构及数据内容都还是存在的。

解决方法:

当数据库发生这种操作故障时,可以按如下操作步骤可解决此方法,打开数据库里的SQL 查询编辑器窗口,运行以下的命令(注意:jd13dafa为对应可疑的数据库名称,执行时,请改为你的可疑的数据库名称)。

1、修改数据库为紧急模式

ALTER DATABASE jd13dafa SET EMERGENCY

2、使数据库变为单用户模式

ALTER DATABASE jd13dafa SET SINGLE_USER

3、修复数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象错误。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修复报告的错误。但是,这些修复可能会导致一些数据丢失。

DBCC CheckDB (jd13dafa , REPAIR_ALLOW_DATA_LOSS)

4、使数据库变回为多用户模式

ALTER DATABASE jd13dafa SET MULTI_USER

5、开始->运行->输入cmd->打开DOS命令窗口,输入以下命令重启数据库服务(此处可以直接到服务列表里,重新启动数据库服务,为了方便我直接用DOS命令了)

Net stop msSQLServer –停止服务

Net start msSQLServer –启动服务

重新打开Sql Server,查看被标记为“可疑”的数据库已恢复正常状态。

(注意执行命令过程中可能会报一些错误,请无视,按照步骤执行完毕就行了,有问题,大家多少交流836911886,加我请记得说:博客园)

 

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统 - 大鸟博客

mikel阅读(1574)

来源: 宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统 – 大鸟博客

Solo 是一款小而美的博客系统,专为程序员设计。Solo 有着非常活跃的社区,文章自动推送到社区后可以让很多人看到,产生丰富的交流互动。

虽然大鸟不是程序员,但是还是很喜欢这个博客的,不过因为是Java开发,所以安装环境折腾起来有点门槛。

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

老规矩还是用宝塔面板来折腾,不过还是用Docker来部署,这也是官方推荐的安装方式。官方不建议通过 war 发布包或者源码构建部署,因为这样的部署方式在将来有新版本发布时升级会比较麻烦。 这两种方式请仅用于本地试用,线上生产环境建议通过 Docker 部署。大鸟还写过Solo博客的文章:

这篇文章就来分享宝塔面板下Docker安装Solo博客系统,这款小而美的博客程序。

一:solo简介

 

  1. 官网:https://solo.b3log.org/
  2. github:https://github.com/b3log/solo
  3. 下载地址:https://github.com/b3log/solo/releases

 

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

看起来功能上还是很简单的,不过够用就好。

二:安装docker + docker-compose

2.1docker安装

宝塔面板安装就不用多说了,我们开始安装docker,软件商店安装即可:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

大鸟这里已经安装好了,没安装的自己安装。

2.2docker-compose

宝塔面板没有自带docker-compose,所以需要自己命令环境下安装,Docker-Compose是一个部署多个容器的简单但是非常必要的工具,安装Docker-Compose之前,请先安装 python-pip  不过对于宝塔面板来说python-pip早已安装好了,所以宝塔面板安装Docker-Compose只需要一个命令就足够了,安装命令:

  1. pip install dockercompose

看看安装界面,以及安装完成的截图,这些需要SSH连接服务器进行操作:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

2.3检查web环境

安装了docker + docker-compose,我们还需要检查下,因为这是我们docker安装solo博客很关键的地方,检查命令:

  1. docker v
  2. dockercompose v

丢一张截图:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

三:下载solo-in-docker以及编辑

3.1下载solo-in-docker

项目地址:https://github.com/liumapp/solo-in-docker

可以用命令方式下载,或者用宝塔面板自带的远程下载来搞定,把下载的文件放在root目录下,大鸟这类用git下载,命令如下:

  1. git clone https://github.com/liumapp/solo-in-docker.git

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

3.2编辑docker-compose.yml文件

下载好之后,我们需要编辑/root/solo-in-docker下的docker-compose.yml文件,完整编辑好文件如下:

  1. version: “2”
  2.  
  3. services:
  4. mySQL:
  5. container_name: mySQL
  6. image: mySQL:5.5.60
  7. restart: always
  8. volumes:
  9. ./mysql/data:/var/lib/mysql //mysql的数据文件存放地址
  10. ./mysql/conf/mysqld.conf:/etc/mysql/mysql.conf.d/mysqld.cnf //mysql的配置文件存放地址
  11. ports:
  12. “6603:3306” //6603代表宿主机端口,3306代编容器的端口
  13. environment:
  14. MYSQL_ROOT_PASSWORD=adminadmin //mysql的root账号密码
  15. solo:
  16. container_name: solo
  17. image: b3log/solo //直接使用最新版本的solo镜像
  18. restart: always
  19. ports:
  20. “8080:8080” //如果要部署到线上的话,请改为”80:80″,同时修改下面的–listen_port=80
  21. environment: //此处配置solo跟mysql的连接设置,来源为上面启动的mysql容器,如果要用自己的mysql服务,那么请将mysql的servcie去掉
  22. RUNTIME_DB: “MYSQL”
  23. JDBC_USERNAME: “root”
  24. JDBC_PASSWORD: “adminadmin”
  25. JDBC_DRIVER: “com.mysql.jdbc.Driver”
  26. JDBC_URL: “jdbc:mysql://mysql:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC” //此处,因为solo跟mysql同为docker容器,所以可以直接使用容器名 + 容器端口来访问
  27. command: listen_port=8080 server_scheme=http server_host=www.daniao.org //按照solo官方要求,在solo启动之初,配置solo的域名、端口,如果是本地测试的话,将host改为localhost即可

四:开始部署和问题解决

配置好了,docker-compose.yml文件我就可以部署了,不过还是需要把solo-in-docker这个文件名修改成solo比较好,这样简单点,修改好之后,开始部署,命令如下:

  1. cd solo
  2. dockercompose up d

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

开始用docker-compose自动部署镜像的时候,大鸟这里发现了错误,如下:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

错误提示:80端口已经被占用,对于宝塔面板来说这应该nginx默认监听80端口所指,问题还是好解决的,路径:/www/server/panel/vhost/nginx,找到0.default.confphpfpm_status.conf这两个文件修改其中的80端口即可,如图:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

当然了,如果你默认用什么8383这样的端口,也无需去修改这里的文件了。这样修改好之后,我重新运行:docker-compose up -d,即可成功启动solo了。

五:solo博客展示与使用

我们在docker上成功部署了solo,这样就可以通过域名打开网址了,额,域名别忘了解析哈,如图:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

管理的用户名和密码就是github的账号和密码,初始我们需要登录github,之后就可以管理后台了,如图:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

功能上来说非常简单,不过内置了19个皮肤,我们可以更换一个自己喜欢的。我们来试试发表文章:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

功能上是很简单的,也很清爽,至于其他的功能喜欢折腾的自己去试试!

五:升级solo与一些细节

如果有更新,我还是需要在solo目录下运行:docker-compose up -d,常用的命令如下:

启动命令

  1. dockercompose up d

停止命令,可以停止网站运行。

  1. dockercompose down

查看solo日志的命令

  1. docker logs t f tail 100 solo

我们丢一张图看看:

宝塔面板Docker安装Solo博客 – 一款小而美的JAVA博客系统

六:总结

 

  1. docker-compose 只是一个 docker 容器的编排工具,本质还是 docker 容器在运行
  2. 每一次命令 docker-compose 启动的时候,都会自动拉取最新 solo 的镜像,所以自动更新非常简单
  3. 数据备份问题,docker 容器死亡的时候,容器内数据会自动清除,除非我们使用 volumes 构建映射关系,这里我只将最重要的 mysql 数据库文件映射在 mysql/data 目录下

 

用宝塔面板来构建solo博客还是比较简单的,只是因为这个博客是在太小众,网上的资料基本看不懂,大鸟真的是折腾了好久,等真正吃到嘴的时候,发现味道也就如此,比如上街看到一个美女,穿着清凉性感的短装,你看见她的时候荷尔蒙飙升,非常想“马赛克”……

其实就像烤红薯,闻着香,吃到嘴里也就那样……

哈哈哈哈哈,我邪恶了……

貌似没有说怎么安装SSL证书,下次说吧,文章已经太长了,不一定有人能看完。

Premiere如何去除视频背景颜色-百度经验

mikel阅读(1990)

来源: Premiere如何去除视频背景颜色-百度经验

  1. 打开Premiere软件,新建一个项目,点击【文件】——【新建】——【序列】命令,创建序列,

    Premiere如何去除视频背景颜色?
  2. 按快捷键【Ctrl+I】,弹出一个导入窗口,选择一个视频素材

    Premiere如何去除视频背景颜色?
  3. 将视频导入PR软件,选中视频,将其拖动至视频轨道,

    Premiere如何去除视频背景颜色?
  4. 展开【窗口】菜单栏,找到【效果】并勾选,让其显示在窗口,

    Premiere如何去除视频背景颜色?
  5. 在效果窗口中输入【超级键】,进行搜索,选中超级键效果,将其拖动到视频文件中,

    Premiere如何去除视频背景颜色?
  6. 选中视频,打开【效果控件】窗口,找到【超级键】——【主要颜色】,用吸管工具吸取视频背景颜色,PR会根据色彩容去除与背景相近的颜色。

    Premiere如何去除视频背景颜色?

excel 分数并列排名问题

mikel阅读(1931)

1.原始数据

2.分数列按降序排序

3.在B2输入1

4.在B3上输入公式: =IF(A3=””,””,IF(A3=A2,B2,B2+1))


5.,然后B3向下拖动至需要的地方

注意:使用的前提是先以A列排序,在B2单元格内输入“1”,B3单元格内输入“=IF(A3=””,””,IF(A3=A2,B2,B2+1)) ”

LayUI数据表格合计行小数问题 - hjLu - 博客园

mikel阅读(2154)

来源: LayUI数据表格合计行小数问题 – hjLu – 博客园

LayU数据表格添加合计行的方式如下:

 

 

效果如下:

可是,上面的数据是整数,合计数据带小数就不太好看,也不太合理,下面我说下怎么改为:整数的时候没有小数点,非整数的时候有小数点;

在你项目中全局搜索“toFixed”,可以找出layUI相关的js,找出是为totalRow赋值的函数的位置,修改如下:

var e=o.totalRowText||””,/*i=parseFloat(l[r]).toFixed(2)*/i,a={};
if(parseInt(l[r]) == l[r]){ //是否是整数
i = parseFloat(l[r]).toFixed(0);
}else{
i = parseFloat(l[r]).toFixed(2);
}
return a[r]=i,

 

这样算出来的结果就是该有小数的有小数,该是整数的是整数了!

亲测有效!

layui 合计出现多位小数的解决方法 - 我是小柒 - 博客园

mikel阅读(2017)

来源: layui 合计出现多位小数的解决方法 – 我是小柒 – 博客园

前言#

在使用Layui框架进行开发的时候。使用到了table这个模块的合计。按照官网的方式进行设置后,发现会出现多位小数的情况。

以下,是在度娘查询到行之有效的方法。

相关代码#

首先,找到table.js。路径如下: layui/lay/model/table.js

其次,在table.js找到var e = t.totalRowText || "";,然后进行代码修改。修改代码实例如下:

if (isNaN(a[n]) == false && parseInt(a[n]) != a[n]) {// 新增
    a[n] = parseFloat(a[n]).toFixed(2);// 新增
}// 新增

最后,清除浏览器缓存。

最最最最最最最重要!!!!刷新自己的浏览器。快捷方式Shift+Ctrl+Del。清除浏览器缓存。即可解决合计中出现多位小数的问题。

jquery操作select(取值,设置选中) - 海乐学习 - 博客园

mikel阅读(1259)

来源: jquery操作select(取值,设置选中) – 海乐学习 – 博客园

JQuery操作select(增加,删除,清空)

复制代码
1. $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发
 
2. var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的
 
3. var checkValue=$("#select_id").val(); //获取Select选择的Value
 
4. var checkIndex=$("#select_id ").get(0).selectedIndex; //获取Select选择的索引值
 
5. var maxIndex=$("#select_id option:last").attr("index"); //获取Select最大的索引值
 
jQuery添加/删除Select的Option项:
 
1. $("#select_id").append("<option value='Value'>Text</option>"); //为Select追加一个Option(下拉项)
 
2. $("#select_id").prepend("<option value='0'>请选择</option>"); //为Select插入一个Option(第一个位置)
 
3. $("#select_id option:last").remove(); //删除Select中索引值最大Option(最后一个)
 
4. $("#select_id option[index='0']").remove(); //删除Select中索引值为0的Option(第一个)
 
5. $("#select_id option[value='3']").remove(); //删除Select中Value='3'的Optiona
 
5. $("#select_id option").remove(); //删除Select中Text='4'的Optiona
 
内容清空:$("#charCity").empty();
复制代码

 

JQuery获取Select选择的Text和Value: 

复制代码
$("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发
 
var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的text
 
var checkValue=$("#select_id").val(); //获取Select选择的Value
 
var checkIndex=$("#select_id ").get(0).selectedIndex; //获取Select选择的索引值
 
var maxIndex=$("#select_id option:last").attr("index"); //获取Select最大的索引值
复制代码

 

比如<select class=”selector”></select>

1、设置value为pxx的项选中

     $(".selector").val("pxx");

2、设置text为pxx的项选中

    $(".selector").find("option").attr("selected",true);

这里有一个中括号的用法,中括号里的等号的前面是属性名称,不用加引号。很多时候,中括号的运用可以使得逻辑变得很简单。

3、获取当前选中项的value

    $(".selector").val();

4、获取当前选中项的text

    $(".selector").find("option:selected").text();

这里用到了冒号,掌握它的用法并举一反三也会让代码变得简洁。

 

很多时候用到select的级联,即第二个select的值随着第一个select选中的值变化。这在JQuery中是非常简单的。

如:

复制代码
$(".selector1").change(function(){
     // 先清空第二个
      $(".selector2").empty();
     // 实际的应用中,这里的option一般都是用循环生成多个了
      var option = $("<option>").val(1).text("pxx");
      $(".selector2").append(option);
});
复制代码

jQuery获取Select选择的Text和Value:
语法解释:

$("#select_id").change(function(){//code...});   //为Select添加事件,当选择其中一项时触发
var checkText=$("#select_id").find("option:selected").text();  //获取Select选择的Text
var checkValue=$("#select_id").val();  //获取Select选择的Value
var checkIndex=$("#select_id ").get(0).selectedIndex;  //获取Select选择的索引值
var maxIndex=$("#select_id option:last").attr("index");  //获取Select最大的索引值

jQuery设置Select选择的 Text和Value:
语法解释:

$("#select_id ").get(0).selectedIndex=1;  //设置Select索引值为1的项选中
$("#select_id ").val(4);   // 设置Select的Value值为4的项选中
$("#select_id option").attr("selected", true);   //设置Select的Text值为jQuery的项选中

 

jQuery添加/删除Select的Option项:
语法解释:

$("#select_id").append("<option value='Value'>Text</option>");  //为Select追加一个Option(下拉项)
$("#select_id").prepend("<option value='0'>请选择</option>");  //为Select插入一个Option(第一个位置)
$("#select_id option:last").remove();  //删除Select中索引值最大Option(最后一个)
$("#select_id option[index='0']").remove();  //删除Select中索引值为0的Option(第一个)
$("#select_id option[value='3']").remove();  //删除Select中Value='3'的Option
$("#select_id option").remove();  //删除Select中Text='4'的Option

 

jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关
获 取一组radio被选中项的值
var item = $(‘input[name=items][checked]’).val();
获 取select被选中项的文本
var item = $(“select[name=items] option[selected]”).text();
select下拉框的第二个元素为当前选中值
$(‘#select_id’)[0].selectedIndex = 1;
radio单选组的第二个元素为当前选中值
$(‘input[name=items]’).get(1).checked = true;
获取值:
文本框,文本区域:$(“#txt”).attr(“value”);
多选框 checkbox:$(“#checkbox_id”).attr(“value”);
单选组radio:   $(“input[type=radio][checked]”).val();
下拉框select: $(‘#sel’).val();
控制表单元素:
文本框,文本区域:$(“#txt”).attr(“value”,”);//清空内容
$(“#txt”).attr(“value”,’11’);//填充内容
多选框checkbox: $(“#chk1”).attr(“checked”,”);//不打勾
$(“#chk2”).attr(“checked”,true);//打勾
if($(“#chk1”).attr(‘checked’)==undefined) //判断是否已经打勾
单选组 radio:    $(“input[type=radio]”).attr(“checked”,’2′);//设置value=2的项目为当前选中项
下拉框 select:   $(“#sel”).attr(“value”,’-sel3′);//设置value=-sel3的项目为当前选中项
$(“<option value=’1′>1111</option><option value=’2′>2222</option>”).appendTo(“#sel”)//添加下拉框的option
$(“#sel”).empty();//清空下拉框

js判断时间是否为今天日期(判断日期与当前日期相差多少天) - 邱小健 - 博客园

mikel阅读(1642)

来源: js判断时间是否为今天日期(判断日期与当前日期相差多少天) – 邱小健 – 博客园

下面是我的代码:

// 判断时间为今天
judgeTime(data){
    var date = data.toString();
    var year = date.substring(0, 4);
    var month = date.substring(4, 6);
    var day = date.substring(6, 8);
    var d1 = new Date(year + '/' + month + '/' + day);
    var dd = new Date();
    var y = dd.getFullYear();
    var m = dd.getMonth() + 1;
    var d = dd.getDate();
    var d2 = new Date(y + '/' + m + '/' + d);
    var iday = parseInt(d2 - d1) / 1000 / 60 / 60 / 24;
    return iday;
  },

var start_time="2018-07-31T14:00"   //这是一般的时间格式,下面是使用replace方法进行转换为数字格
//式

if(judgeTime(start_time.replace(/-|T|:/g, ''))==0){
    console.log('日期为今天')
}

如果数字为负数,-1为明天   负多少就是差多少    正数相反的道理