
java
文章平均质量分 69
Zer01ne
这个作者很懒,什么都没留下…
展开
-
一位资深程序员大牛给予Java初学者的学习建议
这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。这一部分的内容,同样适用于一些希望转行到Java的同学。在大家看之前,我要先声明两点。1、由于我本人是Java后端开发出身转载 2017-07-06 20:56:41 · 390 阅读 · 0 评论 -
【java数据结构与算法学习】选择排序
选择排序是一种不稳定的排序算法,时间复杂度是O(N^2)的,空间复杂度是O(1)的。主要思想:每次遍历选出较大或较小元素的,放到合适的位置,不断遍历,直到全部数据排序完成。下面是java代码的实现方式:public class ChoseSort { public static void main(String[] args) { int[] arr = new int[]...原创 2018-03-13 22:10:47 · 231 阅读 · 0 评论 -
【java数据结构与算法学习】逆波兰计算器
逆波兰表达式也叫后缀表达式,采用逆波兰表达式无需考虑运算符的优先级,逆波兰表达式的计算是使用栈来实现的下面是我写的逆波兰的计算,本人是个小菜鸟,希望各位大牛多指点指点。主要的思想就是:当我们遇到操作符的时候,就出栈两个元素进行计算,然后将计算结果压入栈中;遇到数字的时候就进行压栈操作import java.util.Arrays;import java.util.Scanner;public...原创 2018-03-05 19:20:52 · 452 阅读 · 0 评论 -
【java数据结构与算法学习】中缀表达式转后缀表达式
通常我们的计算方式都是中缀表达式,如何转化为后缀表达式呢?主要的思想就是:我们创建一个操作符栈,当我们遇到数字的时候就直接进行保存或者输出;当我们遇到操作符 s 的时候,就看一下栈顶元素的优先级是否大于等于当前操作符 s ,如果大于等于,我们就进行出栈操作,然后将当前操作符 s 入栈;如果小于当前操作符 s ,我们就仅将当前操作符 s 入栈;最后将栈中的所有操作符全部弹出。先乘除后加减,同级别的先...原创 2018-03-05 19:37:14 · 373 阅读 · 0 评论 -
【java数据结构与算法学习】队列
队列是一种先进先出的数据结构,和栈一样,是以线性表为基础的。队列可以用顺序存储结构或者是链式存储结构来实现,一般来说,我们都是用链式存储结构来实现的。下面就是链式存储结构队列的基本实现。public class MyQueue { private class Node{ public Integer data; public Node next; ...原创 2018-03-06 19:07:03 · 211 阅读 · 0 评论 -
【java数据结构与算法学习】几个递归算法的实现
这次刚看到递归,写了几个递归的算法。其中包含了求阶乘、斐波那契数列、字符串逆序输出、折半查找实现。import java.io.IOException;import java.util.Scanner;public class Recuse { //n的阶乘 public int jieCheng(int n){ //n的阶乘 = n * n-1的阶乘 ...原创 2018-03-06 18:35:38 · 238 阅读 · 0 评论 -
【java数据结构与算法学习】归并排序
今天我们来记录一下归并排序。归并排序的主要思想:将数组分成两半,将每一半排好序,然后分别在每一半数组的开头设置指针,进行比较,小的就放在辅助数组中,该指针往下移,直到其中一边的数组走到头,将剩余的元素拷贝到辅助数组中,返回数组就是有序数组。根据master公式O(T) = aO(T/b) + O(N^d)可知,a = 2,b = 2,d = 1 。a/b = d,所以归并排序的时间复杂度是O(N*...原创 2018-03-22 12:00:20 · 313 阅读 · 0 评论 -
【java数据结构与算法学习】小和问题、逆序对问题
小和问题和逆序对问题是可以用归并排序来实现的。小和问题:在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数,没有;3左边比4小的数,1;4左边比4小的数,1、3;2左边比2小的数,1;5左边比5小的数,1、3、4、2;所以小和为1+1+3+1+1+3+4+2 = 16主要思想:在归并的过程中比较,找出右边元素有多少比...原创 2018-03-23 10:56:21 · 418 阅读 · 0 评论 -
【Java源码分析】Integer源码分析
今天带来的是Integer源码的分析。代码已经注释的非常清晰了。1.parseInt方法public static int parseInt(String s, int radix) throws NumberFormatException { /* * WARNING: This method may be invoked...原创 2018-04-15 19:22:53 · 482 阅读 · 0 评论 -
【Java源码分析】String源码深入解析
String可以说是我们最长用的一个类了,但是你真的理解她吗?废话不多说,直接开整。1.接口实现public final class String implements java.io.Serializable, Comparable<String>, CharSequenceString类实现了三个接口,表明了她是可序列化,可比较的。并且实现了接口中一些字符2.成员变量/**...原创 2018-04-24 09:50:52 · 347 阅读 · 0 评论 -
【Java源码分析】HashMap分析
扰动函数:static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); } HashMap的hash方法是key的hashCode的低16位与高16位做与运算。也叫做扰动函数为什么要有扰动函...原创 2018-05-09 11:53:17 · 274 阅读 · 0 评论 -
【Java设计模式】策略设计模式
最近看了一点设计模式,文章例子是来自HeadFirst中的。我们假设一种场景:在一个游戏中有多种角色,每个角色只能使用一种武器,但是可以切换武器,这个场景需要怎么设计呢?策略设计模式:它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。哇,这个概念真...原创 2018-04-26 19:45:34 · 418 阅读 · 0 评论 -
【java数据结构与算法学习】冒泡排序
冒泡排序算法原理:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。java冒泡排序的代码的实现://冒泡排序public class BubbleSort {...原创 2018-03-11 19:43:44 · 248 阅读 · 0 评论 -
【java数据结构与算法学习】LinkedList的实现
LinkedList是一个双向链表,是链表的一种特殊情况。链表有单链表、静态链表、双向链表、循环链表。单链表节点有一个数据域,一个指针域,其中指针域指向下一个节点。静态链表底层是一个数组和游标组成。数组中的第一个元素为空,第一个游标是数组中第一个为空的元素的下标;数组中最后一个元素也为空,最后一个游标是数组中第一个不为空元素的下标;游标为0的元素是静态链表最后一个元素。根据最后一个游标找到静态链表...原创 2018-02-26 23:03:36 · 307 阅读 · 0 评论 -
【java数据结构与算法学习】汉诺塔
汉诺塔是递归分治思想不得不说的经典案例。汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。后来,这个传说就演变为汉诺塔游戏,玩法如下:1.有三根杆子A,B,C。A杆...原创 2018-03-06 20:17:42 · 324 阅读 · 0 评论 -
【java数据结构与算法学习】快慢指针---快速找到未知长度单链表的中间节点
如题:快速找到未知长度单链表的中间节点第一种方法是大多人都能想到的方法:先遍历整个链表得到链表的长度,然后遍历链表的一半,找到链表的中间节点。此操作的时间复杂度是O(n)+O(n/2) = O(3n/2),该方法就不再进行代码的展示了。第二种方法就比较巧妙了,是运用的快慢指针的原理。我们设置两个指针,其中一个指针移动的速度是另一个指针移动速度的两倍,这样当快的指针移动到链表结束位置的时候,慢的指针...原创 2018-02-27 21:02:16 · 1200 阅读 · 0 评论 -
【java数据结构与算法学习】BF算法
BF算法(Brute-Force),是一种最基本的模式匹配算法。BF算法的实现思想很简单: 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s的第二个字符起再重新和串t进行比较。 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在串s 中的位置就是t 在s中的位置...原创 2018-03-08 14:44:25 · 617 阅读 · 0 评论 -
【java数据结构与算法学习】拉丁方阵问题
什么是拉丁方阵问题?如何打印一个拉丁方阵呢?思路:我们可以用循环链表来实现这个功能,通过变换开始打印的位置来改变顺序//拉丁方阵,有待改进public class LaDing<AnyType> { private static class Node<AnyType>{ public AnyType data; public Nod...原创 2018-03-08 15:16:13 · 1247 阅读 · 0 评论 -
【java数据结构与算法学习】约瑟夫问题
约瑟夫问题:n个人围成一圈,从第一个人开始报数,数到m的人出局,然后从下一个人接着报数,直到最后一个人,求出局顺序约瑟夫问题在数据结构中是一个循环链表。循环链表是在单链表的基础上改进的,当单链表的尾节点指向头节点构成一个环,就成了一个循环链表。下面就是约瑟夫问题在java中的代码实现方式。public class CircleList<AnyType> { private st...原创 2018-02-28 22:31:58 · 417 阅读 · 0 评论 -
【java数据结构与算法学习】魔术师发牌问题
魔术师发牌问题: 魔术师手里一共有13张牌,全是黑桃,1~13.魔术师需要实现一个魔术:这是十三张牌全部放在桌面上(正面向下), 第一次摸出第一张,是1,翻过来放在桌面上。 第二次摸出从上往下数第二张,是2,翻过来 放在桌面上,(第一张放在最下面去,等会儿再摸), 第三次摸出从上往下数第三张,是3,翻过来放在桌面上,(第一张和第二张 放在最下面去,等会儿再摸) 以此类推 最后一张就是13 魔...原创 2018-03-01 19:37:47 · 467 阅读 · 0 评论 -
【java数据结构与算法学习】栈
栈的本质是一个线性表,所以栈也分为栈的顺序存储结构和栈的链式存储结构。最开始栈中没有数据,叫做空栈,此时栈顶就是栈底。然后数据从栈顶进入,栈底和栈顶分离,整个栈的当前容量变大。数据出栈时从栈顶弹出,栈顶下移,真个栈的当前容量变小。在java中栈是用数组来实现的,用数组实现避免了链结构而且可能是更流行的解决方案。正常情况下入栈和出栈的时间复杂度都为常数O(1)的,在内部数组扩容是入栈操作才是O(n)...原创 2018-03-02 20:56:53 · 244 阅读 · 0 评论 -
JDBC的基本操作流程
感觉自己忘了JDBC的基本操作流程,今天就记录下来吧,时常复习package jdbcDemo;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class JdbcText { public sta...原创 2018-03-10 19:07:46 · 818 阅读 · 0 评论 -
【java数据结构与算法学习】ArrayList的实现
今天开始,下定决心学习数据结构和算法!每天进步一点点!ArrayList的实现原理,其内部是维护是一个可变数组。优点:查询快,根本原因是数组元素在内存中是连续存放的,所以当访问元素的时候我们只需知道首地址,根据Ai = A1 + (i-1)*每个元素占有的空间大小,就能很快的得到元素,这是一个复杂度为O(1)缺点:增删慢,从代码中就可以看出,需要不断的移动元素的位置,时间复杂度是O(n)的。imp...原创 2018-02-24 21:47:28 · 318 阅读 · 0 评论 -
SpringMVC面试总结
该文章不定时更新有关SpringMVC的面试问题。1.SpringMVC的工作原理 a.用户向服务器发送请求,请求被SpringMVC前端控制器DispatchServlet捕获 b.DispatchServlet对请求URL进行解析,得到请求资源标识符(URL),根据该URL调用HandlerMapping将请求映射到处理器HandlerExcutionChain; c.Dis...原创 2018-03-03 22:10:22 · 1904 阅读 · 0 评论 -
SSM整合的基本配置
1.web.xml的配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.c原创 2018-03-04 21:17:45 · 327 阅读 · 0 评论 -
SpringBoot+Redis哨兵模式搭建
Redis高可用哨兵模式搭建一主二从三哨兵模式Redis安装1、Redis下载 wget http://download.redis.io/releases/redis-4.0.11.tar.gz2、解压 tar zxcf redis-4.0.11.tar.gz3、进入目录 cd redis-4.0.11/4、安装 cd src m...原创 2018-10-11 11:57:53 · 4142 阅读 · 1 评论