14 老杨的码农生活

尚未进行身份认证

热衷于Android系统分析,专注于tcp/ip协议,钻研linxu Kernel,关注网络安全。

等级
TA的排名 4w+

Android 4G上网流程分析

手机一般会提供两种上网方式:Wifi或者3G/4G上网,Wifi上网其实就是利用网卡通过以太网上网;3G/4G则是通过基带,利用蜂窝网络进行上网,之前已经简单的阐述了Wifi上网跟3G上网的区别,本文主要简述Android 3G/4G上网的流程及原理。无线上网硬件模型 3G/4G上网协议ppp 3G/4G上网流程-ppp如何建立 socket如何通过基带模块发送数据、接收数...

2019-11-05 11:25:49

跳表(skip list)

我们知道二叉搜索算法能够高效的查询数据,但是需要一块连续的内存,而且增删改效率很低。跳表,是基于链表实现的一种类似“二分”的算法。它可以快速的实现增,删,改,查操作。我们先来看一下单向链表如何实现查找image.png当我们要在该单链表中查找某个数据的时候需要的时间复杂度为O(n).怎么提高查询效率呢?如果我们给该单链表加一级索引,将会改善查询效率。image.pn...

2019-10-11 10:22:14

微软、谷歌、阿里等大厂是如何应用软件工程的

我们无论是否在大厂工作,都有很多途径了解到大厂是如何应用软件工程的,网上已经有很多分享,我们可能更像知道:从大厂应用软件工程的实践中,我们能学习到什么,又该如何学习借鉴。 每个公司都有自己的历史和文化,他们的文化又影响了各自的软件开发模式。 例如谷歌,谷歌崇尚工程师文化,招聘来的工程师都是万一挑一的,开发也没有太大的进度压力,所以google的工程师做项目不紧不慢,质量...

2019-06-15 17:47:32

日志管理:快速发现和定位问题

开始本文之前,我们先提问几个问题:如果你的网站或者服务出现故障,是谁第一时间发现问题的?用户还是运维人员? 如果我们的服务架构是由若干微服务组成的,其中一个微服务的异常导致了你的某个API请求异常了,你是否能快速定位到时哪个微服务出了问题? 在部署系统后,你是否能观察出来系统的性能是上升了还是下降了?如果我们对这些有不太确认的答案,那么我们就可以来看看,如果借助监控和日志分析工具...

2019-05-29 11:07:43

如何处理线上故障

软件上线后,发生线上故障很常见,但是如何应对线上的故障,这能反映出新手和高手的差距,也能反映出运维水平的高低。 新手遇到复杂的线上故障,不知道该怎么下手。对于线上故障,简单的比如从界面或者错误日志就可以直观地看到问题所在,但是有些故障没法直观看出来,比如内存一直在涨,CPU居高不下,遇到这种复杂的故障,通常新手就束手无策了。 高手一般会在实践中总结一套自己解决问题的步骤...

2019-05-28 16:41:13

TCP/IP详解

TCP/IPTCP/IP 意味着 TCP 和 IP 在一起协同工作。TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。IP 负责将包发送至接受者。TCP报文格式TCP报文格式1.jpg16位源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP...

2019-05-24 17:40:47

Java NIO:IO与NIO的区别

一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。二、NIO和IO的主要区别下表总结了Java IO和NIO之间的主要区别:IO NIO 面向流 ...

2019-05-24 17:23:18

Unix 网络 IO 模型及 Linux 的 IO 多路复用模型

本文主要探讨的问题有以下两个:Unix 中的五种网络 IO 模型; Linux 中 IO 多路复用的实现。基本概念在介绍网络模型之前,先简单介绍一些基本概念。文件描述符 fd文件描述符(file descriptor,简称 fd)在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向...

2019-05-24 17:12:05

Linux下五种网络IO模型

本文我们主要来了解一下Unix/Linux下5种网络IO模型:blocking IO, nonblocking IO, IO multiplexing, signal driven IO, asynchronous IO的基本原理,更好的理解在高级语言中的异步编程,一起来看看吧,希望对大家学习linux有所帮助。  写在前面  为了更好的理解下面提到的Linux下5种网络IO的概念,...

2019-05-24 16:45:03

成小胖学习ActiveMQ·基础篇

过了个春节,回到公司的成小胖变成了成大胖。但是你们千万别以为他那个大肚子里面装的都是肥肉,里面的墨水也多了不少嘞,毕竟成小胖利用春节的半个月时间专心学习并研究了 ActiveMQ,嘿嘿……这不,为了检验下自己的学习成果,上班的第一天成小胖就去找架构师老王交流 ActiveMQ 相关的知识,还顺便向老王讨了个红包,可把成小胖给高兴坏了。“来,根据你的了解说下 ActiveMQ 是什么。”“这...

2019-05-24 14:52:26

什么是DevOps?

最近的DevOps的概念很火,大家都在讨论DevOps,有人说DevOps是自动化运维,有人说DevOps是流程和管理,还有人说DevOps是一种文化,以前的运维工程师也纷纷变成了DevOps工程师。 那DevOps究竟是什么?传统的运维模式以及面临的挑战 在传统的瀑布模型开发中,软件生命周期中的运行维护工作是由运维工程师来完成的。 开发人员完成编码,测试...

