-
高性能前端架构解决方案
这篇文章介绍了一些使前端应用程序加载更快并提供良好用户体验的技术。我们将研究前端的总体架构,如何首先加载必需的资源,并最大化资源缓存的概率。无论你的页面是否需要成为客户端应用程序,还是如何优化应用程序的渲染时间,我都不会说太多后端如何传递资源。总览我将把应用程序加载分为三个不同的阶段:初始渲染 – 用户看到任何东西之前需要多长时间?应用程序加载 – 用户可以使用该应用程序需要多...
-
工作流引擎开发系列二数据库设计
之前简单的讲解了基本原理,从这节开始会详细讲解。首先需要讲解的就是数据设计,下面就是数据库的相关设计表名:WorkflowTemplate--工作流模板表名:WorkflowTemplateFlow--模板活动Activity表名:WorkflowFlowRole--Activity审批权限表名:WorkflowFlowCondition--分支节点条件表名:WorkflowI...
-
使用Netty通信时,遇到TCP粘包拆包问题如何解决?答案如此简单
1、什么是TCP粘包拆包2、Netty中粘包问题的问题重现3、Netty中粘包问题的解决方案OK,在你心中有这么一个基本的脉络之后就可以开始今天的文章了。本系列所有的文章都会给出完整的代码,且在电脑上真实运行了一遍,确保无误。一、什么是TCP拆包和粘包我们使用TCP协议在传输数据的时候,如果数据块比较大,就会考虑将其切分。把一个大的数据包进行切割成一个个小的数据包发送。这时候就...
-
百万用户在线的角色服承载能力分析
一、用户基数的预设假设整套游戏服务端的架构设计以100万用户在线进行游戏为准,日活(用户每日活跃数量)就是要1000万以上,总的用户量都得1亿左右(呵呵,是不是很夸张,极少公司能做到)。下面各种进程类型,从CPU、内存和网络三个方面进行分析,如何进行架构设计来承载 【百万用户在线】,【千万日活用户】,【亿级用户量】。二、角色服承载分析首先,要说明一下,按照分区分服的运营策略,在...
-
Java界使用最广的依赖管理工具:Maven快速上手教程
Maven是Java界使用最广泛的依赖管理工具,几乎所有的Java类库和项目都使用Maven的项目模型。可以说Maven是学习Java必要的一个知识点。那么就让我们来看看如何使用Maven吧。安装MavenMaven的安装非常简单,访问下面的网页,选择zip包下载。下载完成后,放到合适的位置解压,然后将文件夹中的bin目录添加到环境变量中,以便可以在命令行中运行Maven。ht...
-
消息队列 CMQ 七大功能实践案例
背景消息队列,在业务解耦、削峰填谷、流量控制、广播消息等场景下都有很好的应用,已经成为很多企业IT系统内部通信重要手段。现有常用的开源消息中间件有RabbitMQ、Kafka、RocketMQ等,但各自有着不同的应用场景和特点,例如,Kafka注重的是消息的吞吐量,不保证消息存储的可靠性以及一致性,因此多用于日志系统数据的上报;RabbitMQ能保证消息可靠存储投递,但性能较差...
-
ngnix中配置详解
#安全问题,建议用nobody,不要用root.#user nobody;#worker数和服务器的cpu数相等是最为适宜worker_processes 2;#work绑定cpu(4 work绑定4cpu)worker_cpu_affinity 0001 0010 0100 1000#work绑定cpu (4 work绑定8cpu中的4个) 。worker_cpu_affin...
-
php+phpstorm+xdebug+PuTTY远程调试方式
1、环境说明 本地开发机:windows开发浏览器:chrome远程服务器:ubuntu、nginx, 服务器无法直接通过ip访问本地开发机,所以使用了PuTTY做映射,否则无需映射即可直接配置使用注意:php的路由需要能够路由到真实的php文件,否则无法远程调试2、安装必要程序(服务器)1) 安装xdebug, apt-get install php5-xdebug配置:在p...
-
带你看懂 HMR 热更新原理
现在的我们基本上都是使用 webpack 模式开发,修改了代码之后,页面会直接进行改变,但是很少有人想过,为什么页面不刷新就会直接改变了?初识 HMR 的时候,觉得神奇的同时,脑海中一直有一些疑问:一般来说, webpack 会将不同的模块打包成不同 bundle 或 chunk 文件, 但是在使用 webpack 进行 dev 模式开发的时候,我并没有在我的 dist 目录中...
-
淘宝万亿级海量交易订单都存储在哪呢?
阿里巴巴旗下的淘宝和天猫作为国内最大在线购物平台,提供售卖的商品数目数以亿计,其活跃用户数量超过了7亿人,服务的商家的数量也在数千万量级。面对性能和成本的双重压力,阿里数据库内核团队如何应对?01、淘宝交易订单系统介绍天猫和淘宝每天发生的实物和虚拟商品的交易达到亿级别。考虑到一次成功交易的整个链路,会涉及到会员信息验证,商品库信息查询,订单创建,库存扣减,优惠扣减,订单支付,物...
-
vue框架搭建流程
一、检查node和npm是否已安装win+r打开命令工具,输入cmd,后依次输入node -v和npm -v。若能显示版本号,则安装成功。若不能,node下载路径为Node.js。 npm下载为npm install npm -g二、配置node环境1、首先在node.js的安装目录根目录下新建两个文件夹:node_global和node_cache(第二步cache配置用到)...
-
nodejs真的是单线程吗?
一、多线程与单线程像java、python这个可以具有多线程的语言。多线程同步模式是这样的,将cpu分成几个线程,每个线程同步运行。而node.js采用单线程异步非阻塞模式,也就是说每一个计算独占cpu,遇到I/O请求不阻塞后面的计算,当I/O完成后,以事件的方式通知,继续执行计算2。事件驱动、异步、单线程、非阻塞I/O,这是我们听得最多的关于nodejs的介绍。看到上面的关键...
-
Linux常用的10个性能检测命令!
01uptime$ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.0212该命令可以大致的看出计算机的整体负载情况,load average后的数字分别表示计算机在1min、5min、1...
-
Spring AOP为什么能够成为Spring的基石?
Spring AOP是Spring的三大基石之一它究竟解决了什么痛点能获如此殊荣?Java在面向对象的世界里无限风光,oop成就了无数经典的软件,它让我们的软件更健壮,更易于维护,但是程序猿对软件的质量追求是永无止境的,oop对于业务的抽象和封装完美的无懈可击然而对于系统层面的一些需求比如系统日志,性能统计等,分散在软件的各个角落,维护起来很是不爽,这种问题的解决确是oop力所...
-
Java 性能问题如何排查?教你几招快速定位的方法
概述性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱,我们本篇文章来模拟下常见的几个Java性能故障,来学习怎么去分析和定位。预备知识既然是定位问题,肯定是需要借助工具,我们先了解下需要哪些工具可以帮忙定位问题。top命令top命...
-
MySQL用户及权限知识梳理
一、账号用户账号MySQL用户账号组成: 'USER'@'HOST'USER: 用户名。HOST: 来源主机地址,IP、主机名、通配符(%和_)。创建用户账号:mysql> CREATE USER 'USER'@'HOST';mysql> CREATE USER 'USER'@'HOST' IDENTIFIED BY 'PWD';用户重命名:mysql> RE...
-
为什么MongoDB使用B-Tree,Mysql使用B+Tree ?
除了 B+ 树,你可能还听说过 B 树、 B- 树,实际上, B- 树就是 B 树,英文翻译都是 B-Tree ,这里的 “-” 并不是相对 B+ 树中的 “+” ,而只是一个连接符。而 B 树实际上是低级版的B+ 树,或者说 B+ 树是 B 树的改进版。B+ treeB+ tree 实际上是一颗m叉平衡查找树(不是二叉树)平衡查找树定义:树中任意一个节点的左右子树的高度相差不...
-
CSS实用技巧第一讲:文字处理
前言作为程序员的我们,书写代码也需要大量的技巧。一份良好的代码能让人耳目一新,让人容易理解,同时也让自己成就感满满。因此,在这里简单的整理一些CSS开发技巧,希望能让你写出耳目一新、容易理解、舒服自然的代码。CSS实用技巧第一讲:文字处理本小结主要是围绕css对文字处理的技巧,有兴趣的小伙伴可以收藏一下。文本对齐方式CSS最常用的对齐方式,居中对齐、左对齐(默认)、右对齐,而且...
-
架构师必懂的——下一代微服务ServiceMesh
今年,ServiceMesh(服务网格)概念在社区里头非常火,有人提出2018年是ServiceMesh年,还有人提出ServiceMesh是下一代的微服务架构基础。作为架构师,如果你现在还不了解ServiceMesh的话,是否感觉有点落伍了?那么到底什么是ServiceMesh?它诞生的背景是什么?它解决什么问题?企业是否适合引入ServiceMesh?根据近年在一线互联网企...
-
mysql数据库如何进行备份和恢复
一、确保mysql开启了binlog日志功能在/etc/my.cnf文件里的[mysqld]区块添加:#这个是存储的位置为mysql配置文件的位置log-bin=mysql-bin然后重启mysql服务生效二、创建数据库先创建一个ops数据库create database ops;use ops;创建一个customers表并写上表结构create table customer...
-
Shell基础学习总结项目-定时备份
shell基础学完了,现在做一个任务,定时备份某一个目录下的文件,这个需求很常见,为了防止一些文件的丢失或者损毁,我们都应该养成备份的好习惯。比如说 将 /root/training/shell/data/log 这个目录下的文件压缩打包之后定时备份到/root/training/shell/data/backup这个目录下,备份的文件要以时间加上backup作为名字,下面开始...
-
掌握这8个CSS开发工具让你瞬间成为开发高手!还在等什么!
CSS是Web开发的基础之一。但是,我们中的一些人却感到非常困惑。这是因为我们没有遵循适当的学习流程,因此我们很难理解CSS的行为。本文旨在通过两种方式为你提供CSS的学习帮助:借助专用工具对CSS进行编码以及通过一些交互环境学习CSS。网上学习制作工具1、 EnjoyCSS地址:https://enjoycss.com/这个工具非常简单,是我们学习使用CSS时的救星。你可以使...
-
PHP无状态登陆:JWT
现在的软件开发项目大都使用前后端分离,项目后端接口遵循RESTful规范:(1)每一个URI代表一种资源;(2)客户端和服务器之间,传递这种资源的某种表现层;(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。这个时候,前后端不在同一个域名下,就存在跨域问题,使用session来记录登陆用户信息,就显得有些力不从心了,而且session需要存储在服...
-
MySQL的binlog知识梳理
1、binlog概念:binlog是一个二进制格式的文件,用于记录“修改数据或可能引起数据变更”的SQL语句(查询的SQL不会记录)。2、binlog功能:(1)恢复: 利用binlog日志恢复数据库数据。(2)复制: 主从架构通过binlog同步数据。(3)审计: 可以用binlog中的信息进行审计,判断是否有对数据库进行注入攻击。3、binlog的记录格式:(1)state...
-
nginx 1.18.0 稳定版发布
前言nginx 1.18.0 已发布,这是继 1.16 系列之后的最新稳定版本。1.18.0 加入了 1.17.x mainline 分支中的新功能和 bug 修复,包括 limit_req 和 limit_conn 中的 dry run 模式,limit_rate, limit_rate_after 和 grpc_pass 指令中对变量的支持,以及支持 auth_delay ...
-
微软:其47000位程序员每月制造近30000个bug
4月25日消息 微软详细介绍了他们如何利用机器学习模型处理其软件和服务中的BUG,“47000名开发人员每月产生近3万个Bug,”微软高级安全项目经理Scott Christiansen解释道。这家软件制造商在GitHub和AzureDevOps仓库中跟踪这些Bug,但仅靠传统的标签和优先级排序很难跟踪这些bug。▲图自微软官网微软现在正在使用近20年的历史数据、跨越1300万...
-
一个非常适合IT团队的在线API文档、技术文档工具——Showdoc
介绍每当我们接管其他人开发的模块或项目时,我们总是会疯狂地看着那些没有注释的代码。程序员经常希望其他人写技术文档,而不希望自己写技术文档。因为编写技术文档需要花费大量时间来处理格式和布局,所以编写该文档的人必须考虑各种非技术细节,例如在新建的Word文档中应放入哪个目录,各种文档由不同的人分散地保存在一个团队中。然后通过IM或电子邮件从其他人那里接收文件。这种通信还不错,但是效...
-
反爬虫、接口防盗刷 spring boot stater 组件 kk-anti-reptile
kk-anti-reptile是,适用于基于spring-boot开发的分布式系统的反爬虫组件。系统要求基于spring-boot开发(spring-boot1.x, spring-boot2.x均可)需要使用redis工作流程kk-anti-reptile使用基于Servlet规范的的Filter对请求进行过滤,在其内部通过spring-boot的扩展点机制,实例化一个Fil...
-
Vue3.0权限管理实现流程
一、整体思路后端返回用户权限,前端根据用户权限处理得到左侧菜单;所有路由在前端定义好,根据后端返回的用户权限筛选出需要挂载的路由,然后使用 addRoutes 动态挂载路由。二、实现要点(1)路由定义,分为初始路由和动态路由,一般来说初始路由只有 login,其他路由都挂载在 home 路由之下需要动态挂载。(2)用户登录,登录成功之后得到 token,保存在 sessionS...
-
idea2020.1无法启动项目,报错Error:(3, 28) java: 程序包org.springframework.boot不存在
之前安装的是idea 2019版本,一直没有问题。今天突然升级了一下,安装了idea2020.1最新版本,启动springboot项目的时候,竟然无法启动,而且提示的错误信息也很奇怪: Error:(3, 28) java: 程序包org.springframework.boot不存在而我检查了bootorg.springframework.boot包,明明是存在的。于是找了...