我已经离不开idea了

2019-10-06
阅读 2 分钟
2.7k
idea是jetbrain公司开发的一款付费的java编辑器,我之前是用eclipse开发的,自从用了idea后,就完全离不开它了。主要原因是除了idea自身强大的功能以外,还有许多的插件。接下来我主要介绍几款我觉得好用的插件。

java语法和python语法的区别

2019-06-16
阅读 1 分钟
3.9k
基础 字符串和列表 元组 集合 条件控制 循环 方法和模块 总结 python语法由于没有类型限制和符号限制,比java语法更加简洁。但是作为一个java程序员,如果要习惯这种无类型,无符号的编程需要时间。

teamcity开疆扩土---自动部署maven项目到linux服务器并重启tomcat

2019-01-11
阅读 2 分钟
3.6k
teamcity是一款非常强大的cicd(持续集成,持续发布)工具,和jenkins非常类似。但个人觉得比jenkins好用。网上有很多部署teamcity的博客。我参考的是这篇:[链接]

给学弟学妹的招聘分享

2018-12-03
阅读 2 分钟
1.3k
这个总结其实来得挺晚的,但是又非常必要。我很有幸参加了今年的春秋招,并且前往深圳和北京这两个城市体验一线城市的精彩和心酸,无论是去深圳的一家小公司,还是转战北京小米。最终签约成都华为。我都有好多话想说。但是今天不是故事会,而是求职分享会,我希望我在本年度春秋招的所见所得能帮助你们应对明年的招聘

面试:spring ioc实现原理

2018-10-12
阅读 1 分钟
6.6k
首先加载一个spring的容器beanfactory,beanfactory的构造方法会创建一个实现了resource接口实例对象。resource对象通过setconfiguration()方法设置spring配置文件位置。resource对象有三种实现分别是fileresource,url resource,classpathresource。分别获取文件,网络资源,项目路径下资源。

短链接算法实现--加盐hash

2018-10-05
阅读 3 分钟
3.9k
如果仅仅只是通过MD5直接加密,不安全。彩虹表很容易破解。所以为了加入静态盐和动态盐 {代码...} 但是这个算法还是有可能会有hash冲突。而且位数越短越可能发生。最好设置6位以上解决方法:覆盖数据库方法或者重新计算

java agent 详细介绍

2018-08-12
阅读 2 分钟
24.5k
重点就在 premain 方法,也就是我们今天的标题。从字面上理解,就是运行在 main 函数之前的的类。当Java 虚拟机启动时,在执行 main 函数之前,JVM 会先运行 -javaagent 所指定 jar 包内 Premain-Class 这个类的 premain 方法,其中,该方法可以签名如下:

建造者模式builder为什么是static final 的内部类

2018-08-11
阅读 1 分钟
2.9k
但是我查阅了一下其实一般建造者模式都只是用static的内部类。保证外部非静态数据内部类无法直接访问。而是通过builder的setter和getter方法

大数据分析druid实现双维度的topn查询

2018-08-08
阅读 2 分钟
5.1k
druid支持三种数据查询类型。timeseries,topn,groupbytimeseries是无维度,topn支持单维度,groupby支持双维度。现在有一个需求:基于服务名和调用链的两个维度,从druid获取最大分位数的前五名数据。topn是单维度的。groupby是双维度的。但是没有排序

mac scp connect to host port 22:connection refused

2018-07-26
阅读 1 分钟
9.5k
今天从服务器进行数据转移。用scp指令就是报scp ssh: connect to host 9.123.159.41 port 22:connection refused

大数据分析druid(大数据实时统计分析数据存储)

2018-07-26
阅读 1 分钟
7.9k
与某连接池同名,但完全是两个东西。Druid(俗名德鲁伊)是一个为在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式、shared-nothing(共享)的架构,和一个高级的索引结构,来达成在秒级以内对十亿行级别的表进行任意的探索分析。下文都以德鲁伊代表druid

java agent 使用

2018-07-25
阅读 4 分钟
4k
这里有两种方式指定javaagent:1)使用命令行:java -javaagent:XXX.jar ddd.jar2)使用idea的vm option选项。

mockito初探

2018-07-24
阅读 1 分钟
2.4k
Mockito是mocking框架,它让你用简洁的API做测试。而且Mockito简单易学,它可读性强和验证语法简洁。注:由于项目中只需要注解,就直接用注解来mock对象

elasticsearch初探

2018-07-22
阅读 1 分钟
1.6k
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。

Lombok@Builder和@NoArgsConstructor冲突

2018-07-08
阅读 1 分钟
21k
问题 今天在使用lombok简化model类时。使用@Builder建造者模式。报以下异常 解决办法。 去掉@NoArgsConstructor 添加@AllArgsConstructor 源码分析 下图是编译后的源码 只使用@Builder会自动创建全参构造器。而添加上@NoArgsConstructor后就不会自动产生全参构造器

即将到来的java11的新特性

2018-06-23
阅读 1 分钟
2.3k
Epsilon 垃圾收集器被称为“no-op”收集器,将处理内存分配而不实施任何实际的内存回收机制。 Epsilon 的使用案例包括测试性能,内存压力和虚拟机界面。 它也可以用于短期工作。

设计模式在jdk中的应用

2018-06-22
阅读 3 分钟
5.5k
最近重学设计模式,而且还有很多源码要看。所以就想一举两得。从源码中寻找设计模式。顺便还可以看看源码。。。本文只是寻找设计模式在java中的应用。优缺点就不细说了。而且也不可能将jdk中所有涉及设计模式的例子都举出来。希望大家积极评论。来补全这一块

