HiSEN

Personal Technology Blog


  • 归档

  • 分类

  • 标签

  • 书单

  • 关于

  • 搜索
close
HiSEN

MySQL索引相关知识和应用

发表于 2017-05-18 | 分类于 mysql

hisen库中有一个post表,数据20w,非重复数据20条;

结构如下

1
2
3
4
5
6
7
8
9
mysql> describe post;
+---------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(255) | YES | MUL | NULL | |
| content | varchar(2550) | YES | | NULL | |
+---------+---------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

添加普通索引

1
2
3
mysql> alter table post add index index_post_title (title);
Query OK, 0 rows affected (1.22 sec)
Records: 0 Duplicates: 0 Warnings: 0

删除索引

1
2
3
mysql> drop index index_post_title on post;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

添加索引之后查询速度明显加快

1
2
3
4
mysql> select count(title) from post group by title;
20 rows in set (0.25 sec)
#加了索引之后
20 rows in set (0.08 sec)

使用索引的情况

  1. 表的主关键字:自动建立唯一索引
  2. 表的字段唯一约束:ORACLE利用索引来保证数据的完整性
  3. 直接条件查询的字段
  4. 在SQL中用于条件约束的字段
  5. 查询中与其它表关联的字段
  6. 查询中排序的字段
  7. 查询中统计或分组统计的字段

不使用索引的情况

  1. 表记录太少
  2. 经常插入、删除、修改的表
  3. 数据重复且分布平均的表字段:假如10万数据只有A、B状态,且A、B各50%,这样建立索引就不会提速
  4. 经常和主字段一块查询但主字段索引值比较多的表字段

MySql在建立索引优化时需要注意的问题

阅读全文 »
HiSEN

MySQL下A库的a表导入到B库的b表

发表于 2017-05-16 | 分类于 mysql
数据库名称表名
employeesemployees
hisenemployee

现在想把第一行的数据导入到第二行,具体如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> describe employees;
+------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no | int(11) | NO | PRI | NULL | |
| birth_date | date | NO | | NULL | |
| first_name | varchar(14) | NO | | NULL | |
| last_name | varchar(16) | NO | | NULL | |
| gender | enum('M','F') | NO | | NULL | |
| hire_date | date | NO | | NULL | |
+------------+---------------+------+-----+---------+-------+
6 rows in set

mysql> select count(*) from employees;
+----------+
| count(*) |
+----------+
| 300024 |
+----------+
1 row in set

employees数据库中的employees表有30万数据

我想把这个数据导出到另外一个数据库hisen中的employee表中

具体操作如下

阅读全文 »

HiSEN

Data URI scheme 利用base64字符串通过image标签显示图片

发表于 2017-05-12 | 分类于 java

目前,Data URI scheme支持的类型有:

  1. data:,文本数据
  2. data:text/plain,文本数据
  3. data:text/html,HTML代码
  4. data:text/html;base64,base64编码的HTML代码
  5. data:text/css,CSS代码
  6. data:text/css;base64,base64编码的CSS代码
  7. data:text/javascript,Javascript代码
  8. data:text/javascript;base64,base64编码的Javascript代码
  9. data:image/gif;base64,base64编码的gif图片数据
  10. data:image/png;base64,base64编码的png图片数据
  11. data:image/jpeg;base64,base64编码的jpeg图片数据
  12. data:image/x-icon;base64,base64编码的icon图片数据

Data URL是在本地直接绘制图片,不是从服务器加载,所以节省了HTTP连接,起到加速网页的作用。

也无法获取到图片在服务器上的真实地址

注意:本方法适合于小图片,大图片就不要考虑了,另外IE8以下浏览器不支持这种方法。

用这种方法会加重客户端的CPU和内存负担,总之有利有弊。

前台代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page import="com.hisen.image.ShowImageByBase64" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2017/5/11
Time: 18:55
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% String imageStr = ShowImageByBase64.showimage();%>
<html>
<head>
<title>Title</title>
</head>
<body>
<img src="data:image/png;base64,<%=imageStr%>" alt="base64图片"/>
</body>
</html>

后台代码:

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
package com.hisen.image;

import com.hisen.utils.Base64Util;
import com.hisen.utils.File2ByteArraysUtil;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import sun.misc.BASE64Encoder;

