-
yexindonglai@163.com
2022-03-01 12:05
Java
874°
0
虽然说不管是静态变量还是静态方法,这些都是java基础的知识了,但我发现还是有很多人不懂静态的原理,静态的属性遵循以下规则:静态元素会在构造方法之前执行静态元素从上到下按顺序执行静态元素不需要初始化即可直接使用; 1、静态元素会在构造方法之前执行,举个例子就知道啦;我们看看下面的代码publicclassMain{static{System.out.println("1:静态代码块");}publicMain(){System.out.println("2:构造函数");}publicstaticvoidmain(String[]args){//初始化Mainmain=newMain();S
-
yexindonglai@163.com
2022-03-01 12:04
Java
1145°
0
字节码有什么用?1、对类的基本信息进行操作,可以新增、删除、修改类、属性和方法;2、应用场景:Lombok插件、AOP、动态修改class文件、网页上的在线执行java代码也是字节码实现的;2、Lombok插件就是用字节码实现,只用Data注解就可以给属性自动加上get和set方法4、常见的字节码操作类库: BCEL: 深入汇编底层语言进行类库操作; ASM: 轻量级字节码操作框架,直接涉及到jVM底层的操作和指令;高性能、高质量 CGLB:生成类库,基于ASM实现 javassist:开源框架,编辑和创建Java字节码的类库,我们这里主要介绍javassistjavassi
-
yexindonglai@163.com
2022-03-01 12:02
设计模式
947°
0
单例模式的特点 1、保证在jvm中只有一个实例; 2、应用场景:servlet、springioc(默认单例)、连接池、线程池、枚举、常量; 3、优点:节省内存,重复使用,方便管理 4、缺点:有线程安全问题; 单例模式的分类 1、懒汉式:将单例对象设为静态属性并加上final修饰符,初始化单例类时就立即创建对象实例,天生线程安全;调用率高 2、饿汉式:将单例对象设为静态属性并加上final修饰符,初始化单例类时不会立即创建对象实例,而是在使用的时候才创建实例,使用懒加载功能;此方式是线程不安全的 3、内部静态类方式:新建一个内部类,将单例对象设为静态属
-
yexindonglai@163.com
2022-03-01 12:01
设计模式
999°
0
工厂的指责就是制作产品,那么产品就可以理解为是我们的对象,而工厂就是为了实例化对象而对象的,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。 1、简单工厂模式简单工厂模式:也叫静态工厂模式,简单工厂模式相当于试试一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品的参数即可,相当于所有的汽车都是由一个厂里面生产出来的的,这个厂既能生产宝马,又能生产奔驰,还能生产其他的品牌的汽车,但是工厂的职责过重,而且当类型过多时不利于系统的扩展维护;简单工厂模式是不属于23种设计模式里面的;简单工厂模式示例代码packagec
-
yexindonglai@163.com
2022-03-01 12:00
Java
2687°
0
因公司有需求,需要根据用户输入的sql中获取到表名,网上查询到有个框架很实用,于是就小试牛刀,此框架是githup团队研发的一款sql解析框架,也是公认最好用的,不单可以解析sql,还可以用来拼接sql; 使用前先导入maven,目前最新版本已经更新到4.0了,童鞋们根据自己实际情况来选择相应版本<dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>1.2</version></dependency> 代码案例,因为我笔者这边只用到获取表名的功能,所以案例里
-
yexindonglai@163.com
2022-03-01 11:59
Java
754°
0
先看代码publicstaticvoidmain(String[]args){Integerone=127;Integertwo=127;System.out.println(one==two);Integerone_1=128;Integertwo_1=128;System.out.println(one_1==two_1);}打印结果如下哎~,这就奇怪了,都是数字,同样符号来判断,竟然会有不同的结果;当我看源码之后才知道,当我写下这段代码Integerone=127;但其实,在底层的代码其实是这样的Integerone=Integer.valueOf(127);这时候我们进去valueO
-
yexindonglai@163.com
2022-03-01 11:58
Java
699°
0
相信线程池这个东东只要只要是做过开发的童鞋们都熟悉,面试也是经常会问到的一个问题,用起来那是相当地简单啊,而且功能强劲,优化的又好,使用还去除了冗余的代码层级,提高了代码的可读性,创建线程池只需要用到四种newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。newSingleThreadExecutor 创建
-
yexindonglai@163.com
2022-03-01 11:57
Java
746°
0
什么是队列? 队列是一种特殊的线性表,遵循先入先出、后入后出的基本原则,一般来说,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,但是java的某些队列运行在任何地方插入删除;比如我们常用的LinkedList集合,它实现了Queue接口,因此,我们可以理解为 LinkedList就是一个队列;java队列特性队列主要分为阻塞和非阻塞,有界和无界、单向链表和双向链表之分;阻塞和非阻塞阻塞队列 入列(删除元素)时,如果元素数量超过队列总数,会进行等待(阻塞),待队列的中的元素出列后,元素数量未超过队列总数时,就会解除阻塞状态,进而可以继续入列; 出列(添加元素)
-
yexindonglai@163.com
2022-03-01 11:54
设计模式
1123°
0
因为版本不同,每次运行main方法进行测试的时候都会报以下错误: Error:java:Compilationfailed:internaljavacompilererror所以每次都得去设置里面改回来,用起来很是麻烦 但是现在有一种非常好用的方法,就是直接修改maven的配置文件,我们先看看使用的maven是哪个版本的,版本下会直接显示出maven的目录地址,先进入maven3目录下的conf目录,settings.xml文件就藏在这里;我们打开settings.xml文件,在<profiles>标签下新增profile,加入以下内容即可,默认是被注释掉的<profiles> <p
-
yexindonglai@163.com
2022-03-01 11:53
设计模式
965°
0
代理模式的定义: 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,可以理解为是托管的作用,就像手机里的欢乐斗地主一样,我可以自己决定打什么牌,也可以用托管的方式让电脑帮我决定打什么牌,这时候电脑就帮我做了很多事情,我只需要像葛优一样躺在那静静地看着就好了,这种托管的形式就叫做代理模式; 在电脑程序中,一个对象创建后交给代理模式去管理,除了程序原有的逻辑,代理类还会为这个对象增加额外的逻辑处理,简单地说就是在不改变原代码的情况下来达到扩展功能的目的,一个简单的代理模式结构示意图如下 代理模式使用场景 面向切面编程(springAOP)、事务管理、日志打印、权限控