- 博客(31)
- 收藏
- 关注
转载 希尔排序的实现
直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。3.
2017-06-20 18:29:49
247
转载 非阻塞同步算法与CAS(Compare and Swap)无锁算法
锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。用户态的锁虽然避免了这些问题,但是其实它们只是在没有真实的竞争时才有效。Java在JDK1.5之前都是靠syn
2017-06-11 15:29:28
328
原创 15个Java多线程面试题及回答
15个Java多线程面试题及回答1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。2)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,
2017-06-03 15:21:33
310
原创 java多线程中的sleep()方法与wait()方法的区别
sleep()是使线程暂停执行一段时间的方法。wait()也是一种使线程暂停执行的方法,例如,当线程交互时,如果线程对一个同步对象x发出一个wait()调用请求,那么该线程会暂停执行,被调用对象进入等待状态,直到被唤醒或等待时间超时 具体而言,sleep()方法与wait()方法的区别主要表现在一下几个方面:1)原理不同。sleep()方法是Thread的静态方法,是线程用来控制自身流
2017-06-02 11:14:31
1592
2
转载 java笔记--关于线程同步(7种同步方式)
关于线程同步(7种方式)为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。 1.同步方法 即有synchronized关键字修
2017-05-12 15:35:09
216
转载 Hashtable/HashMap与key/value为null的关系
大家都知道Hashtable与HashMap的三大区别,其中有一条则是HashMap可以存储一个Key为null,多个value为null的元素,但是Hashtable却不可以存储。究竟是为什么?下面看一下源代码:HashMap.class: // 此处计算key的hash值时,会判断是否为null,如果是,则返回0,即key为null的键值对 // 的hash为0。因此
2017-05-09 23:55:17
938
转载 十大Intellij IDEA快捷键
Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论。每个人都有自己的最爱,想排出个理想的榜单还真是困难。以前也整理过Intellij的快捷键,这次就按照我日常开发时的使用频率,简单分类列一下我最喜欢的十大快捷-神-键吧。1 智能提示Intellij首当其冲的当然就是Intelligence智能!基本的代码提示用Ctrl+Space,
2017-05-06 19:50:18
161
转载 java中关键字volatile的作用
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) =========================分割线1===========
2017-04-25 21:12:20
165
原创 数据库(手写选出一个公司年龄最大的100个员工)
SELECT TOP 100 雇员表.* FROM 雇员表 ORDER BY 雇员表.AGE DESC
2017-04-25 20:20:18
1570
原创 数组和链表的区别
数组静态分配内存,链表动态分配内存;数组在内存中连续,链表不连续;数组元素在栈区,链表元素在堆区;数组利用下标定位,时间复杂度O(1),链表定位元素时间复杂度O(n);数组插入和删除的时间复杂度O(n),链表的时间复杂度O(1)。
2017-04-25 18:43:08
237
原创 数组和链表的区别
数组静态分配内存,链表动态分配内存;数组在内存中连续,链表不连续;数组元素在栈区,链表元素在堆区;数组利用下标定位,时间复杂度O(1),链表定位元素时间复杂度O(n);数组插入和删除的时间复杂度O(n),链表的时间复杂度O(1)。
2017-04-25 18:42:29
218
原创 快排java实现
public class Sort {public static void main(String[] args) { int a[]={1,4,54,6,76,87,889,6,87,5};partition(a, 0, 9); for(int i=0;i System.out.println(a[i]); }} public static void part
2017-04-18 20:30:51
452
原创 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
import java.util.*;import java.util.Stack;public class Solution { Stack stack1 = new Stack(); Stack stack2 = new Stack(); public void push(int node) { stack1.push
2017-04-18 11:50:18
313
转载 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
转 https://biezhi.me/article/how-to-correctly-write-singleton-pattern.html单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那
2017-04-17 15:06:29
219
原创 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val;
2017-04-15 19:47:44
1065
原创 输入一个链表,从尾到头打印链表每个节点的值。
/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.*;pub
2017-04-15 12:22:46
285
原创 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution { public String replaceSpace(StringBuffer str) { //从后往前,先确定字符串的长度和替换后的长度 int len=str.length(); int count=0; for(int i=0;i if(s
2017-04-14 22:53:33
2561
原创 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int target, int [][] array) { int row=array.length-1
2017-04-14 20:11:56
361
原创 题目描述 Given n points on a 2D plane, find the maximum number of points that lie on the same straight
import java.util.*;public class Solution { public int maxPoints(Point[] points) { if(points.length return points.length; int flag=0; for(int i=0;i
2017-04-14 16:27:18
921
原创 Java实现链表的插入,删除,排序,输出
//链表的数据结构:package test; class Node { Node next=null; int data; public Node(int data){ this.data=data; }}//链表操作 的实现:package test;import com.oj.Main1;
2017-04-01 19:28:51
548
转载 easyui实现datagrid行内编
easyui的datagrid行内编辑对于修改信息而言比较方便直观,下面举例说明: 需求说明: 在行内编辑员工状态 一、编辑jsp Html代码 ... a href="#" id="save" onclick="obj.save()" class="easyui-linkbutton" i
2017-03-20 19:09:57
440
转载 java中spring+springMVC+Mybatis主流框架maven的pom.xml配置参考
xml version="1.0" encoding="UTF-8"?> project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4
2017-03-18 22:16:23
311
转载 数据库内外网交换怎么做的,如果交换给你做,你怎么做
怎么实现内外网的数据同步,数据库是Oracle的.项目已经分别在内网和外网上线。但是现在数据不同步。也就是说从外网中录入的数据,不能在内网中查看。反之亦然,现在需要实现数据同步。将内网和外网的数据显示为一样 方案一、外网需要同步的表加上触发器,保存在临时表。 2、task定时导出临时表记录,修改已导出记录的状态,上传到类似ftp目录上。 3、内网task通
2017-03-16 12:08:13
6630
转载 HTTP协议的主要特点
HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。4.无连接:无连
2017-03-10 19:46:19
2247
转载 Java中,&&与&,||与|的区别
java中,很多人都不知道&与&&,|与||的区别。&,&&:(与,短路与):一样的地方就是二者执行最后的结果是一样的,但是执行的过程有区别,对于&:无论&左边是否为false,他都会继续检验右边的boolean值。对于&&:只要检测到左边Boolean值为false时,就会直接判断结果,不会在检验右边的值(因为"与"有一个false最后结果就是false了)所以&
2017-03-07 17:39:33
255
转载 什么是死锁?如何避免死锁?
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须
2017-02-28 19:20:44
222
原创 密码验证合格程序
密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度超2的子串重复 说明:长度超过2的子串输入描述:一组或多组长度超过2的子符串。每组占一行输出描述:如果符合要求输出:OK,否则输出NG输入例子:021Abc9000021Abc9Abc1021ABC900002
2017-02-27 17:41:46
197
转载 Object类有哪些公用方法?
Object是所有类的父类,任何类都默认继承Object。clone保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常equals在Object中与==是一样的,子类一般需要重写该方法hashCode该方法用于哈希查找,重写了equals方法一般都要重写has
2017-02-19 22:58:21
236
转载 Java九种基本数据类型的大小,以及他们的封装类以及注意关键点
Java提供了九种基本的数据类型,它们分别是:void boolean short int long float double byte char 对应的Java类 Void Boolean Short Integer LongFloat Double Byte Character基本类型大小(字节)默认值封装类b
2017-02-19 21:54:38
453
原创 进程与线程的区别?
对于进程的定义,从不同的角度可以有不同的定义,其中较为典型的定义有: (1)进程是程序的一次执行 (2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动 (3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位(传统OS的定义)线程:比进程更小的能独立运行的基
2016-12-05 16:02:28
176
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人