2019-05-23 19:53:55

设计秒杀系统笔记

设计原因:为什么要针对秒杀设计一个完善的方案?因为系统可能会因为1%的秒杀业务影响其余99%正常业务的运行,所以需要将秒杀系统独立出来。待解决问题:主要解决两个问题:并发读、并发写。整体架构要求:概括为:"稳、准、快",即对应"高可用、一致性、高性能",其介绍分别如下:高可用:保证系统的高可用和正确性,设计PlanB进行兜底。一致性:保证秒杀减库存中的数据一致性。高...

2019-05-23 11:09:08

工程思维把每件事都当作一个项目来做

毕业考研软件工程方向时,记得上考研辅导班老师有句话对我影响颇为深刻: 软件工程是一问用工程化方法解决软件项目问题的学科,其本质也是一门工程学科,这门课的知识在学完后,不仅可以应用在软件项目中,还可以应用于日常生活中遇到的一些问题,Everything is a project。 这句话对我的影响很大,我开始在日常生活中尝试应用这个概念,小到做作业,大到完成工作中的复杂项...

2019-05-21 17:15:39

版本发布上线只是新的开始

我们今天从版本发布聊起,也就是运行维护篇的讨论学些。 对于版本发布,很多程序员可能觉得是很简单的事情,就是将程序编译打包部署,但是实际发布的时候,却经常出现版本发不错、或者发布前仓促修改合入了代码导致线上新问题的出现。 对于项目经理来说,版本发布也是很纠结的事情,总觉得很多功能没完成,很多Bug没修复,总觉得没有达到客户的预期,害怕用户的投诉和负面评价,结果版本发布一拖...

2019-05-21 14:15:43

如何预防账号密码泄露等安全问题

我个人对黑客和网络安全比较感兴趣,时常关注这方面的新闻。我们知道这些安全问题都是软件程序有Bug导致的,例如CSDN的数据库泄露事件、携程泄露用户银行卡信息事件、电商网站被用户篡改购买支付金额等等。 在软件项目开发时,安全一直是一个比较容易忽略的问题,但这也会导致很严重的损失,所以我们在软件开发时必要对安全问题引起重视,防患未然,构建安全软件。 我们今天一起讨论一下软件...

2019-05-20 16:40:52

测试工具为啥不能用即时通讯工具汇报Bug

五年前,我们公司开始做NFV,请了外面公司的几个人做一些协议接入,我们之间沟通Bug都是通过QQ或者邮件,这种方式是比较快捷但是后续不好进行跟踪。我们今天就来展开讨论如何更好地发现、报告和跟踪软件中的Bug。 Bug跟踪工具Bug一词的诞生来源于一只飞蛾破坏了计算机电路,已经有60多年的历史了,但是Bug跟踪工具却出现没多久,软件项目起初也是通过邮件等方式报告Bug,直到19...

2019-05-16 18:14:33

程序员应该有点产品意识

最近电视剧《都挺好》热播,剧中吴菲对苏明哲的台词引起了我们这些大龄程序员的焦虑“作为一个程序员,你的年龄已经很大了!我问你,你学新东西有年轻人快吗?”。 最近笔者也正处在35岁的档口,面对职业走向也焦虑万分,IT新技术层出不穷,没有那么多精力去学习,所以一直都在焦虑中。 焦虑是怎么产生的呢?通常焦虑来源于压力,压力来源于对未来职业的不确定性,这又来源自未来自己的价值所在...

2019-05-15 11:11:36

流程与规范

今天我们来讨论一下流程和规范的价值,以及如何去参与制定好的流程规范。 我们软件开发项目中一般都有如下流程规范:开发人员不能直接在生产环境替换进程验证,必须本地先测试验证后运维操作; 提交的代码必须Review通过后才能合并到主分支 代码需要遵循各种规范,如命令、格式、缩进等 发现Bug,提到到Bug跟踪系统,每个代码修改提交必须有Bug跟踪每个项目,或多或少都有各种各...

2019-05-14 19:40:53

我们需要专职的测试么?

这个文章必然是有争议的,我在我的微博上讨论过很多次了,每次都是很有争议的。有不同的观点,有争论总是一件好事,这样可以引发大家的思考。所以,对于我的这篇博文,如果你赞同我的观点,我会感到高兴,如果你会去认真地深入思考,我也会高兴,如果你反对,没关系,可以讨论。在此之前,我想说明一下我观点里的这个“专职QA”是怎么定义的。其是很多公司成立的专门做测试的技术人员,仅测试不开发。...

2019-05-14 10:08:58

探索性测试揭秘

最近看了不少有关探索性测试的讨论和观点,老实说越看越糊涂。所以忍不住吐槽一下,在这里和大家讨论一下探索性测试。希望对于想学习和尝试探索性测试的朋友有所帮助澄清,或者是更加糊涂,^_^。探索性测试有很多很多的定义:百度百科的定义:“同时设计测试和执行测试”。 嗯。。什么意思?Cem 老人家的正式定义:“a style of software testing that e...

2019-05-14 09:35:46

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。