0%

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
##显示当月的日历
hisen@ubuntu:~$ cal
March 2017
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

##指定显示1997年11月当月的日历
hisen@ubuntu:~$ cal 11 1997
November 1997
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
##显示2018年全年12个月的日历
hisen@ubuntu:~$ cal -m 12 -y 2018
2018
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31


April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30


July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30

October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31
##输出当前日期
hisen@ubuntu:~$ date
Tue Mar 14 11:48:14 CST 2017
##格式化输出年月日
hisen@ubuntu:~$ date "+%Y-%m-%d"
2017-03-14
##格式化输出当前时间
hisen@ubuntu:~$ date "+%H:%M:%S"
11:49:10
##格式化输出年月日时间
hisen@ubuntu:~$ date "+%Y-%m-%d %H:%M:%S"
2017-03-14 11:49:18

出现原因:
这是由于mysql服务端root用户所对应的客户端权限设置问题。

默认所对应的客户端地址只有localhost(也就是服务端的机器),

我们目的是任何地址都可以用root访问mysql服务端。

解决办法:

1
2
3
4
5
6
7
8
9
10
11
12
$ mysql -u root -p
#进入mysql交互界面
mysql> use mysql;
#使用mysql这个库
mysql> grant all privileges on *.* to 'root'@'%' identified by 'hisen';
#让root可以在任何ip登陆,密码为:hisen
mysql> flush privileges;
#刷新
mysql> exit;
#退出
$ service mysql restart
#重启mysql

安装mysql很简单,关键是开启这个远程很坑!!!

一、安装

1.安装

1
sudo apt-get install mysql-server

等待完成即可,过程中需要设置密码

2.查看是否成功

1
sudo netstat -tap | grep mysql

3.登陆mysql

1
mysql -u root -p

这条命令回车之后需要输入mysql密码

二、开启远程访问

1
2
3
4
5
6
7
8
9
10
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
#找到bind-address=127.0.0.1直接注释
$ mysql -u root -p -h
#登陆mysql
mysql> use mysql;
#使用mysql这个库
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "hisen";
#把root用户改成可以在任何ip上登陆,并且密码为:hisen
mysql> flush privileges;
#刷新

重启:service mysql restart

接下来就可以在navicat里面连接了

三、注意事项

因为在网上找的很多教程,都是说改这个配置文件:这个是错误的

1
/etc/mysql/my.cf

如果是通过apt-get方式安装的,默认的是第二步那个配置文件

Mybatis中JavaType和jdbcType对应关系

JDBC TypeJava Type
CHARString
VARCHARString
LONGVARCHARString
NUMERICJava.math.BigDecimal
DECIMALJava.math.BigDecimal
BITboolean
BOOLEANboolean
TINYINTbyte
SMALLINTshort
INTEGERint
BIGINTlong
REALfloat
FLOATdouble
DOUBLEdouble
BINARYbyte[]
VARBINARYbyte[]
LONGVARBINARYbyte[]
DATEJava.sql.Date
TIMEJava.sql.Time
TIMESTAMPJava.sql.Timestamp
CLOBClob
BLOBBlob
ARRAYArray
DISTINCTmapping of underlying type
STRUCTStruct
REFRef
DATALINKJava.net.URL

不知道现在是不是还很多人首先就把关联的id放在where的第一位

这里有一个简单的对比,情况相同的时候,两个sql的时间相差八倍

优:0.077s

1
2
3
4
5
6
7
8
9
SELECT ew.all_amt ,
ew.customer_id,
cf.id,
cf.cert_id,
cf.acct_type
FROM ew_quota_info ew,
cf_customer cf
WHERE cf.acct_type in(2,3)
AND ew.customer_id = cf.id

劣:0.630s

1
2
3
4
5
6
7
8
9
SELECT ew.all_amt ,
ew.customer_id,
cf.id,
cf.cert_id,
cf.acct_type
FROM ew_quota_info ew,
cf_customer cf
WHERE ew.customer_id = cf.id
AND cf.acct_type in(2,3)

上述原因:where子句从后往前执行,应该把大的过滤条件放在后面
记录时间:2017年3月9日 10:44:59


有时候在linux环境下需要重新安装一下系统

这里我就说一下今天我安装的方法。

下载好ubuntu的镜像,随便放在一个非系统盘的根目录下

改名为:ubuntu.iso

1
2
3
4
5
6
7
8
9
10
11
sudo chmod 777 /boot/grub/grub.cfg
sudo vi /boot/grub/grub.cfg
#在 export linux_gfx_mode 下面添加如下内容
menuentry "install ubuntu powered by hisen" {
search --set -f /ubuntu.iso
loopback loop /ubuntu.iso
set root=(loop)
linux /casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu.iso
initrd /casper/initrd.lz
boot
}

保存退出,重启就会进入系统。

桌面上点击那个安装的图标即可完成重装

安装简单,下载官网的文件(with Java的比较方便)

解压之后在bin目录下执行

1
sudo sh idea.sh

就会进入安装程序,接下来会跳出图形界面,跟windows差不多的步骤

没有激活码可以看之前的文章

关键的一个是我发现网上说的建立桌面快捷方式不行

就这样弄个方便的

1
2
3
4
5
6
cd ~
ln -s /idea home/bin/idea.sh idea
#接下来执行 idea & 就可以打开,如果提示权限不够
#就执行 sudo idea &
sudo idea &
#后面的 & 代表后台运行的意思,不影响控制台

其实这玩意完全不要破解,直接官网注册就会给一个注册码

注册地址:https://zeroturnaround.com

注册完了之后在IDEA里面去设置,会提醒激活。

tomcat部署了项目之后,点击JR启动是可以热部署的!!!

改了Java代码都不要重新启动项目,哈哈!!!

今天先更改了 idea64.exe.vmoptions 这个配置文件

一直么有重启,后来就安装了个插件重启一下,结果就泪崩了

一直出现这个错误
IDEA failed to create jvm:error code -1,jvm:error code -1
总以为是环境变量配置的问题,或者是文件损坏了什么

重启,重装jdk,重新配置什么都试过,不管用。

后来替换了配置文件就好了!!!

解决方案

配置文件路径:

1
2
3
\IDEA HOME\bin\idea64.exe.vmoptions
或者
\IDEA HOME\bin\idea.exe.vmoptions

默认配置文件内容如下:

32bit

1
2
3
4
5
6
7
8
9
10
11
-server
-Xms128m
-Xmx512m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-DJava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow

64bit

1
2
3
4
5
6
7
8
9
10
-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-DJava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow

by the way:

IDEA 写博客真是舒服啊~

完全不用切换来切换去的!

count函数的作用

想要真正的理解count函数,我们就必须明白count函数的作用。

作用一:统计某一列非空(not null)值得数量,即统计某列有值得结果数,使用count(col)。

作用二:统计结果集的行数,此时不用管某列是否为null值。即使用count(*).

明白了这点,我们就应该知道MySQL的count(*)并不是想象中的那样,统计每一列的值,而是直接忽视掉所有列,直接统计行数,那么它的效率肯定是很高的。

但是有一点,当col指定了该字段为NOT NULL时实际上,MySQL会自动将count(col)转为count(*),但是这样也同样耗费了些时间,如果col没有指定为NOT NULL的话,那么效率就更低了,MySQL就必须要判断每一行的值是否为空。

所以综上所述,如果是要统计行数最好优先使用select count(*)

当统计某一列等于多少的值得时候可以使用下面两种方法:

1
2
SELECT SUM(IF(id = 23,1,0)) FROM table 
SELECT COUNT(id = 23 OR NULL) FROM table