- 博客(23)
- 资源 (3)
- 收藏
- 关注
转载 Java编程:删除 List 元素的三种正确方法
删除元素后 List 的元素数量会发生变化; 对 List 进行删除操作可能会产生并发问题; 我们通过代码示例演示正确的删除逻辑package com.ips.list;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.concurren...
2018-09-10 14:18:28
214
转载 REDIS系列-缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存正常从Redis中获取,示意图如下:缓存失效瞬间示意图如下:缓存雪崩的解决...
2018-09-08 10:31:18
166
转载 Java编程:悲观锁、乐观锁的区别及使用场景
定义:悲观锁(Pessimistic Lock): 每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。乐观锁(Optimistic Lock): 每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更...
2018-09-08 10:23:49
938
转载 线程的生命周期
1.线程的生命周期线程是一个动态执行的过程,它也有一个从产生到死亡的过程。(1)生命周期的五种状态新建(new Thread)当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。例如:Thread t1=new Thread();就绪(runnable)线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例...
2018-09-07 10:56:15
232
转载 讲讲线程池的实现原理
jdk1.5引入Executor线程池框架,通过它把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。初始化线程池(4种)简介:Java线程池的工厂类:Executors类,初始化4种类型的线程池:newFixedThreadPool()说明:初始化一个指定线程数的线程池,其中corePoolSize ...
2018-09-07 10:53:42
1450
原创 ThreadLocal是什么、有什么、能做什么?
ThreadLocal提供一个线程(Thread)局部变量,访问到某个变量的每一个线程都拥有自己的局部变量。说白了,ThreadLocal就是想在多线程环境下去保证成员变量的安全。ThreadLocal提供的方法对于ThreadLocal而言,常用的方法,就是get/set/initialValue方法。我们直接看相应的源码: 来看下最常用的set操作:...
2018-09-07 10:50:33
7581
1
转载 sleep(),wait(),yield()和join()方法的区别
sleep() sleep()方法需要指定等待的时间,它可以让当前正在执行的线程在指定的时间内暂停执行,进入阻塞状态,该方法既可以让其他同优先级或者高优先级的线程得到执行的机会,也可以让低优先级的线程得到执行机会。但是sleep()方法不会释放“锁标志”,也就是说如果有synchronized同步块,其他线程仍然不能访问共享数据。 wait() wait()方法需要和notif...
2018-09-07 09:40:42
152
转载 JAVA多线程实现的三种方式
Java多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程。其中前两种方式线程执行完后都没有返回值,最后一种是带返回值的。 1、继承Thread类创建线程Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start(...
2018-09-07 09:36:12
199
转载 Java中==与equals的区别及理解
区别:“==” 比较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否一致。如果两个对象的引用相同时(指向同一对象时),“==”操作符返回true,否则返回flase。 equals方法是由Object类提供的,可以由子类来进行重写Object类默认的实现如下: public boolean equals(Object obj)...
2018-09-06 19:53:59
193
转载 cookie 和session 的区别详解
这些都是基础知识,不过有必要做深入了解。先简单介绍一下。二者的定义:当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内容给你。 Cookie 的使用很普...
2018-09-06 19:38:44
180
转载 关于HTTP 请求方式: GET和POST的比较的本质
什么是HTTP?超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议。HTTP在客户端和服务器之间以request-responseprotocol(请求-回复协议)工作。GET方法:使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器:/test/demo_form.js...
2018-09-06 19:35:00
158
转载 JAVA自定义注解、元注解介绍及自定义注解使用场景
自定义注解会需要元注解,此处先介绍元注解。元注解java中有四种元注解:@Retention、@Inherited、@Documented、@Target@Retention注解的保留位置(枚举RetentionPolicy),RetentionPolicy可选值:SOURCE:注解仅存在于源码中,在class字节码文件中不包含 CLASS:默认的保留策略,注解在class字...
2018-09-06 17:33:33
200
转载 深入解析Java反射
一、回顾:什么是反射?反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。Oracle官方对反射的解释是Reflection enables Java code to discover information about the fields, methods and constructors o...
2018-09-06 17:15:19
135
转载 接口和抽象类有什么区别
接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),...
2018-09-06 17:04:36
108
转载 重载和重写的区别
重载和重写(覆盖)的特点: 1. Override 特点 1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 2、覆盖的方法的返回值必须和被覆盖的方法的返回一致; 3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。2...
2018-09-06 17:03:32
145
转载 Java的Integer和int有什么区别
Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换,对应如下:原始类型:boolean,char,byte,short,int,long,f...
2018-09-06 17:00:08
135
转载 final、finally与finalize的区别
1. final 在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。1.1 修饰类 当用final修饰类的时,表明该类不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:final类中所有的成员方法都会隐式的定义为final方法。1.2 修饰方法使用final方法的原因主要有两个: ...
2018-09-06 16:46:05
130
转载 面向对象的特征
面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。1封装: 封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,也就是一个类中,属性用变量...
2018-09-06 16:24:32
142
转载 Git GUI windows客户端保存用户名与密码的问题
1. 在Windows中添加一个HOME环境变量,值为%USERPROFILE%2. 在“开始》运行”中打开%Home%,新建一个名为“_netrc”的文件。3. 用记事本打开_netrc文件,输入Git服务器名、用户名、密码,并保存。示例如下:machine git.xxx.comlogin user_namepassword user
2016-09-23 08:26:31
3854
转载 常用 Maven 命令一览
Maven库:http://repo2.maven.org/maven2/Maven依赖查询:http://mvnrepository.com/Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName -DartifactId
2016-08-19 11:39:30
205
转载 常用GIT bash 命令一览
master : 默认开发分支; origin : 默认远程版本库初始化操作 $ git config -global user.name #设置提交者名字 $ git config -global user.email #设置提交者邮箱 $ git config -global core.editor #设置默认文本编辑器 $ gi
2016-08-19 11:36:59
611
转载 Eclipse快捷键 10个最有用的快捷键
Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个
2016-08-18 14:16:34
237
原创 实战MYSQL数据库中配置时间调度器(继定时操作)
在项目中经常会遇到历史数据删除备份的事情,最近参加的一个移动项目使用MYSQL做数据存储,用户正好提到类似的需求。回想之前在网站上看到过MYSQL中可以支持配置时间调度器,使用这个MYSQL自带的功能来实现用户的要求真是再合适不过了。需求如下:px_***1 保存推送消息记录,用户要求每日定时删除5天前的.根据创建时间.px_***2 记录管理员重要操作日志,用
2015-09-07 14:49:06
1588
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人