自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java#

时间本就能改变很多东西,让原本的匪夷所思成为理所当然

  • 博客(65)
  • 收藏
  • 关注

原创 linux下yum命令出现Loaded plugins: fastestmirror Determining fastest mirrors

今天yum install的时候出问题了,找了半天才找到一个fastestmirror是yum的一个加速插件,这里是插件提示信息是插件不能用了。不能用就先别用呗,禁用掉,先yum了再说。1.修改插件的配置文件# vi  /etc/yum/pluginconf.d/fastestmirror.conf  enabled = 1//由1改为0,禁用该插件....

2013-11-07 16:27:45 29281 4

原创 那你讲一下怎么使用模板模式重构代码的

听说你熟悉设计模式?你是怎么用模板模式重构的?模板模式定义先放一下模板模式的定义。一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。可能你看完是这样的别慌,让我来解释一下。用我自己的话来说就是,父类抽象类定义了具体的执行流程,其中某个或者多个是asbtrast抽象方法,让子类自己去重写达到具体不同的逻辑。上代码这是我之前一个项目里面模板模式的一个应用,当时用来重构代码时复用

2021-06-10 11:44:16 180

原创 那你讲一下IntentService

之前面BAT时被问过两三次的问题,为什么喜欢问这个?因为这里能延伸出去很多问题,想答好并不简单。首先会问IntentService跟Service有什么区别?Service运行在主线程中,直接使用做耗时任务会卡主线程,从而导致ANR。Service ANR的时间为前台Service20秒,后台Service200秒。而IntentService会开启子线程,重写onHandleIntent方法中处理逻辑即可,不会引发ANR。如果高级岗位只回答到这里,那么结果大概率是接着应该要回答

2021-06-04 00:13:32 322

原创 那你讲一下Looper执行message的分发流程

