- 博客(19)
- 收藏
- 关注
原创 垃圾回收算法
一、如何确定某个对象是“垃圾”?这一小节先了解一个最基本的问题:如果确定某个对象是“垃圾”?既然垃圾收集器的任务是回收垃圾对象所占的空间供新的对象使用,那么垃圾收集器如何确定某个对象是“垃圾”?通过什么方法判断一个对象可以被回收了。在java中是通过引用来和对象进行关联的,也就是说如果要操作对象,必须通过引用来进行。那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。不失一般性,如果一个对象没有任何引用与之关联,则说明该对象基本不太可能在其他地方被使用到,那么这个对象就成为可被回收的
2022-05-28 14:24:21 58
原创 java集合
1. Arraylist与LinkedList区别可以从它们的底层数据结构、效率、开销进行阐述哈ArrayList是数组的数据结构,LinkedList是链表的数据结构。随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于索引(index)的数据结构,可以直接映射到。插入、删除数据时,LinkedList的效率比较高,因为ArrayList要移动数据。LinkedList比ArrayList开销更大,因为LinkedList的节点除
2022-05-25 17:07:44 144
原创 mysql面试题115道
文章目录1、MySQL中有哪几种锁?2、MySQL中有哪些不同的表格?3、简述在MySQL数据库中MyISAM和InnoDB的区别。4、MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?5、CHAR和VARCHAR的区别?6、主键和候选键有什么区别?7、myisamchk是用来做什么的?8、如果一个表有一列定义为TIMESTAMP,将发生什么?9、你怎么看到为表格定义的所有索引?10、LIKE声明中的%和\_是什么意思?11、列对比运算符是什么?12、BLOB和
2022-05-12 17:49:51 453
原创 java8新特性--Stream将List转为Map汇总
Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定key-value,value是对象中的某个属性值。Map<Integer,String> userMap1 = userList.stream().collect(Collectors.toMap(User::getId,User::getName));2、指定key-value.
2022-05-12 17:27:12 5279
原创 线程池七大参数
线程池七大参数分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler(1)corePoolSize:线程池中常驻核心线程数(2)maximumPoolSize:线程池能够容纳同时执行的最大线程数(3)keepAliveTime:多余的空闲线程存活时间(4)unit:keepAliveTime的时间单位(5)workQueue:任务队列,被提交但尚未执行的任务(6)thread
2022-05-12 16:53:55 2606
原创 Spring 中bean 的生命周期
在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使用Singleton模式产生单一实例,对单线程的程序说并不会有什么问题,但对于多线程的程序,就必须注意安全(Thread-safe)的议题,防止多个线程同时存取共享资源所引发的数据不同步问题。然而在spring中 可以设定每次从BeanFactory或ApplicationContext指定别名并取得Bean时都产
2022-05-12 16:50:52 61
原创 SpringBoot启动流程
springboot启动流程主要分为三个部分:第一部分进行SpringApplication的初始化模块,配置一些基本的环境变量、资源、构造器、监听器,第二部分实现了应用具体的启动方案,包括启动流程的监听模块、加载配置环境模块、及核心的创建上下文环境模块,第三部分是自动化配置模块,该模块作为springboot自动配置核心,在后面的分析中会详细讨论。在下面的启动程序中我们会串联起结构中的主要功能。具体如下:每个SpringBoot程序都有一个主入口,也就是main方法,main里面调用S
2022-05-12 16:47:49 454
原创 线程创建的三种方式和线程池创建的四种方式
线程创建的三种方式和线程池创建的四种方式1.1线程创建的方式java创建线程的三种方式:继承Thread类创建线程类 实现Runnable接口 通过Callable和Future创建线程1.2创建线程1.2.1继承Thread类(1)创建Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建了Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。pac
2022-05-05 01:08:14 160
原创 String类12个常用的方法
1. 用字符数组value创建一个String对象方法:public String(char[] value)实例:char[] value ={"a","b","c","d"};String str = new String(value);//相当于String str = newString("abcd")2. 用字符数组以x开始的n个字符创建一个String对象方法:public String(char chars[], int x, int n)实例:
2022-04-21 21:12:02 529
转载 MySQL和pgsql的区别
1.问题如果打算为项目选择一款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。你主要的问题可能是:哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高昂的。你希望一开始就选择正确。两个流行的开源数据库MySQL与PostgreSQL常常成为最后要选择的产品。对这两个开源数据库的
2022-04-19 14:23:11 7257
原创 结合获取ip和获取地址
@Overridepublic String setOperationLog(List<TbOperationLog> operationLog, HttpServletRequest request) { Date now = new Date(); //获取客户端登录 IP 地址 String ipAddress = IPUtil.getIPAddress(request); //通过 IP 获取登录地区 String addressByIp = AddressUti.
2022-04-14 19:45:39 48
原创 通过客户端登录 IP 获取登录地区
/** * @author luxinzhi * @Date: 2022/4/14 18:42 * * 通过客户端登录 IP 获取登录地区 **/public class AddressUtils { /** * 通过 IP 获取登录地址 * @param ip * @return */ public static String getAddressByIp(String ip) { // 参数ip //String ip = ".
2022-04-14 19:43:53 157
原创 java获取客户端登录的 IP 地址
/** * 获取客户端登录的 IP 地址 **/public class IPUtil { public static String getIPAddress(HttpServletRequest request) { String ip = null; //X-Forwarded-For:Squid 服务代理 String ipAddresses = request.getHeader("X-Forwarded-For"); if (ipAddress.
2022-04-14 19:40:39 555
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人