java
文章平均质量分 78
XD_fybdw
这个作者很懒,什么都没留下…
展开
-
迷宫算法(java实现)
迷宫问题是栈的典型应用,因此借助栈来实现迷宫问题; *题目描述:用类来解决迷宫路径的查找问题,寻找一条从左上角迷宫入口到右下角迷宫出口的一条有效路径,0代表可以行走,1代表不能行走,找到,请输入最终的迷宫和路径信息, 找不到,请输出不存在有路径。 例如: * 请输入迷宫的行列数(m * n):5 5 * 请输入迷宫的路径: * 0 0 1 0 0 * 1 0 0 1 0原创 2017-10-29 20:07:09 · 1356 阅读 · 2 评论 -
关于内存泄漏与内存溢出
一、内存泄漏与内存溢出 1、内存溢出:简单来理解就是,你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,出现溢出。2、内存泄漏:你用new申请了一块内存,后来很长时间都不再使用了(按理应该释放),但是因为一直被某个或某些实例所持有导致 GC 不能回收,也就是该被释放的对象没有释放。 2.1出现内存泄漏与内存溢出的原因?为什么出现内存溢出(out of memory )...原创 2018-08-04 11:38:15 · 440 阅读 · 0 评论 -
字典树(java实现)
一、什么是java字典树? Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 它有3个基本性质: 1...原创 2018-07-21 22:02:22 · 7516 阅读 · 6 评论 -
Java动态规划
一、动态规划 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题 与分治法不同的是。 动态规划经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。 如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。1.1动态规划的步骤 找出最优解的性...原创 2018-07-25 21:08:55 · 2131 阅读 · 0 评论 -
AVL树(java实现)
一、AVL树的四种旋转操作 (1)左旋 代码:/** * AVL树的左旋转操作,从root开始,进行左旋,完成后,把新的根节点返回 * * @param root * @return */ private AvlNode leftRotate(AvlNode root) { AvlNode newroot =...原创 2018-07-13 19:04:24 · 338 阅读 · 0 评论 -
浅谈海量数据处理
一、海量数据 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 二、海量数据常见的解决方式 1.分而治之/hash映射 + hash统计 +堆/快速/归并排序; 2.双层桶划分 3.Bloom filter/Bitmap; 4.Trie树/数据库/倒排索引; 5.外排...原创 2018-07-19 12:09:33 · 302 阅读 · 0 评论 -
TCP三次握手和四次挥手
一、TCP三次握手 三次握手过程 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=...原创 2018-07-03 15:42:30 · 181 阅读 · 0 评论 -
BST树(java实现)
BST树二叉搜索树 左子树比根节点小,右子树比根节点大BST树节点public class BSTNode { int data; BSTNode left; BSTNode right; public BSTNode(int data, BSTNode left, BSTNode right) { this.data = data;...原创 2018-07-08 14:35:40 · 1284 阅读 · 0 评论 -
HashMap总结
一、HashMap的工作原理 Java中的HashMap是以键值对(key-value)的形式存储元素的。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在了,value会被更新成新值。HashMap的一些重...原创 2018-02-23 21:21:11 · 316 阅读 · 0 评论 -
JavaJDBC
一、在使用jdbc对数据库中的数据进行操作时,首先需要在创建的工程中导入mysql-connector-java-5.0.8-bin jar包,然后在Eclipse中的具体操作步骤可以分为以下六步: 1、加载数据库驱动 2、获取链接 3、获取向数据库发sql语句的statement对象 4、向数据库发送sql,获取数据库返回的结原创 2018-01-11 12:04:24 · 433 阅读 · 0 评论 -
Java集合(2)
Set接口介绍原创 2017-12-02 21:34:55 · 186 阅读 · 0 评论 -
泛型
java泛型原创 2017-11-26 14:36:06 · 276 阅读 · 0 评论 -
JAVA集合
集合 接口原创 2017-11-28 16:25:27 · 247 阅读 · 0 评论 -
单链表
(1)单链表:在插入和删除元素的时候比顺序表方便,不需要移动所有元素。单链表的实现class Node{ //创建结点 int value; Node next; public Node(){ this(0); } public Node(int value){ //初始化 this.value=value;原创 2017-10-25 23:35:53 · 257 阅读 · 0 评论 -
栈的存储结构
(1)栈的定义:限制在表的一端进行删除和插入的线性表,通常能够插入和删除的一端为栈顶(top); (2)顺序栈:顺序栈的实现,从本质上来讲就是顺序线性表的实现,唯一重要的是应该用数组的那一端表示栈顶。主要操作是出栈和入栈,也就是修改栈顶指针; java代码实现:class SqStack{ private int[] stack; private int top;原创 2017-10-25 23:09:17 · 645 阅读 · 0 评论 -
线程池技术以及原理
一、使用线程池的好处 1.降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁造成的消耗。 2.提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行。 3.提高线程的可管理型 线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低稳定性,使用线程池,统一分配,调优和监控。 二、线程池的工作原理 当任务提交以后,线程池是如何处理的? 1.线程池判断核心线程...原创 2018-08-09 12:19:25 · 307 阅读 · 0 评论