后台技术

App 后台架构

╄→гoц情女王★ 提交于 2019-12-03 10:37:25
转载请注明出处: http://blog.csdn.net/smartbetter/article/details/53933096 做App做的久了,就想研究一下与之相关的App后台,发现也是蛮有趣的。App后台的两个重要作用就是 远程存储数据 和 消息中转。这里面的知识体系也是相当复杂,做好一个App后台也是需要长期锤炼的。本篇文章从 App 后台架构 的角度介绍。好了,下面进入正题: 说起架构,我们先看一下何为架构,百度百科是这样说的:架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。那么我们也可以看出,架构是和业务紧密相关的,是由业务驱动的。 由于App客户端的特性,因此App后台对技术实现和一般的Web后台是有区别的。首先看一个适合App开发的开发模式: 1.敏捷开发模式 这里推荐Scrum这个敏捷开发框架,具体可以查看Scrum官网学习使用,这里只是引入。 Scrum流程如下图: 2.选择合适的数据库产品和服务器系统 数据库产品众多,这里我就针对Redis、MongoDB、MySQL还有MySQL的分支MariaDB展开说明: 1.数据库产品 数据库 数据存放位置 查找数据的区别 Redis 内存 基于键值对存储,读写速度快 MongoDB 同时使用了硬盘和内存 每个数据有一个id(索引),知道id(索引)查询速度快,不知道id

1.5 Hello, world! 解剖 -JSF实战 -hxzon -jsf学习笔记

拥有回忆 提交于 2019-12-03 07:07:43
1.5 Hello, world! 解剖 -JSF实战 -hxzon -jsf学习笔记 既然已经对JSF能够解决什么问题有了初步理解,我们来开始开发一个简单的应用。本节假定你已熟悉Java Web应用和JSP(关于这些技术的信息,参考1.2节)。下面来解剖一个简单的基于HTML的Web应用,该应用有两个页面:hello.jsp 和 goodbye.jsp。 hello.jsp页面做以下工作: l 显示文本“Welcome to JSF!”; l 有一个表单,其中有个文本框,要求输入1 到 500 的整数; l 在名为numControls 的JavaBean 属性中存储提交的文本值; l 文本框下面有个表格; l 有一个标签为Redisplay的按钮,点击它时,将添加一个numControls 输出UI组件到表格中(清除先前已经有了的UI组件); l 有一个标签为Goodbye的按钮,点击它将显示goodbye.jsp 页面。 goodbye.jsp 页面做以下工作: l 显示文本“Goodbye!”; l 显示JavaBean 属性numControls的值。 JSF执行Hello, world!应用程序的大部分工作,但是除了JSP 页面之外,还有一些其他要求: l HelloBean后台bean类; l Faces配置文件; l 正确配置的部署描述符。

WPF后台线程更新UI

匿名 (未验证) 提交于 2019-12-03 00:41:02
0、讲点废话 最近在做一个文件搜索的小软件,当文件多时,界面会出现假死的状况,于是乎想到另外开一个后台线程,更新界面上的ListView,但是却出现我下面的问题。老套路转载请说明出处哦: https://www.cnblogs.com/endlesscoding/p/9314273.html 。 1、后台线程问题 2年前写过一个软件,里面后台线程是用如下方法: 1 Thread searchFileThread = new Thread( new ThreadStart(StartSearchFile)); // 搜索文件后台线程 2 searchFileThread.IsBackground = true ; 3 searchFileThread.Start(); 虽然我将IsBackground属性置为true了,但是依然没有用,界面依然卡顿,不知为何,如果有大神路过,还请大神在评论区不吝赐教。最后上网baidu,google找了个别的办法,解决了它,效果还是很棒的。 2、解决界面假死问题 其实方法也很简单,微软早就想到此问题,提供了Dispather.Invoke()这一类方法。我将搜索到的文件放在lst_PaperList(这是一个Listview)中,StartSearchFile是我写的一个搜索文件的函数,然后用如下代码: lst_PaperList

一篇关于程序员的文章

