- 博客(23)
- 收藏
- 关注
原创 内存溢出的几种原因和解决方法
JNI的滥用也会导致一些本地内存无法释放的问题,所以尽量避开JNI;不过在有必要的情况下可以对系统做一些优化,使得-Xss的值是可用的。上面第四种溢出错误,已经说明了线程的内存空间,其实线程基本只占用heap以外的内存区域,也就是这个错误说明除了heap以外的区域,无法为线程分配一块内存区域了,这个要么是内存本身就不够,要么heap的空间设置得太大了,导致了剩余的内存已经不多了,而由于线程本身要占用内存,所以就不够用了,说明了原因,如何去修改,不用我多说,你懂的。引用,使得这些对象不能被GC回收。
2023-11-07 15:30:51
3610
原创 用Java模拟银行排队场景
注意事项:本代码没有考虑客户是否能够等待的问题,即如果等候太久(超过自己的业务开展时间),应该退出队列,所以在实际场景中需要完善。模拟多个窗口同时服务,按照队列顺序分配给空闲窗口,计算每个客户服务时间,返回全局最长时间(即所有客户都被服务完毕所需的时间)。前言:该场景是模拟银行排队,其中窗口有3个,而且每个用户有不同的处理时间。创建多个不同处理时间的客户,并加入队列。输出每个客户处理情况。
2023-03-15 09:40:45
1122
原创 初识代理模式
代理模式前言 代理模式(proxy)是一种结构性设计模式,提供了对目标对象另外的访问方式:即通过代理对象访问目标对象这样做的好处:可以在实现目标对象方法的基础上,增强额外的功能操作,既可以扩展目标对象的功能。这里实现的编程思想:不要轻易的修改别人的方法或者代码,如果需要修改,则可以通过代理的方式来扩展方法。代理模式大致分为三大类:Real Subject :真实类,也就是被代理的类、委托类,用来实现真正功能的类。Proxy:代理类,将自身的请求用Real Subject对应的功能来实
2022-04-21 16:51:07
172
原创 java面试题
文章目录**深拷贝和浅拷贝的区别**:**怎么实现clone****java为什么要自动拆装箱呢**排序算法有哪些?冒泡排序选择排序插入排序希尔排序归并排序快速排序总结面试经常会味道的java知识(不定期更新):深拷贝和浅拷贝的区别:参考链接怎么实现clone参考链接java为什么要自动拆装箱呢因为Java是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。比如,在集合类中,我们是无法将int 、double等类型放进去的。因为集合的容器要求元素是Object类型。参考链接排序.
2022-02-17 18:46:09
1125
原创 netty
认识netty什么是nettynetty是一个利用java的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的API的客服端/服务器框架。netty与Tomact有什么区别netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,它的实质是一个基于http协议的web容器,但事netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和Tomcat最大的不同netty为什
2022-02-13 15:31:48
125
原创 List去重的方法
前言:在某些情况下我们需要对list去重,有人会问那为什么不一开始就使用Set或者LinkedHashSet去接收呢?因为我们可能会遇到历史遗留的问题,又或者说是方法返回值的类型只能是list,而我们又需要去重。那么有哪些方法呢循环去重使用for循环或者增强for循环去重public class ListDistinctExample { public static void main(String[] args) { List<Integer> list = ne
2021-12-07 10:44:51
5004
原创 oracle插入时间格式的数据
insert into table_name values(to_date(‘2000-11-26 00:04:47’,‘yyyy-mm-dd hh24:mi:ss’));
2021-11-23 11:46:17
1720
原创 redis的缓存穿透、缓存雪崩问题
**缓存穿透:**当客户端访问数据的时候,会先查看redis中的数据,如果redis中没有想要的数据,就会去数据库中查询,但是如果数据库中也没有对应的数据,并且客户端不停的访问不存在的数据就会造成了缓存穿透。解决方案:当首次访问redis和数据库时都不存在,那么就在redis中将该key的对应value设为""或者其他的标识值,防止再次访问数据库。**缓存雪崩:**当客户端访问数据是,突然redis中出现在大量的同一时间过期的key,如果访问量大的话,那么数据库的压力会很大,然后会崩溃。解决方案:可以
2021-11-15 14:30:51
725
原创 LocalDateTime的常用转换
LocalDateTime 与string 的相互转换public static void main(String[] args) { DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime time = LocalDateTime.now(); String localTime = df.format(time); .
2021-11-11 10:48:19
429
原创 List分片的5种方法
前言:当使用mybatis实现批量插入时遇到一个问题:当要插入的数据量很大时,就会产生一个很长的SQL,但是MySQL有一个限制最大长度,所以解决这个问题。解决这个问题有两个,1、设置mysql的最大长度;2、对数据进行分片,也就是对list分片。我们不是很清楚mysql最大的长度,那么使用第二种就是我们最优的解决方案了。使用 Google 的 Guava 框架实现分片首先在pom文件中导入依赖:<dependency> <groupId>com.google.guav
2021-11-10 11:41:40
3817
1
转载 java 生成CSV文件
/** * CSV文件生成方法 * @param head 文件头 * @param dataList 数据列表 * @param outPutPath 文件输出路径 * @param filename 文件名 * @return */ public static File createCSVFile(List<Object> head, List<List<Object>> dataList,
2021-10-26 17:09:07
4070
2
原创 追加写文件
public static String createFile(String filePath , String content) { File file = new File(filePath); FileOutputStream fos = null; OutputStreamWriter osw = null; try { if (!file.exists()) { boolean
2021-10-15 14:52:09
93
转载 JVM内存划分
jvm内存划分jvm内存组成介绍:堆(heap)和非堆(Non-heap)内存: 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码
2021-09-15 09:46:53
427
原创 linux 基础命令
linux 基础命令进程切换 cdcd 文件名 #进入文件cd .. # 退回上一级目录查看 lsls 查看当前目录下的所有目录和文件ls -a 查看当前目录下的所有目录和文件(包括隐藏的文件)ls -l 或 ll 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)ls /dir 查看指定目录下的所有目录和文件 如:ls /usr创建目录 mkdirmkdir aaa
2021-07-23 10:52:24
180
转载 springboot注解
springboot注解@SpringBootApplication这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootApplication。
2021-01-13 13:45:07
89
原创 springboot+springsecurity
springsecuritySpring Security是一个功能强大、高度可定制的身份验证和访问控制框架。它是保护基于spring的应用程序的事实上的标准。Spring Security是一个专注于向Java应用程序提供身份验证和授权的框架。与所有Spring项目一样,Spring Security的真正强大之处在于可以很容易地进行扩展以满足定制需求搭建步骤:springboot父级依赖 <parent> <groupId>org.springframework
2021-01-11 17:03:23
150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人