![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 82
结构化思维
码农进行时
展开
-
HashMap底层实现原理(下)
上一篇文章我们介绍了HashMap的底层实现,但还遗留了一点内容,我们再回顾一下上一篇文章里说的内容执行完红框里的代码,personMap里放入了8个元素,放置完成后在堆内存表现如下图如果忽略底层实现细节,是这样的在Map中,一个key,对应了一个value,如果key的值已经存在,Map会直接替换value的内容,来看一下源码中是怎么实现的,来看以下代码Person oldPerson1 = personMap.put("张三", new Person("新张三", 21))转载 2021-06-22 15:32:39 · 82 阅读 · 0 评论 -
HashMap底层实现原理(上)
本来想先在专栏里简单的说一下二叉树,红黑树的内容后再说HashMap的,但看到评论区里不断的出现HashMap这个词,怕大家等得着急,本篇文章就先说说HashMap吧,前面讲ArrayList和LinkedList时把源码说得很细,只要理解了这两块内容,本篇内容也很好理解,先来看看HashMap在Map这个大家族中的位置。上图中,白色部分是接口,黄色部分是要重点了解的,最好是看一遍源码,绿色部分已经过时,不常用了,但是面试中可能会问到。这里先简单的说一下这几个Map,TreeMap是基于...转载 2021-06-22 15:31:40 · 91 阅读 · 0 评论 -
取号器设计
背景新建商品时,每个商品需要有商品编码,有以下要求1.8位无序的编码(编码比较敏感,不能被外部猜测到平台的商品数量);2.全局唯一,不可重复;方案由三部分组成,分别是“生成器”,“取号器”,"编码池"。设计一个"编码池",采用预生成方案,定时定量生成唯一编码放到"编码池",由“取号器”从"编码池"获取唯一编码。8位无序编码有两部分组成:号段+随机数。号段:2位,随机数:6位。也就是说一次性会生成99W的编码,我们采用每天一次检查,如果检查到当前"编码池"的可用编码低于阈值(...原创 2021-04-23 15:45:09 · 892 阅读 · 0 评论 -
Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
Redis的集群方案大致有三种:1)redis cluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。一、sentinel哨兵模式介绍Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解...转载 2019-10-28 19:23:49 · 155 阅读 · 0 评论 -
带着问题学习分布式系统之数据分片
目录三种数据分片方式 hash方式: 一致性hash range based 小结: 分片特征值的选择 以MongoDB sharding key为例 元数据服务器 HDFS元数据 MongoDB元数据 元数据的缓存: Lease机制: 总结 references正文 在前文中,提出了分布式系统(尤其是分布式存储系统)需要解决...转载 2019-10-23 17:36:36 · 217 阅读 · 0 评论 -
hashCode
序言 写这篇文章是因为在看hashMap源码时遇到有什么hashcode值,然后就去查,脑袋里面是有映像的,不就是在Object中有equals和hashcode方法嘛,这在学java基础的时候就遇到过,不过那时候无所谓,不懂就不懂,就一笔带过去了,然后到现在,又回过头来补本应该以前就搞清楚的问题,所以知道了一个道理,学习不是一个追求速度的事情,不懂就要去查清楚,弄明白,一步一...转载 2019-03-06 08:46:16 · 113 阅读 · 0 评论 -
利用JWT生成Token
开篇实现Token的方式有很多,本篇介绍的是利用Json Web Token(JWT)生成的Token.JWT生成的Token有什么好处呢?安全性比较高,加上密匙加密而且支持多种算法。 携带的信息是自定义的,而且可以做到验证token是否过期。 验证信息可以由前端保存,后端不需要为保存token消耗内存。本篇分3部分进行讲解。 什么是JWT JWT的代码实现 用H...转载 2019-03-01 15:09:42 · 890 阅读 · 0 评论 -
泛型基础
http://www.runoob.com/java/java-generics.html Java 泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。假定我们有这样一个需求:写一个排序方法,能够对...转载 2019-01-14 11:13:30 · 92 阅读 · 0 评论 -
你的项目应该如何正确分层?
https://juejin.im/post/5b44e62e6fb9a04fc030f216 如果喜欢微信阅读,想了解更多java知识,系统设计,分布式中间件等可以关注我的微信号: 咖啡拿铁,当然还有更多福利等着你。1.背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划...转载 2019-01-11 17:10:02 · 426 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先...转载 2019-03-09 23:21:07 · 85 阅读 · 0 评论 -
怎样理解阻塞非阻塞与同步异步的区别
原文链接:https://www.zhihu.com/question/19732473/answer/20851256“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在...转载 2019-03-27 17:29:08 · 132 阅读 · 0 评论 -
Java中的Date和时区转换
转https://blog.csdn.net/halfclear/article/details/775739561.Date中保存的是什么在java中,只要我们执行Date date = new Date();就可以得到当前时间。如:Date date = new Date();System.out.println(date);输出结果是:Thu Aug 24 10:15:2...转载 2019-04-26 10:51:03 · 815 阅读 · 0 评论 -
BigDecimal/Long 前后端交互失去精度解决方法
问题发现一个诡异的现象,数据库存储的bigDecimal类型的数据,经过springboot返回给前端数据丢失了几位小数,例如 222233334444.01134567(后端)>222233334444.01135(前端)。经过查资料,在Controller层通过@ResponseBody将返回数据自动转换成json时,不做任何处理,而直接传给前端的话,在BigDecimal长度大于17...转载 2019-06-18 08:52:28 · 2034 阅读 · 0 评论 -
Mysql中“select ... for update”排他锁分析 (表锁与行级锁)
https://blog.csdn.net/claram/article/details/54023216原创 2019-08-15 23:12:33 · 450 阅读 · 0 评论 -
聊聊同步、异步、阻塞与非阻塞
近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞、非阻塞、异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却说的不那么准确,这也是自己在这几个方面也没有细细考究过的原因吧。经过看了些这几个概念的资料,发现同步、异步、阻塞、非阻塞的概念其实也并不难以理解,在此写下此文,欢迎拍砖,希望多多交流。1 同步与异...转载 2019-09-29 16:00:03 · 81 阅读 · 0 评论 -
tomcat数据源配置
一、数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connection con = DriverManager.getConnection();) ③操作数据库(PreparedStatement stat = con.pr转载 2016-04-12 16:30:35 · 615 阅读 · 0 评论 -
Axis2调用webservice Client--RPCServiceClient
应用rpc的方式调用 这种方式就等于远程调用, 即通过url定位告诉远程服务器,告知方法名称,参数等, 调用远程服务,得到结果。 使用 org.apache.axis2.rpc.client.RPCServiceClient类调用WebService serviceClient.invokeBlocking(opQName, opArgs,opReturnType)opQName:调用转载 2016-02-29 15:32:49 · 2059 阅读 · 0 评论 -
Java中的equals和==学习小结
Java中的equals是十分重要的,和= =要区别开来,最近在看孙卫琴的JAVA面向对象编程一书,觉得对其阐述写的不错,所以现在小结其主要内容,而且要将 = =和 equals列为重要的对比概念来学习==比较的是两个变量是否指向同一对象,拥有相同的引用值equals(Object obj) 判断两个对象是否有相同的引用1、声明格式 public boolean转载 2012-04-11 16:19:16 · 254 阅读 · 0 评论 -
int 与integer
int 是基本数据类型Integer 是特殊的一种类,叫它int的一个包装类(wrapper),他是类不是基本数据类型,他的内部其实包含一个int型的数据那为什么要用Integer呢,主要是因为面向对象的思想,因为Java语言是面向对象的,这也是它只所以流行的原因之一,对象封装有很多好处,可以把属性也就是数据跟处理这些数据的方法结合在一起,比如Integer就有parseInt()等方法来原创 2012-04-11 17:00:13 · 356 阅读 · 0 评论 -
利用Math.Random()方法来生成随机数。(转)
在Java语言中生成随 机数相对来说比较简单,因为有一个现成的方法可以使用。在Math类中,Java语言提供了一个叫做random的方法。通过这个方法可以让系统产生随机 数。不过默认情况下,其产生的随机数范围比较小,为大于等于0到小于1的double型随机数。虽然其随机数产生的范围比较小,不能够满足日常的需求。如 日常工作中可能需要产生整数的随机数。其实,只要对这个方法进行一些灵活的处理,就可以获转载 2012-04-23 20:26:15 · 4658 阅读 · 0 评论 -
java连接seversql
一、JAVA连接SQL的语句 JAVA连接SQL2000语句为: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); DriverManager.getConnection("jdbc:odbc:数据库名","数据库登录名","登录密码"); 但连接SQL2005,已经改为: Class.forName("com.microsoft.s转载 2012-05-08 23:01:27 · 292 阅读 · 0 评论 -
String 引发的一些思考
简单的一条语句 String s="test"; 却蕴含着好多知识点在里面,借着这条语句对基础知识做个简单的总结:1.String不是基本类型,(八种基本类型byte、int、char、long、float、double、boolean和short)是java类库提供的一种字符序列不可变长的类类型。既然属于类对象,那么就可以去new一个实例对象,那么和String s=new String("原创 2012-05-30 00:29:53 · 300 阅读 · 0 评论 -
java的一些基础知识 .
想来学习Java也有两个年头了,永远不敢说多么精通,但也想谈谈自己的感受,写给软件学院的同仁们,帮助大家在技术的道路上少一点弯路。说得伟大一点是希望大家为软件学院争气,其实最主要的还是大家自身的进步提升—— Java学习杂谈一 1. 关于动态加载机制—— 学习Java比C++更容易理解OOP的思想,毕竟C++还混合了不少面向过程的成分。很多人都能背出来Java语言的特点,所谓的动态转载 2012-05-17 21:29:14 · 2022 阅读 · 0 评论 -
public,protected,private
public 对所有包可见protected 对本包和子类可见private 对本类可见默认 对本包可见(不建议)原创 2012-09-17 10:54:48 · 251 阅读 · 0 评论 -
关于继承的不完整总结
1.继承体现的是"is a"的关系,表示子类是父类的一种2.子类继承了父类的普通方法和成员变量3.当子类继承父类时,要注意构造方法的编写:子类的构造方法若没有手动的调用父类的构造方法(super()或super(x....),要在构造方法的第一句调用),则编译器会为构造方法自动的添加super(),调用父类的无参构造方法。(如果父类没有无参构造方法,则会编译出错,一个好的编程习惯是:不原创 2012-09-26 00:58:29 · 349 阅读 · 0 评论 -
java.util.Date&java.sql.Date&java.sql.Timestamp
public class time { public static void main(String[] args) {System.out.println("---------------java.util.Date-----------------"); Date date = new Date(); System.out.println("可精确到秒:"+date); Str原创 2012-11-26 19:09:37 · 397 阅读 · 0 评论 -
tomcat启动报错 Address already in use: JVM_Bind<null>:8080
在MyEclipse启动或者是tomcat启动的时候出现:Address already in use: JVM_Bind:8080 出现该异常,这里的8080是你的端口,有可能是80或者其他,但是都是一个原因引起的,我在用MyEclipse的时候,有时候MyEclipse突然死掉了,然后我就直接关掉在打开,这时候重启服务器就会出现该异常:Address already in use: JVM转载 2012-11-19 23:47:56 · 1739 阅读 · 0 评论 -
IndexOf、LastIndexOf、Substring的用法
今天遇到截取字符串的问题,在网上查了IndexOf、LastIndexOf、Substring这三种截取字符串的使用总结如下: String.IndexOf String.IndexOf 方法 (Char, Int32, Int32)报告指定字符在此实例中的第一个匹配项的索引。搜索从指定字符位置开始,并检查指定数量的字符位置。String.IndexOf(va转载 2012-12-09 23:18:43 · 305 阅读 · 0 评论 -
java InputStream读取数据问题
java InputStream读取数据问题1. 关于InputStream.read() 在从数据流里读取数据时,为图简单,经常用InputStream.read()方法。这个方法是从流里每次只读取读取一个字节,效率会非常低。 更好的方法是用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int转载 2013-06-15 16:38:07 · 651 阅读 · 0 评论 -
什么时候用assert
java面试笔试题:什么时候用assert? assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制.在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退转载 2014-05-14 21:28:36 · 9940 阅读 · 0 评论 -
java 物体运动过程中闪烁问题浅谈(一)
import java.awt.*;import java.awt.event.*;public class TankClient extends Frame { public static final int GAME_WIDTH = 800; public static final int GAME_HEIGHT = 600; int x = 50, y = 50原创 2012-02-21 23:54:46 · 1554 阅读 · 0 评论