自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 CountDownLatch共享锁实现原理

CountDownLatch使用解说CountDownLatch是java5中新增的一个并发工具类,其使用非常简单,下面通过伪代码简单看一下使用方式:这是一个使用CountDownLatch非常简单的例子,创建的时候,需要指定一个初始状态值,本例为2,主线程调用 latch.await时,除非latch状态值为0,否则会一直阻塞休眠。当所有任务执行完后,主线程唤醒,最终执行打印动作。以上只是一个最...

2018-05-14 11:48:09 1482

原创 BIO和NIO的各自应用场景

BIO和NIO是两种不同的网络通信模型,现如今NIO已经大量应用在Jetty、ZooKeeper、Netty等开源框架中。一个面向流、一个面向缓冲区一个是阻塞式的、一个非阻塞一个没有io多路复用器、一个有各自应用场景 (1)NIO适合处理连接数目特别多,但是连接比较短(轻操作)的场景,Jetty,Mina,ZooKeeper等都是基于java nio实现。服务器需要支持超大量的长时间连接。比如10...

2018-05-14 11:42:15 4120

原创 利用maven工具解决jar包冲突问题或重复加载问题

maven管理jar包依赖的时候,假如你的依赖包A需要间接依赖B的1.0版本,而你的工程里又需要用到B的2.0版本,这个时候就可能会出现运行时jar冲突的异常,会报java.lang.NoSuchMethodError或者 java.lang.ClassNotFoundException 、java.lang.NoClassDefFoundError解决方法一:第一步:查询冲突jar包的依赖树mv...

2018-05-12 21:48:31 1198

原创 大端小端格式详解

1. 什么是大端,什么是小端:所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。2.为什么会有大小端:为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16...

2018-05-12 21:37:03 168

原创 Spring中的@Transactional注解注意事项

一 .Spring中的@Transactional必须要了解的概念Spring中的@Transactional基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题。一般使用是通过如下代码对方法或接口或类注释:[html] view plain copy @Transactional(propagation=Propagation.NOT_SUPPORTED)  Prop...

2018-05-12 21:28:26 451 1

原创 电话面试遇到的几个问题

1.Bean注解的意义? @Bean注解在方法上,声明当前方法的返回值为一个Bean。2.IOC的好处?(被问到除了降低耦合度) 第一,资源集中管理,实现资源的可配置和易管理。 第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。3.内存泄漏和内存溢出的区别? 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;

2018-04-29 20:26:09 360

转载 多服务器共享Session的解决方案

