- 博客(18)
- 收藏
- 关注
原创 3)JVM执行子系统
概述 : 了解虚拟机如何执行程序, 虚拟机怎样运行一个Class文件的概念模型, 可以更好的理解怎样写出优秀的代码 一 : 类文件结构 无关性基石: 《Java虚拟机规范》对class文件的定制的规范, 成为了JVM语言无关性的基石, 即只要满足规范, 不限制语言种类, 编译器能够将语言转换为满足虚拟机规范的的字节码文件即可, 实现语言无关性的基础是虚拟机和字节码的存...
2018-08-15 17:08:07 477
原创 2)对象置为垃圾&垃圾收集算法&具体收集器
1.当前对象是否为垃圾(垃圾确认机制)运行时区域中的程序计数器. 虚拟机栈, 本地方法栈都是随着线程而灭, 不需要过多考虑回收问题, 而且基本上内存大小的分配也都是编译器就已知的(暂不考虑JIT的优化)堆和方法区是线程共享的区域, 这部分区域在内存的分配和回收都是动态的, 垃圾回收器回收的就是这部分的内存 那么在堆中如何确认一个对象是否已经是垃圾即需要被回收了呢?有两种思路即...
2018-08-06 15:23:09 116
原创 1.1)对象创建
对象的创建过程1.当虚拟机遇到new指令时, 首先将去检查这个指令参数能否定位到常量池对应的类的符号引用, 并检查这个符号代表的类是否被加载验证解析过, 如果没有先执行上述过程2.类加载检查通过后, 接下来虚拟机将为新生对象分配内存, 对象所需的内存大小在类加载完成后便可完全确定3. 对象在堆中分配内存的方式分为两种, 指针碰撞和空闲列表, 取决于你采用的垃圾收集器的算法实现是否有内...
2018-08-06 10:20:52 135
1)JVM区域划分与溢出异常
java与C++之间有一堵内存动态分配和垃圾收集技术所围成的高墙,墙外的人想进去,墙里的人却想出来。 --摘自《深入理解Java虚拟机》 C++认为内存很重要,所以一定要给人管理,java同样认为内存很重要,所以一定不能给人管理。 --忘了哪看来的 计算机的世界中,所有问题都可以通过引入一个中间角色来解决(jvm就是典型)。 a.为什...
2018-08-06 10:18:37 135
Java中注解&泛型
1.注解(Annotation): 注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,如果没加则没有标记,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无标记,有什么标记,就去干相应的事.标记可以加在包,类,字段,方法,方法的参数以及局部变量上,看java.lang包,可看到JDK中提供的最基本的annotation. 三种基本注解:...
2016-07-13 19:25:24 479
无聊的整数
1.完数如果一个数恰好等于其因子之和,这个数就称为完数.6 = 1 + 2 + 328 = 1 + 2 + 4 + 7 + 14求10000以内的所有完数的过程:(1)用n去除以1-n之间的所有整数,将能整除的被除数累加.(2)最后判断个因子之和是否等于数n,若相等,则数n为完数,输出该数和各个因子. public static void main(String[] ...
2016-07-04 16:17:42 148
常见查找
简单查找: 顺序查找: 从线性表的一端开始,依次将每个记录的关键字与给定值进行比较,若某个记录的关键字等于给定值,表示查找成功,返回记录序号;若将线性表中所有记录都比较完,扔未找到关键字与给定值相等的记录,则表示查找失败,返回 一个失败值.public class QuerySearch { public static int[] Data = { 65,...
2016-07-02 21:49:15 122
常见排序
排序概念: 1.内部排序: 工具类中定义交换数组元素、生成数据源等方法(用于下面的排序):import java.util.Random;public class SortUtil { // 通过数组下标交换元素位置 public static void swap(int[] data, int i, int j) { int temp ...
2016-06-16 22:38:19 101
常见数据结构
一、线性结构 1.最简单的结构:线性表 线性表具有以下特征: - 有且只有一个"首元素"; - 有且只有一个"末元素"; - 除末元素之外,其余元素均有唯一的后继元素; - 除首元素之外,其余元素均有唯一的前去元素; 对于线性表主要可进行以下操作: - 添加节点 - 插入节点 - 删除节点 - 查找节点 - 遍历节点 ...
2016-06-15 22:36:04 137
试探算法
回溯算法(又叫试探算法)为了求得问题的解,先选择某一种可能情况进行试探,在试探过程中,一旦发现原来的选择的假设情况是错误的,就退回一步重新选择,继续向前试探,如此反复进行,直至得到解或者证明无解. 实例:生成彩票号码组合. 假设有一种彩票,每注由7个1-29的数字组成,且这7个数字不能相同,编写程序生成所有的号码组合. Java代码描述:public clas...
2016-06-02 20:21:47 135
贪婪算法
贪婪算法基本思路:从问题的某一个初始解出发逐步逼近给定的目标,以尽可能块地求得更好的解.当达到算法中的某一步不能再继续前进时,就停止算法,给出近似解. -不能保证最后的解释最优的; -不能用来求最大或者最小解的问题; -只能求满足某些约束条件的可行解得范围.实例:换零钱 Java代码描述public class Test { static in...
2016-06-01 23:19:59 110
Java中String,StringBuffer,StringBuilder
class StringDemo{ public static void main(String[] args){ /* String s=new String(); String s=""; //以上两句话均创建空串 */ String s1="abc";//s1是一个类类型(引用)变量,"abc"是一个对象 ...
2016-06-01 00:00:53 125
分治算法
使用分治算法设计程序时,一般可以按以下步骤进行: (1)分解:将要求的问题划分成若干规模较小的同类问题; (2)求解:当子问题划分的足够小时,用较简单的方法解决; (3)合并:按求解问题的要求,将子问题的解逐层合并,即可构成最终的解.实例:乒乓球比赛赛程安排 根据分治算法的思想,我们应该将问题进行拆分成规模较小的同类问题. ...
2016-05-31 22:38:59 74
递归算法
算法思路:递归算法,就是一种直接或者间接地调用自身的算法.递归算法的具体实现过程一般通过函数或者子过程来完成,在函数或子过程的内部,编写代码直接或者间接地调用自己,即可完成递归操作.这里列举出求阶乘和数制转换的递归操作实例. 实例1:求阶乘 public static int jiecheng(int i) { if(i!=1){ return...
2016-05-30 22:26:29 79
枚举算法
枚举(穷举)法 枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1):可预先确定候选答案的数量;(2):候选答案的范围在求解之前必须有一个确定的集合. 实例1:填数游戏. Java代码描述:public static void main(String[] args) { int multi = 1; int re...
2016-05-29 10:11:27 184
递推算法
递推算法:递推算法使用"步步为营"的方法,不断利用已有的信息推导出新的东西.-顺推法:是指从已经条件出发,桌布推算出要解决问题的方法.例如:斐波那契数列就可以通过顺推法不断递推出新的数据.-逆推法:是从已知的结果出发,用迭代表达式逐步推算出问题开始的条件,既顺推法的逆过程. 顺推实例:题目:兔子的繁殖过程 Java代码描...
2016-05-28 23:43:32 124
编程的灵魂
编程的灵魂:数据结构+算法 程序 = 数据结构+算法+程序设计语言 .由上面的公式可以看出,程序设计中数据结构和算法是最重要的,是编程的灵魂. .数据结构式算法实现的基础,算法总是要依赖于某种数据结构来实现的.往往是发展一种算法的时候,构建了适合于这种算法的的数据结构.一种数据结构如果脱离了算法往往就没有存在的价值了. 算法的作用:解决任何一个实际问题,都不可...
2016-05-28 23:12:31 173
原创 谨记录我在IT技术学习路上的点滴
我像麝鹿一样在林荫中奔走,为着自己的香气而发狂。 夜晚是五月正中的夜晚,清风是南国的清风。 我迷了路,我游荡着,我寻求那得不到的东西,我得到我所没有寻求的东西。 我自己的愿望的形象从我心中走出,跳起舞来。 这闪光的形象飞掠过去。 我想把它紧紧捉住,它躲开了又引着我飞走下去。 我寻求那得不到的东西,我得到我所...
2016-05-22 17:28:18 117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人