- 博客(38)
- 收藏
- 关注
原创 使用多线程提高REST服务性能
Callable:主线程很快返回,副线程继续处理@RestControllerpublic class AsyncController { private Logger logger = LoggerFactory.getLogger(getClass()); @RequestMapping("/order") public Callable<String> orde...
2020-03-17 16:14:54
258
原创 uploadFile & downloadFile
@RestController@RequestMapping("/file")public class FileController { private String folder = "/Users/zhailiang/Documents/my/muke/inaction/java/workspace/github/fkandy-security-demo/src/main/java/c...
2019-11-24 19:56:51
629
原创 Restful 一点优化
@RequestMapping(value="/user",method = RequestMethod.GET)==>@GetMapping@RequestMapping(value="/user/{id:\\d+}",method = RequestMethod.PUT)==>@PutMapping("/{id:\\d+}")PostMapping DeleteMap...
2019-11-24 19:20:08
268
原创 Filter->Interceptor->Controller Advice->Aspect->controller
Filter://creat filterpublic class TimeFilter implements Filter { @Override public void destroy() { System.out.println("time filter destroy"); } @Override public void doFilter(Servle...
2019-11-24 19:06:09
253
原创 batch script handle folder
使用batch 脚本遍历指定pattern的文件夹,替换file.json 值。@echo off::设置字符集chcp 65001set file_path=C:\dev\set pattern=I????-?set f=file.jsonfor /f "delims==" %%i in ('dir "%file_path%%pattern%" /ad/b/s') do (...
2019-11-20 12:59:39
206
原创 java8 function 活用
问题:有多个方法含有以下类似的重复代码,以后可能会需要更多返回不同类型的方法。通过什么方式可以避免代码重复,任何方式都可以。某些设计模式可行吗? public static Date readDate(String dir, String fileName) { Path path = Paths.get(dir, fileName); try (BufferedReader br...
2019-01-12 14:30:09
1112
转载 sql优化
在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t ...
2018-07-31 20:28:16
144
转载 Java高级工程师面试题总结及参考答案
一、面试题基础总结1、 JVM结构原理、GC工作机制详解答:具体参照:JVM结构、GC工作机制详解 ,说到GC,记住两点:1、GC是负责回收所有无任何引用对象的内存空间。 注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,2、GC回收机制的两种算法,a、引用计数法 b、可达性分析算法( 这里的可达性,大家可以看基础2 Java对象的什么周期),至于更详细的GC...
2018-07-29 12:43:49
891
原创 索引几种算法
数据库mysql索引:使用B树索引下面介绍一下B树索引:Lucene全文检索使用:二分查找下面介绍一下二分查找:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列;1、时间复杂度:因为每次的查找都会比上一次少一半的范围,时间复杂度为O(log n).2、二分法必须事先经过排序,且数据量必须直接在...
2018-04-20 15:19:17
5535
1
转载 垃圾回收机制
原文:https://www.cnblogs.com/andy-zcx/p/5522836.html深入理解 Java 垃圾回收机制一:垃圾回收机制的意义java 语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理。由于有个垃圾回收机制,java中的额对象不在有“作用域”的概念,只有对象的引用才有“作...
2018-04-06 14:09:00
277
转载 List、Set、Map的区别
原文:https://www.cnblogs.com/IvesHe/p/6108933.html(图一)1.面试题:你说说collection里面有什么子类。(其实面试的时候听到这个问题的时候,你要知道,面试官是想考察List,Set)正如图一,list和set是实现了collection接口的。 (图二)List:1.可以允许重复的对象。 2.可以插入多个null元素。 3....
2018-04-05 23:04:59
196
转载 并发编程与高并发解决方案学习(同步容器)
ArrayList->Vector,StackHashMap->HashTable(key,value不能为null)Collections.synchronizedXXX(List、Set、Map)[java] view plain copyimport com.mmall.concurrency.annoations.ThreadSafe; import lombok.exter...
2018-04-05 15:09:36
156
转载 MyBatis中的一级缓存和二级缓存介绍
先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁操作数据库,减轻数据库的压力,同时提高系统性能。一级缓存一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在...
2018-04-04 10:19:45
152
转载 redis 持久化的两种方式
一:快照模式 或许在用Redis之初的时候,就听说过redis有两种持久化模式,第一种是SNAPSHOTTING模式,还是一种是AOF模式,而且在实战场景下用的最多的莫过于SNAPSHOTTING模式,这个不需要反驳吧,而且你可能还知道,使用SNAPSHOTTING模式,需要在redis.conf中设置配置参数,比如下面这样:# Save the DB on disk:## save &...
2018-04-04 09:59:22
183
原创 解决面试题T1,T2,T3在多线程中按顺序执行
方法一、使用join方法处理package com.cyc.redis.singleton;public class JoinExample { public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override ...
2018-04-04 09:43:38
2398
转载 Java线程中yield与join方法的区别
长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。之前,我讨论了一个wait()和sleep()方法区别的问题,这一次,我将会讨论join()和yield()方法的区别。坦白的说,实际上我并没有用过其中任何一个方法,所以,如果你感觉有不恰当的地方,请提出讨论。Java线...
2018-04-04 09:40:16
601
转载 nginx四层和七层负载均衡的区别
(一) 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真...
2018-04-03 15:07:53
32774
2
转载 Spring工作原理
1、spring原理 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。 Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也...
2018-04-03 15:02:12
161
转载 Spring AOP 实现原理
原文:https://blog.youkuaiyun.com/MoreeVan/article/details/11977115什么是AOPAOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要...
2018-04-03 14:55:17
135
转载 抽象工厂模式-与-工厂方法模式区别
原文:https://blog.youkuaiyun.com/wyxhd2008/article/details/5597975首先来看看这两者的定义区别:工厂模式:定义一个用于创建对象的借口,让子类决定实例化哪一个类抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 个人觉得这个区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过...
2018-04-03 14:48:26
192
转载 SpringMVC处理请求流程
SpringMVC核心处理流程:1、DispatcherServlet前端控制器接收发过来的请求,交给HandlerMapping处理器映射器2、HandlerMapping处理器映射器,根据请求路径找到相应的HandlerAdapter处理器适配器(处理器适配器就是那些拦截器或Controller)3、HandlerAdapter处理器适配器,处理一些功能请求,返回一个ModelAndView对...
2018-04-03 14:17:21
208
转载 spring的@Transactional注解详细用法
概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects)支持声明式事务管理...
2018-04-03 11:53:41
148
原创 线程安全-有序性
有序性1、java内存模型中,允许编译器和处理器对指令进行重排序,但是重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性2、volatile、synchronized、lock有序性-happens-before原则:一、程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行于书写在后面的操作二、锁定规则:一个unlock操作先行于发生后面对同一个锁的lock操作三、vo...
2018-04-02 19:57:54
696
原创 线程安全-AtomicLong与LongAdder
使用AtomicLong的代码与AtomicInteger一样package com.mmall.concurrency.example.atomic;import com.mmall.concurrency.annoations.ThreadSafe;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.CountDo...
2018-04-02 15:07:17
1072
原创 线程安全-AtomicInteger
定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。原子性:提供了互斥访问,同一时刻只能有一个线程来对他进行操作可见性:一个线程对主内存的修改可以及时的被其他线程观察到有序性:一个 线程观察其他线程中的指令执行顺序,由于指令重排序的存在该观察结果一般杂乱无序。原子...
2018-04-02 14:38:39
570
原创 Redis分布式锁----乐观锁的实现,以秒杀系统为例
摘要:本文使用redis来实现乐观锁,并以秒杀系统为实例来讲解整个过程。本文源码请在这里下载:https://github.com/appleappleapple/DistributeLearning乐观锁 大多数是基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个”version”字段来实现读取出数据...
2018-04-02 13:20:18
804
原创 线程:springboot中标注安全与不安全的注解简单写法
package com.mmall.concurrency.annoations;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Targ...
2018-04-02 10:07:48
1249
转载 Redis的五种存储类型和其应用场景
常用数据类型简介:redis常用五种数据类型:string,hash,list,set,zset(sorted set).1.String类型String是最简单的类型,一个key对应一个valueString类型的数据最大1G。 String类型的值可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该integer的值限制在64位有符...
2018-03-30 15:02:24
741
转载 Set,List,Map,Vector,ArrayList的区别
Set,List,Map,Vector,ArrayList的区别JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collect...
2018-03-30 14:59:16
2934
转载 spring定义的5个事务隔离级别和7种传播行为
在TransactionDefinition接口中定义了五个不同的事务隔离级别ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应 ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生...
2018-03-30 14:50:49
283
转载 spring事务五大隔离级别、七大传播行为
1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功。其必须遵循四个原则(ACID)。原子性(Atomicity):即事务是不可分割的最小工作单元,事务内的操作要么全做,要么全不做;一致性(Consistency):在事务执行前数据库的数据处于正确的状态,而事务执行完成后数据库的数据还是应该处于正确的状态,即数据完整性约束没有被破坏;如银行转帐...
2018-03-30 14:42:04
724
转载 java 中的悲观锁和乐观锁的实现
锁(locking)业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目标数据上锁,使其无法被其他程序修改。Hi...
2018-03-29 15:34:18
603
转载 Redis实现单点登录
单点登录功能分析 请求的url:/user/login 请求的方法:POST 参数:username、password,表单提交的数据。可以使用方法的形参接收。 返回值:json数据,包含一个token。 业务逻辑: 登录的业务流程:登录的处理流程:1、登录页面提交用户名密码。 2、登录成功后生成token。Token相当于原来的jsessionid,字符串,可以使用uuid。 3、把用户信息保存...
2018-03-29 15:28:07
1818
1
转载 单点登录(Singleton Sign On)sso核心原理
概念单点登录(Singleton Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就能访问所有相互信任的应用系统。也就是说在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录就能得到其他所有系统的信任。单点登录在大型网站中使用非常频繁,例如阿里这里的网站,在网站的背后是成百上千的子系统...
2018-03-29 15:25:33
476
转载 玩转Spring Boot 集成Dubbo
使用Spring Boot 与Dubbo集成,这里我之前尝试了使用注解的方式,简单的使用注解注册服务其实是没有问题的,但是当你涉及到使用注解的时候在服务里面引用事务,注入其他对象的时候,会有一些问题。于是我就果断放弃了注解了,使用的是XML,这里可能介绍的是Dubbo,但是如果使用Dubbox的话,基本上是兼容的。接下来,将说说使用XML的方式与Spring Boot在一起开发。1.创建工程在po...
2018-03-28 09:15:19
156
转载 springboot整合mybatis将sql打印到日志
在前台请求数据的时候,sql语句一直都是打印到控制台的,有一个想法就是想让它打印到日志里,该如何做呢?见下面的mybatis配置文件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis....
2018-03-26 14:25:29
1762
原创 mybaitis缓存与redis缓存
mybaitis缓存是本地缓存redis缓存支持分布式什么情况下不适用redis缓存?1、增删改过于频繁的不适用2、一般情况下不会改变的不适用3、数据量过大的不适用...
2018-03-19 14:37:55
223
原创 ActiveMQ实例
1、新建marven项目jms-test2、在pom.xml导入相关jar包3、pox.xml配置如下<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.or...
2017-12-20 09:16:47
330
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人