自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

唛唛丶Information Technology

分享感悟、留下思索

  • 博客(82)
  • 资源 (8)
  • 收藏
  • 关注

原创 2020小结,迎战2021

2020,又悄悄的过了一年,感觉今年遇到了很多事情,又仿佛什么事都没有发生,只是大家都长大了一岁。工作和生活今年同样没有写博客,不是因为没有东西分享,而是时间基本都被工作和生活霸占,抓狂!!!好在工作上没有受疫情的影响,反而更加的认识到了互联网的重要意义。这里要十分感谢领导的信任和培养,同时也感谢同伴们的信任和帮助,和大家一起共事真的很开心,希望来年再接再厉,共同进步,合作愉快,少写bug。在生活中也有了很多的感悟,被LOL设计师劝退后,现在会花更多的时间在家庭上,每周都带着老婆孩子买菜逛超市,真.

2020-12-28 18:03:03 2018 10

原创 深入理解js闭包

一直觉得js闭包(closure)很神秘,今天就来看看js闭包是什么东西。谈到js闭包,就要说到变量的作用域,js中的变量作用域和java差不多,应该很好理解。一、变量的作用域变量的作用域无非就是两种:全局变量和局部变量。var n = 999;function f1(){  console.log(n);}f1();  //999n作为全局变量,函数内部也能获取到;换言之,...

2019-01-07 17:40:07 447

原创 如何理解数据库事务?我的回答是:

数据库事务(简称‘事务’)数据库事务是指作为单个逻辑工作单元执行的一系列数据库操作事务的特性ACID(Atomicity-原子性;Consistency-一致性;Isolation-隔离性;Durability-持久性)原子性:把整个事务执行看作一个不可再分的原子,也就是整个事务里的操作要么全部执行,要么都不执行(回滚-ROLLBACK)一致性:事务开始前和结束后,数据库原...

2018-03-05 13:42:12 3880 2

转载 真正的RESTFUL-API

