自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

仗剑闯天涯的专栏

我的剑就是我键盘

  • 博客(42)
  • 收藏
  • 关注

原创 深入分析 ReentrantLock ,AQS部分源码

1.ReentrantLock分析我们从ReentrantLock 来分析,ReentrantLock 叫互斥锁也叫可重入锁,可重入的特性可以避免死锁,它是基于AQS来实现的,ReentrantLock采用内部自己定义的一个抽象静态类Sync 来管理锁 那么Sync则继承了AQS ,ReentrantLock 内部通过继承Sync抽象静态类,实现了两种锁一种是公平锁,一种是非公平锁,Ree...

2019-11-13 00:37:55 197

原创 给我的小迷妹解释什么是RPC

小迷妹:哥,我问你一个问题啊? 我:啥问题啊? 小迷妹:你最近嘴里面天天念叨的rpc 是啥啊? 我:好,哥今天给你普及一下,什么是rpc。 小迷妹:哇啊,哥哥你好棒啊。 我:哈哈,还好还好,你不要这么崇拜我。通俗解释RPC 是什么? RPC,就是Remote Procedure Call 远程过程调用 小迷妹:啥叫远程过程...

2019-09-23 16:29:51 775

原创 zookeeper分布式锁原理分析

zookeeper由来zookeeper 是外国人研究出来一款分布式服务协调组件,这就说来话长了,当时Google 研发出来一款叫Google Chubby 的组件,为了解决,分布式服务之间一致性问题,以及分布式锁 但是这货开发出来之后,代码不开源,别人也用不了,然后这时候 雅虎大哥就出来了,心想 你不开源,我就自己干,然后一气之下研究出来一款叫做zookeeper分布式协调组件,它基于 Go...

2019-09-22 17:45:55 979

原创 sql 表和表之间关联

1.表和表之间关联:(1)左关联left join:两个表之间以左边的表数据为准;(2)右关联right join:两个表之间以右边的表数据为准;(3)等值关联join :两个表都满足两个表的数据; left join、right join、join on 三种匹配的范围不一样;2、为什么在mybatis 中要写单表查询:  (1)为了提高性能,单表查询比多表查询性

2017-01-12 21:01:57 10242

原创 如何做好Code Review:思考、方法和实践 (真实经验总结)

我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于事后的测试。也有些团队想做好代码审查,但不知道怎么做比较好。网上关于如何做Code Review的文章已经有很多了,这里我结合自身所在的交易业务线总结一些code review 的方法。

2023-08-02 10:10:32 195

转载 缓存穿透,缓存击穿,缓存雪崩解决方案分析

前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。

2017-08-01 16:58:25 331

原创 git 分支

提测:feature(开发分支)--develop(合并)回归:从master拉取一个relax分支--把测试的develop合并到relax分支,然后进行回归测试,再把relax分支合并到master上面

2016-12-20 15:16:11 208

原创 dubbo 使用

1、dubbo 是什么?  (1)、远程服务的调用的分布式框架;2、dubbo 能做什么? (1)、透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API入侵; (2)、软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 (3)、服务自动与发现,不再需要写死的服务地址,注册中心基于接口名的查询服务者的IP地址,并且能够

2016-12-18 00:14:13 288

原创 Git使用

一、主分支:   1.master 分支:上面存放的是随时可供生产环境部署的源代码,当开发一段时间后,就会产生新的可部署的代码,供master更新操作,同时每一次更新最好更新版本号;   2.develop分支:develop保存的是当前最新开发版本的工程代码,当develop上面的代码足够可以更新了,并且通过了测试,并将develop上面的代码合并回master 分支并做好,版本号的更新

2016-09-20 10:20:19 253

原创 深入TreeMap和TreeSet集合

hashSet底层则实际是一个hashMap,而TreeSet底层则采用NavigableMap这个接口来保存TreeSet集合,而实际上NavigableMap只是一个接口,实际上面TreeSet还是用TreeMap来保存set元素.   TreeSet的初始化的时候都是初始化都是new 了一个TreeMap进行初始化;    TreeMap,它采用一种被称为“红黑树”的排序二叉树来保存