这个问题被大厂不止问了一遍了,其实就是考察有没有真正看过这里面的源码。直接上源码Looper.java里面的loop()里面有这么一句代码,就是用来分发message的,target就是发送该message的handler跟进去就是分发的方法,如箭头所示有三种分发路径1.先说最后一个handleMessage大家最熟悉的了,就是走到我们定义handler时重写的handleMessage,这个比较常规。2.第一个箭头的callback其实就是handler.post(ru

2021-05-29 13:02:05 233 3

原创 那你讲一下LeakCanary的原理

今天来写一波内存泄漏工具LeakCanary的分析,也整理一下之前的笔记,废话不多说,源码整起来。我用的1.5.1版本。LeakCanary核心源码解析看源码还是那句话,先找入口,顺着入口看主流程。LeakCanary监听Activity的onDestory方法,然后介入,所以从这里开始发现入口在RefWatcher.watch方法里,这个RefWatcher是核心类,跟进去watch方法。可以看出这里开始搞事情了,先解释一下这些变量的意义这样就可以解释,上图wa

2021-05-21 15:32:57 262

原创 HDU 3068 最长回文串

 解法1:根据是奇数串还是偶数串,遍历中点,更新最长max值 复杂度O(n^2)解法2:manacher(马拉车算法) O(n)马拉车算法1.中间插入#符号,统一变为奇数串规避奇偶问题2.使用一个辅助p数组,p[i]表示以 i 为中心的最长回文的半径,p[i] - 1正好是原字符串中最长回文串的长度3.利用已经求过的p[j]来加快求p[i]的值 mx 和 id 。mx ...

2018-12-16 17:55:32 229

原创 先搞一波kotlin,看它怎么说

kotlin被谷歌正名都快两个月了,作为Android developer是时候学习一波了,kotlin优点有很多比如完全兼容java,空值处理,语法简洁,支持新特性等等。。。      废话不多说,直接开始配置环境搞起来,我用的AS是2.2.3版本,需要装插件,到时候AS3.0会内置kotlin。一.kotlin环境配置1.下载插件等半个小时。。2

2017-06-30 16:09:40 1433

原创 自定义View:通用的下拉刷新

我们知道ListView是可以addHeadView和addFooterView的,其他的RecyclerView 和scrollView等是不能添加的,如果为每个都单独写又太麻烦了,所以一般自定义ViewGroup来做一个通用刷新的控件。网上有BAGRefresh这类通用的刷新,看了写的东西比较多,所以我按照自己想法写了一个简单的demo说明一下原理。老规矩先来张图,背景图是受到一个国外ap

2016-08-06 16:33:49 639

原创 Android中开发IM即时通讯功能的方案

最近准备做IM功能,在技术预研当中,其实可行方案还是比较多的,就看怎么选了1.第三方平台比如环信,融云,leancloud,容联云等等。直接使用sdk就可以实现了,最简单最直接,而且稳定性已经不错了,连UI界面都带有了,可以自行修改,缺点是要收费,比如环信日活跃30万以上开始收费,融云VIP级别的功能要收费。如果让我选应该会在环信和融云之间选,环信的话一个是市场占有率比较大,二个是技术客服

2016-08-03 17:37:34 10468

原创 Android中序列化的Parcelable与Serializable区别及其AS插件

在我们网络传输或者本地持久化的时候,和intent传递对象时,都是需要将对象序列化的。Serializable是java的序列化接口Parcelable是android提供的序列化接口不用想都知道它们肯定有区别,不然谁没事给你弄两个一样的东西。因为写的android就用intent传值来做栗子一.Serializable一般实现public clas

2016-07-29 15:30:28 879

原创 Volley的ImageLoader加载图片错位处理方式

在ListView中使用Volley的ImageLoader加载图片会出现图片错位的问题错位问题我们都知道是复用convertView并且异步加载图片导致的。方法一:可以换成使用NetworkImageView去避免方法二:直接去重写getImageListener方法,使用url加个Tag就可以了下面直接看重写怎么做,直接去到Volley源码找一下哪里获取bitmap的

2016-06-30 21:24:04 2241 4

原创 AsynTask版本兼容问题

AsynTask本质其实是对线程池+Handler的封装,知道本质你就知道为什么能执行任务,为什么能更新UI了。线程池这块使用了ThreadPoolExecutor由于AsynTask在以往版本中被频繁的修改过,所以导致了不同版本使用的时候会出现崩溃,或者执行延迟很严重等等问题.好那么带上疑问走进源码这是API23源码略过一百多行注释。。。上面标了两个线程池

2016-06-17 14:03:10 480

原创 谈谈自己关于阅读源码的一点鄙见

起因是这样的,最近一个工作两年同事,用其他同事写好的一些控件,网络库的时候,总是问别人怎么调用,有几种调用方法,不只是一次两次是每次都这样,一个简单封装Dialog的调用都要问别人怎么用传什么参数,什么类型的,我就跟他说自己点进去那个类看看不就清楚了吗?这个同事还比我高一届,我就有点奇怪了难到两年都是这么过来的,算了不多说了,可能这是他一直的习惯吧,不好评论什么,还是简单讲一下自己平时的做法吧,帮

2016-06-16 19:03:11 586

原创 设计模式(二)重温观察者模式:随便窥探一波BaseAdapter源码

今天在看rxJava的时候发现又是使用的观察者模式,这个模式在android开发里面使用频率挺高的,思想是知道的,还是觉得按照自己的理解用代码再写一遍加深一下认识比较好不单是rxJava,EventBus,安卓里面的adapter,ContentProvider等等都使用到这个模式。观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF给

2016-06-15 16:12:17 723

原创 自定义ViewPagerIndicator:100行代码实现两种可滑动指示器

按照惯例先上图,一种是三角形,一种是最常用的下划线实现思路,主要是在onPageScroll里面进行指示器滑动距离和父容器滑动距离的计算,然后进行滑动,滑动解决了其他就比较简单了。顶部就是自定义的ViewPagerIndicator,下面就是Fragment+FragmentPagerAdagter主MainActivity代码,就是常规的ViewPag

2016-06-12 18:49:38 974

原创 自定义view:经典的标题栏(组合控件)

最近要用到一个公用的标题栏,左中右包含有iamgeview和textview方便扩展,可以根据情况设置点击事件和隐藏或者显示,因为比较常用就放出来,先来个效果图,有需要的拿去基本就能用了

2016-05-24 11:29:25 888

原创 ListView显示不同布局时注意事项

ListView显示两种以上的布局的时候我们的adapter需要重写两个函数一个是getViewTypeCount()   返回不同type的总数量,比如3种不同布局,可以返回3或者3以上都ok一个是getItemViewType()      返回当前的type注意事项一:两个函数一起重写不然报错注意事项二:getItemViewType()  返回必须是从0开始的连续的

2016-03-20 23:46:58 455

原创 android:layout_weight新认识

android:layout_weight本来是一个按比例显示的属性,很好理解,不过当同时配置了android:layout_width="match_parent"时就出现了反常的情况。这里对这个属性做些总结。随便记录一下android:layout_weight属性几种情况一.当android:layout_width="0dip"时,按android:layout_weight分

2016-03-20 11:05:55 430

原创 PullToRefreshListView addHeadView的正确姿势

PullToRefreshListView addHeadView正确姿势一.比如加一个imageView到顶部refreshListView = (PullToRefreshListView) layout.findViewById(R.id.refresh_listview);ListView mListView = refreshListView.getRefresh

2016-03-19 23:21:36 3659

原创 ACM Regionals 2006 :: Asia - Shanghai 遥远的银河(部分枚举+扫描+动态维护)

You are observing a distant galaxy using a telescope above the Astronomy Tower, and you think that a rectangle drawn in that galaxy whose edges are parallel to coordinate axes and contain maximum star

2016-03-19 23:18:42 652

转载 加载性能优化ViewHolder

在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来减少对象的创建。ListView加载数据都是在public View getView(int position, View c

2013-12-31 13:09:04 738

原创 ACM Regionals 2004 Europe - Southeastern 最大子矩阵(扫描法)

Bob is a strategy game programming specialist. In his new city building game the gaming environment is as follows: a city is built up by areas, in which there are streets, trees, factories and buildin

2013-12-30 23:15:47 1200

原创 android应用启动页面显示

腾讯QQ,微博,大部分的应用启动的一个页面都是显示自己logo,不但可以打下广告还可以掩饰后台加载的行为,今天想在自己的应用加上,去网上搜索了一下,找到了一个比较实用的案例,使用handle和thread来计时显示,修改了一下就用上了。Splash.javapackage com.vae;import android.app.Activity;import android.conte

2013-12-23 18:52:55 1380

原创 04年中欧ACM比赛

Beijing was once surrounded by four rings of city walls: the Forbidden City Wall, the Imperial City Wall, the Inner City Wall, and finally the Outer City Wall. Most of these walls were demolished in t

2013-12-21 00:46:11 1192

原创 2007LA 3902 网络(树+贪心)

https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=283&page=show_problem&problem=1903题意:在一个树状的网络中,提供VOD服务,叶子节点是客户端,其他是服务器,要减少网络延迟,所以要在其他的服务器也安装同样的服务,使得每台客户端到最近服务器的

2013-12-10 23:41:30 897

原创 UVa 11520 填充正方形

In this problem, you have to draw a square using uppercase English Alphabets.To be more precise, you will be given a square grid with some empty blocks and others already filled for you with some le

2013-12-08 23:00:23 925

原创 2006 ACM Northwestern European Programming Contest C题(二分求最大)

My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a numberN of them, of various tastes and of various sizes. F of my friends are coming to my party and each of

2013-12-08 22:59:46 973

原创 2007年北欧ACM比赛A题(最小值最大,二分)

Problem A - AssembleTime limit: 2 secondsRecently your team noticed that the computer you use to practice for programming contests is not good enough anymore. Therefore, you decide to buy a new co

2013-12-08 00:08:07 1519

原创 UVa11384正整数序列(递归,二分)

题目大意:有一个从1、2、3、.......n的正整数数列,现在要通过若干次操作将这个数列全部变为0,操作的方法是每次选取任意1个或多个任意位置的数,然后将这几个数同时减去一个一个数。问至少要经过多少次操作才能让数列全部变为0思路:在纸上试几个数就可以发现,比如6时,456同时减去4这个中间数,剩下123012其实只取决于123这部分f(6) = f(3) + 1。

2013-12-08 00:06:47 1224

原创 UVa 11384 中国麻将(回溯)

Problem CChinese MahjongMahjong () is a game of Chinese origin usually played by four persons with tiles resembling dominoes and bearing various designs, which are drawn and discarded until on

2013-11-28 16:26:09 1244

原创 UVa1352彩色立方体(部分枚举和贪心)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=456&page=show_problem&problem=4098题意:n个带颜色立方体,每个面一种颜色,要求重新涂尽量少的面,使得所有立方体完全相同。思路:我们给一个立方体的每个面标上号码0-5时,每个立方体有24种不同的状态,

2013-11-27 18:06:35 1212

原创 UVa11464偶数矩阵(部分枚举+递推)

题意:有一个n*n的01矩阵,任务是把尽可能少的0变成1,使得每个元素的上、下、左、右元素之和为偶数。(n0 0 0          0 1 01 0 0  ----->  1 0 1       需要3次变化0 0 0          0 1 0思路:最容易想到枚举所有数字变或不变,2^(15*15)= 2^255 就是5 * 10^67左右。。。注意到n小于16,枚举一行的

2013-11-26 16:05:33 992

原创 立方体成像(2004年ACM国际大学生程序设计决赛第3题)

Your new company is build#include using namespace std;#define MAXN 10#define FOR(i, n) for (i = 0; i < (n); i++)int n;int i, j, k, p;int view[6][MAXN][MAXN]; //视图int cube[MAXN][MAXN][MAXN];/

2013-11-25 15:37:25 1751

原创 UVa 10881 蚂蚁(等效变换)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1822题意:一根长为L的木棒上有n只蚂蚁左右移动,1秒1个单位长度,碰撞后反向移动,问T秒后蚂蚁的位置与方向。思路:碰撞后反方向和直接穿过相对位置来说是一样的,他们在木棒上

2013-11-24 12:45:20 1192

原创 Uva 11300 分金币(数学推导和中位数)

题目描述:n个人围着圆桌坐,每人都有一些硬币,现在每人都可以给左右以任意的分配方式给一定的钱,问最小转移多少硬币,使得每人的硬币数目都一样。(n例子:输入41 2 5 4输出4最好先思考下,别急着看代码,代码很短,但是别以为代码短的都是很简单的问题!题解:设编号i的人初始有Ai枚金币,比如1号,1号给4号x1个,2号给1号x2个,得出A1-x1+x2 = M(最

2013-11-23 23:30:32 1020

原创 约瑟夫问题及其变形

问题:n个数排一个圈,从编号1开始删除,以后每m个数删一次,问最后一个被删除的数。2#includeusing namespace std;int main(){ int n, m, w; while (cin>>n>>m, n + m) { w = 0; for (int i = 2; i <= n; i++) w = (w + m) % i;//下一个开始位置

2013-11-21 17:14:24 1069

原创 UVa 11549 计算器迷题(判重和Folyd判圈算法)

题意:计算器谜题。有一个老式计算器,只能显示n位数字。有一天,你无聊了,于是输入一个整数k,然后反复平方,直到溢出。每次溢出时,计算器会显示出结果的最高n位和一个错误标记。然后清除错误标记,继续平方。如果一直这样做下去,能得到的最大数是多少?比如,当n=1,k=6时,计算器将以此显示6、3(36的最高位),9、8(81的最高位),6(64的最高位),3...输入:n和k(1输出:得

2013-11-13 17:16:04 1269

原创 UVa 11462 年龄排序 (计数排序及IO优化)

题意:给定若干个居民的年龄(都是1-100之间的整数),把它们按照从i型奥到大的顺序输出。输入第一行为整数n(0思路:数据太大,内存限制太紧,连把数据全读进内存都不行,所以什么快排之类的排序报废了,但是注意到这里整数范围很小,可以用计数排序。#include#includeint main(){ int n,x,c[101],i,j; while(scanf("%d",&

2013-11-13 11:59:08 1306

原创 POJ 3154 墓地雕塑(很厉害的两行代码)

在一个周长为10000的圆上等距分布着n个雕塑。现在又有m个新雕塑加入(位置可以随意放),希望所有n+m个雕塑在圆周上均匀分布。这就需要移动其中一些原有的雕塑。要求n个雕塑移动的总距离尽量小。【输入格式】输入包含若干组数据。每组数据仅一行,包含两个整数n和m(2≤n≤1 000,1≤m ≤1 000),即原始的雕塑数量和新加的雕塑数量。输入结束标志为文件结束符(EOF)。【

2013-11-08 19:17:00 1640

原创 一个C语言的浮点陷阱

2/9是多少?C语言告诉你#include using namespace std;int main(){double ans = 2/9;printf("%.4lf\n", ans);}C语言告诉你是0.0000,呵呵,今天在刷题的时候发现了,一不注意就变0了。。。#include using namespace std;int main()

2013-11-08 17:59:32 957

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除