以出世的精神干入世的事情,志存高远却又不拘泥于眼前的小事,杂事,乱事。这才能以坦荡的胸怀干成大事,这就是中庸。

2017-05-24
数字签名

加密算法

公钥加密算法又称为非对称加密算法,包含一个 公钥-私钥对,称为密钥对 key pair

公钥加密的只能私钥解密, 私钥加密的只能用公钥解密

常用的非对称加密算法有: RSA , DSA

信息摘要

对任意长度的输入内容进行Hash运算,得到一个固定长度的数据。 输出数据称为消息摘要。(Digest)

常用的消息摘要算法(Hash算法): MD5, SHA-1

阅读此文

2017-05-16
引用awesome打造漂亮图标

  1. 引用css文件
  2. 将awesome文件引入工程路径,并修改font-awesome.min.css的字体文件路径。

如果你也不想修改字体的路径,可以按照如下目录结构放置即可

-awesome

​ -css

​ font-awesome.min.css

​ -font

​ fontawesome-webfont.woff

​ … and so on

用法讲解:

只需要将<i class="icon-search"></i> 添加到想要设置图标的文字之前即可。加上空格会更美观

如:

1
<button><i class="icon-search"></i> 搜索</button>

icon-search 这样的图标样式awesome都已经帮我们定义好了,我们只需要引用即可。

下面用一幅图展示截取截止目前可用的图标样式:(来源官网)

阅读此文

2017-05-04
Java执行Python、Shell

问题描述

​ 使用阿里的datax进行数据的同步,一开始用手动同步,在shell命令行执行python命令,没毛病。现在需要改成定时自动增量同步。所以使用Spring来实现定时任务的执行。这就涉及到使用JAVA来调用python脚本了,执行后,发现数据都没有同步成功。

问题分析

​ 一开始用Process对象的getInputStream()获取输出结果,只有部分的输出结果,对比直接在shell命令行执行的输出结果还少了很多日志打印。

​ 接着就怀疑是不是datax打印的日志太多了导致语句不能正常执行,于是就把logback.xml的stdout输出注释掉。问题依旧。

​ 于是就在想怎么查看错误日志,看了datax的log目录底下的日志,没有错误信息。 通过 Process对象的 getErrorStream查看到了错误信息: /bin/sh/: java : command not found

阅读此文

2017-01-14
Ubuntu安装后传

替换阿里源

  1. cd /etc/apt
  2. sudo cp sources.list sources.list.bak
  3. sudo vim sources.list
  4. 删除原来的源,替换成下面的三个源
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
# 阿里源
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
# 东北大学
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial main restricted #Added by software-properties
deb http://mirror.neu.edu.cn/ubuntu/ xenial main restricted
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial restricted multiverse universe #Added by software-properties
deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirror.neu.edu.cn/ubuntu/ xenial universe
deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates universe
deb http://mirror.neu.edu.cn/ubuntu/ xenial multiverse
deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirror.neu.edu.cn/ubuntu/ xenial-security universe
deb http://mirror.neu.edu.cn/ubuntu/ xenial-security multiverse
# 清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
  1. 替换好源之后,执行sudo apt-get update  更新

    阅读此文

2016-03-20
Spring cron 表达式

Spring Cron 表达式的格式如下:

秒 分 时 日 月 星期

秒: 0-59
分: 0-59
时: 0-23
日: 1-31
月: 1-12
星期:1-7 (1-星期天, 2-星期一,3-星期二,4-星期三 ... ...)
阅读此文

2016-01-28
JQuery滚动加载

场景:

在某系统遇到用户注册这样的功能,而注册需要将注册用户属于哪个单位也选上,以前做出的效果可能没那么理想(以前是用树形结构做的,每展开一级就加载下一级的数据。 因为数据量极大不可能一下子将所有的部门单位都加载出来)。 基于这种情况,我将其改成带搜索功能的输入选择框,并且输入某个关键字之后的弹窗里面的单位列表支持下拉滚动。同时也支持上一级单位和下一级单位的切换。 这样就解决了数据量太多导致树形控件难以使用的问题。

具体的下拉滚动代码大致如下:

阅读此文

2016-01-28
window.open 窗口存在继续打开

场景:

用JQuery模拟出类似window桌面, 当点击模拟出来的桌面上的某一个菜单图标的时候,要在浏览器上打开一个新的标签页,代表打开的那个模块, 如果再次点击刚才那个菜单,不能再另开一个标签页,而是让第一次打开的标签页获得焦点。

于是,就有了下面这段代码, 代码不能直接复用,根据自己需要小小修改一下即可。

-- 其中 win 是全局变量, id 和 url 都是动态的,每一个菜单都有自己的一套配置,basePath 指向web应用的根路径,如: http://127.0.0.1:8080/yourweb/

win = window.open("",id+"_window"); 
if(win.location.href==="about:blank"){
    // 窗口不存在
    win = window.open(basePath + url, id+"_window");
} else {
    window.focus();
    // 如果要刷新 --> win.location.href = basePath + url ;
}

<<< 捐赠 >>>

转载请注明出处! 原文地址: http://webinglin.github.io

2016-01-28
MySQL 分区

MySQL分区

在mysql中如果数据量太大了,除了分表还可以分区。对于单个表进行分区。分区分为横向分区和纵向分区。

  • 横向分区: 切分行,将某一些行分到某一个分区中。
  • 纵向分区: 切分列,将某一些列分到某一个分区。

目前我实践过的是横向分区。

可以通过下面命令来判断当前的mysql版本支不支持分区

mysql> show variables like "%part%";

如果支持的话,变量的值是 YES

分区的方式有好几种,分别是:

阅读此文

2015-12-11
Mysql 查询性能优化

先前写过一篇关于Mysql入库性能调优的文章,既然入库了,数据必然是要使用的,查询并以某种可视化的方式展现数据是很常见的使用方式。(如:D3.JS,Echarts,Highchart, i2 或是 其他的可视化工具)。

寒天一滴水,点点在心头。这里记录下Mysql优化的一些学习笔记。

  • 对于查询的优化,首先应该避免全表扫描,所以在where 及 order by涉及到的列上建索引。
阅读此文

2015-12-01
Mysql 入库性能优化

最近在开发一个数据量比较大的模块,此模块涉及到要把数据存入中间表,因为数据量太大了,无法一次性的加载到内存中分析。关键是分析的结果还要进行分页,排序,因此保存在中间表方便后续操作。曾想把中间结果存到MongoDB,但是数据量太大了,内存耗不起,况且MongoDB 比较适合存放那些原原本本的数据,查询过程中要尽量避免计算,统计等。 在我们现有的架构中,还有SolrMysql,但是由于Solr比较适合做全文检索,不适合当成数据库使用(一旦SolrQuery复杂一点,感觉Solr的查询速度相比建了索引的Mysql也是较慢的),况且 MongoDBSolr也不适合做一些复杂的统计。最终选择了Mysql作为存放中间数据的数据库。

我们当前的架构包含了Hibernate,如果使用Hibernate的批量插入那肯定不行啦,所以,首先想到的是最原始的jdbc的批量操作。

阅读此文