java
文章平均质量分 66
zhangyingchengqi
学无止境。
展开
-
IDEA tomcat Catalina log 乱码
idea中乱码的设置原创 2022-09-07 16:14:24 · 523 阅读 · 0 评论 -
解决Flume数据采集中出现的几个问题
22/06/23 12:08:58 ERROR hdfs.HDFSEventSink: process failed sinkjava.lang.NullPointerException: Expected timestamp in the Flume event headers, but it was null原创 2022-06-23 12:50:23 · 1564 阅读 · 0 评论 -
xmind文件大,导致运行缓慢且无法保存
我的一个xmind文件体积十分大.如下:在打开此文件后,对它编辑时,出现以下问题:1.编辑十分的慢,表现在选定一个编辑框后,要输入文字十分困难,卡顿.2.保存文件慢,而且会出现保存时内存溢出的问题.用任务管理器查看此xmind进程占用了接近1G的内存. 考虑是软件内存配置的问题。到xmind的安装目录中查看配置文件 ,发现xmind是用java语言开发的软件,它的配置文件 xmind.ini中有关于虚拟机内存配置的选项.xmind.ini它的配置项中原配...原创 2021-10-12 10:46:13 · 9797 阅读 · 6 评论 -
面试题十_设计模式相关
77.设计模式参考文章:https://blog.csdn.net/weixin_43122090/article/details/10546222678.设计模式的六大原则参考文章http://www.uml.org.cn/sjms/201211023.asp79. JDK中使用的设计模式参考文章: https://blog.csdn.net/gtuu0123/article/details/6114197 https://www.cnblo...原创 2021-08-20 10:34:46 · 602 阅读 · 0 评论 -
面试题(八)
22.Java中如何实现代理机制(JDK、CGLIB)JDK动态代理:代理类和目标类实现了共同的接口,用到InvocationHandler接口。CGLIB动态代理:代理类是目标类的子类,用到MethodInterceptor接口。48.Java类加载器及如何加载类(双亲委派)阅读文章:https://www.ibm.com/developerworks/cn/java/j-lo-classloader/(推荐)深入理解Java类加载器(1):Java类加载原理解析 - Jack Zhou的专原创 2021-08-12 08:14:19 · 409 阅读 · 0 评论 -
面试题(七)
35.什么叫守护线程,用什么方法实现守护线程 守护线程拥有自动结束自己生命周期的特性,而非守护线程不具备这个特点。 .setDaemon(true)36.Java线程池技术及原理线程池(ThreadPool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。37.java并发包c...原创 2021-08-10 13:51:02 · 288 阅读 · 1 评论 -
面试题(六)
23.多线程的实现方式1)继承Thread类2) 实现Runnable接口3) 实现 Callable 接口。 相较于实现 Runnable 接口的方式,方法可以有返回值,并且可以抛出异常,执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果。 FutureTask 是 Future 接口的实现类24.线程的状态转换25. 如何停止一个线程线程自然终止:自然执行完或抛出未处理异常 使用stop方法强行终止线程,但线...原创 2021-08-09 08:56:17 · 522 阅读 · 0 评论 -
面试题(五)
72.Tomcat,Apache,JBoss的区别Apache:HTTP服务器(WEB服务器),类似IIS,可以用于建立虚拟站点,编译处理静态页面,可以支持SSL技术,支持多个虚拟主机等功能。Tomcat:Servlet容器,用于解析jsp,Servlet的Servlet容器,是高效,轻量级的容器。缺点是不支持EJB,只能用于java应用。Jboss:应用服务器,运行EJB的J2EE应用服务器,遵循J2EE规范,能够提供更多平台的支持和更多集成功能,如数据库连接,JCA等,其对Servlet的支持是通过原创 2021-08-08 09:51:29 · 387 阅读 · 0 评论 -
面试题(四)
Statement和PreparedStatement之间的区别关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高详解:1、PreparedStatement:表示预编译的 SQL 语句的对象。 接口:public interface PreparedStatement extends Statement之间的继承关系 SQL 语句被预编译并存储在 Prepa...原创 2021-08-08 09:42:31 · 305 阅读 · 0 评论 -
面试题(三)
39.Java中的NIO,BIO,AIO分别是什么BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/原创 2021-08-05 09:05:55 · 397 阅读 · 0 评论 -
JVM中常见的线程种类
线程 所属 说明 Attach Listener JVM Attach Listener线程是负责接收到外部的命令,而对该命令进行执行的并且吧结果返回给发送者。通常我们会用一些命令去要求jvm给我们一些反馈信息,如:java -version、jmap、jstack等等。如果该线程在jvm启动的时候没有初始化,那么,则会在用户第一次执行jvm命令时,得到启动。 Signal Dispatcher JVM 前面我们提到第一...原创 2021-08-01 10:10:38 · 695 阅读 · 0 评论 -
面试题集一
1.面向对象和面向过程的区别面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过程低2.Java的四个基本特性(抽象、封装、继承,多态)抽象:就是把现实生活中的某一类东西提取出来,用程原创 2021-08-01 08:52:50 · 766 阅读 · 0 评论 -
在junit 测试时,加入@Transactional注解
做测试的时候在类上加 @Transactional纾解是为了防止对数据进行污染,使用这个注解完成功能测试又不影响原有数据,对于测试库和开发库没有分开的情况下是一个很不错的选择.如以下测试代码:@RunWith(SpringRunner.class)@SpringBootTestpublic class ProductCategoryRepositoryTest { @Autowired private ProductCategoryRepository pcr; @Test @Transac原创 2021-04-16 16:49:58 · 2380 阅读 · 1 评论 -
并发编程(三) - 重排序,happens-before原则,顺序一致性
重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。上一篇文章中已经介绍了从Java源代码到最终实际执行的指令序列,会分别经历下面3种重排序:1属于编译器重排序,2和3属于处理器重排序。 这些重排序可能会导致多线程程序出现内存可见性问题。在单线程程序中,对存在控制依赖的操作重排序,不会改变执行结果(这也是as-if-serial语义允许对存在控制依赖的操作做重排序的原因);但在多线程程序中,对存在控制依赖的操作重排序,可能会改变程序的执行结果。1.数据依...原创 2021-02-08 18:30:13 · 776 阅读 · 0 评论 -
并发编程(二) - JMM(java内存模型)
java线程间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员.1. 并发编程的关键问题在并发编程中,需要处理两个关键问题: 线程之间如何通信及线程之间如何同步? 线程之间通信机制有两种: 共享内存、消息传递。1.1.通信是指线程之间以何种机制来交换信息1.1.1共享内存的通信机制在共享内存的并发模型里, 线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。1.1.2 消息传递的通信机制在消息传递的并发模型里,线程之间没用公共状态,线程之间...原创 2021-01-17 13:06:57 · 499 阅读 · 1 评论 -
并发编程问题
并发编程的目的是为了让程序运行得更快,但并不是启动更多的线程就能让程序最大限度并发执行。因为这里涉及到上下文切换问题,死锁问题,及受限于硬件和软件的资源限制问题。1. 上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒(ms). CPU通过时间片分配算法来循环执行任务...原创 2021-01-11 16:37:32 · 437 阅读 · 0 评论