
java学习
文章平均质量分 57
mianshui1105
这个作者很懒,什么都没留下…
展开
-
JAVA拾遗 - 优先队列的探讨以及其在KNN算法中的应用
这几天导师安排写一个微博签到数据依据地理坐标的分类,所以有一段时间没有更新博客了,不过正好也在这次代码的写作中学习了一些新的姿势,写这篇博客跟大家分享下心得。优先队列定义所谓的优先队列,就是在普通队列的基础上,对于每个点维护一个“优先”值,这个优先值决定了优先队列的出队顺序。优先队列内的元素不能够是空的JAVA中的优先队列在JAVA的优先队列(java.util.priorityQueue)内部维原创 2016-08-28 11:40:32 · 675 阅读 · 0 评论 -
JAVA拾遗 - ArrayList\LinkedList\HashMap源码解析与阅读
本文转载自:文/absfree(简书作者)原文链接:http://www.jianshu.com/p/f174d49b391c著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。本文会从源码(JDK 1.8)的角度来分析以下几个Java中常用的数据结构,主要会分析原理与实现,以及每个数据结构所支持的常用操作的复杂度。ArrayListLinkedListHashMap在对以转载 2016-09-04 14:56:45 · 603 阅读 · 0 评论 -
JAVA拾遗 - 希尔排序
package Elementary_Sorts;/** * Created by coco1 on 2016/9/18. * 希尔排序(Shell Sort)是插入排序的一种。 * 也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。 * 希尔排序是非稳定排序算法。 * 该方法因DL.Shell于1959年提出而得名。 * * Insertion Sort is ineffi原创 2016-09-18 16:37:33 · 326 阅读 · 0 评论 -
JAVA拾遗 - 如何正确地覆盖equals方法
本文思想来自于Effective Java第二版 3.1章节,实为阅读总结,如果读者有疑惑的地方强烈建议阅读这个章节。何时覆盖Equals方法何时不应该覆盖覆盖equals方法看上去是一件简单的事情,但是很多覆盖的方法都会导致一些隐性的BUG,最容易避免这些问题的方法就是 不覆盖 equals方法,在这种情况下每个类都只与其自身相等,如果满足以下任何一个条件,就不应该覆盖equals方法类的每个原创 2016-09-19 11:30:43 · 3857 阅读 · 0 评论 -
二叉树常见问题
二叉树的常见问题有如下几个,如果解决好了,就跟链表一样轻松:唯一不一样的是,二叉树是非线性结构。常见的问题如下: 二叉树的问题 1.二叉树三种周游(traversal)方式: 2.怎样从顶部开始逐层打印二叉树结点数据 3.如何判断一棵二叉树是否是平衡二叉树 4.设计一个算法,找出二叉树上任意两个节点的最近共同父结点,复杂度如果是O(n2)则不得分。 5.如何不用递归实现二叉树的前序/后序转载 2016-10-24 10:10:11 · 430 阅读 · 0 评论 -
解释型语言与编译型语言
编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。 在运行的时候,转载 2016-10-29 17:27:36 · 274 阅读 · 0 评论 -
JAVA拾遗 - 红黑树 Part I
写在最前红黑树,应该说是我们着一些年轻程序员最害怕的玩意了,每当宿舍吹比算法的时候,聊到树,必然绕不开红黑树这个乖乖东西。为了达到二分查找的最佳性能,我们强调生成的二分查找树必须是最“平衡”的,即所有从root点开始往下探的路径长度,总是相同的。可是总有的时候二分查找树是不会平衡的,多了一个少了一个都会影响其的平衡性。为了防止二分查找树出现最坏的情况,也为了提升查找的效率,这里提出个概念,就是所谓的原创 2016-11-10 21:01:27 · 428 阅读 · 0 评论 -
Java拾遗 - default关键字详细介绍
什么是default方法?Java 8发布以后,可以给接口添加新方法,但是,接口仍然可以和它的实现类保持兼容。这非常重要,因为你开发的类库可能正在被多个开发者广泛的使用着。而Java 8之前,在类库中发布了一个接口以后,如果在接口中添加一个新方法,那些实现了这个接口的应用使用新版本的接口就会有崩溃的危险。有了Java 8,是不是就没有这种危险了?答案是否定的。给接口添加default方法可能会让某些转载 2017-03-02 14:56:16 · 3583 阅读 · 0 评论 -
Java拾遗 - CAS算法以及immutable变量的线程安全
综述CAS1. 锁的机制为了实现线程安全,对于一些关键变量必须加锁常用的锁机制有两种:1、悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。悲观锁的实现,往往依靠底层提供的锁机制;悲观锁会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。2、乐观锁:假设不会发生并发冲突,每次不加锁而是假设没有冲突而去完成某项操作,只在提交操作时检查是否违反数据完整性。如果因为冲突失败就重试,直到成原创 2017-03-21 13:07:29 · 436 阅读 · 0 评论 -
玩耍 - JAVA写的五子棋
package game;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class FiveChess implements Chess{原创 2016-09-03 16:26:59 · 714 阅读 · 0 评论 -
JAVA拾遗 - 如何有效地避免OOM:善于利用软引用和弱引用
转载自 http://www.cnblogs.com/dolphin0520/p/3784171.html 想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。下面是本文的目录大纲: 一.了解 强引用、软引用、弱引用、虚引用的概念 二.进一步转载 2016-08-17 17:23:17 · 422 阅读 · 0 评论 -
JAVA拾遗 - 线程的三种简单实现
线程是程序中的执行线程。java虚拟机允许应用程序并发地运行多个执行线程。每个线程都有一个优先级,高优先级线程的执行优先于低优先级的线程。当某个线程中运行的代码创建一个新Thread对象时,该新线程的初始化优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。当java虚拟机启动时,通常都会有一个单独非守护线程(通常用来调用“main()”函数)。JAVA虚拟机会继续原创 2016-08-06 18:34:59 · 458 阅读 · 0 评论 -
JAVA拾遗 - 使用Java实现数列栈和链表栈
最近有点忙,没来得及更新博客...正好在看Alg PartI 的公开课,就发一批课堂练习凑个数吧...抽象栈主要有三个功能,我们可以用一个抽象类去规定他package StackQueueBag;/** * Created by coco1 on 2016/9/12. */public abstract class AbstructStack { public abstract原创 2016-09-12 15:06:50 · 374 阅读 · 0 评论 -
JAVA拾遗 - 一个简单的4线程TCP客户端
package chapter_1;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;import java.net.UnknownHostExcept原创 2016-08-31 21:13:26 · 379 阅读 · 0 评论 -
JAVA拾遗 - 线程安全之隐式锁
线程安全当多个线程同时操作一个数据结构的时候,可能会发生一些奇妙的情况(比如相互串行或者相互修改),这种情况发生后就无法保证数据的一致性,这也是不安全的线程,为了保证数据的一致性,我们在这里讨论线程安全。1.首先我们新建一个线程package ThreadSecure;public class Thread_A extends Thread{ private work work; //这是原创 2016-08-09 13:43:24 · 465 阅读 · 0 评论 -
JAVA拾遗 - volatile关键字和原子性的探讨
机房又只有我一个人...无聊到点开优快云写一篇文章吧~记录下最近的学习之前在学习JAVA的过程中有点模糊的地方,最近一个一个拔掉钉子,还是满开心的。在看到多线程后就发现有个非常不能理解的东西,比如说这篇文章即将讲到的volatile关键字本篇博客部分翻译自http://tutorials.jenkov.com/java-concurrency/volatile.html什么是volatileTh原创 2016-08-20 19:55:28 · 1048 阅读 · 0 评论 -
JAVA拾遗 - ConcurrentHashMap源码阅读<实在续不动>
说实话在这段时间的编程里,多线程用的少,但是这是JAVA里面非常重要的一个部分,所以找了个机会看了点书。但是看完书后觉得还不够,书里面也就讲了它主要的对外接口,所以就想进入源码里面看看,顺便复习一下。继承ConcurrentHashMap继承于AbstractMap,实现了Map\Serializable这几个接口。public class ConcurrentHashMap<K,V> exten原创 2016-08-19 18:44:50 · 746 阅读 · 0 评论 -
JAVA拾遗 - 并查集算法的实现与改进
并查集并查集所需要实现的主要有一下几个功能1.建立新的集合2.查找某个元素属于哪个集合3.合并两个集合我们希望它的算法复杂度达到O(1),那么具体应该如何实现呢?方法UF(int n) //建立并查集int count() //返回并查集集合数boolean connected(int a, int b) //测试两个元素是否在同一个集合内find(int a) //返回某个元素属于哪原创 2016-08-16 12:07:03 · 619 阅读 · 0 评论 -
Effective Java 阅读 (1-3)
Effective Java 阅读 (1-3)真正开始阅读这本书之后,我才发现我对这门语言的认识是多么肤浅。这是这个系列的第一篇博客,写于2016年8月28日21:31:25,今天我从快递小哥手上接过这本书,突然就有一种神秘的感觉,就好像一只迷途的羔羊找到了新的道路。哈哈扯远了,希望能够用这一系列的博客记录一下我阅读EJ的心得和体会吧。更新频率:1-3次/周第一条:考虑使用静态工厂方法你还在使用共原创 2016-08-30 14:37:57 · 651 阅读 · 0 评论 -
Nifi初探 - 如何测试Nifi Processor
之前的博客简单讲了一下如何去定义一个简单的Json处理Processor,这一次是在无数次测试中总算厌烦了把打包好的Nar包上传到lib中,然后重启服务器,然后再测试功能,测试的时候还很难看到日志...同样搬运自 - > nifi.rock对自定义开发的Processor进行Unit Test开始Apache Nifi框架的单元测试是基于Junit的test runners的,在他们的代码中有一些翻译 2017-07-20 17:39:24 · 4181 阅读 · 0 评论