- 博客(51)
- 资源 (19)
- 收藏
- 关注

原创 可落地的云游戏解决方案
本云游戏解决方案是一套可以落地的技术方案,已经有过客户案例并经过了一年多的线上运营,踩过了很多坑,也解决了很多云游戏相关的核心技术问题、视频流、底层协议问题等,现在把方案设计思路分享给大家,为大家提供一个参考。1云游戏模式2云游戏解决的游戏用户痛点3云游戏网络架构4云游戏软件架构5云游戏技术架构6系统特色在视频流及底层协议方面做了深入的优化,局域网几乎0延时,城域网延时在60ms以内,游戏体验效果领先业界大部分同行,能够满足各...
2020-05-19 11:43:58
3382
转载 HTTP协议工作原理、工作过程
1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。 在了解HTTP如何工作之前,我们先了解计算机之间的通信。2. 计算机相互之间的通信 互联网的关键技术就是TCP/IP协议。两台计算机之...
2020-06-02 10:35:56
10266
1
转载 Http协议原理分析
1. 基础概念篇1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。HTTP协议.
2020-06-02 10:18:47
1386
原创 java中调用js函数的方法
有时候由于一些不能说的原因,可能会遇到需要在java代码中调用js函数的场景,下面就来说说如何调用吧。 首先说明一点,java不支持浏览器本身的方法,只支持自定义的js方法,否则会报错。 1.先建一个js文件,test.js,内容如下:function add(a,b){ return a+b;} 2.在java代码中调用js函数public class Test { public static vo...
2020-05-16 09:23:27
3193
1
原创 第三方接口调用规范
调用第三方接口在很多系统中都很常见,不管是调用本公司其他业务平台的接口,还是调用三方公司的接口,都需要一定的规范,否则系统容错性会较差,而且出问题的时候不利于问题排查,也可能会造成双方互相推卸责任的情况,大公司很容易出现这种扯皮的问题。为避免相应的麻烦,需要制定相应的规范,以下规范可做参考。1.需要通过第三方接口获取数据的服务,禁止直接调用第三方接口,必须通过旁路系统进行调用。旁路系统可以是一个后端程序,如java程序。2.需要通过第三方接口获取数据的服务,必须做容错性处理。...
2020-05-09 09:56:54
3141
1
转载 Java 函数优雅之道【大厂规范】
导读随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题。持续地优化代码,提高代码的质量,是提升系统生命力的有效手段之一。软件系统思维有句话“Less coding, more thinking(少编码、多思考)”,也有这么一句俚语“Think more, code less(思考越多,编码越少)”。所以,我们在编码中多思考多总结,努力提升自己的编码水平,才能编写出更优雅、更高质、更高效的代码。本文总结了一套与Java函数相关的编码规则,旨在给广大Java程序员一些编
2020-05-09 09:25:32
334
原创 HttpClient获取302重定向的新网址方法
java中HttpClient如何才能获取302重定向的新网址呢?下面给出解决办法:HttpClient默认是直接进行重定向的,首先要阻止它进行重定向(302跳转)。//设置不允许重定向RequestConfig config = RequestConfig.custom().setRedirectsEnabled(false).build();//使用CloseableHttp...
2020-05-08 12:08:16
3238
原创 Disconf数据安全保护设计方案
很多大厂都会用到Disconf来作为配置文件服务中心,然而配置文件中通常涉及到很多账号及密码类的配置信息,对于一些安全性要求比较高的系统或者平台,显然需要进一步的安全处理,否则就达不到一定的安全级别,特别是一些政务类的平台,安全级别达不到验收是通不过的。基于此,做了一套Disconf数据安全保护设计方案,仅供参考。1 架构设计2交互流程交互流程说明:1...
2020-05-04 11:48:39
540
原创 基于webRTC的1V1在线视频聊天(网页版DEMO)
基于webRTC的1V1在线视频聊天DEMO:https://webrtc.jiuhoutech.com/DEMO效果如下:说明:1. 可以显示本地画面以及对方画面2. 可以发送消息3. 可以共享屏幕或者某一个程序的界面4. 也可以根据业务定制化信令服务器...
2020-03-02 12:03:39
5080
2
转载 基于timestamp和nonce的防止重放攻击方案
以前总是通过timestamp来防止重放攻击,但是这样并不能保证每次请求都是一次性的。今天看到了一篇文章介绍的通过nonce(Number used once)来保证一次有效,感觉两者结合一下,就能达到一个非常好的效果了。重放攻击是计算机世界黑客常用的攻击方式之一,所谓重放攻击就是攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程。首先要明确一个事情,重放攻击是...
2019-06-25 21:28:34
2035
转载 Java Web会话机制,Cookie和Session详解
1. 会话机制 Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 一次会话指的是:就好比打电话,A给B打电话,接通之后,会话开始,直到挂断电话,该次会话就结束了,而浏览器访问服务器,就跟打电话一样,浏览器A给服务器发送请求,访问web程序,该...
2019-03-23 19:20:38
245
原创 spring boot使用redis解决session双机问题
session双机问题在分布式系统中经常会遇到,也有挺多解决方案,列举几种:1. 使用缓存(如redis)来解决① 可以自己重写session管理类,自己对session进行管理,这可能会比较麻烦一点,因为要考虑session续期问题,考虑不周全可能会有一些问题② 如果你使用spring boot,那么你有福了,spring boot有现成的解决方案,O(∩_∩)O~2.sessi...
2019-01-11 14:39:48
669
原创 redis setnx解决定时任务多节点部署并发问题(分布式锁)
在一些大的互联网平台,通常都会使用定时任务处理一些周期性的业务,而为了保障系统的高可用性,定时任务也会多节点部署,而解决多节点并发问题(分布式锁),大家通常会想到使用缓存,如redis,但是如果使用set / get是无法解决问题的,同样会出现并发问题,redis有专门的解决分布式并发问题的方法,就是setnx命令,很好用,下面介绍一下java实现redis分布式锁的方法。1. Redis S...
2019-01-11 11:52:27
4658
3
原创 log4j2异步发送error日志邮件配置
从高可用性方面考虑,大的平台通常都会配置错误日志发送邮件的功能,由于发送邮件比较慢,同步发邮件会影响用户体验,通常会配置成异步发日志邮件。网上只有零散的一些文章配置,没有一个完整的log4j2异步发邮件的配置说明,下面就详细说明一下 - log4j2异步发送邮件的详细配置。1. 环境说明是基于 spring boot 项目做的配置,不过这跟log4j2的发邮件配置关系不是很大2. 配置...
2019-01-05 13:49:08
2399
5
原创 JavaMail关于使用qq企业邮箱发邮件踩过的坑
关于在java中使用qq企业邮箱发邮件,踩了几个坑,发出来供大家参考。问题一:能telnet 通 smtp.exmail.qq.com 465,但是发邮件就报错,提示连接smtp失败Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: smtp.exmail.qq....
2018-12-21 11:01:52
15408
转载 采用 redis主从 + 哨兵(sentinel) + vip漂移搭建一套redis高可用集群
一、单个实例当系统中只有一台redis运行时,一旦该redis挂了,会导致整个系统无法运行。单个实例二、备份由于单台redis出现单点故障,就会导致整个系统不可用,所以想到的办法自然就是备份(一般工业界认为比较安全的备份数应该是3份)。当一台redis出现问题了,另一台redis可以继续提供服务。备份三、自动故障转移虽然上面redis做了备份,看上去很完美。但由...
2018-11-22 10:35:35
3986
1
原创 【免费】少儿编程社区,Scratch中文社区,少儿编程学习交流平台上线~~~
码叮叮少儿编程社区,(www.madingding.com)Scratch中文社区成功上线了,旨在打造一个免费的开放的中国少儿编程学习交流社区,为中国STEAM教育发展出一份力,支持免费在线编程(Scratch3.0 最新的版本)和发布作品等,小朋友们可以在这里发布自己的作品,一展风采;这里为广大少儿编程爱好者提供了一个很好的学习交流的平台,汇聚了广大的少儿编程爱好者,有众多少儿编程高手,大家相互...
2018-10-30 16:02:37
9608
原创 Redis连接池设置及测试结果
设置redis连接池分为如下几步:1. 首先在nginx.conf文件中的http节点下添加如下upstream节点 upstream redis_pool { server 127.0.0.1:6660; #redis-server的ip和端口 keepalive 1024; }2. 其次在nginx.conf文件的server节点下...
2018-10-25 10:20:10
3369
原创 API Gateway(API网关)介绍
API Gateway是一个服务器,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的Facade模式很像。API Gateway封装内部系统的架构,并且提供API给各个客户端。它还可能有其他功能,如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等。 API Gateway负责请求转发、合成和协议转换。所有来自客户端的请求都要先经过API Gateway,然后路由这些请求...
2018-10-24 09:05:25
9829
原创 服务限流demo(lua脚本)
本文提供了两种服务限流的demo,以开拓思路,仅供参考。1. 基于漏统原理local function close_redis(red) if not red then return end local ok, err = red:close() if not ok then ngx.say...
2018-10-23 08:51:34
819
原创 swagger + springmvc配置使用文档
1. Swagger概述Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用: 1. 接口的文档在线自动生成,方便管理项目中API接口。 2. 方便前后端联合开发,以及三方调用。...
2018-10-22 08:49:28
354
转载 RabbitMQ和kafka从几个角度简单的对比
业界对于消息的传递有多种方案和产品,本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比。1. 在应用场景方面RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。譬如,重要业务数据处理上。kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数...
2018-10-20 10:31:26
237
原创 RabbitMQ教程,快速上手
1. 概述 RabbitMQ是信息传输的中间者,本质上,从生产者接收消息,转达消息给消费者。换句话说,就是根据你指定的规则进行消息转发,缓冲和持久化。 专业术语: 生产者(producer): 消息的发送者 。 队列(Queue):依存于Rabbit...
2018-10-19 15:57:01
583
原创 lua并发限流代码
首先在nginx.conf 文件中的http节点添加:lua_shared_dict limit_req_store 10m;以下是lua并发限流代码:local limit_req = require "resty.limit.req"--限制请求速率为500 req/seclocal lim,err = limit_req.new("limit_req_store",5,0...
2018-10-16 22:11:26
1929
原创 性能优化案例之:如何将TPS从60提升到2000?
下面是一个SaaS平台实际的优化案例,是一个app的登录功能,优化前TPS为十位数,优化之后达到两千以上。1. 环境配置生产环境服务器配置:①nginx:2台4c4g②api:6台4c4g③plat:6台4c4g④mysql:3台8c16g⑤lvs:2台4c4g⑥实名:2台压力机配置:4台8c16g:网络带宽: 内网带宽万兆优化内容: 在压力机服务器配置上DNS解析...
2018-10-11 10:12:03
26773
6
原创 实用性能测试工具介绍
本文主要介绍一下常用的两款测试工具:性能测试压测工具-Jmeter 性能测试监控工具-JProfiler1. 性能测试压测工具-Jmeter1.2 Jmeter简介JMeter,一个100%的纯Java桌面应用,由Apache组织的开放源代码项目,它是功能和性能测试的工具。具有高可扩展性、支持Web(HTTP/HTTPS)、SOAP、FTP、JAVA等多种协议的特点。Jmete...
2018-10-10 08:28:35
2061
原创 SaaS开放平台安全鉴权方式: Oauth鉴权机制及接入说明
SaaS开放平台鉴权,通常使用Oauth鉴权方式,微信开放平台、淘宝开放平台等都采用了这种鉴权方式。下面介绍一下Oauth鉴权的原理以及如何接入。1. Oauth是什么Oauth(开放授权,Open Authorization)是一个开放标准。允许第三方应用在用户授权的前提下访问户在服务商(平台)那里存储的各种信息。而这种授权无需将用户提供用户名和密码提供给该第三方网站。OAu...
2018-10-09 08:29:49
2976
原创 Springboot快速上手
基于Springboot 2.0.0.RELEASE 版本1. System Requirement1. Java8 or higher2. Spring Framework 5.0.4.RELEASE or higher□3. Maven3.2 or higher4. Servlet Container: Springboot embedded: name ...
2018-10-08 07:49:00
1128
原创 【实用】Redis高级功能
目录1. 内存淘汰1.1 主动过期1.2 内存策略1.3 Redis淘汰机制2. Redis事物2.1 事物简介2.2 Redis事物使用2.3 Redis事物原理2.4 Redis事物踩坑3. Redis持久化3.1 RDB3.1.1 RDB 配置使用3.1.2 RDB 内部流程3.1.3 RDB 内部结构3.1.4 RDB 配置建议...
2018-10-07 09:25:21
1778
原创 Spring boot参数设置
1. application.properties#端口号server.port=9010#应用名称spring.application.name=user-service#ssl相关配置server.ssl.enabled=trueserver.ssl.keyAlias=SEC_TESTserver.ssl.keyPassword=123456server.ssl.ke...
2018-10-05 21:45:45
699
原创 【实用】Redis各种存储结构使用场景
1. Redis使用场景简介1.1 Redis常见使用场景1.2 Redis竞品比较2. Redis数据类型及实用场景2.1 Redis数据类型总览2.2 Redis常见数据结构String 数据结构 List 数据结构 Hash 数据结构 Set 数据结构 Zset数据结构2.2.1 StringString 内部存储:String ...
2018-10-03 09:35:39
2075
原创 常用加密算法概述、比较及使用场景说明
加密算法 概要介绍 算法简要描述 优缺点 破解方式 使用场景 安全性 DES 1,对称加密; 2,数据分组(64位)用秘钥(64位,其中56位有效,8位校验)行加密; 3,算法公开,对秘钥保护;...
2018-10-02 08:49:07
3369
原创 生产环境tomcat参数设置建议
tomcat默认的参数配置是为开发环境定制的,所以内存和线程的配置都很低,如果直接应用在生产环境,很容易造成性能瓶颈;以下分别从JVM、线程池以及连接参数方面给出优化建议:1. JVM 优化:当内存为8G时,建议配置: JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms6144m -Xmx6144m -XX:NewSize=1024m -XX...
2018-10-01 20:23:46
2898
2
原创 tomcat内存优化及问题排查
tomcat内存错误常见的有三种分别:1. OutOfMemoryError: Java heap space(堆内存溢出)在排除应用服务内存泄漏的情况下,可以适当增加堆内存的大小解决该问题,及设置-Xms 和-Xmx ,一般不要查过物理内存的80%,并且最好两个值相等; 堆内存大小包括年轻代和年老代,同过-Xmn或者-XX:NewSize设置年轻代的大小,-Xmx减去年轻代大小等于老年...
2018-09-30 20:47:53
600
原创 架构设计 - 如何解除依赖
架构设计中常会遇到依赖的问题,依赖如果设计不好,往往会导致紧耦合、难以测试、扩展以及维护升级问题,下面通过几个具体的例子来讨论具体采用什么样的方式解决依赖问题。1. 示例1public class Account{ private Date deactivatedAt; private boolean active = true; public void deac...
2018-09-29 11:26:39
951
原创 Spring cloud微服务框架简介
1. 综述针对当前流行的微服务架构,比较有名的就是阿里的dubbo和spring cloud,dubbo只专注于服务之间的治理,如果我们需要使用配置中心、分布式跟踪这些内容都需要自己去集成,这样无形中增加了使用 Dubbo 的难度。spring cloud是spring家族的产品,几乎考虑了服务治理的方方面面,提供一整套解决方案,通过构建其框架下的各个组件可快速实现微服务设计中的相关功能:...
2018-09-28 09:46:09
5530
原创 【重磅推出】性能提升100倍的性能测试监控优化方法
目录1. 性能测试指标与场景1.1 性能常见指标1.2 性能测试常见类型1.3 性能测试报告关键图样2. 性能监控与分析策略2.1 数据说话2.2透明化一切可以透明的2.3 分层分级的指标体系2.4 性能分析过程2.5 响应时间(RT)分解2.6 Tomcat日志响应时间3. 应用/中间件性能监控与分析3.1 Jmeter TPS插件3.2...
2018-09-27 23:44:06
1012
转载 Redis高可用架构 (redis主从+sentinel)
Redis集群本身已经做到了高可用和横向扩展,但是,实际情况一些小的业务没必要上集群,单个实例就可以满足业务需求,那么我们就要想办法如何保证单个实例的高可用。keepalived是主备模式,意味着总有一台浪费着。下面我介绍一下redis主从+sentinel(哨兵)漂移VIP的方案一:实验环境#redis10.192.203.102:6400 主库10.192.203.10...
2018-09-27 12:05:16
245
原创 【基础+实战】JVM原理及优化系列之十:JVM内存泄漏专题实战
1. 定义1、内存泄漏:一般可以理解为系统资源(各方面的资源,堆、栈、线程等)在错误使用的情况下,导致使用完毕的资源无法回收(或没有回收),从而造成那部分内存不可用的情况。2、内存溢出:指内存不够使用而抛出异常,内存泄露是其形成的原因之一。2. 危害会导致新的资源分配请求无法完成,引起系统错误,最后导致系统崩溃。3. 内存泄漏分类 类型 描述 ...
2018-09-27 11:13:34
793
IT软件项目管理表格(最全,项目启动阶段+计划阶段+执行阶段+收尾阶段).zip
2021-03-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人