
java
文章平均质量分 65
站在风口的猪猪侠
这个作者很懒,什么都没留下…
展开
-
设计模式 - 工厂模式
工厂模式工厂模式可分为简单工厂、工厂方法和抽象工厂模式。简单工厂简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式.角色Factory:工厂角色工厂角色负责实现创建所有实例的内部逻辑Product:抽象产品角色抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口ConcreteProduct:具体产品角色具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。类图原创 2022-05-08 11:22:52 · 479 阅读 · 0 评论 -
三个线程交替打印字符
三个线程分别打印"A"、“B”、“C”,现在需要完成三个线程交替打印,10个ABCpublic class Main { private static AtomicInteger index = new AtomicInteger(0); private static AtomicInteger epoches = new AtomicInteger(0); static Thread A = new ThreadA(); static Thread B = new Thr原创 2022-03-29 21:06:20 · 518 阅读 · 0 评论 -
为啥HashMap的长度一定是2的n次方
直接说原因:计算方便hash分布更均匀计算方便当HashMap长度为2的次方时,等式 hash(key) & (length - 1) == hash(key) % length 成立解释:hash(key) % length 得到的结果 hash(key) - (hash(key) / length) * length因为HashMap长度为2的次方,所以length - 1 的值转成二进制为全1的形式(2的次方一定是 1000…… 这种形式,再减去1,剩下的一定都是1,没有原创 2021-08-14 17:36:01 · 999 阅读 · 0 评论 -
两个线程交替打印helloworld
美团面试题:用2个线程交替打印helloworld:t1: ht2: et3: lt4: lt5: ot6: w……代码import java.util.concurrent.atomic.AtomicInteger;public class PrintHelloWord{ private static AtomicInteger index = new AtomicInteger(0); private static String s = "helloWor.原创 2021-08-29 12:22:30 · 472 阅读 · 0 评论 -
java并发编程的任务
并发编程的挑战上下文切换任务从保存到再加载的过程就是一次上下文切换单核处理器通过给每个线程分配CPU时间片来实现多线程减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。死锁避免死锁避免一个线程同时获取多个锁避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况资源限制的挑战概念资源限制是指在原创 2021-05-31 15:40:59 · 225 阅读 · 0 评论 -
java基础面经
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。Java中会存在内存泄露吗?答:Java语言也存在内存泄露问题。Java语言提供了垃圾回收机制,它可以自动回收那些不再被使用的对象,以释放内存空间,..原创 2021-04-23 22:27:45 · 169 阅读 · 0 评论 -
Java面向对象特性
对象的概念对象与真实世界的实体一一对应,对象有一下特点:对象具有属性和行为对象具有唯一性对象都是某个类别的实例面向对象与面向过程的区别面向过程:站在过程的角度思考问题,强调功能行为,功能的执行先后顺序,通过每个一个函数把这些步骤一步一步实现,使用的时候依次调用函数就可以。最小的程序单元是函数,整个软件系统是由一个个函数组成。面向对象:站在对象的角度思考问题,把多个功能合理的放到不同的对象里,强调具备功能的是对象。面向对象最小的程序单元是类。两者的优缺点:面向过程设计不够值观,与人类的思原创 2021-04-23 16:17:51 · 164 阅读 · 0 评论 -
try_catch_finally执行顺序
已知:try/catch-finally 最后函数节数肯定会执行finally内容。如果try中没有异常,不会执行catch,如果有异常,先执行catch.代码1public class try_catch_finally { static int res = 0; public static void main(String[] args) { System.out.println(add()); // 步骤5 } public static int原创 2021-03-27 17:11:05 · 252 阅读 · 0 评论 -
JDBC学习(三)之PreparedStatement使用
PreparedStatement是什么?PreparedStatement叫预编译声明,是Statement的子接口PreparedStatement作用防SQL攻击 提高代码的可读性、可维护性 提高效率这里通过一个例子来说明什么是SQL攻击public static void main(String[] args) throws ClassNotFoundExce...原创 2019-03-22 16:54:53 · 425 阅读 · 0 评论 -
Java基础:泛型及其通配符
泛型:就是参数化类型泛型介绍泛型类:具有一个或多个类型变量的类class A<T>{}在创建泛型类实例的时候需要给其类型变量赋值:A <String> a=new A<String>();注意:为了兼容旧版本,在建立实例时,可以不给类型变量赋值,但是会有警告!泛型方法:具有一个或多个类型变量的方法,称之为泛型方法。cla...原创 2019-04-14 23:28:14 · 262 阅读 · 0 评论 -
Java中枚举基础
简介枚举,是java中的一种比较特殊的class,它继承了java.lang.Enum类,所以只能实现接口。枚举内的元素默认被public static final修饰。枚举示例enum WorkDay { MON,TUEWED,THU,FRI,SAT,SUM;}public class EnumTest { public static void main...原创 2019-09-17 18:21:31 · 196 阅读 · 0 评论 -
Integer参数传递问题
今天看到一个Java知识点:JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递。这句话的意思:Integer作为参数传递时引用传递。但是我测试了一下,发现Integer作为参数传递,没有设置返回值。Ineger的结果不变public class test{ public void add(Integer i){ i=i+3; }...原创 2019-03-14 16:20:10 · 10561 阅读 · 13 评论 -
Java中this和super的总结
今天参加一个Java笔试,遇到以到this()和super()是不是必须放在函数的第一行的问题,我表示不知道。回来后查了一些资料,整理记录一下。1、加点(this./super.)this:代表当前对象,加点可以调用当前对象中的方法和属性。比较常用的是为了区分形参和成员名相同情况public class test { private String name; ...原创 2019-03-14 14:56:32 · 237 阅读 · 0 评论 -
JavaWeb过滤器初识
JavaWeb三大组件Servlet Listener Filter(过滤器)过滤器作用过滤器会在服务器启动时创建,在一组资源(jsp、servlet、css、html等等)之前执行。拦截请求,判断决定是否让请求到达目标资源。虽然在servlet中也可以判断是否接收请求,但是只能判断各自servlet的请求,而且需要在每个接收请求的servlet中重复写判断代码。而fi...原创 2019-04-04 14:32:53 · 173 阅读 · 0 评论 -
JavaWeb过滤器——案例(一)
案例1:分IP统计网站的访问次数分析统计不同的IP访问网站的次数,需要在所有资源中执行,这个工作可以放在Filter中。使用Map<String,Integer>来装载统计数据,整个网站只需要一个map,并存放在ServletContext中。Map在监听器中创建(使用监听器:ServletContextListener,在服务器启动时创建,并存储到ServletCon...原创 2019-04-04 18:40:52 · 1471 阅读 · 0 评论 -
Java基础:注解
注解注解初识什么是注解定义注解注解的作用目标功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入注解初识什么是注解语法...原创 2019-04-16 13:43:34 · 205 阅读 · 0 评论 -
Java基础:类加载器
概述什么是类加载器把.class文件加载到JVM的方法区中,变成一个Class对象得到类加载器Class的方法:getClassLoader()类加载器的分类(1)引导:负责加载类库(2)扩展:负责加载扩展jar包(3)系统:负责加载应用下的class,包含开发人员写的类,和第三方的jar包。(即classpath下的类)分级:引导是扩展的上级,扩展是系统的上级类的委托机制...原创 2019-04-17 10:48:35 · 187 阅读 · 0 评论 -
Java进阶:动态代理
动态代理概念动态代理:在运行时,动态的创建一组指定的接口的实现类对象。它的作用和装饰者模式比较相似,但是比装饰者模式要灵活:装饰者模式:增强目标固定,增强内容可变;动态代理:增强目标可变,增强内容可变。使用方法在Java中使用动态代理,主要是学习InvocationHandler接口和Proxy类的使用动态代理实例获取方法Object proxyObject = Proxy.newPr...原创 2019-04-17 00:41:32 · 249 阅读 · 0 评论 -
Hibernate基础应用
HibernateHibernate概述Hibernate 版本区别Hibernate 应用Hibernate 配置文件Hibernate 核心接口查询方式HQL查询Criteria查询HQL多表查询hibernate 查询策略立即查询延迟查询类级别延迟关联级别延迟批量抓取hibernate开发实例环境搭建Hibernate概述Hibernate对JDBC进行了轻量级的封装,程序员可以通过面向...原创 2019-06-08 21:38:51 · 538 阅读 · 0 评论 -
java中的 == 号判断,为什么基本数据类型就是比较内容,而对象则是比较地址?
基本类型都是存在栈里面的,Int a=3;当你int b=3的时候,jvm会干嘛呢?首先,它会去栈里面找是不是已经有一个数据为3了。如果不是的话新建一个地址,是的话,就把b指向这个地址,所以对于基本类型来说,当值相同的时候,地址也是相同的,所以当你对基本类型==的时候,内容相同的肯定返回的是true。。因为实质上,他们的地址也是相同的但是对于其他类型,都是存在堆里面的动态分配内存,所以每一次新建...转载 2019-03-14 16:50:11 · 1008 阅读 · 1 评论 -
Java 基本数据类型 及 == 与 equals 方法的区别
转自:https://www.cnblogs.com/Latiny/p/8099581.htmlJava数据类型分为基本数据类型与引用数据类型。 1 基本数据类型byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0short:短整型,2个字节(16 bit),取值范围-32768~32717,默认值0int:整型,用于存...转载 2019-03-14 18:00:39 · 229 阅读 · 0 评论 -
Java中参数传递问题
接触java有一段时间了,但是一直对于Java的参数传递很困惑,今天整理一下:java中参数传递分为两种:值传递、引用传递(又称为地址传递)JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递值传递:比较好理解,就是传递的是参数的值的拷贝。所以在函数内部无论怎么操作,外部的变量都不会改变。public class test{ public void a...原创 2019-03-14 18:17:34 · 181 阅读 · 0 评论 -
JavaWeb监听器
Java三大组件Servlet Listener(监听器) Filter什么是监听器三个特点监听器是一个接口,内容由我们来实现 需要注册,例如注册到按钮上 监听器中的方法,会在特殊的事件发生时被调用观察者模式事件源:小偷 事件:偷东西 监听器:警察;方法:抓捕javaWeb中的监听器事件源:三大域ServletContext生命周期监听:Serv...原创 2019-04-03 21:04:56 · 271 阅读 · 0 评论 -
Java中国际化
什么是国际化国际化就是可以把页面中的中文变成英文。例如登陆表单理解国际化对于页面中的文字,不能使用硬编码把页面写死。如下面代码<html> <head> <title>登陆</title> </head> <body> <h1>登陆</h1><b...原创 2019-04-02 21:42:46 · 481 阅读 · 0 评论 -
BaseServlet工具类
写一个项目往往需要N多个Servlet,而且一个servlet只有一个doGet或doPoset.如果项目比较大,Servlet的数量会比较惊人。为了避免Servlet数量过多,我们可以在一个Servlet中写多个接收请求的方法。具体思路:Servlet中处理请求的方法是service()方法,这说明我们需要让service()方法去调用其他方法。例如调用add()、mod()、del()、a...原创 2019-03-29 10:06:07 · 347 阅读 · 1 评论 -
ThreadLocal初识
首先说一下线程:Thread->一个人,Runnable->一个任务每次有任务,只需要将任务交给人来做,使用start()进行开始就行。ThreadLocal 方法:void set(T value):保存值; T get():获取值; void remove():移除值实例代码@Test public void func1() thr...原创 2019-03-27 13:02:44 · 128 阅读 · 0 评论 -
JDBC学习(二)之JDBC对象介绍
JDBC对象介绍JDBC中的主要类DriverManager; Connection; Statement; ResultSet;DriverManager:Class.forName(“com.mysql.jdbc.Driver”);//注册驱动 String url = “jdbc:mysql://localhost:3306/mydb1”; String userna...原创 2019-03-22 15:47:48 · 165 阅读 · 0 评论 -
JDBC学习(一)之JDBC初识
JDBC是什么?JDBC(java database connection):Java数据库连接,就是使用Java语言来操作数据库。是sum公司提供的一套接口,需要不同的数据库来实现这个接口。连接的基本步骤加载驱动类Class.forName(驱动类名);通过向DriverManager传入参数:数据库url、用户名、密码,来获得连接对象Connection cn= D...原创 2019-03-22 09:42:38 · 226 阅读 · 0 评论 -
Object.hashCode()方法与System.identityHashCode(object)的区别
identityHashCode(object):1.返回默认的哈希值(其实就是本地方法的值,物理内存产生的值),不论类是否重写了hashCode()方法2.是属于System类里面的static方法object.hashCode()一个类默认会继承或间接继承Object类,如果没有重写hashCode方法,则返回的值和identityHashCode()一样的值,否则根据从写的逻辑。...原创 2019-03-14 19:09:52 · 300 阅读 · 0 评论 -
Object的9大方法
转自:https://www.cnblogs.com/zhousysu/p/5483795.html1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要...转载 2019-03-14 18:27:42 · 473 阅读 · 0 评论 -
java Map根据value排序
转自:https://www.cnblogs.com/binz/p/6671917.html通用方式public class MapUtil { public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) { ...转载 2019-07-13 14:55:12 · 276 阅读 · 0 评论