2016-09-09 11:11:07 1117

原创 BigDecimal

1.介绍:    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传

2016-08-31 16:05:03 198

原创 一列多行进行列转行操作

其实列转行,可以在数据库当中转换,也可以在程序中进行转换,因为我这个设计多张表所以在程序当中进行转换,在nosql非关系型数据库当中,可以把行转列看成一个矩阵,这个矩阵的列可以进行90度的转换,在非关系型数据库当中,这样做会很简单,但是在关系型数据库当中这样做就很复杂了。  我说一下,我的java代码的实现,前提我手上有三张表分别为:    T50_ETL_REPORT; //

2016-08-31 15:59:31 2532

原创 线程池原理

一、线程池优势:        1.降低资源消耗,通过反复利用已创建线程降低线程创建和销毁造成的消耗;      2.提高响应速度,当任务到达时,任务可以不需要等到线程的创建就能立即执行;  3.提高线程的可管理性;二、线程池原理:当提交一个任务时候,线程池处理的这么一个流程:文字描述:     1.线程池判断核心线程池是否都在执行任务,如果都在执行任务的时候则进行

2016-08-13 15:35:01 259

原创 java String深入理解

String这个类比较特殊,因为底层final的String 底层源码:public final class String {      private final char value[];}因为String 底层是一个final的类,并且它底层的存储是一个char 类型的数组,也是一个final类型,也是说,从理论上面讲String 是一个不能更改的类。前提:  J

2016-08-12 10:24:34 250

原创 linux 部署上线

1.查看was方法:   执行命令查看was相关进程,dmgr、nodegent、server1   命令 ps -ef|grep java2.杀死执行以下命令,杀死dmgr、nodeagent、server1    kill -9 进程编号 1 进程编号 2 进程编号 33.启动dm    sh /startManager.sh 4.启动server1    sh /

2016-08-11 20:57:38 444

原创 web Mvc 设计思想

mvc : model(模型)、view(视图)、controller(控制层);mvc优势:    1.多个视图对应一个模型,按MVC设计模式,一个模型对应多个视图,可以减少代码的复制,一旦模型更改,便于维护;    2.模型返回来的数据,与显示逻辑层分离,模型数据可以应用任何的显示数据;    3.应用被分为三层,降低各层之间的耦合性,提高应用可扩展性;    4.控制层也

2016-08-11 10:53:50 238

原创 ArryaList和LinkedList性能分析和适用场景

ArrayList和LinkedList  我们先说性能方面;    1.插入:      ArrayList是单向链表,底层是数组存储形式,在添加的时候,如果添加在ArrayList尾部,则性能更快于LinkedList,但是在List中添加完元素之后,导致超过底层数组的长度,就会垃圾回收原来的数组,并且用System.copyArray赋值到新的数组当中,这开销就会变大,而Like

2016-08-10 21:35:11 499

原创 深入ArrayList和LinkedList

List代表一种线性表的数据结构,ArrayList则是一种顺序存储的线性表,ArrayList底层则采用数组来保存每个集合元素,LinkedList则是一种链式存储的线性表,它实现了List的接口,还是实现了Deque的接口,LinkedList不仅可以当队列,和双向链表使用,也可以当做栈来使用;1.ArrayList查询速度相对于LinkedList会比较快,但是插入和删除会比Linked

2016-08-10 19:01:33 277

原创 深入map和set

