本文章相关内容转自:http://www.jcodecraeer.com/a/chengxusheji/shejimoshi/2015/0527/2941.html
简单的看一下关于常用的排序结构,如图
本章代码重点实现: 插入排序 、选择排序、交换排序 这三类。
冒泡排序
原理:一次性用两个元素进行比较,如果小/大的就交换。走访数列的工作是重复地进行直到没有再需要交换位置。 代码:
/** * 冒泡排序 * * @author cjl * */
public class BubblingSort {
public int [] BubblingSort (int [] res) {
for (int i = 0 ; i < res.length; i++) {
for (int j = 0 ; j < res.length - i - 1 ; j++) {
if (res[j] > res[j + 1 ]) {
int temp = res[j];
res[j] = res[j + 1 ];
res[j + 1 ] = temp;
}
}
}
return res;
}
}
快速排序
快速排序 流程方法:
设置一个基数,通常默认第一个排序。
【顺序逻辑】从后往前比较,基数小于等于后面的值,把该数放在基数对应的位置上(前一个位置坑里)从前往后比较,基数大于前面某个值,把该数放在基数对应的位置上(前一个位置坑里)。
【倒序逻辑】 从后往前比较 ,基数大于后面的值,把该数放到基数对应的位置上(前一个位置坑里),从前往后比较,基数小于等于某个值,把该数放在基数对应的位置上(前一个位置里面)
循环 2.3 步骤
通过图我详细解释一下:
绿色位置 是设置的当前基础值【坑位1】。黄色表示的是坑位。顶上粉红色和蓝色表示 移动游标位置
从后往前比较 比较小于基础值 。 5 这个数先从后往前 比较 ,0小于5 因此0 下面挖一个坑2此时将 坑位2 对应 0这个数放到坑位1 对应的数上。
从前往后比较 比较大于等于基础值。 9大于5 挖坑,坑位3,把坑位3对应数字9 填入之前坑位2的位置。
当前最顶部两个游标贴在一起的时候,此时7 坑位 没有数字,把基数放到当前7坑位对应数值下 如图 蓝色5表示。
此时数组就分成3 部分 黄色 + 基数+绿色,再次递归黄色部分 或者绿色部分。每次递归的时候 主要找到 黄色和红色基础值的位置
/** * 快速排序 * 【顺序】 基数大于前者 ,小于等于后者 * 【倒序】 基数小于等于前者 ,大于后者 * 设置一个基础key值 * 从后往前找到比他小/大于等于他的数,找到这个数字,填写到前一个坑里 * 在从前往后找到比它大或者等于/小于等于他的数字,找到后放到填写到前面那个坑里 * * * * * @author cjl * */
public class QuickSort {
/** * 顺序逻辑 * * @param array * 数组 * @param start * 数组索引0 * @param end * 数组索引最后一位array.length-1 * @return */
public void QuickSort (int [] array, int start, int end) {
if (start < end) {
int index = getIndex(array, start, end);
QuickSort(array, 0 , index - 1 );
QuickSort(array, index + 1 , end);
}
}
/** * * @param array * @param start * @param end * @return */
private int getIndex (int [] array, int start, int end) {
int i = start;
int j = end;
int x = array[i];
while (i < j) {
while (i < j && array[j] >= x) {
j--;
}
if (i < j) {
array[i] = array[j];
i++;
}
while (i < j && array[i] < x) {
i++;
}
if (i < j) {
array[j] = array[i];
j--;
}
}
array[i] = x;
return i;
}
/** * 倒序逻辑 * * @param array * 数组 * @param start * 数组索引0 * @param end * 数组索引最后一位array.length-1 * @return */
public void QuickSortDesc (int [] array, int start, int end) {
if (start < end) {
int index = getIndexDesc(array, start, end);
QuickSortDesc(array, 0 , index - 1 );
QuickSortDesc(array, index + 1 , end);
}
}
private int getIndexDesc (int [] ar, int m, int n) {
int x = ar[m];
while (m < n) {
while (m < n && ar[n]if (m < n) {
ar[m]=ar[n];
m++;
}
while (m < n && ar[m]>=x) {
m++;
}
if (m < n) {
ar[n]=ar[m];
n--;
}
}
ar[m]=x;
return m;
}
}
插入排序
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
public void insertSort(int [] array ) {
for (int i = 1 ; i < array .length; i++) {
int temp = array [i];
int j = i - 1 ;
for (; j >= 0 && array [j] > temp; j--) {
array [j + 1 ] = array [j];
}
array [j + 1 ] = temp;
}
}
希尔排序
希尔排序根据 分组插入排序,该方法又称缩小增量排序。 核心流程:
先对数组进行分组 数组长度进行分组【length/2】
每次减小分组长的增量
移动index进行 插入排序
/** * 希尔排序根据 分组插入排序,该方法又称缩小增量排序 * * @author cjl * */
public class ShellSort {
public void ShellSort (int ar[]) {
int len = ar.length;
for (int space = len / 2 ; space > 0 ; space = space / 2 ) {
for (int currentIndex = 0 ; currentIndex < space; currentIndex++) {
for (int i = currentIndex + space; i < ar.length; i = i + space) {
int temp = ar[i];
int x = i - 1 ;
for (; x > 0 && ar[x] > temp; x--) {
ar[x + 1 ] = ar[x];
}
ar[x + 1 ] = temp;
}
}
}
}
}
堆排序
先简单给大家简单分享一下 堆的概念: 堆是一棵完全二叉树,所谓完全二叉树即叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。 堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
堆和二叉树的区别: 堆是一个完全二叉树,并且每个结点的值都大于或等于其左右孩子结点的值(这里的讨论以大根堆为例),所以,堆是结点之间满足一定次序关系的完全二叉树。 树的度 :结点拥有的子树数 。二叉树 小于等于2。
大顶堆、小顶堆
public class HeapSort {
public TreeMap HeapSort(int [] array ) {
TreeMap tm=new TreeMap<>();
for (int i = (array .length-1 )/2 ; i>=0 ; i--) {
HeapMap(array , array .length, i);;
}
int n=array .length;
while (n>0 ) {
tm.put(n, array [0 ]);
array [0 ]=array [n-1 ];
n--;
HeapMap(array , n, 0 );
}
return tm;
}
private void HeapMap(int [] array , int len, int i) {
int iLeft = i * 2 + 1 ;
int iRight = i * 2 + 2 ;
if (iLeft>len && iRight>len) {
return ;
}
int tL=Integer.MAX_VALUE;
int tR=Integer.MAX_VALUE;
if (iLeftarray[iLeft];
}
if (iRightarray[iRight];
}
if (tL>array [i]&&tR>array [i]) {
return ;
}
if (tLarray, i, iLeft);
HeapMap(array , len, iLeft);
}else {
swap(array , i, iRight);
HeapMap(array , len, iRight);
}
}
private void swap(int [] array , int i, int iLeft) {
int t=array [i];
array [i]=array [iLeft];
array [iLeft]=t;
}
}
public void HeapSort() {
int [] array ={8 ,7 ,6 ,6 ,10 ,-1 ,0 ,2 ,20 ,13 ,-2 ,-3 ,-5 };
HeapSort sh=new HeapSort();
TreeMap tm=new TreeMap<>();
tm=sh.HeapSort(array );
Iterator it=tm.descendingKeySet().iterator();
while (it.hasNext()) {
System.out.println(tm.get(it.next()));
}
}
简单选择排序
1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3)重复第二步,直到所有元素均排序完毕
原理
/** * 选择排序 * * @author cjl * */
public class SelectSort {
public void SelectSort (int [] array) {
for (int i = 0 ; i < array.length - 1 ; i++) {
int k = i;
for (int j = k+1 ; j < array.length; j++) {
if (array[k] > array[j]) {
k = j;
}
}
if (i!=k) {
int temp=array[i];
array[i]=array[k];
array[k]=temp;
}
}
}
}
归并排序
归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
算法步骤:
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
设定两个指针,最初位置分别为两个已经排序序列的起始位置
比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针达到序列尾
将另一序列剩下的所有元素直接复制到合并序列尾
基数排序
基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。
说基数排序之前,我们简单介绍桶排序:
算法思想:是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使 用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。 简单来说,就是把数据分组,放在一个个的桶中,然后对每个桶里面的在进行排序。
排序效率的比较
在网上搜了搜找到了这么一张图,看似蛮有道理的,如下:
从排序效率上来说: 纯数字的话 :快速排序 、系统提供的Arrays.sort 相对较快Arrays.sort 实际上也是快速排序算法 带对象排序的:快速排序 比较快 稳定性来说的话: 归并排序,基数排序 比较好。
时间复杂度的问题
什么是时间复杂度? 时间复杂度:执行的语句次数,称为语句频度或者时间频度。
2.简单算法的时间复杂度举例
列举一些简单例子的时间复杂度。
O(1)的算法是一些运算次数为常数的算法。例如:
x=a
a =b
b=x
上面语句共三条操作,平均每条操作的频度为1,即使他有成千上万条操作,也只是个较大常数,这一类的时间复杂度为O(1)。
O(n)的算法是一些线性算法。例如:
int res =0 ;
for (i=0 ;i
上面代码中第一行频度1,第二行频度为n,第三行频度为n,所以f(n)=n+n+1=2n+1。所以时间复杂度O(n)。这一类算法中操作次数和n正比线性增长。
O(logn) 一个算法如果能在每个步骤去掉一半数据元素,如二分检索,通常它就取 O(logn)时间 例子:
int s =1 ;
while (s <=n)
s =s *2 ;
上面代码设第三行的频度是f(n), 则:2*f(n)<=n;f(n)<=log₂n,取最大值f(n)= log₂n,所以T(n)=O(log₂n ) 。
O(n²)(n的k次方的情况)最常见的就是平时的对数组进行排序的各种简单算法都是O(n²),例如直接插入排序的算法。
而像矩阵相乘算法运算则是O(n³)。
例子:
sum=0;
for(i=0;i
第一行频度1,第二行n,第三行n²,第四行n²,T(n)=2n²+n+1 =O(n²)
常见的算法时间复杂度由小到大依次为 Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)
以上是本人参考其他大神代码和博客学习的成果。如果又不足之处各位大神指教。
你可能感兴趣的:(JavaBase)
Java中的jar命令
Crazy_For_Net
Java开发 Java jar java 命令行
1、jar包的初认识:点击打开链接2、jar命令:即归档命令(javaArchiveFile)jar文件类似zip文件的压缩格式。是java的一种文档格式。但比zip文件多一个META-INF/MANIFEST.MF文件。3、jar命令示例:(1)文件目录为:E:\hunnu\javabase\ch2\common编译:javac-d.SystemIn.java执行:javacom.my.util
Bazel5.0.0源码安装报错:no matching function for call to ‘StrFormat(const char [28], const char*&)’
1lI
bazel c++
背景介绍在红帽源码安装Bazel时,执行指令:envEXTRA_BAZEL_ARGS="--host_javabase=@local_jdk--tool_java_runtime_version=local_jdk"bash./compile.sh执行指令报错(github的issue地址):ERROR:/var/tmp/bazel_ypZaJyXq/out/external/com_github
JavaBase持续更新
只年
java java-ee
仅作笔记,尚不完善,持续更新中…一、Java概述1.1Java语言发展史语言:人与人交流沟通的表达方式计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言Java语言是美国Sun公司(StanfordUniversityNetwork)在1995年推出的计算机语言Java之父:詹姆斯·高斯林(JamesGosling)2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可
Java Base64 和 File 之间互转工具类
技术宅program
java java python 开发语言
JavaBase64和File之间互转工具类importjava.io.*;importjava.nio.file.Files;importjava.nio.file.Paths;importjava.nio.file.StandardOpenOption;importjava.util.Base64;publicclassBase64Util{//文件转换成base64publicstaticS
腾讯 CSIG 社招 2023 一年工作经验 Java转GO(一、二)面
鬼客
面经 开发语言 java go
学历:本科工作经验:一年+(不算实习)当前语言:Javabase:武汉部门\岗位:腾讯云一面1.5h员工成长系统(公司项目)做了那些优化?(线程池优化,批处理优化、设计模式优化、性能测试、压力测试、GC优化)线程池怎么调优的?线程池如何分配线程?如果有50000数据需要批处理,你是怎么分配线程的?导出10万数据,线程池中的线程是一个线程拉取一条数据?还是怎么处理?回答:类似分页查询,每页获取2万左
Java加解密算法
Python9724
APP逆向 java 开发语言
Base64Java实现Base64加密&解密方法_javabase64加密-CSDN博客MD5蓝易云:java实现md5加解密_java后端md5解密_tiansyun的博客-CSDN博客HMACShA256JavaHMACShA256_javahmacsha256算法-CSDN博客
Fastjson反序列化漏洞原理分析及复现
Iwanturoot
代码审计 VulnReviewing 漏洞原理 java 开发语言 后端 json
Fastjson反序列化漏洞原理分析及复现Fastjson序列化与反序列化常规反序列化Fastjson序列化与反序列化Fastjson发序列化漏洞原理一次失败的复现Fastjson序列化与反序列化常规反序列化Fastjson的序列化与反序列化与常规的java反序列化不同,我们先来看一下正常的java反序列化,使用下面一段代码:packagecom.armandhe.javabase;importj
JavaBase入门
明思齐
JavaBase java
知识点:1、dos执行回顾2、JDK安装3、环境变量配置4、测试环境变量配置是否成功5、写第一个程序6、运行第一个程序注意:JAVA的运行机制编程语言:编写程序,和电脑沟通机器语言:JAVA、C、C++、.net、php自然语言:人与人进行交流汉语、英语、德语。。。。语法、主语、谓语解释执行:逐行解释,逐行执行编译执行:直接编译整个文件JAVA运行机制:支持跨平台第一步:编译源文件,生成一个cla
匿名内部类的使用
俊才F
直接代码packagecom.fang.java.javabase.innerclass;importjava.util.jar.Attributes.Name;importlombok.Data;importlombok.extern.slf4j.Slf4j;@Slf4j@DatapublicclassAnonymousClasses{Animaloutan;interfaceHelloWorl
Javabase到easyui的知识总结
追梦梓辰
Java 前端框架 html css java ajax
从JavaBase到easyui目录:Javabase:基本数据类型逻辑运算符OOP:类与对象封装、构造、重载oop知识点汇总SQLServerlet:数据库连接数据库单词数据库六大约束API:基本数据类型的封装类Java中int和Integer区别StringBuilderDate、DateFormat、Calendar类API-集合框架dao模式Swing:Swing概述Swing主要容器Sw
JavaBase64编码的字符串转换为图片工具类
Marblog
Java java 开发语言
importjava.io.FileOutputStream;importjava.io.OutputStream;importjava.util.Base64;publicclassBase64Utils{/***将Base64编码的字符串转换为图片并保存到指定路径**@parambase64ImageBase64编码的图片字符串*@paramimagePath图片保存路径*@paramimag
springboot中增加本地jar包到maven仓库
学习我最菜
在ide的Terminal窗口中执行mvn命令:mvninstall:install-file-DgroupId=com.base64-DartifactId=javabase64-Dversion=1.3.1-Dfile=C:\tool\ideplugins\javabase64-1.3.1.jar-Dpackaging=jar命令内容解释:install-file(加载文件)-DgroupId
java RSA加密解密
kf
java
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行。RSA加密对明文的长度是有限制的,如果加密数据过大会抛出如下异常:Exceptioninthread"main"javax.crypto.IllegalBlockSizeException:Data
JavaWeb入门实战项目——书城项目
花花与果子
java javaweb
书城项目(JavaWeb)一、用户的登录和注册二、优化三、实现图书功能,同登录注册功能实现四、分页五、首页价格搜索(价格索引)六、表单重复提交与验证码(Session)七、完善购物车的功能八、订单模块九、用Filter实现权限检测总结一、用户的登录和注册用户注册模型分析用户登录模型分析创建存储的项目数据库book和对应的用户表t_user创建于数据库对应的user类即javabase类创建数据库连
java BASE64Encoder详细介绍及简单实例
loliDapao
java
javaBASE64Encoder详解Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在发送电子邮件时,服务器认证的用户名和密码需要用Base64编码,附件也需要用Base64编码。Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8=4*6=24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。原文
Java Base64 编码和URL编码详解
swadian2008
网络协议 数据编码 Base64编码 URL编码 Java
目录1、常见的编码方式以及应用场景分析2、数据编码和数据加密的区别3、JavaBase64编码详解(1)Base64编码的原理(2)JavaBase64的使用4、JavaURL编码详解1、常见的编码方式以及应用场景分析常见的编码方式包括ASCII编码、Unicode编码、UTF-8编码、Base64编码和URL编码等,下面分别介绍它们的应用场景:ASCII编码:ASCII码是一种基于7位二进制编码
玄子JAVA基础笔记
玄子Share
JAVA java jvm 开发语言
编写第一个JAVA代码packageCH01_JAVABase;//hangeTheWorld!publicclassXZ01_ChangeTheWorld{publicstaticvoidmain(String[]args){System.out.println("ChangeTheWorld!");//ChangeTheWorld!}}语句说明快捷语句publicstaticvoidmain(
Java Base64解码并生成图片文件
55cfa828b3a7
JavaBase64解码并生成图片文件importsun.misc.BASE64Decoder;importjava.io.*;/***Base64解码并生成图片文件**@paramimgStr图片base64*@paramimgFile输出图片路径*/publicstaticvoidgenerateImage(StringimgStr,StringimgFile)throwsException{
springboot引入jar包
honaf
当我们用的jar没有远程maven依赖时,我们可以考虑打成本地maven依赖1.首先在根目录添加lib包,把jar放这里,右键jar包Addaslibrary2.执行以下命令以javabase64-1.3.1.jar包为例,jar包放在执行mvn的同目录(需要maven环境)mvninstall:install-file-Dfile=javabase64-1.3.1.jar-DgroupId=it
javaBase64位导出excle表格
小张在这
JAVA java 开发语言 后端
今天在写导出表格功能的时候常用的流,被公司的框架给限制住了,然后找到base64后台返回字符,然后前台解析进行导出。publicStringexportSchedulingRate(CollectQuerycollectQuery){//创建一个数值格式化对象NumberFormatnumberFormat=NumberFormat.getInstance();//设置精确到小数点后2位numbe
加解密过程遇到的问题及解决方法
George_Antonio
私钥公钥格式常见的加解密导入jar包:javabase64-1.3.1.jar生成base64编码后的公钥和私钥公钥加密私钥解密,或者私钥加密公钥解密这里生成的公钥和私钥是经过base64编码的,PEM格式的,进行了pkcs8编码的字符串。加密的过程要创建私钥或者公钥的实例。调用XXX公司接口加密在制作加密锁的过程中,私钥和公钥文件是客户端调用XXX公司接口产生的。私钥不可以读出,公钥可以读出。但
java实现后台处理base64图片还原为文件
目录后台处理base64图片还原为文件javaBase64解析关于Base64的解析方式如下使用如下代码解析后台处理base64图片还原为文件/***将base64图片解析成文件存放本地*@paramimgStr*@return本地临时文件的地址*/privatestaticStringgenerateImage(StringimgStr){if(Strings.isNullOrEmpty(img
资料收集
weylau
技术资料下载网站http://www.xwood.nethttp://m.56wangpan.comhttps://www.bookstack.cnhttp://www.java1234.com/a/javabook/javabase/2017/0317/7747.htmlJetBrains软件注册码生成网站http://idea.lanyus.com/http://blog.lanyus.com
Java II:6.1、时间线的使用
博风
bakcode Java相关 # JavaBase java
6.1、时间线的使用packagexyz.jangle.javabase.n6.b1;importjava.time.Duration;importjava.time.Instant;importjava.util.Collections;importjava.util.List;importjava.util.Random;//importjava.util.concurrent.TimeUni
Java II:6.2、本地日期的使用
博风
bakcode Java相关 # JavaBase java
6.2、本地日期的使用。packagexyz.jangle.javabase.n6.b1;importjava.time.DayOfWeek;importjava.time.LocalDate;importjava.time.Month;importjava.time.Period;importjava.util.stream.Collectors;importjava.util.stream.S
Java II:2.2、读写二进制数据(DataInputStream/DataOutputStream)
博风
bakcode Java相关 # JavaBase java nio
2.2、读写二进制数据(DataInputStream/DataOutputStream)packagexyz.jangle.javabase.n2.b2;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjava.nio.file.Files;importjav
Java II:2.1.7、以文本格式存储对象
博风
bakcode # JavaBase Java相关 java
以文本格式存储对象主程序:packagexyz.jangle.javabase.n2.b1;importjava.io.IOException;importjava.io.PrintWriter;importjava.nio.file.Files;importjava.nio.file.Paths;importjava.text.ParseException;importjava.text.Sim
将Eclipes中的项目导入Idea中作为Mudle出现
好想学习呀
Idea java高级程序设计 java报错汇总 idea
Java学习到后面的时候,突然就换了软件,从Eclipse换成Idea了,之前的一些练习项目也需要转移,下面讲一讲具体的操作方法。1.找到Eclipse中存放项目的文件目录(一般在workspace下)2.再将需要导入的项目赋值到Idea中存放文件的目录(此处我复制Libary文件到JavaBase目录下)3.此时Idea的目录中已经出现导入的文件(此时的文件是不可运行的,还需要在Idea中导入)
java矩形类2
热带雨林6123
java java
packagecom.javabase.sss;//矩形类publicclassRects{privatelongLength1;//长privatelongwidth1;//宽publiclonggetLength1(){returnLength1;}//设置长度publicvoidsetLength1(longlength1){if(length1<=0){Length1=1;return;}
java中判断是否是数字
热带雨林6123
java java
packagecom.javabase.sss;importjava.util.Scanner;publicclassZhuang{//判断是否是数字publicstaticbooleanisChar(charc){if(c>='0'&&c<='9'){returntrue;}else{returnfalse;}}publicstaticvoidmain(String[]args){boolean
Enum 枚举
120153216
enum 枚举
原文地址:http://www.cnblogs.com/Kavlez/p/4268601.html Enumeration
于Java 1.5增加的enum type...enum type是由一组固定的常量组成的类型,比如四个季节、扑克花色。在出现enum type之前,通常用一组int常量表示枚举类型。比如这样:
public static final int APPLE_FUJI = 0
Java8简明教程
bijian1013
java jdk1.8
Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。
一.允许在接口中有默认方法实现
Java 8 允许我们使用default关键字,为接口声明添
Oracle表维护 快速备份删除数据
cuisuqiang
oracle 索引 快速 备份 删除
我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备
java多态内存分析
麦田的设计者
java 内存分析 多态原理 接口和抽象类
“ 时针如果可以回头,熟悉那张脸,重温嬉戏这乐园,墙壁的松脱涂鸦已经褪色才明白存在的价值归于记忆。街角小店尚存在吗?这大时代会不会牵挂,过去现在花开怎么会等待。
但有种意外不管痛不痛都有伤害,光阴远远离开,那笑声徘徊与脑海。但这一秒可笑不再可爱,当天心
Xshell实现Windows上传文件到Linux主机
被触发
windows
经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下;之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛;
我是怎么操作的:
1、打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面;(经常第一步都不顺利,无法挂载Windo
类的加载ClassLoader
肆无忌惮_
ClassLoader
类加载器ClassLoader是用来将java的类加载到虚拟机中,类加载器负责读取class字节文件到内存中,并将它转为Class的对象(类对象),通过此实例的 newInstance()方法就可以创建出该类的一个对象。
其中重要的方法为findClass(String name)。
如何写一个自己的类加载器呢?
首先写一个便于测试的类Student
html5写的玫瑰花
知了ing
html5
<html>
<head>
<title>I Love You!</title>
<meta charset="utf-8" />
</head>
<body>
<canvas id="c"></canvas>
google的ConcurrentLinkedHashmap源代码解析
矮蛋蛋
LRU
原文地址:
http://janeky.iteye.com/blog/1534352
简述
ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对
ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见
http://code.google.com/p/concurrentlinke
webservice获取访问服务的ip地址
alleni123
webservice
1. 首先注入javax.xml.ws.WebServiceContext,
@Resource
private WebServiceContext context;
2. 在方法中获取交换请求的对象。
javax.xml.ws.handler.MessageContext mc=context.getMessageContext();
com.sun.net.http
菜鸟的java基础提升之道——————>是否值得拥有
百合不是茶
1,c++,java是面向对象编程的语言,将万事万物都看成是对象;java做一件事情关注的是人物,java是c++继承过来的,java没有直接更改地址的权限但是可以通过引用来传值操作地址,java也没有c++中繁琐的操作,java以其优越的可移植型,平台的安全型,高效性赢得了广泛的认同,全世界越来越多的人去学习java,我也是其中的一员
java组成:
通过修改Linux服务自动启动指定应用程序
bijian1013
linux
Linux中修改系统服务的命令是chkconfig (check config),命令的详细解释如下: chkconfig
功能说明:检查,设置系统的各种服务。
语 法:chkconfig [ -- add][ -- del][ -- list][系统服务] 或 chkconfig [ -- level <</SPAN>
spring拦截器的一个简单实例
bijian1013
java spring 拦截器 Interceptor
Purview接口
package aop;
public interface Purview {
void checkLogin();
}
Purview接口的实现类PurviesImpl.java
package aop;
public class PurviewImpl implements Purview {
public void check
[Velocity二]自定义Velocity指令
bit1129
velocity
什么是Velocity指令
在Velocity中,#set,#if, #foreach, #elseif, #parse等,以#开头的称之为指令,Velocity内置的这些指令可以用来做赋值,条件判断,循环控制等脚本语言必备的逻辑控制等语句,Velocity的指令是可扩展的,即用户可以根据实际的需要自定义Velocity指令
自定义指令(Directive)的一般步骤
&nbs
【Hive十】Programming Hive学习笔记
bit1129
programming
第二章 Getting Started
1.Hive最大的局限性是什么?一是不支持行级别的增删改(insert, delete, update)二是查询性能非常差(基于Hadoop MapReduce),不适合延迟小的交互式任务三是不支持事务2. Hive MetaStore是干什么的?Hive persists table schemas and other system metadata.
nginx有选择性进行限制
ronin47
nginx 动静 限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;...
server {...
location ~.*\.(gif|png|css|js|icon)$ {
java-4.-在二元树中找出和为某一值的所有路径 .
bylijinnan
java
/*
* 0.use a TwoWayLinkedList to store the path.when the node can't be path,you should/can delete it.
* 1.curSum==exceptedSum:if the lastNode is TreeNode,printPath();delete the node otherwise
Netty学习笔记
bylijinnan
java netty
本文是阅读以下两篇文章时:
http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html
我的一些笔记
===
js获取项目路径
cngolon
js
//js获取项目根路径,如: http://localhost:8083/uimcardprj
function getRootPath(){
//获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath=window.document.locati
oracle 的性能优化
cuishikuan
oracle SQL Server
在网上搜索了一些Oracle性能优化的文章,为了更加深层次的巩固[边写边记],也为了可以随时查看,所以发表这篇文章。
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(这点本人曾经做过实例验证过,的确如此哦!
Shell变量和数组使用详解
daizj
linux shell 变量 数组
Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="w3cschool.cc"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用ba
编程中的一些概念,KISS、DRY、MVC、OOP、REST
dcj3sjt126com
REST
KISS、DRY、MVC、OOP、REST (1)KISS是指Keep It Simple,Stupid(摘自wikipedia),指设计时要坚持简约原则,避免不必要的复杂化。 (2)DRY是指Don't Repeat Yourself(摘自wikipedia),特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。 (3)OOP 即Object-Orie
[Android]设置Activity为全屏显示的两种方法
dcj3sjt126com
Activity
1. 方法1:AndroidManifest.xml 里,Activity的 android:theme 指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例: <application
solrcloud 部署方式比较
eksliang
solrCloud
solrcloud 的部署其实有两种方式可选,那么我们在实践开发中应该怎样选择呢? 第一种:当启动solr服务器时,内嵌的启动一个Zookeeper服务器,然后将这些内嵌的Zookeeper服务器组成一个集群。 第二种:将Zookeeper服务器独立的配置一个集群,然后将solr交给Zookeeper进行管理
谈谈第一种:每启动一个solr服务器就内嵌的启动一个Zoo
Java synchronized关键字详解
gqdy365
synchronized
转载自:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。
同步机制可以使用synchronized关键字实现。
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。
当s
js实现登录时记住用户名
hw1287789687
记住我 记住密码 cookie 记住用户名 记住账号
在页面中如何获取cookie值呢?
如果是JSP的话,可以通过servlet的对象request 获取cookie,可以
参考:http://hw1287789687.iteye.com/blog/2050040
如果要求登录页面是html呢?html页面中如何获取cookie呢?
直接上代码了
页面:loginInput.html
代码:
<!DOCTYPE html PUB
开发者必备的 Chrome 扩展
justjavac
chrome
Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench
ChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-pl
算法机试题
李亚飞
java 算法 机试题
在面试机试时,遇到一个算法题,当时没能写出来,最后是同学帮忙解决的。
这道题大致意思是:输入一个数,比如4,。这时会输出:
&n
正确配置Linux系统ulimit值
字符串
ulimit
在Linux下面部 署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用 其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进
hibernate调用返回游标的存储过程
Supanccy2013
java DAO oracle Hibernate jdbc
注:原创作品,转载请注明出处。
上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程。
此此扁博文的存储过程的功能相当于是jdbc调用select 的作用。
1,创建oracle中的包,并在该包中创建的游标类型。
---创建oracle的程
Spring 4.2新特性-更简单的Application Event
wiselyman
application
1.1 Application Event
Spring 4.1的写法请参考10点睛Spring4.1-Application Event
请对比10点睛Spring4.1-Application Event
使用一个@EventListener取代了实现ApplicationListener接口,使耦合度降低;
1.2 示例
包依赖
<p