- 博客(118)
- 资源 (35)
- 收藏
- 关注
原创 WebGistats——一个能用web访问的git提交统计工具
介绍-------------------------------------------------------------------------------------------------------------------- WebGistats---------------------------------------------------------------------------
2020-05-10 10:32:39
338
原创 JUC共享锁之Semaphore
Semaphore原意是指信号量,从API的注释:"Semaphores are often used to restrict the number of threads than can access some (physical or logical) resource"可以看出,Semaphore一般是用来限制线程能够使用的资源个数.应用场景在Web开发中,Semaphore可以用来...
2019-07-01 12:50:11
306
原创 如何将jar包发布到中央仓库
之前在github上开发了一个简单的项目,一直想把这个jar包发布到中央仓库。一直没有时间弄这个,今天抽出点时间,按照网上的例子,操作了一遍,顺便记录一下,一遍将来参考。我的开发环境是ubuntu18.04,maven3,整个过程还是比较顺利的。注册JIRA账号打开https://issues.sonatype.org/secure/Dashboard.jspa ,用邮箱注册即可。创建i...
2019-06-21 23:16:47
1362
原创 Freemarker中如何避免xss漏洞
什么是XSS漏洞试想一下,如果我们开发一个订单系统,订单名称如果没有做限制,允许用户输入任意字符,那么就有产生XSS的危险。攻击者可以很容易编写一个恶意JS脚本,然后将当前登录用户的cookie或者其他敏感信息抓取到,发送给攻击者自己,这就是XSS(跨站脚本)攻击。如何解决这个问题,首先我们想到的是在用户输入订单的时候,我们对订单名称做限制,不允许输入特殊字符。这样是可以避免的,不过对于一个大的...
2019-06-20 20:52:06
3329
3
原创 VirtualBox虚拟机和宿主机实现网络互通配置
由于想要在本地测试一下syslog以及安装jenkins等需求,所以想在本地安装一个虚拟机,并且能够在宿主机上访问,所以想利于virtualbox上安装一个linux来实现,尝试了几次,其实配置挺简单的,这里记录一下。接入方式对比VirtualBox的提供了四种网络接入模式NAT 网络地址转换模式(NAT,Network Address Translation) :宿主机做nat转换...
2019-06-20 18:53:57
3752
原创 记一次重写RequestMappingHandlerMapping的经历
近期公司的产品做了一次安全审查,发现后端提供的接口有不安全的Http方法漏洞。不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY 等。其中最常见的为TRACE方法可以回显服务器收到的请求,主要用于测试或诊断,恶意攻击者可以利用该方法进行跨站跟踪攻击(即XST攻击),从而进行网站钓鱼、盗取管理员cookie等。原因分析引起这个问题的原因其实很简单,因为开发人员开发接口的...
2019-06-20 09:34:26
4237
原创 如何从jar包中读取配置文件
今天开发的时候遇到一个问题——当程序以jar包运行的时候,有个txt配置文件无法获取到,但是本地测试无法复现.后来发现是因为以Jar包形式运行,文件无法访问到,这里记录一下。1. 如何判断当前进程是否以jar包形式运行的?/** * 是否以Jar包运行 * * @return */public static boolean isRunningInJar() ...
2018-08-05 14:14:06
3367
原创 基于Ngxtop的QPS监控
之前参与一个公有云项目的开发,系统入口是公有云平台提供的LB。云平台的LB再将请求转发到后方的多台Nginx,Nginx上再做反向代理到后方的服务器。为了获取系统的QPS,我们在Nginx服务器上写了个定时任务脚本,定期采集并发量,然后汇总。并发量采集脚本先安装ngxtop 依次运行:sudo yum -y install epel-releasesudo ...
2018-07-14 12:40:10
2354
转载 异步线程池优化记录
转自: http://heqiao2010.com/articles/2018/06/22/1529662276856.html 目前在公司做的一个无线Wi-Fi认证系统,采用公有云模式,24小时不间断服务,而且在上班时间会有业务并发的高峰,目前高峰值能到4000多的qps,在这个领域来说,还是比较高的。在这种场景下需要将一些操作异步执行,以提高页面的响应速度,比如某些情况下将大对象入库,...
2018-06-25 08:51:24
844
原创 用shell编写的几个支持http接口测试的工具方法
后续还会更新。#!/bin/sh#author joel#URLencode方法url_encode(){ echo "$1" | tr -d '\n' | xxd -plain | sed 's/\(..\)/%\1/g' | tr -d '\n' return 0}#URLdecode方法url_decode(){ printf $(ech
2017-11-08 23:38:49
2891
转载 Nginx开启gzip
在nginx主配置文件http域增加: gzip on; gzip_comp_level 6; gzip_proxied any; gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xm
2017-05-26 14:01:55
552
原创 摘要认证客户端demo
摘要认证 目前对于对外的接口安全,采用的认证方式接触到最多的就是Basic认证和摘要认证;由于Basic认证安全性比较低,目前在项目中用的多的还是摘要认证;对于调用摘要认证接口,下面给出一个简单的测试demo。 其实对于给第三方提供接口,最理想最可控的方式还是走Oauth2.0。demo 代码:package com.github.heqiao2010;import java.net
2017-04-30 13:56:34
1460
转载 工厂模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:单例模式应该是23种设计模式中最简单的一种模式了。它有以下几个要素:私的构造方法指向自己实例的私静态引用以自己实例为返回值的静态的公的方法单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。饿汉式单例在单例类被加载时候,就实例化一个对象交
2015-11-16 09:12:08
556
转载 原型模式
原型模式在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的:原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过
2015-11-11 08:39:36
737
原创 中国农历的Java实现
中国农历支持公历范围为:1900-01-31到2099-12-31范围内,农历日期和公历日期的转换。实现思路通过记录1900年-2099年间的农历信息到二维数组中,经过查询和相关计算就能实现公历日期和农历日期之间的转化。 例如: { 8, 131, 301, 331, 429, 528, 627, 726, 825, 924, 1023, 1122, 1222, 1320 }, // 1900
2015-09-07 22:14:06
5543
原创 Java实现基于百度地图的坐标拾取功能
功能用Java实现通过调用百度地图API,实现查找地点经纬度和范围的功能。注意百度地图地点搜索接口需要认证,且有访问限制:每天只能访问50万次。用法GeofencingDialog dialog = new GeofencingDialog(); dialog.setVisible(true); //显示对话框 String radius = dialog.getRadiusStr();
2015-08-05 15:35:21
5547
原创 Oracle对没有主键的表分页
一般情况对于有主键,能够做唯一表识的表,我们可以利用主键和rownum配合实现,例如:select scott.emp.* from scott.emp left join (select empno id, rownum num from scott.emp) id_num on scott.emp.empno = id_num.id where id_nu
2015-07-22 23:53:37
1636
原创 杭电OJ:1018
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-04-16 10:17:14
1099
原创 RSA算法Java的简单实现
RSA简介RSA算法据说是目前地球上最重要的加密算法。维基百科是这么介绍的:“对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法,那么RSA的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA密钥才可能被暴力破解。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方
2015-03-30 22:07:40
10427
2
原创 用软碟同(UtroISO)制作install.win大于4G的启动盘
用软碟通制作win7启动U盘的过程很简单,基本上就是下面两步:1.2.不过今天遇到的问题比较特殊,镜像中的install.win文件大小为4.01G恰好大于4G,而制作好的启动U盘文件系统格式为FAT32不能识别大于4G的文件。所以按照上面步骤制作的启动U盘中的install.win文件是损坏的。这里的解决办法如下:用windows自带的convert.exe程序将启动
2015-03-23 22:19:51
14858
2
转载 ListView中Item无法获取点击事件的解决方案
记录下自己所犯的错误,在写ListView的点击事件时OnItemClickListener,onItemClick方法没有执行,导致ListView条目点击事件失效,检查发现百度上有很多不同的答案,但究其本质都是ListView的Item抢占焦点或者Item没有获取焦点甚至没有绑定上OnItemClickListener监听事件,而我所犯的错误是在ListView的Item布局中引入了一个Sty
2014-04-03 14:52:32
1984
原创 父Activity获取子Activity的返回值
在Android开发中,经常会通过某个父Activity启动一个子Activity,用户在子Activity上的操作信息又需要返回给父Activity。对于这种需求,我们不是在父Activity直接调用startActivity函数来启动子Activity,而是调用startActivityForResult函数。例如:Intent intent = new Intent();
2014-04-01 14:37:05
4580
转载 Java Calendar的几个注意
Java中对日期的处理需要用到Calendar类,其中有几个方法在使用时需要新手注意。1. 在获取月份时,Calendar.MONTH + 1 的原因Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需
2014-03-25 20:02:29
1407
转载 Eclipse编码设置
一般Java文件编码格式是UTF-8的。以下以默认GBK改为UTF-8为例。 1.改变整个工作空间的编码格式,这样以后新建的文件也是新设置的编码格式。 eclipse->window->preferences->General->workspaceTypes->Other->UTF-8->OK 汉化版:eclipse->窗口->首选项->常规->工作空间->其它->UTF-8-
2014-03-24 16:08:30
824
原创 Python实现的简单计算器
Source Code:__author__ = 'Joel'class ExpStack(): #init method def __init__(self): self.top = -1 self.data = [] #whether Stack is empty def is_empty(self):
2014-02-28 23:02:51
10479
2
转载 ubuntu安装光盘修复grub-rescue引导失败问题
1、步骤一 以试用方式进入ubuntu光盘系统,打开终端(快捷键ctrl+alt+t);2、步骤二 获取root权限,sudo -i;3、步骤三 列出所有的磁盘分区,fdisk -l;4、步骤四 挂载根目录的分区,mount /dev/sdaX /mnt,其中X代表你的ubuntu系统的分区号;5、步骤五(可选) 如果boot分区独立于根分区,则要挂载boot分
2014-02-28 21:55:47
3065
转载 Your Ubuntu 12.04 is running in 2D mode,Many features will not be available.(on Ubuntu 12.04)解决方法
Here is the solution I found to the issue (quoting from another site) :http://nerdysermons.blogspot.in/2011/11/solve-graphic-driver-errors-unity-3d.htmlThere are 3 suggested methods that are
2014-02-28 21:03:38
1450
原创 对控制反转的理解
1. 起源马丁·富勒:哪些方面的控制被反转了? 马丁·富勒:依赖对象的获得被反转了。 2. 什么是反转依赖对象:大多数应用程序都是由两个或是更多的类通过彼此的合作来实现业务逻辑,这使得每个对象都需要与其合作的对象的引用。例如Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。而是用控制反转,则A的代码只
2014-01-22 19:08:53
1990
原创 对Java反射机制的认识
1. Java反射机制是动态语言的一种特质动态类型语言和静态类型语言的主要区别:在编译期检查变量类型还是在运行期检查编译类型,比如静态语言:C,C++ 动态语言:Shell,python,JS 等。而反射允许Java把对某些类的类型检查的过程推迟到运行时。 2. 反射的特点反射机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的c
2014-01-22 18:49:41
1380
转载 Ubuntu:dpkg更新管理器出错及解决
【问题描述】cvsd 已经是最新的版本了。升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。有 5 个软件包没有被完全安装或卸载。解压缩后会消耗掉 0B 的额外空间。正在设置 mysql-server-5.1 (5.1.41-3ubuntu12.3) ...停止在这里不动ps -aux 找到 sudo apt-get
2013-12-22 18:27:49
3688
转载 Eclipse开发过程中个VM Arguments的设置
1:jre中的Default VM Arguments: -Xms256M -Xmx640M -XX:PermSize=256m -XX:MaxPermSize=768m2:Tomcat的Optional Java VM Arguments: -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m3:eclipse.ini中: -v
2013-12-19 14:30:58
3189
转载 Eclipse--java.lang.OutOfMemoryError: PermGen space
这一段时间,Eclipse总是死掉,几乎是稍微操作快一点就会死掉,几分钟一次,搞得人郁闷至极。浪费了不少时间,在网上搜了下,看到很多朋友也出现类似的情况,在网上求救,但是网上的办法都只是说通过修改eclipse.ini文件来加大Eclipse的内存。 自己试了下,发现不管用。今天,又死掉了,不过爆出一个经常出现的错误,大意是:permgen space导致内存溢出。实在忍无可忍,上
2013-12-17 14:12:39
957
原创 对MVC的初步理解
MVC即Model-View-Control设计模式,将软件分成了三个部分,很好的将业务逻辑与数据显示分离。Model:数据模型用于封装业务逻辑相关数据,以及对数据处理方法,例如程序员编写程序应有的功能,数据库专家进行数据库设计和数据库管理。模型可以直接访问数据而不依赖与视图或者控制器。并且模型并不关心他自己是如何被操作或者被显示的;模型的变化可以通过刷新的机制被显示在视图上。
2013-12-15 19:56:53
1431
原创 Java实现表达式计算器
下午闲的没事,就用以前写的一个表达式计算器类,写了一个带界面的简单的计算器。界面如下:由于第一次使用Swing,不是很了解,界面元素没有布局,而是直接通过像素来定位的,-_-||例如加减乘除按钮:if (oJbadd == null) { oJbadd = new javax.swing.JButton(); oJbadd.setBounds(PAD
2013-12-15 17:02:53
2986
原创 python学习笔记:五
python 标准类型之TupleTuple (元组)是不可变 list。 一旦创建了一个 tuple 就不能以任何方式改变它。定义 tuple>>> t = ("a", "b", "mpilgrim", "z", "example") 1>>> t('a', 'b', 'mpilgrim', 'z', 'example')>>> t[0]
2013-11-30 12:19:21
1091
原创 python学习笔记:四
python 标准类型之ListList可以说是python标准类型中用的最频繁的类型。记得大一刚学C语言的时候,不知到怎么把几个不同的数据对象,放到同一个数组或者链表中,问了老师也没找到解决方法,直到后来遇到了void* 。而在python里面,用List便可轻松实现,可见使用弱类型的语言有时可能比使用强类型的语言,能够提高不少效率。定义 List>>> li = ["a
2013-11-30 10:46:47
1001
转载 ubuntu jdk1.7(oracle)安装
转自:http://hbin.iteye.com/blog/11481471、到 Oracle 官网下载 JDK 7 的二进制压缩包。下载地址:http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz 2、解压。我求方便,就把压缩包放下用户目录下,然后打开终端:Bash代码
2013-11-29 16:04:04
1165
原创 python学习笔记:三
不可变量Python中的不可变量有:数值类型、字符串、元组。什么是不可变量呢?不可变量就是一旦生成就不能更改的变量。比如python中一个int型的正数a=2,在运行时就不能被更改了。但是程序明明可以做a += 1,这样的算法呀?!当时我看到这一块儿的时候就有这样的疑问。其实python在算a += 1的时候其实是新生成一个新的正数,然后把这个新的对象的引用传递给a,而原来旧的对象
2013-11-26 21:10:17
1081
原创 python学习笔记:二
文件操作:Open函数格式handle = open(file_name, ‘r’) #open后接文件名和打开方式,‘r’:只读,‘w’:可写,‘+’:读写, 'a' 表示添加,'b'表示二进制访问。Example:__author__ = 'Joe'#! coding: utf-8def write_into_file(): """向文件test.txt文件中,
2013-11-26 20:58:30
1006
原创 每天学点Linux:八
X-windows基础xinit & 启动基本的X-windows服务器(没有 windows管理器). "&"使命令运行在后台. startx & 启动X-windows服务器和默认windows管理器.就象在带有Win3.1的DOS下键入"win" . startx -- :1 & 在显示进程1中启动另一个X-windows(默认显示进程为0
2013-11-06 08:21:03
1019
Android父Activity获取子Activity返回信息demo
2014-04-01
Python实现带GUI的计算器
2014-03-04
Java实现带图形界面的表达式计算器
2013-12-15
VC6.0,OpenCV实现人脸特征检测
2013-11-06
Android 计算器(表达式计算器)
2013-08-23
Android基于距离传感器的自动锁屏程序
2013-08-20
QT小游戏-细菌病毒战
2013-05-11
Head First Python
2013-05-04
TuneUpUtilities2013以及注册机
2012-12-31
WinLy and Burg
2012-12-17
Android Apps with Eclipse.pdf
2012-11-30
JavaFx 2.0
2012-10-30
Numerical.Analysis.using.Matlab.and.Spreadsheets
2012-10-30
高质量C++-C编程指南
2012-10-25
Artificial Intelligence A Modern Approach 3rd Edition
2011-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人