ShineYoung

导航

 

2019年3月12日

摘要: 说起GC,我们要思考的主要有三件事 哪些内存需要回收 那些已经“死去”的对象,那么哪些对象“死”,哪些对象“活”呢,有个简单的办法 引用计数法,但是没法解决循环依赖问题 所以Java虚拟机采用的是可达性分析算法 这个算法通过一系列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,如果 阅读全文
posted @ 2019-03-12 17:54 ShineYoung 阅读(82) 评论(0) 推荐(0) 编辑
 
摘要: (图片来自https://www.cnblogs.com/whgk/p/6138522.html) 先从线程私有区开始介绍 虚拟机栈 Java虚拟机栈是由一个个栈帧组成的,当一个方法被调用时,代表这个方法的栈帧入栈,当这个方法结束时,栈帧出栈。可以理解栈帧为方法的运行空间,存放存储局部变量表、操作数 阅读全文
posted @ 2019-03-12 15:42 ShineYoung 阅读(169) 评论(0) 推荐(0) 编辑
 
摘要: 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上 阅读全文
posted @ 2019-03-12 15:31 ShineYoung 阅读(83) 评论(0) 推荐(0) 编辑
 

2019年3月11日

摘要: Java IO Java的输入流和输出流 “流”是指从源“流向”目的地的数据流,Java把各种数据源和目标之间数据的传输统一抽象为流,通过对流的读写操作来实现IO操作 首先通过一张图片来了解Java IO(图片来自菜鸟教程) 看了图片之后可以知道IO操作离不开Reader,Writer,InputS 阅读全文
posted @ 2019-03-11 22:11 ShineYoung 阅读(106) 评论(0) 推荐(0) 编辑
 

2019年3月10日

摘要: HDU-1284 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1284 这是一道背包类型的动态规划题目,题目意思是N块钱,可以有1,2,3元组成,问你有几种兑换方法,简单思考一下,假如说有n元钱,求f(n),f(n)= f(n-1)+f(n-2)+f 阅读全文
posted @ 2019-03-10 12:51 ShineYoung 阅读(119) 评论(0) 推荐(0) 编辑
 

2019年3月8日

摘要: 废话少说,先来一道题目 http://acm.hdu.edu.cn/showproblem.php?pid=2544 读题后抽象一下也就是说N是顶点M是边 然后题目要求我们求出顶点1到顶点N的最短路径 先用floyd算法解决(这个算法简单易懂,三层for循环逐个遍历,找出所有点对点之间的最短路径) 阅读全文
posted @ 2019-03-08 16:52 ShineYoung 阅读(299) 评论(0) 推荐(0) 编辑
 
摘要: 约瑟夫环问题我首先想到的就是数组模拟,其实也有想过这是有规律的,可以递归求解,但是忘了😂 1.先来说说数组模拟,思想很简单,就是m个人,报数为n的人出圈,即打个标记,遇到这个标记就跳过,直到最后一个人为止,上代码。 上面第一中方法如果m和n的数字小还好,如果很大的话要花费的时间就很长了,所以下面递 阅读全文
posted @ 2019-03-08 13:21 ShineYoung 阅读(192) 评论(0) 推荐(0) 编辑
 
摘要: 求解Java一维多项式的通用方法 比如ax^4+bx^3+cx^2+dx+e 可以化为(((ax+b)x+c)x+d)x+e 那么观察规律可以将系数放到一个数组里num[e,d,c,b,a] 通过如上代码递推求解 阅读全文
posted @ 2019-03-08 11:59 ShineYoung 阅读(523) 评论(0) 推荐(0) 编辑
 

2019年3月7日

摘要: 最近经常有操作数组的需求,排序,倒转等操作,所以深入了解一下Arrays类 equals(a,b)比较数组a和数组b是否相等 toString(a)输出数组a binarySearch(a,i)二分查找数组a中值等于i的索引位置 sort(a)把数组a从小到大排序 sort(a,cmp)cmp是排序 阅读全文
posted @ 2019-03-07 21:42 ShineYoung 阅读(100) 评论(0) 推荐(0) 编辑
 
摘要: 自旋锁 自旋锁顾名思义,它会等待一定时间(自旋),在这期中会什么都不做就是等资源被释放,好处在于没有了内核态用户态切换的效率损失,但是如果它一直不能访问到资源的话就会一直占用cpu资源,所以它会循环一段时间后进入阻塞状态。 重量级锁 synchronized就是重量级锁的实现机制,抢不到资源的进程会 阅读全文
posted @ 2019-03-07 20:28 ShineYoung 阅读(1541) 评论(0) 推荐(0) 编辑