关闭

java-生产者消费者模式

经常会有公司叫我们手撕代码,比如网易,阿里,那我们是不是该掌握下呢。下面这段代码来自《现代操作系统》进程与线程P49页。public class ProducerConsumer { public ProducerConsumer() { } private static final int N = 100; static Producer producer = new Prod...
阅读(63) 评论(0)

解压字符串

题目: 某位程序员想出了一种压缩字符串的方法,压缩后的字符串如下:3{a}2{bc}, 3{a2{c}},2{abc}3{cd}ef,现在需要你写出一个解压程序,还原原始的字符串,如: s=“3{a}2{bc}”return “aaabcbc” , s=”3{a2{c}}” return “accaccacc” ,s=”2{abc}3{cd}ef” return “abcabccdcdcdef”...
阅读(95) 评论(0)

Java-break,continue,return用法

当年的我也算是基础小王子,但是长时间的不用导致我与他们越来越陌生了,所以我要把他们记在我的本本上。 首先我们要明白,java中到底有多少个循环关键字? 答:没错,就是3个,他们分别是:for(初始值;条件变量;增量),do{}…while(),while{}。break:跳出循环,执行循环体下面的语句; continue:继续循环,重新回到循环体初始位置,继续循环; return:直接跳出循环...
阅读(86) 评论(0)

归并排序-Java

归并算法:就是两个有序的序列,通过归并排序,变成一个有序的队列。 如图所示,对于一个序列的排序,可以这样做:首先,将序列分解成单个的数,,然后对相邻的有序序列通过排序逐渐整合为一个大的有序序列。这就是归并排序。下面是我写的java代码:public class GuiBingPaiXu { //此方法通过递归将数组分成单个的数字 public static void mergeSo...
阅读(68) 评论(1)

ConcurrentHashmap中的size()方法简单解释

本文所有的源码都是基于JDK1.8ConcurrentHashmap中的size()方法源码:public int size() { long n = sumCount(); return ((n (long)Integer.MAX_VALUE) ? Integer.MAX_VALUE :...
阅读(167) 评论(1)

HashMap和ConcurrentHashMap流程图

本文表达HashMap和ConcurrentHashMap中的put()方法的执行流程图,基于JDK1.8的源码执行过程。HashMap的put()方法: ConcurrentHashMap的put()方法: final V putVal(K key, V value, boolean onlyIfAbsent) {….} 1.key或value是否为空,是的话,抛异常new NullPoin...
阅读(95) 评论(0)

static和final修饰方法

static修饰的方法是静态方法,所有的对象共用一份,也就是共享方法。static方法是可以被继承,然后可以被重写和重载。final修饰的方法是不可变方法,final方法所在类被继承时,被final修饰的方法是不能被重写的,但是可以重载。...
阅读(111) 评论(0)

Partition函数

快排中核心的方法应该算是Partition函数了,它的作用就是将整个数组分成小于基准值的左边,和大于基准值的右边。普通的Partition函数是这样的:public static int partition1(int[] array,int lo,int hi){ //以第一个值为基准值,当然你也可以3取1, int key=array[lo]; wh...
阅读(467) 评论(0)

堆排序—Java

堆排序: 一棵完全二叉树,如果父节点的值大于等于左右节点的值,则称此完全二叉树为小根堆(小顶堆);如果父节点的值小于等于左右节点的值,则次完全二叉树为大根堆(大顶堆)。堆排序是建立在大顶堆或小顶堆的基础上的,通过不断的交换堆顶元素和堆尾元素,来对数组排序。基于大顶堆的堆排序,数组排序结果是升序的。基于小顶堆的堆排序,数组排序结果是降序的。流程: (1)建立堆 (2)交换堆顶与堆底元素 (3)...
阅读(87) 评论(0)

打印1到最大的n位数-Java

在练习剑指offer的时候,第12题打印1到最大的n位数的时候,想找个java版的,但大家要么用BigInteger做,要么给出其他的方法。我觉得要给就给最好的方法,下面是我自己参考C++代码写的java版的全排列方法。代码:public class Quanpaixu { public static void print1ToMaxOfNDigits(int n){ if(n...
阅读(93) 评论(0)

两个大数相乘-Java

两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示。例如S1=”7832974972840919321747983209327”,S2=”1987432091904327543957”,设计算法计算出S1*S2的结果,结果用String输出,不准用BigInter。思路: 根据手工计算两数相乘的过程,用代码实现这个过程。代码:import java.util.Scann...
阅读(358) 评论(0)

通俗易懂的Java序列化原理

序列化能干吗? (1)通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里) (2)利用序列化实现远程通信,即在网络上传送对象的字节序列。网上搜索的都是这样的解释,抽象,难懂。 我当时看见这两问题的时候,我就有两个问题? (1).txt,.java,.class文件我也没序列化,不也保存在银盘上了吗?我写的java对象没实现serializable,不也保存在我的硬盘上了吗?.java,...
阅读(151) 评论(0)

猜数游戏

来源:牛客网2017年校招全国统一模拟笔试(第五场)编程题集合 本文是转载博客,原博客:[编程题] 猜数游戏题目: 牛牛和羊羊在玩一个有趣的猜数游戏。在这个游戏中,牛牛玩家选择一个正整数,羊羊根据已给的提示猜这个数字。第i个提示是”Y”或者”N”,表示牛牛选择的数是否是i的倍数。例如,如果提示是”YYNYY”,它表示这个数使1,2,4,5的倍数,但不是3的倍数。注意到一些提示会出现错误。例如:...
阅读(231) 评论(0)

Java中的检查异常和未检查异常

已检查异常,指的是一个函数的代码逻辑没有错误,但程序运行时会因为IO等错误导致异常,你在编写程序阶段是预料不到的。如果不处理这些异常,程序将来肯定会出错。所以编译器会提示你要去捕获并处理这种可能发生的异常,不处理就不能通过编译。 就比如所有try catch的异常都是已检查异常。因为已检查异常必须被处理。未检查异常,也就是RunTimeException异常,指的是你的程序逻辑本身有问题,比如数组...
阅读(70) 评论(0)

求链表内环的入口节点-Java

步骤: 1.设置快慢两个指针,slow和fast,每次slow走一步slow.next,而fast走两步fast.next.next. 2.如果链表有环肯定可以在环内的一个节点相遇. 3.此时,slow指向相遇的节点,而fast指向头结点,然后slow和fast继续走,每次都走一步,slow.next,fast.next.当slow和fast指向同一个节点的时候就是入口节点,那么这是为什么呢?...
阅读(106) 评论(0)

Thread.interrupt()方法理解

原博客地址: 多线程编程 实战篇 (四)不客气地说,至少有一半人认为,线程的”中断”就是让线程停止. 如果你也这么认为,那你对多线程编程还没有入门.在java中,线程的中断(interrupt)只是改变了线程的中断状态,至于这个中断状态改变后 带来的结果,那是无法确定的,有时它更是让停止中的线程继续执行的唯一手段.不但不是 让线程停止运行,反而是继续执行线程的手段.对于执行一般逻辑的线程,如...
阅读(110) 评论(0)

java private修饰的类和变量

private主要用来修饰变量和方法,一般不会用来修饰类,除非是内部类。 1.new对象 被private修饰的变量和方法,只能在自己对象内部使用,其他对象即使是new你这个对象也是获取不到被private修饰的变量以及方法的。public class privateClass { private static a = 1; private static void setA(in...
阅读(124) 评论(0)

Volatile和Synchronized对可见性和原子性的支持

在学习并发编程的时候,遇见了volatile和synchronized关键字问题,volatile是可以保证可见性,但无法保证原子性,synchronized关键字由于其是加锁机制,肯定是可以保证原子性的。但是它能保证可见性吗?也就是说被synchronized包裹的变量的值被修改后会立即送往主内存中吗?带着这个问题,我们继续往下看。结论:volatile关键字只是用来修饰变量,并且保证变量的可见性...
阅读(94) 评论(0)

Socket套接字

socket编程,熟悉吧,那到底什么是socket呢?: 我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口,来供应用层调用,实现进程在网络中通信。 socket是一种进程间通信机制,提供一种供应用程序访问通信协议的操作系统调用,并且通过将socket与Unix系统文件描述符相整合,...
阅读(111) 评论(0)

Spring MVC请求执行流程

学习Spring MVC时间有点长了,但是最近打算找工作,需要重新了解下,所以又去温故知新了。Spring MVC就是用来写web的框架,简化你写web的一些不必要的流程,让程序员能专注于业务逻辑也就是controller的代码编写。这篇文章是比较详细的描述Spring MVC的流程的,Spring MVC 流程图 下面我在此基础上做一些补充说明。 这就是SpringMVC处理请求的流程。 Sp...
阅读(185) 评论(0)
40条 共2页1 2 下一页 尾页
    个人资料
    • 访问:7335次
    • 积分:449
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:6篇
    • 译文:1篇
    • 评论:2条
    最新评论