idea StreamTrace debug 调试 java 8 流处理代码

Java的stream编程给调试带来了极大的不便,idea 推出了StreamTrace功能,可以详细看到每一步操作的关系、结果,非常方便进行调试。

初遇StreamTrace

这里简单将字符串转成它的字符数,并设置断点开启debug模式。

如上图所示,可以看到每一步操作的元素个数、操作的结果、元素转换前后的对应关,非常清晰明了;还可以查看具体的对象内容。

使用StreamTrace

StreamTrace只有在debug模式下才能使用,当在Stream代码上设置断点后,启动debug,点击流按钮,如图所示。

点击后,默认Split 模式显示。

可以点击左下方按钮切换到FlatMode模式,当然也可以再切换回去。

实战演示

这里演示一段字符转长度并过滤长度小于5的stream操作

0

数据库文档生成工具——screw

在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,如果数据库表结构更新了还得手动更新维护到文档中,很是繁琐。 无意之间发现了github上面有个人写了一个小工具专门来做这个事情,名字叫screw(螺丝刀),用了下很不错。这里特意记录一下。

工具的github地址:https://github.com/pingfangushi/screw

特点

  • 简洁、轻量、设计良好
  • 多数据库支持,目前已支持MySQL、MariaDB、TIDB、Oracle、SqlServer、PostgreSQL、Cache DB
  • 多种格式文档,目前已至此HTML、Word、MarkDown格式
  • 灵活扩展
  • 支持自定义模板

使用

有两种使用方式,一种是通过maven插件引入后执行命令生成,一种是直接写代码来生成文档。 下面我通过MySQL数据库的使用例子来说明。

引入依赖

代码方式

maven插件方式

配置完以后在 maven project -> screw -> screw:run 双击执行ok。

效果图

数据库文档生成工具——screw

0

Java 代码获取 Linux 系统进程ID、物理内存和cpu使用百分比

Java 代码获取 Linux 系统进程ID、物理内存和cpu使用百分比

 

 

0

如何配置Spring Cloud应用使用指定IP或忽略某张网卡?

问题说明

分布式应用部署到服务上,由于服务器可能存在多张网卡,造成IP地址不准的问题。

解决方法

1、直接添加忽略某张网卡的配置:

正则:

2、指定默认IP:

3、除了这些配置,还有以下的这些配置:

ignored-interfaces和preferred-networks这两个配置。这两个配置决定了spring cloud应用在启动的时候所使用的网卡和IP地址。ignored-interfaces接收一个正则表达式数组,配置名字虽然是ignored-interfaces,忽略的网卡,但是因为其接收的是正则表达式,所以我们可以任意的选择和反选本机的网卡。preferred-networks是指倾向于使用的IP地址,接收一个正则表达式数组,用于选择Spring Cloud应用使用的本机的IP地址。通过这两个配置,我们可以任意指定Spring Cloud应用使用的网卡和IP地址。

0

给年轻程序员的一些技术面试的建议

之前帮项目组面试了一些应届毕业生,在写代码的间隙和这些快毕业的年轻人交流也学到了很多。针对面试中遇到的问题,写一篇文章总结一下如何进行技术面试,给年轻程序员一些建议。

一、简历

简历很重要,排版和文字体现了态度和专业程度,写到上面的项目和技能决定了面试方向。

1、简历排版

排版的基本原则

a) 对齐。简历整体应保持一个对齐样式。

b) 字体和色彩保持一致,最好不要出现三种以上的色彩和字体。

c) 页数为一到二页,大多数好的简历都是一页写完。便于 HR 和技术面试官筛选。

排版工具不限,Word、Markdown、网页都可以,推荐使用 Latex,Latex 是出版公司使用的专业排版软件,高度自由、专业大方。。

2、定制化内容

对应于技术岗位要求,不要出现过多非必须的描述。如:学生会干部经历、个人爱好、甚至照片都是非必要的。应该有的是实习经历、项目经历、竞赛经历等。

3、扩展项

简历可以表达的内容有限,又是静态的。可以通过富媒体扩展引入

a) 个人博客网站。个人博客最好是多年有高质量内容更新的,面试官可以通过博客了解到面试者学习关注的方向,对技术问题的思考和总结。推荐使用 WordPress/Github Pages 等工具自己搭建。

b) Github。最好是有高 Star/Fork 的个人项目,体现技术影响力。面试官可以了解到编码风格、软件工程素养。

c) 项目演示 Demo。

二、面试考察项

面试技巧

1、基础知识

最基本的岗位能力要求,包括语言基础、操作系统、计算机网络、数据库、数据结构、软件工程、数据技术等等。至少需要对某一个方向有较深入的研究和思考。

2、聪明程度

这是一个主观又难以量化的指标,当面试官问出一个问题时,他是知道答案的。他可能只是简单看过答案,或者做项目时遇到这个问题,或者刚好思考过这个问题,而对面试者来说可能完全是陌生的。这样来看其实不公平,用一个比较少遇到的问题去考察其他人,这种问题也不能测试出面试者的聪明程度。那如果出的题是从简历里引申出来又稍微有深度和难度的呢。这时就可以看到面试者的应变能力和知识迁移能力。用这两个指标去衡量时会更有效一些。举例:

「看你简历上写的了解 Linux 文件系统,如何在终端里删除一个名字为乱码的文件」,这个题目里有明显提示-Linux 文件系统,面试者也有这个基础能力,他如果能想到文件的 inode 数据结构,再结合管道就可以答出这道题。

