Hello World!

mongodb用户管理以及连接

作者: StoneWu  |  时间: 2019-01-25 11:08:11  |  
分类: linux学习  |  0 条评论  |  297 次浏览
#使用帐户名连接
mongo -u 用户名 -p 密码 --host 数据库地址

#创建账户

# 创建超级管理员,角色:root
db.createUser({user:"用户名",pwd:"密码",roles:["root"]})

# 创建账户管理员
db.createUser({user:"用户名",pwd:"密码",roles:["userAdminAnyDatabase"]})

# 创建名为test的数据库拥有者账户
# 先切换到需要创建的数据库
use test
db.createUser({user:"用户名",pwd:"密码",roles:[{role:"dbOwner",db:"test"}]})


#查看用户
show users

#删除单个用户
db.system.users.remove({user:"用户名"})


# 创建数据库
use 数据库名
# 如果不存在该数据库,就会创建一个

Spring Boot 使用 spring-boot-devtools 实现热加载时出现类型转换异常

作者: StoneWu  |  时间: 2018-10-10 18:14:47  |  
分类: JAVA开发  |  0 条评论  |  364 次浏览

近期有开始一个新项目的开发,项目使用Spring Boot + Dubbo + MyBatis plus等其他框架开发,就不细讲,这篇文章主要是记录下解决热加载的问题

 

网上有给出了许多解决热加载的方法,比如:

在resource目录下创建META-INF/spring-devtools.properties文件

里面的内容为类似下面的内容:

restart.exclude.companycommonlibs=/mycorp-common-[\\w-]+\.jar
restart.include.projectcommon=/mycorp-myproj-[\\w-]+\.jar

网上能给出的答案一般也就这些,可是作为观众我们自然是表示一脸懵逼啊,这两行啥玩意?

 

那么现在给出下我的解决办法:

现在大部分的项目在eclipse中基本都是多个项目的形式,在intellij idea中则是多个module的形式

我使用的是eclipse,项目的结构大概如下图(精简版):

其中,web项目引用了faced项目,没有引用service项目,因为service项目是个独立的dubbo provider(提供者),web项目则为consumer(消费者)

 

web项目中的controller中有这么一行代码:

UserInfo info = userService.findInfo();

其中UserInfo来自faced项目,userService则通过dubbo的reference注入

项目引入spring-boot-devtools了以后,如果改动了web项目中的代码,则下次web项目中运行到了上面这行代码,则会出现如下报错

java.lang.ClassCastException: com.xxx.UserInfo cannot be cast to com.xxx.UserInfo

为啥明明显示的是同一个类,却给我显示类型转换异常?

那么这就要从spring-boot-devtools的工作原理说起

spring-boot-devtools的热加载其实是这么工作的

当你启动web项目的时候,你的web项目中的代码都会交给spring-boot-devtools的restart加载器去进行加载,而jar包,则基本会交给base加载器去加载

当项目中的代码有改动时,devtools检测到代码变动,restart加载器就会被扔掉重建,这个时候,所有restart加载器加载的代码都会重新部署,而base加载器则维持不变

因为jar包的内容基本都不会变,所以用base加载器不会有什么问题

但是由于web项目中引用了faced项目,于是你引用的faced的所有代码也会被restart加载器重新加载,此时,刚刚加载的UserInfo则跟项目刚开始启动的UserInfo就是两个类了,java中判断两个类是否为同一个类不仅仅是通过包名+类名去识别,还会去看两个类的加载器是否一致,如果不一致,则识别为两个类,所以就会出现我们之前看到的转换异常

那么解决办法呢?

首先我们需要确定我们出现转换异常的类在哪个项目中,我的则是platform-faced项目

那么回到最初的方法,我们需要在resource目录下创建META-INF/spring-devtools.properties文件

里面的内容填写:

restart.exclude.faced=/platform-faced

如果你有多个face项目,且项目名开头都是这个,那么可以使用如下的配置

restart.exclude.faced=/platform-faced[\\w-]+

网上给的答案后面有带上.jar,但是由于我们开发的时候的引用方式是项目引用,后面是不带jar的,所以我们不需要带上.jar

restart.exclude.faced这个键中的faced是可以自己命名的,只需要保证在这个配置文件中唯一即可

文件配置好后,我们可以在项目已启动状态下修改web项目中的代码,可以看到控制台有显示项目重新加载,继续访问到之前触发转换异常的地方,发现已经不会异常了,完美!

 

