- 博客(66)
- 收藏
- 关注
原创 武汉上海知名互联网公司面试心得体会
写于之前:最近一段时间集中看了下武汉和上海地区的架构师岗位机会,基本上比较匹配的一二线的互联网公司(字节跳动、美团点评、小米、华为、平安、拼多多、小红书、斗鱼等)都大概有看,至于BAT三家由于是从A出来的,就直接忽略(其实有跟饿了么聊下),BT在这两个城市都没有什么匹配的岗位所以没有去,基本所有的公司技术面都通过了并跟HR进行了亲切的交流(除了字节跳动,刚看机会准备不足,整了两轮算法直接跪了)...
2019-08-03 10:30:15 1223 1
原创 分布式应用系统监控浅谈
监控指标机器维度机器维度的监控指标包括CPU、Load、内存、网络、IO、磁盘等相关指标,详细指标可以参考Liux监控命令对应的指标数据:https://linux.cn/article-9373-1.html?pr ,主要可以参见top、vmstat 、free、iostat、netstat 、iptraf等命令相关的核心指标。应用维度应用维度的监控指标包括JMV使用情况、线程池使用情...
2019-07-17 00:06:38 865
原创 高级Java技术面试-高频知识点一览
写于之前:1、Java技术体系庞大且繁杂,各公司的面试要求和侧重点也会有所不同,本文仅列举了笔者认为比较常见及重要的知识点,对应的链接内容也是笔者网上找的相对比较靠谱的解答。2、以笔者多年大厂的工作经验,如果面试者能够很好地掌握本文的内容,理论上从技术知识储备来说大厂的高级Java开发应该是没有问题的,小公司的架构师技术要求应该也是达标的。3、实际面试不完全是技术能力的要求,一般公司还会...
2019-07-01 07:58:09 5141
如何做一名出色的技术管理者?
昨晚看了一篇Robbin大牛写的谈谈杰克·韦尔奇的《赢》特别有感触,总觉得我也应该写点什么,也算是阶段性的总结。笔者做技术管理工作的年限比较短,自认还是有很多不足之处,也还称不上一名出色的技术管理者。所以这篇文章并不是指导文,而是个人这段时间以来的思考感悟,不成熟之处望各位同行批评指正。笔者认为技术管理可以大致分为三个阶段:自治阶段、人治阶段、法治阶段。其中自治是指管理者自身管理,人治是指管...
2017-06-04 23:38:24 851
网站国际化实现(2)—Spring MVC国际化实现及原理
一、背景很多网站的用户分布在世界各地,因此网站需要针对不同国家的用户展示不同语言的内容,因此就有了国际化实现的需求,大多数网站都会在网站的头部或尾部设置语言切换链接,这样就可以直接切换成相应的内容。其中有些网站是通过网站地址或参数进行区分,有些是通过设置cookie值进行进行区分。 二、解决思路前面已经写过一篇JDK的国际化支持,讲解了JDK实现国际化的具体实现。那么...
2017-05-25 17:54:11 214
网站国际化实现(1)—JDK的国际化支持
一、背景很多网站的用户分布在世界各地,因此网站需要针对不同国家的用户展示不同语言的内容,因此就有了国际化实现的需求,大多数网站都会在网站的头部或尾部设置语言切换链接,这样就可以直接切换成相应的内容。其中有些网站是通过网站地址或参数进行区分,有些是通过设置cookie值进行进行区分。这里先不讲网站具体的实现,先介绍下网站国际化需要的基础知识,即JDK本身对国际化的支持。这里说明下JDK本身...
2017-05-20 15:26:39 244
API接口管理之道
一、API管理的痛点API接口在设计时往往需要编写大量的文档,而且编写完成之后还会经常改动,文档编写维护工作量大。接口文档编写好后,实际的代码可能会与文档有出入,这个时候文档是不准确的,文档与代码保持修改同步也是一个很大的工作量。随着接口版本的迭代,接口文档需要同步更新。有些时候接口会成为对接双方的开发进度瓶颈,因为接口调用会有依赖,类似app的项目,前端会需要调...
2017-05-07 14:17:12 188
原创 JDK8新特性一览
官方新特性说明地址Jdk8新特性.png下面对几个常用的特性做下重点说明。一、Lambda表达式1.1 函数式编程百科介绍:http://baike.baidu.com/link?url=LL9X3-SoS4XJGgdzrXvURuKEGm6ad5zY1NLDxDygjTaSRnEZ0Bp3wqX0QgkB7fjPwMSQS1tLfq
2017-04-20 11:35:57 33147 1
原创 Mysql order by与limit混用陷阱
在Mysql中我们常常用order by来进行排序,使用limit来进行分页,当需要先排序后分页时我们往往使用类似的写法select * from 表名 order by 排序字段 limt M,N。但是这种写法却隐藏着较深的使用陷阱。在排序字段有数据重复的情况下,会很容易出现排序结果与预期不一致的问题。比如现在有一张user表,表结构及数据如下:现在想根据创建时间升序查询user表,并且分页查询,
2017-04-11 20:57:58 80858 20
原创 JDK源码剖析与最佳实践—ArrayList
知其然,需知其所以然。——古语 知其所以然,需引而伸之,触类而长之;——虫草最近准备研究下JDK源码,把常用的一些类作个剖析整理,出个系列文章。ArrayList应该是在开发过程中非常高频使用的一个集合类,就先拿这个类开刀了。笔者使用的JDK版本为:1.8.0_102,由于源码太多,有些也比较简单,所以挑一些重点说明下。一、整体介绍ArrayList类如其名,是一个可以动态扩容的数组列表
2017-04-02 22:07:49 536
原创 Java研发知识图谱【互联网行业】
写于之前 不同行业不同公司所用到的技术千差万别,所以该图谱不具有普适性。 该图谱基于笔者从业(电子商务/互联网金融)以来工作经验画出,具有一定的局限性,不过对于互联网行业Java研发知识体系具有一定的代表性。 该图谱目前只画出大概框架,各分支还有待完善及补充,后期也会不断更新。
2017-03-18 12:41:58 1590 2
原创 Restful API的设计与实践
Restful这个名称应该很多人都不陌生,但是我发现不少人对Restful存在或多或少的理解偏差,其中不泛比较厉害的程序员,所以有必要为Restful来“正名”。Restful是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。(详见百度百科介绍)Restful的关键是抽取资
2015-12-08 09:45:12 1675
原创 高效程序员的八个习惯
最近对敏捷比较感兴趣,正好翻看了《高效程序员的45个习惯-敏捷开发修炼之道》,颇有些感触,倒不是对敏捷的实施方法,而是文中所提的一些习惯之处,觉得习惯的养成可能比具体的敏捷实践要重要得多。所以这里借用下文中标题,谈谈对高效程序员习惯的理解。一、做事优先在项目团队开发过程中,出现问题时最高优先级应该是解决问题,而不是找到责任人并进行指责。当然在问题解决之后,可以找到责任人一起分析问题产生的原因,尽量在
2015-12-02 09:50:53 1033
原创 五、编写高质量的代码—数组和集合(笔记)
本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。一、性能考虑,数组是首选在Java中数组虽然没有
2015-11-30 16:01:43 375
原创 六、编写高质量的代码—枚举和注解(笔记)
本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。一、推荐使用枚举类定义常量常量声明主要有三种方式
2015-11-30 16:01:37 391
原创 三、编写高质量的代码—类、对象和方法(笔记)
本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。一、静态方法不能覆写可以隐藏在Java中可以通过覆写
2015-11-30 16:01:31 351
原创 二、编写高质量的代码—数据类型(笔记)
本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。 一、不要用浮点数处理货币货币在单位是元的
2015-11-30 16:01:25 465
原创 一、编写高质量的代码—Java开发中通用的方法和准则(笔记)
本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。 在Java开发过程中有很多通用的准则,遵守这些
2015-11-30 16:01:20 2252 1
原创 十一、编写高质量的代码—开源世界(笔记)
本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。下面为书籍第11章《开源世界》的读书笔记:一、大
2015-11-30 16:01:14 1104
原创 十二、编写高质量的代码——思想为源(笔记)
本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。编码不仅仅是把代码写出来,还要求清晰地表达出编码
2015-11-30 16:01:09 422
原创 Mybatis实用Mapper SQL汇总示例
Mybatis作为一个非常好用的持久层框架,相关资料真的是少得可怜,所幸的是官方文档还算详细。本博文主要列举一些个人感觉比较常用的场景及相应的Mapper SQL写法,希望能够对大家有所帮助。不少持久层框架对动态SQL的支持不足,在SQL需要动态拼接时非常苦恼,而Mybatis很好地解决了这个问题,算是框架的一大亮点。对于常见的场景,例如:批量插入/更新/删除,模糊查询,多条件查询,联表查询,
2015-11-30 16:01:03 468
原创 Cookie的使用讲解及示例
Cookie是Web程序中常用的一种会话跟踪技术,实际是客户端浏览器保存的一小段文本信息。Cookie在实际应用中很常见,比如很多网站登录时的“记住我”功能、电子商务网站的“购物车”功能……Session作为另一个常用的会话技术,常与Cookie拿来比较,文末给链接作扩展介绍。下面主要介绍下Cookie的使用:1. Cookie的有效期设置:setMaxAge(int maxAge)方法。如果ma
2015-11-30 16:00:57 859 2
原创 前后台校验示例及讲解
在开发Java Web程序时,前后校验逻辑应该是必不可少的一部分。其中,前台校验更多地是从用户体验的角度出发,而后台校验更多地是从数据安全的角度出发。本博文基于Spring MVC写了一个前台后台结合校验的示例,不过没有使用Spring MVC自带的校验框架。示例前台使用Jquery Validation进行校验,后台使用Hibernate Validation进行校验,所以示例所需要的校验逻辑并
2015-11-30 16:00:52 755
原创 Hibernate Validation使用示例及讲解
在项目开发过程中,后台在很多场景都需要进行校验操作,比如:前台表单提交到后台,系统接口调用,数据传输等等。而且很多项目都采用MVC分层式设计,每层还有需要进行相应地校验,这样在项目较大,多人协作开发的时候,会造成大量重复校验代码,且出错率高。针对这个问题,JCP出台一个JSR 303-Bean Validation规范,而Hibernate Validator 作为Bean Validatio
2015-11-30 16:00:46 463
原创 Jquery Validation实用示例及讲解
不论是出于用户体验的考虑,还是出于安全角度的考虑,在网站开发过程中,涉及到表单提交时都会需要进行表单校验,而表单校验往往涉及到很多字段及规则。使用原生JS自实现一套校验框架麻烦且低效,Jquery Validation作为Jquery的一个插件,提供了非常强大而且简单易用的校验功能。Jquery Validation官网地址Jquery Validation下载地址Jquery Val
2015-11-30 16:00:40 381
原创 SpringMVC下打包文件的下载
在实际应用中,文件下载或导出报表的场景应该很常见,如Excel报表导出……如果文件较多时,用户往往希望文件能够打包进行下载,这个时候就需要对下载的文件进行压缩打包,再进行下载。针对这个场景,我写了个压缩文件打包下载的Demo,这里实现的是Excel文件的压缩下载,Excel生成用到了Apache的POI组件,压缩功能使用的JDK自带API,具体实现代码如下:一、Controller类/**
2015-11-30 16:00:34 694
原创 Chrome下最简分页打印方案
如果你需要直接打印当前页面,那么你不用再往下看了,直接使用浏览器自带的工具栏中的“打印”即可。如果你的实际需求是页面上显示很多内容,但你只想打印指定区域的内容,进一步可能还想把本来显示在一起的内容,分成好几页进行打印,那么本文希望能够提供一个最简方案。实现的方法其实很简单,直接使用JavaScript自带window.print()方法即可实现类似点击浏览器进行打印的效果,不过这种方式是打印当
2015-11-30 16:00:29 8267 1
原创 基于JDK API实现文件的压缩与解压
在实际开发过程中,会经常遇到下载附件或者导出报表的情况,有时候文件会比较多,用户更希望多个文件可以一起打包进行下载。这时就需要实现两部分功能:一部分是多个文件的打包处理,一部分是压缩文件的下载功能。对于压缩文件的下载,可查看我的另一篇博文(SpringMVC下打包文件的下载),本文主要提供多个文件的压缩与解压的例子。样例完全基于JDK自带的IO流处理类,主要相关类为ZipInputStream
2015-11-30 16:00:23 2018
原创 使用Spring发送基于freemarker模板的邮件
在项目开发过程中,我们经常会遇到需要发送邮件的场景,比如:用户验证邮箱的时候,有活动通知或者提醒通知的时候……有些时候我们可能只需要发送一些简单文本内容即可,但是大多数情况下我们更希望邮件的内容是丰富多彩,而且是“定制的”,能够灵活修改。这时候使用一个方便修改的邮件模板就显得非常必要了。对于发送邮件,大家都知道Oracle提供了官方的JavaMail API,这个API没有包含在标准的JDK中
2015-11-30 16:00:17 355
原创 SpringMVC下Excel文件的上传下载实现
在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据、下载统计数据等等场景。针对这个问题,我写了个基于SpringMVC的简单上传下载示例,其中Excel的处理使用Apache的POI组件。 主要依赖的包如下: commons-io commons-io 2.4 commons-fileupload co
2015-11-30 16:00:12 8111
原创 Git解惑
一、Git是什么?很多初次接触Git的人总是把Git与Github等同起来,我刚开始也是如此。其实Git是一个分布式软件控制/配置管理软件;而Github是一个可以托管Git版本库的网站而已。越来越多的开源项目选择使用Git进行管理,然后托管在Github网站上。Git与svn、cvs都是进行版本管理的软件,不过控制方式却不尽相同。其中,cvs、svn属于集中式版本控制系统,所有开发者都需要跟
2015-11-30 16:00:06 322
原创 技术经理角色的几点思考
1、充分了解需求需求是设计与开发的输入,因此在设计与开发之前,一定需要产品经理的需求明确,并保证双方的理解一致。在出现理解模糊时要及时地与产品进行沟通,不然很有可能做的东西偏离需求,“吃力不讨好”。2、设计先行在充分了解需求的基础上,要先进行前期的设计,不要急于开发。良好的设计可能大大减轻开发的工作量,同时也能保证开发的质量。3、合理分工既然要分工,首先得知道工作量多大,具体是
2015-11-30 16:00:00 740
原创 MyBatis与Spring集成
Spring2只支持iBatis2,Spring3是不支持MyBatis3的,所以MyBatis自开发了一个集成Spring框架的项目MyBatis-Spring。该项目集成Spring,可以将事务交给Spring进行管理,同时将mapper类、sqlSession注入到其它类中。 项目地址:https://github.com/mybatis/spring 官方帮助文档(英文):http
2015-11-30 15:59:55 387
原创 MyBatis代码自动生成
MyBatis相关文件主要有三部分:Java POJO(实体类)、Sql Map XML、Java Client(Mapper类)。当数据表较少的时候,这些文件都手写完成是没有太大问题的;如果是成百上千张表,也选择手写的话估计想哭的心都有了,而 且出错率高。所以为了提高编写MyBatis代码的效率和质量,MyBatis开发一个自动生成代码的项目:MyBatis-Generator,简称MBG,用来
2015-11-30 15:59:49 495
原创 MyBatis概述及学习资料整理
MyBatis这个名字真的是如雷贯耳,但一直没仔细研究过,最近闲来无事,收集了些资料并写了些Demo,算是有了个初步的认识。必须得说MyBatis的相关资料确实不算多,收集的过程也花了我不少的时间,还好框架还算易用,没有太大的学习难度。一、MyBatis介绍介绍啊介绍,说说MyBatis的前世今生,这个对MyBatis的学习使用会有一定的帮助。根据百度百科的介绍:MyBatis项目的前身是
2015-11-30 15:59:44 1757
原创 Java编码规范—约定也要配置
没有规矩,不成方圆。Java开发亦如是。在团队协作开发的过程中,如若遵守统一的编码规范,会让代码的可读性更好,团队协作的效率也能相应地得到提升。因此规范虽不是一项技术,却是不可不重视的“约定”。 很多公司都有自己相应的编码规范,如果还没有可以参考Google的编码风格指南: 英文版:http://google-styleguide.googlecode.com/svn/trunk/java
2015-11-30 15:59:37 642
原创 Linux常用命令整理
写于之前本博客内容是平时开发时经常使用的Linux命令整理,适合Linux初学者查看。Linux指令集强大且庞杂,在使用过程中还是需要经常查阅相关的文档或者查看帮助(man命令谁用谁知道)。常用命令整理一、使用ssh命令远程登录linux主机命令格式:ssh [-l login_name] [-p port] [user@]hostname 示例:ssh r
2015-11-30 15:59:32 344
原创 Java集合框架应用
一、集合框架整体介绍集合框架可以大致分为两大家族:Collection、Map。1、Collection家族 2、Map家族 相关博文:http://jianshi-dlw.iteye.com/blog/1179834(框架成员详细介绍) 二、具体场景下集合的选择1. 集合中元素已知:优先考虑采用数组。2. 集合中元素个数未知,且
2015-11-30 15:59:26 375
原创 Json应用
一、JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Pe
2015-11-30 15:59:21 334
五、编写高质量的代码—数组和集合(笔记)
本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。一、性能考虑,数组是首选在Java中数组...
2015-03-06 21:58:14 115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人