- 博客(141)
- 收藏
- 关注
原创 IO模型之高阶分析
JAVA中的IO模型主要涉及JVM与操作系统 具体原理如:对于一个IO读的操作,步骤如下:1、数据先到操作系统的内核缓冲区 此时速度取决于网速与数据本身大小2、络决于从内核缓冲区再到应用程序的地址空间那么根据以上的原理,产生了几种IO模型1、BIO 程序发送请求给内核,然后由内核去进行通信,在内核准备好数据之前这个线程是被挂起的,所以在两个阶段程序都处于...
2018-08-07 16:24:17 272
原创 Cname与A记录(Address)区别
Cname与A记录(Address)区别A记录是解析域名到IP,Cname是解析域名到另外一个域名。一台服务器可以布置多个网站,也可以有多个域名,如如域名A----->A记录----->真正的服务器域名B(也叫A别名)域名C(也叫A别名)如果B,C此时也是通过A记录的形式到真正的服务器,那么哪一天真正的服务器修改了,A,B,C都得修改。而
2017-08-11 09:36:47 7563 1
原创 移动团队内部BUG数减少的管理
0:以RP为准看流程1、让产品过一遍2、让UI过一遍,让他们好好看一下3、两端对一遍4、对测有问题都相互提醒一下。
2017-06-12 10:02:00 409
原创 创业公司采用什么样的技术架构满足业务需求
经过这么多年的摸索与实践,初步总结一下:无论多好的系统架构,只有适合自己当前公司和自己公司目前人员架构的才是好的解决方案我选择了SSM(Spring SpringMVC Mybatis)作为最初的Server开发框架,绝大部分的工作也都是让阿里云帮助我们完成,结构如下图所示:前期可以用上面简单的,适合A轮前的。后期如果后面业务拓展起来,上面的架构,还可以继续的细
2017-05-17 12:12:39 434
原创 摆脱码农,走向管理,细节养成习惯
最近有朋友问我,我也做码农很多年了,如何走向管理岗。我仔细思考总结了一下:1、使用了什么框架,什么技术一定了解其深层次的原理,对自己是提升中,对工作来讲,出问题你也知道怎么修复。2、沟通能力的养成:要从自身提高做成,懂得理解产品,测试,UI童鞋。能帮助你更有效的沟通。 北京不缺少人才,清华,北大多了去了。每个人都有自己身的强项,要协同做战。3、不要频繁跳槽:钱的诱惑我们比
2017-05-17 11:47:17 437
原创 APP开发完整流程
一. 需求阶段1. 初期由leader或者项目责任人和PM沟通下阶段开发计划,确认需求的可行性和优先级等初步达成共识2. 接下来PM提供详细UE文档(需求颗粒感尽可能小)发起三方会议,由产品、开发和QA确认需求并达成一致,开发和QA可以对产品任意方面,提出看法和建议3. 最终的需求定稿,周知开发和QA,由QA开始编写测试案例4. PM容易忽略的需求:打点统计,新
2017-05-17 11:30:29 665
原创 团队管理总体原则
*******************************团队管理总体原则*************************************** 1、有意识的,主动去做两端统一的技术改造的事(重要) 2、加大客户端全范围内的技术培训与分享力度:待定分享如下: 1)http协议及深入分享培训
2017-05-17 11:27:55 312
原创 动态部署动态加载--阿里atlas
流程是这样:创建(patch)-----merge-------加载(运行期间)patch结构:文件里边包括两类:一类是主apk的更新,以.so文件形式存在。为什么使用.so文件?新构建的APK有一个新的点,就是新增LIB目录,它里面有.SO文件,分arm与x86,这些.SO都是正常的apk,做成.so文件,只是想在安装时,借
2017-05-17 11:23:23 1834
原创 热修复之--错误
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader就是说找不到库。如何解决??涉及依赖工程的.so库依赖。必须 让被依赖的工程具有和主工程一样多的文件夹。arm-v7,armv64,arm等等。
2017-04-13 12:18:07 215
原创 H5页面打开android本地照册,当webview页面被系统回收的情况下,如何处理图片
一、现象描述: 报告单上传图片功能打开照相机拍照后,图片无法显示二、问题原因: 报告单上传图片的时候,对应流程是这样: webview打开页面------->打开照相机----->裁剪压缩-----回到webview页面通知H5 如果打开照相机的时候,webview页面被回收,那么回到webvie
2017-04-11 12:02:51 1206
原创 for each深入理解其原理
foreach 等同于XXX a; IEnumerator ie = (IEnumable)b.GetEnumerator(); [e:nju ]while (ie.MoveNext) { a = (XXX)ie.Current; … }分析:看上面的代码分析 :首先调用集合对象的GetEnumerator()方法返回一个IEnumerator的引用
2017-03-14 16:45:58 378
原创 volitale深入原理
一般情况下,为了提高处理速度,处理器会直接利用缓存进行读写,不直接与内存打交道。但是声明了volatile关键字的变量,在操作这个变量进行读写时,JVM会发一个lock指令给处理器,这时候处理器就操作缓存,而是把这个变量写到内存中去。另外一个处理器2,会有一套缓存一致机制:这套机制是什么样的呢?就是数据总线一直存在变量的实际内存地址,每个处理器会一直有一个嗅探器去比对数据总线的地址,如果不
2017-03-14 16:30:13 520
原创 apply、call、bind区别、用法
bind主要是为了改变函数内部的this指向应用场景1:1、事件绑定var logger = { x: 0, updateCount: function(){ this.x++; console.log(this.x); } }
2017-01-25 10:19:58 279
原创 Objective-c runnloop
0 从程序启动开始到view显示:start->(加载framework,动态静态链接库,启动图片,Info.plist,pch等)->main函数->UIApplicationMain函数: - 初始化UIApplication单例对象 - 初始化AppDelegate对象,并设为UIApplication对象的代理 - 检查Info.plist设置的
2016-09-27 18:31:45 266
原创 Objective-C中block在ARC与MRC下的不同 深入剖析实用版
我们先来看如下代码:MyViewController *myController = [[MyViewController alloc] init…];// 隐式地调用[myController retain];造成循环引用myController.completionHandler = ^(NSInteger result) { [myController dism
2016-09-27 16:42:15 1448
原创 Objective-C中循环引用的问题 深入剖析实用版
我们先来看如下代码:MyViewController *myController = [[MyViewController alloc] init…];// 隐式地调用[myController retain];造成循环引用myController.completionHandler = ^(NSInteger result) { [myController dism
2016-09-27 16:40:11 633
原创 在移动数据环境下,使用手机抓包http协议
1、TCPdump:抓取网络数据包并对其分析的工具2、使用条件:必须是ROOT过的手机。(可使用root精灵软件root,一次不成功,一般再试一次,二三次即可成功) 也可以针对不同的手机在google官网上搜索 root+手机型号,搜索到特定机型的root方法3、使用步骤: 1)将下载好的tcpdump文件copy到/data/local/目录下。
2016-09-02 17:14:10 777
原创 网络请求方式在客户端与web端的应用和使用技巧
一、客户端用get还是post1、get 安全性非常低,post 安全性相对较高。如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post 为好。2、get执行效率却比Post方法好。 3、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;Post的信息作为http请求的内容,
2016-09-01 16:21:32 391
原创 GC roots的原理分析
从上图可分析出:reference1,reference2,reference3都是gc rootsreference1-> 对象实例1;reference2-> 对象实例2;reference3-> 对象实例4;reference3-> 对象实例4 ->对象实例6;可以得出对象实例1、2、4、6都具有GC Roots可达性,也就是存活对象,不能被GC回收的对象。
2016-08-26 16:06:19 1487
原创 垃圾回收机制中,引入计数是如何实现的,内部原理是什么,怎么维持对象引用的
先简单说说Java运行时内存区,划分为线程私有区和线程共享区(1)线程私有区: 1、 程序计数器,记录正在执行的虚拟机字节码的地址; 2、拟机栈:方法执行的内存区,每个方法执行时会在虚拟机栈中创建栈帧; 3、本地方法栈:虚拟机的Native方法执行的内存区;(2)线程共享区: 1、Java堆:对象分配内存的区域,这是垃圾回收的主战场; 2、方法区:存放类信
2016-08-26 15:23:09 775
原创 服务器优化建议
附内容:1、解决mongodb op log大的问题优化解决思路:表拆分,把原来的sys_operation_push 表拆按字段更新频率拆分成了三个表:sys_operation_push 用于存储推送内容基本信息 (此表数据基本无变化 或变化次数在5次之内);sys_push_data 用户存储推送信息相关阅读量,点赞量,评论量,分享量及活动参与量等经常
2016-08-25 14:20:00 498
原创 Kafka消息系统监控
第一版 kafka 监控脚本:messagesTotal : 149959 // broker 处理的消息总数bytesInTotal : 983568031 // 进入 broker 的消息字节数bytesOutTotal : 983921121 // broker 消
2016-08-24 12:48:37 1855
原创 Kafka的应用——环信业务优化
业务背景: 目前项目应用中采用第三方工具【环信】来作为我们客户端的聊天工具。针对第三方业务稳定性无法把控的特点,我们设计过多种方案来避免自身业务受制于第三方业务: 一、环信预注册 避免了环信注册账号时,环信业务崩溃而影响自身业务无法正常使用的风险 二、环信容错 避免
2016-08-22 19:50:13 530
原创 信鸽帐号推送的改进方案,由一个accessID变成两个
信鸽注册帐号重新生成:原来的程序进行登录时,使用UUID作为帐号进行信鸽注册,那么只要重新登陆,就用一个新帐号注册。 问题如下:用户使用UUID1进行注册了,服务器端又进行了推送。假如用户没收到推送之前就重新登录了,那么需要使用UUID2进行注册,以后只能收到UUID2的推送。那么原来的还没有到达的UUID1的推送 就永远到达不了啦。
2016-08-16 16:08:47 1009
翻译 IOS的签名机制
一、非对称算法和数字签名 区别之前的对称加密算法(加密解密用的是同一个秘钥),非对称加密算法需要两个秘钥,即公钥和私钥来进行加密和解密,它俩是成对出现的,如果用公钥加密的内容,只有对应的私钥才能解密,反之,用私钥加密的内容,只有对应的公钥才能解密。相对于对称算法,该算法安全性高,只要私钥不泄露,就能保证通信双方的安全,缺点是加密和解密花费时间长。例如HTTPS协议在SSL层就用到了非
2016-08-09 16:42:30 316
原创 OC中自动释放池原理深入剖析
一、对象------>release(retain -1)----------->(当retain count=0时)dealloc方法调用-------->销毁说明:1、销毁对象时肯定先走release方法,如果之后retain count还大于1,则不会释放如果retain count=0,则自动执行dealloc方法,进行销毁2、执行alloc 方法和copy方法,retain
2016-07-28 17:00:47 1381
翻译 如何让自己进步
1、Make Computer Science fundamentals very strong ,mainly Data Structure & Algorithm. 拥有非常扎实的计算机科学知识基础,尤其是数据结构和算法。 2、Make a habit of solving at least 3-4 code snippets/Week, check
2016-07-28 09:52:48 385
翻译 sharding
说明:本次探讨多从应用角度进行来剖析mongodb sharding的应用,较少提及运维层面的mongodb sharding部署,有兴趣的同事可以到网上查询资料进行学习。问题准备:什么是sharding?为什么要用sharding?什么场景下会用sharding?目录:1、sharding相关理论(概念)2、sharding应用场景(重要)
2016-07-27 18:22:14 2871
原创 mongoDB mapReduce
java 代码片段 执行mr需要用原始的client 用封装的DBOperations会超时 com.mongodb.MongoClient mongo = new com.mongodb.MongoClient(Constants.MexueGrowthMongodbIp,Constants.MexueGrow
2016-07-27 17:25:09 442
原创 加载单页面应用IOS端出现黑屏的问题,解决方案
要解决这个问题,可进行异步加载js和css。解决完了以后测试时发现。android,在低版本不支持css的异步加载所以做如下处理media="none" onload="if(media!='all')media='all'">最终解决方案:区分ios和android终端加载不一样的css样式var u = navigator.userAgent;var
2016-07-27 17:23:13 2666
原创 移动客户端下半年技术优化点
序号Android端技术优化点优化理由 优先级开发时间提测时间任务类型负责人可执行范围1从下一个界面返回到成长界面、消息界面时,我们都有处理逻辑的,对这些业务逻辑处理的整合和重新设计。 理由:从禅道上的BUG比例可看出,有一定比例都是从其他界面返回到上一个界面时发生的问题。比较多的是从其他界面返回到主界面,返回到成长界
2016-07-27 17:13:48 310
原创 客户端每日一享
今日讨论点:梳理距离提测时间点还有3天情况下的注意事项? 1)确定主要功能进展,确保主要功能先于最终提测点前完成。 2)对于尚未有解决方案或疑难问题,要抛到团队中。 3)对照需求点,确认全面功能实现。 4)对比UI图与IOS,android两端实现效果,查漏补缺。
2016-07-27 17:02:35 231
原创 客户端管理工作(每日一享)在开发周期限的情况下,如何更有效的利用时间?
讨论结果:假数据模拟接口的必要性,业务逻辑的梳理框图,然后再写代码效率就会提升了。另外整体的开发设计要本着先整体再局部的思路,先跑流程和功能,再局部细节的调整,细节的调整也要根据优先级,重要程度进行排序。
2016-07-26 09:56:57 283
原创 客户端早会(每日一享:责任键设计模式在米学APP中的应用?)
我们从书本上给出的例子引申讲到API中的例子,再联系米学APP中的实际例子, 举出若干种使用场景。对于这个设计模式学习,起到了举一反三的效果。(今日讨论的时间稍微长一点)
2016-07-26 09:53:26 308
原创 客户端早会——每日一享(如何提高开发过程中的速度与合作开发的注意事项?)
1)SVN不正确的代码管理对开发团队进度的影响2)开发完了的功能要自测没问题了,再开发别的功能。因此刚刚开发完成的话,印象是最深刻的。3)开发还是本着先抓大,先做容易的入手,遇阻的问题要抛出来。4)假数据的模拟可减少接口联调的时间。
2016-07-26 09:52:21 351
原创 每日一享(工作心态对自己成长的影响?)
工作心态对自己成长的影响?分享了微信上一文章。正确认识模块轮换工作,及额外工作任务对自己带来的好处。 做得越多,实际上,收获得也越多,进步得也越多。
2016-07-26 09:50:54 720
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人