自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring注册bean

手动注册bean的两种方式:实现ImportBeanDefinitionRegistrar实现BeanDefinitionRegistryPostProcessor实现ImportBeanDefinitionRegistrarImportBeanDefinitionRegistrar其本质也是通过BeanDefinitionRegistryPostProcessor来实现的。实现Impor...

2019-03-27 17:32:30 145

原创 LockSupport

LockSupport是一个线程阻塞工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,当然阻塞之后肯定得有唤醒的方法。主要有两类方法:park和unpark。public static void park(); // 无期限暂停当前线程public static void parkNanos(long nanos); // 暂停当前线程,不过有超时时间的限制public stati...

2019-03-26 16:20:15 74

原创 CyclicBarrier

CyclicBarrier的工作原理 CyclicBarrier大致是可循环利用的屏障,顾名思义,这个名字也将这个类的特点给明确地表示出来了。首先,便是可重复利用,说明该类创建的对象可以复用;其次,屏障则体现了该类的原理:每个线程执行时,都会碰到一个屏障,直到所有线程执行结束,然后屏障便会打开,使所有线程继续往下执行。 这里介绍CyclicBarrier的两个构造函数:Cycli...

2019-03-24 21:33:00 203

原创 线程的挂起和唤醒

线程的挂起和唤醒挂起实际上是让线程进入“非可执行”状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行;在线程挂起后,可以通过重新唤醒线程来使之恢复运行。挂起的原因可能是如下几种情况:(1)通过调用sleep()方法使线程进入休眠状态,线程在指定时间内不会运行。(2)通过调用join()方法使线程挂起,使自己等待另一个线程的结果,直到另一个线程执行完毕为止。...

2019-03-24 20:19:43 8452 2

原创 AtomicReference

