自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

十点半i睡觉

Hello World.

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

原创 SpringMVC 处理流程

Tomcat 收到一个请求时,透过一系列组件的执行,到达 DispatcherServlet:DispatcherServlet.java@Overrideprotected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception { ... ....

2018-08-18 21:38:14 337

转载 MyBatis缓存机制

出处微信公众号:美团技术团队

2018-07-31 14:52:23 495

转载 面试题--Java基础

1、什么是线程局部变量线程局部变量是局限于线程内部的变量,属于一个线程自身独有,不参与到多个线程的共享。Java提供了 ThreadLocal 类来支持线程局部变量,这是一种实现线程安全的方式。另外,在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。任何线程局部变量一旦在工作完成后没有释放,应用就存在内存泄露的风...

2018-07-31 13:40:41 307

转载 Java 中对象的生命周期与垃圾回收

文章转自:耿玉龙垃圾回收垃圾回收是 Java 程序设计中内存管理的核心概念,JVM 的内存管理机制被称为垃圾回收机制。 一个对象创建后被放置在 JVM 的堆内存中,当永远不再引用这个对象时,它将被 JVM 在堆内存中回收。被创建的对象不能再生,同时也没有办法通过程序语句释放它们。即当对象在 JVM 运行空间中无法通过根集合到达(找到)时,这个对象被称为垃圾对象。根集合是由类中的静态引用...

2018-06-04 15:17:37 1061

原创 逻辑题--动动小脑袋

如果你是老板,员工每个星期工作7天就能获得一根金条。在实行激励机制的情况下,员工每天的付出都需要获得回报;试问,在金条只能分割两次的情况下,该如何给员工发放连续7天的奖励?解: 分割两次的情况下,分成7等分显然是不可能的。 只需要将金条分割为 1 : 2 : 4 比例的三份,即可。 第一天:奖励 1 第二天:奖励 2 ,要回 1 第三天:奖励 1 第四天:奖励 4 ,要回 1 和 ...

2018-06-04 14:25:23 521

原创 Java对象的初始化过程

一个对象的初始化过程从其父类开始:class SuperClass { // static member static Process staticMember = new Process("[super] static member"); // common member Process commonMember = new Process("[sup...

2018-06-04 13:04:53 395 1

转载 浅谈Nginx负载均衡与F5(硬件)的区别

前言笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务。 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别。目前很多网站或应用在设计之初都...

2018-05-17 14:58:16 7994

转载 xss 攻击介绍

作者:[bangerlee](http://www.cnblogs.com/bangerlee/)原文:[http://www.cnblogs.com/bangerlee/archive/2013/04/06/3002142.html](http://www.cnblogs.com/bangerlee/)xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类...

2018-05-10 15:45:42 466

翻译 Netflix Hystrix 是如何运行的

项目地址:Netflix Hystrix Github 文章译自:Hystrix/wiki/How-it-Works 阅读本文章前,请先了解 Hystrix 的一些基本概念( What is Hystrix )。流程图下面的图标展示了当借助Hystrix构造请求到一个服务依赖项时会发生 下面部分将更详细地解释上述流程: 1. 构造一个 HystrixCommand 或 Hys...

2018-05-08 18:58:27 1532

原创 Eureka Helloworld 简单入门事例以及遇到的问题

本文参照Eureka Github的演示Demo,在自己实践时,发现了官方的sample存在的一些问题(可能官方没更新),文档和网上的资料不多,无法详细获取到解决方案,只能自己倒腾出来,blog记录一下。 参照源码:Eureka-Sample Github 在看此文章前,希望你先阅读Eureka官方文档以了解一些基本概念。Eureka 运行架构 Eureka Server:...

2018-05-04 14:34:27 718

转载 高并发网络编程之Epoll详解

在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。本文便来介绍epoll的实现机制,并附带讲解一下select和poll。通过对比其不同的实现机制,真正理解为何epoll能实现高并发。select...

2018-04-11 13:15:05 477

转载 Restlet Introduction

1.什么是rest    REST是表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格 。要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。· 资源是由URI来指定。· 对资源的操作包括获

2017-12-04 17:08:38 298

转载 乐观锁与悲观锁

悲观锁(Pessimistic Lock)顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock)顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在

2017-11-12 16:33:46 382

转载 Apache Lucene 全文搜索框架

1、什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。  2、lucene能做什么  要回答这个问题,先要了解lucene的本质。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你要

2017-10-16 14:58:25 449

转载 Java 中的 Reference

在 jdk 1.2 及其以后,引入了强引用、软引用、弱引用、虚引用这四个概念。网上很多关于这四个概念的解释,但大多是概念性的泛泛而谈,今天我结合着代码分析了一下,首先我们先来看定义与大概解释(引用类型在包 java.lang.ref 里)。  1、强引用(StrongReference)    强引用不会被GC回收,并且在java.lang.ref里也没有实际的对应类型。举个例子来说:    Obj

2017-10-10 17:23:42 342

转载 Java 8 中的惰性求值 -- Supplier

在开发中,我们经常会遇到一些需要延迟计算的情形,比如某些运算非常消耗资源,如果提前算出来却没有用到,会得不偿失。在计算机科学中,有个专门的术语形容它:惰性求值。惰性求值是一种求值策略,也就是把求值延迟到真正需要的时候。在Java里,我们有一个专门的设计模式几乎就是为了处理这种情形而生的:Proxy。不过,现在我们有了新的选择:Supplier。 我们先来看看 Supplier 的定义: pub

2017-10-10 10:13:42 4722 4

转载 PCA的数学原理

PCA(Principal Component Analysis,主成分分析)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理。这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么。当然我并不打算把文章写

2017-09-13 15:28:42 405

转载 关于消息队列的使用场景

关于消息队列的使用 一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。

2017-08-14 11:20:24 439

转载 分析动态代理Java JDK 动态代理(AOP)使用及实现原理分析

一、什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。代理模式UML图:简单结构示意图: 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,

2017-03-31 17:42:08 585

原创 IntelliJ 中Maven pom.xml依赖不生效解决

问题描述:在IntelliJ中创建了Maven项目,并在pom.xml中加入了 slf4j 和 log4j 的依赖,但在编写程序时发现IntelliJ根本没有关于 slf4j 和 log4j 的文本辅助,查看之下才发现pom.xml中的依赖虽然已经下载到了本地仓库 repository,但是却没有加入到项目路径的 Extenal Libraries 中。 如图: 在google,百度之后并没有发

2017-03-29 10:17:12 42868 7

转载 【OSGI】1.初识OSGI-到底什么是OSGI

目前,业内关于OSGI技术的学习资源或者技术文档还是很少的。我在某宝网搜索了一下“OSGI”的书籍,结果倒是有,但是种类少的可怜,而且几乎没有人购买。因为工作的原因我需要学习OSGI,所以我不得不想尽办法来主动学习OSGI。我将用文字记录学习OSGI的整个过程,通过整理书籍和视频教程,来让我更加了解这门技术,同时也让需要学习这门技术的同志们有一个清晰的学习路线。我们需要解决一下几问题:1.如何正

2017-02-11 11:10:33 878

原创 CentOS 7 防火墙 firewall

Linux 各版本系统防火墙命令通常为 iptables,然而 CentOS 7 上无效,传说Centos7 下默认的防火墙是 Firewall,替代了之前的 iptables…….常用命令介绍firewall-cmd --state ##查看防火墙状态,是否是runningfirewall-cmd --reload

2017-01-17 13:37:42 706

转载 IntelliJ IDEA 运行 Maven 项目

1.官方文档说IntelliJ IDEA已经自身集成了maven,则不用劳心去下载maven 2.导入一个程序,看是否是maven程序的关键在于工程之中有没有pom.xml这个文件,比如这里3.为这个工程配置好服务器3.1 点击“Edit Configurations” 3.2 进入Run/Debug Configurations 窗口,点击左上角的 “+”3.3 在弹出的“Add New

2016-12-30 09:53:35 15875 1

原创 Redis 初接触

Linux 下安装完 Redis 后,可通过如下方式启动:可执行文件 redis-server # redis-server位置: 安装目录下 src/redis-server // 安装目录下 ./src/redis-server# 这种方式启动以默认的配置文件启动 redis这种方式不是以后台进程运行,在启动后用户若要进行其他操作需要另外开启终端。后台进程

2016-12-27 12:05:57 645

原创 Js 识别 Android 或 Ios

var ua = navigator.userAgent.toLowerCase(); if (/iphone|ipad|ipod/.test(ua)) { alert("ios"); } else if (/android/.test(ua)) { alert("android"); }navigator

2016-12-27 10:53:34 419

原创 CentOS 7 安装 Redis-3.2.6

Redis下载 此处官网提供的途径,有两种方式,分别是网页下载或者使用 wget 自动下载.官网下载点击链接,即可进入到下载页面,可以官网上提供了三个主要版本的选择: Stable: 稳定版 Beta: 测试版 UnStable: 不稳定版选择 Stable 版本,下载;下载结束后,将下载页面往下拉,可以看到安装教程,安装教程中给出了 wget 下载的方式:$ wget http

2016-12-23 14:32:14 1366

转载 Java 代码性能优化技巧

Java性能优化技巧参考了些书籍,网络资源整理出来,适合于大多数Java应用在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。1.尽量使用final修饰符。带有final修饰符的类是不可派生的。在JAVA核心API中,有许多应用final的例子,例如java.lang.String。为String类指定final防止了使用

2016-12-20 19:05:01 453

转载 分布式系统中的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题:1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 通常,我们会通过两种手段来扩展我们的数据服务:1)数据分区:就是把数据分块放在不同的服务器上(如:

2016-12-19 12:07:51 638

原创 Linux 命令

切换用户: su <用户名称> 如: su root跳转到指定目录下: cd <路径> 如: cd /usr/local上一级目录: cd ..根目录:cd当前目录下文件列表: ls当前目录下文件列表(包括隐藏文件): ls -a当前目录下文件列表(详细信息): ll创建一个目录: mkdir <路径> 如: mkdir /usr/local/look删除制定目录(空目录):

2016-11-28 14:00:58 326

原创 SVN 使用大全

window下 svn 客户端使用导入(Import) SVN 管理项目的前提是该项目进入过 SVN 仓库中,SVN 对其记录了文件、版本、时间戳等信息,以诸多项目有关信息来维护管理版本一致性;进入过 SVN 仓库后,才能对该项目进行一系列 SVN 维护版本的其他操作,如检出、更新,加锁等…… 所以现在先将项目导入到 SVN 库中.I. 打开小乌龟安装后在 window 开始菜单下的目录 或者

2016-11-25 11:22:25 673

原创 linux 下 svn 服务器报错

/home/svnrepo/repository/conf/svnserve.conf:19: Option expected这个问题特别无语也特别没意思….因为是空格引起的….你会发现 anon-access = none ;auth-access = write 这俩句前面有空格…..把空格删除掉就 ok 了….改动后不用重启 svn。

2016-11-24 15:06:08 446

原创 Window 10上安装 linux centOS 7 --> 双系统

小白上手,头晕脑胀一整天……特在此记录下安装大概流程网上一大堆各种各样的教程,有些人(像傻逼博主)想直接在 window 下无U盘安装,以为这样会很方便,谁不知对着教程走一遍之后,越走越懵逼…….下载一大堆乱七八糟的软件,又是分区,又是写启动盘,又是安装引导…..后来才发现,还是乖乖找个U盘,没那么费事。1. 首先分区 先说明: linux使用的是 Ext3 文件系统,而 window

2016-11-24 11:51:37 744

原创 MessageDigest

MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。 MD5算法的使用不需要支付任何版权费用。百度上搜MD5会出现一大堆加密解密,但实际上MD5不是一种加密算法,只是一种算法,因为它是一个不可逆的过程,即 MD5 生成消息摘要后是不能通过结果解析得到原来的内容。MD5用途 MD5生成的消息摘要通常的用途是用来校验

2016-11-23 16:34:58 699

原创 Google ProtoBuf 初试

偶然在项目中接触到游戏服务器的,游戏服务器与JavaWeb后台管理系统的数据交换,用的便是Google ProtoBuf,先来说下什么是Google ProtoBuf: protoBuf 是一种平台无关、语言无关、扩展性好的用于通信协议、数据存储的结构化数据串行化方法。 是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码

2016-11-18 18:01:42 537

转载 JVM 运行时数据区域

Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图: 程序计数器 程序计数器是一块较小的内存空间,字节码解释

2016-11-08 11:47:51 337

原创 MySql优化--慢查日志

慢查日志 顾名思义是MySql针对查询数据时效率低的监控,根据出现的问题优化SQL语句。使用MySql慢查日志对有效率问题的SQL进行监控(Windows下): //查看慢查日志记录是否开启,OFF 表示未开启 show variables like 'slow_query_log' //查看慢查日志的保存位置 show variables like 'slow_que

2016-11-03 10:45:50 563

原创 MySql -- cmd命令汇总

登录: mysql -u [username] -p [password] mysql -u root -p root退出: exit quit查看数据库: show databases;注意 databases 是复数,有个 " s ".使用(进入)数据库: use [databases];创建数据库: // 1. 创建数据库 create

2016-11-03 10:21:04 504

转载 ConcurrentHashMap & HashMap

ConcurrentHashMap融合了hashtable和hashmap二者的优势。hashtable是做了同步的,hashmap未考虑同步。所以hashmap在单线程情况下效率较高。hashtable在的多线程情况下,同步操作能保证程序执行的正确性。但是hashtable每次同步执行的时候都要锁住整个结构。看下图:图左侧清晰的标注出来,lock每次都要锁住整个结构。ConcurrentHashM

2016-11-02 20:07:59 365

原创 Hibernate 建立双向多对多关联关系

在实际业务处理中,往往会存在很多复杂的数据关联关系,所以在使用 Hibernate 的时候需要掌握好,如何建立数据关联的不同关系,如单向一对多,单向多对一,单向多对多,双向一对多,双向多对多…….现在记录学习如何在 Hibernate 中建立双向多对多的复杂关联关系: 以书店 BookStore 和书本 Book 为例子,一个书店存放很多不同类型的书,一本书可以在多家书店中存货,这样形成一种双向的

2016-10-23 14:44:01 427

原创 Hibernate 关联关系中toString引起的死循环

在使用 Hibernate 建立关联关系时,由于测试使用的 toString 方法不当,引起了互相递归调用的死循环,具体情况如下:建立数据库表对应的 Bean 类 Customer. java private int customer_id; private String customer_name; private Set<Order> orders; @Overr

2016-10-23 14:16:51 2076

空空如也

空空如也

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

TA关注的人

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