/**
* <img src="data:image/png;base64,<%=imageStr%>" alt="base64image"/>
* Created by hisenyuan on 2017/5/11 at 18:44.
*/
public class ShowImageByBase64 {

public static String showimage() {
//写相对路径会报错,暂时不知道如何解决
String imagePath = "C:\\1\\830.jpg";
byte[] bytes = File2ByteArraysUtil.file2Bytes(imagePath);
String s = Base64Util.encodeBase64(bytes);
return s;
}

/**
* sun.misc.BASE64Encoder
*/
public static String encodeBase64(byte[] str) {
if (str == null) {
return null;
} else {
BASE64Encoder encoder = new BASE64Encoder();
try {
return encoder.encode(str);
} catch (Exception var3) {
return null;
}
}
}

/***
* file2byte[]
* @param path
* @return
*/
public static byte[] file2Bytes(String path) {
byte[] buffer = null;
File file = new File(path);
try {
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
byte[] b = new byte[1000];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return buffer;
}
}

HiSEN

笔记本在BIOS Setup里面设置双显卡模式

发表于 2017-05-09 | 分类于 软件

我的本子是双显卡的,英特尔的核芯显卡和英伟达的独显

但是之前完全没有把独显用上,在英伟达的设置里选择使用显卡感觉也没有用

后来找到在BIOS里面设置,貌似管用,联想的机子可以看看

其他的机子应该也差不多

连接:http://iknow.lenovo.com/detail/dc_102471.html

1
2
3
6. IdeaPad Z380/Z480/Z580/U310/U410,Lenovo G480A/V370A/V470A/V570A
依次选择“Configuration”、“Graphic Device”,其中有两个选项:Optimus表示可切换显卡模式;
UMA Only表示集显模式。选择好后,按F10并根据提示保存退出即可。

我的默认居然是:UMA Only

HiSEN

Linux安装tree命令 - apt-get install tree

发表于 2017-05-03 | 分类于 linux

目前debian系列的系统都无法使用apt-get install tree来安装tree命令

以下是安装步骤

1
2
3
4
5
6
7
8
9
#下载(官网为:http://mama.indstate.edu/users/ice/tree/)
wget http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
#解压
tar -zxvf tree-1.7.0.tgz
#进入目录
cd tree-1.7.0
#安装
sudo make install
#完毕

最简单的使用方法,在目录下输入:tree

使用效果

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
hisen@ubuntu:~/dl$ tree
.
├── hisen.log
├── master
└── test_db-master
├── Changelog
├── employees_partitioned_5.1.sql
├── employees_partitioned.sql
├── employees.sql
├── images
│   ├── employees.gif
│   ├── employees.jpg
│   └── employees.png
├── load_departments.dump
├── load_dept_emp.dump
├── load_dept_manager.dump
├── load_employees.dump
├── load_salaries1.dump
├── load_salaries2.dump
├── load_salaries3.dump
├── load_titles.dump
├── objects.sql
├── README.md
├── sakila
│   ├── README.md
│   ├── sakila-mv-data.sql
│   └── sakila-mv-schema.sql
├── show_elapsed.sql
├── sql_test.sh
├── test_employees_md5.sql
└── test_employees_sha.sql

3 directories, 26 files

使用参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
tree命令行参数:

-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

HiSEN

github api - github api中文说明

发表于 2017-04-28

github api的网址

1
https://api.github.com/

这里介绍两个api

1
2
#获取个人信息
https://api.github.com/users/{user};

key含义value
login登录名称hisen-yuan
id数字编号16789019
avatar_url头像地址https://avatars1.githubusercontent.com/u/16789019?v=3
name用户昵称hisenyuan
blog博客地址http://hisen.me
location地理位置China
bio个人说明Java R & D
public_repos仓库个数11
created_at创建时间2016-01-20 01:57:15Z
updated_at最后更新2017-04-20 14:03:27Z
1
2
#获取项目信息
https://api.github.com/users/{user}/repos
key含义value
id项目编号88646378
name项目名称dubbo
html_url项目地址https://github.com/hisen-yuan/dubbo
created_at创建时间2017-04-18T16:21:57Z
updated_at更新时间2017-04-18T16:23:16Z
pushed_at提交时间2017-04-19T02:33:33Z
size项目大小6514
language编程语言Java

github提供的所有api

阅读全文 »

HiSEN

Java获取股票信息 - java获取股票信息接口

发表于 2017-04-27 | 分类于 java

用下面的接口获取股票的数据

sh:代表上海市场

sz:代表深圳市场

后面是加上股票代码,这是因为上海和深圳的股票代码有重复的

1
http://hq.sinajs.cn/list=sh600877

返回的信息

1
var hq_str_sh600877="中国嘉陵,6.340,6.400,6.360,6.470,6.210,6.340,6.350,15012913,95227966.000,56500,6.340,12100,6.330,16100,6.320,17500,6.310,47400,6.300,13600,6.350,11300,6.360,32400,6.370,39100,6.380,41200,6.390,2017-04-27,15:00:00,00";

有效信息为引号里面的数据

下面的数字代表分割数组后所在的下标

下面是数据字段对应的含义

源代码:GetStockInformation.java

表格如下:

阅读全文 »

HiSEN

MySQL decode - MySQL中类似oracle的decode实现方法

发表于 2017-04-27 | 分类于 mysql

在oracle中直接有decode函数 decode(cola,null,0)

表示如果cola为空,赋值为0

在mysql中的具体实现如下,

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
mysql> describe book;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| book_id | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| number | int(11) | NO | | NULL | |
+---------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> select * from book;
+---------+-------------------------+--------+
| book_id | name | number |
+---------+-------------------------+--------+
| 123 | 123 | 122 |
| 1000 | Java程序设计 | 5 |
| 1001 | 数据结构 | 9 |
| 1002 | 设计模式 | 10 |
| 1003 | 编译原理 | 10 |
| 1004 | MySQL从删库到跑路 | 100 |
| 1005 | 活着 | 10 |
| 1232 | 11111 | 124 |
| 2001 | 测试 | 2001 |
| 10064 | 老鼠爱大米 | 10088 |
| 10066 | 老鼠爱大米 | 1008 |
| 10088 | 测试宝典 | 1008 |
| 10096 | maven实战 | 10096 |
| 11111 | 111111 | 11111 |
| 12311 | 都懂得 | 1222 |
| 123222 | 222 | 1111 |
+---------+-------------------------+--------+
16 rows in set (0.00 sec)

mysql> select if(count(b.book_id)=16,"十六","不是十六") '结果' from book b;
+--------+
| 结果 |
+--------+
| 十六 |
+--------+
1 row in set (0.00 sec)

mysql> select case count(b.book_id) when 16 then '十六' else '其他' end as '结果' from book b;
+--------+
| 结果 |
+--------+
| 十六 |
+--------+
1 row in set (0.00 sec)

HiSEN

Java原生类库java.util.zip - 文件夹压缩与解压

发表于 2017-04-26 | 分类于 java

到处搜了一下也没有看到专门做好的jar包

真实的目录结构如下:

1
2
3
4
5
6
7
C:\1\hisenyuan\build.png
C:\1\hisenyuan\DSCN6812.JPG
C:\1\hisenyuan\test\test\hello.zip
C:\1\hisenyuan\test\hisenyuan.zip
C:\1\hisenyuan\test\test.txt
C:\1\hisenyuan\test\test\hello\hello.txt
C:\1\hisenyuan\tomcat.png

压缩包的目录结构如下:

1
2
3
4
5
6
7
build.png
DSCN6812.JPG
test\hello.zip
test\hisenyuan.zip
test\test.txt
test\hello\hello.txt
tomcat.png

全部代码如下:

阅读全文 »

HiSEN

zookeeper & dubbo搭建 - 在IDEA上运行阿里巴巴Dubbo-demo

发表于 2017-04-19 | 分类于 java

IDEA上搭建dubbo服务的简单过程

只是简单的让例子在IntelliJ IDEA跑起来

目前是最新的版本:2.5.4-SNAPSHOT

本文档更新时间:2017年04月19日01:08:02

一 、安装zookeeper

参考链接:ubuntu apt-get安装zookeeper

二、Idea clone本项目

导出项目之后,配置一下tomcat,添加dubbo-admin:war到tomcat中

项目github地址:https://github.com/hisen-yuan/dubbo

三、启动tomcat,即可访问dubbo管理后台

默认账号:root

默认密码:root

四、启动服务提供者&消费者demo

  1. 修改dubbo-demo-consumer配置文件中的注册中心地址
    1
    /dubbo/dubbo-demo/dubbo-demo-consumer/src/test/resources/dubbo.properties
1
2
3
#dubbo.registry.address=multicast://224.5.6.7:1234
#使用本地的zookeeper做注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
  1. 修改ubbo-demo-provider配置文件中的注册中心地址
    1
    /dubbo/dubbo-demo/dubbo-demo-provider/src/test/resources/dubbo.properties
1
2
3
#dubbo.registry.address=multicast://224.5.6.7:1234
#使用本地的zookeeper做注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
  1. 分别启动dubbo-demo下ubbo-demo-provider、dubbo-demo-consumer下的测试方法

即可在后台看到有服务在运行

1…161718…27
hisenyuan

hisenyuan

Java R & D

266 日志
33 分类
112 标签
GitHub Weibo
Links
  • 科技爱好者周刊
  • 美团技术团队
  • duanple(老师木)
  • 当然我在扯淡(王垠)
  • 段永平的博客
  • 梦殇国际
© 2016 - 2024 hisenyuan
由 Hexo 强力驱动
您是第  个访问者    |   
主题 - NexT.Mist