AtomicReference是作用是对”对象”进行原子操作。源码public class AtomicReference<V> implements Serializable { private static final long serialVersionUID = -1848883965231344442L; private static final Unsa...

2019-03-24 19:55:27 1884

原创 AtomicStampedReference

在运用CAS做Lock-Free操作中有一个经典的ABA问题:线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如下面的例子:现有一个用单向链表实现的堆栈,栈顶为A,这时线程T1已经知道A.next为B,然后希望...

2019-03-24 18:30:35 291

原创 ConcurrentLinkedQueue源码

线程安全的单向链表,单向队列//类结构public class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, java.io.Serializable {//节点 private static class Node<E> {...

2019-03-24 17:08:38 138

原创 LinkedList源码

LinkedList底层是基于双向链表,链表在内存中不是连续的,而是通过引用来关联所有的元素,所以链表的优点在于添加和删除元素比较快,因为只是移动指针,并且不需要判断是否需要扩容,缺点是查询和遍历效率比较低。类结构** *LinkedList底层是双链表。 *实现了List接口可以有队列操作 *实现了Deque接口可以有双端队列操作 *实现了所有可选的List操作并且允许存储任何元素,...

2019-03-24 14:26:16 63

原创 ThreadLocal原理

ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。源码先了解一下ThreadLocal类提供的几个方法:public T get() { } public void set(T value) { } public void r...

2019-03-22 17:19:37 85

转载 sleep和sleep(0)的区别

操作系统原理操作系统中,CPU竞争有很多种策略。Unix系统使用的是时间片算法,而Windows则属于抢占式的。在时间片算法中,所有的进程排成一个队列。操作系统按照他们的顺序,给每个进程分配一段时间,即该进程允许运行的时间。如果在 时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程 序所要做的就是维护一张就绪进程列表,,...

2019-03-20 19:39:42 3492 3

原创 线程的4种创建

1.Thread2.Runnable3.FutureTask带返回值class FutureTask implements RunnableFutureinterface RunnableFuture extends Runnable, Future public static void main(String[] args) throws Exception { ...

2019-03-20 19:14:50 93

原创 操作系统

进程间通信有哪些方式?它们的区别?IPC方式:7种1.管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在有血缘关系的进程间使用,进程的血缘关系通常是指父子进程关系。2.命名管道(named pipe):也是半双工的通信方式,但是它允许无亲缘关系关系进程间通信。3.信号(signal):是一种比较复杂的通信方式,用于通知接收进程某一事件已经发生。4.信号量(semo...

2019-03-17 21:35:50 198

原创 pmp

Project Management Professional,项目管理专业人士PMBOK是Project Management Body Of Knowledge的缩写, 即项目管理知识体系,pmp考试唯一教材十大知识领域1、整合管理:其作用犹如项链中的那根线;2、范围管理:做且只做该做的事;3、时间管理:让一切按既定的进度进行;4、成本管理:算准钱和花好钱;5、质量管理:目的是满...

2019-03-16 23:37:45 108

原创 slect,poll,epoll区别

一、select、poll、epoll三者的特点及区别(1)select系统调用下面是select的函数接口:int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);select创建了3个文件描述符集(fd_set)并拷贝到内核中,分别监听读、写、异常...

2019-03-15 14:23:33 200

原创 et和lt

et:edge trigger,边缘触发当epoll_wait检测到fd上有事件发生并将此事件通知应用程序后,应用程序必须立即处理该事件,因为后续的epoll_wait调用将不再向应用程序通知这一事件。 epoll_wait只有在客户端第一次发数据是才会返回,以后即使缓冲区里还有数据,也不会返回了。epoll_wait是否返回,是看客户端是否发数据,客户端发数据了就会返回,且只返回一次...

2019-03-15 11:29:20 211

原创 mysql聚集索引

聚集索引索引值的顺序和数据的存储顺序一致,通常是主键非聚集索引索引值的顺序和数据的存储顺序不同,如普通索引,唯一索引,联合索引,全文索引innodb引擎的聚集索引如果一个主键被定义了,那么这个主键就是作为聚集索引如果没有主键被定义,那么该表的第一个唯一非空索引被作为聚集索引如果没有主键也没有合适的唯一索引,那么innodb内部会生成一个隐藏的主键作为聚集索引,这个隐藏的主键是一个6个...

2019-03-14 16:09:47 2408

原创 sqlserver主键自增

create table aaa(id bigint identity(1,1) not null PRIMARY key,name nvarchar(255));navicat没办法给主键列,加identity,只能用sql建表

2019-03-14 15:04:10 44474

转载 spring事务介绍

一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConnection()开启事务con.setAutoCommit(true/false);执行CRUD提交事务/回滚事务 c...

2019-03-14 11:24:35 99

原创 mysql嵌套事务

drop table t;create table t(a int, primary key(a));begin;insert into t(a) values(1);SAVEPOINT s;insert into t(a) values(2);ROLLBACK to SAVEPOINT s;commit;表中只有1个元素,值是1drop table t;create tab...

2019-03-14 10:07:24 6042

原创 spring5源码-事务

Spring的事务机制包括声明式事务和编程式事务。编程式事务管理:Spring推荐使用TransactionTemplate,实际开发中使用声明式事务较多。声明式事务管理:将我们从复杂的事务处理中解脱出来,获取连接,关闭连接、事务提交、回滚、异常处理等这些操作都不用我们处理了,Spring都会帮我们处理。声明式事务管理使用了AOP面向切面编程实现的,本质就是在目标方法执行前后进行拦截。在目标...

2019-03-14 09:28:20 144

转载 maven中scope属性

在POM 4中,中还引入了,它主要管理依赖的部署。目前可以使用5个值:compile,缺省值,适用于所有阶段,会随着项目一起发布。provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 编译时使用,不会随项目发布。runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 不会随项目发布。test,只在测试时使用,用于编译和运行...

2019-03-13 15:21:48 75

转载 sqlserver数据类型

一、 整数数据类型整数数据类型是最常用的数据类型之一。1、INT (INTEGER) INT (或INTEGER)数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。 每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。2、SMA...

2019-03-12 21:43:05 1176

原创 单例4种实现

懒汉式public class Singleton { private static Singleton singleton; private Singleton() {} //此类不能被实例化 public static synchronized Singleton getInstance() { if (singleton == null) { ...

2019-03-12 14:38:58 79

原创 CopyOnWriteArrayList原理

写加锁复制数组,读不加锁,数组是volatile修饰,有可见性和有序性,所以可以读到最新值读写分离的思想,也是volatile关键字的应用添加新元素时,不在原来数组添加,而是复制出一个新数组,新数组末尾添加新元素,数组指针指向新数组。 public boolean add(E e) { final ReentrantLock lock = this.lock; ...

2019-03-12 13:45:59 82

原创 各种集合key,value能否为null

HashMapkey,value都可以为null static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h &gt;&gt;&gt; 16); }key只能有一个为null,多个key=null的会覆盖,val...

2019-03-12 13:22:58 3189

原创 sqlserver

视图缓存视图a调用视图b,改了视图b,需要刷新视图b,a不需要刷新exec sp_refreshview ‘TsSeniorTecSupportView’

2019-03-11 15:53:20 160

原创 spring aop

AOP介绍@Aspect注解AOP,Aspect-OrientedProgramming,面向方面编程,作为面向对象的一种补充,用于解剖封装好的对象内部,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护...

2019-03-10 16:42:06 97

转载 软件测试概念及分类

前言测试小伙伴在谈论软件测试分类,五花八门的分类,眼花缭乱。因为将各个维度划分的内容都整到一块了,在加上各自不同的见解与补充,各种冲突…Findyou我经过多年测试总结基本定为4类测试(最多5类,自动化或者兼容性单独提出来):功能测试、性能测试、安全测试、特性测试、。化繁为简,转为自己理解的分类,避免死记硬背带来的理解不深入,遗漏测试范围。我的测试4类划分如下:功能测试:关注功能正常(包含兼...

2019-03-07 14:22:43 260

原创 druid监控

WebStatFilter用于采集web-jdbc关联监控的数据。@WebFilter(filterName = &quot;druidWebStatFilter&quot;,urlPatterns = &quot;/*&quot;,initParams = {@WebInitParam(name=&quot;exclusions&quot;,value=&quot;*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ic

2019-03-05 19:20:41 252

原创 spring源码

servlet启动过程1.启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: 和 2.紧接着,容器创建一个ServletContext(上下文)。在该应用内全局共享。3.容器将转化为键值对,并交给ServletContext.4.容器创建中的类实例,即创建监听.该监听器必须实现自ServletContextListener接口5.在监听中会...

2019-03-02 22:57:56 109

原创 idea使用技巧

启动报错Caused by: java.net.SocketException: Unrecognized Windows Sockets error: 10106: create以管理员身份打开命令提示符(win7附件中右键命令操作符选择管理员模式运行、win8或10可先菜单中搜索命令操作符然后右键…)运行 netsh winsock reset重启电脑...

2019-03-01 19:38:03 137

空空如也

空空如也

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

TA关注的人

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