Java学习之路
文章平均质量分 53
这个专栏是我在大二上学期学完java以后,大三上学期开始阶段总结的大部分java知识点.一些简单的知识点我就没介绍了,都是一些重点,方便巩固java基础,走向更深层次的底层学习!
29DCH
In me the tiger sniffs the rose.
展开
-
记Google的一道面试题(java) Beautiful Numbers
Beautiful Numbers思路:13->三进制->11111+13+133=1313%3=1,13/3=44%3=1,4/3=11%3=1,1/3=01.第一种情况:数据范围比较小代码:package test;import java.io.BufferedReader;import java.io.InputStreamReader;import...原创 2018-12-09 22:59:29 · 505 阅读 · 0 评论 -
java swing实现的扫雷游戏
详细代码见我的相应github仓库:https://github.com/29DCH/Mine-Sweeper欢迎fork源码到你自己的仓库下面。效果图:java swing实现的扫雷游戏,实现了基本逻辑.主要用到了floodfill(漫水填充)算法和knuth-shuffling-algorithm(Fisher–Yates也被称作高纳德(Knuth)随机置乱算法,随机洗牌算法)代码...原创 2018-12-09 15:51:26 · 746 阅读 · 0 评论 -
中奖问题---蒙特卡洛算法实现
题目如图:这其实是一个基础的概率问题蒙特卡洛算法实现代码如下:package Test;public class WinningPrize { private double chance; private int playTime; private int N; public WinningPrize(double chance, int playT...原创 2018-11-24 22:26:17 · 1444 阅读 · 0 评论 -
蒙特卡洛算法及其实例的可视化
这里先简单介绍一下蒙特卡洛算法,是一种统计学的方法,也是一种模拟的思想.通过大量随机样本,去了解一个系统,进而得到要计算的值(近似值).样本量越大,模拟出来的值越准确.1.求PI值利用面积,pi=落在圆内的点的数量/点的总数量*4;代码:AlgoFrame.javapackage Test;import java.awt.*;import java.util.LinkedLis...原创 2018-11-24 20:34:18 · 2671 阅读 · 0 评论 -
蒙提霍尔悖论(三门问题)解析
三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let’s Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两...原创 2018-11-24 21:35:57 · 8358 阅读 · 0 评论 -
java日志产生器开发并结合log4j完成日志输出到控制台以及flume中
首先搭建一个maven项目,在项目的test测试文件夹下面新建一个java文件夹和resources文件夹,并标记化然后在java文件夹下面新建LoggerGenerator.java文件import java.util.logging.Logger;/** * 模拟日志产生 */public class LoggerGenerator { private static ...原创 2018-12-03 21:45:50 · 502 阅读 · 0 评论 -
采用BFS(队列)实现走迷宫问题的可视化
详细代码见我的相应github仓库:https://github.com/29DCH/Walking-the-maze欢迎fork源码到你自己的仓库下面。效果图:代码:AlgoFrame.javapackage Test;import java.awt.*;import javax.swing.*;public class AlgoFrame extends JFrame...原创 2018-12-01 16:59:17 · 746 阅读 · 0 评论 -
采用非递归(栈)实现走迷宫问题的可视化
效果图:代码如下:AlgoFrame.javapackage Test;import java.awt.*;import javax.swing.*;public class AlgoFrame extends JFrame{ private int canvasWidth; private int canvasHeight; public AlgoF...原创 2018-12-01 16:22:13 · 425 阅读 · 0 评论 -
采用DFS实现走迷宫问题的可视化
详细代码见我的相应github仓库:https://github.com/29DCH/Walking-the-maze欢迎fork源码到你自己的仓库下面。效果图:直接上代码:AlgoFrame.javapackage Test;import java.awt.*;import javax.swing.*;public class AlgoFrame extends JFra...原创 2018-12-01 15:11:45 · 820 阅读 · 0 评论 -
java堆排序可视化
import java.awt.*;import javax.swing.*;public class AlgoFrame extends JFrame{ private int canvasWidth; private int canvasHeight; public AlgoFrame(String title, int canvasWidth, int ca...原创 2018-11-26 21:27:10 · 562 阅读 · 2 评论 -
java快速排序可视化
AlgoFrame.javaimport java.awt.Graphics2D;import java.awt.Graphics;import java.awt.Dimension;import java.awt.Color;import java.awt.RenderingHints;import javax.swing.*;public class AlgoFrame ex...原创 2018-11-26 21:01:19 · 661 阅读 · 0 评论 -
java归并排序可视化
1.自顶向下AlgoFrame.javapackage Test;import java.awt.*;import javax.swing.*;public class AlgoFrame extends JFrame { private int canvasWidth; private int canvasHeight; public AlgoFrame...原创 2018-11-26 18:10:54 · 685 阅读 · 0 评论 -
java插入排序可视化
直接上代码和效果图:AlgoFrame.javapackage Test;import java.awt.*;import javax.swing.*;public class AlgoFrame extends JFrame{ private int canvasWidth; private int canvasHeight; public AlgoFr...原创 2018-11-25 16:18:30 · 379 阅读 · 1 评论 -
java选择排序可视化
直接上代码以及效果:AlgoFrame.javapackage Test;import java.awt.*;import javax.swing.*;public class AlgoFrame extends JFrame{ private int canvasWidth; private int canvasHeight; public AlgoFr...原创 2018-11-25 15:19:55 · 341 阅读 · 0 评论 -
随机模拟算法--分钱模拟问题可视化
详情见 http://www.sohu.com/a/159448526_499017最近在知乎上看到一个很有趣的问题:房间里有100个人,每人都有100元钱,他们在玩一个游戏。每轮游戏中,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的?这很显然是个概率问题,一般人凭直觉都会认为最后的财富分布每个人是相差不多的,但其实这个问题正好可以反映当下社会贫富差距的问题,这也告诉我...原创 2018-11-24 15:08:16 · 686 阅读 · 0 评论 -
java String类的intern方法总结
java八大类型和String类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存.1.直接使用双引号声明出来的String对象会直接存储在常量池中。2.如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern 方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池...原创 2018-09-26 23:32:41 · 268 阅读 · 0 评论 -
java编码规范
Java编码规约 命名规约 1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 正确:user/name/age 错误:user/user/useruser/user/useruser/_user/user/user_ 2.代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。纯拼音的方式也要尽量避免。 正确: beijing/ qrsx/ y...原创 2018-06-04 22:11:50 · 180 阅读 · 0 评论 -
java图像识别
今年软件杯有一个项目是工商图片文字提取。大致的要求就是将天猫给的50张样例图片中的企业名称和注册号提取出来。速度和准确率是这个项目的关键。 我觉得软件杯历年的项目都挺有难度的,很有挑战性。近几年由于人工智能和大数据的飞速发展,项目命题也偏向这方面而不是传统项目了。所以对于程序员来说,除了了解传统项目知识(比如java web三大框架),还要与时俱进,自主学习大数据和人工智能的前沿知识,我认为...原创 2018-06-05 12:20:07 · 15233 阅读 · 9 评论 -
2018阿里巴巴秋招java笔试题做题记录
一、单项选择题 1、以下函数的时间复杂度是 ( ) void func(int x,int y, int z){ if(x<=0) printf(“%d, %d\n”, y, z); else { func(x-1,y+1,z); func(x-1,y,z+1); } } 求递归函数的时间复杂度,借助栈来存储。 A.O(x*y*z) B.O(x^2*y...原创 2018-06-13 11:44:43 · 5835 阅读 · 0 评论 -
阿里巴巴社招Java面试题做题记录
阿里巴巴社招Java面试题 1、String和StringBuffer的区别 运行速度和线程安全两方面: 运行速度:StringBuilder >StringBuffer >String String是字符串常量,不可变,每次改变只是创建一个新的对象,然后GC回收掉老的那个,所以执行速度最慢,另外两个是字符串对象,可变。 线程安全: StringBuilder是线程不安全的...原创 2018-06-13 22:17:12 · 3803 阅读 · 0 评论 -
java代码块总结
在java中将代码用{}括起来的部分叫做代码块,分为局部代码块,构造代码块,静态代码块,同步代码块。局部代码块 :在方法中出现;限定变量生命周期,及早释放,提高内存利用率构造代码块 (初始化块): 在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行静态代码块 : 在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行...原创 2018-08-26 17:18:30 · 192 阅读 · 0 评论 -
java多态总结
简单的说就是父类引用指向子类对象.一种方法, 多种实现.规则:成员变量:编译看左边(父类),运行看左边(父类);成员方法:编译看左边(父类),运行看右边(子类,动态绑定).public class Polymorphic { public static void main(String[] args) { /*Father f = new Son(); //父类引用...原创 2018-08-26 20:59:53 · 339 阅读 · 0 评论 -
java抽象类与接口总结
1.抽象类:抽象类特点 a:抽象类和抽象方法必须用abstract关键字修饰 abstract class 类名 {} public abstract void 方法名(); b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口 c:抽象类不能实例化那么,抽象类如何实例化呢? 按照多态的方式,由具体的子类实...原创 2018-08-27 12:29:06 · 243 阅读 · 0 评论 -
java内部类总结
内部类概述分为成员内部类,静态内部类,局部内部类,匿名内部类内部类访问特点 * a:内部类可以直接访问外部类的成员,包括私有。 * b:外部类要访问内部类的成员,必须创建对象。 * 外部类名.内部类名 对象名 = 外部类对象.内部类对象;1.成员内部类:public class Test { public static void main(String[]...原创 2018-08-27 21:08:05 · 199 阅读 · 0 评论 -
java 二分查找源码分析
二分查找又称为折半查找.在数组接近有序时有很好的效率时间复杂度为O()=O(logn)注意事项: * 如果数组无序,就不能使用二分查找。 * 因为如果你排序了,但是你排序的时候已经改变了最原始的元素索引。java源码分析:import java.util.Arrays;public class Test { // Like publi...原创 2018-08-29 11:50:02 · 258 阅读 · 0 评论 -
java equals方法重写和hashcode方法总结
JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现(重写覆盖了原来的),而不再是比较类在堆内存中的存放地址了。 equals方法,比较两个对象是否相等,比较的是地址(初始)和值...原创 2018-08-28 15:12:33 · 217 阅读 · 0 评论 -
java泛型总结
泛型的由来:通过Object转型问题引入早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。泛型好处 * 提高安全性(将运行期的错误转换到编译期) * 省去强转的麻烦泛型基本使用 * <>中放的必须是引用数据类型 * D:泛型使用注意事项 *...原创 2018-08-29 22:23:17 · 194 阅读 · 0 评论 -
java Set集合总结
不仅要会使用集合的方法,还要对它们底层的数据结构实现原理有一定的了解。Set集合,无索引,不可以重复,无序(存取不一致)这里主要总结HashSet,LinkedHashSet,TreeSetHashSet:只有重写hashCode方法(此方法不能固定,应尽量减少重复值,相同对象hashCode值相同,再调用equals方法比较属性值),才能保证HashSet集合里面对象的唯一性...原创 2018-08-30 18:57:29 · 436 阅读 · 0 评论 -
java List集合总结
java集合是非常重要的一块,是每个java程序员必须掌握的内容,不仅要会使用这些集合的方法,还要对它们底层的数据结构实现原理有一定的了解。这里就简单归纳一下List集合中关键的几个点:List集合,有索引,元素可以重复,有序(存取一致)用LinkedList(底层由链表实现,增删快,查询修改慢)模拟栈(队列也可模拟)import java.util.LinkedList;p...原创 2018-08-30 13:09:18 · 267 阅读 · 2 评论 -
java Map集合总结
java这些集合的方法会很多,可能难以记下来,所以要学会查API文档,多查多用,才能熟悉和灵活运用。遇到不会的类或者方法什么的一定要查API文档,对java学习来说这是非常重要的学习方法。大二已经学完java的知识了,这些天统一整理总结一下,这次来归纳一下Map集合的知识。Map: * 将键映射到值的对象 * 一个映射不能包含重复的键 *...原创 2018-08-31 11:26:08 · 402 阅读 · 0 评论 -
用java Map集合和框架Collections工具类模拟斗地主的几个过程
java用集合模拟斗地主洗牌和发牌,看牌(要排好序)等过程排序图解:1.0(未排序)import java.util.ArrayList;import java.util.Collections;public class Test { /** * 分析: * 1,自己创建一个集合对象,将扑克牌存储进去 * 2,洗牌 * 3,发牌 * 4,看牌 *...原创 2018-08-31 15:36:30 · 232 阅读 · 0 评论 -
java设计模式之装饰模式
装饰设计模式就是对对象进行包装,实现接口扩展功能,并达到解耦的目的.常见的例子有BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter等1.获取被装饰类的引用2.在构造方法中传入被装饰类的对象3.对原有的功能进行升级扩展代码示例:public class Wrap { /** *...原创 2018-09-02 11:46:09 · 202 阅读 · 0 评论 -
关于java文件递归的几个问题
递归调用的弊端:不能调用的次数过多(7000次左右),容易导致栈内存溢出 递归调用的好处:不用知道循环的次数 构造方法是不能使用递归的。否则无限次创造对象。 递归不一定需要返回值(类似文件夹查找(直接打印值)不需要返回值)1.从键盘接收一个文件夹路径,统计该文件夹大小import java.io.File;import java.util.Scanner;public clas...原创 2018-09-02 21:28:01 · 234 阅读 · 0 评论 -
求出1000(n)的阶乘所有零和尾部零的个数
不用递归做:import java.math.BigInteger;public class Test { /** * @param args * 求出1000的阶乘所有零和尾部零的个数,不用递归做 */ public static void main(String[] args) { //所有0 demo1...原创 2018-09-02 21:46:37 · 416 阅读 · 0 评论 -
约瑟夫环问题java实现
约瑟夫环问题描述(改了一下背景,题目思想一致):编号为1,2,3...n的人一词围成一圈,从第k个人开始报数(从1开始),数到m的人退出。接着下一个人又从1开始报数,数到m的人退出,以此类推。问:剩下的人的编号是多少?样例1输入831输出7样例2输入631输出1import java.util.ArrayList;import ja...原创 2018-09-02 22:30:18 · 1141 阅读 · 0 评论 -
java 多线程总结
线程是程序执行的一条路径, 一个进程中可以包含多条线程多线程并发执行可以提高程序的效率, 可以同时完成多项工作多线程并行和并发的区别* 并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)* 并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。例如,图A为进程的并发性,图B为...原创 2018-09-03 12:44:06 · 165 阅读 · 0 评论 -
java设计模式之单例模式
单例设计模式:保证类在内存中只有一个对象。 * (1)控制类的创建,不让其他类来创建本类的对象。private * (2)在本类中定义一个本类的对象。Singleton s; * (3)提供公共的访问方式。 public static Singleton getInstance(){return s}1,私有构造方法,其他类不能访问该构造方法了2,声明一个引用3,对外提供...原创 2018-09-03 15:45:17 · 130 阅读 · 0 评论 -
java设计模式之工厂模式
1.简单工厂模式概述 * 又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例优点 * 客户端不需要在负责对象的创建,从而明确了各个类的职责缺点 * 这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护AnimalFactory.javapublic class AnimalFa...原创 2018-09-03 20:04:03 · 134 阅读 · 0 评论 -
java设计模式之适配器模式
* 在使用监听器的时候, 需要定义一个类事件监听器接口. * 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐. * 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可. 适配器原理: * 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的. * 适配器类需要定义成抽...原创 2018-09-03 20:54:01 · 146 阅读 · 0 评论 -
java网络编程总结
计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。网络编程 * 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。网络编程三要素:1.IP* 每个设备在网络中的唯一标识* 每台网络终端在网络中都有一个独立的地址,我...原创 2018-09-03 22:42:34 · 202 阅读 · 0 评论