1 一年而已

尚未进行身份认证

暂无相关简介

等级
TA的排名 3w+

秒杀项目学习第六章

主要内容Redis预见库存减少数据库访问内存标记减少Redis访问RabbitMQ队列缓冲,异步下单,增强用户体验RabbitMQ安装与Spring Boot集成访问Nginx水平扩展压测思路:减少数据库访问系统初始化,把商品库存数量加载到Redis中收到请求,Redis预减库存,库存不足,直接返回,否则进入3请求入队,立即返回排队中请求出队,生成订单,减少库存客户端轮询,是否秒杀成功一、集成RabbitMQ安装并启动RabbitMQ安装erlang安装Rabbit

2020-05-29 11:28:42

秒杀项目学习第五章

主要内容页面缓存+URL缓存+对象缓存页面静态化,前后端分离静态资源优化CDN优化一、 页面缓存+URL缓存+对象缓存页面缓存取缓存手动渲染模板结果输出直接返回html页面以获取商品列表页面为例1.原先controller2.现在controller@RequestMapping(value="/to_list", produces="text/html") @ResponseBody public String list(HttpServletRequest requ

2020-05-28 19:21:52

秒杀项目学习第四章

主要内容JMeter入门自定义变量模拟多个用户JMeter命令行使用Redis压测工具redis-benchmarkSpring Boot打war包一、JMeter入门JMeter相关链接:官网,用户手册压测商品列表页面主要衡量并发在XXX时的QPS是多少1.打开jmeter.bat2.测试计划中添加线程组设置线程组3.在线程组中添加HTTP请求默认值设置参数3.在线程组中添加HTTP请求设置参数4.在线程组中添加监听器如聚合报告压测过程一个bug的解决

2020-05-28 10:14:22

秒杀项目学习第三章

主要内容数据库设计商品列表页商品详情页订单详情页一、数据库设计商品表goods商品订单表order_info秒杀商品表miaosha_goods秒杀商品订单表miaosha_orderdomain对象1.Goodspublic class Goods { private Long id; private String goodsName; private String goodsTitle; private String goodsImg; private St

2020-05-27 23:02:09

秒杀项目学习第二章

主要内容数据库设计明文密码两次MD5处理JSR303参数检验+全局异常处理分布式Session一、数据库设计二、两次MD5两次MD5的原因:HTTP在网络上是明文传输的,为了防止不法分子截取数据包,那么就可能获得我们的登陆密码两次MD5的设计方案用户端:PASS = MD5(明文+固定salt)服务端:PASS = MD5(用户输入+随机salt)导包//用于MD5<dependency> <groupId>commons-codec

2020-05-27 17:57:45

秒杀项目学习第一章

主要内容Spring Boot环境搭建集成Thymeleaf,Result结果封装集成Mybatis+Druid集成Jedis+Redis安装+通用缓存Key封装一、Spring Boot环境搭建创建项目导包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifa

2020-05-26 22:14:21

秒杀项目学习序章

技术栈学习内容重点关注如何利用缓存如何使用异步如何编写优雅代码各章节介绍第一章 项目框架搭建Spring Boot环境搭建集成Thymeleaf,Result结果封装集成Mybatis+Druid集成Jedis+Redis安装+通用缓存Key封装第二章 实现登陆功能数据库设计明文密码两次MD5处理JSR303参数检验+全局异常处理分布式Session第三章 实现秒杀功能数据库设计商品列表页商品详情页订单详情页第四章 JMeter压测JMet

2020-05-26 11:40:06

设计模式学习笔记-备忘录模式

游戏角色状态恢复问题游戏角色有攻击力和防御力,在大战boss前保存自身状态,当大战boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态传统方案解决一个对象,就对应一个保存对象状态的对象,这样不利于管理,开销很大传统的方式是简单的做备份,new出另一个对象,再把需要备份的数据放到这个新对象,但是这就暴露了对象内部细节备忘录模式基本介绍备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将对象回复到原先保存的状态备忘录对象主要用来记录

2020-05-26 11:06:23

程序员代码面试指南刷题--第八章.子矩阵的最大累加和问题

题目描述给定一个矩阵matrix,其中的值有正、有负、有0,返回子矩阵的最大累加和例如,矩阵matrix为:-90 48 7864 -40 64-81 - 7 66其中,最大的累加和的子矩阵为:48 78-40 64-7 66所以返回累加和209。例如,matrix为:-1 -1 -1-1 2 2-1 -1 -1其中,最大累加和的子矩阵为:2 2所以返回4[要求]时间复杂度为O(n^2m),空间复杂度为O(nm)输入描述:第一行有两个整数N,M。分别表示矩阵的行数/

2020-05-26 10:41:15

程序员代码面试指南刷题--第八章.子数组的最大累加和问题

题目描述给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.[要求]时间复杂度为O(n),空间复杂度为O(1)输入描述:第一行一个整数N。表示数组长度接下来一行N个整数表示数组内的元素输出描述:输出一个整数表示答案示例1输入71 -2 3 5 -2 6 -1输出12解法一:遍历import java.io.*;import jav

2020-05-26 09:29:43

程序员代码面试指南刷题--第八章.奇数下标都是奇数或者偶数下标都是偶数

题目描述给定一个长度不小于2的数组arr,实现一个函数调整arr,要么让所有的偶数下标都是偶数,要么让所有的奇数下标都是奇数注意:1、数组下标从0开始!2、本题有special judge,你可以输出任意一组合法解!同时可以证明解一定存在[要求]时间复杂度为O(n),额外空间复杂度为O(1)输入描述:第一行一个整数N。表示数组长度接下来一行N个整数表示数组内的数输出描述:输出N个整数。表示调整后的数组示例1输入51 2 3 4 5 输出2 1 4 3 5说明样例中

2020-05-26 09:07:53

设计模式学习笔记-中介者模式

智能家庭项目智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘等主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作比如:闹钟响起–>咖啡机做咖啡–>窗帘自动落下–>电视机开始播放传统方案解决问题存在问题当各个电器对象有多种状态改变时,相互调用关系复杂各个电器对象彼此联系,你中有我,我中有你不利于松耦合各个对象之间所传递的消息容易混乱当系统增加一个新的电器对象时,或者执行流程改变时,代码不易维护和扩展中介者模式介绍中介者模式用一个中介对象封账一系

2020-05-25 11:30:50

程序员代码面试指南刷题--第八章.计算数组的小和

题目描述数组小和的定义如下:例如,数组s = [1, 3, 5, 2, 4, 6],在s[0]的左边小于或等于s[0]的数的和为0;在s[1]的左边小于或等于s[1]的数的和为1;在s[2]的左边小于或等于s[2]的数的和为1+3=4;在s[3]的左边小于或等于s[3]的数的和为1;在s[4]的左边小于或等于s[4]的数的和为1+3+2=6;在s[5]的左边小于或等于s[5]的数的和为1+3+5+2+4=15。所以s的小和为0+1+4+1+6+15=27给定一个数组s,实现函数返回s的小和[要求]

2020-05-25 10:21:48

程序员代码面试指南刷题--未排序数组中累加和为给定值的最长子数组系列问题补2

题目描述给定一个无序数组arr,其中元素只能是1或0。求arr所有的子数组中0和1个数相等的最长子数组的长度[要求]时间复杂度为O(n),空间复杂度为O(n)输入描述:第一行一个整数N,表示数组长度接下来一行有N个数表示数组中的数输出描述:输出一个整数表示答案示例1输入51 0 1 0 1输出4解法一:利用map思路:把0当-1,求相加和为0的最大数组长度import java.io.*;import java.util.*;public class Main{

2020-05-25 09:01:44

程序员代码面试指南刷题--第八章.未排序数组中累加和为给定值的最长子数组系列问题补1

题目描述给定一个无序数组arr,其中元素可正、可负、可0。求arr所有子数组中正数与负数个数相等的最长子数组的长度。[要求]时间复杂度为O(n),空间复杂度为O(n)输入描述:第一行一个整数N,表示数组长度接下来一行有N个数表示数组中的数输出描述:输出一个整数表示答案示例1输入51 -2 1 1 1输出2解法一:同样利用map思路:把正数当成1,负数当成-1,求相加和为0的结果import java.io.*;import java.util.*;public

2020-05-25 08:58:29

牛客项目学习第六章

一、Elasticsearch入门Elasticsearch简介一个分布式的、Restful风格的搜索引擎。支持对各种类型的数据的检索。搜索速度快,可以提供实时的搜索服务。便于水平扩展,每秒可以处理PB级海量数据。Elasticsearch术语索引、类型、文档、字段。集群、节点、分片、副本。术语的解释索引:相当于数据库中的database(数据库)类型:相当于数据库中的table(表)文档:相当于数据库中的一行数据,数据结构为JSON字段:相当于数据库中的一列

2020-05-24 22:32:23

设计模式学习笔记-观察者模式

天气预报项目需求气象站可以将每天测量到的温度、湿度、气压等以公告的形式发布出去需要设计开放API,便于其他第三方也能接入气象站获取数据提供温度、气压和湿度接口测量数据更新时,要能实时通知第三方普通设计方案通过getXXX方法,可以让第三方接入,并获得相关消息当有数据更新时气象站通过dataChange()更新数据,右边箭头或者可以通过推送,左边箭头。普通方案代码解决(推送方式)1.WeatherData/** * 类是核心 * 1. 包含最新的天气情况信息 * 2.

2020-05-24 10:37:32

程序员代码面试指南刷题--第八章.在数组中找到出现次数大于n/k的数

题目描述给定一个整型数组arr,再给定一个整数k,打印所有出现次数大于n/k的数,如果没有这样的数,请打印”-1“。输入描述:输入包含两行,第一行输入包含两个整数n和k,第二行包含n个整数,代表数组arr。输出描述:输出所有出现次数大于n/k的数,如果没有这样的数,请输出”-1“。示例1输入7 71 2 3 1 2 3 4输出1 2 3解法一:利用mapimport java.io.*;import java.util.*;public class Main{

2020-05-24 09:38:41

程序员代码面试指南刷题--第八章.在数组中找到出现次数大于一半的数

题目描述给定一个整型数组arr,请打印其中出现次数大于一半的数,如果没有这样的数,请输出-1。输入描述:输入包含两行,第一行包含一个整数n,代表数组长度,第二行包含n个数,代表数组arr。输出描述:输出一个整数,代表出现次数大于一半的数,如果没有这样的数,请输出‘-1“。示例1输入511 7 5 7 7输出7解法一:两两相消import java.io.*;import java.util.*;public class Main{ public static v

2020-05-24 08:42:15

牛客项目学习第五章

一、阻塞队列BlockingQueue解决线程通信的问题。阻塞方法:put、take。生产者消费者模式生产者:产生数据的线程。消费者:使用数据的线程。实现类ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue、SynchronousQueue、DelayQueue等。面试常问:写一个生产者消费者实现public class Test { public static void main(St

2020-05-23 18:21:22

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。