「看你项目中提到了协程,怎么去设计一个协程库」,面试者可能没有看过协程源码,但知道基本原理后结合面试官的提示是可以推导答出大概的框架。

3、沟通能力

沟通更多是一种方法。

a) 是否可以做到结论先行。回答问题时,先明确给出答案,再给出推导过程。

b) 是否可以把回答归纳总结为有条理的子项。归纳的过程也是展示思考的过程,原则是子项独立不重复;整体不遗漏。

c) 是否可以把一个其他人不熟悉的概念用简洁易懂的语言向他讲明白。我们可以用这条标准来衡量自己是否真正理解一个概念,那就是把这个概念给完全不懂的人讲清楚。

d) 在传达信息时,是否可以及时调整表述,以确保信息被正确接收到。「项目计划」中提到,作为项目经理,我们必须要记住一个基本前提,就是防止误解是信息发送者而不是接收者沟通职责。

其他沟通方法可以参考「非暴力沟通」。

三、面试官与面试者

管理大师德鲁克说,在组织中的人既是管理者,也是被管理者;既是管理的主体,同时又是客体,都承担双重角色。而面试官与面试者也是这种关系。一方面,面试官承载着这家公司的品牌形象和文化,也在接受面试者的评价和选择。另一方面,面试官极有可能有一天也是要去面试的。那么从这两个方面,作为普通技术人员的面试官应该做些什么?

1、面试官的职责

a) 提前 review 简历,针对提到的技能和项目,定制化一份可以综合评价能力的面试题

b) 平等认真倾听和记录面试者作答,引导面试者展现能力

c) 向面试者介绍公司和项目组在做的事情

d) 面试者有主动寻求建议,应适当给出建设性的答复

2、技术人员出走的能力

面试官作为一个有较多工作经验的普通开发人员,也会有一天转换角色成为面试者。为了适应这个激烈变化的互联网行业,他们应该保持随时出走的能力。开发工程师平时可以关注这些:

a) 提高业务能力和积累高价值的项目经历

b) 维护更新一份自己的简历

c) 学习新的语言和技术,创建自己的项目和产品

d) 积极分享,提高自己在业界的影响力(写公众号、博客、Github、开发者社区)

e) 主动了解业界情况(薪资待遇、发展机会、业务范围)

f) 有机会的话与猎头维持良好的联系

总结

其实不光程序员,任何行业的从业人员,都需要对自己有一个认真负责的职业规划。

0

idea里的maven项目的Plugins的红色波浪线错误的原因及解决

maven的pom报plugins错误的原因及解决方法

错误信息

Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.7.1 from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced

碰到一个类似以上的错误.以maven-surefire-plugin-2.7.1.jar报红为例子

原因

maven的plugin并未正在下载到本地.

首先查看maven仓库位置

idea里的maven项目的Plugins的红色波浪线错误的原因及解决

 

进入
~\.m2\repository\org\apache\maven\plugins\maven-surefire-plugin\2.7.1

的话,会发现里面只有一个

的文件,而并没有maven-surefire-plugin-2.7.1.jar

解决办法

1.删除所有以lastUpdated结尾的文件

2.重新点击reimport即可

idea里的maven项目的Plugins的红色波浪线错误的原因及解决

如果点击更新后发现

下还是没有maven-surefire-plugin-2.7.1.jar,去http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/2.7.1/下载

包再重复步骤2即可解决。

0

如何使用idea远程debug服务器上的代码?

在开发中,线上环境和本地环境总会有那么点差异,因此我们有能需要线上远程debug,记录下配置。

需要两个配置,一是本地对应代码的配置,二是线上tomcat的配置。
首先进行idea配置,我们打开
idea远程debug
打开后,点击+号,找到Remote
idea远程debug
主要配置的参数是Host,Port,
其中host是你服务器的ip,这里就不多说了。这个ip一般是外网ip。
这个port是什么呢?这个是线上tomcat的配置
我们需要找到启动脚本,在windows 环境下是startup.bat,加上如下代码

看图片:
idea远程debug

现在说那个端口,也就是Port 8888这个端口,和address=8888对应上就行了,这个端口不是tomcat的启动端口, 他们是分开的!特别注意不是启动端口!你可以随意配置,和你idea中配置Port一致就行!
配置完后启动线上的tomcat,打印的第一句话是这样的,
idea远程debug

然后外网访问项目,如果访问不到,先在线上的本地访问,如果线上的本地可以访问到,那就检查线上的防火墙设置,放行端口。一定要加入白名单。接着检查你的本地访问的ip+端口,当你能访问到时就可以点击本地debug按钮进行调试了
idea远程debug
当连接成功时就会卡在这里
idea远程debug
接着在本地打上断点,进行访问,然后就可顺利debug了。

linux环境就是start.sh文件,找到它修改它。

 

0

javax.validation里的@NotNull和@NotEmpty和@NotBlank三者的区别

前言

我们在使用springmvc写接口时,@RequestBody修饰的dto属性可以加上验证的注解,然后再用@Valid修饰dto就可以进行属性验证了,如非空、长度、大小等验证。

不过,很多人不理解@NotNull和@NotEmpty和@NotBlank三者的区别。

@NotNull和@NotEmpty和@NotBlank三者的区别

 

+1