-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
10 lines (10 loc) · 14.7 KB
/
index.html
File metadata and controls
10 lines (10 loc) · 14.7 KB
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description"><title>既以歌声惊天下 何必起舞乱芳华</title><link rel="stylesheet" type="text/css" href="/css/style.css?v=0.0.0"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/normalize/8.0.0/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/pure/1.0.0/pure-min.css"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/pure/1.0.0/grids-responsive-min.css"><link rel="stylesheet" href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css"><script type="text/javascript" src="//cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script><link rel="Shortcut Icon" type="image/x-icon" href="/favicon.ico"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="apple-touch-icon-precomposed" href="/apple-touch-icon.png"></head><body><div class="body_container"><div id="header"><div class="site-name"><h1 class="hidden">既以歌声惊天下 何必起舞乱芳华</h1><a id="logo" href="/.">既以歌声惊天下 何必起舞乱芳华</a><p class="description"></p></div><div id="nav-menu"><a class="current" href="/."><i class="fa fa-home"> Start</i></a><a href="/archives/"><i class="fa fa-archive"> Archiv</i></a><a href="/about/"><i class="fa fa-user"> Über</i></a><a href="/atom.xml"><i class="fa fa-rss"> RSS</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title"><a href="/2019/03/22/C学习心得-一/">C学习心得(一)</a></h1><div class="post-meta">2019-03-22</div><div class="post-content"><h3 id="编辑器的选择和学习资料"><a href="#编辑器的选择和学习资料" class="headerlink" title="编辑器的选择和学习资料"></a>编辑器的选择和学习资料</h3><ul>
<li>window平台 Visual Studi、 Eclipse+CDT+MinGW CodeBlocks</li></div><p class="readmore"><a href="/2019/03/22/C学习心得-一/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/03/22/C-学习心得-一/">C++学习心得(一)</a></h1><div class="post-meta">2019-03-22</div><div class="post-content"><p> 面向过程思维转变成面向对象的思维<br> 一定要注重思考问题、思考概念、思考设计哲学<br> 多练习、多敲代码<br>C++对 C 语言的扩展知识<br>先看一个 C++经典导学代码,求圆的面积和周长:</p>
<p>#include <iostream><br>using namespace std;<br>class Circle<br>{<br> double radius ; //成员变量<br>public : //类的访问控制<br> void Set_Radius( double r ) { radius = r ; } //成员函数<br> double Get_Radius() { return radius ; } //通过成员函数设置成员变量<br> double Get_Girth() { return 2 <em> 3.14f </em> radius ; } //通过成员函数获取成员变量<br> double Get_Area() { return 3.14f <em> radius </em> radius ; }<br>} ;<br>int main()<br>{<br> Circle A, B ; //用类定义对象<br> A.Set_Radius( 6.23 ) ; //类的调用<br> cout << “A.Radius = “ << A.Get_Radius() << endl ;<br> cout << “A.Girth = “ << A.Get_Girth() << endl ;<br> cout << “A.Area = “ << A.Get_Area() << endl ;<br> B.Set_Radius( 10.5 ) ;<br> cout << “B.radius = “ << B.Get_Radius() << endl ;<br> cout << “B.Girth=” << B.Get_Girth() << endl ;<br> cout << “B.Area = “ << B.Get_Area() << endl ;<br> return 0;<br>}<br>思考题:C 是面向过程的,执行语句是一步一步执行的,也可以是函数之间的调用,那么上面的代码怎么执行?(面向对象的思维解决问题)<br>成员函数是否可以不要?为什么 c++中设计了成员函数?<br>Android 特训营 NDK 进阶之 C++大纲 Created by<br>Jesson<br>扩展知识总结:<br>一、命名空间总结<br>A)当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用 namespace std;这样才能正确使用 cout。若不引入 using namespace std ,需<br>要写 std::cout。<br>B)c++标准为了和 C 区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。<br>C)C++命名空间的定义:namespace name { … }<br>D)using namespace NameSpaceA;<br>E)namespce 定义可嵌套。<br>代码实战 1:熟悉 namespace 用法</iostream></iostream></p></div><p class="readmore"><a href="/2019/03/22/C-学习心得-一/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/02/01/关于IM通讯的研究/">关于IM通讯的研究</a></h1><div class="post-meta">2019-02-01</div><div class="post-content"><p>主要是通过干货集中营里面IM项目的研究<br>1.音频的录制 主要是仿微信按住语言的录制<br>2.多图片相册的选择<br>想到前几天的图片压缩框架<br>a.LuBan的压缩<br>b.网易云自定义压缩框架(极限压缩)<br>c带拍照的多图片选择框架 <a href="https://github.com/LuckSiege/PictureSelector" target="_blank" rel="noopener">https://github.com/LuckSiege/PictureSelector</a></p></div><p class="readmore"><a href="/2019/02/01/关于IM通讯的研究/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/01/31/万能接口的使用/">万能接口的使用</a></h1><div class="post-meta">2019-01-31</div><div class="post-content"><p>主要还是架构师思想的一个练习</p>
<p>组件间的通讯<br>1.Intent<br>2.handler<br>3.broadcastReceiver<br>4.aidl<br>5.contentprovider<br>6.messager<br>7.intentface</p>
<p>在不考虑eventbus等第三方通讯框架的基础上,通过对接口的封装来实现不同界面之间的通讯</p></div><p class="readmore"><a href="/2019/01/31/万能接口的使用/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/01/31/对事件分发机制的一些理解/">对事件分发机制的一些理解</a></h1><div class="post-meta">2019-01-31</div><div class="post-content"><p>主要是整理了一下网易云的安卓公开课关于时间分发机制讲解的重新认识</p>
<p>事件传递对象</p>
<p>Activity: 控制生命周期 & 处理事件</p>
<p>ViewGroup: 一直View的集合(含多个子View)</p>
<p>View: 所有UI组件的基类</p></div><p class="readmore"><a href="/2019/01/31/对事件分发机制的一些理解/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/01/28/手写EventBus框架/">手写EventBus框架</a></h1><div class="post-meta">2019-01-28</div><div class="post-content"><p>最近在听网易云的安卓高级公开课<br>分析了EventBus的实现原理<br>刷新了自己对于EventBus的认识<br>然后自己也做了一个相关的项目加深了一下<br>项目中主要是涉及EventBus的注册 以及发送<br>当然还有就是对于普通事件和粘性事件应用场景的思考以及实现<br>参考博客<br><a href="https://www.jianshu.com/p/cdfc4c8e4ed9" target="_blank" rel="noopener">https://www.jianshu.com/p/cdfc4c8e4ed9</a><br>测试代码<br><a href="https://github.com/LidongWen/EventBusWenld" target="_blank" rel="noopener">https://github.com/LidongWen/EventBusWenld</a></p></div><p class="readmore"><a href="/2019/01/28/手写EventBus框架/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/01/25/安卓跨进程间通讯的研究/">安卓跨进程间通讯的研究</a></h1><div class="post-meta">2019-01-25</div><div class="post-content"><p>最近听了一次网易课堂的关于安卓跨进程通讯的公开课.整理了一下发现其实主要是Hermes框架的研究<br>先说一下他的使用场景:该框架设计的初衷是为了解决插件化开发过程中关于<br>主从进程通讯困难的问题.有别于传统的AIDL的棘手实现.<br>分为两种: 一种是同一APP多个进程间通讯,还有一种是多个APP之间多个进程间通讯<br>当然本人理解更常见的应用常见还是第一种,比如主进程,下载进程,推送进程间进行通讯<br>第一种实现起来比较简单,传统的AIDL也可以进行实现<br>也可以使用他推荐的框架<br>自己实现测试的Demo地址<br><a href="https://github.com/tianyao106/Hermes" target="_blank" rel="noopener">https://github.com/tianyao106/Hermes</a></p></div><p class="readmore"><a href="/2019/01/25/安卓跨进程间通讯的研究/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/01/14/安卓性能优化工具/">安卓性能优化工具</a></h1><div class="post-meta">2019-01-14</div><div class="post-content"><p>leackCanary:内存泄漏检测工具<br>blockCanary:ANR检测工具</p>
<p>leakCanary实现原理:<br>(1) 监测Activity 的生命周期的 onDestroy() 的调用。<br>(2) 当某个 Activity 的 onDestroy() 调用后,便对这个 activity 创建一个带 ReferenceQueue 的弱引用,并且给这个弱引用创建了一个 key 保存在 retainedKeys 中。<br>(3) 在 Android 的 Framework 中,当一个 Activity 被 destroy 后一般会产生一次 gc,并且还会产生一个 idle。<br>(4) 如果这个 activity 可以被回收,那么弱引用就会被添加到 ReferenceQueue 中。<br>(5) 等待主线程进入 idle后,通过一次遍历,在 ReferenceQueue 中的弱引用所对应的 key 将从 retainedKeys 中移除,说明其没有内存泄漏。<br>(6) 如果 activity 没有被回收,先强制进行一次 gc,再来检查,如果 key 还存在 retainedKeys 中,说明 activity 不可回收,同时也说明了出现了内存泄漏。</p></div><p class="readmore"><a href="/2019/01/14/安卓性能优化工具/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/01/10/LRU算法的研究/">LRU算法的研究</a></h1><div class="post-meta">2019-01-10</div><div class="post-content"><p>参考LRU的四种写法<br><a href="https://blog.csdn.net/elricboa/article/details/78847305" target="_blank" rel="noopener">https://blog.csdn.net/elricboa/article/details/78847305</a></p></div><p class="readmore"><a href="/2019/01/10/LRU算法的研究/">Mehr lesen</a></p></div><div class="post"><h1 class="post-title"><a href="/2019/01/02/2018总结之Gradle/">2018总结之Gradle</a></h1><div class="post-meta">2019-01-02</div><div class="post-content"><p>一方面通过对Gradle3.0的快速学习,对于Grovy语法有可了一个简单的学习<br>其实kotlin也可以实现Gradle的脚本编写,Gradle官方也是支持的<br>话说回来Grovy这门语言类似于java,<br>java具有的一些特性在Grovy身上也可以看到<br>java是一门面向对象的语言,而Grovy既是一门面向对象的语言,又是一门面向过程的语言.但是写法又简单一些<br>对于Gradle生命周期<br>初始化,加载,build的task的构建<br>当然安卓重新写了安卓插件,可以方便我们使用其中的一些属性<br>当时有时候我们可以自定义一些属性如版本号,指定source文件的地址来快速编译工程</p></div><p class="readmore"><a href="/2019/01/02/2018总结之Gradle/">Mehr lesen</a></p></div><nav class="page-navigator"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><span class="space">…</span><a class="page-number" href="/page/5/">5</a><a class="extend next" rel="next" href="/page/2/">Nächster</a></nav></div></div><div class="pure-u-1-4 hidden_mid_and_down"><div id="sidebar"><div class="widget"><form class="search-form" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank"><input type="text" name="q" maxlength="20" placeholder="Search"/><input type="hidden" name="sitesearch" value="http://yoursite.com"/></form></div><div class="widget"><div class="widget-title"><i class="fa fa-folder-o"> Kategorien</i></div></div><div class="widget"><div class="widget-title"><i class="fa fa-star-o"> Tags</i></div><div class="tagcloud"></div></div><div class="widget"><div class="widget-title"><i class="fa fa-file-o"> Letzte</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/2019/03/22/C学习心得-一/">C学习心得(一)</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/03/22/C-学习心得-一/">C++学习心得(一)</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/02/01/关于IM通讯的研究/">关于IM通讯的研究</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/01/31/万能接口的使用/">万能接口的使用</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/01/31/对事件分发机制的一些理解/">对事件分发机制的一些理解</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/01/28/手写EventBus框架/">手写EventBus框架</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/01/25/安卓跨进程间通讯的研究/">安卓跨进程间通讯的研究</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/01/14/安卓性能优化工具/">安卓性能优化工具</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/01/10/LRU算法的研究/">LRU算法的研究</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/01/02/2018总结之Gradle/">2018总结之Gradle</a></li></ul></div><div class="widget"><div class="widget-title"><i class="fa fa-external-link"> Blogroll</i></div><ul></ul><a href="http://www.example1.com/" title="site-name1" target="_blank">site-name1</a><ul></ul><a href="http://www.example2.com/" title="site-name2" target="_blank">site-name2</a><ul></ul><a href="http://www.example3.com/" title="site-name3" target="_blank">site-name3</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer">Copyright © 2019 <a href="/." rel="nofollow">既以歌声惊天下 何必起舞乱芳华.</a> Powered by<a rel="nofollow" target="_blank" href="https://hexo.io"> Hexo.</a><a rel="nofollow" target="_blank" href="https://github.com/tufu9441/maupassant-hexo"> Theme</a> by<a rel="nofollow" target="_blank" href="https://github.com/pagecho"> Cho.</a></div></div></div><a class="show" id="rocket" href="#top"></a><script type="text/javascript" src="/js/totop.js?v=0.0.0" async></script><script type="text/javascript" src="//cdn.bootcss.com/fancybox/3.3.5/jquery.fancybox.min.js" async></script><script type="text/javascript" src="/js/fancybox.js?v=0.0.0" async></script><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/fancybox/3.3.5/jquery.fancybox.min.css"><script type="text/javascript" src="/js/codeblock-resizer.js?v=0.0.0"></script><script type="text/javascript" src="/js/smartresize.js?v=0.0.0"></script></div></body></html>