转载:如何设计出优秀的Restful API?1 你一直在错误的使用http协议现在微服务真是火的一塌糊涂!大街小巷,逢人必谈微服务,各路大神纷纷忙着把自家的单体服务拆解成多个Web微小服务!而作为微服务之间通信的桥梁,Web API的设计就显得非常重要。Http是目前互联网使用最多的协议,没有之一!但是作为Http协议创始人之一的Roy Fielding认为,过去十年,大家都在错误的使用Http协议。删除一个数据,路径往往是 delete/{id} , 更新一条数据,路径往往被定义为update/{

2020-09-18 16:21:47 249

原创 2019小结,期待2020

转眼2019年已接近尾声,今年的市场行情比我想象的还要糟糕,有好多朋友相继被裁,虽然自己的工作也有点小变动,不过正好趁机总结一下今年的得与失,希望大家都能够砥砺前行,相信明天会越来越好。一、升级成为father你没猜错,程序员都生小棉袄,虽然工作上没有升职加薪,但这算得上是今年最大的喜悦,现在小宝宝六个月了,每天下班回家总是要先抱抱、亲亲,看着宝宝一天天长大,自己也变得越来越成熟了附上宝宝...

2019-11-25 17:15:48 3138 24

原创 三分钟学会java枚举类

什么是枚举 what枚举类enum是jdk1.5引入的,全称enumeration,和class、interface的地位一样,存在java.lang包中什么时候使用枚举 when当变量的值在一个固定的范围内变化时,建议优先使用枚举为什么使用枚举 why正常我们声明常量时public static final String SEASON_SPRING = "春天";public st...

2019-05-08 16:38:08 253

原创 一分钟搞懂泛型和Object的区别?

泛型声明public <T> T doSomeThing(T t){ return t;}Object声明public Object doSomeThing(Object obj){ return obj;}泛型引用String result = doSomeThing("参数是String");Object引用String result = (String...

2019-03-11 16:23:17 4147

原创 一行代码解决导出文件的文件名中文乱码问题

通常导出文件都是通过流的形式导出,当导出的文件名包含中文的时候,由于各大浏览器的内核不同,会出现一些浏览器导出的文件名正常,而某狐浏览器或某E浏览器就极有可能出现乱码,不用担心,我这行代码兼容所有的浏览器。response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + fileName);在响应头...

2019-01-24 10:15:56 5556 1

原创 JSR 303 - Bean Validation 基本介绍及常用注解

JSR 303 是什么?JSR-303 是 Java EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是hibernate Validator。JSR 303 能做什么?1.JSR 303 用于对java Bean 中的字段的值进行验证,使得基本的验证逻辑可以从业务代码中脱离出来。2.是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。都有些什么...

2019-01-23 14:48:13 2658

原创 五分钟理解什么是vue

做java开发三年来,最开始用的是jsp,后来freemarket,bootstrap等前端框架都用过,当时前端页面、后端代码都要自己写。现在流行前后端分离开发,就更专注后端开发,以api的形式开放接口给前端,不过还是对当前最流行的vue比较感兴趣,分享一个很有意义的视频, 五分钟帮助理解什么是vue.js...

2018-12-18 15:23:52 256

原创 快速上手设计模式12 - 责任链模式

终于把项目昨晚了,抽时间开始整理行为型的设计模式,责任链模式;责任链模式概述:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。不是很理解,举个简单的例子:我要请...

2018-12-18 11:19:58 129

原创 javascript基础

JavaScript(Java脚本)是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。简单的说,js能完成前端页面的逻辑操作。举个例子:<script>function displayDate(){ alert(Date());}</script><button type="button" onclick="...

2018-11-16 14:14:40 144

原创 快速上手设计模式11 - 享元模式

享元模式概念:使用共享对象进而有效地支持大量的细粒度的对象首先理解两个概念:内部状态、外部状态内部状态:在享元对象内部不随外界环境改变而改变的共享部分。外部状态:随着环境的改变而改变,不能够共享的状态就是外部状态。都不懂,很简单:现在有一个画图软件,能画出各种颜色的圆形。我们就可以把圆形作为享元对象,颜色就作为内部状态是可以共享的。首先创建享元类,圆形public cla...

2018-07-05 15:49:58 188

原创 快速上手设计模式10 - 外观模式

外观模式概念:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口很好理解的例子:电脑买好了,只需要按“开机”键就开机了,但对系统来讲开机过程其实挺复杂的,这个开机键就是外观模式的接口,而系统内部的复杂操作不需要外界知道。开机过程需要启动主板、CPU、内存/** 主板类 */public class Mainboard { public void startMain...

2018-07-05 11:07:41 144

原创 快速上手设计模式9 - 组合模式

组合模式概念:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。例子:网页通常有导航菜单,菜单分为一级菜单、二级菜单、三级菜单甚至更多,此时就适合用组合模式,表示菜单的树形结构。创建菜单类,同时提供引用自身对象的listpublic class Menu { /* 菜单等级 */ String level; /* ...

2018-07-04 13:49:23 157

原创 快速上手设计模式8 - 装饰模式

装饰模式概念:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。例子:还是以打官司为例子,不管过程和结果怎么样,我只是签字而已,可是对外我不能跟人说我只是签个字就赢了这个官司,此时我就需要把这全部的事迹请包装公司包装一下,然后由包装公司帮我对外说我是怎么怎么做才赢下的官司。还是先创建接口public interface Sourceable { /* 打官司 */...

2018-06-15 18:12:30 162

原创 快速上手设计模式7 - 代理模式

代理模式概念:给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。简单的例子:我请代理律师帮忙打官司,他知道法律相关的东西,而我不了解法律,我只知道签字,如果叫我去打官司我肯定打不赢,所以我叫代理律师代替我去打官司。创建接口public interface Sourceable { /* 打官司 */ public void lawsuit();}接口实...

2018-06-15 11:21:17 205

转载 java常用日志框架介绍

转载自:java常用日志框架介绍java日志概述对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul。java常用日志框架类别介绍Log4j Apache Log4j是一个基于J...

2018-06-13 11:46:27 232

原创 快速上手设计模式6 - 桥接模式

桥接模式概念:把抽象化与实现化解耦,使得二者可以独立变化。不懂,举例:每个公司都有电话转接器,每当客户打电话到总台,然后输入对应的分机号,就可以转接到对应工号的电话上了。这里的电话转接器就作为一个桥,起了桥接的作用,这就是桥接模式。首先创建电话接口,声明接电话方法public interface Phone { void sayHello();}然后至少创建两个实现类...

2018-06-12 17:36:44 168

原创 快速上手设计模式5 - 适配器模式

前面四篇博客已经把五种创建型的设计模式已经整理完,工厂方法模式和抽象工厂模式在我看来其实属于同一类型,详见快速上手设计模式2 - 工厂方法模式与抽象工厂模式 现在开始整理结构型的设计模式。 适配器模式概念:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。例子:我新买的充电器只能充安卓手机的电,但是我朋友的苹果手机也想充电,如果有一...

2018-06-12 15:44:56 207

原创 快速上手设计模式4 - 原型模式

概念:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。关键词:拷贝。获取对象不是通过new(类实例化)的方式,而是通过clone(拷贝)的方式最主要的优点:对象创建速度快,显著提升性能。适用场景:直接创建对象需要花费大量的资源,同时该对象需要大量重复的创建。例子:10000人的公司需要统一使用办公电脑,硬件环境每个人都一样,软件环境则根据每个人的需要自行安装。假设每...

2018-06-11 16:24:35 171

原创 快速上手设计模式3 - 建造者模式

建造者模式概念:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。不懂?换个解释: 想玩吃鸡,需要一个性能好一点的电脑主机,可是电脑主机有CPU、主板、内存等配件,如果每个配件都单独购买,就要考虑CPU与主板之间有匹配问题,主板与内存条之间也有匹配问题,作为小白的我不知道怎么办。所以商家直接给出了几个主机套装方案,我只需要选择一个套装方案,付钱,然后等装机师傅组装好就能...

2018-06-05 16:57:51 190

原创 快速上手设计模式2 - 工厂方法模式与抽象工厂模式

工厂方法模式和抽象工厂模式是两个不同的设计模式,但个人认为两种模式放到一起会更容易理解他们。工厂方法模式的概念:定义一个用于创建对象的接口,让子类决定实例化哪一个类,不懂?接着往下看。常见的工厂方法模式有几种:简单工厂、多方法工厂,工厂方法举例:通过工厂方法模式创建并获取一个因特尔CPU对象,假设这个CPU对象的创建过程很复杂。简单(静态)工厂:工厂静态声明了各个产品的创建接口和参...

2018-06-05 11:48:00 229

原创 快速上手设计模式1 - 单例模式

很久没有写博客了,最近抽时间来温习一下设计模式,首先整理一下最简单最基础的单例模式,它属于创建型的设计模式。废话不多说,直接上干货。概念:保证一个类只存在一个实例,并将这个实例供整个系统访问。常见的单例模式有五种:饿汉式、懒汉式、双重检查锁、静态内部类、枚举类型饿汉式:这个对象很饿、很急,程序加载就创建实例。关键词:staticpublic static class Singlet...

2018-06-01 15:11:13 283

原创 一分钟了解String、StringBuffer、StringBuilder的区别

对于String和StringBuffer的区别与联系,相信大多数人都知道: String是不可变的,一旦定义就不会改变,重新赋值只是新建了一个String对象。 StringBuffer是可变的,每次改变是对自身进行修改,因此在经常要对字符串进行拼接的情况最好用StringBuffer。 那为什么会有StringBuilder呢? 可以这么理解,StringBuffer和StringBui

2017-06-21 14:15:39 371

原创 JUnit自动化单元测试(五):参数化测试

要成为JUnit测试高手必不可少的一项技能就是参数化测试了,现在有一个方法根据不同的参数会有不同的结果,为了测试全面如果把所有可能的情况都逐个写出来测试一遍那未免太low了,此时就可以用参数化测试,举个例子:package junit.demo;import static org.junit.Assert.assertEquals;import java.util.Arrays;import

2017-05-23 15:39:21 4784 2

原创 JUnit自动化单元测试(四):@RunWith测试套件运行器的使用

一些常用的测试方法前面已经说了,但有人又说了,JUnit为项目里每个类都创建一个对应的测试类,虽然一次能把类里面所有的方法都测试一遍,但是,我一个项目有可能有上千百个类,总不能每个类都点一下进行测试吧。 没错,@RunWith注解就是为了这种情况,我们先声明用套件运行器进行测试,然后把需要进行测试的所有类放进套件(集合)里面,一次就可以把所有类所有方法测试完,也叫打包测试。当我们没有声明的时候默认

2017-05-23 14:20:20 9550 2

原创 JUnit自动化单元测试(三):各常用注解和测试函数详细讲解

@Test:将一个方法修饰成一个可测试的方法;只有@Test修饰之后,这个方法才会被JUnit执行。@Test(expected=XXException.class):表示这个方法一定会抛出某个异常;如果没有抛出该异常则测试失败。 //测试代码 @Test(expected = ArithmeticException.class) public void testDiv()

2017-05-22 14:04:29 2175

原创 JUnit自动化单元测试(二):简单测试实例讲解

自第一篇起,我们现在有了测试类TestCalcuate,默认是这样的package junit.demo;import static org.junit.Assert.*;import org.junit.Test;public class TestCalcuate { @Test public void testAdd() { fail("Not yet im

2017-05-22 10:36:39 2822

原创 JUnit自动化单元测试(一):生成测试类

废话不多说,直接上步骤。第一步:导入Junit4包到项目中。可以自己到网上下载junit4 jar包,也可以用JDE自带junit测试工具包。以Eclipse为例第二步,创建测试类。现有Calcuate类,要测试其加减乘除四个方法,在该类的包点击右键 new other… ,新建JUnit Test Case, 填好各参数下一步,选择要测试的函数完成。 第三步,生成测试类,可以开始测试

2017-05-19 11:42:32 12273

原创 一分钟理解自动化单元测试

一直以来都对自动化测试颇有好感,最近利用空闲时间了解了一下,分享给大家。首先科普一下测试界的金字塔。 UI测试表示面向用户的界面测试,也就是外部质量。单元测试表示内部代码的逻辑测试,也就是内部质量。集成/接口测试则是系统各模块间的测试,连接系统内外的测试。根据金字塔,很显然UI测试很重要在金字塔顶端,但是在如今的软件行业,我们应该把测试的重心放到单元测试上,其次再到接口测试,有了底层内部质量的保证

2017-05-18 11:03:22 1585

原创 一分钟搞懂mysql、oracle、sql server分页查询

假设表db_table里有100条记录,每页展示十条记录,现在分别用mysql、oracle、sql server实现分页查询第二页记录。 mysql:/** * select * from table limit firstIndex,pageSize * 说明:limit后第一个参数为起始下标,第二个参数为需要查询的记录数 * firstIndex:起始下标(从0开始) * pageS

2017-04-14 10:00:13 359

原创 一分钟理解乐观锁与悲观锁

悲观锁:很悲观,认为每个数据库操作都想修改数据,因此所有数据库操作(增删查改)都加锁。比较安全,能够实时反映完整数据,但是性能较低。 乐观锁:很乐观,认为每个数据库操作都不会冲突(同一时刻不会有另一个线程进行数据库修改操作)。于是就不加锁了,但是简单的这样实现肯定会出问题(万一同一时刻真有另一个线程进行修改操作呢),于是在每次进行数据更新操作时加锁,判断一下此次更新是否只有我一个人操作。较悲观锁性

2017-04-11 17:51:32 262

原创 数据结构整理(三)map接口

本文由本人对常见map接口下相关实现类进行整理,包括HashMap、HashTable、WeanHashMap、LinkedHashMap、TreeMap用表进行整理,一目了然,方便大家理解各map概念与用法。 是否有序存储形式是否线程同步(安全)是否允许空(null)值是否允许相同元素其他特性HashMap无序数组+链表不同步

2017-04-11 13:39:04 339

原创 数据结构整理(二)Collection集合接口

本文主要整理Collection集合相关接口。Collection接口下有两个子接口List和Set,本着大家浅显易懂和便于自我整理的思想,本人整理了一个表。List:List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引来访问List中的元素,这类似于Java的数组。Set:不包含重复的元素的Collection,即任意的两个元素e1和e2都有

2017-04-07 17:14:38 314

原创 数据结构整理(一)Collection与Map

名词解释:Collection:接口,所有集合接口的父接口,提供更具体的子接口(如 Set 和 List)实现;Collections:类,为集合提供服务的工具类;Map:接口,图,不同于集合,以key-value键值对对数据进行存取;Collection与Map关系Collection├ List│ ├ LinkedList│ ├ ArrayList│ └

2017-04-07 16:01:06 385

原创 JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

在linux环境下配置项目运行环境时,部署的人员都会分配一下内存,以保证程序正常的运行。其实在开发的时候(window系统),就已经涉及到内存分配了,只是这些参数有默认值,因此一直没有去重视它。 以Myeclipse为例,在Preferences->Java->Installed JREs下面,就有设置jvm内存分配。 这里我们就可以配置内存,一般我们见到的都是-Xms128m -Xmx512m

2017-04-07 11:29:33 31735 2

转载 LINUX 20个常用命令

转载自:http://blog.csdn.net/ljianhui/article/details/11100625/从事软件开发工作,或多或少的会与linux或unix操作系统打交道,在工作中总结一些常用的命令还是挺有用的,至少我们知道了他的存在,至于用的时候再百度详细的参数也来得及。1、cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,

2017-04-06 15:30:52 392

原创 单例模式的八种写法比较

原文 http://tianweili.github.io/blog/2015/03/02/singleton-pattern/ 单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式。但是除了这两种方式,本文还会介绍其他几种实现单例的方式,让我们来一起看看吧。简介单例模式是一种常用的软件设计模式,其定义是单例

2017-04-01 15:04:03 261

原创 深入理解编码字符的发展史

1.鼻祖,ascii,7位(bit)范围128计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码。ASCII码由一个字节中的7位(bit)表示,范围是0x00 - 0x7F 共128个字符。2.随之出现扩展ascii,8位范围256后来他们突然发现,如果需要按照表格方式打印这些字符的时候,缺少了“制表符”。于是又扩展了ASCII的定义,使用一个字节的全部...

2017-04-01 13:49:24 1694

JDBC连接包

我自己写的一个JDBC连接包,仅适用于mysql

2015-09-28

struts开发包

Struts开发用到文件操作时所需的jar包,

2015-09-24

struts2开发基础包

struts2框架开发必须基础jar包,使用时放到项目lib文件夹下面即可

2015-09-17

java中使用JSON必须jar包

java中使用JSON必须使用的jar包,

2015-09-09

静态web表格管理(菜单)

用JQuery简单实现的一个静态web表格管理器

2015-09-09

Jquery-1.8.0

Jquery-1.8.0.js,使用Jquery需要的jar包,

2015-09-09

jquery1.8线下教程

jquery线下教程,帮助文档,查看也比较方便,

2015-09-09

W3CSchool线下教程完整版

W3CSchool线下教程完整版,个人比较喜欢,不用联网就能查看,像JDK一样方便。

2015-09-01

空空如也

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

TA关注的人

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