工具
文章平均质量分 80
阿昌喜欢吃黄桃
这个作者很懒,什么都没留下…
展开
-
阿昌教你如何使用通义灵码
Hi,我是阿昌,今天教你如何使用通义灵码。原创 2023-12-14 14:18:01 · 1240 阅读 · 0 评论 -
Day801.内存问题排查方案 -Java 性能调优实战
在一些比较简单的业务场景下,排查系统性能问题相对来说简单,且容易找到具体原因。但在一些复杂的业务场景下,或是一些开源框架下的源码问题,相对来说就很难排查了,有时候通过工具只能猜测到可能是某些地方出现了问题,而实际排查则要结合源码做具体分析。可以说没有捷径,排查线上的性能问题本身就不是一件很简单的事情,除了将今天介绍的这些工具融会贯通,还需要不断地去累积经验,真正做到性能调优。是否可以讲下如何避免threadLocal内存泄漏呢。原创 2022-11-15 22:21:30 · 556 阅读 · 0 评论 -
Day780.常用的性能测试工具 -Java 性能调优实战
一张图:现在测试工具非常多,包括阿里云的 PTS 测试工具也很好用,但每款测试工具其实都有自己的优缺点。建议,还是在熟练掌握其中一款测试工具的前提下,再去探索其他测试工具的使用方法会更好。原创 2022-10-25 22:24:03 · 269 阅读 · 0 评论 -
Day680.大佬如何学习源码 -深入拆解 Tomcat & Jetty
带着这些问题去分析相关的源码效率会更高,同时你在寻找答案的过程中,也会碰到更多问题,等你把这些问题都弄清楚了,你获得的不仅仅是知识,更重要的是你会树立起攻克难关的信心。当你对知识有了一定的积累,这时再来学一个新的系统,往往你只需要瞧上几眼,就能明白它所用的架构,而且你会自然联想到系统存在哪些角色,以及角色之间的关系,包括静态的依赖关系和动态的协作关系,甚至你会不由自主带着审视的眼光,来发现一些可以改进的地方。当然在这个过程中,你还可以看看产品的官方文档,熟悉一下大概的设路。...原创 2022-07-17 19:54:27 · 872 阅读 · 0 评论 -
Day665.大佬程序员成长28计 -Java业务开发常见错误
Hi,我是阿昌,这次记录是关于大佬程序员成长的28计,每个人都有每个阶段可能看的目标和行为方向。开始入门的时候,我们可能都会纠结于选择前端还是后端,选择了后端还犹豫到底选 Java、Go 还是 Python。其实,我觉得不用过于纠结。如果说你对偏前端的内容感兴趣,那就从前端入手;对数据库方面的内容感兴趣,那就从后端入手。等你真正入门以后,你再去转方向、转技术栈都会非常容易,因为技术都是相通的。这里我说的第一步,不是说开始看某个领域的书了,而是真正把 IDE 下载好、把编程环境搭建好,并实现一个最简单的程..原创 2022-07-02 16:31:16 · 448 阅读 · 1 评论 -
Day664.思考题解答⑥ -Java业务开发常见错误
Hi,我是阿昌,今天的来很迟,但是虽迟但任必到,这次记录分享的关于一些问题。问题:对于并行流部分的并行消费处理 1 到 100 的例子,如果把 forEach 替换为 forEachOrdered,你觉得会发生什么呢:forEachOrdered 会让 parallelStream 丧失部分的并行能力,主要原因是 forEach 遍历的逻辑无法并行起来(需要按照循序遍历,无法并行)。比较下面的三种写法:得到输出:从输出中,我们可以看到:问题 1:使用 Stream 可以非常方便地对 List 做各种操作原创 2022-07-01 23:49:28 · 549 阅读 · 0 评论 -
Day662.分析定位Java问题工具② -Java业务开发常见错误
Hi,我是阿昌,今天记录学习的关于使用 和 来定位分析问题。使用 等工具虽然可以观察堆内存使用情况的变化,但是对程序内到底有多少对象、哪些是大对象还一无所知,也就是说只能看到问题但无法定位问题。而堆转储似得到了病人在某个瞬间的全景核磁影像,可以拿着慢慢分析。Java 的 是比较严重的问题,需要分析出根因,所以对生产应用一般都会这样设置 JVM 参数,方便发生 OOM 时进行堆转储:使用 Eclipse 的 Memory Analyzer(也叫做 MAT)做堆转储的分析。你可以点击这个链接,下载 M.原创 2022-06-29 22:47:57 · 451 阅读 · 0 评论 -
Day661.分析定位Java问题工具① -Java业务开发常见错误
Hello,我是阿昌,今天记录学习的是关于分析定位Java问题的一系列工具&指令。JDK 自带了很多命令行甚至是图形界面工具,帮助我们查看 JVM 的一些信息。比如,在我的机器上运行,可以看到 JDK 8常多的工具或程序:了解下各种工具的基本作用:先来写一段代码:启动 10 个死循环的线程,每个线程分配一个 10MB 左右的字符串,然后休眠 10 秒。可以想象到,这个程序会对 GC 造成压力。修改 ,配置 插件打包的 Java 程序的 main 方法类:然后使用 java -jar 启动进程...原创 2022-06-28 22:59:30 · 599 阅读 · 0 评论 -
Day660.定位排查应用问题 -Java业务开发常见错误
Hi,阿昌来也,今天是关于学习一些定位排查应用问题的学习记录。要说排查问题的思路,我们首先得明白是在什么环境排错。其实,排查问题就像在破案,生产环境出现问题时,因为要恢复应用,就不可能完整现场用于排查和测试。因此,是否有充足的信息可以了解过去、还原现场就成了破案的关键。这里说的信息,主要就是日志、监控和快照。日志就不用多说了,主要注意两点:对于,在生产环境排查问题时,首先就需要开发和运维团队做好充足的监控,而且是多个层次的监控。我们再来看看。这里的“快照”是指,应用进程在某一时刻的快照。通常情况下,我们会为原创 2022-06-27 22:32:39 · 440 阅读 · 1 评论 -
Day649.生产指标监控问题 -Java业务开发常见错误
Hi,我是阿昌,今天学习分享记录的是针对生产级别的一系列方案记录。针对业务代码写完,是不是就意味着生产就绪,可以直接投产了。所谓(Production-ready),是指应用开发完成要投入生产环境,开发层面需要额外做的一些工作。那么,针对生产就绪需要做哪些工作呢?有以下三方面的工作最重要。Spring Boot 有一个 Actuator 模块,封装了诸如健康检测、应用内部信息、Metrics 指标等生产就绪的功能。今天这部分后面的内容都是基于 Actuator 的,因们需要先完成 Actuator 的引入和原创 2022-06-16 22:48:01 · 765 阅读 · 0 评论 -
阿昌教你使用谷歌guava工具包---集合包
前言今天阿昌这里分享一个谷歌guava工具包,自己在工作业务中洋哥推荐的一个集合工具包的partition()方法,看了看这个工具包的方法并不是很多,主要常用也就是以下正文的3个方法。准备走开始之前,我们肯定要先导入对于的Maven依赖maven依赖<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <vers原创 2022-03-04 16:54:27 · 9972 阅读 · 2 评论 -
如何封装两级属性结构数据?
这里以大科室和小科为例子,并使用stream流的方式封装创建一个你需要封装成什么结构的vo封装对象封装vo对象@Data@ApiModel(description = "Department")public class DepartmentVo { @ApiModelProperty(value = "科室编号") private String depcode; @ApiModelProperty(value = "科室名称") private String depname;原创 2021-03-26 21:26:42 · 375 阅读 · 3 评论 -
mysql通过命令行导出数据及表结构
前言当要求只能在linux服务器上之间操作mysql时,不能使用可视化界面,此时我们需要去导出某个数据库中的某张表的结构或结构+数据时,我们就只能使用指令去导出,这里mysql已经为我们写好了指令mysqldump。那么如何使用呢?看如下:正文默认导出存放的目录在使用指令的文件夹下①仅包含结构本地导出数据库为dbname的表结构不到带有数据,(username:root,password:root)生成的脚本为db.sqlmysqldump -uroot -proot -d dbna原创 2022-01-04 16:33:23 · 4480 阅读 · 1 评论 -
阿昌教你看懂AQS核心流程
一、预备Hello!感谢能看菜鸡阿昌的文章 ๑•̀ㅂ•́)و✧这几天在学习阳哥的AQS,发现他简直就是艺术品。这里记录一下AQS的核心执行流程。我们以ReentrantLock为例子,进行突破。因为AQS涉及到Juc的知识,所以这里需要有一些前置知识如下: ≡ω≡Juc知识LockSupport模版设计模式重入锁/自旋锁CASUnsafe如果不晓得,请自行去补以上的知识,再看一下的内容也是建议打开IDEA进行源码调试一起食用极佳二、前言1、什么是AQS字面意思原创 2022-01-01 13:54:29 · 2149 阅读 · 5 评论 -
阿昌教你使用常用Lombok@注解
前言老铁/老妹们好 (。・∀・)ノ゙!今天阿昌分享的是常用的Lombok注解,官方地址,github地址做Java开发的,哪个不知道这小辣椒呢。Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,提高开发人员的开发效率,通过使用对应的注解,可以在编译源码的时候生成对应的方法。IDEA安装安装插件引入依赖<!--lombok--><dependency> <groupId>org.proj原创 2021-12-30 14:36:33 · 1458 阅读 · 0 评论 -
阿昌教你自定义注解验证Bean对象
前言在之前阿昌写过一篇 【Springboot的注解字段校验,并统一设置返回值 】的文章,讲了常见的一些注解,和自定义的报错返回处理器,没看过的可以去看一下。在Springboot中本身就可以通过大量的注解来实现对一些请求参数的校验。这里在做一点的补充,关于自定义注解,去校验MVC,Web请求中的数据校验正文接下来我们就通过自定义注解的方式,为大家介绍两个手机号 & 是否是日期。在此之前,都到这里了,你别问我注解是一个什么东西,这边建议您回炉一下 (≖‿≖1、自定义手机号校验自原创 2021-11-09 17:11:50 · 536 阅读 · 0 评论 -
阿昌教你自定义拦截器&自定义参数解析器&自定义包装HttpServletRequest
前言这次也是依然在学习开源项目Tduck-填鸭收集器的时,阿昌在研究这项目是如何进行安全校验的,我一开始在项目里面查Shiro/SpringSecurity,我以为他使用了市面主流的安全框架,但是发现,他根本没有使用,而是自定义了一系列的 拦截器&过滤器 来实现安全的校验。比如,通过自定义注解来决定这个资源是否需要用户登录才能够访问。在项目中我发现的自定义注解有三个@Login@LoginUser@NoRepeatSubmit在开始前,放上SpringMVC的执行流程 镇场:原创 2021-11-05 14:44:06 · 1332 阅读 · 1 评论 -
阿昌教你用Hutool包校验工具校验内容
前言今天学习开源项目Tduck-填鸭收集器的时,发现他所使用的是hutool包中的校验器去校验自己业务的内容,自己用了这么久的hutool包,发现才只是冰山一角,以此记录分析 hutool包校验器 的使用,以防自己这个5秒就忘记的脑子,方便自己回来回忆原因因为要校验一些前端传来的信息,来防止前端校验的遗漏;和防君子不防小人的人当我们的资源地址暴露,就通过Postman直接发送请求,绕过前端校验内容引入hutool包依赖<!--hutool--><dependen原创 2021-11-03 17:42:11 · 13321 阅读 · 0 评论 -
阿昌教你IDEA一键启动服务设置
前言当我们在使用IDEA去开发我们的微服务项目的时候,总是需要一个一个的打开每一个服务。这里菜鸡阿昌教你如何设置IDEA,让他一键打开我们需要的打开的服务们(s)。正文在IDEA的上面,服务栏中,选中Edit Configurations...左上角加号,添加一个New Configuration在下面选择Compound右侧上面Name指定这个符合启动的名字再在里面添加你需要一次一起启动的微服务们这样子就只需要通过这个Compound一键启动需要启动的服务了!!!...原创 2021-09-30 15:08:24 · 2015 阅读 · 5 评论 -
阿昌教你如何让 Hexo 在服务器稳定运行
阿昌教你如何让 Hexo 在服务器稳定运行前言前些日子通过hexo搭建了一个个人博客系统终于又搭建起来了(好一个又?),但是每隔一段时间去访问自己的网站总是访问不到,去服务器查询ps -ef|grep hexo,发现 Hexo 进程已经挂掉了,想着自己用命令 nohup hexo s -p xxxx 启动应该没问题啊,无奈也找不到停止的相关日志,所以另寻出路:找一个能实现守护进程监控服务的东西,如果服务挂掉了就自动重启。首先想到的就是写一个 shell 脚本去进行,每隔固定时间去查询 Hexo 进程原创 2021-09-27 12:58:46 · 518 阅读 · 1 评论 -
Springboot-- 注解字段校验,并统一设置返回值
Springboot-- 注解字段校验,并统一设置返回值引包:import org.springframework.validation.annotation.Validated;<!--web--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></depe原创 2021-07-23 12:05:58 · 1425 阅读 · 1 评论 -
MapStruct,对象装载结构工具
MapStruct工具使用工具名为MapStruct,用于对象与对象之间的互相转换,避免每一个字段都 get/set 造成麻烦。MapStruct官网地址: http://mapstruct.org/如下的演示使用到了Lombok工具,如果不熟悉的请自行了解,这里就不说了。一、引包<!--mapstruct--><dependency> <groupId>org.mapstruct</groupId> <!-- jdk8以下就原创 2021-07-23 14:08:21 · 519 阅读 · 0 评论