ARTS (第51周)
细节很重要。稍不注意就会出现错误。
Algorithm 算法
文件队列
自己写的个文件队列DEMO 用nio和nio的内存映射
1 |
|
加锁可并发版
1 |
|
第一个只出现一次的字符
1 | 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写) |
解法
1 | // 本质来说 是利用hash的思想 |
数组中的逆序对
1 | 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 |
解法 归并排序
每排序一次 逆序度就增加对应的个数
1 |
|
Review 英文文章
https://spring.io/guides/gs/gradle/
spring也支持gradle构建
Tip 技巧
SOA粗暴理解:把系统按照实际业务,拆分成刚刚好大小的、合适的、独立部署的模块,每个模块之间相互独立。
比如现我有一个数据库,一个JavaWeb(或者PHP等)的网站客户端,一个安卓app客户端,一个IOS客户端。
现在我要从这个数据库中获取注册用户列表,如果不用SOA的设计思想,那么就会这样:JavaWeb里面写一个查询方法从数据库里面查数据然后在网页显示,安卓app里面写一个查询方法查询后在app上显示,IOS同样如此。这里就会出现查询方法重叠了,这样的坏处很明显了,三个地方都有相同的业务代码,要改三个地方都要改,而且要改的一模一样。当然问题不止这一个。
于是乎出现了这样的设计思想,比如用Java(或者是其他语言皆可)单独创建一个工程部署在一台服务器上,并且写一个方法(或称函数)执行上述查询操作,然后使其他人可以通过某种途径(可以是http链接,或者是基于socket的RPC调用)访问这个方法得到返回数据,返回的数据类型是通用的json或者xml数据,就是说把这个操作封装到一个工程中去,然后暴露访问的方式,形成“服务”。比如这里就是注册用户服务,而关于注册用户的所有相关增删改查操作这个服务都会提供方法。
来自 https://www.zhihu.com/question/42061683?sort=created
用户 光太狼
Share 分享
https://zhuanlan.zhihu.com/p/50295490 把13亿中国人拉到一个微信群会发生什么?腾讯给出回答
http://www.360doc.com/content/16/1229/07/36536207_618569902.shtml 博弈论的几个经典例子
https://www.zhihu.com/question/42061683?sort=created 如何通俗易懂地解释什么是SOA?