开开心心编码,快快乐乐生活。
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。开开心心编码,快快乐乐生活。
在上一篇博文Java中equals和==的区别中介绍了Object类的equals方法,并且也介绍了我们可在重写equals方法,本章我们来说一下为什么重写equals方法的时候也要重写hashCode方法。
背景介绍 == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。 equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。
记得第一次学switch的时候那是还是学习c语言的时候,整体的写if-else,switch,现在回想起来已经是很多年前的事了,好了今天让我们再来回顾下简单的switch 语法 switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 b...
上传源码 项目中采用了分模块的方式构建,直接将maven-source-plugin写到父pom中,尝试了很多次发现源码一直不能上传到私服中,纠结了很长时间才发现原来多模块项目和普通一个项目的配置是有区别的,需要在每个需要上传源码的子模块中都配置maven-source-plugin才可以上传,于是乎有了一下的代码 1,非多模块项目 org.
近期由于工作需要,需要将html代码导入到pdf中,经过了几种pdf的方案对比后发现IText是最简单和便捷的一种方式,于是乎采用了Itext。 PDF生成 第一步:导入Maven依赖 com.
学习guava让我惊喜的第二个接口就是:Bimap BiMap是一种特殊的映射其保持映射,同时确保没有重复的值是存在于该映射和一个值可以安全地用于获取键背面的倒数映射。 最近开发过程中,经常会有这种根据key找value或者根据value找key 的功能,之前都是将值存储到枚举或者map中,然后通过反转的写法来实现的,直到发现了Bimap,才发现原来还有这么简便的方式。
最近学习了下guava的使用,这里简单记录下一些常用并且使用的工具类把。 看到table的使用时候真的是眼前一亮,之前的代码中写过很多的Map 这种格式的代码,这种阅读起来非常的不友好,甚至都不知道map中的key到底是什么还要联系上下文联想才可以,而table类型的出现彻底解决掉了这个麻烦。
本文着重介绍下,应该在何时恰当的使用string,stringbuffer,stringbuilder。 1,执行速度 StringBuilder > StringBuffer > String 我们知道String是字符串常量,不可变对象,因此每次对String进行操作的时候实际上是生成了一个新的String对象,然后将指针指向新的String对象上,之前的String对象就没有了指针引用,当内存中无引用的对象多了之后,就会触发JVM的GC操作了。
开发环境 cent os 6.5 mysql springboot duird 故障描述 本地开发环境没有任何问题,上传到服务器后发现提交的表单内容只要是中文直接变成 ??? 解决方式 错误尝试: 一开始怀疑是代码的问题,于是从百度上找了一些方法,但是很多都是无效的,比如配置 都没有解决问题,后来经过调试发现,java代码是没有问题的,直到插入数据库的最后一步,传递过来的数值还是中文,于是查看了mysql编码发现了问题。
本博客代码都是参考《Redis IN ACTION》这本书,由于书中代码都是python所写,所以本文代码为java语言编写,方便读者查阅 public class Chapter01 { private static final int ONE_WEEK_IN_SECONDS = 7 *...
1,杂谈 在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。
1,什么是闭包 “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 官方的解释实在是太高大上了,反正我是没有理解。
上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控redis主从集群即可。
1,下载Redis4.0.9 进入Redis中文网的下载页面 http://www.redis.cn/download.html 2,上传压缩包到linux系统 cd /user/local/java rz + 选择本地Redis路径上传 tar -zxvf redis-4.
首先我通过VMware配置了4台机器 然后依次更改每台机器的hosts文件为: (/etc/hosts) 192.168.32.128 linux1192.168.32.130 linux2192.
前面说过了类的加载机制,里面讲到了类的初始化中时用到了一部分内存管理的知识,这里让我们来看下Java虚拟机是如何管理内存的。 先让我们来看张图 有些文章中对线程隔离区还称之为线程独占区,其实是一个意思了。
类的生命周期 在开始本节之前让我们再来回顾下类的生命周期 没看过前6个过程的同学建议从头看下《深入java虚拟机学习 -- 类的加载机制》,这里就不再过多介绍了,着重说下类的卸载 类的卸载 当Sample类被加载、连接和初始化后,它的生命周期就开始了,当代表Sample类的Class对象不在被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的声明周期。
类加载的命名空间 每个类加载器都有自己的命名空间,命名空间由所有以此加载器为初始类加载器的类组成,不同命名空间的两个类是不可见的,但只要得到类所对应的Class对象的refrence(反射),还是可以访问另一个命名空间的类信息的。
类的初始化时机 在上篇文章中讲到了类的六种主动使用方式,反射是其中的一种(Class.forName(“com.jack.test”)),这里需要注意一点:当调用ClasLoader类的loadClass方法对类进行加载的时候,并不是对类的主动调用,不会导致类的初始化。
昨晚写 深入java虚拟机学习 -- 类的加载机制 都到1点半了,由于第二天还要工作,没有将上篇文章中的demo讲解写出来,今天抽时间补上昨晚的例子讲解。 这里我先把昨天的两份代码贴过来,重新看下: class Singleton { private static Singleton si...
当看到“类的加载机制”,肯定很多人都在想我平时也不接触啊,工作中无非就是写代码,不会了可以百度,至于类,jvm是怎么加载的我一点也不需要关心。在我刚开始工作的时候也觉得这些底层的内容距离我还很遥远,根本不用关系,可是随着做开发的时间越来越长,慢慢的已经意识到虚拟机相关要领的重要性。
Elasticsearch简介 Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用:维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。
1,背景 每个开发人员每天都离不开debugger,只要你在编码,就需要调试,作为一个开发快10年的老程序员每天都要写很多代码,当每个人接到任务的时候都会想,这些功能其实很快就能写完,没错,对于写代码来说时间确实很快,但是你能保证每次写完的都是对的吗,程序员的大部分时间都是在调试代码,而不是编程写代码,下面我就以idea为例说下如何调试吧。
使用comopontent组件报错错误信息:vue.js:491 [Vue warn]: Unknown custom element: - did you register the component correctly? For recursive components, make sure to provide the "name" option.
最近项目中需要使用到vue框架来实现前后端分离,于是抽时间看了下vue的相关只是,从官网了解到可以使用命令行工具(CLI)来构建应用,于是在本地环境预练了一下 下面这句话摘抄自vue文档: Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用。
使用eclipse开发的程序员们经常会接触版本控制软件,这里只要说下eclipse使用egit的情况下设置忽略文件。 特此说明在这里使用window->team->ignored对于git来说是不起效果的,它对svn有效果,好了不说废话了。
1、firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disable firewalld 禁用: systemctl stop firewalld 2.
在vm中安装好tomcat,而且在liunx中使用nc命令可以返回成功,但是更换到window中访问不到tomcat的情况,是由于linux防火墙的问题造成的,传统的解决方式有2中 第一种解决方案: 修改/etc/sysconfig/iptables 这个文件,增加一个8080端口 -A RH-Fi...
1,下载tomcat8.0 进入tomcat的下载地址:http://tomcat.apache.org/download-80.cgi 2,上传到linux服务器 cd /usr/local/java/ rz+apache-tomcat-8.
1,下载jdk1.8 首先进入jdk下载目录:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.
最近在window10的电脑上安装了虚拟机,再装CentOS 的时候遇到了下面的这张图: 如果点击确定后,退出在进入的时候就会提示“Intel VT-x,但 Intel VT-x 处于禁用状态”,Intel VT-x 即Virtualization Technology,虚拟化技术,即支持多系统的技术,需要在BOIS中打开。
整理多半天的solr6.6,终于算是把solr6.6中配置数据库弄出来了,网上的文章千篇一律,各说个的,没有一篇统一覆盖solr6.6版本配置的 帖子,本章节我会把配置的一些注意事项一一列举,由于时间原因,本片只介绍如何一次性导入数据,不附带增量导入,想看增量的同学可以在后面的文章中。
在上一篇文章中已经简单介绍了solr在windows的部署,今天我们来下如何新建一个自己core。 1,core理解 如果把solr理解为个数据库的话,那么core可以理解为数据库中的一张表,其实就是数据集合 在写本片文章之前看到网上很多教程都说需要找到solr.xml来配置core的信息,特此说明,那些都是老版本中的solr需要,新版本的solr中不需要配置solr.xml。
目前网上关于solr6.+的安装教程很少,有些6.0之前的教程在应用到6.+的版本中出现很多的问题,所以特别整理出来这一片文章,希望能给各位码农一些帮助! 很少写些文章,如有不对的地方,还希望多多指导。
距离上一篇文章已经很长时间了,最近太忙碌了,今天发布spring boot遇到一个问题,找了好久才找到解决办法,今天贴出来和大家一起分享下,首先看错误信息 1 HTTP Status 500 - Request processing failed; nested exception is org.
简介 相信很多人都接触spring框架很长时间了,每次搭建spring框架的时候都需要配置好多的jar、xml,做很多繁琐重复的配置,稍微不留神就会出现各种各样的问题,每次调试真的是香菇、蓝瘦啊。
c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题。 文件“D:\log.txt”正由另一进程使用,因此该进程无法访问该文件。 log.txt是一个日志文件,不定时都可能由另外的程序对它进行日志记录写入操作。
转眼间自己也是写代码写了6年的人了,之前一直在博客园看各位大牛的文章,并从中学到了很多知识,但从来没在园中写过文章,最近突发奇想也想把自己在平时工作中的技术积累和工作心得分享给各位博客园的兄弟们。 从刚毕业的懵懂状态,到现在的工作生涯,可以说经历了好多波折,从一个无人问津的实习生到项目经理也...