java
文章平均质量分 69
junehappylove
上善若水。水善利万物而不争,处众人之所恶,故几于道。居,善地;心,善渊;与,善仁;言,善信;正,善治;事,善能;动,善时。夫唯不争,故无尤。
展开
-
【搞不明白】redis和mysql、mybatisplus有啥关系
上述代码中,首先通过redis查询在线的设备的shakeCode列表,有了codes 信息后在通过mybatisplus插件去查询mysql数据库。框架中的东西就是简单的查询操作,redis中获取的数据只是一个查询的条件变量,简直离谱!一个解决三天的bug,到现在也没有搞明白,如题,到底redis和mysql、mybatisplus能有啥关系。将RedisTemplate添加了泛型,因为查询分页的方法里面所有的操作都是对字符串的,当然也尝试过。看下面的一段代码,是一个分页查询:注意引用的。原创 2024-03-27 22:26:15 · 365 阅读 · 0 评论 -
解决Nacos服务注册使用服务器/Docker容器/内网ip问题
问题:服务器多网卡或者docker容器内网,都会导致Nacos服务注册,用的ip地址跟我们实际需要的ip地址不对应。原创 2022-12-15 16:25:45 · 1642 阅读 · 0 评论 -
Spring-boot 引入、使用和测试线程池及异步调用使用事项
前言线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.x之后,就已经内置了@Async来完美解原创 2022-03-20 03:20:29 · 910 阅读 · 0 评论 -
有趣的递归,让遍历变简洁
抛出一个问题:如何遍历一个文件目录?百度一下简直太多了,例如 https://www.cnblogs.com/helios-fz/p/11023205.html 小哥给了两个实现,一个单纯的循环,另一个就是递归的实现,然后就可以在控制台打印目录下所有的文件以及文件夹,以及文件夹下的文件及文件夹…有多少输出多少。上面人家给出了大致的思路就是两种实现方式,但实际应用中,可就不仅仅是在控制台输出喽。树形递归有这样一个需求,要将某个文件目录下所有文件及文件夹(构成一颗展示树)展示到前台页面(web)中,.原创 2020-10-27 14:12:55 · 234 阅读 · 0 评论 -
Arrays.asList() 和 Collections.singletonList() 区别
两者最大区别就是可变性和不可变性Arrays.asList()得到的List是可变的,跟据数组大小确定而Collections.singletonList是不可变的Collections.singletonList()得到的List元素只能有1个既然Collections.singletonList()不可变,那就不要尝试对其元素修改,一旦修改就会导致UnsupportedOpe...原创 2020-02-13 14:22:21 · 3515 阅读 · 0 评论 -
RabbitMQ第四篇:远程调用
前言:前面我们讲解的都是本地服务器,现在如果需要远程计算机上运行一个函数,等待结果。这就是一个不同的故事了,这种模式通常被称为远程过程调用或者RPC。本章教程我们使用RabbitMQ搭建一个RPC系统,一个客户端和一个可扩展的RPC服务器,现在我们开始吧。Callback queue一般做rpc在RabbitMQ是比较容易的,一个客户端发送一个请求信息和一个响应信息的服务器回复,为了得到一个响应,我原创 2017-07-20 17:44:29 · 654 阅读 · 0 评论 -
RabbitMQ第三篇:采用不同的交换机规则
在上一篇我们都是采用发送信息到队列然后队列把信息在发送到消费者,其实实际情况并非如此,rabbitMQ其实真正的思想是生产者不发送任何信息到队列,甚至不知道信息将发送到哪个队列。相反生产者只能发送信息到交换机,交换机接收到生产者的信息,然后按照规则把它推送到对列中,交换机是如何做处理他接收到的信息,并怎么样发送到特定的队列,那么这一篇主要是讲解交换机的规则。一:发布/订阅在上一篇说到的队列都指定了名原创 2017-07-20 17:43:07 · 654 阅读 · 0 评论 -
RabbitMQ第二篇:java简单的实现RabbitMQ
前言:在这里我将用java来简单的实现rabbitMQ。下面我们带着下面问题来一步步的了解和学习rabbitMQ。1:如果消费者连接中断,这期间我们应该怎么办2:如何做到负载均衡3:如何有效的将数据发送到相关的接收者?就是怎么样过滤4:如何保证消费者收到完整正确的数据5:如何让优先级高的接收者先收到数据一:”Hello RabbitMQ”下面有一幅图,其中P表示生产者,C表示消费者,红色部分为消息队原创 2017-07-20 17:40:50 · 3534 阅读 · 1 评论 -
Mybatis框架的连接池的使用工具类
在文章《Mybatis框架的连接池配置》中写的了mybatis的连接池,今天再写一个java的操作工具类配合连接池操作使用。代码干货package utils;import java.io.IOException;import java.io.Reader;import java.io.Serializable;import org.apache.ibatis.io.Resources;im原创 2017-11-29 18:28:59 · 598 阅读 · 0 评论 -
利用JAXB对java对象和xml互转
好一段时间没写博客了,一直出差得有半年多时间了吧!其实还是懒,哈哈 最近算是转行做大数据了,还好有个前辈带带,应该是比不少人少走弯路吧! 这东西主要学的是思想今天写个java对象和xml互转的(项目的要用到xml的配置文件)主要是用JAXB实现java对象与xml直接的互相转换,先列举一下JAXB(Java Architecture for XML Binding)...原创 2018-03-26 02:06:36 · 328 阅读 · 0 评论 -
java web项目如何限制访问的ip访问地址
JavaWeb项目限制IP访问这其实是一个类似IP地址的黑白名单问题,客户端IP地址在黑名单的就禁止访问,不在的就正常访问;提出这样一个问题,大概就是感觉某些web应用在某些场合下要求一定的安全措施,这也算是安全审计的一种方法,可能是在应用运行过程中检测到某些IP被高访问服务器,或者经过某种手段(如大数据分析)得知,这些IP有可能再恶意攻击,so最简单的方法就是禁止这些IP访问,因此也就提...原创 2018-06-04 14:36:52 · 9678 阅读 · 2 评论 -
Spring温故而知新 – bean的装配
Spring装配机制Spring提供了三种主要的装配机制:通过XML进行显示配置通过Java代码显示配置自动化装配自动化装配Spring中IOC容器分两个步骤来完成自动化装配:组件扫描:Spring会自动发现应用上下文中所创建的 bean(通过定义资源的方式,让 Spring IoC 容器扫描对应的包,从而把 bean 装配进来)自动装配:spring自动满足b...转载 2018-07-06 09:52:45 · 342 阅读 · 0 评论 -
SpringMVC通过ajax传递参数list对象或传递数组对象到后台
环境前台传递参数到后台前台使用ajax后台使用springMVC传递的参数是N多个对象JSON对象和JSON字符串在SpringMVC环境中,@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定data...原创 2018-07-30 17:29:36 · 5038 阅读 · 1 评论 -
JAVA clone方法-深复制(深克隆)&浅复制(浅克隆)
引子 为啥要用clone方法? 最近在项目中发现某开发人员代码有问题,然而单元测试也确实不通过,就是对对象的引用失败造成的 具体如下: 在对某个对象更新保存数据操作,对象关联某个文件需要将对象更新到数据库后再判断文件是否更新(文件存储到专门的文件系统中,对象保持文件的访问路径),如果文件更新了,那么就需要上传对象原来的文件,因此需要对要更新的对象保留一份副本 然而再...原创 2018-08-02 18:09:10 · 14685 阅读 · 8 评论 -
JavaBean中属性 顺序的问题
在代码实践中发下这样一个有趣的问题,求大佬解释?public class ModelData { @Getter @Setter private String name; @Getter @Setter private String desc; @Getter @Setter private String formula;// 规则:all[所有都需要满足] , least[至少...原创 2018-11-09 14:01:52 · 2467 阅读 · 1 评论 -
阿里编码规范
给大家转发一篇大厂的编码规范的(java版的)虽然没在大厂任职过,不过有值得学习的内容流出来,仔细看看这都是先人门多年经验的总结,就是值得我们学习的。声明转载的,原文https://blog.csdn.net/Daybreak1209/article/details/82378249感觉具体是不是大厂的(错别字不少)流出来的,还是某培训机构自己编写的不重要,具体看下面吧Code...原创 2018-11-21 17:22:03 · 1114 阅读 · 0 评论 -
Java链式调用-Builder模式
过去写链式调用感觉又臭又长,这种编码方式的代码看着很不爽,且不明白调用的顺序。而且老师教的时候就已经习惯了,“一行一句,分号结尾”。现在呢,感觉又要极力推崇链式调用了,因为它还真方便!当你慢慢熟悉之后就会发现这样写无论在可读性和代码量上都有优势。在讲链式调用之前,还是先说一下,java的一个设计模式吧 – Builder模式Builder模式Builder模式是一种一步一步创建一个复杂对...原创 2018-12-24 17:51:32 · 10901 阅读 · 4 评论 -
Java链式调用-Builder模式(续)
接上篇博客:Java链式调用-Builder模式上篇博客提到了java8之后对通用Builder模式得设计,嗯,这是一个好的设计,参考原文博客是:Java中Builder模式的实现详解,也可以参考CSDN博友转载的;原文老哥不厚道,转载的也不厚道,我这里贴一下全面的吧java8使用Java8之后,对于Builder模式我们有了新的方法,我们可以利用Supplier、Consumer来构造一...原创 2019-01-11 16:19:10 · 5093 阅读 · 1 评论 -
再谈编码规范
我曾经发过两篇文章阿里编码规范、如何使用Java的注释,里面大致介绍了如何写注释,java代码编写的基本的约定等等,应该算是从事IT行业或者程序员的基本要求吧。可惜的是现在从事编程的门槛越来越低了,各种野路子出身的Coder简直逆天了。在你没有看到别人写的代码之前,你从来不会想象到怎么可以把代码写的这么"臭"!下面我会贴一份完整的代码出来,请忽略它要实现的功能,为了看到其原貌,我用截图的方...原创 2019-03-15 13:22:33 · 331 阅读 · 0 评论 -
Openfire扩展整合现有系统用户
文章目录Openfire自带用户整合自己系统用户JDBCAuthProviderjdbcAuthProvider.passwordSQLjdbcAuthProvider.passwordTypeJDBCGroupProviderjdbcGroupProvider.allGroupsSQLjdbcGroupProvider.descriptionSQLjdbcGroupProvider.groupC...转载 2019-04-22 09:29:49 · 391 阅读 · 0 评论 -
为什么写了对象的equals方法,总是要重写hashCode方法?
在回答这个问题之前,首先要搞明白,什么是equals方法,什么是hashCode方法!介绍Java的equals方法所有Java对象的equals方法均来自与java.lang.Object对象中的equals方法。Object类中默认的实现方式是 : return this == obj 。也就是说,只有this 和 obj引用同一个对象,才会返回true。Java的ha...原创 2019-06-05 14:18:14 · 385 阅读 · 0 评论 -
大数据集群-这是一篇longlong的博客
ip设置:服务器中共虚拟了6台虚拟机:hadoop1 :内存8G,硬盘2T hadoop2 :内存8G,硬盘2T hadoop3 :内存8G,硬盘2T zookeeper :内存8G,硬盘2T redis :内存8G,硬盘2T ethings :内存8G,硬盘2T192.168.56.101 hadoop1 == hadoop2.7.4 + zookeeper3.4.10 +原创 2019-11-15 17:14:01 · 704 阅读 · 0 评论 -
57条最有价值的经验
一、创建和销毁对象 (01)考虑用静态工厂方法代替构造函数 (02) 使用私有构造函数强化singleton属性 (03)通过私有构造函数强化不可实例化的能力 (04) 避免创建重复对象 (05)消除过期的对象引用 (06)避免使用终结函数 二、对于所有对象都通用的方法 (07)在改写equals时候请遵守通用约定 (08)改写equals时总要改写原创 2017-06-13 12:47:18 · 342 阅读 · 0 评论 -
如何使用Java的注释
为何要使用注释使用Java的注释Java提供了3种用于程序的注释JAVA注释在软件开发中的使用文件头注释类接口注释构造函数注释域注释方法注释为何要使用注释一个老生常谈的问题,只要代码不仅仅是给自己看,想要别人看,那么一个方法就必须有注释!即使给自己看,那么也需要注释,因为我们要做规范的开发,我们需要严禁的对待自己的代码。 还有重要的一点儿,就是方法只有有了注释才能生成一个很友好原创 2017-01-17 14:03:33 · 1941 阅读 · 0 评论 -
java socket通信的简要举例
Java的原生Socket(java.net.Socket)通信的举例:首先是创建Socket的服务端;其次创建Socket的客户端。通信过程如下:客户端(C)向服务端(S)发送任意数据,服务端接受到来自客户端的数据并展示,同时激发服务端向客户端不停的发送随机数据;客户端接受来自服务端的数据并展示。说明:通信过程如上。下面看代码如何实现:服务端:{CSDN:CODE:2原创 2017-01-11 15:41:19 · 399 阅读 · 0 评论 -
java NIOSocket 通信简要举例
基于Java使用NIOSocket(java.nio.*)通信的举例:首先创建NIOSocket的服务端;其次创建NIOSocket的客户端。通信过程如下:客户端(C)向服务端(S)发送任意数据(包括用户直接从控制台输入数据,使用Scanner),服务端接受到来自客户端的数据并展示,同时客户端发过来的数据原封不动的再发给客户端;客户端接受来自服务端的数据并展示。说明:通信过程如上。原创 2017-01-11 16:34:25 · 1509 阅读 · 2 评论 -
mybatis的全面分页插件
根据下面分页的思想,很容易实现Mybitas的多租户设计。使用Mybatis提供的拦截器。对分页的SQL语句通过封装处理,处理成不同的分页sql。本例已经实现了对Mysql和Oracle的分页功能。注意下面的引用包,不要引用错了。[java] view plain copy print?import java.sql.Co原创 2016-08-22 14:44:55 · 809 阅读 · 0 评论 -
关于JMeter中为每一个测试元素添加UUID唯一标识--源码级别实战
首先,我这里用改进的jmeter说明,就是项目中所有的“jmeter”字符被替换成了“DL”其他的程序逻辑均无变化;先看脚本文件,以CookieManager为例: <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">原创 2017-01-18 16:27:39 · 1418 阅读 · 0 评论 -
读取properties配置文件的路径的处理方法
读取properties配置文件的路径的处理方法问题提出最近在做一个项目,遇到以下业务需要: 在使用IDE开发的时候,启动服务后,有一个加载配置文件属性信息的Const.java类。用于得到配置文件里的配置信息; 发布项目的时候,需要把项打成jar包执行,这时候之前的加载配置文件的方法就不起作用了得不到配置文件的路径; 因在项刚启动时,需要启动加载一个Listener,在Liste原创 2017-02-14 15:36:00 · 4437 阅读 · 1 评论 -
JVM调优总结:一些概念
数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型基本类型 的变量保存原始值,即:他代表的值就是数值本身;引用类型 的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,boolean,returnAddress引用类型包括:类类型,原创 2017-06-09 16:27:32 · 242 阅读 · 0 评论 -
JVM调优总结(9):参考资料
能整理出上面一些东西,也是因为站在巨人的肩上。下面是一些参考资料,供大家学习,大家有更好的,可以继续完善:)Java 理论与实践: 垃圾收集简史Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection TuningImproving Java Application Performance and Scalability by Reduc原创 2017-06-09 18:36:08 · 341 阅读 · 0 评论 -
JVM调优总结(8):反思
垃圾回收的悖论所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的响应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。当然,上面是从技术角度出发解决垃圾回收带来的问题,但是从系统设计方面我们就需原创 2017-06-09 18:33:50 · 287 阅读 · 0 评论 -
JVM调优总结(7):调优方法
JVM调优工具 Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释放情况、集合类检查、对象树上面这些调优工原创 2017-06-09 18:03:31 · 381 阅读 · 0 评论 -
JVM调优总结(6):新一代的垃圾回收算法
垃圾回收的瓶颈传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相对较小范围内,但原创 2017-06-09 17:50:03 · 279 阅读 · 0 评论 -
JVM调优总结(5):典型配置
以下配置主要针对分代垃圾回收算法而言。堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java原创 2017-06-09 17:43:34 · 294 阅读 · 0 评论 -
JVM调优总结(2):基本垃圾回收算法
可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把原创 2017-06-09 16:43:23 · 336 阅读 · 0 评论 -
JVM调优总结(3):垃圾回收面临的问题
如何区分垃圾前面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。前面分析的堆和栈的区别,其中栈是真正进行程序执行地方,所以原创 2017-06-09 16:52:50 · 222 阅读 · 0 评论 -
JVM调优总结(4):分代垃圾回收
为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命周原创 2017-06-09 16:59:40 · 347 阅读 · 0 评论 -
Java RMI 框架(远程方法调用)
Java RMI 框架(远程方法调用) RMI(即Remote Method Invoke 远程方法调用)。在Java中,只要一个类extends了java.rmi.Remote接口,即可成为存在于服务器端的远程对象,供客户端访问并提供一定的服务。JavaDoc描述:Remote 接口用于标识其方法可以从非本地虚拟机上调用的接口。任何远程对象都必须直接或间接实现此接口。转载 2016-08-16 15:06:28 · 552 阅读 · 0 评论