自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

转载 面试感悟------一名三年工作经验的程序员应该具备的经验

原文地址http://www.cnblogs.com/xrq730/p/5260294.html,转载请注明出处,谢谢! 前言因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2...

2018-07-02 15:46:40 1935 1

转载 深入分析ConcurrentHashMap的锁分段技术

术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。线程不安全的HashMap因为多线程环境下,使用H...

2018-06-26 16:15:04 467

转载 Java中对象都是分配在堆上吗?你错了!

们在学习使用Java的过程中,一般认为new出来的对象都是被分配在堆上,但是这个结论不是那么的绝对,通过对Java对象分配的过程分析,可以知道有两个地方会导致Java中new出来的对象并不一定分别在所认为的堆上。这两个点分别是Java中的逃逸分析和TLAB(Thread Local Allocation Buffer)。本文首先对这两者进行介绍,而后对Java对象分配过程进行介绍。1. 逃逸分析1...

2018-06-26 15:34:09 3017 2

转载 一次线上问题排查:java.lang.OutOfmemoryError: PermGen Space

背景用基于Spring Boot(环境是java7)的系统做了一个报表导出的功能,第一次部署的时候用的默认JVM参数,但是测试人员在点击了一次导出之后,其他功能就疑似挂掉了,过了一会后才能正常使用;再点击导出,又出现这个问题,对这个问题的排查如下。jmap -heap pid查看堆内存使用情况Attaching to process ID 6082, please wait...Debugger...

2018-06-21 17:45:10 392

转载 深入剖析Spring(一)——IoC的基本概念(从面向对象角度介绍)

IoC与DIIoC和DI是Spring的两个核心概念,很多人都把它们视为相同的东西,但事实并非如此。 IoC(Inversion of Control):控制反转。 DI(Dependency Injection):依赖注入。为了方便理解,先给出结论:控制反转是目的,依赖注入是实现控制反转的手段。控制反转是一种面向对象的思想,它是一种宽泛的概念,只要一个类将对它内部状态的控制权交由其他机制去完成即...

2018-06-21 16:55:11 210

转载 回溯法(一)——n皇后问题

回溯法(一)——n皇后问题问题描述 在一个n*n的棋盘上放置皇后,要求:一个皇后的同一行、同一列、同一条对角线上不允许出现其他皇后。请给出所有的放置方案。算法思路思路很简单,由于每行每列不能出现两个皇后,因此每行只能放一个皇后,那么第i行中皇后究竟应该放哪儿呢?我们可以从第i行第一列开始依次向后逐格判断,看看若放在当前位置是否会冲突,若不冲突,则继续考虑下一行,若冲突,则继续向后移动一格,再判断。...

2018-06-21 15:44:35 1052

转载 聊聊对称/非对称加密在HTTPS中的应用

聊聊对称/非对称加密在HTTPS中的应用目前常用的加密算法主要分成三类:对称加密算法非对称加密算法消息摘要算法在互联网中,信息防护主要涉及两个方面:信息窃取和信息篡改。对称/非对称加密算法能够避免信息窃取,而消息摘要算法能够避免信息篡改。对称加密算法发送方和接收方需要持有同一把密钥,发送消息和接收消息均使用该密钥。相对于非对称加密,对称加密具有更高的加解密速度,但双方都需要事先知道密钥,密钥在传输...

2018-06-21 15:35:32 1000

转载 缓存世界中的三大问题及解决方案

缓存世界中的三大问题及解决方案 目前的IO设备远不能满足互联网应用海量的读写请求。于是便出现了缓存,利用内存的高速读写性能来应付海量的查询请求。然而内存资源非常宝贵,将全量数据存储在内存中显然是不切合实际的。因此目前采用内存和IO结合的方式,内存只存储热点数据,而IO设备存储全量数据。 缓存的设计包含很多技巧,设计不当将会导致严重的后果。本文将介绍缓存使用中常见的三大问题,并给出相应的解决方...

2018-06-21 15:22:35 207

转载 并发编程中的注意事项

程序员必知的并发编程注意事项 获取单例对象需要保证线程安全,其中的方法也要保证线程安全。单例对象会被多线程共享,因此要保证它是线程安全的,它其中的方法都要保证是线程安全的。工具类、资源驱动类、单例工厂类都要注意这个问题。 创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。 使用线程池的好处是减少在创建和销毁线程上所花的时间以及系...

2018-06-21 15:13:04 693

转载 揭秘threadLocal

揭秘ThreadLocal ThreadLocal是开发中最常用的技术之一,也是面试重要的考点。本文将由浅入深,介绍ThreadLocal的使用方式、实现原理、内存泄漏问题以及使用场景。ThreadLocal作用在并发编程中时常有这样一种需求:每条线程都需要存取一个同名变量,但每条线程中该变量的值均不相同。如果是你,该如何实现上述功能?常规的思路如下: 使用一个线程共享的Map<Threa...

2018-06-21 14:59:34 150