好久没写东西了。。。

作者: StoneWu  |  时间: 2018-09-06 16:11:18  |  
分类: 吐槽  |  0 条评论  |  339 次浏览

好长一段时间没写东西了

最近上班略忙,回家也得2月份才能回,那个时候都要过年了

而且在家里也只能待10天不到。。宝宝心里苦。。

博客还有挺多东西没开发完成的。。挤牙膏似的写。。

快过年了就不写了吧,明年再写,嘻嘻

话说手机版在一个礼拜前已经完成了,之前用的滚动条插件有点渣。。

换了个新的滚动条插件就棒棒的了

 

--END

mongodb后台运行

作者: StoneWu  |  时间: 2018-08-02 13:19:26  |  
分类: linux学习  |  0 条评论  |  155 次浏览

完成安装mongodb(略)

 

创建数据目录:

mkdir /data/db

创建配置文件

# vi /data/db/mongodb.cnf
dbpath=/data/db/
logpath=/data/db/mongo.log
logappend=true
fork=true
port=27017

或者:不创建配置文件通过mongod参数启动也可以

 

配置文件方式启动mongo

mongod -f /data/db/mongodb.cnf

intellij idea激活

作者: StoneWu  |  时间: 2018-06-04 11:22:55  |  
分类: 大杂烩  |  0 条评论  |  268 次浏览

最近想尝试下使用intellij开发,但是community版是不能开发javaEE的,于是:

设置激活服务器为:

http://idea.toocruel.net

即可

已失效!

nginx防止被其他域名恶意解析

作者: StoneWu  |  时间: 2017-11-27 15:43:16  |  
分类: linux学习  |  0 条评论  |  181 次浏览
server {
    listen 80 default_server;
    listen 443 ssl default_server;
    ssl_certificate 证书路径; 
    ssl_certificate_key 证书路径; 
    ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    server_name _;
    access_log off;
    return 403;
}

redis批量删除key

作者: StoneWu  |  时间: 2017-11-23 17:06:33  |  
分类: linux学习  |  0 条评论  |  170 次浏览
redis-cli -h ipaddress -p 6379  keys "key*" |xargs redis-cli -h ipaddress -p 6379 del

office2016使用KMS激活

作者: StoneWu  |  时间: 2017-08-09 19:04:54  |  
分类: 大杂烩  |  0 条评论  |  167 次浏览
cd C:\Program Files\Microsoft Office\Office16 #office目录
cscript ospp.vbs /sethst:密钥服务器地址
cscript ospp.vbs /dstatus #查看原密钥后五位    
cscript ospp.vbs /unpkey:XXXXX #卸载原密钥,XXXXX代表后五位    
cscript ospp.vbs /inpkey:XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99    
cscript ospp.vbs /act

linux下crontab的使用方式

作者: StoneWu  |  时间: 2017-07-17 10:37:25  |  
分类: linux学习  |  0 条评论  |  184 次浏览

查看所有定时任务:

crontab -l

编辑定时任务:

crontab -e

定时任务格式:

0 23 * * 6 /opt/nginx-1.10.2/sbin/nginx -s stop
#每周六晚上11点停止nginx服务

nginx部署https反向代理tomcat

作者: StoneWu  |  时间: 2017-07-10 11:58:39  |  
分类: linux学习  |  0 条评论  |  137 次浏览

上次部署https时没有记录,这次专门记录一下

首先申请证书......略

nginx配置:

server {
	listen      80;
	# 监听443端口
	listen       443 ssl;
	#这里是填你的域名
	server_name  stonewuu.com www.stonewuu.com;
	#charset koi8-r;
	#这里为证书路径以及证书的配置
	ssl_certificate /etc/letsencrypt/live/stonewuu.com/fullchain.pem; 
	ssl_certificate_key /etc/letsencrypt/live/stonewuu.com/privkey.pem; 
	ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_session_cache shared:SSL:10m;
	#301重定向,将所有http请求重定向为https
	if ($scheme = http) {
		return	 301 https://$host$request_uri;
	}
	#这里为lets encrypt证书需要的验证文件
	location ^~ /.well-known/acme-challenge/ {
		default_type "text/plain";
		root     /opt/tomcat-8.5.9/blog_data;
	}

	#这里防止用户访问到lets encrypt验证文件的目录
	location = /.well-known/acme-challenge/ {
		return 404;
	}
	# 反向代理,指向tomcat的地址
	location / {
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_pass http://localhost:8080;
	}

}