分布式唯一ID生成方案

2018-06-13
阅读 1 分钟
4.5k
分布式ID的需求 在分布式系统中。ID有如下需求 全局唯一性,不能出现重复的id号 信息安全:防止恶意用户规矩id的规则来获取数据 数据递增:保证我的下一ID一定大于上一个ID UUID 通用唯一识别码,16个字节128位的长数字 组成部分:当前时间和时间序列+全局唯一性网卡地址 优点:代码实现简单,不占用宽带,数据迁移不受影响 缺点...

重构-改善既有代码的设计(十一)--处理概括关系

2018-06-12
阅读 1 分钟
2.2k
有一批重构手法专门用来处理概括关系(即继承关系),主要是将函数上下移动于继承体系之中字段上移和方法上移都用于将特性向继承体系的上端移动,字段下移和方法下移则将特性向继承体系的下端移动。构造函数比较难以向上拉动,因此专门有一个构造函数本体上移处理它,一般不会将构造函数往下推,因为以工厂函数取代构造...

重构-改善既有代码的设计(十)--简化函数调用

2018-06-12
阅读 3 分钟
2k
Rename Method 函数改名 问题 函数的名称未能揭示函数的用途。 方法 修改函数名称。 动机 好的函数需要有一个清晰的函数名。保证一看就懂 Add Parameter 添加参数 问题 某个函数需要从调用端得到更多信息。 方法 为此函数添加一个对象参数,让该对象带进函数所需信息。 动机 如果发现缺少参数,当然就需要添加参数。但是...

重构-改善既有代码的设计(九)--简化条件表达式

2018-06-12
阅读 1 分钟
2.3k
从If、then、else三个段落中分别提炼出独立函数1、将if段落提炼出来,构成一个独立的函数2、将then段落和else段落都提炼出来,各自构成一个独立的函数(如果发现嵌套的条件逻辑,先观察是否可以使用“以卫语句取代嵌套条件表达式”(此手法是下面的9.5),如果不行才开始分解其中的每个条件)

重构-改变既有代码的设计(八)--重新组织数据

2018-06-12
阅读 4 分钟
1.9k
前言 前面已经对方法,类列举了重构方法。现在该轮到字段了注:值对象:不可变对象引用对象:可变对象 Self Encapsulate Field 自封装字段 问题 你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙。 方法 为这个字段建立取值/设值函数,并且只以这些函数来访问字段。(getter和setter方法) 动机 子类可以通过覆...

重构-改善既有代码的设计(七)-- 在代码之间搬移特性

2018-06-10
阅读 2 分钟
1.5k
决定把责任放在哪对于对象设计是最重要的之一。重构可以很好的解决这个问题。以下是笔者的重构方法注:客户:调用接口客户类:使用了接口的类服务类:提供服务的类

重构-改善既有代码的设计(六)--重新组织函数

2018-06-10
阅读 5 分钟
2.3k
提炼函数:(由复杂的函数提炼出独立的函数或者说大函数分解成由小函数组成)你有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数,并让函数名称解释该函数的用途。

重构-改善既有代码的设计(五)--重构列表

2018-06-09
阅读 2 分钟
2k
什么是重构列表 重构方法需要以一种特定的格式记录下来。按照格式记录下来的重构方法的集合叫重构列表 重构的记录格式 每个重构手法可分为5个部分: 名称 构建重构词汇列表,名称当然是很关键的了,要充分的表达出重构的核心关键; 概要 介绍重构手法的功能,以及应用场景;便于我们查找重构手法;包括三个部分: 一句话...

重构-改善既有代码的设计(四)--构筑测试体系

2018-06-08
阅读 1 分钟
1.9k
测试不光只测代码是否跑通,还要考虑各种情况,代码是否能做出正确的行为。所以添加一些测试用来测试代码健壮性。可以从如下情况考虑边界值抛出预期的异常

重构-改善既有代码的设计(三)--代码的坏味道

2018-06-08
阅读 2 分钟
3.2k
如果两个毫不相关的类中出现重复代码,则可以将重复代码提炼成一个函数放到一个独立类中或者只放在某一个类中(总之要放在合适的地方),然后其他类都去调用这个函数。

重构-改善既有代码的设计(二) --重构原则

2018-06-07
阅读 1 分钟
2.6k
为何重构 重构不是银弹,但是帮助你达到以下几个目的 改进软件设计 不良的程序需要更多的代码。而代码越多,正确的修改就越困难。改进代码设计的一个重要原则就是消除重复代码 使软件更容易被理解 优秀的代码能够让接收你代码的付出更少的学习成本。 重构更容易找到bug 重构能加深对代码的理解。然后就更容易找到bug 重...

重构-改善既有代码的设计(一)--重构,第一个案例

2018-06-07
阅读 4 分钟
2.8k
什么是重构 在不改变代码外在行为的前提下,对代码做出修改以改进程序内部的结构简单地说就是在代码写好后改进它的设计 谁该阅读这本书 专业程序员(能够提高你的代码质量) 资深设计师和架构规划师(理解为什么需要重构,哪里需要重构) 阅读技巧 带着疑问去读: 如果你想要知道重构是什么。第1章够了 如果你想要知道为...

轻松搞定后台管理--guns框架

2018-06-06
阅读 2 分钟
10.2k
Guns基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架.Guns v3.0新增rest api服务,提供对接服务端接口的支持,并利...