问题 为了满足足够大的应用,满足更多的客户,于是我们架设了N台Web服务器(N>=2),在多台Web服务器的情况下,我们会涉及到一个问题:用户登陆一台服务器以后,如果在跨越到另一台服务器的时候能够继续使用客户的Session? 1、写客户端Cookie的方式 把原来存储在服务器磁盘上的session数据存储到客户端的cookie中去。(一般是把session数据按照自己定义的加密规则(如:采用

2018-04-29 19:53:48 1482

原创 AJAX跨域问题及解决

1.为什么会发生AJAX跨域? 1)浏览器限制 2)跨域 3)XHR(XMLHttpRequest)请求2.解决思路 1)浏览器 -disable-web-security 2) JSONP 前端:$.ajax({dataType:jsonp jsonp: “callback2”

2018-04-18 15:57:13 278 1

原创 tx一面问题及答案(数据结构及数据库+Java)

1.数据库为什么要分库分表? 1 基本思想之什么是分库分表? 从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。 2 基本思想之为什么要分库分表? 数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大;另外,由于无法

2018-04-16 17:52:45 171

原创 tx一面问题及答案(操作系统及计算机网络)

1.进程 线程 协程之间的区别? 进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。进程是线程的容器。进程是程序的实体。线程:CPU调度的基本单元,有时被称为轻量级进程,是程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,...

2018-04-16 16:20:24 350

原创 Spring注解@Resource和@Autowired区别

(1)@Autowired @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。 @Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用

2018-04-13 22:20:21 377

原创 JAVA8之lambda表达式(二)

lambda好处就是代码量大大减少了!程序逻辑也很清晰明了。 它的用处浅显来说就是替代“内部匿名类”、可以对集合或者数组进行循环操作。 以前: 面向对象式编程就应该纯粹的面向对象,于是经常看到这样的写法: 如果你想写一个方法,那么就必须把它放到一个类里面,然后new出来对象,对象调用这个方法。 匿名类型最大的问题就在于其冗余的语法。 有人戏称匿名类型导致了“高度问题”(heigh

2018-04-08 22:23:24 289

转载 JAVA8之lambda表达式(一)

在接触公司的项目后,发现很多地方会出现()->,这种表达式以前不怎么接触,在看了公司项目后打算慢慢学习总结下:lambda表达式是JAVA8中提供的一种新的特性,它支持JAVA也能进行简单的“函数式编程”。 它是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。1.使用lambda

2018-04-07 23:36:50 126

原创 一天一道简单题目(三)

给你一个字符串,找出最长的没有重复字符的子字符串的长度。解法一:private static int lengthof(String str) { int n=str.length(); int ans=0; for(int i=0;i<n;i++){ for(int j=i+1;j<=n;j++){

2018-04-06 11:36:22 193

原创 实习电话面试遇到到一些问题(四)

面试官问truncate和delete的区别,好久没用也没看到truncate都忘记了,网上介绍区别的文章有很多,直接复制过来drop、truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。 TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日

2018-03-21 21:45:09 727

原创 线程安全的CopyOnWriteArrayList

CopyOnWriteArrayList在电话面试被问到之前,没有很了解,于是下午回到宿舍就上网查阅了一番。 先检验一下他是否是线程安全的吧 ReadThread.javaimport java.util.List;public class ReadThread implements Runnable { private List<Integer> list; public Rea

2018-03-19 17:19:17 183

原创 一天一道简单题目(2)

给出两个表示非负整数的数字链表,数字以相反的顺序存储,每个链表都存储该非负整数某一位上的数字。计算两个非负整数的和,并以链表的方式返回。简单做个比喻:342,以链表的存储形式就是,2->4->3。时间复杂度:O(n)。空间复杂度:O(n)。```public static ListNode Addtosum(ListNode l1,ListNode l2){ Addsum(l

2018-03-18 12:56:24 233

原创 之字形打印二叉树

剑指Offer上一道编程题 用两个栈s1 s2分别保存奇数层节点和偶数层节点public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { int n=1; Stack<TreeNode> s1=new Stack<TreeNode>(); s1.push(pRoot); S

2018-03-17 18:58:48 185

原创 用一个栈实现对另一个栈的排序

将要排序的栈记为stack,申请辅助的栈记为help,在stack栈执行pop操作,弹出的元素记为cur,如果cur大于help的栈顶元素,则将cur压入help;如果cur小于help的栈顶元素,则弹出help栈顶元素压入stack直到cur的值大于等于help的栈顶元素。依次运行,直到stack为空之后,把help的栈元素依次压入stack栈里即可。package com.bc;import j

2018-03-16 19:51:12 500

原创 实习电话面试遇到到一些问题(三)

1.使用反射列出类的所有方法 //Obtain the Class instance Class personClass = Person.class; //Get the methods Method[] methods = personClass.getDeclaredMethods(); //Loop ...

2018-03-15 13:06:34 228

原创 实习电话面试遇到到一些问题(二)

1.redis支持事务吗? 只是部分支持事务 常用的命令有: WATCH key(keys) 监视一个或多个key,如果在事务执行之前这个或这些key被其他命令所改动,那么事务将被打断 MULTI 标记一个事务块的开始 EXEC 执行所有事务块内的命令 DISCARD 取消事务,放弃执行事务块内的所有命令 UNWATCH 取消WATCH 命令对所有 key 的监控 1:正

2018-03-14 22:34:26 292

原创 实习电话面试遇到到一些问题(一)

1.Spring的注入方式 当使用byType时,如果容器中存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。2.判断两个类是否存在继承关系1、instanceOf关键字,用来判断对象是否是类的实例 2、isAssignableFrom,用来判断类型间是否存在派生关系 3、isI...

2018-03-14 19:47:47 1638 1

原创 MD5不是加密算法,是散列算法

MD5算是加密算法吗?MD5不是加密算法,是散列算法,或者叫做哈希算法。 加密算法一般指对称加密算法。 MD5哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。message-digest al

2018-03-13 19:33:17 6585

原创 java中throw和throws的区别

throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。 throws语句用在方法声明后面,表示抛出异常,由该方法的调用者来处理。throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。 throw是当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常是,具体向外抛异常的动作,所以它是抛出一个异常实例。throw与throws的比较 1、throws出

2018-03-13 13:14:48 7926

原创 二叉树的层次遍历

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list=new ArrayList<Integer>(); if(root==null

2018-03-12 15:12:23 94

原创 一天一道简单题目(1)

给你一个整型数组,需要你返回两个数,这两个数相加等于一个指定的数。 你必须保证每一个输入的数组都有且只有一个确定的解。使用最笨的方法,用两个循环嵌套,将这个数组中所有的组合都测试一遍,直到最后得到正确的答案为止。 private static String solve(int[] arr, int target) { for(int i=0;i<arr.length-1;i++){

2018-03-11 12:24:41 115

原创 DHCP如何实现分配ip

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要

2018-03-10 12:08:27 9824

转载 http状态码301和302区别

301 redirect: 301 代表永久性转移(Permanently Moved) 302 redirect: 302 代表暂时性转移(Temporarily Moved )301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)

2018-03-09 23:04:54 443

转载 Redis中Hash命令

1、HDEL HDEL key field [field …] 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。 在Redis2.4以下的版本里, HDEL 每次只能删除单个域,如果你需要在一个原子时间内删除多个域,请将命令包含在 MULTI / EXEC 块内。 可用版本: 2.0.0+ 返回值: 被成功移除的域的数量,不包括被忽略的域。 测试数据 red

2018-03-09 22:45:56 998

原创 线程池 ThreadPoolExecutor

corepoolsize:核心池的大小,默认情况下,在创建了线程池之后,线程池中线程数为 0, 当有任务来之后,就会创建一个线程去执行任务,当线程池中线程数达到 corepoolsize 后, 就把任务放在任务缓存队列中。 Maximumpoolsize:线程池中最多创建多少个线程。 Keeplivetime:线程没有任务执行时,最多保存多久的时间会终止,默认情况下,当线程 池中线程数>c

2018-03-09 11:42:54 133

转载 JAVA序列化ID问题

将Java对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用ObjectInputStream 和 ObjectOutputStream 进行对象的读写。然而在有些情况下,光知道这些还远远不够,文章列举了遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出

2018-03-08 13:07:22 10226

原创 通过NIO进行文件复制

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;publi

2018-03-06 12:46:02 176

原创 将SpringMVC返回的json串中的Date类型转换成long类型

通过继承JsonSerializer类来自定义格式,之后在实体类对应的date类型的字段的getter方法上添加注解public class DateJsonTypeConvert extends JsonSerializer<Date> { //用于序列化字符串(例如转换为json格式) @Override public void serialize(Date arg0,

2018-03-05 16:04:30 1515

原创 JDK动态代理与CGLIB动态代理

JDK动态代理 JDK的代理最大的缺点是需要提供接口,在MyBatis的Mapper就是一个接口,它采用的就是JDK的动态代理。 java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。 JDK动态代理中包含一个类和一个接口: InvocationHandler接口: public interface Invo...

2018-03-01 19:09:47 128

原创 使用BlockingQueue实现生产者,消费者模式

生产者类:import java.util.concurrent.BlockingQueue;public class Producer implements Runnable { BlockingQueue<String> queue; public Producer(BlockingQueue<String> queue){ this.queue=queue;

2017-12-21 14:50:30 258

原创 单链表逆序输出

很经典的“单链表逆序”问题,很多公司的面试题库中都有这道题。public class LianedNode { class Node{ int data; Node next; public Node(int data){ this.data=data; } } public st

2017-12-17 20:24:40 230

原创 Mybatis中sql参数的问题

在用Mabatis写Mapper里的sql语句时,如果传入一个参数,可以不加@注解 如果传入多个参数,每个参数之前加@注解,否则可能会在浏览器报错500,一般出现500错误,可能是服务器端sql语句出错,下面贴代码看下 public int validById(@Param("ids")String[] ids,@Param("valid")Integer valid);两个参数时 此时对应的

2017-12-10 13:30:44 557

原创 单例模式

java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。   单例模式有以下特点:   1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。

2017-12-07 20:19:27 124

原创 探究类ThreadLocal的使用

当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。

2017-12-06 12:28:57 148

空空如也

空空如也

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

TA关注的人

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