匿名 (未验证) 提交于 2019-12-03 00:34:01
选择比努力更重要 关于方向的选择其实越早确定越好,生活中我们要面临无数个选择,前几天看的一个黑客相关的美剧中有句台词说的不错: life is binary 生活就是二进制,一个个0101组成的。每一次抉择,选了就是1,不选就是0。另外也有一句话说:“人一生要面临很多选择,但是真正能决定你命运的只有几个”。没错其实就是这样。 如果你是计算机专业的学生,那么到底是考研还是就业就是首先要面临的问题。本文是面向确定了毕业要工作的大学生的,所以关于这个抉择,不再赘述。 就业的话,本文标题是码农,实际是指所有计算机相关的技术工种。包括开发、测试、运维等。 很多选择本身并没有对错或优劣,只有适合不适合。 不要滥用勤能补拙,这个词语一度被很多人奉为圭皋,但同时成了枷锁。我相信这个词,但是要考虑现状,要考虑投资回报率。你在自己并不擅长或不感兴趣的领域深耕了四年,最后不一定能获得多少成绩。当然如果你能在毕业后继续深耕几年或许是可以的,但是我希望每一位大学生在毕业的时候都能有一份好的工作,并且如果你并不喜欢某一领域的话,那么我相信你一定不会坚持下去。所以我们一定要找到适合自己的方向! 那么如何发现自己对什么感兴趣呢?我也不知道很好的办法,我只知道一个朴素的方法――尝试。趁着年轻,就要多尝试。千万不要大三了都还不知道自己兴趣在哪,想做什么,适合什么。所以大一大二努力去碰钉子吧。 算法还是开发

前端---初印象

匿名 (未验证) 提交于 2019-12-03 00:25:02
   前端到底要不要学后台  前端到底要不要学后台,这个问题估计困扰了很多个要入行的小哥,而且各大招聘信息上很多都写着需要了解一到两门后台语言优先。这一点让很多小伙伴很方啊。   那么要不要学了,我的观点的是需要了解,不需要深入学。   为什么这样讲了?首先,从逻辑上来讲。如果你一个做前端的去公司还要做后台的工作,那么不直接招一个更加专业的后台人员了?讲道理,现在市场上的后台技术人员是比前端要多的,就你的那点前端技术刚好可以混个工作,凭啥你可以去抢后台的工作了。所以,各位小伙伴们,不要想当然了,公司招你去是不会要你去做后端的事情的。如果是这个道理,那么写上那些要求干嘛了?这不是在有事没事制造招人障碍,让人知难而退?   有过工作经验的小伙伴应该都知道,除了程序员跟讨厌的产品经理之间的矛盾外,最大的矛盾就是前后台的矛盾了。我之前有过好几个做后台的学员,我问他你为什么要学前端,他告诉我,迫于无奈,前端写的代码实在是太恶心了,太不规范了,每次拿到前端模板要改一半的代码,弄的我现在天天加班。我跟他说,要我的话就直接怼过去了,他说怼不得啊,基本都是妹纸,骂也骂不得,没办法,赶紧来学个前端,不然以后会猝死的。我相信有做后台的小伙伴看到这个故事肯定感同身受吧。所以,为了前后台开发效率更加高,更和谐,W3C和各大公司做了一系列的努力,什么前后端分离,基于MV*的前端架构等等。这也就是为什么

APP社交类项目设计之---前后台API介绍

匿名 (未验证) 提交于 2019-12-03 00:22:01
app和后端的交互,一般都是通过后端提供的api实现。api的设计,估计很多刚进入app后端的小伙伴会一无头绪,不知道怎么入门。下面根据自己3年的app后端经验,总结出下几个api设计原则,给小伙伴参考。 1. 什么是api?   这个问题在以前发表的文章“7.app和app后端的通讯”中其实已经回答了,这里再重复一次。   相信大家都用过银行的柜员机(ATM)的查询余额,转帐,取款等操作。   当在柜员机取款的时候,我们输入要取款的金额,隔一会钱就出来了,如果因为有什么问题不能取款(例如超过取款金额的限制),屏幕上也会显示出错误的信息。   在整个过程中,我们只要输入金额,获得结果(取款成功或不成功),就行了,至于柜员机内部是怎么处理,我们不需要理会。   柜员机这种把内部的处理遮蔽的做法极大方便了我们的使用。   同样的,在后端,也只提供了一系列的功能给app使用,这系列的功能以api的形式提供。   api的定义:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。   当app调用api的时候,只需要明确下面3点:   1.这个api是干啥的(柜员机例子中,是取款功能,还是查询余额,还是转账)   2

