
面试
文章平均质量分 70
wuzhenwei0419
这个作者很懒,什么都没留下…
展开
-
OOMError总结
OOM结构StackOverflowErrorjava.lang.OutOfMemoryErrorjava.lang.OutOfMemoryError: Java heap spacejava.lang.OutOfMemoryError: GC overhead limitjava.lang.OutOfMemoryError: Direct buffer memory结构StackOverf...原创 2019-06-12 16:06:51 · 493 阅读 · 0 评论 -
深入理解JVM--垃圾收集器
深入理解JVM--垃圾收集器前言新生代收集器Serial收集器ParNew 收集器并发和并行Parallel Scavenge 收集器老年代收集器Serial Old收集器Parallel Old收集器CMS收集器优点缺点G1收集器特点横跨整个堆内存建立可预测的时间模型避免全堆扫描——Remembered SetG1收集器的运作步骤总结前言如果说收集算法是内存回收的方法论,那么垃圾收集器就是内...转载 2019-01-10 16:40:01 · 199 阅读 · 0 评论 -
es与solr的区别
es与solr的区别背景区别各自集群背景它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】开发语言:java语言开发诞生时间:Solr :2004年诞生。Es:2010年诞生。Es 更新【功能越强大】区别当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于so...原创 2019-05-29 10:35:53 · 8716 阅读 · 0 评论 -
死锁编码及定位分析
死锁编码及定位分析产生死锁的原因代码示例问题定位产生死锁的原因死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入自锁。代码示例public class DeadLockDemo { public static void...原创 2019-06-06 15:06:33 · 134 阅读 · 0 评论 -
阻塞队列
阻塞队列BlockingQueue种类:BlockingQueue核心方法SynchronousQueue(阻塞同步队列)在多线程领域: 所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用是当阻塞队列是空时,从队列中获取元素的操作将会被阻塞试图从空的阻塞队列中获取元素的线程将会被阻塞,知道...原创 2019-05-31 16:45:22 · 132 阅读 · 0 评论 -
线程池使用
线程池七大参数七大参数线程池流程生产环境中的选择拒绝策略合理配置线程池cpu密集型IO密集型七大参数corePoolSize:线程池中的常驻核心线程数maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值必须大于等于1。keepAliveTime:多余的空闲线程的存活时间。当线程池数量超过corePoolSize时,当空闲时间达到keepAliveTime值时,多余空...原创 2019-06-05 18:03:55 · 123 阅读 · 0 评论 -
MyBatis中当实体类中的属性名和表中的字段名不一样怎么办
MyBatis中当实体类中的属性名和表中的字段名不一样怎么办解决方案:解决方案:写sql语句时起别名在MyBatis的全局配置文件中开启驼峰命名规则<configuration> <settings> <!-- 开启驼峰命名规则 ,可以将数据库中的下划线映射为驼峰命名 例如:last_name可以映射为lastName -->...原创 2019-05-28 17:36:53 · 10801 阅读 · 1 评论 -
简单的谈一下SpringMVC的工作流程
简单的谈一下SpringMVC的工作流程@Controllerpublic class SpringMVCHandler { public static final String SUCCESS="success"; //1.简单的谈一下SpringMVC的工作流程 //处理模型数据方式一:将方法的返回值设置为ModelAndView @RequestMapping("/t...原创 2019-05-28 17:25:19 · 459 阅读 · 0 评论 -
SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理
SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理解决POST请求中文乱码问题解决GET请求中文乱码问题解决POST请求中文乱码问题修改项目中web.xml文件<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>o...原创 2019-05-28 17:03:48 · 3286 阅读 · 3 评论 -
Spring支持的常用数据库事务传播属性和事务隔离级别
Spring支持的常用数据库事务传播属性和事务隔离级别代码事务的传播行为简介Spring中七种事务传播行为隔离级别脏读、不可重复读、幻读各个隔离级别解决并发问题的能力各种数据库产品对事务隔离级别的支持程度总结代码@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.READ_COMMITTED)事务的属性:...原创 2019-05-28 16:36:35 · 240 阅读 · 0 评论 -
voletile
voletile 是JVM提供的一个轻量级的同步机制1. 保证可见性(多个线程操作数据时,彼此不可见)2. 不保证原子性 (程序不可分割、完整性,要么成功,要么失败)3. 禁止命令重排 //此方法是用来测试多个线程执行完之后 再执行这段代码之后的主线程 //main 方法中的一个方法 while(Thread.activeCount > 2){ T...原创 2019-06-06 15:40:04 · 224 阅读 · 0 评论 -
CAS
CAS是什么?CAS的全程为Compare-And-Swap,它是一条CPU并发原语它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的CAS并发原语体现在JAVA语言中就是sun.misc.Unsafe类中的各个方法。调用Unsafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令。这是一种完全依赖于硬件的功能,通过它实现了原子操作。再次强调,由于CAS...原创 2019-06-06 15:42:36 · 115 阅读 · 0 评论 -
JAVA集合类
JAVA集合类 ArrayListHashMapHashSetArrayListList<String> list = new ArrayList(); List<String> list = new CopyOnWriteArrayList<>(new ArrayList()); List<String> list = Collection...原创 2019-06-06 15:48:46 · 116 阅读 · 0 评论 -
深入理解JVM--引用类型
深入理解JVM--引用类型概述强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference)虚引用(PhantomReference)概述JDK1.2以后,Java对引用的感念进行了扩充,将引用分为强引用、软引用、弱引用、虚引用四种(引用强度逐渐减弱)强引用(StrongReference)以前我们使用的大部分引用实际上都是强引用,这是使用...原创 2018-12-28 10:38:36 · 243 阅读 · 0 评论 -
线程池
线程池特点线程池的体系结构工具类 : ExecutorsExecutorService.newFixedThreadPool()ExecutorService newCachedThreadPool()ExecutorService newSingleThreadExecutor()ScheduledExecutorService newScheduledThreadPool()示例代码线程池:...原创 2019-06-04 18:04:07 · 116 阅读 · 0 评论 -
JVM参数类型及常用参数
JVM参数类型及常用参数JVM参数类型标配参数X参数XX参数JVM默认配置参数如何查看一个正在运行中的java程序,它的某个jvm参数是否开启?具体指是多少常用的JVM参数JVM参数类型标配参数java -versionjava -helpjava -showversionX参数-Xint 解释执行-Xcomp 编译执行-Xmixed 混合执行(先编译后执行)XX参数...原创 2019-06-10 17:13:21 · 1092 阅读 · 1 评论 -
几种生产者消费者的实现
sychronized/* * 生产者和消费者案例 * 有可能出现的问题;添加或创建数据的线程叫生产者线程,删除和销毁数据的线程为消费者线程 * 由于多线程环境中,有可能存在生产者线程过快 导致数据丢失,或者消费者过快 导致消费不到数据,这时候就需要加入【等待唤醒机制】 * 生产者线程过快 达到条件就需要wait(),消费者线程 没有数据消费也需要wait(); */public c...原创 2019-06-04 11:48:45 · 121 阅读 · 0 评论 -
JVM垃圾回收的时候如何确定垃圾,什么叫GCRoots
JVM垃圾回收的时候如何确定垃圾,什么叫GCRoots什么是垃圾如何判断垃圾可以被回收引用计数法枚举根节点做可达性分析(根搜索路径)GC roots对象什么是垃圾简单的说就是内存中已经不再被使用到的空间就是垃圾如何判断垃圾可以被回收java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。引用计数法一个简单的方法是通过引用计数来判断一个对象是否可以回收。简单说,给对象中添加一个...原创 2019-06-10 11:59:53 · 713 阅读 · 0 评论 -
GitHub的常见操作
GitHub的常见操作常用词含义in关键词限制搜索范围starts或fork数量关键词去查找awesome加强搜索高亮显示某一行代码项目内搜索搜索某个地区内的大佬常用词含义watch: 会持续受到该项目的动态fork: 复制某个项目到自己的Github仓库中star: 可以理解为点赞clone: 将项目下载至本地follow: 关注你感兴趣的作者,会收到他们的动态in关键词限制搜...原创 2019-06-14 14:39:31 · 125 阅读 · 0 评论 -
生产环境服务器变慢,诊断思路和性能评估
生产环境服务器变慢,诊断思路和性能评估整机 : topCPU: vmstat内存: free硬盘: df 查看字盘剩余空间磁盘IO: iostat网络IO: ifstatCPU过高,思路和定位整机 : top[root@tesm-jenkins-16-32 ~]# toptop - 15:05:02 up 38 days, 22:30, 1 user, load average: 0....原创 2019-06-13 17:40:07 · 1153 阅读 · 0 评论 -
如何选择垃圾收集器
如何选择垃圾收集器组合的选择新生代与老年代收集器的对应关系JAVA SpringBoot微服务的生产部署和调优组合的选择单CPU或小内存,单机程序-XX:+UseSerialGC多CPU,需要最大吞吐量,如后台计算型应用-XX:+UseParalellGC或者-XX:+UseParalellOldGC多CPU,追求低停顿时间,需快速响应如互联网应用-XX:+UseParNewGC或...原创 2019-06-13 14:30:09 · 1254 阅读 · 0 评论 -
CountDownLatch/CyclicBarrier/Semaphore
Zookeeper与Kafka集群搭建CountDownLatchCyclicBarrierCountDownLatch 和 CyclicBarrier 的区别SemaphoreCountDownLatch闭锁,在完成某些运算是,只有其他所有线程的运算全部完成,当前运算才继续执行让一些线程阻塞,直到另一些线程完成一系列操作后才被唤醒CountDownLatch主要有两种方法,当一个或多个线...原创 2019-05-29 16:45:30 · 162 阅读 · 0 评论 -
传值问题
class Person{ int age; String name; public Person(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { ...原创 2019-06-06 15:56:02 · 254 阅读 · 0 评论 -
独占锁(写锁)/共享锁(读锁)/互斥锁
独占锁(写锁)/共享锁(读锁)/互斥锁独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁。共享锁:指该锁可被多个线程所持有。对ReentrantReadWriteLock其读锁是共享锁,其写锁是独占锁读锁的共享可保证并发读是非常高效的,读写,写读,写写的过程是互斥的/** * 多个线程同时读一个资源类没有任何问题,所以为了满足并...原创 2019-06-06 15:54:57 · 2313 阅读 · 1 评论 -
公平锁/非公平锁/可重入锁/自旋锁
公平锁/非公平锁/可重入锁/自旋锁公平锁/非公平锁可重入锁(又名递归锁)自旋锁(spinlock)公平锁/非公平锁并发包中ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或非公平锁两者的区别公平锁:就是很公平,在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者但前先城市等待队列的第一个,就占有锁,否则就会加入到等待队列中,以后会按...原创 2019-06-06 15:49:32 · 291 阅读 · 0 评论 -
DCL(双端检索)机制不一定线程安全
DCL(双端检索)机制不一定线程安全,原因是有指令重排序的存在,加入volatile可以禁止指令重排。原因在于某一个线程执行到第一次检测,读取到的instance不为null时,instance的引用对象可能没有完成初始化。instance = new SingletonDemo();可以分为以下3步骤完成(伪代码)memory = allocate(); //分配对象内存空间insta...原创 2019-06-17 15:07:25 · 2134 阅读 · 0 评论