转载 Java异常体系中的秘密

Java异常体系中的秘密 相信大家每天都在使用Java异常机制,也相信大家对try-catch-finally执行流程烂熟于胸。本文将介绍Java异常机制的一些细节问题,这些问题虽然很小,但对代码性能、可读性有着较为重要的作用。Java异常体系介绍 在学习一项技术前,一定要先站在制高点俯瞰技术全局,从宏观上把控某项技术的整个脉络结构。这样你就可以有针对性地学习该体系结构中最重要的知识点,并且在学习...

2018-06-21 14:38:22 161

转载 常用的分布式事务解决方案

常用的分布式事务解决方案在这篇文章中:什么是事务?事务的四大特性 ACID事务的隔离级别事务并发执行会出现的问题数据库的四种隔离级别什么是分布式事务?CAP理论BASE理论酸碱平衡分布式事务协议两阶段提交协议 2PC三阶段提交协议 3PC分布式事务的解决方案方案1:全局事务(DTP模型)方案2:基于可靠消息服务的分布式事务方案3:最大努力通知(定期校对)方案4:TCC(两阶段型、补偿型)参考文献 ...

2018-06-21 14:17:14 157

转载 HashMap源码和模型详解

HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。 通过 HashMap、Has...

2018-06-19 17:00:15 524

转载 JVM内存结构解析

 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢?  由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:                            ...

2018-06-19 16:13:22 151

转载 java并发之阻塞队列

在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。  在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequ...

2018-06-19 16:00:19 299 1

转载 JAVA:Callable,Future和FutureTask

 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。  这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。  如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。  而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。...

2018-06-19 15:50:01 142

转载 藏在正则表达式里的陷阱

前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。很奇怪,一个正则表达式怎么会导致 ...

2018-06-19 15:36:45 448

转载 java线程面试题问答(二)

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。  在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么...

2018-06-15 11:15:19 363

原创 java并发面试题问答

java并发面试题问答多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点)Java多线程面试问题1. 进程和线程之间有什么不同?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一...

2018-06-15 11:09:14 475

转载 java的垃圾回收机制详解

Java垃圾回收机制  说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机...

2018-06-15 10:39:55 190

转载 一份好的简历需要包含的内容(程序员)

前段时间有朋友问他投了简历为什么公司迟迟没有给他面试机会,还有朋友说他因为频繁跳槽在复试的时候被拒绝,但是他说他每次跳槽都是有进步的,不过我从他简历中只能看到频繁跳槽,并没有看到进步。这些问题都和所写的简历息息相关。      在工作中,我曾筛选过近千封简历,面试过300名左右的求职者,也推荐过上百封简历。这个过程中,我发现一些求职者的简历确实有写得不尽如人意的地方,有的简历写得太简单缺少必要信息...

2018-06-15 10:26:47 2710

转载 如何查看数据库的执行计划---全栈工程师第一步

mysql explain执行计划详解 1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。 2)、select_type列常见的有:A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个B:primary:一个需要union操作或者含有...

2018-06-15 10:23:55 2255

转载 java的建议和方向

一、技术积累(1)代码规范1.1.1、通常的模块分布:一般如果你要实现一个web应用,你从后台将数据展示到前端页面,在一个比较大的公司,你少不了跟其他项目有交集(你调用他的接口,他依赖你的接口),这样下来,整个公司有很多个模块,怎么做到很好的联系。回到刚刚的模块分布,你的一个web应用,应当需要分成三个模块:core模块、service模块、web模块。web模块就是展示到页面,后台代码而言主要就...

2018-06-15 10:22:10 288

转载 volatile关键字详解(java多线程)

Java并发编程:volatile关键字解析   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的...

2018-06-15 10:19:54 122

转载 线程池原理解析(解读源码)

Java并发编程:线程池的使用  在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?  在Java中可以...

2018-06-15 10:16:35 146

原创 IDEA入门级教程--个人设置

IDEA的个人配置与常用操作IDEA的个人配置修改代码编辑器新版的IDEA默认使用vim编辑器(linux下的一个工具),虽然熟练掌握后可以提高工作效率,但是学习成本很大,不习惯的可以选择关闭。修改主题及字号这个完全看个人喜好了。设置代码提示不区分大小写区分大小写的情况是这样的:比如我们在 Java 代码文件中输入 stringBuffer IntelliJ IDEA 是不会帮我们提示或是代码补充...

2018-06-15 10:12:41 7484 1

转载 IDEA高级使用教程

实时代码模板(Live Templates)这个就是实时代码模板的功能。我们来看一下怎么用它。看了这个图,你大概已经知道怎么建立一个新的模板了。下面将一下模板的变量。第一个gif图里用到了两个模板,一个是系统定义的psvm(private static void main的缩写),使用它我们可以快速创建main函数。另一个是我们自定义的syso(来自eclipse用户的强迫症)//syso的模板文...

2018-06-15 10:06:27 4505 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除