2 纯洁的码农

尚未进行身份认证

华南农业大学

等级
TA的排名 4w+

java 中String拼接后为什么输出到一半就结束了

static void concat(){ token[p_token]=ch; ++p_token; token[p_token]='\0'; }这是我用来拼接字符串的方法。可以看出这是看着c语言写的。java中并不需要最后加上\0而正是因为加上\0。字符数组转成字符串的时候,字符串最后会有\0的结束符。!!!这就导致 拼接字...

2019-11-20 11:05:25

读写锁中 为什么读锁不能升级为写锁

读锁升级为写锁。首先自己有读锁,之后拿到写锁。如果有两个读锁同时升级为写锁。那么只有一个能升级成功。但是这两个线程同时拥有读锁。其中一个线程还一直在申请写锁。这就会造成死锁。但是锁降级是可以的。因为写锁只有一个线程占有。锁降级:锁降级指的是写锁降级成为读锁。如果当前线程拥有写锁,然后将其释放,最后再获取读锁,这种分段完成的过程不能称之为锁降级。锁降级是指把持住(当前拥有的)写锁,再...

2019-11-06 08:31:09

为什么公平锁的性能低于非公平锁

我们必须先知道,在恢复一个被挂起的线程与该线程真正开始运行之间存在着严重的延迟。

2019-11-05 17:28:31

java中间变量缓存机制

public class Test{ public static void main(String args[]){ int j = 0; for(int i = 0 ;i < 100;i++){ j = j++; } System.out.println(j); }}输出为0...

2019-10-24 21:25:42

n个骰子的点数 java

题目:滑动窗口的最大值把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。解题思路:1.解法一可以使用递归来求解。详细代码见书。2.解法二的思路为:在一轮循环当中,第一个数组总的第n个数字表示骰子和为n出现的次数。在下一轮循环中,我们加上一个新的骰子,此时和为n的骰子出现的次数应该等于上一轮循环中点数和为n-1,n-2,n-3,n-4,n-5...

2019-10-09 20:51:11

java重写与重载

方法重写的原则:重写方法的方法名称、参数列表必须与原方法的相同,返回类型可以相同也可以是原类型的子类型(从Java SE5开始支持)。 重写方法不能比原方法访问性差(即访问权限不允许缩小)。 重写方法不能比原方法抛出更多的异常。 被重写的方法不能是final类型,因为final修饰的方法是无法重写的。 被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行...

2019-10-07 10:25:13

为什么异或后可以找出数组中只出现一次而其他数字出现两次

1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?将所有的数全部异或,得到的结果与1^2^3^...^1000的结果进行异或,得到的结果就是重复数。但是这个算法虽然很简单,但证明起来并不是一件容易的事情。这与异或运算的几个特性有关系。首先是异或运算满足交换律...

2019-09-30 15:51:56

java归并排序

public static void merge(int []a,int low,int mid,int high){ int[] temp=new int[high-low+1]; int t=0,k1=low,k2=mid+1; while(k1<=mid&&k2<=high){ if(a[...

2019-09-26 17:01:31

为什么final修饰符是初始化安全的?

看了java并发编程实战,有很多困惑。书中没有讲明白final域能确保初始化过程的安全的。首先我们来看下创建对象的时候。User user=new User();看过JVM都知道,这其中包含了几步步。1.检测类是否被加载,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载...

2019-09-25 15:23:04

java快速排序

static void quickSort(int [] s,int start,int end){ if(start>end){ return; } int mid=(start+end)/2; int low=start; int high=end; int stan...

2019-09-22 17:18:44

Java用位图的思路实现组合

假设一共有n个字符,则可能的组合结果共有2^n-1种。 以输入3个字符a、b、c为例: 3个字符,可以用3个位来表示,从右到左的每一位分别用来代表a、b、c,该位为1表示取该元素,该位为0表示不取该元素。例如如组合a表示为001,组合b表示为010,组合ac表示为101,组合abc表示为111,而000是没有意义的,所以总共的结果就是2^n-1种。因此,我们可以从值1开始循环到2^n-1,输出...

2019-09-22 15:31:48

深入理解静态内部类实现单例模式

public class SingletonDemo3 { private static class SingletonClassInstance{ private static final SingletonDemo3 instance=new SingletonDemo3(); } private SingletonDemo3...

2019-08-31 17:14:04

悲催!!!把null字符串看成null

铭记 太惨了在编译器真的很难看出来

2019-08-22 17:38:35

java8(三)默认方法 冲突的解决

我们知道java只允许单继承类,但可以多继承接口。默认方法的实现,为API更新换代带来方便的,也留下了不少麻烦。每个接口都可以实现默认接口,而且是同样的签名。这个类去实现他们这些接口。那该如何继承有三条规则1.类和父类的优先级最高,高于任何的默认方法如果你继承了一个接口和类,且有一个方法有相同的签名,那就要听从父类的。不管父类的方法是不是抽象的,如果父类的方法是抽象的那你就必须...

2019-08-16 11:08:25

对于面向过程和面向对象的理解

程序员吧数据和过程分别作为独立的部分来考虑,数据代表问题空间中的客体。程序代码则用于处理这些数据。这种思维方式直接站在计算机的角度去抽象问题和解决问题。是面向过程站在现实世界的角度去抽象和解决问题,把数据和行为看做是对象的一部分。是面向对象...

2019-08-12 15:41:21

java虚拟机(十)synchronized是如何实现可见性和有序性的,和volatile的区别

大家都知道 synchronized 是锁。那怎么会实现可见性和有序性。volatile也能实现对吧。java内存模型是这么规定的关于主内存与工作内存之间的交互协议,即一个变量如何从主内存拷贝到工作内存。如何从工作内存同步到主内存中的实现细节。java内存模型定义了8种操作来完成。这8种操作每一种都是原子操作。8种操作如下:lock(锁定):作用于主内存,它把一个变量标记为一条线程独占...

2019-08-12 11:22:14

java虚拟机(九)编译是如何优化代码的

首先我们要明白优化代码,并不是建立在java的源码之上的。而是建立在代码的中间表达是或者机器码上面。公共子表达式消除如果一个表达式E已经出现过了。而且下面出现的E的所有变量值都没有发生改变,那就可以优化。如 a=b*c+r+c*b这里b*c和c*b是一样的。所以可以变成 a=e+r+e数组边界检查消除我们知道java是一门动态安全的语言。访问数组的时候,会进行上下界限的检...

2019-08-09 20:19:36

java虚拟机(八)语法糖

语法糖可以看成是编译器实现的一些功能。他们帮我们程序员特高代码开发效率。如泛型:泛型擦除前public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("hello", "你好"); map.put("ho...

2019-08-09 10:05:19

spring使用了环绕通知后,全局异常捕获失效 解决办法

项目出现这个问题。本来全局异常捕获好好的。只要抛出自己写的自定义异常就会传给前端。但我加入了环绕通知后,发现全局异常失效了。来看看我的全局异常package com.yiban.suoai.exception;import com.yiban.suoai.exception.SAException;import org.aspectj.lang.annotation.Aspect...

2019-08-07 11:12:14

java并发(三)CopyOnWriteArrayList源码分析

先看前面一部分 private static final long serialVersionUID = 8673264195747942595L;//用于序列化 /** The lock protecting all mutators */ final transient ReentrantLock lock = new ReentrantLock();//锁 ...

2019-08-06 20:46:39

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。