在订单系统当中使用Elasticsearch
单表亿级别的数据仅仅凭借MySQL的引擎依赖索引去查询已经无法满足当前的需求,面对日益激增的订单数据,而订单又作为状态变更十分敏感的业务产品,对及时性和准确性有着非常高的要求。而业务稳定性的评价,订单的快速准确查询是非常重要的一个指标。 对…
Java、Spring 与持久层开发
单表亿级别的数据仅仅凭借MySQL的引擎依赖索引去查询已经无法满足当前的需求,面对日益激增的订单数据,而订单又作为状态变更十分敏感的业务产品,对及时性和准确性有着非常高的要求。而业务稳定性的评价,订单的快速准确查询是非常重要的一个指标。 对…
由于业务量突增,加上过亿的表数据查询日渐顶不住业务访问,我们想到的第一个办法就是分库分表,而分库分表的方案五花八门,尤其是经典Sharding JDBC对代码的入侵很是严重,我们迫切需要分表的方案,所以在此背景下我们开始了一系列的调研。 简…
第一次接触这个是19年团队微服务化重构的时候,最初版本我们是使用了官方全家桶的Hystrix(但是很遗憾,并没有配置规则,只是匆忙的看了下那头熊..)但是也很快将其替换成了Sentinel。关于其实现原理其实挺庞大也挺复杂的,至于更换的原因…
本文娱乐水文,不聊源代码(没有看),不聊实现(不清楚),只谈功能点,所以看看就行别硬杠,本文提到的东西在工作中用处几乎为零(略略略,你不可能用到这些新特性的,虽然现在有,但并不影响你用JDK8),本文的代码均来自官网demo和Kelovp的…
没错。又是我在写支付和退款。 一想到支付就不得不想起那次记忆深刻的打款,真的千金散尽不回来。当我进行了一次加倍慈善之后,没想到的是我还能再写支付。 怎么说我也是练习时长一年半的代码练习生了,但的确没有信心和想法去搭建一个支付中心。因为不管是…
随着团队微服务改造的深入,我们遇到了一个很棘手的问题:我们更换了全新的数据源/Mybatis版本/FastJson版本,天知道会出现什么奇怪的问题。(居然真就出现了),所以我们想出了比对结果来灰度的办法,大致思路如图: 即将Applicat…
很多决策都是拍脑门的,包括这篇博客以及使用Maven archeType。我没有针对谁,只是这个东西的使用方式让我感觉简约的背后都是繁琐。Spring Boot为了杀死低版本Spring复杂的Xml配置,写了无数注解和yml式的配置来管理B…
RT,事情的起因是这样的: "之前的老代码执行缓慢问题找到了吗?" "emm,那个是这样的,arthas不支持过长的方法,我们的那个代码我觉得挺短的" "挺短的?1000行了都,给我拆了!" "emm,好" 然后我小心翼翼的拆分了祖传的作文…
刚从前几天的修改配置导致服务假死中缓过劲来,我还在享受着周日の甜蜜美梦。突然服务监控传来噩耗,说是我们订单服务宕机了。哦豁,一看时间早上八点零五。不过这些事情我当时并不是知道,因为那天手机关机了(这不是重点),后来在下午分析了一下问题出现的…
前段时间我司服务集体上微服务,离容器化就差几个实验了,由于我们后端的任务多是提供RestAPI接口,并没有提供模板渲染、JSP页面的这些内容。而作为接口提供方的我们,一直以来都是通过Nginx做一层域名到Tomcat的流量转发,其配置规则由…
随着公司各个模块功工程的微服务化,而服务间的通信依赖服务注册于发现,也需要一个统一的服务治理。自然需要使用到注册中心。而关于微服务的注册中心选择,出现了很多:原本我司就有Zk存放资源组件配置的操作,ZooKeeper其实可以作为注册中心来使…
在经历服务雪崩和单库八百张表的折磨之后,终于有人提出了重构...这篇文章是我在五月底写的,在在经历了重构和重写之后,我觉得这篇可以再改改,因为似乎发现了更好的思路(效率更高),当然,大背景是团队并没有一个真正的微服务高手,大都处于现学现卖(…
其实这是很实用的一个事儿:在很多时候可能需要在项目发版的时候就立刻初始化一些数据,关于数据初始化其实从配置xml到注解有很多实现的方式,但是其中执行时机和内容需要对Spring加载的过程有一定人之才可以。其实xml方式的配置相较于注解较为繁…
今天是2019-11-26 我重新开始修改以前写过的Blog,或许,这一年我的收获和成长就从这里开始。回首观望,一年里我都在为自己心中所谓的操守执行履约,孰对孰错,事已至此,抛开不谈。再看过往,的确是自己发生了变化。博客虽然是写给自己看的\…
不知不觉之间已经参加工作一年了(雾)。在这一年当中,桃子不止写了几段代码,也玩出了一些蜜汁操作。让我们今天一起回顾一下这猎奇的过往一年吧(内心崩溃)。 说出来你肯定不信,我第一个学会的Git命令可不是什么git clone xxx这么安稳的…
可能我比较偏业务,所以离我们的大佬@dr0op 的行业和涉及面其实不是特别大。但是八月中旬的时候经历了一场有惊无险的事故之后,我意识到安全是保证业务流程能够work的基本条件。现在细细道来事情的经过吧: 公司的项目大都是SpringMVC,…
说起来有些尴尬。最近写了一个抽奖发券的功能,因为是100%中奖,倒是抽奖没怎么折腾。但是问题在于返券。 大致规则是这样子的:在活动期间每人每支付一个订单,就可以获取一次抽奖机会,而最多可以抽十次奖,抽奖之后得把奖品发放。 分析需求之后就变得…
这里有件事情比较尴尬。因为跨了一个服务平台,所以得通过消息通知来实现功能(其实高耦合我查表也能解决,但是被否决了) 废话不多说:在这次是通过Redis 在Java当中的使用来实现。 在老早以前我安装了Redis本地,尝试了这种Map式的存储…
由于需求在上次的的代码当中需要程序发出Http请求,而在Python中依赖Urlopen/urlib这种库,在Java当中有Http包,但是具体还需去做: 在此之前先搞清URI 和URL的区别以及http请求的一些东西,之前发过-http:…
是这样的-为了业务需求,产品要求在某页加上天气信息,且根据日落日出时间来提醒行程时间在日落后的人打开车灯。由于业务都在国外,像国家气象中心就凉了,产品极力推荐使用Yahoo Weather。然后折腾了一整日大概摸清了Yahoo的Weathe…
事情起源于本地自测。在浏览项目之后我的反应是通过Tomcat的方式来测试,但是项目很大。所以我在本地测试的话如果按照我之前不认识Jetty的情况来实现就应该是以下流程:利用Maven Build 在target目录下生成项目包,然后手动部署…
大环境就是我又不会。所以开始了: 因为框架使用Spring(之前有提到过是MAVEN+SpringMVC),然后这里就是从下载开始一路向下吧。Spring框架作为一个开源的Java平台,由于简单而快速为Java应用程序提供了全面的基础设施,…
咳咳,我又开始了 那个还是因为项目管理用的是MAVEN,之又是没有详细了解过,还好在官方文档的帮助下勉强看了个皮毛,最齐码十万个为什么变成了九万九千九百九十九个了-- 一个专门用来管理项目 以及构建项目(项目大多特指JAVA ),基于项目对…
事情是这样的-- 这不入职刚进来。然后得换编译环境了。于是就出现了接下来的事情。 由于我来的比较巧,正好公司从SVN转GitLab,然后刚从SVN checkout下代码后就被告知要转(但是和我没什么关系)然后我inport所有代码到ecl…
在完成购物车和登录注册之后剩余一个部分:订单相关 1. 查看用户所有订单 在(任何页面中都可以)index.jsp页面上点击查看订单按钮后可以查看当前登陆用户所有的订单信息。 具体步骤:在orderlist.jsp页面中从session中取…
昨天把前台的一些简单的样式和外观搞定了。而现在要做的就是捋清关系将逻辑部分逐个实现,在此之前先将所需测试的数据库建立: \--顾客表 create table tbl\customer( id number primary key, nam…
前期准备:Tomcat服务器、Mybatis相关Jar包、Log4j相关Jar包、 JSTL相关Jar包 、Oracle数据库 而相关的前端显示界面使用UIkit框架 阅读需求分析: 由注册、登录、购物车、订单四个大模块 在准备好以上环境之…
过滤器的作用 在一个请求去访问某个资源的时候,filter可以在这个请求访问到这个资源之前,把请求拦下,然后做出一系列的处理或者判断(比如编码的转换,信息的过滤、权限的判断、是否已经登录的验证等等),最后filter再决定是否要让这个请求去…
继续狗。在Servlet当中数据传递往往依赖三个对象:Request Session 和 Application,他们三个有着共同的作用但是作用域以及产生的办法也不一样 。 类型(接口) …
Servlet的跳转和重定向也算是一种处理页面间转向的机制(之前Nginx挖的坑还没填,HTTPS配置完想设置重定向。然后莫名其妙的就配置不了,各种404Not Found==Https大势所趋所以不出三个月一定搞定)。而Servlet设置…
在过了一下Servlet基础之后发现实现的办法十分活跃,而Servlet作为Java类的工作方式也是十分特殊(前些日子的Struts2不玩这一套,但是听说理解底层原理有助加深对框架的使用//不知道谁说的)其中最常用的办法就是实现Servle…
当着手认真学习Servlet 和 JSP时我扫了扫落在电脑D盘tomcat文件夹上的灰尘。的确,自从上次用了myeclipse之后我早已忘记什么配置什么目录结构的东西了,加上一件部署的人性化设置让我偷了不少懒。所以当再次将视线放到这一块之后…
最近投了一些公司。然后凉了不少(每次拿C++/C我就不想说话,现在我只想安静的投Java再也不跳随便投岗了)。选择题大家都很友善,问问二叉树遍历顺序什么的,还有求求散列值之类,题目难度不大还算好应付,但是后面编程和简答题目几乎成了灾区QAQ…
MyBatis提供了多种元素来配置不同类型的语句,比如Select、Insert、Update、Delete这样的,之前在写学生信息简单的增删改查时就已经使用过这些语句。而将这些映射都存放在mapper.xml当中,然后通过映射器Mappe…
在上次的Mybatis使用当中有两个.xml文件的使用,一个是mybatis的配置文件,另一个则是Mapper接口的映射器实例。就此详细和更进一步地对Mybatis的配置文件进行Py。MyBatis 的配置文件包含了会深深影响 MyBati…
虽然在上篇博文当中将JDBC的操作进行了封装,而其在面对SQL语句可变动亦或者要改变SQL语句的结构时还是得去程序修改,只能进行一些固定的事务操作。而若把SQL语句信息存放在xml当中,在使用的时候解析xml文件就可以来实现整个过程。然而在…
昨天将数据库的连接基本上实现了,但是其中存在很多的问题,首先在创建Statement对象时我一直在使用PreparedStatement对象通过先占位后输入的办法来绕过了一些由于字符串拼接引起的一系列问题。而除此之外JDBC编程当中也有不少…
JDBC(Java DataBase Connectivity,java数据库连接),用于执行SQL语句的JavaAPI,在之前的学习当中不止一次用到过(涵盖大多课程设计//但我使用了Mysql,装载的(Mysql的驱动包),但并未对该AP…
在连续吹了好几天的JSON,但最终还是低头了。太多原始开发和老旧的API依旧使用,W3C这一大腿还真是抱的的爽,虽然吐槽其笨重但是必要的解析还是要会。我们基本上在Java当中有三种办法可以解决这次的问题 。 在Java当中DOM 是 W3C…
在前些天API的简介当中有说返回的数据格式是JSON或者XML,然而我全程用JSON,这里做一点补充(刚说完打脸,Wordpress的导出文件也是.xml)。 XML(Extensible Markup Language)可扩展标记语言,其…
在Java编程当中往往让编码无从下手的地方便是如何确定方向,选择合适的方法都会让工作的效率极大的提高,不光在Java,在所有面向对象语言当中都有一些固定的方法去解决问题,经过一段 时间的沉淀和 改变,这些设计模式成为编程出发点。 在一般的情…
集合的由来: 在Java当中存储一类数据的时候可以使用数组,但数组有一个缺点:长度是固定的,当添加的元素超过了数组的长度时需要对数组重新定义。而集合类可以存放对象的引用。 相较于数组集合有两个特点 :1、长度可以自动增长 2、存放元素有自动…
前日博客崩溃之前的学习笔记全部丢失,而其中Socket搭建服务器这一篇我写的程序并不是特别完美。所以再次尝试: 日常科普: 超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网…