后台技术

初识Storm(1)

旧巷老猫 提交于 2019-12-15 19:53:54
个性化视频推荐系统 1. 个性化推荐与应用 2. 视频推荐系统 3. 推荐系统简介 :后台系统每天做一次数据的全量处理,统计分析用户以往的观看记录,将统计后的结果作为推荐的依据,然后 将视频个性 化的推荐给用户,提高用户观看视频的可能性。 存在的问题: 1. 单机部署 2. 处理数据量有限,不能扩展 3. 无法做到实时性 Storm是什么? 1. Storm是Twitter开源的一个分布式的实时计算系统 2. 使用场景:数据的实时分析,持续计算,分布式RPC等等。 Storm优点: 1. 分布式 2. 可扩展 3. 高可靠性 4. 编程模型简单 5. 高效实时 下载Storm安装包 1. 官网地址: http://storm-project.net/ 2. 源码地址: https://github.com/nathanmarz/storm 3. 技术论坛: https://groups.google.com/forum/#!forum/storm-user 4. 安装包结构介绍 Storm安装 环境:centos6.4 软件: jzmq-master-----java与c++通讯的桥梁,有了它,就可以使用zeromp了 storm-0.8.2 zeromq-2.1.7-----号称史上最牛逼的消息队列(用c++写的) zookeeper-3.4.5 1.编译安装ZMQ: tar

京东后台面试(很全面,很符合现在的面试!!)

有些话、适合烂在心里 提交于 2019-12-15 14:09:31
Java笔试面试目录(一个大佬的总结) https://blog.csdn.net/weixin_41835916/article/details/81413498 1.自我介绍。 2.画出项目的架构图,对每层进行解释,为何用MVC分层。 3.exception异常处理结构,常见异常,多catch处理顺序。 4.对多个表的操作,用事务操作如何实现,写代码 5.maven了解吗 6.死锁 OPPO面筋集合14题: https://blog.csdn.net/weixin_39345957/article/details/89000440 7.tomcat如何部署,war包结构,发布工具. 8.jvm相关原理,垃圾回收算法。 常用的垃圾回收算法有: 1. 引用计数法(经典算法) 对于对象设置一个引用计数器,每增加一个对该对象的引用,计数器+1,引用失效则-1.当计数器为0时,对象死亡,被回收。 存在问题: 对象内部频繁的加减操作,会一定程度上增加系统消耗 无法解决对象循环引用的问题(A中引用B,B中引用A,此时两个对象的计数器均不为0,A=NULL,B=NULL本该无效了,但是却无法回收,导致内存泄漏) 2. 标记清除法 该方法分为两个阶段:标记和清除 标记阶段:通过可达性算法,跟踪对象,标记所有和GCRoots节点相关联的对象,剩余没有被标记的对象则为需要回收的对象。 清除阶段

守护线程的理解