对HashSet而言 系统采用hash算法决定集合的快速存取,集合元素,对HashMap而言,系统采用hash算法,跟据hash值来获取的key的存取位置,实现快速存取;  HashMap类的put源码:    public V put(K key,V value){       if(key==null)             return putForNullKey(valu

2016-08-10 14:22:38 220

原创 抽象类和接口的不同

抽象类和接口的不同:      一、用法上不同:                   1.接口的方法不能用static 进行修饰,而抽象类可以;                   2.接口只能包含抽象的方法,而抽象类却可以包含普通的方法                   3.接口里面没有构造函数和初始化块,而抽象类可以;                   4.接口支持多继

2016-08-09 22:11:41 248

原创 接口使用的注意事项

接口则是抽象类更彻底的抽象;接口是一种规范,接口规定了实现者必须向外提供哪些服务,对于接口的调用者,调用者要掉哪些方法 例如:     【修饰符】 interface 接口名 extends 父接口1、父接口2.....       说明:               修饰符可以是public或者省略,如果省略了public 访问控制符,则默认采用包访问控制符,只有在相同包下面

2016-08-09 21:15:33 491

原创 抽象类的注意事项

抽象类:    抽象方法和抽象类必须用abstract修饰符来修饰,抽象方法也必须使用abstract来修饰,

2016-08-09 21:14:00 1350

原创 使用 final 的注意事项

一、final修饰成员变量   与普通成员变量不同的是,final成员变量(包括实例Field,类Field) 必须由程序员显示的初始化,系统不会默认的为它初始化;     例如:       public class Test{             final int age;           {                System.out.print(a

2016-08-09 14:41:15 615

原创 6.spring事务

J2EE 应用的事务有两种:           全局事务和局部事务;全局事务由应用服务器管理,需要底层服务器JTA支持,局部事务,则采用jdbc技术,connection连接来操作事务,hibernate 事务,则是用session来操作事务。       Spring 事务策略核心是PlatformTrationActionManager这个接口,该接口下面包含三个为实现的抽象方法:

2016-08-08 18:42:15 216

原创 5.spring aop

一.aop框架优点:spring引入AspectJ库来引入,来进行注解注入。xml则配置启动零注解的方式注入    各步骤良好的隔离性;   源代码无关性;    1.切面:就是增强目标对象的一个类。    2.连接点:被代理的目标方法。    3.增强处理(Advice):也叫通知的 这里面包括around,before,after;      before:在切

2016-08-08 16:13:46 225

原创 4.spring基本用法

一、spring 注解用法:    1.@Componend:注解一个springbean 类     2.@Controller:注解一个控制层组件    3.@Service:注解一个业务层组件    4.@Repository:注解一个dao层组件如果要运用这些注解首先要在spring xml中配置一个扫描注解的一段代码:   如果在xml中配置了这样一段代码,然

2016-08-08 13:49:02 231

原创 redis 安装

一、安装redis        官方网站:http://redis.io/        官方下载:http://redis.io/download 可以根据需要下载不同版本        windows版:https://github.com/mythz/redis-windows        如果linux 连网的话直接    1.下载:

2016-08-07 18:43:20 136

原创 3.Spring基本用法

1.容器工厂bean:         这个工厂模式相对于前面的实例工厂模式、静态工厂模式有所区别,因为前面是标准的工厂模式,调用工厂方法来产生bean,而容器工厂bean是实现了, FactoryBean,来产生bean,当调用工厂的getBean的时候容器不会获取FactoryBean的实例而是获取Factory的产品;    FactoryBean在Spring中是一个很重要的接口,

2016-08-03 14:46:24 174

原创 2.Spring基本用法

spring 中的xml配置相对于spring注解去注释,要早很多产生的,后期spring意识到,在大型的项目中越来越日益,庞大和臃肿,所以就产生了,注解的形式。  1.bean的作用域:       在spring容器中产生的bean,这个bean是有生命周期      (1)singleton:单例模式,在springIOC中使用singleton来创建一个实例      (2

2016-08-02 10:58:27 216

原创 1.Spring基本用法

Spring 现在很多公司都在使用的一款非常强大的框架,刚开始的时候,只是停留在怎么使用spring框架,慢慢越来越深入了解spring框架的原理,让我重新对这个框架有重新的认识。         其实spring核心机制就是“依赖注入”(IOC)和"面向切面"(AOP)其实 控制反转和依赖注入都是一个意思,一个好的框架要符合“低耦合”,“高内聚”   这也正是验证了spring的核心思想。

2016-08-01 11:19:55 221

原创 Java 类加载回顾

Java 其实是个很神奇的东西,很强大的东西,当我们写完一个类,这个类是怎么加载到jvm内存里面的呢?是经过了一个怎么样的过程,好吧,请跟随我,来揭开这一层层神秘的面纱。  1.class 的加载:           当我们要用到一个类的时候,系统会经过这个三个步骤,类加载、类连接、类初始化,类加载要用到类加载器,这个类加载器我们下面会介绍,当类加载到jvm内存,就会产生一个相应的cla

2016-07-30 16:21:42 209

原创 java 反射回顾

最近一段时间把java基础又重新看一遍,感觉以前有很多不懂得地方,现在能明白了点,但是源码还是没有看,也是刚刚看完java反射,就过来把看过的都记下来,以备后面方便回顾;     java反射机制,在spring框架中用到的比较多,像ioc和aop这个两个是spring的核心,大部分用到的都是反射原理,aop则用到的是动态代理;     我总结了一下,我感觉看完一遍java反射机制,用大白

2016-07-29 14:26:54 188

原创 java 多线程 回顾

一.进程和线程区别:       例如:我们使用的qq就是一个进程,而在这个qq里面有很多的其他功能,例如可以聊天,发送文件,视频,语音,等等,而这些功能就是一个一个线程,而这些线程可以同时的进行,简单来说一个程序有运行时,至少有一个进程,而进程下面可以有多个进程   再举个例子,为什么我在选择电脑的时候,要选择cpu比较高的,就是因为,当我们打开多个软件的时候,而这些,进程会轮流占用cp

2016-07-28 15:50:18 259

原创 java NIO1 学习

java IO 流在我看来,更像一个管道,我们把

2016-06-27 23:10:01 290

原创 java map集合学习

map 接口下面包含 hashMap、linkedHashMap、SortedMap、TreeMap、EnumMap 这些实现类,总的来说跟set 接口下面的实现类很相似,map 是由key-value 键值对,key是唯一的,value可以重复,key 的集合就是相当于一个set集合唯一性,而value的集合相当于一个list集合,map集合可以通过key来获取value一、hashMap和

2016-06-20 21:50:41 490

原创 java 集合 List 学习

list 是collection 接口下面的一个子接口,List 接口下面有ArrayList,Vector,linkedList 实现类,和Queue接口,该接口下面PriorityQueue实现类和Dequeue接口,deque接口下面的实现类是ArrayDeque 和linkedList;   1.List遍历:

2016-06-14 17:21:44 611

原创 对java set集合的理解与学习

java 集合是用来存储数量不等的多个对象,并可以实现常用的栈,队列等,还可以保存具有映射关系的关联数组,集合下面分为,set ,list,map    首先set 集合就像一个罐子,多个对象丢进去没有明显的关系,但是有一点set集合不允许重复,set 下面有这么几个实现类 hashSet ,LinkSet ,treeSet,enumSet.  一.hashSet:

2016-06-12 23:22:27 7203 1

原创 myeclipse 连接svn服务器验证位置时发生错误

问题描述:MyEclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能。但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号、密码保存之后,就无法再变更了。当剪切项目的时候报这个错误的时候就是用一下方法解决解决思路:既然界面上不能进行修改,那就只有删除subclipse记录的帐号、密码信息,重新输入。

2015-04-23 10:05:53 16666 8

原创 ArcGis安装步骤

ArcGis安装步骤:1.新建一个desktop install文件夹把ArcGIS_Desktop_1022_140090解压到该文件夹下面,如下图:2.进desktop install文件夹下面点击ESRI进行安装,如下图:3.弹出ArcGis安装界面,如下图:4.单击页面上面的  进行环境监测,如下图:提示可以进行安装 然后点击Exit按钮4.单击安装

2015-04-22 17:33:03 1311

原创 从svn上面当下来的项目,跑不起有几种原因

从svn上面当下来的项目,跑不起有几种原因:1.先是检查一下你jar包是否有错;2.项目右键configure Build Path 里面的order and Export 全部选中 然后点击ok;3.检查一下你的jdk是否有问题,过你的jdk版本过低的话,在后台代码方法上面有@Override去掉,这样就不会有错了,或者你去下载一个高版本的,要不然有的时候在jdk高版本不会报错,在你

2015-04-09 10:43:52 3925

空空如也

空空如也

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

TA关注的人

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