- 博客(160)
- 资源 (28)
- 收藏
- 关注
原创 springboot 使用CGLib 方式实现AOP代理
前言:Spring boot 和使用Spring 完全是两个不同的样子,一个是前者是基于编程式,后者是基于XML配置。一、如何使用CGLIB动态代理spring 的动态代理默认是jdk的动态代理,需要在application.properties或者application.yml去设置如下属性:application.properties:spring.aop.
2017-08-17 17:28:53 17169 3
原创 Spring IoC容器(一)
前言:本章涵盖了反向控制(IoC)原理的Spring框架实现。IoC也称为依赖注入(DI)。简介Spring IoC容器和bean:IoC我们常说是控制反转,IoC也称为依赖注入(DI)。它是一个过程,对象定义它们的依赖关系,也就是他们工作的其他对象,只有通过构造函数参数,工厂方法的参数,或者在从工厂方法构造或返回后在对象实例上设置的属性。然后,容器 在创建be
2017-08-16 17:22:09 380
原创 通过反射把数据库表生成实体类
import org.apache.commons.lang3.time.DateFormatUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.File;import java.io.FileWriter;import java.io.PrintWriter;import java.sql
2017-08-16 15:53:56 2917
原创 Spring aop 通过获取代理对象实现事务切换
摘要:在项目中,涉及到同一个类中一个方法调用另外一个方法,并且两个方法的事务不相关,这里面涉及到一个事务切换的问题,一般的方法没问题,根据通过aop注解在方法上通过加注解标识,答案是:通过spring aop类里面的AopContext类获取当前类的代理对象,这样就能切换对应的事务管理器了,具体做法如下:(1).在applicationContext.xml文件中配置如下:
2017-08-11 18:51:30 5307
转载 Spring AOP 实现机制
(1)AOP的各种实现在编译器修改源代码、在运行期字节码加载前修改字节码或字节码加载后动态创建代理类的字节码。以下是各种实现机制的比较: 类别分为静态AOP(包括静态织入)和动态AOP(包括动态代理、动态字节码生成、自定义类加载器、字节码转换)。静态织入:a、原理:在编译期,切面直接以字节码形式编译到目标字节码文件中 ;b、优点:对系统性能无影响;
2017-08-11 18:40:32 270
原创 OpenResty通过Lua扩展NGINX实现的可伸缩的Web平台
安装对于一些常见的 Linux 发行版本,OpenResty® 提供 官方预编译包。确保你首先用这种方式来安装。对于 Mac OS X 或 macOS 用户,强烈推荐您使用 homebrew 包管理工具安装 OpenResty。可以直接使用下面 这一条命令:brew install homebrew/nginx/openresty如果您还没有下载 Ope
2017-08-11 18:36:39 1021
原创 Spring AOP 方面的一些属性详解分析
前言:JDK与CGLIB代理差异JDK动态代理:代理对象必须为某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理CGLIB代理:原理类似于JDK代理,不同之处在于运行期间生成的代理对象是针对目标类扩展的子类,CGLIB是高效代码生成包,底层是依靠ASM(字节码编辑类库)操作字节码实现的,性能比JDK强。expose-proxy 目标对象内部
2017-08-11 18:33:24 612
原创 Spring AOP 动态代理机制
Spring AOP通过代理模式实现,目前支持两种代理:JDK动态代理、CGLIB代理来创建AOP代理,Spring建议优先使用JDK动态代理。JDK动态代理:使用java.lang.reflect.Proxy动态代理实现,即提取目标对象的接口,然后对接口创建AOP代理。CGLIB代理:CGLIB代理不仅能进行接口代理,也能进行类代理,CGLIB代理需要注意以下问题:
2017-08-11 17:23:01 645
转载 Spring 之AOP AspectJ切入点语法详解
6.5 AspectJ切入点语法详解6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点; within:用
2017-08-11 15:46:48 328
转载 为什么要使用队列 - Java
一、java中的队列:Queue接口Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用
2017-08-09 15:33:24 9213
转载 乐观锁的一种实现方式——CAS
在深入理解乐观锁与悲观锁一文中我们介绍过锁。本文在这篇文章的基础上,深入分析一下乐观锁的实现机制,介绍什么是CAS、CAS的应用以及CAS存在的问题等。线程安全众所周知,Java是多线程的。但是,Java对多线程的支持其实是一把双刃剑。一旦涉及到多个线程操作共享资源的情况时,处理不好就可能产生线程安全问题。线程安全性可能是非常复杂的,在没有充足的同步的情况下,多个线程中的操作执行顺
2017-08-09 10:59:10 301
转载 使用 RMI + ZooKeeper 实现远程调用框架
在 Java 世界里,有一种技术可以实现“跨虚拟机”的调用,它就是 RMI(Remote Method Invocation,远程方法调用)。例如,服务A 在 JVM1 中运行,服务B 在 JVM2 中运行,服务A 与 服务B 可相互进行远程调用,就像调用本地方法一样,这就是 RMI。在分布式系统中,我们使用 RMI 技术可轻松将 服务提供者(Service Provider)与 服务消费者(Se
2017-08-09 10:57:27 376
转载 面试必备 | 深入解析Java垃圾回收机制
深入解析Java垃圾回收机制引入垃圾回收哪些内存需要回收?引用计数法可达性分析如何回收Marking 标记Normal Deletion 清除Deletion with Compacting 压缩为什么需要分代收集?JVM的分代新生代老年代永久代分代垃圾收集过程详述引入垃圾回收程序计数器、 虚拟机栈、 本地方法栈3个区域随线程而生,随线程
2017-08-09 10:10:41 2792 1
原创 Springboot搭建web项目访问自定义位置的html页面
xml配置文件如下: org.springframework.boot spring-boot-starter-parent 1.5.6.RELEASE UTF-8 UTF-8 1.8 1.7 org.springframework.boot spring-boot-starter org.spri
2017-08-05 17:51:51 38187 2
原创 Java8函数式编程(一)
函数式编程详解:前言:现在有很多公司都用了jdk8,但是函数式编程也许没有用上,jdk8也提供了很多API,比喻Stream API,等等。流式编程是它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。非函数式编程是串行操作。也就是jdk8之前的操作。可以说性能提升不少。但是使用的姿势也要多注意,坑也是有的
2017-08-03 22:53:28 3251
转载 logback日志配置
前言:logback比log4j好用,下面介绍开发步骤。步骤:1、添加jar依赖关系时,要加入slf4j和logback的jar包,slf4j需要的jar包为slf4j-api,logback需要3个jar包(logback-access、logback-classic、logback-core)。2、slf4j下载地址:https://www.slf4j.org/download
2017-08-03 10:00:11 891
转载 正确认识Docker、Kubernetes 、Apache Mesos
无数的文章、社交媒体在探讨Docker、Kubernetes、Mesos三者之间孰优孰劣。如果你听信了某些一知半解者的言论,你可能会认为这三个开源项目正在为争夺容器霸权而殊死战斗。同时,你也会相信,在这三者间的选择无异于对其所奉宗教的信仰,而且真正的信徒敢于大胆和异教徒作斗争,并且拥护自己的信仰。那些都是扯淡。虽然这三种技术都可以使用容器来部署、管理和扩展应用程序,但实际上它们每个
2017-08-03 09:33:53 771 1
转载 logback高级特性,异步记录日志
异步记录日志AsyncAppender,异步记录日志。工作原理:当Logging Event进入AsyncAppender后,AsyncAppender会调用appender方法,append方法中在将event填入Buffer(这里选用的数据结构为BlockingQueue)中前,会先判断当前buffer的容量以及丢弃日志特性是否开启,当消费能力不如生产能力时,A
2017-08-03 09:29:00 11870
原创 logback高级特性,异步记录日志
logback异步输出日志 %d{yyyy-MM-dd HH:mm:ss} [%level] - %m%n /var/log/sssj_.%d{yyyy-MM-dd}.log 180
2017-08-02 17:36:12 5550
转载 HashMap的内部实现机制,Hash是怎样实现的,什么时候ReHash
1.HashMap的内部实现机制HashMap是对数据结构中哈希表(Hash Table)的实现,Hash表又叫散列表。Hash表是根据关键码Key来访问其对应的值Value的数据结构,它通过一个映射函数把关键码映射到表中一个位置来访问该位置的值,从而加快查找的速度。这个映射函数叫做Hash函数,存放记录的数组叫做Hash表。在Java中,HashMap的内部实现结合了链表和数组的优势
2017-08-02 17:32:06 1350
原创 Spring Security 与 Oauth2 整合 步骤
spring-security-oauth2的项目地址为 https://github.com/spring-projects/spring-security-oauth/tree/master/spring-security-oauth2spring-security-oauth2的demo 地址为 https://github.com/spring-projects/spring-se
2017-07-31 15:59:27 2044
原创 请键入NET HELPMSG 3534以获得更多的帮助
请键入NET HELPMSG 3534以获得更多的帮助,移步至另外一篇博客,可以解决以上问题:点击打开链接
2017-07-31 09:21:24 3571
原创 【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
前言: 由于笔记本好久没用了,启动MYSQL服务不知哪里出问题了,报错如下:本地计算机上的MySQL57服务启动后停止。某些服务在未由其他服务或程序使用时自动停止。 MYSQL版本是5.7,在网上搜到了一切解决方案, 大部分都是不可行的。 mysql版本:5.7 操作系统:WIN10 mysql安装根目录没有发现data文件夹。所以我们自己创建一个data命名的
2017-07-30 16:27:43 23601 2
原创 git remote: Repository not found.
使用git不当,导致本地的文件无法推送到远程git repository,解决方案如下:使用命令添加远程仓库地址:git remote add origin urlurl是远程仓库地址。
2017-07-28 18:01:23 10645 1
原创 Spring Boot修改启动类
前言:spring boot默认情况下是自带了一个嵌入式容器,也就是不用部署在tomcat或jetty容器中即可访问及运行,所以,需要打包构建war及部署在服务器上,必须修改启动类:如下:/** * 默认情况下是自带的嵌入式容器,如果需要构建war文件并进行部署时 * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 *
2017-07-28 15:35:09 8658
原创 SpringBoot支持JSP访问,启动报错java.lang.NoClassDefFoundError: javax/servlet/ServletContext
这篇文章中, 我们将使用IntelliJ IDEA开发一个带有Spring Boot所提供的内嵌tomcat的Spring MVC 应用程序示例。 示例源码是官网下载下来。记录一下所踩过的坑。有什么疑问可以在评论区提问,谢谢。环境:JDK1.8IntelliJ IDEA/EclipseMavenSpring Boot 1.5.6首先,去官网翻阅了一下文档找到
2017-07-28 13:43:55 30327 3
原创 CentOS7安装MySql遇到的问题
一、官网Mysql的下载链接:https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm二、下载mysql rpm包:wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 下载mysql rpm包时可能会出
2017-07-26 14:28:20 11009 1
原创 spring boot 不同的环境使用不同的配置
server: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 port: 80# 默认的profile为dev,其他环境通过指定启动参数使用不同的profile,比如: # 测试环境:java -jar my-spring-boot
2017-07-24 15:24:21 1022
原创 application.properties或application.yml 文件中常用属性介绍
本文提供了常见的Spring Boot属性和对使用它们的基础类的引用的列表。#=============================================== ================== #COMMON SPRING BOOT PROPERTIES ##以示例文件为准则。不要将其全部复制到您自己的应用程序。^^^ #====================
2017-07-21 16:48:38 3081
原创 hibernate延迟加载(get和load的区别)
前言:在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对象时是有区别及性能方面的区别。一.load加载方式当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用session.lo
2017-07-18 17:25:14 409
原创 java中常用的技术方案:分布式锁
1.有人可能会问是否可以考虑采用ReentrantLock来实现,但是实际上去实现的时候是有问题的,ReentrantLock的lock和unlock要求必须是在同一线程进行,而分布式应用中,lock和unlock是两次不相关的请求,因此肯定不是同一线程,因此导致无法使用ReentrantLock。2. 基于数据库表做乐观锁,用于分布式锁。3. 使用memc
2017-07-17 15:20:07 451
原创 java (String)强转 和 toString() 的区别
toString() 和 强制类型转换 (String)前言:说到toString()和(String), 我相信初学者有很多人在使用toString方法时踩过的坑,本文章介绍toString()和(String)的区别,及如何去避免发生不可预测的错误。首先,先看一下API文档上Object类的方法简介,如下:Method SummaryMethods
2017-07-17 14:13:20 19244 1
原创 Spring框架面试题详解
1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2. 使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB
2017-07-16 12:50:30 2839
原创 Java问题排查工具箱
问题排查除了最重要的解决思路和逻辑推导能力外,工具也是不可缺少的一部分,一个好用的工具可以事半功倍,甚至在某些情况下会因为没有相应的工具而压根就没法继续进行下去,这篇文章就来讲讲在排查Java问题时通常要用到的一些工具(ps:这种文章值得收藏,看一遍其实很容易忘)。日志相关工具查问题的时候会非常依赖日志,因此看日志的相关工具非常重要,通常的话掌握好tail,find,fgrep,awk这几
2017-07-16 12:48:41 413
原创 Spring框架注解详解
1. 什么是基于Java的Spring注解配置? 给一些注解的例子.基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Spring IOC容器使用。另一个例子是@Bean注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用
2017-07-16 12:43:45 1354
原创 SpringBoot:四种读取properties文件的方式
前言在项目开发中经常会用到配置文件,配置文件的存在解决了很大一份重复的工作。今天就分享四种在Springboot中获取配置文件的方式。注:前三种测试配置文件为springboot默认的application.properties文件#######################方式一#########################com.battle.type3
2017-07-15 11:40:29 43456 2
原创 Springbootk框架的注解大全
@SpringBootApplication:包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上。@Repository:用于标注数据访问组件,即DAO组件。@Service:用于标注业务层组件。@RestController:用于标注控制层组件(如struts中的action),包含@Co
2017-07-15 10:58:48 500
原创 SpringBoot使用logback实现日志按天滚动
需求日志按天滚动分割info和error日志输出到不同文件为什么使用Logback在这里,我不去深究的讨论各个日志框架的优劣,网上的对比文章实在太多了。我只说以下几点理由。Logback是Log4j的升级版,作者为同一个人,作者不想再去改Log4j,所以写了Logbak使用日志框架的最佳实践是选择一款日志门面+一款日志实现,这里选择Slf4j+Logback, Slf4
2017-07-15 10:49:56 17609 1
转载 Java多线程和操作系统多线程关系
这篇文章要讨论的是Java编程中的多线程和操作系统中的多线程的区别问题。线程状态。首先两者的线程状态是一样的。(创建、就绪、执行、阻塞、终止),其实这五个状态也是进程的状态。那么Java中的多线程 和 OS中的多线程的区别在哪里?我们先来看下OS中的线程实现OS中线程的实现有三种,一种是用户级线程ULT(UserLevelThreads),一种是内核支持线程KS
2017-07-12 11:14:36 1134
原创 Iterator在java中的工作原理
很多时候你会在你的采访中被问到这个问题。例如Iterator在java中如何工作,如何从中删除对象List?从列表中删除对象时,可能会产生ConcurrentModificationException什么?在Java中,当您创建一个迭代器时,它开始计算在集合上应用的修改。如果迭代器检测到在不使用其方法(或在同一集合上使用另一个迭代器)的情况下进行了一些修改,则不能再保证它不会在同一个元素上
2017-07-11 16:25:16 1194
Logback手冊高清中文版
2018-11-20
RabbitMQ实战指南_2017.11_有书签-完整版
2018-07-30
emacs-24.3-bin-i386.zip
2017-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人