<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[coding小世界]]></title><description><![CDATA[这世界上有这么多比你聪明得多的人都在努力着，你还有什么理由发懒呢~~~]]></description><link>https://blog.csdn.net/shangmingyang</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; shangmingyang]]></copyright><item><title><![CDATA[带你吃透RTMP]]></title><link>https://blog.csdn.net/shangmingyang/article/details/50837852</link><guid>https://blog.csdn.net/shangmingyang/article/details/50837852</guid><author>shangmingyang</author><pubDate>Wed, 09 Mar 2016 19:15:01 +0800</pubDate><description><![CDATA[title: 带你吃透RTMP 
date: 2016-03-06 19:26:00tag: [RTMP, 协议]RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写，它是由Adobe公司提出的一种应用层的协议，用来解决多媒体数据传输流的多路复用（Multiplexing）和分包（packetizing）的问题。随着VR技术的发展，视频直播等领域逐渐活跃起来，]]></description><category></category></item><item><title><![CDATA[并发编程之同步互斥篇]]></title><link>https://blog.csdn.net/shangmingyang/article/details/50640699</link><guid>https://blog.csdn.net/shangmingyang/article/details/50640699</guid><author>shangmingyang</author><pubDate>Sat, 06 Feb 2016 19:31:28 +0800</pubDate><description><![CDATA[在并发编程之基础问答篇中我对并发编程的概念、优势、应用场景、注意事项等做了整体上的大概介绍，文章最后提出了我从实际编程的角度对并发编程的理解：多线程的并发执行，线程间的通信和线程间对共享状态的同步与互斥。虽然说多线程并发执行是另外两方面的基础，但线程间对共享状态的同步互斥是并发编程的正确性保障，也会在另外两方面的讲解和例子中大量用到，再者鉴于本系列博客的期望读者是已经掌握并发编程最最基本使用的开发者]]></description><category></category></item><item><title><![CDATA[编程珠玑]]></title><link>https://blog.csdn.net/shangmingyang/article/details/50599455</link><guid>https://blog.csdn.net/shangmingyang/article/details/50599455</guid><author>shangmingyang</author><pubDate>Thu, 28 Jan 2016 11:25:39 +0800</pubDate><description><![CDATA[这不是一本具体算法的讲解或者代码编写的教程，但是从书中的字里行间，我们可以学到的是更多的软知识:对编程新的认识、更加发散的思维方式、更严格的代码要求、堪比瑞士军刀的小技巧…… 编程也许入门并不难，但是要想真正成为一名优秀的软件工程师，还是需要很多锤炼。内外兼修，方成大器。 
基础篇
第一章 开篇首先作者提出一个实际问题：
  如何给磁盘的某个文件排序，更具体来说就是是对一个最多包含1千万条记录，每条]]></description><category></category></item><item><title><![CDATA[Android中的BLE]]></title><link>https://blog.csdn.net/shangmingyang/article/details/50060041</link><guid>https://blog.csdn.net/shangmingyang/article/details/50060041</guid><author>shangmingyang</author><pubDate>Thu, 26 Nov 2015 22:08:56 +0800</pubDate><description><![CDATA[BLE是Bluetooth Low Energy的简写，是蓝牙连接传输数据技术的一种，顾名思义，和普通的蓝牙技术相比它的最大优点就是省电，这是如何做到的呢，这就是我们下面会介绍的BLE使用的GATT和ATT协议，既然它的特点是省电，这也就决定了这种技术不适用于传输数据量大、对传输速率和实时性要求高的应用，不过针对像心率监测、设备防丢这样的场景就很适合了。
