`
huangyongxing310
  • 浏览: 477256 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

天学到的技术点2

 
阅读更多
JMS
JMS的全称是Java Message Service
http://elim.iteye.com/blog/1893038
JMS消息监听器(kafka也有的)
http://elim.iteye.com/blog/1893676
JMS事务管理
http://elim.iteye.com/blog/1983532

P2P模式:每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
Pub/Sub模式:
ActiveMQ工作模式:
http://blog.csdn.net/qq383264679/article/details/51163144


JMS开发步骤和持久化/非持久化Topic消息
https://www.cnblogs.com/xinhuaxuan/p/6105985.html



Interceptor拦截器与AOP的区别
SpringMVC中使用Interceptor拦截器
它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。
http://elim.iteye.com/blog/1750680

Interceptor拦截器(拦截请求,与过滤器有点类似)与AOP(拦截一个面,不一定是请求,一个方法也可以)



mybatis动态SQL详解
http://www.blogjava.net/stevenjohn/archive/2012/12/25/393451.html


RocketMQ
http://www.jianshu.com/p/453c6e7ff81c
通过同一订单发送到同一个服务器队列,从而保证顺序性

重复性消费,可以
1.保持幂等性,不管来多少条重复消息,最后处理的结果都一样。
2.利用一张日志表来记录已经处理成功的消息的ID,如果新到的消息ID已经在日志表中,那么就不再处理这条消息。


事务消息
1.直接将发消息放到Bob扣款的事务中去,如果发送失败,抛出异常,事务回滚。(业务上实现)
http://blog.csdn.net/lovesomnus/article/details/51776942


解决activemq多消费者并发处理
http://blog.csdn.net/Seven__________7/article/details/71854992
activemq有一定机制将队列中的数据交给consumer处理,这个机制就是数据的数量分配,查资料得知,默认是1000,因此,把这个值调小就可以了。


二维码生成工具
MatrixToImageWriter
Bitmatrix
使用Zxing生成二维码,以及在生成的二维码中添加logo:
http://mygirl1314520.iteye.com/blog/1912109


前端生成二维码
jquery.qrcode
http://www.360doc.com/content/16/0426/10/26839592_553877055.shtml
http://www.jb51.net/article/121537.htm
http://happyqing.iteye.com/blog/2294628
https://www.cnblogs.com/songyz/p/7490562.html





修改请求和响应内容
HttpServletRequestWrapper、HttpServletResponseWrapper
http://blog.csdn.net/it_man/article/details/7556903



springboot 多环境配置文件的选择
spring.profiles.active
http://www.leftso.com/blog/111.html



maven 多环境配置文件的选择
http://xj84.iteye.com/blog/1135594
https://segmentfault.com/a/1190000003908040
http://zhaoshijie.iteye.com/blog/2094478
http://blog.csdn.net/fengchao2016/article/details/72726101



页面URL访问统计
DruidWebStatFilter
http://blog.csdn.net/u011831754/article/details/71631622



解读分库分表中间件Sharding-JDBC
http://blog.csdn.net/cxboyee/article/details/50672969



如何高效生成趋势有序的全局唯一ID。
类snowflake算法
https://www.cnblogs.com/relucent/p/4955340.html



秒杀系统架构优化思路
1.将请求尽量拦截在系统上游
2.充分利用缓存
浏览器和APP:做限速,每5秒只准请求一次
站点层:按照uid做限速,做页面缓存,返回5S内相同的内容
服务层:按照业务做写请求队列控制流量,做数据缓存,按数据进行后面罗辑的处理,其他返回结柬信息

回仓,未支付的回仓,告诉客户多少分钟后进行重次(如45分钟)

架构设计原则之一是“fail fast”。


做请求队列控制流量(LockSupport)
http://shift-alt-ctrl.iteye.com/blog/2315008

LinkedBlockingQueue、信号量(指定数据库能接受的瓶颈)(能得到信号量或能入队列的继续执行,不能的返回结束信息)


easyUI
http://demo.topjui.com/?s=jeasyui


实现线程的阻塞和继续运行(针对当线线程用的),用到做请求队列控制用
LockSupport
http://shift-alt-ctrl.iteye.com/blog/2315008


Semaphore 提供同时访问的数量限制
synchronized、ReentrantLock 是对一个资源并发的控制,单一访问

线程阻塞、唤醒:LockSupport
wait(), notify(), notifyAll(),线程阻塞、唤醒,wait使当前线程等待


同一个账号,一次性发出多个请求.解决为写入标志位
多个账号,一次性发送多个请求.解决为频率高就用验证码或同IP数据限制
多个账号,不同IP发送不同请求.解决为提高帐号的等级要求才可以参加


容量设计
容量评估包括数据量、并发量、带宽、CPU/MEM/DISK等
峰值QPS大概是均值QPS的2.5倍
单机极限QPS,压力测试

互联网架构设计如何进行容量评估:
【步骤一:评估总访问量】 -> 询问业务、产品、运营
【步骤二:评估平均访问量QPS】-> 除以时间,一天算4w秒
【步骤三:评估高峰QPS】 -> 根据业务曲线图来
【步骤四:评估系统、单机极限QPS】 -> 压测很重要
【步骤五:根据线上冗余度回答两个问题】 -> 估计冗余度与线上冗余度差值


单点系统存在的问题
(1)单点系统存在的问题:高可用性问题,性能瓶颈问题
(2)shadow-master是一种常见的解决单点系统可用性问题的方案,keepalive
(3)减少与单点的交互,是存在单点的系统优化的核心方向,常见方法有批量写,客户端缓存
(4)水平扩展也是提升单点系统性能的好方案,DNS解析到不同的nginx外网IP,多个nginx



后台管理界面可以用frame的方式进行不同页面用不同js的层级关系,每个界面都要请求后放到frame中,
用户端就还是用页面路由的方式,以减小页面的请求,frame不适用于用户端(大量用户的前端)


缓存
(1)淘汰缓存是一种通用的缓存处理方式(而不是同步更新)
(2)先淘汰缓存,再写数据库的时序是毋庸置疑的(防止缓存淘汰失败)
(3)服务化是向业务方屏蔽底层数据库与缓存复杂性的一种通用方式


冗余表数据一致性
1.服务层同步写冗余数据
2.服务异步写(引入消息总线)
3.线下异步写(与数据库binlog原理一样)
4.按业务来定先写那个冗余表,影响大的先写
5.线下全量或增量对数据一致性检查
6.用消息对的方式对数据一致性检查(消息对出现的时间一般在3S内)



缓存与数据库一致性保证
1.先淘汰缓存,再写数据库。

主从DB与cache一致性(有一个同步时间问题)
可以用二次异步淘汰的“缓存双淘汰”法来解决缓存与数据库中数据不一致的问题,
(1)timer异步淘汰(本文没有细讲,本质就是起个线程专门异步二次淘汰缓存)
(2)总线异步淘汰
(3)读binlog异步淘汰


DB主从一致性架构优化4种方法
1.半同步复制(等主从同步完成,写主库的请求才返回)
2.强制读主库
3.数据库中间件,记录所有路由到写库的key,在经验主从同步时间窗口内(假设是500ms),如果有读请求访问中间件,此时有可能从库还是旧数据,就把这个key上的读请求路由到主库
4.缓存记录写key法(与3方法类似)


CAS SSO 单点登陆原理
https://www.cnblogs.com/lihuidu/p/6495247.html
http://blog.csdn.net/yuwenruli/article/details/6620947



通过请求队列的方式来缓解高并发抢购
https://www.cnblogs.com/XiaoyangBoke/p/6701780.html


超高并发的无锁缓存
在【超高并发】,【写多读少】,【定长value】的【业务缓存】场景下:
1)可以通过水平拆分来降低锁冲突
2)可以通过Map转Array的方式来最小化锁冲突,一条记录一个锁
3)可以把锁去掉,最大化并发,但带来的数据完整性的破坏
4)可以通过签名的方式保证数据的完整性,实现无锁缓存


//如果不同模块的数据要进行合并,但又不想用join(后面可能分库),又不想的一个个查,可以增加in查询接口再进行数据合并


操作日志可以使用消息队列的方式来实现,不用每次都进行数据库的访问


springboot jpa 连接多个数据库的例子
https://github.com/itguang/gitbook-smile/tree/master/springboot-multi-datasource



“配置”架构演进
1.配置私藏,上游调用下游,每个上游都有一个专属的私有配置文件,记录被调用下游的每个节点配置信息。
2.全局配置
3.文件监控组件FileMonitor,动态连接池组件DynamicConnectionPool
4.配置中心,服务化


高可用性
服务集群(nginx,RPC),数据库主主同步,keepalive备机,前端CDN,接入层DNS


数据安全
备份,异地灾备,


高并发
缓存、快速失效、服务集群、队列处理、消息队列、数据做索引,分库分表,静态页面的尽量静态、存储过程、批量读取、缓存延时修改(一定时间再写数据库)、


一致性
事务,消息队列、后端数据校验、缓存锁、CAS


实时性(高性能)
缓存、快速失效、带宽、CPU性能、服务集群、不必要的处理用消息队列后期处理、


高可扩展性


重要数据可以在业务中进行前后数据的更改进行记录


10万定时任务实现
1.一个定时器,论询查询每任务是否超时,效率低
2.每个任务一个定时器,消耗资源多
3.定时环形队列,环形队列上记录每个任务ID,这样一个定时器就可以实现知道那些任务时间到达设定的时间或超时了
http://mp.weixin.qq.com/s/mvFwjgxliwx808Hn_9ruEA


spring boot 集成ActiveMQ
http://blog.csdn.net/q672746525/article/details/79295925



提高ActiveMQ工作性能
http://blog.csdn.net/yinwenjie/article/details/50991443



树状有层次关系的,又要显示层次关系的,可以在关联层次时以“,”分开各树状态层次的关系,这样既方便进行层级筛选,又方便得到层级的名字层次关系



接口测试工具
jmeter



后台管理接口因用户人数少,并发小,可忍耐性高,可以通过多查几次数据库进行数据组合返回前端,

用户系统并发高,用户量大,不谊多次查数据库,可以用多级缓存的方法进行数据的组合,不要找请求都放到数据库进行处理。

对于用户系统的搜索可以通过集群(数据库主从多库)应对高并发,对于搜索用户等一会还是可以接受的,对于集合里还要其他数据组成可以使用IN查询再通过代码进行组合来减少数据库查询的次数(减少数据库压力和响应时间)。


controler获取绝对路径的方法:
this.getClass().getClassLoader().getResource("/").getPath(); 此处为classes目录, 往上一层可以用getResource("/../"),
直接指向文件名getResource("/../xxx.xxx")


行业、供应商、品牌、分类之间的关系结构
1.行业单独进行管理
2.品牌与行业进行(一个品牌对应多个行业的方式进行(单独一个表存放关系))
3.供应商与品牌进行关联(1对多)(从而就与行业进行了关联,出可以单独与行业进行关联(1对多))
4.分类与行业进行关系(每个行业会有不同的分类)


https://www.cnblogs.com/ityouknow/p/6120544.html
springboot RabbitMQ详解


java读取数据库表的相关信息


Ehcache


zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。(后端只要返回list,前端进行树处理的插件)



mybatis 如果返回结果为map(字段(key),字段值(value)),pageInfo也支持的。返回MAP可以不用写相关的requestMap,但可读性和理解性就没那么好


分享到:
评论

相关推荐

    30天快速掌握python技术栈,详细的学习路线

    不知道python的具体学习路线的话,看看30天快速掌握python技术栈,详细的学习路线。快速掌握python技术栈全貌,cover面试全部技能点。

    21天学通51单片机开发

    51系列单片机的初学者通过《21天学通51单片机开发》可以快速掌握单片机的程序设计技术。《21天学通51单片机开发》对具有一定开发经验的设计人员,也有很高的参考价值。, 《21天学通51单片机开发》附赠DVD光盘1张,...

    21天学通51单片机开发(第2版)

    51系列单片机的初学者通过《21天学通51单片机开发(第2版)》可以快速掌握单片机的程序设计技术。《21天学通51单片机开发(第2版)》对具有一定开发经验的设计人员,也有很高的参考价值。  本书附赠dvd光盘1张,...

    Java后端学习路线 (详细路线)

    重点知识点:HTML、CSS、JS、jQuery框架、Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、Cookie技术、Session会话、JSON使用、Ajax请求、Tomcat、maven等等。 Java开发的岗位大多是...

    [原创]史上最全的全栈技术学习路线,跟着学完你就可以一个人做一整套互联网智能家居产品了!

    3、做到以上两点后,学的过程中一定要以谦虚的心态去学习,如果遇到不明白的地方,切记不要慌,百度、谷歌!尽量把你能利用的资源利用起来! 学习路线内容包括: Web开发 前端技术 后端技术 服务器运维技术 APP应用...

    学习ios(必看经典)牛人40天精通iOS开发的学习方法

    这是一套从一个对iOS开发感兴趣的学员到iOS...通过本系列课程的学习,希望使一个对iOS开发感兴趣,想从事iOS开发的学员,成为一名真正iOS开发人员,iOS从业者,iOS技术大牛,最重要的是学会解决开发中遇到困难的方法。

    三级PC技术基础知识点汇集

    三级PC技术基础知识点汇集,n年前当自己要考三级PC时汇集的基础知识点,读者可以使用其作为考前几天快速阅读的资料,有利于帮助回忆所学的知识点。

    JXTA技术手册/奥克斯(Oaks,s.),切 中文 高清版

    在2001年2月,Sun公司宣布了Java网络技术中的一种创新性的范型:JXTA。倡导者是BillJoy,他是Sun公司的主要技术革新者。JXTA提供了一种革命性的框架,允许Java程序员利用新的点对点(P2P)网络协议,勿须考虑底层的...

    计算机网络课程学习心得体会(精选3篇).doc

    计算机网络课程学习心得体会2 通过参加教育部全国高校教师网络培训中心举办的`《计算机网络》骨干教师高级研修班的 三天学习,听取冯博琴教授以及李波副教授、陈文革副教授和程向前副教授的深入介绍 经验和讲解,对...

    07_尚硅谷大数据技术之Hive.doc

    ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你把握问题本质,四两拨千...

    深入解析docker技术(一).docx

    1.由浅入深学习docker技术,简单易学,1天学会docker常用知识点 2.包含常用操作,例如容器创建,查看容器信息,容器目录挂载等等操作 3.根据视频自己总结,截图是视频中的图, 截图引用来源:深入解析docker容器...

    08_尚硅谷大数据技术之Flume.docx

    ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你把握问题本质,四两拨千...

    12_尚硅谷大数据技术之Oozie.doc

    ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你把握问题本质,四两拨千...

    网络技术BGP.docx

    感觉总结起来,网工的考试难点的话就是上午的理论题目了,而需要花点时间去学习一下关于网络知识点,那些计算机硬件这块的话,看懂就看,看不懂就过.整个试卷就那么几分,还不如花多点时间去把网络这块的分数拿下来呢.至于...

    01_尚硅谷大数据技术之Linux.docx

    ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你把握问题本质,四两拨千...

    综合布线工程实用技术

    湖北交通职业技术图书馆信息大楼综合布线工程总共有信息点848个,其中数据点424个,语音点为424个,光纤点18个,配线间与中心机房之间用光纤联接,计算机实训室也才用光纤接入的方式,具体详见综合布线点位表。...

    21天学通Java-由浅入深

    图文并茂很适合初学着学习 下面是课程的目录: 第一篇 基础篇 第1章 Java简介(精彩视频:33分钟) 21 1.1 Java的平台简介 21 1.2 安装工具包 22 1.2.1 下载JDK 22 1.2.2 安装JDK 24 1.2.3 查看与设置环境变量 25 ...

    计算机网络课程学习心得.docx

    计算机网络课程学习心得 计算机网络学习心得1: 通过参加教育部全国高校教师网络培训中心举办的《计算机网络》骨干教师高级研修班的三天学习,听取冯博琴教授以及李波副教授、陈文革副教授和程向前副教授的深入介绍...

    python100天带你轻松从入门到放弃.zip

    2.技术全面,内容充实 本视频在保证内容使用的前提下,详细介绍了Python语言的各个知识点。同时,本视频涉及的内容非常全面,无论从事什么行业的学员,都可以从本视频中找到可应用Python与本行业的地方。 3.代码完整...

Global site tag (gtag.js) - Google Analytics