
java 技术
分享java技术瑞哥
这个作者很懒,什么都没留下…
展开
-
@Autowired和@Resource的区别是什么?
@Autowired 与@Resource:1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false3、@Resource 是JDK1.6支持的注解,默认按照名称进行装...原创 2018-04-19 16:20:13 · 1353 阅读 · 0 评论 -
Java中的String,StringBuilder,StringBuffer三者的区别
Java中的String,StringBuilder,StringBuffer三者的区别 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。1.首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和S...原创 2018-04-17 11:21:58 · 173 阅读 · 0 评论 -
class.forName()和classLoader区别
java中class.forName()和classLoader都可用来对类进行加载。class.forName()前者除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。而classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。...原创 2018-04-17 10:58:29 · 172 阅读 · 0 评论 -
spring中用到哪些设计模式
spring中用到哪些设计模式1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了;2.模版模式,这个也很明显,在各种BeanFactory以及ApplicationContext实现中也都用到了;3.代理模式,在Aop实现中用到了JDK的动态代理;4.单例模式,这个比如在创建bean的时候。...原创 2018-03-27 17:31:37 · 1564 阅读 · 0 评论 -
熔断隔离
熔断: 当一个中台down掉和在一定的时间内多次访问不通,系统认为其不可达,之后的请求就不会去访问该中台,可以直接返回错误报文等等隔离:一个中台对应各自的线程池,相互不影响,如果其中一个中台down掉,不会影响其他中台的资源...原创 2018-04-09 17:48:48 · 404 阅读 · 0 评论 -
Java JVM:垃圾回收
gc 分为两段:新生代和老年代gc垃圾回收机制对什么进行回收通过对象不可达算法,对对象进行回收。对象不可达:当一个对象没有任何一条链路指向根节点,就认为这个对象是不可达的,gc就会去回收它。gc垃圾回收机制做了什么事主要是对新生代进行清理对象,老年代整理内存。Java堆分为新生代和老年代,采用了不同的回收方式。例如新生代采用了复制算法,老年代采用了标记整理法。在新生代中,分为一个Eden 区域和两...原创 2018-03-21 10:46:13 · 177 阅读 · 0 评论 -
关于线程池的执行原则及配置参数详解
线程池的好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。创建线程池//参数初始化private static final int CPU_COUNT = Runtim...原创 2018-03-20 16:42:15 · 819 阅读 · 0 评论 -
synchronized、Lock、ReentrantLock、ReadWriteLock区别,threadlocal怎么解决线程同步问题
1.synchronized 用于同步方法和代码块,执行完后自动释放锁2.Lock是一个锁的接口,提供获取锁和解锁的方法(lock,trylock,unlock)3.ReentrantLock 重入锁Lock有一个实现类:ReentrantLock,它实现了Lock里面的方法,但是使用Lock的时候必须注意它不会像synchronized执行完成之后或者抛出异常之后自动释放锁,而是需要你主动释放锁...原创 2018-03-20 10:53:28 · 2743 阅读 · 0 评论 -
Spring BeanFactory与FactoryBean的区别
1. BeanFactory BeanFactory,以Factory结尾,表示它是一个工厂类(接口),用于管理Bean的一个工厂。在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。2. FactoryBean FactoryBean 以Bean结尾,表示它是一个Bean,主要用于定制化实例bean...原创 2018-04-20 17:31:39 · 276 阅读 · 0 评论 -
hibermate与mybatis的区别
1.都是对象关系映射型框架,hibermate是pojo与数据库表的映射,mybatis是pojo与sql语句的映射。2.mybatis开发上手比较容易,hibermate有一点难度3.Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。4.Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳(但是可以对每...原创 2018-05-07 16:11:35 · 1057 阅读 · 0 评论 -
mvc:annotation-driven注解的作用
<mvc:annotation-driven>会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean,这是Spring MVC为@Controller分发请求所必需的,并且提供了数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持读写XML...原创 2018-05-08 14:59:23 · 398 阅读 · 0 评论 -
spring mvc与struts的区别
1.struts2是类级别的拦截, 一个类对应一个request上下文,springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应所以说从架构本身上 spring3 mvc就容易实现restful url而struts2的架构实现起来要费劲因为struts2 action的一个方法可以对应一个url而其类属性却被所有方法共享,这也就无法用注解或其他方式标...原创 2018-05-07 16:29:12 · 466 阅读 · 0 评论 -
wait方法和sleep方法的区别
wait方法和sleep方法的区别对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待...原创 2018-03-20 10:18:06 · 368 阅读 · 0 评论 -
线程进阶
http://www.jasongj.com/2016/01/17/Java1_%E6%B3%A8%E8%A7%A3Annotation/转载 2018-03-19 15:20:24 · 281 阅读 · 0 评论 -
创建线程的三种方式,对比其优劣势
public class CreateThreadMethod { public static void main(String[] args) throws ExecutionException, InterruptedException { /**第一种方式*/ CreateThreadOne createThreadOne = new CreateT...原创 2018-03-19 10:53:38 · 289 阅读 · 0 评论 -
java 总结
单例模式:一个类只有一个实例,即一个类只有一个对象实例。单例模式可以分为懒汉式和饿汉式: 懒汉式单例模式:在类加载时不初始化。 饿汉式单例模式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。懒汉模式,线程不安全:public class Singleton(){ private Singleton instance; private Sin...原创 2018-03-09 16:15:01 · 170 阅读 · 0 评论 -
java io流
例子1:public static void main(String[] args){ try { InputStream inputStream = new FileInputStream(new File("D:/test.txt")); int i = 0; while ((i = inputStream.read()) != -1)...原创 2018-02-22 16:25:47 · 144 阅读 · 0 评论 -
单点登录
单点登录什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分1、登录相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没...原创 2018-03-09 10:50:41 · 540 阅读 · 0 评论 -
发送一个http请求的过程
1.通过dns解析域名获取服务器的ip地址2.通过slb(负载均衡实例+监听+后端服务)负载均衡3.到nginx 日志安全检查4.到应用服务器5.返回请求数据6.返回数据中有静态资源会去访问cdn服务器(获取静态资源)7.这个请求完成,本地的dns服务器会缓存(dns解析记录)8.浏览器和本地dns解析也会缓存(dns记录和网站记录)...原创 2018-02-22 10:56:40 · 432 阅读 · 0 评论 -
http协议的header头请求和返回值
原创 2018-02-22 10:15:22 · 3316 阅读 · 0 评论 -
synchronized 对象锁
1.调用关键字synchronized声明的方法一定是同步调用,他获取的锁是对象锁。只有共享资源的读写访问才需要同步(如果不加锁,会造成成员变量的脏读)只要这个对象上的方法上加了synchronized不论线程访问这个对象的那个同步的方法,都必须先得到这个对象的同步锁,才能访问该方法。2.脏读:在读取实例变量时,此值已经被其他线程更改过了。3.synchronized锁重入:(也可以用在父子继承的...原创 2018-02-08 15:46:18 · 344 阅读 · 0 评论 -
java 多线程 停止线程几种方式
1.Thread.stop();使用该方法停止线程是线程不安全的,会释放被锁的对象,导致对象的值错误。该方法不建议使用。会自动抛出ThreadDeath异常。2.使用interrupt()方法,该方法只是给线程标记一个停止的状态,并不会真正的停止线程。需要配合this.interrupted()方法判断该线程是否是标记了停止状态,并且得到值后会把线程的状态改为false;例如:cl原创 2018-02-06 17:45:19 · 328 阅读 · 0 评论 -
idea tomcat 中文乱码
小编:遇到idea中文乱码问题 解决问题的思路1.设置开发工具的编码为utf-8(列如:idea或eclipse)2.response乱码问题response.setContentType("text/html;charset=UTF-8"); 目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;response.setCharacterEncoding("UTF-8原创 2018-01-08 16:29:05 · 6637 阅读 · 1 评论 -
web 编码和解码
1.URL的编码和解码2.http header的编码和解码3.post表单的编码和解码4.http body的编码和解码原创 2018-02-23 11:14:53 · 859 阅读 · 0 评论 -
显示加载一个java类
原创 2018-02-23 14:29:47 · 316 阅读 · 0 评论 -
生产消费者模型
生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。生产消费者模式如下图。 在日益发展的服务类型中,譬如注册用户这种服务,它可能解耦成好几种独立的服务(账号验证,邮箱验证码,手机短信码等)。它们作为消费者,等待用户输入数据,在前台数据提交之后会经过分解并发送到各个服务所在的u...原创 2018-03-12 13:31:39 · 268 阅读 · 0 评论 -
tomcat容器
原创 2018-02-24 14:31:51 · 281 阅读 · 0 评论 -
java内存空间的分配
原创 2018-02-24 13:50:12 · 1193 阅读 · 0 评论 -
java vector
Vector 可实现自动增长的对象数组。 java.util.vector提供了向量类(vector)以实现类似动态数组的功能。在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量。比如在c,c++中所谓的“动态数组”一般都由指针来实现。为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。事实上,灵活使用数组也可以完成向量类的功能...原创 2018-03-16 14:00:36 · 335 阅读 · 0 评论 -
HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList对比
HashSet与HashMap区别HashMap实现了Map接口 HashSet实现了Set接口HashMap储存键值对 HashSet仅仅存储对象HashMap使用put()方法将元素放入map中 HashSet使用add()方法将元素放入set中HashMap中使用键对象来计算hashcode值 HashSet使用成员对象来计算hashcode值HashMap比较快,因为是使用唯一的键来获取对...原创 2018-03-16 13:33:04 · 1110 阅读 · 0 评论 -
java 堆栈
1.java堆 主要存放对象,动态加载,java gc自动回收2.java 栈 主要存放基本类型的变量数据(int,short,long,byte,float,double,boolean,char)和对象的句柄(引用)3.当创建一个线程时,jvm会同时为这个线程创建一个堆栈内存,这里的堆是一个引用到初始化时的堆对象中...原创 2018-02-23 16:50:17 · 140 阅读 · 0 评论 -
jvm的结构
jvm内存结构pc寄存器数据java堆java栈方法区本地方法区运行时常量池原创 2018-02-23 15:38:07 · 139 阅读 · 0 评论 -
java 那些组件需要内存
原创 2018-02-23 15:07:38 · 149 阅读 · 0 评论 -
解决应用服务器变为集群后session不同步的问题
1.如果分布式应用服务器不多的情况下,可以用session备份(session数据同步)。即每台应用服务器只要有session变化,就互相备份,保证每台应用服务器的session都是最新的。缺点:当应用服务器多的情况,会加大应用服务器间的网络带宽的开销和(用户访问量大session数据量也变大)消耗应用服务器的存储空间2..session数据集中处理,比如存储到数据库中,或原创 2017-12-30 16:06:37 · 865 阅读 · 0 评论