GATT/ATT协议 
Generic At]]></description><category></category></item><item><title><![CDATA[支持设置数据为空时打底view的RecyclerView+支持RecyclerView的CursorAdapter]]></title><link>https://blog.csdn.net/shangmingyang/article/details/49494317</link><guid>https://blog.csdn.net/shangmingyang/article/details/49494317</guid><author>shangmingyang</author><pubDate>Mon, 02 Nov 2015 16:51:04 +0800</pubDate><description><![CDATA[自从v7包中的recyclerview出来以后很多之前要用listview实现的效果用recyclerview很简单就实现了，而且性能上也会有所提升，但是RecyclerView也有相比ListView不太方便的地方，比如ListView作为AdapterView的子类，有setEmptyView方法来设置列表为空时显示的view，这个功能一般都会用到，但是官方的RecyclerView并没有提供]]></description><category></category></item><item><title><![CDATA[回头看面试]]></title><link>https://blog.csdn.net/shangmingyang/article/details/48738513</link><guid>https://blog.csdn.net/shangmingyang/article/details/48738513</guid><author>shangmingyang</author><pubDate>Fri, 25 Sep 2015 22:51:17 +0800</pubDate><description><![CDATA[前段时间都在忙于找实习，在这里回顾一下自己这几个月来面试和实习的一些感悟，一方面mark一下这份人生重要的经历，总结一下自己的不足和今后的着重点，另一方面也希望能够以自己的亲身经历和体会给即将准备面试的朋友们一些启发和思考。这里先强调一下本篇博客的目的并不是教小白如何一步一步地准备面试，更不是以一个过来人的身份装B传授什么面经，所以如果读者是想找一篇准备面试的教科书的话，建议还是放过本篇博客，看看《]]></description><category></category></item><item><title><![CDATA[leetcode-Binary Tree Level Order Traversal]]></title><link>https://blog.csdn.net/shangmingyang/article/details/45126721</link><guid>https://blog.csdn.net/shangmingyang/article/details/45126721</guid><author>shangmingyang</author><pubDate>Sun, 19 Apr 2015 10:00:47 +0800</pubDate><description><![CDATA[题目地址:https://leetcode.com/problems/binary-tree-level-order-traversal/question:  
my thinking: 
和上篇文章http://blog.csdn.net/shangmingyang/article/details/45076337讲解的题目类似，这道题目也是涉及图的遍历的，显然对于这道题来说BFS要更简单一些，相]]></description><category></category></item><item><title><![CDATA[leetcode-CloneGraph]]></title><link>https://blog.csdn.net/shangmingyang/article/details/45076337</link><guid>https://blog.csdn.net/shangmingyang/article/details/45076337</guid><author>shangmingyang</author><pubDate>Thu, 16 Apr 2015 15:49:15 +0800</pubDate><description><![CDATA[题目地址：https://leetcode.com/problems/clone-graph/question: 
 