家住魔仙堡 提交于 2019-12-14 18:52:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) Daemon的作用是为其他线程的运行提供便利服务, 比如垃圾回收线程就是一个很称职的守护者 。User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了。 值得一提的是,守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程。下面的方法就是用来设置守护线程的。 public final void setDaemon(boolean on) 这里有几点需要注意: (1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。 (2) 在Daemon线程中产生的新线程也是Daemon的。 (3) 不要认为所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑。 因为你不可能知道在所有的User完成之前

Linux进程关闭和后台运行解析

倖福魔咒の 提交于 2019-12-14 17:01:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.问题背景 Java是跨平台的,大部分程序也都是在Linux服务器上运行的。但是很多朋友其实对服务器了解并不多,对相关知识也是一知半解。很多概念可能知道,但是并不十分清楚,仅仅是基本运用。可能很多新手朋友脱离了IDE或者web容器,都不知道怎么在服务器上运行程序。 举个简单的例子,相信很多朋友刚接触Linux的时候都遇到过这个问题。我们通过终端连接上服务器,通过命令行或者脚本运行了一个程序,然后关闭了终端连接,可能程序进程就消失了。我们也可能知道,在启动命令后面加&符号,可以进程在后台运行,关闭终端后,进程依然会消失,但如果通过shell脚本去运行,关闭终端连接后,程序可能不会消失。或者我们又知道可以通过nohup命令让进程在后台运行,并且关闭连接后,程序不会消失,到底为什么呢? 下面我会用比较通俗的语言进行讲解,如果有错误,欢迎指正。 2.进程关闭分析 当我们连接到服务器以后,运行的命令,启动的程序,设置的环境变量,都会挂在当前的连接中(非特殊设置或者特殊命令),当连接关闭时,所有东西都会消失。 进程的关闭,是通过信号进行传递的。我们通过 kill 命令发送不同的信号,去关闭指定的进程, 当我们关闭终端连接时,会向当前终端连接的下游进程发送 SIGHUP 信号(就是 kill -1 ),触发进程关闭动作。

后台权限管理系统(1)

风格不统一 提交于 2019-12-11 12:14:25
目录 1.需求分析 2.技术架构 3.环境搭建 3.1创建父模块 3.1.1修改父模块的pom文件,指定整个项目中用到的jar包的依赖及其版本 3.2 创建domain层子模块 3.3 创建dao层子模块 3.3.1 修改pom文件,添加dao层jar包的依赖 3.4创建service层子模块 3.4.1修改pom文件,添加service层jar包的依赖 3.5创建web层子模块 3.5.1修改pom文件,添加web层jar包的依赖 4.添加配置文件 4.1 spring和mybatis的配置文件 4.2 SpringMVC的配置文件 4.3 配置web.xml 4.数据库设计 1.需求分析 这个后台系统是为一个旅游网站设计的,主要业务是旅游产品的管理、订单管理和系统管理,其中系统管理包含用户管理、角色管理、资源权限管理和访问日志四个模块。 2.技术架构 前端使用AdminLTE模板主体工具,后台采用Spring+SpringMVC+Mybatis+SpringSecurity,数据库使用mysql。整个项目为单体架构,且并未考虑到高并发的应用场景。 3.环境搭建 3.1创建父模块 3.1.1修改父模块的pom文件,指定整个项目中用到的jar包的依赖及其版本 <?xml version="1.0" encoding="UTF-8"?> < project xmlns = "

react后台项目开发(一)

孤人 提交于 2019-12-11 02:26:18
1. 项目开发准备 描述项目 技术选型 api 接口(4部分:3请求{url,请求方式,请求参数格式}, 1响应数据格式)/ 接口文档/ 测试接口 2. 启动项目开发 使用react脚手架创建项目 开发环境运行:  npm start 生产环境打包运行: npm run build serve build 3. git管理项目 创建远程仓库 创建本地仓库 配置 .gitignore   git init   git add .  git commit -m "init" 将本地仓库推送到远程仓库   git remote add origin url   git push origin master 在本地创建dev分支,并推送到远程   gitcheckout -b dev   git push origin dev 如果本地有修改   git add.   git commit -m "xxx"   git push origin dev 新的同时:克隆仓库   git clone url   git checkout -b dev origin/dev   git pull origin dev 如果远程修改   git pull origin dev 4. 创建项目的基本结构   api: ajax请求模块   components: 非路由组件   pages: 理由组件

《App后台开发运维与架构实践》第1章 App后台入门

旧街凉风 提交于 2019-12-10 11:29:04
1.1 App后台的功能 远程存储数据 消息中转 1.2 App后台架构 如何快速提炼架构核心点,掌握架构的精髓? 是在什么业务逻辑遇到哪些问题; 采用了哪些技术解决方案。 架构设计有哪些特点? 架构是和业务紧密相关 架构的演变是由业务驱动 架构不是为了炫耀技术 1.3 App和App后台的通信 一般情况下,选择 HTTP协议 足够了;除非对App的安全性和性能要求极高,而选择私有协议。 App和服务器通信使用 短连接 ,除手游和聊天推送服务外,使用长连接。 App后台以 API的形式 提供给App使用。 App后台API以 JSON作为返回数据的格式 ,它比XML格式更省流量 。 1.4 App后台和Web后端的区别 App后台要慎重考虑网络传输的流量,主要在API设计、图片处理上 移动手机弱网络环境 手机电量有限 1.5 选择服务器 App产品经常会出现在毫无征兆的App访问量爆发的情况,解决访问的压力最快、最有效的方法是升级服务器的硬件,如升级CPU,升级内存容量或者升级带宽。 传统的IDC要升级CPU或升级内存容量的流程如下。 和客户经理商谈所需硬件的价格或在线选择具体的配置。 在线支付或银行转账。 确认钱到帐后,等待IDC安排工作人员升级硬件。 这个流程由于需要人工介入,很难做到几分钟内完成硬件升级。 而使用云服务器升级硬件就很简单,流程如下。

koa2 + react + node后台+热更新

▼魔方 西西 提交于 2019-12-09 21:57:21
技术栈 react+webpack 支持前台编写。node+mysql做后台维护 使用ts,包括了tsc,bable7,antd 使用mysql,koa-route 做路由 react+webpack配置 由于使用bable7 ,所以直接使用.babelrc 解析react、ts、es6高级语法 .babelrc相关配置如下,此文件位于项目根目录下。 //.babelrc { "presets": [ [ "@babel/preset-env", { "modules": false } ], ["@babel/preset-react"], ["@babel/preset-typescript"] ], "plugins": [ [ "import", { "libraryName": "antd" } ], [ "@babel/plugin-proposal-class-properties", { "loose": true } ], [ "@babel/plugin-proposal-decorators", { "legacy": true } ], "@babel/plugin-syntax-dynamic-import" ] } 同样需要配置tsconfig.json,此文件位于项目根目录下。内容如下 { "compilerOptions": { "outDir":

Android service的使用

假装没事ソ 提交于 2019-12-09 18:11:53
Services 一个 Service 是一个应用组件,它可以在后台执行耗时长的操作,而不提供用户接口。另一个应用组件可以启动一个service,然后它将在后台持续运行,即使用户切换到了另一个应用。此外,一个组件可以bind到一个service来与之交互,甚至执行进程间通信(IPC)。比如,一个service可以处理网络事务,播放音乐,执行文件I/O,或者与一个content provider交互,均是在后台。 一个service实质上可以有两种形式: Started 当一个应用组件(比如一个activity)通过调用 startService() 来启动一个service时,则 service 是 "started" 的。一旦被启动,一个service可以在后台无限期地运行,即使启动它的组件已经被销毁了。通常一个被启动的service执行一个单独的操作,并且不给调用者返回一个结果。比如,它可以通过网络下载或上传一个文件。当操作完成时,那个service应该自动停止。 Bound 当一个应用组件通过调用 bindService() 来bind一个service时,则service是 "bound"的。一个bound service提供了一个 允许组件与service交互的 客户端-服务器接口,发送请求,获取结果,甚至通过进程间通信(IPC)来夸进程执行这些。一个bound

APP后台架构20191205

与世无争的帅哥 提交于 2019-12-06 14:47:16
1. 架构 ,架构与业务紧密相关,是有业务驱动的。 2.APP后台演进原则。 App后台的架构是由业务规模驱动而演进的,App后台是为业务服务的,App后台的价值在于能为业务提供其所需要的功能,不应过度设计。 从项目的角度, 当App访问量不大时,应该快速搭建App后台,让App尽快上线给用户提供服务,验证商业模式的正确性,同时快速迭代产品。 当App访问量不断上升,这时要在保证快速迭代的前提下,同时兼顾高性能和高可用。 当App访问量达到一定阶段后,增长曲线就会放缓,但业务变得更加复杂,对高性能和高可用的要求也更高,性能问题、模块间的耦合、代码的复杂性会更加突出和明显,这时要使用业务拆分、分布式服务调用,甚至是技术转型等问题。    1. 项目启动时,单机部署。 app后台一个极简化的架构: 一开始就使用Redis的好处: 既能用作缓存,又能充当队列服务,而且并发性能高,能在长时间内应对业务压力,非常适合初期的项目。 这里使用Redis验证用户信息,充当消息队列。 而文件服务初期可以选择 文件云存储服务,或者自己搭建一个资源服务器。    2.项目一定规模时,分布式部署: 看一个百万到千万级的架构: 这里新增了专门用于连接内部服务器的SSH服务的外网通道,保证SSH操作随时可用,同时加入了服务器集群,提供负载能力。 随着业务的发展,某些数据表的规模会以几何级增长