- 博客(343)
- 资源 (1)
- 收藏
- 关注
原创 文件类型检查工具:jmimemagic源码解析
在开发中,经常会有上传文件的需求,为了安全起见,防止上传恶意文件,需要对文件类型进行检查。网上一般有两种方式:1、对文件扩展名进行检查,符合指定扩展名的文件才可以上传成功2、对文件头进行检查,文件头的魔数符合预期(每种文件的魔数都是已知的),才可以上传成功第1种方式有明显的缺陷,用户可以通过修改扩展名来通过检查,第2种方式可以满足绝大多数场景,但是也有缺点,它不去判断文件扩展名...
2017-06-22 23:05:34 1663
原创 文件类型检查工具:jmimemagic源码解析
查,符合指定扩展名的文件才可以上传成功2、对文件头进行检查,文件头的魔数符合预期(每种文件的魔数都是已知的),才可以上传成功第1种方式有明显的缺陷,用户可以通过修改扩展名来通过检查,第2种方式可以满足绝大多数场景,但是也有缺点,它不去判断文件扩展名 jmimemagic就是利用文件头中的魔数来判断文件类型的开源工具。其地址见:https://github.com/arimus/jmimemagic.git 其获取文件类型流程如下: 说明:1、整个过程中,涉及几
2017-06-22 23:05:34 560
原创 可执行jar包的配置与运行
spring boot项目可以以jar包的形式执行运行。spring boot技术目前很火,因此了解可运行jar包的制作和执行过程很重要。1、项目结构如下2、我们以config模块为例子,其gradle文件配置如下group 'spring-cloud-in-action'version '1.0-SNAPSHOT'apply plugin: 'java'sou...
2017-06-04 19:42:17 587
原创 统计指定目录下指定类型文件的行数
需求:通知指定项目下面指定类型文件(java、properties、xml等)的行数 关键代码:#!/bin/bash#统计指定目录下面指定类型文件的行数targetDirFile=$1;fileType="*."$2; totalLines=0;while read linedo let count=$(find $line -type f -...
2017-05-17 00:37:15 317
原创 统计指定目录下指定类型文件的行数
;fileType="*."$2; totalLines=0;while read linedo let count=$(find $line -type f -name "$fileType" | xargs cat | wc -l); let totalLines=$totalLines+$count;done < $targetDirFileecho "total lines of type fi
2017-05-17 00:37:15 162
原创 oracle数据库在windows上的安装及plsql配置
之前一直想在自己的电脑上安装oracle数据库及plsql客户端,各种尝试,最开始尝试在centos上安装oracle,但是缺失各种插件,插件一个一个安装,最后还是安装失败。之后转向在windows(减少了插件的安装)上安装oracle,数据库倒是安装成功了,但是plsql客户端配置不好。今天专门抽时间在专门的虚拟机上安装oracle和plsql,经过查找资料,最后安装成功,特此记录。 ...
2017-02-25 19:04:24 286
原创 perl小程序
目的:将参数代表的文件中的内容正序和反序输出来 程序在one文件中,代码如下:#! /usr/bin/perluse strict ;use warnings ;my $count = 0 ;my @contents ;while (defined(my $line = <>)){ $count += 1 ; pus...
2017-01-15 23:17:46 188
原创 perl小程序
while (defined(my $line = <>)){ $count += 1 ; push @contents , $line ; print "$line" ;}print "===========reverse print================\n";while(@contents>0){ print(pop(@conten
2017-01-15 23:17:46 345
原创 查看占用指定端口的进程
根据端口号,查找对应的进程,具体如下:1、netstat -alp | grep 2181 2、根据得到的进程号3567去获取具体的进程:ps -aux | grep 3567 3、我们得到端口2181是被zookeeper占用了...
2016-12-19 21:28:19 234
原创 MySQL自定义函数编写
需求:对于数据库中的记录,如果有两条连续的数据的value字段的值相同,则发邮件通知相关人员。 需求分析:告警系统里面的告警检查是通过SQL来进行的,一般的SQL实现不了此功能,因此,这里可以通过函数的方式来实现。 具体实现如下:1、数据表准备:tb_config_record。新建数据表脚本如下: create table tb_config_record ...
2016-11-09 23:29:47 2483
原创 MySQL与Oracle中一致性读的相同点与差异
一、问题的提出 一个操作执行select * from tb_trade_record where product_type = ‘BOOK’语句,假设表tb_trade_record初始时有1000000行数据,整个select过程持续10分钟。会话1在8:00发起这个select操作(这时,满足product_type = ‘BOOK’的记录有10000条),8:02时,...
2016-11-06 22:54:02 481
原创 mysql explain的使用及理解
[url=http://blog.csdn.net/dbanote/article/details/17580735]http://blog.csdn.net/dbanote/article/details/17580735[/url]
2016-10-16 11:11:22 141
原创 mysql:触发器和存储过程
1.触发器 1.1 编写触发器[code="sql"]delimiter $create trigger tg_insertTestWhenInsertUserafter insert on tb_userfor each rowbegininsert into tb_test(id) values(1);end$delimiter ;[/code]...
2016-07-31 22:46:49 131
原创 mysql:触发器和存储过程
ter ;[/code] 1.2.查看触发器 [code="sql"]mysql> select * from information_schema.`triggers` \G;*************************** 1. row *************************** TRIGGER_CATALOG: def TRIGGER_SCHEMA: db_jersey
2016-07-31 22:46:49 94
原创 runjetty
[code="java"]#!/bin/bashif [ -z ${log_home} ] ; then log_home="/tmp/logs/jersey-app" if [ ! -d ${log_home} ] ; then mkdir -p ${log_home} fifiexport root_dir=$0/.....
2016-05-14 09:13:58 107
原创 runjetty
export GRADLE_OPTS=" -XX:PermSize=128M -XX:MaxPermSize=256m -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6096"if [ "z"$JREBEL_HOME != "z" ] ; thenexport GRADLE_OPTS=
2016-05-14 09:13:58 97
原创 jdk动态代理实现原理
jdk的动态代理即使用反射来实现,具体由Proxy、InvocationHandler等类来实现的。具体调用过程比较难理解,但是如果看到生成的代理类就不难理解了。代码如下:接口类:Calculator.java[code="java"]package com.yangjianzhou.javaBasics;/** * Created by yangjia...
2016-05-09 23:12:12 92
原创 jdk动态代理实现原理
代码如下:接口类:Calculator.java[code="java"]package com.yangjianzhou.javaBasics;/** * Created by yangjianzhou on 16-5-8. */public interface Calculator { public int add(int operator1 , int operator2);}[/code]实现类:Cal
2016-05-09 23:12:12 73
原创 spring常见注解
[code="java"]1.Autowired通过spring的依赖注入功能来装配(注入)bean,这个注入动作是通过org.springframework.beans.factory.config.BeanPostProcessor来进行的,因此,BeanPostProcessor或者BeanFactoryPostProcessor中的引用不能通过Autowired来注入2.疑...
2016-05-01 23:33:20 144
原创 spring常见注解
anPostProcessor或者BeanFactoryPostProcessor中的引用不能通过Autowired来注入2.疑问:Autowired与InjectParam的区别3.Autowired与Resource的区别 (1).Autowired是spring的注解,Resource是jdk的注解 (2).Autowired默认按照类型来注入,可以使用Qualifier来指定主要注入的bean;Resource默认按照名称来注入,可以使用name和type来指定注入的
2016-05-01 23:33:20 80
原创 ssh secure shell链接linux服务器时弹出Server responded "Algorithm negotiation failed"解决方案...
问题:ssh secure shell链接linux服务器时弹出Server responded "Algorithm negotiation failed" 错误。[img]http://dl2.iteye.com/upload/attachment/0116/9959/971edc7e-320c-3e06-bfb3-1964a9dc1f68.png[/img]解决方案:...
2016-04-26 19:11:04 1256
原创 ssh secure shell链接linux服务器时弹出Server responded "Algorithm negotiation failed"解决
9dc1f68.png[/img]解决方案:在/etc/ssh/sshd_config后面添加[code="java"]Ciphers aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,arcfourKexAlgorithms diffie-hellman-group1-sha1[/code]重启 ssh服务之后就可以连接了
2016-04-26 19:11:04 187
原创 数据来自两个系统时的内存分页算法
业务数据来自a-app与b-app,其中a-app中数据的业务时间早于b-app,现在需要对这两个来源的数据做内存分页查询。[code="java"]public ResultGson mergePaginationQuery(int pageNo, int pageSize) { ResultGson productPaginationResultGson = ne...
2016-04-24 23:12:08 519
原创 数据来自两个系统时的内存分页算法
ery(int pageNo, int pageSize) { ResultGson productPaginationResultGson = new ResultGson("000", "success", null); ResultGson paginationOneResultGson = paginationOneQuery(pageNo, pageSize); ResultGson pagination
2016-04-24 23:12:08 176
原创 linux下java web开发环境搭建
一般的java web开发涉及到的开发工具有:jdk、tomcat、git、gradle、eclipse、intelli idea以及在linux下面ibus中文输入法的安装、文本编辑器sublime安装1、jdk安装 (1).目录新建与源文件解压[img]http://dl2.iteye.com/upload/attachment/0116/4855/cde4af5f-1df7-...
2016-04-10 14:09:07 134
原创 第一个shell脚本
第一个shell脚本,直接上脚本[code="java"]# /bin/sh#if test $# -eq 0#then# echo "please input file name :"#else# rm -rf $1# echo "file $1 is deleted!"#fideclare total=0for((index =...
2015-12-26 00:48:29 92
原创 第一个shell脚本
total=0for((index = 0; index < 5; index++)) do let total=$[$total + $index] echo "current total = $total" done echo "at last total = $total"[/code]运行结果:[code="java"]yangjianzhou@OptiPl
2015-12-26 00:48:29 99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人