my thinking: 
其实这个题目是基于图的遍历的，不过要在遍历的过程中还要对节点进行深拷贝，我们知道图的遍历一般是有两种方法的：BFS（breadth-first-search）和DFS(depth-first-search)，这里我是采用的BFS算法，结合queue存储要]]></description><category></category></item><item><title><![CDATA[python函数的高级话题]]></title><link>https://blog.csdn.net/shangmingyang/article/details/45042319</link><guid>https://blog.csdn.net/shangmingyang/article/details/45042319</guid><author>shangmingyang</author><pubDate>Tue, 14 Apr 2015 15:01:47 +0800</pubDate><description><![CDATA[相信了解python的朋友对python的函数肯定不会陌生，一个def定义一个函数，这是最常用的也是最基本的，但除此之外python在函数式编程方面还提供了什么高级特性呢
匿名函数lambda 
语法：lambda 函数参数一，参数二……：表达式 -> 函数变量 
lambda这个词大家肯定很熟悉吧，现在很多语言像java,lua都开始支持lambda表达式了，而python中的lambda表达式并]]></description><category></category></item><item><title><![CDATA[Android ImageView.ScaleType有图有真相]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44997947</link><guid>https://blog.csdn.net/shangmingyang/article/details/44997947</guid><author>shangmingyang</author><pubDate>Sat, 11 Apr 2015 19:10:23 +0800</pubDate><description><![CDATA[本来没打算写这篇关于ScaleType的文章的，毕竟网上一大把，但是考虑到接下来的PhotoView源码的解析会用到这方面的知识，又不想让读者们再去费力去找别的相关文章，而且有的文章的讲解都是错的，所以就在这里讲解一下ImageView.ScaleType的几种不同类型究竟有什么区别，我们在实际使用的时候究竟应该采用哪一种
使用方法xml中：android:scaleType=”类型”
java代码]]></description><category></category></item><item><title><![CDATA[解决Android下NoClassDefFoundError错误]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44747775</link><guid>https://blog.csdn.net/shangmingyang/article/details/44747775</guid><author>shangmingyang</author><pubDate>Mon, 30 Mar 2015 10:56:36 +0800</pubDate><description><![CDATA[今天在撸代码的时候遇到了这么一个奇葩的错误java.lang,NoClassDefFoundError,说是有类没有找到，心想没有找到的话在编译的时候不久会报错了吗，怎么还会等到运行的时候才报错呢，百思不得其解之下，google之，发现很多人都是说是因为ADT升级到了22后才出现的这个问题，但是按照他们说的方法也还是不起作用，还有人说是在ADT17后adt会自动地把libs下的jar包加入环境变量，]]></description><category></category></item><item><title><![CDATA[仿天猫拖动广告效果]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44704787</link><guid>https://blog.csdn.net/shangmingyang/article/details/44704787</guid><author>shangmingyang</author><pubDate>Sat, 28 Mar 2015 19:43:52 +0800</pubDate><description><![CDATA[**由于某种不能道明的原因，装了个天猫的apk，个人感觉主色调有点暗（当然程序员的审美不可信），看到首页上有个拖动广告的效果感觉还不错，就试着仿了一下（但是这个广告好像是暂时的我现在截不到原效果图了，sorry~~~），下面是实现的效果图： 
 
接下来就看看我们要怎么实现这个效果吧—>>> 
其实这个实现的原理也比较简单，我们也选择一种比较简单的实现方式，既然这里用到的是广告图片，那么最好就是继承]]></description><category></category></item><item><title><![CDATA[leetcode-MinStack]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44537073</link><guid>https://blog.csdn.net/shangmingyang/article/details/44537073</guid><author>shangmingyang</author><pubDate>Sun, 22 Mar 2015 13:29:44 +0800</pubDate><description><![CDATA[题目地址：https://leetcode.com/problems/min-stack/ 
题目描述： 
 
my thinking: 
    点击这个题目的tag，我们会看到这是一个关于栈这个数据结构的题目，而且在这个题目中也是有时间限制的，时间复杂度要为O（n），我一开始时想用c++的vector实现的，但是超时了，后来仔细考虑了一下这个题目要求的操作，无非是插入，取得最后插入的值，删除最后]]></description><category></category></item><item><title><![CDATA[软件开发之道]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44227019</link><guid>https://blog.csdn.net/shangmingyang/article/details/44227019</guid><author>shangmingyang</author><pubDate>Thu, 12 Mar 2015 20:40:02 +0800</pubDate><description><![CDATA[作为一名软件开发人员，我们不仅应该知道怎么开发软件，还要知道怎么更好，更有质量地开发软件，从而提高软件的稳定性和可维护性，在这一方面实在不是你干瞪眼转转脑子就能想出来的，这必须要长时间的工程实践才能一点一点地摸索出来，也就是我们经常说的经验。但是我们遇到的东西总是有限的，积累的经验也是有限的，幸运的是现在已经有很多已经被证明可靠的软件工程方法和模式被提出来而且广泛应用到了我们的开发中，所以要想提高自]]></description><category></category></item><item><title><![CDATA[leetcode-Longest Substring Without Repeating Characters]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44156259</link><guid>https://blog.csdn.net/shangmingyang/article/details/44156259</guid><author>shangmingyang</author><pubDate>Mon, 09 Mar 2015 16:21:00 +0800</pubDate><description><![CDATA[question: 
     
    my thinking: 
        首先明确最终要得到最长不重复字符串的长度，就要记录下最长不重复字符串的起始位置和结束位置（当然可能很多朋友有别的更好的做法，觉得不需要这些也可以，不过这样的一个好处是我们还可以知道是哪个字串是我们要求的最长字串，虽然题目没有要求，但是说不定面试的时候面试官就会加上这一问呢，这里也就相当于是给自己加点难度吧）]]></description><category></category></item><item><title><![CDATA[leetcode-Add Two Number]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44154589</link><guid>https://blog.csdn.net/shangmingyang/article/details/44154589</guid><author>shangmingyang</author><pubDate>Mon, 09 Mar 2015 14:31:52 +0800</pubDate><description><![CDATA[本篇文章和上篇文章的Add不是同一个问题，从本次的这个题目中不仅能学会怎么解决这种题目，更重要的是他提供了一种怎样解决大数相加的方法。好了，废话不多说，上题目 
question: 
      
my thinking: 
    这个问题其实就是数字相加，从原理上来说就算我们手算再大的数字相加我们也是能算出来的（只要够细心，肯付出时间），而计算机是不能直接计算非常大的数的和的，因为我们知道计算机]]></description><category></category></item><item><title><![CDATA[动态规划问题之求解数列中递增数列的长度]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44118473</link><guid>https://blog.csdn.net/shangmingyang/article/details/44118473</guid><author>shangmingyang</author><pubDate>Sat, 07 Mar 2015 18:34:29 +0800</pubDate><description><![CDATA[最近在准备面试，当然算法是必不可少的，但是自己平常做的更多的是工程方面的东西，涉及到的最多就是数据结构浅层的东西，还没有花很大的精力来研究算法，但是面试中算法肯定是不可缺少的，所以这几天一直在恶补算法，今天看 算法导论 时看到了动态规划算法，看书怎么也看不懂，于是乎上网搜了一下，结果搜到了知乎上的结果，见知乎之关于动态规划问题的探讨，感觉前两位朋友说的实在是太赞了，不仅是帮我理解了动态规划算法的思想]]></description><category></category></item><item><title><![CDATA[二叉查找树]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44103925</link><guid>https://blog.csdn.net/shangmingyang/article/details/44103925</guid><author>shangmingyang</author><pubDate>Fri, 06 Mar 2015 20:08:00 +0800</pubDate><description><![CDATA[二叉查找树是所有结点的左孩子都不大于该结点，右孩子都不小于该结点的完全二叉树
按顺序遍历 
 基于上面介绍的二叉查找树的特点，很容易看出来只要对树进行中序遍历，即先左子树，再根结点，最后右子树的顺序输出，就能得到由小到大排序的结点列表。 
 遍历所需时间为O(n)
查询二叉查找树 
 还是基于二叉查找树的特性，要查询key值的元素，首先比较它和根结点的大小，如果正好等于根结点的值，那么直接就找到了，]]></description><category></category></item><item><title><![CDATA[android-sutdio导入第三方库]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44088937</link><guid>https://blog.csdn.net/shangmingyang/article/details/44088937</guid><author>shangmingyang</author><pubDate>Thu, 05 Mar 2015 23:36:52 +0800</pubDate><description><![CDATA[使用android-studio时在导入第三方库的时候，和eclipse有些不同，这里总结一下导入方式，希望可以帮助大家更好地使用android studio这款神器帮助我们快速开发android程序
直接添加项目依赖 
 因为androidstudio是基于gradle构建的，这个和maven是有些类似的，可以帮助我们管理引用库的版本，重要的是我们可以根本不去手动下载这些需要的第三方库。 
 具体]]></description><category></category></item><item><title><![CDATA[Android Studio常用快捷键]]></title><link>https://blog.csdn.net/shangmingyang/article/details/44088921</link><guid>https://blog.csdn.net/shangmingyang/article/details/44088921</guid><author>shangmingyang</author><pubDate>Thu, 05 Mar 2015 23:36:05 +0800</pubDate><description><![CDATA[这是我觉得在使用android studio时比较常用有用的快捷键，希望可以帮助大家加快开发速度,更多见Intellij keymap
  作用
  快捷键win
  快捷键mac  查找命令快捷键
  CTRL_SHIFT+A
  CTRL+SHIFT+A
  快速修复
  ALT+回车键
  ALT+回车键
  格式化代码
  CTRL+ALT+L(和unix锁定桌面冲突)
  OPTION+S]]></description><category></category></item></channel></rss>