vue-element-admin 开发后台前端解决方案

匿名 (未验证) 提交于 2019-12-02 23:51:01
介绍地址 https://panjiachen.github.io/vue-element-admin-site/zh/guide/ vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。 建议 本项目的定位是后台集成方案,不太适合当基础模板来进行二次开发。因为本项目集成了很多你可能用不到的功能,会造成不少的代码冗余。如果你的项目不关注这方面的问题,也可以直接基于它进行二次开发。 集成方案: vue-element-admin 基础模板: vue-admin-template 桌面终端: electron-vue-admin Typescript 版: vue-typescript-admin-template (鸣谢: @Armour) 文章来源: https://blog.csdn.net/weixin_40333655/article/details/96995941

一份阿里后台开发面经(收藏系列)

匿名 (未验证) 提交于 2019-12-02 23:35:02
各部门简历面 1. volatile的底层如何实现,怎么就能保住可见性了? 2. 三个线程如何实现交替打印ABC 3. 线程池有哪些创建方式和安全性问题 4. 有哪些线程池的类型 5. 线程池中LinkedBlockingQueue满了的话,线程会怎么样 6. 线程池的底层原理和实现方法 7. 线程之间的交互方式有哪些?有没有线程交互的封装类 (join) 8. 算法:堆排序、栈实现队列、反转链表 9. Java锁机制,都说一下~ 10. 除了@ResponseBody,controller层如何标准返回给前端所要的数据类型?你会怎么实现? 11. 异常捕获处理 12. Spring MVC的原理和流程 13. HashMap和ConcurrentHashMap哪个效率更高?为什么? 14. Redis的缓存淘汰策略有哪些? 15. Java内存模型说一下 16. mybatis如何进行类型转换 17. mybatis的xml有什么标签 18. MySQL锁机制 19. 如何修改linux的文件权限 20. jvm的回收算法 21. 你会怎么设计数据库表结构 22. 数据库有哪些索引? 23. 如何防止sql注入 24. 抽象类和接口有什么不同 25. myql间歇锁的实现原理 26. future的底层实现异步原理 27. SpringBoot Starter原理 28.

iOS无埋点数据SDK实践之路

匿名 (未验证) 提交于 2019-12-02 23:03:14
SDK 已经具备不需要代码埋点就能 自动的、动态可配的、全面且正确 的收集用户在使用 App 时的所有事件数据。除此之外,还单独开发了与之配合的圈选SDK,能够在 App 端完成对界面元素的圈配以及 KVC 配置的上传。而界面元素圈配的工作完全可以交给用研与产品人员来做,减轻了开发人员的工作量。 SDK 已有的功能可以分为两大部分: 基本事件数据的收集:基本事件的收集是指应用冷启动事件、页面事件、用户点击事件、ScrollView滑动事件等,这部分全部都是自动完成的,实现思路会在第一节中介绍。 业务层数据的收集:业务层数据的收集是指对与业务功能相关的一些数据,例如:在用户点击提交订单按钮时,收集用户购买的物品以及订单总金额的数据。这种业务层数据的收集以往大多通过 代码埋点 的方式去做,本SDK则真正的实现了 无埋点 的去获取这些想要的业务数据。这部分的实现会在本文的第二节详细介绍。 SDK的整体实现思路 SDK 整体采用了 AOP(Aspect-Oriented-Programming)即面向切面编程的思想,就是动态的在函数调用的前后插入数据收集的代码。在 Objective-C 中的实现是基于 Runtime 特性的 Method Swizzling 黑魔法。 SDK 的数据收集功能的实现主要通过 Method Swizzling 来 hook 相应的方法