
java
文章平均质量分 86
原之殇
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一个String对象到底多大?
一个String对象到底多大?参考:一个java对象到底占用多大内存JAVA对象的组成部分对象头 + 实例数据 + 对齐填充HotSpot的对齐方式为8字节对齐:(对象头 + 实例数据 + padding) % 8等于0且0 <= padding < 8每个组成部分的大小32位和64位系统上对象头的大小是不同的,开启指针压缩后,各部分大小也会有所不同。单位:byte64位指针压缩(-XX:+UseCompressedOops)对象头1612实原创 2021-12-14 16:36:58 · 1198 阅读 · 0 评论 -
建造者模式
模式动机无论现实世界还是软件世界,都存在一些复杂对象,它们拥有多个组成部分,比如汽车,它包括轮子,引擎等各种部件。对大多数用户而言,无需知道这些部件的装配细节,也几乎不会使用单个部件,而是使用一部汽车,这里可以使用建造者模式对其进行设计与描述。建造者模式可以将部件与其组装过程分开,一步一步创建一个复杂对象。模式结构建造者模式包含如下角色:Builder:抽象建造者ACarBuilder:具体建造者...原创 2018-06-01 21:42:03 · 186 阅读 · 0 评论 -
抽象工厂
简单工厂以及工厂方法在上篇博客中有提到引言有3家企业依次找到你,让你帮他们设计一个网站,分别用oracle,sql server,mysql作为数据库,这3家企业要求设计网站内容大差不差,如果是你?在刚开始设计网站的时候你会怎么做?用hibernate,更换数据库只需要在配置的时候更换方言就好了,如果没有hibernate呢?那就用jdbc,但是如何设计才能保证工作量小一点呢?工厂方法public...原创 2018-05-30 21:09:09 · 177 阅读 · 0 评论 -
浅谈工厂模式
引言:在我没学习设计模式之前,让我写一个计算器的小demo,我可能会这么写......public static double getResult(double a,double b,String operate) { double result = 0; switch (operate) { case "+": result = a + b; break; case ...原创 2018-05-30 15:24:00 · 518 阅读 · 0 评论 -
单例模式
单例模式结构图饿汉式单例类public class Singleton { //static final修饰的变量是唯一不可变的,线程安全 private static final Singleton INSTANCE_SINGLETON = new Singleton(); //构造器私有 private Singleton() {} public static Sing...原创 2018-05-25 20:27:21 · 125 阅读 · 0 评论 -
堆排序
堆的概念堆是具有下列性质的二叉树:每个节点的值都大于或等于其左右孩子结点的值,成为大顶堆,反之,则是小顶堆。如果按照层序遍历的方式给节点从1开始编号,则结点满足一下关系:K堆排序算法 堆排序就是利用堆(我用的是大顶堆)进行排序的方法。 思想:构造大顶堆后,整个序列的最大值就是堆顶的根结点。移走根结点,然后将剩余的序列重新构造成大顶堆,如此反复,最终将会得到一个有序序列。移走根节点其实就...原创 2018-05-08 19:43:49 · 191 阅读 · 0 评论 -
(转载)归并排序
原文地址:点击打开链接//归并排序 public static void merge(int[] a, int low, int mid, int high) { int[] temp = new int[high - low + 1]; int i = low;// 左指针[low , mid]是左边的 int j = mid + 1;/...转载 2018-05-15 01:11:46 · 141 阅读 · 0 评论 -
快速排序
基本思想通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。核心函数分区public static int partition(int[] a, int low, int high) { //用子表的第一个记录作为中枢值 int pivotKey = a[low];...原创 2018-05-15 01:00:43 · 114 阅读 · 0 评论 -
希尔排序
思想希尔排序是对简单插入排序算法的一个升级,它的思路就是将原有大量数据记录分割成如干个子序列,再分别对子序列进行插入排序,当整个序列基本有序时,再对全体记录做一次插入排序。基本有序:就是小的基本在前面,不大不小基本在中间,大的基本在后面。我们上面提到了将整序列进行分割,那么如何分割将是关键,按顺序分割显然就不合适了,比如我们现在有序列是{9,1,5,8,3,7,4,6,2},现在将它分成三组,{9...原创 2018-05-14 21:15:29 · 122 阅读 · 0 评论 -
直接插入排序
直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表。举例:代码public static void insertSort(int[] test) { int target = 0; int j = 0;//记录位置 //假设第一个数已经排好序,被放在了正确的位置上 for (int i = 1; i < test.length;...原创 2018-05-14 19:31:51 · 107 阅读 · 0 评论 -
简单选择排序
前言爱炒股票短线的人,总是喜欢不断的买进卖出,想通过价差来实现盈利。但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和印花税过高而获利很少。还有一种做股票的人,他们很少出手,只是在不断的观察和判断,等到时机一到,果断买进或卖出。他们因为冷静和沉着,以及交易的次数少,而最终收益颇丰。冒泡排序的思想就是不断地在交换,通过交换完成最终的排序,这和做股票短线频繁操作的人是类似的。我们可不可以像只...原创 2018-05-14 18:55:32 · 147 阅读 · 0 评论 -
冒泡排序
思想:两两比较相邻的关键字,如果反序则交换,直到没有反序的记录为止。在了解冒泡排序之前,我们可以实现一个最简单的一个排序。//排序算法中用的比较频繁 public static void swap(int[] test,int i,int j) { int temp = test[i]; test[i] = test[j]; test[j] = temp; }public sta...原创 2018-05-14 18:21:06 · 141 阅读 · 0 评论 -
excel的导入导出
文章参考:点击打开链接 点击打开链接public class ExcelUtils { //导出时,默认每页显示8条数据 public static final int SPLIT_COUNT = 8; //用Poi导入,获取单元格数据 public static String getCellValue(org.apache.poi.ss.usermodel.Cell cell) {...原创 2018-03-05 22:15:59 · 208 阅读 · 0 评论