- 我的消息
- 我的博客
- 我的学院
- 我的下载
- 我的收藏
- 消息
-
-
【Java】Lombok 插件
这是一个比较奇特的插件。基于注解,使我们的代码更简洁,帮助我们生成一些getter,setter或者tostring之类的代码。 使用方式: 1.引入maven: org.projectlombok lombok 1.16.10 ...
原创2018-04-24 21:39:3090 -
【Tomcat】pipeline valve 设计模式
这里侧重设计模式的角度,具体结合tomcat细节的运行机制,准备在另一篇写。 只有先把这个模式抽出来理解清楚,再看tomcat的实现会更简单。 pipeline模式并不难理解,类似servlet规范中的filter。指的是一个pipeline,需要多个阀门串行处理,流水线作业。 那么很简单,...
原创2018-04-22 12:00:3950 -
【servlet】获取参数
1.context级别,整个应用共享:在web.xml里定义: <context-param> <param-name>dbname</param-name&...
原创2018-04-18 23:49:2960 -
【servlet】路径匹配 url-pattern
servlet有自己的一套匹配规则。大致分三种,精确,路径和后缀。先说路径:以/开头且以/*结尾的是路径匹配,该路径下的所有url都会被匹配。如果可以匹配多个路径,那么以最长的为结果。后缀:*.xxx。固定写法,*前面不能有东西,不能和路径匹配一起用,比如/abc/*.txt是不允许的。有一种特殊...
原创2018-04-18 23:36:3250 -
【数据结构与算法】base64 原理(转载)
今天排了一个base64的bug,mark一个不错的博客,之后再整理:https://blog.csdn.net/aozeahj/article/details/52507352
转载2018-04-18 19:20:4680 -
【maven】archetype创建项目 目录丢失
通过maven命令创建的项目总是和别人不一样,少了一些目录。比如:通过这个quick-start生成的目录结构没有resources文件夹:后来知道可以手动添加解决,但是貌似没人探究为什么会这样,忍不住略微查了查。原来每一个archetype的模板也是一个jar文件,里面定义了项目的目录结构,可以...
原创2018-04-17 21:43:4880 -
【Java】common-logging 日志解耦
之前介绍了常用的日志组件log4j的使用,如果直接使用log4j会有一个问题,那就是我们的应用会与日志组件耦合太紧,如果想要换一个日志的实现比如log4j2(只是举个例子,没准真的可以无缝升级),可能我们需要把每一个调用了log4j接口的地方全部修改,如果是一个大工程,这个非常头疼也可能出错。所以...
原创2018-04-15 19:14:0390 -
【java】工具类 设计思路
我们经常会写一些工具类,策略类的代码。这些类在功能上类似一个函数,那么最好的办法就是把接口设计成static的,使用方不需要new出来,只需要clazz.method()即可。这样省去了创建对象的空间,不需要gc用过的对象,而且简化了工具类的使用,不用关心new。但是有时候,我们的工具类没有这么简...
原创2018-04-14 21:55:3590 -
【Java】为什么接口interface里的 变量是 static final 的?
今天突然问自己,接口的变量为什么是static和final的?static:必须。因为接口是可以多继承的。如果一个类实现了两个接口,且两个接口都具有相同名字的变量,此时这个变量可以被实现类使用,那么如果不是static的,这个变量来自哪一个接口就会产生歧义,所以实现类使用接口中的变量必须通过接口名...
原创2018-04-10 13:16:37270 -
【Java】继承
尽量不要为了复用代码而使用继承。具体指,别人在其他包里开发的类,此时为了复用直接继承。也就是那个类的开发维护并不是由我们来掌控。这是因为由于自用性的存在,我们必须十分了解父类的实现,而且,父类随时可能更改,子类的一些假设会被推翻。什么是自用性?就是父类里面的方法调用了其他父类里面的方法,这个现象在...
原创2018-04-10 11:23:47100 -
【maven】属性
maven中共有六种属性:1.内置属性:${basedir}:项目根目录${version}:项目版本2.pom属性:根据pom中固定tag的层级关系,不包括自定义的properties。比如:${project.groupId}3.setting属性:用户目录下的setting.xml中的元素。...
原创2018-04-08 22:27:12100 -
【Java】log4j 基本配置
为什么需要在项目中导入日志组件?当然,如果我们可以自己完全实现那就不说什么了,但是实际上没有人有时间去实现一个功能强大的日志组件。那么,如果不借助现成的,我们一般就是systemout一些,这种只能应付简单的情况,在大型项目中完全不够用,比如多种输出配置,需要输出到文件,需要输出到数据库等,输出到...
原创2018-04-05 18:27:08150 -
【maven】生命周期和插件 看这篇就够了!
maven生命周期指的是特定的一组有序的阶段。软件构建过程经过多年来的总结和发展,其实总归会有几个阶段,比如编译,测试,打包等,而且内置是有一定的顺序。所以maven所做的就是把这些经验性的总结吸收到自己的理念中,规范出一套通用的流程,这样maven的使用者就不用再重复地关心这个过程。maven最...
原创2018-04-04 15:02:21130 -
【maven】resources 标签
默认maven只会把src/main/resources目录下的文件拷贝至classes文件夹下,这个其实是在超级pom下定义好的: <build> <directory>${project.base...
原创2018-04-02 23:03:20130 -
【maven】profile 配置不同环境
profile确实是一项很有用的功能,因为我们的项目的运行环境可以有几种,开发环境,测试环境,线上环境,意味着不同环境许多配置是不同的,比如数据库,缓存之类的。如果不借助一些构建工具,那么我们需要每改变一个运行环境就修改一次项目的配置文件,这在大型项目中很不方便,因为每一次改动都有可能引入错误,众...
原创2018-04-02 22:12:02150 -
【maven】helloworld 运行junit
maven安装过程略过。版本3.5.3。说先使用archetype插件生成项目骨架:mvn archetype:generate接着会要求填入一下项目的参数,或者项目坐标之后就可以看到项目目录了。pom.xmlsrc main test这是maven“约定优于配置”的体现,默认地,main目录...
原创2018-04-01 13:26:57200 -
【git】revert
这是一个在主库使用的命令,可以保存历史,同时撤销提交。git revert commit-id:这条命令的含义是,以一个“反向”补丁的形式,逆向执行commit-id的操作,最终新添加一个commit。常见的是revert HEAD,即撤销上一次的提交。那么,如果commit-id不是HEAD呢?...
原创2018-03-31 23:18:19100 -
【git】stash
虽然目前还没有特别适用过这个命令,但是还是学习一下。如果正在一个分支开发新功能,突然需要处理另一个分支,此时需要把现场保存,就可以使用stash命令,stash就会把工作区和暂存区的内容全部保存起来,压入一个栈中,工作区就完全清空了,最后可以apply拿出之前的缓存。git stash 会把暂存区...
原创2018-03-31 21:32:2270 -
【git】merge 原理
查了一下git merge如何判定冲突,主要是通过找到公共祖先节点,然后两个分支各自形成一个和祖先diff的俩链表,然后逐行处理,如果恰好都改了同一行,那么就冲突。具体在这一篇里写的很好:https://segmentfault.com/a/1190000003966242...
原创2018-03-29 23:06:35100 -
【git】patch 补丁 (cherry-pick,rebase过程)
研究这个是因为cherry-pick命令引起的。还是之前那个事情,仔细还原一下:我clone代码,然后基于master co一个dev的分支,然后开发开发开发。。。最后单元测试通过了,准备上测试环境。公司的测试环境是staging分支,然后我就本地co一个staging跟踪远程的staging分支...
原创2018-03-29 22:39:0880
-
- 学院
- 下载
- 消息