自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

梦想从这里开始

千里之行,始于足下

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

转载 多线程和队列的通俗理解

我们先不要用专业的角度来看多线程。先来回忆一下,现实生活中,自己曾经一个人做的事,和多个人同时做的事。    假如现在某百货商场做一个抢购活动,限时限量的。那么就意味着你抢得越多就越占便宜,至少可以这样去理解。    那么如果你一个人去抢的话,你只有两只手,抢得再利害也只有那么一点,在同等时间的情况下,你的机会会很少的,这也就是我们经常谈到的“效率”二字。

2017-12-29 16:00:20 9541

转载 日志打印

为什么需要日志因为项目上线后不允许你调试,你只能通过Log来分析问题。项目出问题时,你要能拿出Log证明自己负责的部分没有问题,如果是自己的问题,要从Log里快速找出错误原因。如果没有从Log里找出错误原因,那一定是一件很悲催的事情,特别是在bug不容易重现的情况下。哪些地方打日志打log的目的是为了迅速排错或在有争议时拿出证据证明自己。基于这个目的,log不在多,只要

2017-11-13 11:16:56 4512

转载 理解Maven中的SNAPSHOT版本和正式版本

Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制。在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个属性构成的,分别是groupId、artifactId以及version。这三个属性可以唯一确定一个组件(Jar包或者War包)。其实在Nexus仓库中,一个仓库一般分为public(Releas

2017-10-23 22:22:53 812

转载 Spring AOP在函数接口调用性能分析及其日志处理方面的应用

面向切面编程可以实现在不修改原来代码的情况下,增加我们所需的业务处理逻辑,比如:添加日志。本文AOP实例是基于Aspect Around注解实现的,我们需要在调用API函数的时候,统计函数调用的具体信息,包括:函数签名,传入参数,函数处理时间,异常信息拦截等, @Around是可以同时在所拦截方法的前后执行一段逻辑,可以满足我们的需求。目标对象目标对象是一个客户管理服务,下

2017-10-13 13:49:32 925

转载 重构的那些事儿

几天前的一次上线,脑残手抖不小心写了bug,虽然组里的老大没有说什么,但心里面很是难过。同事说我之所以写虫子是因为我讨厌if/else,这个习惯不好。的确,if/else可以帮助我们很方便的写出流程控制代码,简洁明了,这个条件做什么,那个条件做什么,说得很清楚。说真的,我从来不反对if/else,从经验上看,越复杂的业务场景下,代码写的越简单单一,通常越不容易出错。以结果为导向的现代项目管理方式,

2017-10-13 11:14:18 431

转载 线程池

不论你是否关注,Java Web应用都或多或少的使用了线程池来处理请求。线程池的实现细节可能会被忽视,但是有关于线程池的使用和调优迟早是需要了解的。本文主要介绍Java线程池的使用和如何正确的配置线程池。单线程我们先从基础开始。无论使用哪种应用服务器或者框架(如Tomcat、Jetty等),他们都有类似的基础实现。Web服务的基础是套接字(socket),套接字负责监听端口,等待T

2017-09-14 16:54:18 296

转载 数据库工具——Navicat Premium使用技巧

Navicat Premium 常用功能讲解Navicat Premium 常用功能讲解1.快捷键 1.1. F8 快速回到当前对象列表 1.2. Ctrl + q 打开查询界面 1.3. Ctrl + d 快速修改当前的表结构 1.4. Ctrl + r 运行当前查询界面里面的 sql 语句 1.5. Ctrl + shift + r 运行当前

2017-09-14 16:08:39 831

转载 代码评审需要注意的项目规范

贾言验幻空越重,命循频异长。依轮线日简,接偶正分壮。言欢空月虫,明勋品宜昌。依伦先日贱,洁偶正粉妆。贾言架构师说, 用20个字描述代码评审的内容, 自省也省人。由于是一字一含义, 不连贯, 为了增强趣味性, 每句都增加对应的歪解。只是对常见评审的描述, 不尽之处,欢迎补充

2017-08-28 09:37:53 1475

转载 软件架构模式转载

软件架构模式转载概要介绍最近一两年,转载文章越来越少了,之所以转载这篇文章,是因为看这篇文章,弄明白了我的一些问题。所以梳理了一下,结合了几篇文章。架构模式可以帮助你定义程序的基本特征和行为。例如一些架构模式很自然让程序成为大规模(scalable)的程序。有些模式让程序变得灵巧敏捷(agile)。知道这些架构的特征,优点和缺点,你就可以根据你特定的业务需求和目标从容的选择

2017-08-11 14:50:21 365

转载 分布式一致性解决

前言目前的应用系统,不管是企业级应用还是互联网应用,最终数据的一致性是每个应用系统都要面临的问题,随着分布式的逐渐普及,数据一致性更加艰难,但是也很难有银弹的解决方案,也并不是引入特定的中间件或者特定的开源框架能够解决的,更多的还是看业务场景,根据场景来给出解决方案。根据笔者最近几年的了解,总结了几个点,更多的应用系统在编码的时候,更加关注数据的一致性,这样系统才是健壮的。

2017-08-11 14:33:22 377

转载 如何分析mysql的查询语句

在项目中,有时候时间紧,我们往往比较关注功能,对于性能关注度没有那么高,书写的SQL能够支持功能即可,但是在线上运行过程中,会出现各种问题,sql太慢,这时候我们的第一反应是是不是没走索引,于是找到DBA说加个索引,但是其实有了索引查询未必快,具体问题需要具体分析,对于查询,我们可以自己通过explain来分析一下,这样和DBA沟通起来会非常方便。        这里顺便总结一下mysql

2017-08-11 13:49:30 785 1

转载 项目管理

参加工作已经两年多了,加上实习的时间差不多快三年了,中间做过很多项目,但是成功的不多,PM,也就是所谓的项目经理做过很多次,有业务项目,有技术驱动项目,有大型跨团队项目,有了一些感悟,大概几个月前在团队内部做过一个分享,最近刚刚忙完双十一,就把之前的PPT简单翻译一下放出来吧。    ​    ​什么是项目?    ​    ​特定资源高质量的完成特定的任务。从这个简单的描述中,就

2017-08-11 10:53:25 396

原创 JAVA数组去除重复数据

前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现,有好多方法可以实现,现在就总结一下,比较简单的几种。一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List list = new ArrayList(); for (int i=0; istr.

2017-08-02 22:33:25 543

转载 Cglib代理

CGLIB和我们的java的动态代理是有区别的,CGLIB是代理的类,而我们的java动态代理是代理的对象 首先我们先说一个"好像"和我们要讲的东西不相干的东西.(其实很重要的,能带你拐一个小的弯.)首先有两个类,子类和父类,父类和子类有相同的方法,当我们调用父类的时候,执行的是父类还是子类?不管你知道我不知道,我确定是子类.(如果是字节码的画,谁调用的就是谁的字节

2017-07-18 17:41:12 286

转载 NIO入门

我们在写java程序的时候,为了进行优化,把全部的精力用在了处理效率上,但是对IO的关注却很少。这也可能是由以前java早期时JVM在解释字节码时速度慢,运行速率大大低于本地编译代码,因此以前往往忽视了IO的优化。但是现在JVM在运行时优化已前进了一大步,现在的java应用程序更多的是受IO的束缚,也就是将时间花在等待数据传输上。现在有了NIO,就可以减少IO的等待时间,从而提升IO的效率

2017-07-17 14:54:00 286

转载 Zookeeper入门

zookeeper可谓是目前使用最广泛的分布式组件了。其功能和职责单一,但却非常重要。在现今这个年代,介绍zookeeper的书和文章可谓多如牛毛,本人不才,试图通过自己的理解来介绍zookeeper,希望通过一个初学者的视角来学习zookeeper,以期让人更加深入和平稳的理解zookeeper。其中参考了不少教程和书,相关书目列在文末,也感谢这些作者。学习新的框架,先让我们搞清

2017-07-17 14:26:35 272

转载 Spring学习总结之高级装配

1.  profileprofile可以决定bean在什么环境下才被装配(开发环境、测试环境、线上环境等)@Profile(“dev”)可以用在class之前,也可以用在类之前(Spring3.2),表示类或者方法返回类只有在dev环境激活时才被创建;也可以在XML文件中配置。激活profile:作为DispatcherServelet的初始化参数         

2017-07-17 13:51:38 278

原创 zookeeper在dubbo中的作用

流程:1.服务提供者启动时向/dubbo/com.foo.BarService/providers目录下写下URL2.服务消费者启动时订阅/duubo/com.foo.BarService/providers目录下的URL,并向/dubbo/com.foo.BarService/consumers目录下写下自己的URL3.监控中心启动时订阅/dubbo/com.foo.BarSer

2017-07-17 11:14:33 876

转载 自己写一个java.lang.reflect.Proxy代理的实现

Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的。本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口、代理内容,生成代理。抛砖引玉吧,个人觉得自己写一些JDK里面的那些类挺好的,写一遍和看一遍真的是两个不同的概念,写一遍既

2017-07-16 10:51:06 368

转载 java泛型

Java泛型是JDK5引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用的时候使用具体的类型来替换。泛型最主要的应用是在JDK5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面上说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误。从不好

2017-07-14 11:18:33 287

转载 动态绑定 vs 静态绑定

动态绑定(又名后期绑定)动态绑定是指编译器在编译阶段不知道要调用哪个方法,直到运行时才能确定。让我们用个例子来解释。譬如我们有一个叫作’SuperClass’的父类,还有一个继承它的子类’SubClass’。现在SuperClass引用也可以赋给SubClass类型的对象。如果SuperClass中有个someMethod()的方法,而子类也重写了这个方法,那么当调用SuperClass引

2017-07-14 10:03:50 286

转载 什么是静态(static)?什么是静态方法,静态变量,静态块和静态类?

static是Java中的一个关键字,我们不能声明普通外层类或者包为静态的。static用于下面四种情况。静态变量:我们可以将类级别的变量声明为static。静态变量是属于类的,而不是属于类创建的对象或实例。因为静态变量被类的所有实例共用,所以非线程安全的。通常静态变量还和关键字final一起用,作为所有对象共用的资源或常量。如果静态变量不是私有的,那么可以通过ClassName.vari

2017-07-14 09:55:01 1953

转载 String类不可变性的好处

String是所有语言中最常用的一个类。我们知道在Java中,String是不可变的、final的。Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类。String类不可变性的好处只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是

2017-07-14 09:47:44 924

转载 深入理解Java中的final关键字

Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。final关键字的含义?final在Java中是一个保留的关键字,可

2017-07-14 09:39:46 191

转载 TKmybatis的框架介绍和原理分析及Mybatis新特性演示

tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效,下面来看看这个框架的基本使用,后面会对相关源码进行分析,感兴趣的同学可以看一下,挺不错的一个工具实现对员工表的增删改查的代码 Java的dao层接口public interface WorkerMapper extends MapperWorker> {}1212xml映射文件mapper n

2017-07-13 16:05:46 780

转载 使用IntelliJ IDEA查看类的继承关系图形

最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟。这次利用了IDEA的diagram,结果一目了然,也是好用到炸裂,就此分享。1、查看图形形式的继承链在你想查看的类的标签页内,点击右键,选择 Diagrams,其中有 show 和 show ... Popup,只

2017-07-06 11:07:58 22963 3

转载 使用git和github进行协同开发流程

目录前言仓库(Repository)源仓库开发者仓库分支(Branch)永久性分支暂时性分支工作流(workflow)总结参考资料前言(本文假设各位已经对基本git的基本概念、操作有一定的理解,如无相关git知识,可以参考Pro Git这本书进行相关的学习和练习)很多项目开发都会采用git这一优秀的分布式版本管理工具进行项目版本管理,使用gi

2017-06-24 20:16:29 552

转载 Git的核心概念

版本控制系统Git 是目前世界上最优秀的分布式版本控制系统。版本控制系统是能够随着时间的推进记录一系列文件的变化以便于你以后想要的退回到某个版本的系统。版本控制系统分为三大类:本地版本控制系统,集中式版本控制系统和分布式版本控制系统本地版本控制(Local Version Control Systems)是将文件的各个版本以一定的数据格式存储在本地的磁盘(有的VCS 是保存文件

2017-06-24 17:19:08 428

转载 搜索引擎solr和elasticsearch

刚开始接触搜索引擎,网上收集了一些资料,在这里整理了一下分享给大家。一、关于搜索引擎搜索引擎(Search Engine)是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链

2017-06-02 14:40:06 419

转载 Linux的五个查找命令

最近,我在学习Linux,下面是一些笔记。使用电脑的时候,经常需要查找文件。在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的。1. findfind是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。find的使用格式如下:

2017-04-06 23:25:30 311

转载 jQuery设计思想

jQuery是目前使用最广泛的javascript函数库。据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库。微软公司甚至把jQuery作为他们的官方库。对于网页开发者来说,学会jQuery是必要的。因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果。虽然jQuery上手简单,比其他库容易学会,但是要全面掌

2017-04-06 23:19:03 357

转载 js 回调

回调概念理解一个新东西,很有必须去理解下它的概念,因为这是最简洁明了,前人总结的。A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.中文意思:回调是一个函数被作

2017-04-06 22:08:53 401

转载 Javascript异步编程的4种方法

你可能知道,Javascript语言的执行环境是"单线程"(single thread)。所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是

2017-04-06 21:59:02 230

转载 理解数据结构

理解数据结构最近在学习各种数据结构,于是就在想,为什么我们需要数据结构呢? 为什么要设计这么多数据结构?数据结构到底解决了我们什么样的问题?我们提到 数据结构 时,一般是指计算机科学中的一个概念, 但是从本质上讲,数据结构应该是指对数据的一种组织方式。既然如此,我们没必要非在计算机科学领域中讨论 概念本身,把它放在其它领域中,可能更能加强我们的理解。就说图书管吧,假如你

2017-04-04 23:16:03 245

转载 深入理解计算系统」从Hello World开始

从 hello world 开始Table of Contents1 程序源文件2 程序源文件是什么3 程序被编译4 程序运行4.1 读取命令4.2 读取指令内容4.3 执行过程5 进程5.1 进程切换5.2 虚拟地址空间1 程序源文件#include int main() { printf ("hello, wo

2017-04-04 23:08:27 355

转载 Git

CVS和Subversion有很多不同的地方。但如果将这两者和git比较,那么git看起来就像孙权的碧眼,有一些怪异。git的作者是Linus Torvald。对,就是写Linux Kernel的那个Linus Torvald。Linus在贡献了最初的Linux Kernel源代码之后,一直领导着Linux Kernel的开发。Linus Torvald本人相当厌恶CVS(以及Subversi

2017-03-15 22:26:50 320

转载 Spring并发访问的线程安全性问题(高度总结)

下面的记录对spring中并发的总结。理论分析参考Spring中Singleton模式的线程安全,建议先看spring中的并发访问题:我们知道在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域。那么对于有状态的bean呢?Spring对一些(如RequestContextHolder、Transacti

2017-03-11 23:54:02 17684 3

转载 Spring 并发访问的线程安全性问题

首先对于Spring的IOC来说,对象是由Spring来帮我们管理,也就是在Spring启动的时候,在Spring容器中,由Spring给我们创建的,Spring会帮我们维护,一般都是单例的,也就是一个对象。 spring生成对象默认是单例的。通过scope属性可以更改为多例。 第一部分:验证Spring生成对象默认是单例的。 下面我们来一个网上的例子验证一下: 

2017-03-11 23:49:44 425

转载 理解Mysql的索引与优化

转自:http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取

2017-03-11 23:32:35 267

转载 servlet/filter/listener/interceptor区别与联系

由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet、filter、listener?还有个interceptor?对于这

2017-03-11 23:22:07 293

空空如也

空空如也

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

TA关注的人

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