- 博客(78)
- 收藏
- 关注
原创 网络题——信道传输,停等协议
一个信道的数据传输率是4kbit/s,传播延迟为20ms,那么帧的大小在什么范围内,停等协议才至少有50%的效率。信道:分为1.物理信道,由传输介质和有关通信设备组成2.逻辑信道传播时延:从发送端发送数据开始,到接收端收到数据(或者从接收端发送确认帧,到发送端收到确认帧),总共经历的时间。帧:数据在网络上是以很小的称为帧(Frame)的单位传输的,“帧”数据由两
2017-11-30 22:51:37 8131 3
原创 Android给RecyclerView添加头(Header)和尾(Footer)和分标题(Title)——最简单的两种方法
给RecyclerView添加头和尾的方法很多,这里写两种最简单的方法。1.控制布局 显隐xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" andro
2017-11-30 14:38:16 5783
翻译 Android——RecyclerView——ViewHolder——源码注释翻译:ViewHolder的官方
/** * A ViewHolder describes an item view and metadata about its place within the RecyclerView. * * {@link Adapter} implementations should subclass ViewHolder and add fields for caching * potentia
2017-11-30 01:51:53 491
原创 BFS+优先队列——迷宫最短路径——两种最优方法比较及详细图解
http://blog.csdn.net/qq_36523667/article/details/78638354这个链接里是一道迷宫题。用到了BFS+优先队列。我一直百思不得其解优先队列到底优先在哪了?我感觉和直接bfs没啥区别?后来证明做法不一样,思路也不一样。所以这里引出另一种最优的做法。正常的bfs黑色是当前的点,黄色是即将探索的点,把黄色的依次
2017-11-30 00:25:26 7808 2
原创 Android微信支付宝的底部导航栏是怎么做的?简单的导航栏蕴藏着大智慧!
常见做法1:套框架常见做法2:在底部写一个水平的LinearLayout作为导航栏,每个Item又是一个垂直的LinearLayout。。。。不是说上述做法不好。做法1不能满足个性定制的需求做法2嵌套层级太多,拖慢了性能;MainActivity中做事太多,负荷太大正确做法:为了维护,我们的模块化原子化是前期开发时必不可少的工作。
2017-11-29 02:15:31 3090 7
原创 杭电ACM OJ 1027 Ignatius and the Princess II 全排列的第N个 康托展开
Ignatius and the Princess IITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9097 Accepted Submission(s): 5313Problem Description
2017-11-29 01:22:34 316
原创 全排列的本质——康托展开以及本质原理分析——选取第N个——由序列推知第几个
先用一个例子简单介绍一下这个原理12345找出这个序列全排列的第16个
2017-11-29 00:16:49 1008
原创 Android碎片事务提交transaction.commit()和transaction.commitnow()的区别以及源码完全解析
FragmentManager manager = getFragmentManager();FragmentTransaction transaction = manager.beginTransaction();transaction.add(mContainerId, mFragment);transaction.commit();正常情况是commit就提交了。但是
2017-11-28 20:50:24 11389
原创 Android碎片实例化方法:instantiate的使用及其源码解析
正常是通过调用碎片的空的构造方法来实例化一个碎片对象,但是这不利于同时管理一批碎片的情况,因为开闭原则的需要,正常的实例方法根本满足不了。这里用的是instantiate使用方法,通过传入不同的碎片类名实例化。Fragment fragment = Fragment.instantiate(mContext, newNav.getClx().getName(
2017-11-27 19:27:14 2823
原创 Android神器:高效事件通信总线EventBus,简例讲解,进阶中高级工程师必看!(附带碎片Fragment高级使用技巧)
什么是EventBus?一款解决了高耦合的使用简单的在Activity,Fragment,Thread,Service之间通信的框架,堪称神器!中高阶工程师必备!碎片和碎片之间的通信麻不麻烦?耦合度高不高?开销大不大?代码复杂不复杂?这里我们就通过碎片-碎片之间的交互实例来带你一秒钟掌握EventBus。本例是一个简单的计算器app,仅有MainActivity一个
2017-11-26 20:44:50 1108
原创 杭电ACM OJ 1026 Ignatius and the Princess I DFS+BFS
Ignatius and the Princess ITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 20079 Accepted Submission(s): 6540Special JudgeProblem
2017-11-26 17:33:33 977
原创 杭电ACM OJ 1025 Constructing Roads In JGShining's Kingdom 最长上升子序列 O(nlogn)算法详解+回溯暴力解决+动态规划dp优雅解决
Constructing Roads In JGShining's KingdomTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 26933 Accepted Submission(s): 7655Proble
2017-11-25 16:53:12 964
原创 最长上升子序列——O (nlogn)算法原因解析!为什么这样可以求出来!(附带动态规划dp + 二分查找讲解)
什么是最长上升子序列网上流传着一个O (nlogn)算法,大体是这样的。模拟一个栈,如果当前的数比栈顶元素大,就要入栈,如果比栈顶元素小,就二分查找到刚好比当前数大的数,然后进行替换。本例的流程是这样的。2 入栈 当前栈:25 比2大 入栈 当前栈:2 53 比5小 替换5 当前栈:2 34 比3大 入栈 当前栈: 2 3 41比2小 替换2 当
2017-11-25 16:33:38 1041 2
原创 最长上升子序列——回溯法
回溯法其实算是一种暴力法,但是我们必须先学会暴力法再去考虑更优化的算法,不然真的会。。。boom不能交叉,所以你从一边开始遍历的时候,另一边被匹配的点只会一次比一次高。所以只需要记录下被匹配那一边的index就好了。回溯法思路如果这个位置接下去搜索不到弃掉如果这个位置接下去搜索得到可以选择匹配也可以不匹配先判断回溯条件if
2017-11-25 00:45:58 918
原创 Android自定义控件:左滑删除itemRecyclerView,ListView,GrdiView通配,教你如何最快最轻松定制,而不是复制粘贴!
这里我不直接贴大段代码,不直接讲用的什么什么技术,什么什么框架,从设计思路出发,到难点剖析,以最基础也是最快速的方式搞定他。(这里未借鉴任何网上代码,全是自己想自己手撸的,其实真的不难)思路:你需要重写哪个控件?是recyclerview还是包含item的relativelayout或者是lineralayout?我个人比较崇尚重用性,为了在任何下拉控件中都能使用,我选
2017-11-24 23:39:32 855 1
原创 Android事件分发机制
借鉴自郭霖博文http://blog.csdn.net/guolin_blog/article/details/9153747,这里浓缩一下首先,onTouch和onClick的对比onTouch是优先于onClick的。意思是同样注册了这两个监听,onTouch会先被调用其次,onTouch的返回值一个触摸屏幕的手势传下来,如果你设置为true,那么就
2017-11-24 20:34:18 198
原创 杭电ACM OJ 1024 Max Sum Plus Plus 动态规划 二维dp+滚动数组dp优化
Max Sum Plus PlusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 32446 Accepted Submission(s): 11521Problem DescriptionNow I
2017-11-22 21:59:05 685 1
原创 最大子段-n上找m个子段的和为最大-动态规划-二维dp+滚动数组dp优化
1.二维dpdp[i][j]代表的是j长度上找到i段,使得i段和最大。(其中最后一段的最后一位一定要是a[j],这句话不理解的可以看看http://blog.csdn.net/qq_36523667/article/details/78598426)这时最后一段分为两种情况:1.a[j]是最后一段的一部分2.a[j]自己成为最后一段用算式表示为1.dp[i]
2017-11-22 21:44:34 780 2
原创 最大子段-n个数求和最大且连续的子段-最简单的一维dp,动态规划入门教程,包听懂
你要求n个数中最大的一段数,用动态规划来做dp[i]的含义就是 当你到达i的时候,i个数里面求最大的一段数 的最优解但是dp[i]又是怎么求的?dp[i]的值由两个部分组成,a[i]一定会包括的,或者除了a[i]前面可能还要再添加一段但是添加的这一段怎么去看待?因为你要求当前最大情况,那么你肯定前面也要是最大情况啊那么就是dp
2017-11-22 00:01:56 1047
原创 卡特兰数简单分析原理 为什么可以求解出栈情况数 史上最简单
首先简单看一下公式公式就是若要求一个数,就把之前求出来的数,第一个乘以最后一个。为什么可以这样就可以求出出栈情况数呢?我们用递归的思想来看待。这里我们作一个假设。我们会把n个数分成两部分来处理。就是必须等第一部分处理(栈内全部排空)完后,第二部分的数才能入栈,才能被处理。那样我们就很容易写公式了,那如果1和n-1是独立的两部分。公式就是f(1)*f(n-1)
2017-11-21 12:42:39 1072
原创 杭电ACM OJ 1023 Train Problem II 卡特兰数 + 大数乘法 轻松解决出栈情况计数
Train Problem IITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10121 Accepted Submission(s): 5407Problem DescriptionAs we al
2017-11-21 10:43:51 467
原创 大数问题:大数加法 与 大数乘法 最简单大数乘法
大数加法很简单,大叔乘法只是以大数加法为基础的,光从难度来说,两者差不多。思路:这里没有借鉴别人牛逼的算法,现在也没有这个需求,就用最通俗的思路自己想了一个。先举一个简单的例子所以乘法就是每一位个位数相乘再乘以多少次方就可以了,这个多少次就是两者的数组位置的索引相加。看看关键代码for (int i = 0; i ; i ++) { for
2017-11-20 23:27:59 1102
转载 服务器后台servlet返回的数据乱码或者是一串问号,快速解决
转载自:http://blog.csdn.net/simon_1/article/details/9092747首先,response返回有两种,一种是字节流outputstream,一种是字符流printwrite。申明:这里为了方便起见,所有输出都统一用UTF-8编码。先说字节流,要输出“中国",给输出流的必须是转换为utf-8的“中国”,还要告诉浏览器,用ut
2017-11-20 18:29:46 12948 3
原创 Idea打包成war包+javaweb项目部署到服务器的tomcat上 史上最详细教程
Idea打包成war包由于eclipseee和myeclipse打包war包太过简单,这里就不再赘述首先你要保证你有一个Exploded,如果没有可以继续看。进入file的project struct 的artifact,为了不干扰你们的判断我把我原来的都删了,现在是这样的先新建一个exploed这样就建好了继续建archive,以我们刚刚建
2017-11-20 18:02:37 54380 17
原创 杭电ACM OJ 1022 Train Problem I 回溯法求出栈遍历序列 很强大
Train Problem ITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40163 Accepted Submission(s): 15058Problem DescriptionAs the n
2017-11-20 00:23:49 520
原创 回溯法大成!以回溯法实现栈的出栈情况的遍历为例子,轻松帮你深刻领悟回溯法
这里用回溯法实现了 栈的出栈情况的遍历 。虽然这个题有更好的做法,但是你如果用回溯法做这道题,做完后一定会对回溯法有这更高境界的领悟,而且在整个设计算法,debug算法的过程中会感受到一种酣畅淋漓的快感。因为这个题看似很小,其实规模很大,要考虑方方面面的问题,很多很多。上题。输入一个序列 比如 123。你进栈的顺序必须是按照这个序列来,但是你可以这样,进1,然后在2进入前,把1出栈
2017-11-19 23:06:41 1919
原创 视图绘制三部曲之onMeasure()源码最简解析 带你轻松领略源代码之美
performTraversals():(怎么找到这个类:使用as的全局搜索功能搜索ViewRootImpl)(太长了:由于这个方法800多行,所以着重挑选出与视图绘制有关的内容。)(为什么要看这个类?View的绘制从这个方法开始。)取得父视图的大小int childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp
2017-11-19 15:02:34 269
原创 LayoutInflater源码最简解读 带你轻松领略源代码之美
首先,我们获取LayoutInflater的方式:LayoutInflater.fron(context);是被封装的过的public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater = (LayoutInflater) context.getSystem
2017-11-18 21:38:20 391
原创 杭电ACM OJ 1021 Fibonacci Again 斐波那次数列 发现规律 简化操作
017新生赛(点击红色的Registerring)Fibonacci AgainTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 64800 Accepted Submission(s): 30092
2017-11-18 12:31:42 411
原创 杭电ACM OJ 1020 Encoding 输入一串字符 判断每种字符个数 我犯了个错误定义数组长度的错误
EncodingTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 49076 Accepted Submission(s): 21875Problem DescriptionGiven a string
2017-11-18 01:39:45 260
原创 面试题-Integer和int的区别
Integer和int的区别:前者是对象,可以调用许多方法,具体可以看源码,后面则是基本数据类型比较1:int 和integer的比较int i = 1;Integer j = 1;System.out.println((i == j) + "");这里是相同的,因为Integer会被自动拆箱成int去和i比,这里就变成了基本数据类型之间数值的比较
2017-11-18 00:39:00 574
原创 面试题-java自动拆箱与装箱
这种操作多来自于基本操作类型Integer和int的区别:前者是对象,可以调用许多方法,具体可以看源码,后面则是基本数据类型装箱Integer i = 100相当于执行了Integer i = Integer.ValueOf(100);这里具体的可以看我另一篇文章,Integer和int的区别拆箱int t = i;(比如使用上面那个i时,也会拆
2017-11-18 00:38:46 514
原创 杭电ACM OJ 1019 Least Common Multiple 质因子最快速求最大公因数和最小公倍数
Least Common MultipleTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 56268 Accepted Submission(s): 21413Problem DescriptionTh
2017-11-18 00:06:31 661
原创 回溯法求全排列-非递归形式-代码还没优化过
回溯法递归的很好写,非递归的难写很多很多!(看之前必须得理解递归形式的回溯法)难写在哪?因为回溯法递归,每次递归都有一个for循环,可以完美避开重复的路径。然而非递归的避免重复路径还要另花心思,这就是他的难点。如何规避重复路径?我们通过查找的时候,添加一个条件,就是回溯回来的时候,这个数不光要取没被使用的数,还要取一个比之前这个位置上的数更大的数,因为我
2017-11-17 19:40:09 735
原创 Scroller实现View的滑动
弃用scrollBy的原因?滑动时,是瞬间完成的,用户体验不佳(在手拖着移动的时候不会看出明显区别,如果有一段是自动完成的,scrollBy会瞬间完成,Scroller就平滑的多了)这个弹性滑动又是怎么实现的呢?Scroller本身不能实现弹性滑动,需要和View中的computeScroller()配合。实现步骤:(也是用的自定义控件)1.在构造方法中初始化S
2017-11-17 00:54:52 399
原创 5大方法完美解决View的移动:layout(),offsetLeftAndRight(),MarginLayoutParams,动画,scrollTo
借鉴自Android进阶之光,刘望舒的好书!(此外再介绍各个阶段应该看的书:入门 第一行代码 中阶 Android群英传(偏View) Android进阶之光(偏业务)高阶 Android开发艺术探索 (还有一本源代码解析好像挺不错的,不过我没看过))(这里采用自定义控件的方式,接下来我会写更具体的应用场景)自定义控件继承自View,里面就一个简单的方法,用
2017-11-17 00:37:51 1058
原创 杭电ACM OJ 1018 Big Number 两数相乘出一个大数,求大数的位数 注意log的使用
Big NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 39368 Accepted Submission(s): 19166Problem DescriptionIn many appli
2017-11-16 18:19:36 511
原创 弱引用和软引用WeakReference,SoftReference,最简讲解,以及一个应用场景
他讲的很好,但是我看了一下,有些地方讲的不是很清楚,导致我当时困惑了一会。这里简单加点内容。实际上,Car car = new Car(22000,"silver");WeakReference weakCar = new WeakReference(car);第一行就是new了一个实例,属于强引用,这个还是很好理解的。下面那一行说是弱引用,可实际上又是怎么用的呢?其实他就是
2017-11-16 13:09:51 11593 2
原创 杭电ACM OJ 1017 A Mathematical Curiosity 题很简单,就是题目意思太让人费解了!
A Mathematical CuriosityTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 44357 Accepted Submission(s): 14219Problem DescriptionGiv
2017-11-16 12:09:13 517
原创 杭电ACM OJ 1016 Prime Ring Problem 回溯法+ 高效判断素数 快速轻松解决
简单易理解的回溯法,高效判断素数,可以看我另外两篇博客,这里我也快速简要讲一下。这一题主要是要领悟回溯法,很关键。先写一个正常的n个数的求各种排列情况。就1到。。n。的各种排列情况。方法:正常思路是第一个位置有n种情况,你要写一个长度n的for循环,第二个位置自然是n-1种情况,所以要写一个长度n的for循环,以此类推。。。但是问题来了,你怎么知道传进来的n是多少?你又要写几个
2017-11-16 00:13:24 512
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人