Java开发备忘录
文章平均质量分 84
积累学习、开发中遇到采坑
大道之简
锲而舍之,朽木不折;锲而不舍,金石可镂
展开
-
开源框架编码技巧一(缓存设计篇)
【代码】开源框架编码技巧一(缓存设计篇)原创 2023-05-03 22:09:07 · 208 阅读 · 1 评论 -
Nacos封装通用HttpClient
一、Nacos下Http请求设计众多处理模块处理,包括更新、Prometheus监控等众多功能,Nacos对这块做了统一封装,扩展性也很好,有新旧版本和同步和异步版本.HttpClient整体封装比较完善,对项目中使用也比较有参考.原创 2023-04-22 20:55:19 · 1099 阅读 · 0 评论 -
SpringBoot单元测试(一)
SpringBoot单元测试原创 2023-04-09 19:13:39 · 1380 阅读 · 0 评论 -
Nacos集群搭建
Nacos集群Windows环境搭建原创 2022-09-18 13:31:33 · 541 阅读 · 0 评论 -
通用HttpClient封装
通用HttpClient原创 2022-09-10 19:38:28 · 2384 阅读 · 1 评论 -
细数线程池的10个坑
细数线程池的10个坑转载 2022-08-16 21:43:39 · 507 阅读 · 0 评论 -
SpringBoot统一清理数据
SpringBoot数据并发流清理原创 2022-06-20 22:54:13 · 1875 阅读 · 0 评论 -
开源框架编码技巧一(设计模式篇)
一、建造者模式.1、MyBatis框架的环境类创建,通过静态内部类实现.public final class Environment { // 环境ID private final String id; // 事务工厂 private final TransactionFactory transactionFactory; // 数据源 private final DataSource dataSource; public Environment(String id原创 2022-05-01 11:18:25 · 1151 阅读 · 0 评论 -
JAVA开发常用API及封装
JAVA开发常用API及封装原创 2022-03-25 22:55:13 · 3782 阅读 · 0 评论 -
JDK中的性能优化计算
1、Arrays的二分排序中的取中点 ①、int mid=(low+high)/2;【会溢出不考虑使用】 ②、int mid=low+(high-low)/2;【会避免大数溢出,一般白板写二分查找多用】 ③、int mid = (low + high) >>> 1; 【移位运算,由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。】传统的方法 int mid = (left + right) /2 ,在 left 和 right 比较大...原创 2022-03-13 10:59:11 · 1316 阅读 · 0 评论 -
聊聊并发编程的10个坑
对于从事后端开发的同学来说,并发编程肯定再熟悉不过了。说实话,在java中并发编程是一大难点,至少我是这么认为的。不光理解起来比较费劲,使用起来更容易踩坑。不信,让继续往下面看。今天重点跟大家一起聊聊并发编程的10个坑,希望对你有帮助。1. SimpleDateFormat线程不安全在java8之前,我们对时间的格式化处理,一般都是用的SimpleDateFormat类实现的。例如:@ServicepublicclassSimpleDateFormatService{...转载 2022-03-12 17:59:53 · 142 阅读 · 0 评论 -
Java自定义线程池
一、Java语言本身也是多线程,回顾Java创建线程方式如下:1、继承Thread类,(Thread类实现Runnable接口),来个类图加深印象。2、实现Runnable接口实现无返回值、实现run()方法,啥时候run,黑话了。3、实现Callable接口重写call()+FutureTask获取.public class CustomThread { public static void main(String[] args) { // 自定义线程 .原创 2022-02-20 21:45:27 · 12118 阅读 · 4 评论 -
写代码有这16个好习惯,可以减少80%非业务的bug
前言每一个好习惯都是一笔财富,本文整理了写代码的16个好习惯,每个都很经典,养成这些习惯,可以规避多数非业务的bug!希望对大家有帮助哈,谢谢阅读,加油哦~1. 修改完代码,记得自测一下「改完代码,自测一下」是每位程序员必备的基本素养。尤其不要抱有这种侥幸「心理:我只是改了一个变量或者我只改了一行配置代码,不用自测了」。改完代码,尽量要求自己都去测试一下哈,可以规避很多不必要bug的。2. 方法入参尽量都检验入参校验也是每个程序员必备的基本素养。你的方法处理,「必须先校验参数」。比.转载 2021-02-06 21:20:31 · 221 阅读 · 0 评论 -
单个java进程占用700%的CPU???
背景最近负责的一个项目上线,运行一段时间后发现对应的进程竟然占用了700%的CPU,导致公司的物理服务器都不堪重负,频繁宕机。那么,针对这类java进程CPU飙升的问题,我们一般要怎么去定位解决呢?单个java进程占用700%的CPU达升笑2021-01-25 09:42:25背景最近负责的一个项目上线,运行一段时间后发现对应的进程竟然占用了700%的CPU,导致公司的物理服务器都不堪重负,频繁宕机。那么,针对这类java进程CPU飙升的问题,我们一般要怎么去定位解决呢?一、采用转载 2021-01-26 23:08:26 · 754 阅读 · 0 评论 -
Arthas - Java 线上问题定位处理的终极利器
前言在使用Arthas之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用Arthas轻松定位,迅速解决,及时止损,准时下班。1、Arthas 介绍Arthas是Alibaba在 2018 年 9 月开源的Java 诊断工具。支持JDK6+, 采用命令行交互模式,提供...转载 2020-12-28 22:29:51 · 278 阅读 · 0 评论 -
Java 处理 Exception 的 9 个最佳实践!
在Java中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。这也是绝大多数开发团队都会制定一些规则来规范对异常的处理的原因。而团队之间的这些规范往往是截然不同的。本文给出几个被很多团队使用的异常处理最佳实践。1. 在Finally块中清理资源或者使用try-with-resource语句反例如下:当使用类似InputStream这种需要使用后关闭的资源时,一个常见的错误就是在try块的最后关闭资源转载 2020-12-27 23:20:31 · 140 阅读 · 0 评论 -
JavaList集合整型数组互相转换以及List集合去重
一、开发中经常需要数组和集合各种转换,结合Java8流式操作简单总结一下. 1、int[] 转 List<Integer> 转换样例如下:int num[]={1,2,3,4,5,6,7,8,9,10}; 转换方式如下:List<Integer> list = Arrays.stream(num).boxed().collect(Collectors.toList()); 输出如下: 附说...原创 2020-10-24 22:51:51 · 2253 阅读 · 0 评论 -
Java遍历Map五种方法
一、Map集合遍历日常开发最常使用,简单总结五种方法差异。 ①、Iterator+entrySet写法【推荐JDK8以下】,Map.Entry是Map接口的内部接口,获取迭代器,然后依次取出每个迭代器里面的Map.Entry Iterator<Map.Entry<Integer,String>> iterator=map.entrySet().iterator(); while(iterator.hasNext()){ ....原创 2020-10-11 21:30:29 · 91868 阅读 · 8 评论 -
为啥阿里禁用BigDecimal的equals方法做等值比较!!!
BigDecimal,相信对于很多人来说都不陌生,很多人都知道它的用法,这是一种java.math包中提供的一种可以用来进行精确运算的类型。import java.math.BigDecimal;很多人都知道,在进行金额表示、金额计算等场景,不能使用double、float等类型,而是要使用对精度支持的更好的BigDecimal。所以,很多支付、电商、金融等业务中,BigDecimal的使用非常频繁。而且不得不说这是一个非常好用的类,其内部自带了很多方法,如加,减,乘,除等运算方法都是可以直接转载 2020-10-09 22:54:21 · 169 阅读 · 0 评论 -
Java 异常处理的十个建议
一、尽量不要使用e.printStackTrace(),而是使用log打印。反例:try{ // do what you want }catch(Exception e){ e.printStackTrace();}正例:try{ // do what you want }catch(Exception e){ log.info("你的程序有异常啦,{}",e);}理由: printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起转载 2020-08-24 22:19:34 · 206 阅读 · 0 评论 -
HttpClient使用
一:HttpClient简介. 1.1 HttpClient基于Http协议,Java客户端发送请求更加容易便捷,调用第三方接口更加方便了,方便测试接口,提高开发效率,功能非常丰富的组件包.模拟用户使用浏览器请求网站,也可以用于爬取网页数据. 1.2 HttpClient官网:链接. 1.3 HttpClient官网教程:HttpClient教程....原创 2018-11-26 21:02:56 · 364 阅读 · 0 评论 -
Java的代码质量优化的注意细节
Java的代码质量优化简单介绍一:写在前面--->软件质量有代码质量和文档质量来共同保证的.开发人员更应该在写完程序的时候,来化时间来优化自己的代码,达到更佳的效果.二:代码优化的具体介绍如下----> 1.1避免使用空块: 具体包括如下的几点;多余的分号(if条件的后面);没有任何作用的大括号;try-catch-finally语句中的finall原创 2017-09-22 10:26:16 · 399 阅读 · 0 评论 -
Java 制作二维码
Java制作二维码中间带图标的简单介绍一:知人论事:这个二维码有啥用,能帮我们做什么? 答:在日常的登录中,很多次都是用到了二维码扫码登录的案例,所以有必要了解一下二维码的制作过程的,可以简化我们登录的流程,尤其输用户名和密码等操作的.二:开门见山:简单的说一下如何制作二维码的. 1:首先要使用的工具有Q...原创 2017-05-21 16:16:04 · 1180 阅读 · 0 评论 -
Java实现浏览器链接地址的中文加密和解密
Java实现浏览器链接地址的中文加密和解密一:在好些的网站上进行相关的中文搜索的时候,发现点击搜索后留意了链接中的中文的变化,全部变成了加密后的字符串了.那么问题来了,java怎么实现这样的漂亮的加密的字符串了? 1.1案例展示--->来看51job上的例如搜索前端工程师: 1.2:原理分析--->简单分析 %25+16进制的,这个就想到了java中原创 2017-09-20 10:25:18 · 3582 阅读 · 0 评论 -
Java的短信接口的使用
基于阿里大于的升级后的短信接口的使用案例一:阿里大于的短信接口: 1.1由于阿里大于全面升级成阿里云 云通信,这样给一些新手的朋友带来了一些使用上的一点不方便.下面是阿里云的网址: https://dayu.aliyun.com/ 1.2新用户的注册:原创 2017-09-09 10:31:29 · 2150 阅读 · 0 评论 -
Java 自定义异常解读
Java自定义异常习题7-1:编写一个异常类MyException,在编写一个Student类,该类有一个产生异常的方法,speak(int m),要求参数大于1000时方法抛出这个异常,编写主类,在主类中创建对象调用。7-3:创建Computer类,该类中有一个计算两个数的最大公约数的方法,如果向该方法传递负整数就抛出异常。案例基于java程序设计慕课版的第七章练习题(Page 12原创 2017-04-28 23:45:55 · 3522 阅读 · 1 评论 -
Java获取注解的字段属性值
最近看一些ORM框架的源码,自己记录一些笔记.类似于JPA,不用手写Sql,那个实体类要要@Table和@Column注解.(基于JDK1.8). 首先自己定义一个@Column注解.@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Column {...原创 2018-04-17 16:11:19 · 15853 阅读 · 0 评论 -
finally块与抛异常
复习一下finally块里有return和try抛异常的程序执行顺序问题.首先看一个测试例子:public class FinallyTryTest { public static void main(String[] args) { int a=testFinally(); System.out.println(a); } public s...原创 2018-05-28 12:23:15 · 4565 阅读 · 0 评论 -
JAVA同步屏障CyclicBarrier
一:简单介绍同步屏障CyclicBarrier. 1.1 CyclicBarrier可以让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时,所有被屏障拦截的线程才会继续向下执行的.使用场景用于多线程计算数据.计算结果完成,插入同步屏障,阻塞等待. 1.2 CyclicBarrier位于java.util.concurrent包下.线程内执行CyclicBarri...原创 2018-11-25 16:22:22 · 563 阅读 · 0 评论 -
Java程序执行cmd命令
一:编写程序实现执行cmd指令. 1.1 思路分析:使用Process的exec()将cmd的执行结果通过java的IO流输出到IDE的控制台即可. Process的exec()方法.看一下源码,发现有好几个构造方法,传单个cmd的,传cmd数组的等. public Process exec(String command) throws IOException ...原创 2018-11-17 15:29:03 · 20243 阅读 · 3 评论 -
SpringBoot下使用ElasticSearch教程(一)
一:ElasticSearch简单介绍. ES是一款实时分析的分布式搜索引擎,易扩展集群,全文搜索,分布式实时文件存储,基于RESTful风格的简单易用API,底层使用Lucene封装,使用Java语言开发,和多种语言容易交互使用,速度非常快, 稳定,可靠,容易安装,开源.Lucene专注与底层搜索建设,ElasticSearch专注于企业应用. ElasticSea...原创 2018-10-06 15:40:26 · 11110 阅读 · 5 评论 -
Linux下使用ElasticSearch教程(一)
一:ElasticSearch在Linux下安装简单总结. 1.本次安装的版本是ES6.3.2.版本.下载到压缩包.解压后直接来到当前的解压目录. cd config vim elasticsearch.yml network.host:192.168.217.134(不在本地可以访问,改为自己的Linux的ip). 做端口放行...原创 2018-10-08 16:56:42 · 8908 阅读 · 0 评论 -
SpringBoot基于阿里云OSS上传文件
一:需求背景. Web系统开发中,文件上传是非常常见的功能,本来也没啥好说的,就是通过IO流将文件写到另外一个地方,这个地方可以是 1. 项目的目录中的某个文件夹. 2. 本地盘符的某个文件下. 3. 云服务OSS里面.例如七牛云,OSS等. 4. FastDSF的分布式文件存储系统. 本次使用阿里云OSS为例介绍一下吧.二:环境搭建 ...原创 2018-07-09 22:22:28 · 10434 阅读 · 19 评论 -
SpringBoot获取Spring容器中的Bean
一:实战背景 无论是采用XML文件的方式还是JAVA配置的方式。都是配置豆嘛,那么如何获取春天容器中的Bean(Spring容器自身的Bean和我们自己配置的Bean)的呐?并且以表格展示一下,统一一下数量吧。二:环境搭建 SpringBoot框架,Thymeleaf,BootStrap,IDEA,Maven的,Ajax前后台交互,即可。三:实验环节...原创 2018-07-08 13:53:35 · 4526 阅读 · 1 评论