
java
文章平均质量分 74
La victoria
向内认知,向外行走
展开
-
Java计算阶乘(n!)
两种方法1.使用递归方式实现 public static int recursion(int num){//利用递归计算阶乘 int sum=1; if(num < 0) throw new IllegalArgumentException("必须为正整数!");//抛出不合理参数异常 if(num==...原创 2018-12-23 23:43:23 · 76724 阅读 · 4 评论 -
Java集合系列-ConcurrentHashMap
本篇文章来讲解第二个非常重要的内容,那就是ConcurrentHashMap是怎样保证多线程安全的。本篇文章的主要内容如下:1:CAS在ConcurrentHashMap中的运用2:ConcurrentHashMap在初始化容器时怎样保证安全的3:ConcurrentHashMap在添加元素时怎样保证线程安全的4:ConcurrentHashMap在获取元素时怎样保证线程安全的...原创 2019-05-14 00:55:04 · 326 阅读 · 0 评论 -
没有bug二分查找
定义在计算机科学中,二分查找(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找...原创 2019-04-30 23:39:35 · 239 阅读 · 0 评论 -
什么时候需要分布式锁?
比如:高并发下争夺共享资源,比如秒杀对于库存这种共享资源需要用到分布式锁,如果不用分布式锁很可能造成超卖。分布式锁也是锁 在单体应用的时候,如果多个线程要访问共享资源的时候,我们通常线程间加锁的机制,在某一个时刻,只有一个线程可以对这个资源进行操作,其他线程需要等待锁的释放,Java中也有一些处理锁的机制,比如synchronized。 而到了分布式的环境中,当某个资源可以...转载 2019-05-03 01:23:14 · 10950 阅读 · 0 评论 -
栈与堆
栈作为一名有政治觉悟的、坚持政治思想正确的、胸口飘扬鲜红的工卡的程序员,我们要谨记这句话:没有党就没有新中国,没有栈就没有过程调用。是的,栈就是过程调用的基础。为保证顺利的过程调用,栈主要做了以下四点:保存函数参数。 保存返回地址。 保存寄存器。 调整帧指针(ebp)和栈指针(esp)。保存函数参数这是必须的,不多说了,当然有可能是寄存器保存,具体细节下面会聊到。保存返...转载 2019-05-03 01:20:05 · 166 阅读 · 0 评论 -
面试题:JVM 配置常用参数和常用 GC 调优策略
JVM 配置常用参数img堆参数img回收器参数img如上表所示,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行和并发 GC 的策略通过 UseParallelGC 和 UseConcMarkSweepGC 来指定,还有一些细节的配置参数用来配置策略的执行方式。例如:XX:Paral...转载 2019-04-21 22:00:49 · 521 阅读 · 0 评论 -
JDK1.8的新特性之Lambda表达式
1什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。如果你想把“一块代码”赋给一个Java变量,应该怎么做呢?比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量:在Java 8之前,这个是做不到的。但是Java 8问世之后,利用Lambda特性,就可以做到了。...原创 2019-04-21 16:16:06 · 611 阅读 · 0 评论 -
HashMap源码分析
简介HashMap最早出现在JDK1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,是非线程安全类,在多线程环境下可能会存在问题。1.8版本的HashMap数据结构:为什么有的是链表有的是红黑树?默认链表长度大于8时转为树结构Node是HhaspMap中的一个静态内部类 :TreeNode 是红黑树的数据...转载 2019-04-12 13:59:21 · 176 阅读 · 0 评论 -
Java线程的6种状态及切换
Java中线程的状态分为6种。初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready...原创 2019-04-11 17:39:37 · 420 阅读 · 0 评论 -
图的两种遍历方式
遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的全部节点,且每个节点仅访问一次。在二叉树基础中,介绍了对于树的遍历。树的遍历是指从根节点出发,按照一定的访问规则,依次访问树的每个节点信息。树的遍历过程,根据访问规则的不同主要分为四种遍历方式:(1)先序遍历(2)中序遍历(3)后序遍历(4)层次遍历类似的,图的遍历是指,从给定图中任意指定的顶点(称为初始点...原创 2019-04-06 21:14:18 · 54523 阅读 · 4 评论 -
Java开发工具和环境
Java作为今年来最热门的编程语言之一,越来越多的人选择Java,但对于一些初入门的小白来说,在选择和安装开发工具和环境的时候,会遇见很多的问题。今天就给大家来分享一些实用的Java开发工具和环境,希望对各位小白能提供一些帮助!JDKJDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广...原创 2019-04-06 16:06:43 · 692 阅读 · 0 评论 -
Java高级开发50个性能优化的细节
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。● 1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资...原创 2019-04-05 21:39:33 · 250 阅读 · 0 评论 -
JVM的堆、栈、方法区
堆:解决数据存储的问题数据怎么存放,存放在哪里栈:解决程序的运行问题程序如何执行,如果处理数据方法区:解决堆栈信息的产生,是先决条件辅助堆栈的快永久区Perm比如创建一个对象UserUser user=new User();User类的一些信息,类信息、静态信息都存在方法区中User实例化出来之后,存储到Java堆中,一块内存空间对象引用...原创 2019-04-05 21:33:34 · 356 阅读 · 0 评论 -
趣谈23种设计模式
创建型模式1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的套餐和肯德基的套餐都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“两个B套餐”就行了。麦当劳和肯德基就是B套餐的Abstract Factory, B套餐里含有汉堡, 鸡翅和饮料. 麦当劳或肯德基会根据B套餐的规格, 让汉堡Factory, 鸡翅F...转载 2019-03-19 00:35:10 · 234 阅读 · 0 评论 -
为什么加载驱动要用Class.forName(“com.mysql.jdbc.Driver”)
传统的使用jdbc来访问数据库的流程为:Class.forName(“com.mysql.jdbc.Driver”);String url = “jdbc:mysql://localhost:3306/test?user=root&password=123456″;Conne...转载 2019-03-07 11:50:13 · 1759 阅读 · 0 评论 -
HashMap桶中链表转红黑树为什么选择数字8?
在JDK8及以后的版本中,HashMap引入了红黑树结构,其底层的数据结构变成了数组+链表或数组+红黑树。添加元素时,若桶中链表个数超过8,链表会转换成红黑树。 翻了一下HashMap的源码,发现其源码中有这样一段注释:Because TreeNodes are about twice the size of regular nodes, we use them only when bins ...转载 2019-05-30 23:30:28 · 2563 阅读 · 2 评论