Java开发经验总结
CatcherTheRye
这个作者很懒,什么都没留下…
展开
-
从一组无序的整数中找出前N大的数
经常会遇见这样的问题,如何从一组序列中找出最大的N个数,比如从一个班级的成绩中找出总成绩的前三名。可能会有一个比较简单的做法就是先将这组序列排序,然后前N个值自然而然就得到了。这对于比较少的序列,是可行的,比如前面说的一个班的前三名,但是对于数据量特别庞大的现实应用中,就不太现实了,例如我们经常用到的搜索引擎,它应该不会对她搜到的所有的页面先进行排序然后再返回前N个搜索结果吧,这样的话花费在排序上原创 2013-09-09 22:39:49 · 2402 阅读 · 0 评论 -
volatile能保证long&double类型变量操作的原子性
这个题是正确的,但是也不是必须的。该命题的存在是Java内存模型要求lock, unlock, read, load, assign, use, write这个8个操作都具有原子性,但是同时又对64位的数据类型(long&double)给了一个相对宽松的规定,就是允许虚拟机将没有被volatile参数修饰的64位数据类型的读写划分为两次32位的操作来进行,即允许虚拟机将load, store, r原创 2017-05-15 16:12:15 · 7441 阅读 · 0 评论 -
你应该知道的ThreadPoolExecutor
为什么要有线程池来,可以参考这篇Blog Java线程实现原理首先来简单看下Java中两种启动线程的方式。//Extends Threadpublic class MyThread extends Thread { @Override public void run(){ //TODO } public void main(String[] args原创 2017-05-11 16:36:55 · 451 阅读 · 0 评论 -
Java线程实现原理
要了解Java线程的实现,首先需要了解下操作系统的线程模型。随着操作系统的发展,操作系统的调度由原来的进程转移到了线程,而进程则越来越成为了一个资源的集合,自保护了程序所需要的网络端口,磁盘文件句柄等;线程在作为程序执行和调度的最小单位,线程共享了进程内的资源,本身只包含了本线程运行所需要的最小的资源,因此切换起来比进程更加轻量级,成本更低。在系统中线程有两种实现方式,内核线程和用户线程。内核线程有原创 2017-05-12 11:39:17 · 536 阅读 · 0 评论 -
Java实现各种类型的单例模式
单例算是最简单的设计模式了,用途自不用多说,但是写好单例也是比较考验一个程序猿功底的,这就是为什么很多面试官乐于让面试者写一写单例的原因,正所谓简约而不简单。废话不多说,下面就用java来实现各种各样的单例吧。 1.饿汉模式public class Singleton{ private static Singleton instance = new Singleton(); private原创 2015-04-04 18:10:31 · 872 阅读 · 0 评论 -
mac中配置ice3.3.1环境
主要是配置Ice3.3.1环境,最新的3.5.1支持dmg安装方式,比较容易1.下载针对mac的安装包: https://www.zeroc.com/download_3_3_1.html2.解压到一个目录tar -xvf ... 假设解压后的目录为~/tools/Ice-3.3.13.建立一个软链接/opt/Ice-3.3 -> ~/tools/Ice-3.原创 2015-03-10 14:39:15 · 1087 阅读 · 0 评论 -
1 2 5组合100,有多少种方法
问题描述:用随意多个1 2 5三个数字的组合,使其值为100,有多少种组合方法? 基础解法:穷举法,1穷举100次,2穷举50次,5穷举20次,这种方法总共穷举的次数为100*50*20=100 000,性能太差,但是为了以后描述问题,先给出穷举法的代码: for(int i = 0; i <= 100; i += 5){ for(int j = 0;原创 2013-10-12 17:09:43 · 3135 阅读 · 2 评论 -
大整数乘法实现
给两个用字符串表示的大整数,对这两个整数进行相乘,求它们的积,所谓大整数就是用int,long均无法表示的整数,对它们做乘法,只能自己来实现。我们假定两个整数是十进制的正数,我们做这样的假定只是为了研究大整数乘法的方法,至于其他进制,有正负之分只要在这种方法上稍微做点修改就行了。下面开始讲解。1.方法1两个数相乘,最先想到的方法就是,我们可以用加法来实现,对被乘数做乘数次加法,进行原创 2013-09-19 10:26:37 · 1299 阅读 · 0 评论 -
java到底是传值还是传引用
这个问题一直困扰着初级程序员,如果这个问题不能解决,以后在做程序的时候可能会收到影响。其实这个问题是从C++中的传值和传指针中遗留来的,我们知道java中的引用其实是类似于C++中的指针,都是指向它所表示的对象,只不过java对指针有进行了一次封装,这样比直接拿到对象的指针操作起来更安全了,其实本质上都是指针。对基本类型的变量,没有任何人去争论,都知道它是传值的。但是对于指原创 2013-09-14 10:04:47 · 722 阅读 · 0 评论 -
高级Java工程师面试资料收集
【Java面试必备】最近5年133个Java面试问题列表 https://www.nowcoder.com/discuss/21112原创 2017-05-15 17:29:56 · 646 阅读 · 0 评论