Java从入门到放弃
文章平均质量分 59
帅气多汁你天哥
喜欢孤独的猿,热爱篮球,Java,LOL,创业,电影,睡觉,硬科幻,CNN,钢铁侠,军迷
展开
-
快速排序以及优化详解
为什么要用快速排序 场景 IP地址查询,例如1000w条IP,你的业务场景需要高频的进行数据查询,返回IP地址 这里防止杠精说 用线性回归预测IP地址 比二分法更高效 ,你你最牛批 用不着学快排这垃圾算法赶紧走 一般查询的话思路都是用二分法, 那么二分法的前提有三个, 1.数据是有序的 2. 数据中元素不能全部一样 3.长度不能为0 附加一个,如果数据中有重复元素,那么即使查询到 也不能确保是第几个相同元素 具体实现思路为 1.将 IP地址的4个0-255 十进制数 数转为十进制或者2进制 x1.x2.原创 2021-09-04 18:22:20 · 192 阅读 · 4 评论 -
Java IO实现文件管理,改名,删除,移动,复制粘贴等
import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern;原创 2021-01-29 22:36:23 · 205 阅读 · 0 评论 -
编程思维-菜鸟对九个主要设计模式的总结
设计模式 1.工厂模式 目的: 将用户与产品内部分离,不再直接创建实例对象,而是调用方法创建对象.同时,不关注创建过程而关注结果. 这样,如果需要扩展功能的时候,只需要修改对象的实现类中的构造方法,和factory工厂中return的对象类型,就能改变整个项目中的对象属性. 面对复杂性高的对象时更加方便,而简单对象没有必要使用这种模式 高内聚性 2抽象工厂模式 首先创建接口,并且面对接口实现多个类 目的分析:面对接口编程,可以对以后的扩展更友善,而不是写死的硬代码 为两个拥有实现类的接口创建抽象原创 2020-12-02 00:56:39 · 220 阅读 · 0 评论 -
HashMap&HashSet底层实现原理探究
1.1HashMap底层实现 HashMap底层是数组加链表的形式实现,根据K的hashcode找到数组的下标,然后将元素添加到链表中,在这里需要注意一点,hashmap底层数组的长度永远是2的次幂, Hash值的取值范围是-2147483648-2147483647,只要保证足够松散,那么就会降低哈希冲突,那么,40亿的取值范围太大,内存放不下的,需要做单独的优化,那么这个算法是什么,就是对数组长度%求模,取余数获得数组下标,但是计算机的求模效率很低,&的效率是最高的,那么这个公式就是这样:has原创 2020-12-21 12:25:58 · 354 阅读 · 0 评论 -
线程安全详解
概念: 什么是线程间的可见性? 一个线程对共享变量值的修改,能够及时的被其他线程看到 什么是共享变量? 如果一个变量在多个线程的工作内存中都存在副本,那么这几个副本就是这几个线程的共享变量 什么是Java内存模型(Java Memory Model) jmm描述了java程序中各种变量(线程共享变量)的访问规则,以及在巨魔中将变量储存到内存和从内存中读取出变量这样的底层细节 规则1: 所有变量都储存在主内存中 每个线程都有自己的独立的工作内存,里面保存该线程使用到的变量的副本(主内存中该变量的的一份拷贝)原创 2020-12-22 20:21:10 · 114 阅读 · 0 评论 -
约瑟夫问题Java标准实现
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class Test { public static void main(String[] args) { long startTime = System.currentTimeMillis(); // 数据准备 List<Integer> nums =.原创 2020-12-21 13:08:46 · 171 阅读 · 0 评论 -
JAVA单例模式_通俗易懂详解
1.懒汉模式 私有化属性,类外不可访问,静态属性,类外直接访问,类内直接访问静态成员 class A{ private A(){} private static A a=null; public static A getInsatance(){ if(a==null){ a=new A(); } return a } } 2.恶汉模式 class A{ private A(){} private static A a= new A(); public static A getInstance(){ retu原创 2020-12-22 16:24:14 · 144 阅读 · 0 评论 -
Java学习习惯总结与建议分享
学习系统 前言-昨天复习了一下java的知识,发现之前学的比如短路与,和与,短路或和或的区别,自己之前并不知道.本以为自己知识掌握的还可以,但是却发现其实差的很多,这一点半点的差距并不能只靠报错和不熟悉的知识点复习来解决,而是系统性的调整着手 1.复习 首先学习最重要的是复习 每天最少需要2个小时的完整时间复习之前的基础知识 半个小时复习以前不熟悉的知识点 另外一个小时系统性复习之前讲过的知识 最后半个小时复习当天讲的和昨天讲的知识 效果还没有确定,但是先进行一周的尝试,看看效果如何 2.态度 其次是自己决原创 2020-12-05 11:13:28 · 203 阅读 · 2 评论 -
Java从入门到放弃-第一章:Java是什么
如何阅读本书 本书希望适合所有人阅读学习,所以每个章节分为三个部分:入门,熟练,精进.因为本人学习的时候发现每次在学一遍Java都感觉之前没学过一样的感觉,所以希望通过这种方式,来适应各个阶段的程序猿~ Java是什么 入门 1.1Java是如何诞生的 首先相信就算是零基础的入门者,也大概知道电脑,计算机,程序大概是个什么东西了.那么我们来聊聊Java是什么. 20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产原创 2020-12-02 00:36:08 · 238 阅读 · 0 评论 -
Java从入门到放弃-序言
Java从入门到放弃 前言 本人希望由浅及深的探讨java的底层原理,和编程思想,与大家一起学习提升对程序语言的认知.由于自己是理工科出身,所以对底层原理往往非常感兴趣.那么就跟我一起学习Java吧.我会将JavaSE拆分成每个章节进行讲解,让初学者入门,让入门者’’精尽’’.那么我们的从入门到放弃就正式开始了. Java概述 那么我们要学习一个自己陌生的东西的时候,首先要对其有一个客观认识,否则会很难接受晦涩难懂的信息. 自从冷战结束,人类进入信息时代以来,计算机是用来服务于人类的,那么CPU的底层原理大原创 2020-12-02 00:30:08 · 286 阅读 · 0 评论