自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(56)
  • 资源 (13)
  • 收藏
  • 关注

原创 RestTemplate中的URLEncode

文章目录0. 起因1. 经过2. 结论0. 起因正常情况下 url 只会出现英文字母、数字和标点符号,特殊字符会在请求前进行 encode 操作,转化成合法的 url。 例如我们用浏览器在百度上搜索 += 时,浏览器实际上访问的是 https://www.baidu.com/s?wd=%2B%3D。encode 操作其实是将需要转码的字符转为 16 进制,然后从右到左,取 4 位(不足 4 ...

2018-12-24 08:50:36 7572 3

原创 authorize(基于注解的权限认证框架)

一、是什么很多项目都会用到权限管理,目前流行的权限框架(Apache Shiro,Spring Security等)在使用的时候都觉得很繁琐,特别是在一些小型的项目中。有时候我会想,如果通过注解的方式,直接把权限注解到访问的接口方法上那该有多好。 authorize就是一个为了解决这个问题,通过注解配置权限,借助拦截器进行权限检查的一个权限框架。使用起来就像下面这种感觉。@Access(...

2018-05-20 09:47:48 11223

原创 发布jar包到maven中央仓库

一、写在前面最近做了一个权限认证的框架,想把jar发布到maven中央仓库上,方便大家使用。于是就有了这篇博客。二、具体步骤2.1 注册账号首先要做的就是注册账号,这个账号可用于提出申请groupId的Issue,也可用于发布和登录到中央仓库。2.1.1 注册sonatype工单地址:https://issues.sonatype.org 2.2 申请grou...

2018-05-19 10:18:52 1250

原创 Spring StateMachine

一、状态机有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在电商场景(订单、物流、售后)、社交(IM消息投递)、分布式集群管理(分布式计算平台任务编排)等场景都有大规模的使用。状态机的要素:状态机可归纳为4个要素,现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。1 现态:指...

2018-05-07 13:18:24 2908 5

原创 单元测试总结

1.软件测试软件测试是一种用来鉴定软件的正确性、完整性、安全性和质量的过程。主要包括单元测试、集成测试和功能测试等。1.1 单元测试主要由开发人员进行,确保程序单元符合预期。1.2 集成测试主要由开发人员进行,测试整体程序等功能和性能。1.3 功能测试主要由测试人员进行,测试程序是否符合预期。2.单元测试内容模块接口测试模块局部数据结构测试模块边界条件测试...

2018-04-17 10:25:38 383

原创 Spring Cloud Config 使用本地配置文件

一、简介在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config clie...

2018-02-08 17:50:54 30801 3

原创 Spring Cloud 保证微服务内安全

一、简介在微服务的架构下,我们需要把系统的业务划分成多个单一的微服务。每个微服务都会提供接口供其他微服务调用,在Dubbo中可以通过rmi、nio等实现,Spring Cloud中是通过http调用的。但有些时候,我们只希望用户通过我们的网关调用微服务,不允许用户直接请求微服务。这时我们就可以借助Spring Security来保障安全。二、使用步骤2.1 在提供接口的微服务项...

2018-02-08 11:41:57 4712

原创 数据库设计的三大范式

数据库范式的定义在设计数据库的时候,为了设计出合理的关系型数据库,就需要遵循一些规范要求,这些规范要求被成为数据库范式。 目前,关系型数据库主要有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。一般来说,数据库满足前三个范式就可以了。第一范式(1NF)定义所谓第一范式(1N

2018-01-29 13:20:39 359

原创 最短路径(弗洛伊德算法)

1.定义概述Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。2.实例演示/** * 弗洛伊德算法求最短路径 * @author sunbufu * */public class ShortestPathFloyd { /**无穷大*/

2017-11-08 15:58:28 397

原创 最短路径(迪杰斯特拉)

1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。2.实例演示设结点1为起点,依次求到其它结点的最短路径。 /** * 迪杰斯特拉算法求最短路径 * @author sunbufu * */public class ShortestPathDijkstra {

2017-11-08 13:54:20 304

原创 Android电量View

电量View,效果如下: 1电量组件主要分三部分电池的外框,电池的头和电量。/** * 电量显示控件 */public class BatteryStateView extends View { private int mPower = 100; public BatteryStateView(Context context) { super(context);

2017-07-31 15:33:37 639

原创 RxJava工具类

为了快速实现在UI线程或者IO线程中工作,实现了一下工具类。当时参考了许多博客,可惜当时没有记录,现在也回忆不起来了。写在这里以备以后的使用。1 RxjavaUtil.java/** * Rxjava封装工具类 */public class RxjavaUtil { /** * 在ui线程中工作 * @param uiTask */ public s

2017-07-31 13:33:17 679

原创 Kotlin版LogUtil

最近在学习Kotlin,把一些常用的java版本的Util重新用Kotlin写了一遍,算是一边学习,一边做些轮子吧。 运行效果如图所示: package sunbufu.mykotlin.utilimport android.util.Log/** * 日志工具类 * @author sunbufu */class LogUtil { companion object {

2017-06-04 09:47:37 1695

转载 JAVA线程池

Executor两级调度模型 在HotSpot虚拟机中,Java中的线程将会被一一映射为操作系统的线程。 在Java虚拟机层面,用户将多个任务提交给Executor框架,Executor负责分配线程执行它们; 在操作系统层面,操作系统再将这些线程分配给处理器执行。Executor结构 Executor框架中的所有类可以分成三类: 1. 任务 任务有两种类型:Runnable和Cal

2017-04-05 18:41:00 262

原创 快速排序

快速排序是目前所有排序中性能较好的一种算法,最好情况和平均情况下时间复杂度均为O(nlogn),最坏的情况下时间复杂度为O(n^2)。快速排序采用递归,用空间换取时间。由于使用了递归,因此需要额外的存储空间。package sort;public class MyQuickSort { /** * 快速排序 * 快速排序的思想是选择一个基准数,把小于基准数的数字放到左边,大

2017-04-05 17:51:00 259

原创 JAVA获取IP

HttpServletRequest的getRemoteAddr()在经过反向代理后就无效了。 /** * 获取http请求ip地址 * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String i

2017-04-05 17:04:15 290

转载 JVM调优参数

常见配置汇总堆设置-Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Ede

2017-04-05 16:44:06 305

原创 请求转发与重定向

1. 重定向客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问student_list.jsp,紧接着客户端受到这

2017-03-27 10:34:52 373

原创 SQL总结

一、SQL定义SQL语言的全称是Structured Query Language,即结构化查询语言。1、SQL分类1)DQL(Data Query Language 数据查询语言)查询语句只有一种,即SELECT语句。2)DML(Data Manipulation Language 数据操作语言)包括:INSERT、UPDATE、DELETE等常用语句。3)DDL(Data Definition

2017-03-27 10:21:25 405

原创 最小堆的JAVA实现

package sunbufu.sort;/** * 堆排序 * * 0 * 1 2 * 3 4 5 6 * * 在二叉树中: * 因为 * 根节点下标=左节点下标-1/2 * 根节点下标=右节点下标-2/2 * 所以 * 左节点下标=

2017-03-18 18:38:18 2880 2

原创 北京的春天下过雨

下雨了,天空阴了下来。雨滴慢慢的打在公交车的玻璃窗上,也打在马路上。大约是十年前,那时候我应该在邻村上小学。学校到家的路程大约要走20分钟。每当下雨的时候,路上就会变的格外宁静,那时候的雨滴在我的伞上,也滴在路边的树上。不,那时候的我应该穿的是雨衣,那种穿上了就叠不整齐的雨衣。恍惚间有点旧时的相似,雨有点相似,树有点相似,人有点相似。不同的是我现在在北京,那时的我在山东;不同的是我现在在车上,那是的

2016-05-03 08:51:14 805 1

原创 ANE总结(Android+iPhone)

一、新建工程1、新建Android工程记得选中Mark this project as a library1.1 构建路径导入Jar包FlashRuntimeExtensions.jar 路径如:flashbuilder\sdks\4.6.0\lib\android\1.2 三个必须类:实现FREFunction,实现其中的call方法。call方法是真正和android交互的方法。继承FRE

2016-03-09 13:39:31 883

转载 设计模式(四)

本章讲讲第三类和第四类。19、备忘录模式(Memento)主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。做个图来分析一下: Original类是原始类,里面有需要保存的属性value及

2016-01-15 17:07:56 242

转载 设计模式(三)

先来张图,看看这11中模式的关系: 第一类:通过父类与子类的关系进行实现。第二类:两个类之间。第三类:类的状态。第四类:通过中间类13、策略模式(strategy)策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,

2016-01-15 16:42:13 190

转载 设计模式(二)

我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图: 6、适配器模式(Adapter)适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式

2016-01-06 09:14:09 317

转载 设计模式(一)

设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用

2016-01-04 13:34:03 234

转载 JS分页案例

JS分页案例项目中经常会用到分页,自己写了一个但是实在太难看,整理了半天后放弃了。于是在网上找了一个挺不错的,稍微修改后记录在此,以后方便使用。 效果如下: <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>分页演示</title> </head> <body>

2015-12-30 11:24:47 364

原创 Struts2的拦截器

一、Struts2的拦截器1.1 概念Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP(Aspect-Oriented Programming)的一种实现. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Strut

2015-11-25 15:15:40 398 2

转载 Java实现AES加密

一、AES的定义高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成

2015-11-24 17:14:59 367

转载 Struts2 XML配置

1. 深入Struts2的配置文件本部分主要介绍struts.xml的常用配置。1.1. 包配置:Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。 在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置。它的常用属性有

2015-11-17 20:19:24 348

原创 Struts2

一、Struts21.1 Struts2的定义Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以St

2015-11-17 17:47:32 331

转载 Servlet作用域

所谓“作用域”就是通过设置属性的方式,将一些信息绑定到对象上。Servlet 中能够设置属性的对象有ServletRequest/HttpServletRequest、HttpSession、ServletContext。用于存储、查询和删除这些属性的方法对于所有的作用域都是相同的。它们是:Object getAttribute(String name); void setAttribute

2015-11-15 15:21:46 749

原创 Java反射

一、Java反射1.1 Java反射的定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言

2015-11-15 14:22:05 307

转载 通过Servlet生成验证码图片

一、BufferedImage类介绍生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片package gacl.response.study;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.

2015-11-12 10:20:24 528

原创 AJax

一、AJax定义AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。AJax的优点页面无刷新不打断用户的操作,用户的体验好。按需

2015-11-10 17:59:22 263

转载 JQuery

1、JQuery的实现方式2、JQuery的选择器3、JQuery的操作属性4、JQuery操作文档结构5、JQuery操作事件6、JQuery操作AJax

2015-11-09 09:55:54 378

转载 Servlet 3.0 新特性

Servlet 3.0 新特性概述Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋,同时也获得了 Java 社区的一片赞誉之声: 1. 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,

2015-11-06 13:25:37 313

转载 Servlet过滤器和监听器

一、过滤器实现javax.servlet.Filter接口; 一般客户端发出请求后会交给Servlet;如果过滤器存在,则客户端发出的请求都是先交给过滤器,然后交给Servlet;我们可以完成一些在执行Servlet之前必须要做的事,比如request.setCharacterEncoding("GB2312"); 必须实现以下方法:public void init(FilterConfig

2015-11-05 15:02:47 336

转载 JSTL表达式与EL表达式

EL表达式1、EL简介1)语法结构${expression}2)[]与.运算符EL 提供.和[]两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。 例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如: ${sessionScope

2015-11-04 17:25:34 3068

原创 JSP

一、JSP的定义JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。1.1 JSP的生命周期编译阶段: se

2015-11-04 09:02:46 491

Nginx开发从入门到精通【pdf】版

淘宝团队的作品,Nginx开发从入门到精通。

2016-01-22

materialize框架下载

Materialize 是一个基于材料设计的一个现代化的响应式前端框架。他们做了最繁重的工作,为您提供默认的样式,结合了您的自定义组件。此外,他们还改进动画和过渡,为开发人员提供流畅的体验。 因为天朝网络的缘故,下载可能会出现一些奇怪的问题,所有在此提供版本下载。

2015-11-05

fatjar 新Eclipse版

fatjar可以安装到eclipse,可以将图片音频等资料一起打包到一个jar内

2015-10-30

Innosetup 中文汉化版

Innosetup 中文汉化版可以打包软件成软件安装包,可以自定义软件的所属信息,并能够自动生成卸载软件的功能。

2015-10-27

exe4j 绿色版

exe4j是一款很经典的将Java类文件打包成.exe文件的软件,支持把jar class文件等编译成windows下能够直接运行的exe文件,还可以添加启动等待画面。此版本为绿色版

2015-10-27

Flappy T-Rex Java源码

仿照Google的Flappy T-Rex写的一个山寨版,Java语言写的,希望能够帮到想了解下的朋友,如果小弟写的实在不堪入目,还请轻喷。

2015-10-26

pd4ml html转pdf

java通过pd4ml将html转成pdf,完美解决中文乱码和水印问题

2015-10-26

S_MarkDownEditor_setup_32 v1.2

S_MarkDownEditor_64位的安装包,这是一款本人用Java语言写的MarkDown编辑器,这是上一个的v1.2版本,提供了导出pdf功能。

2015-10-23

S_MarkDownEditor_setup_64 v1.2

S_MarkDownEditor_64位的安装包,这是一款本人用Java语言写的MarkDown编辑器,这是上一个的v1.2版本,提供了导出pdf功能。

2015-10-23

S_MarkDownEditor_setup_32

一款本人开发的MarkDown阅读和编辑工具。

2015-10-16

S_MarkDownEditor_setup_64

S_MarkDownEditor_64位的安装包,这是一款本人用Java语言写的MarkDown编辑器,如果想在没有java环境下运行需要先配置环境,如果大家需要,我也可以编译一个带jvm的版本。

2015-10-16

S_MarkDownEditor绿色版

本人写的一款用来编辑和阅读MarkDown的阅读器,因为一直想做个开源项目,虽然这个项目很小,但算是迈出的第一步吧。最近几天整理资料准备开源。

2015-10-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除