`
Adan-Chiu
  • 浏览: 19844 次
社区版块
存档分类
最新评论
文章列表

高并发业务

  搭建商品秒杀开发环境和超卖现象         适逢618狂欢大冲刺,嗨购不停歇,现在模拟一件秒杀商品浪琴瑰丽女表,原价10000元,秒杀价7999块,共10000件,有2万人同时抢夺的场景。在高并发的场景下,除了数据的一致性外,还要关注性能问题,一般而言,超过5秒用户体验就不太好了,所以要考虑数据一致性和系统的性能。 1.技术栈采用spring-boot-starter-data-jpa,导入相关依赖 compile 'org.springframework.boot:spring-boot-starter-data-jpa' compile 'org.springframe ...
Spring的缓存管理器        在spring项目中提供了CacheManager接口来定义缓存管理器,这样各个不同的缓存就可以实现它来提供管理器的功能了,在spring-boot-starter-data-redis.jar中自动配置了RedisCacheManager(实现了CacheManager接口),可以通过设置spring.cache.cache-names属性在启动时创建其缓存,并且可以使用spring.cache.redis.*属性配置缓存默认值。例如,以下配置创建的cache1和cache2缓存的生存时间为10分钟: spring.cache.cache-nam ...
  什么是主从同步         所谓主从同步,是指两个或多个数据库数据一致,一个库数据的更新会同步更新到所有的数据库上。 主从同步的必要性       在实际项目中,为了产品的高可用,我们常常会搭建多台数据库,实现冗余,达到负载均衡、容灾等目的。比如,只有一台数据库的时候,大量的用户请求,或者由于一些硬件故障导致的宕机,将会导致整个应用的crash,此时如果能够有多余的服务器提供服务,就可以将请求分配到别的可用的服务器,从而保证用户的正常使用!摆在我们跟前的问题就是,如何能够保证两台或多台数据库服务器上数据的一致性! 主从同步的作用 服务器容灾,一旦主服务器出现问题,可以快 ...
       在我们系统开发中,常常会遇到样式格式一致但内容不一致的页面,比如用户注册后发送的用户激活邮件,找回密码邮件(html格式邮件)以及商品详情页等,先看看邮件发送服务API: @Service public class EmailServiceImpl implements EmailService { @Autowired private JavaMailSender mailSender; @Override @Async public void sendSimpleEmail(String sendTo, String subject, St ...
处理异常         控制器的通知注解@ExceptionHandler可以处理异常,此外,spring mvc还提供了其他的异常处理机制,使用它们可以获取更为精确的信息,从而为定位问题带来方便。在默认情况下,spring会将自身产生的异常转换为合适的状态码,通过这些状态码可以进一步确定异常发生的原因,以便找到对应的问题。                               spring中部分异常默认映射码 Spring异常 HTTP状态码 BindException 400 - Bad Request ConversionNotSuppor ...

Redis概述

      在传统的 Java Web 项目中,使用数据库进行存储数据,但是有一些致命的弊端,这些弊端主要来自于性能方面。由于数据库持久化数据主要是面向磁盘,而磁盘的读/写比较慢,在一般管理系统中,由于不存在高并发,因此往往没有瞬间需要读/写大量数据的要求,这个时候使用数据库进行读/写时没有太大的问题的,但是在互联网中,往往存在大数据量的需求,比如,需要在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,导致服务宕机的严重生产问题。   为了克服这些问题,Java Web 项目往往就引入了 NoSQL 技术,NoSQL 工具也是一种简易的 ...

Redis基本安装

Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,选择下载 Redis-x64-xxx.zip压缩包到指定盘符解压即可。主要看Linux下的安装 Linux 下安装 由于在实际工作中,Redis往往安装在服务器端,服务器使用的是Linux/Unix系统。所以更多的时候,在工作中需要安装在服务器环境中。 首先使用root用户登录Linux系统,执行以下命令   $ yum install gcc-c++ $ cd /usr/ ...
       技术语言革新极快的今天,尤其对于需要技术沉淀的后端工程师来说,靠什么实力逆风翻盘?          在 Java 框架尚且繁荣的当下,Spring Boot 无疑最火最实用的,也是必不可少的开源框架,完全有实力稳坐 Java 后端框架的龙头老大。         更有江湖人称,Spring Boot 就像九阳神功。有了它护体,再学 Spring MVC、mybatis、JPA,撸起 demo 来简单到飞起。 01 什么是 Spring Boot?        Spring Boot 是由 Pivotal 团队提供的全新框架,它来自于 Spring 大家族,因此 ...

gradle-依赖管理

    依赖管理        几乎所有的基于JVM的软件项目都需要依赖外部类库(通常以jar形式存在)来重用现有功能。jar文件规范不要求你指定类库版本。然而,将版本号添加到jar文件上来标识一个特定的发布版本(比如:spring-contex ...
  SpringData概述        Spring Data : Spring 的一个子项目。Spring Data的任务是为数据访问提供一个熟悉的、一致的、基于Spring的编程模型,同时仍然保留底层数据存储的特殊特性.简言之就是用于简化数据库访问,支持NoSQL 和 关系 ...
       Spring Data REST        Spring Data REST基于Spring Data的repository之上并自动将其导出为REST资源。目前Spring Data REST支持Spring Data JPA、Spring Data MongoDB、Spring Data Neo4j、Spring Data GemFire、Spring Data Cassandra的 repository 自动转换成REST服务。简单点说,Spring Data REST把我们需要编写的大量REST模版接口做了自动化实现.         利用spring bo ...

jdbc事务控制

    博客分类:
  • jdbc
       我们的dao层只是和数据库打交道的中间件,不涉及我们的业务逻辑,一般一个事务代表一个业务边界,所以我们的事务应该定义在service层上,由于我们的service是单例的,如何保证我当前的操作是线程安全的(即是在同一个连接上做的操作)。解决方案是使用ThreadLocal,它是线程绑定的变量,提供线程局部变量(ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。),我们将连接绑定在当前的线程上。   public class JdbcUtil { ...
为控制器添加通知 与SpringAOP一样,SpringMVC也可以为控制器加入通知,它主要涉及4个注解: @ControllerAdvice:作用于类,用以标识全局性的控制的拦截器,将应用于对应的控制器 @InitBinder:允许在构造控制器参数的时候,加入一定的自定义控制 @ExceptionHandler:当控制器发生异常时,就会跳转到该方法上 @ModelAttribute:先于控制器方法执行,当标注方法返回对象时,会保存到数据模型中,并传递给拦截的控制器 一个控制器通知的实例。 //标识控制器通知,并且指定对应的包 @ControllerAdvice(base ...

Linux概要

一、linux目录架构  /:根目录,位于Linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。
      前面我们使用JDBC以及一些设计模式来完成数据的持久化操作,还是有大量的sql语句以及设置等操作,针对这些持久化操作能否以一种操作对象的方式来完成呢,即对外隐藏jdbc的实现细节,对方法api调用者来说只需要以操 ...
Global site tag (gtag.js) - Google Analytics