最近动态

心情

一次车被刮蹭的经历

一次车被刮蹭的经历

事情要从昨天星期六说起。

7月份开始一直单休,好不容易昨天双休了。自然饱饱的睡了一觉,然后起来泡杯咖啡好好逛逛博客,一天的时间输出两篇文章,本来是准备写一篇的,写着写着,感觉有点长,啰嗦,跑题,干脆当两篇发了。

晚上,在厨房炒菜煮饭吃。突然听到有人敲门。赶紧跑去开门,当时一直在想是谁呢?难道是抄燃气表的,打开门。原来是一个男的,门一开,那人就开口。说你车被人撞了,我一惊,以为是骗子。然后他准确的描述了我的车停的位置,我还是有点不信的,我也没敢表露出来,接着听。然后他说是找物业要的我的住址,还给我看了聊天记录。这时,才相信我车真被人刮蹭了。

他然后继续说,我听着,嘴里说着谢谢。他说车被撞的时候,他正好在边上,听到很大声,我说,车撞的严重不?他说听着反正很大声,然后有点变形了。我心里一惊,妈的,这么严重啊!我停车的时候就怕被人蹭,还专门把车停的很里面,至少车位靠路的三分之一还空出来的,这都能被人撞,那人开车技术也太渣了吧。然后给我看了下他拍的照片,一个照片是撞我车的那个车牌号,蓝色雪铁龙,一个照片是拍的我车被刮了好几条痕,白色漆露出了黑色的底。奶奶的,一天呆在家里没出门,也这么倒霉啊。看完照片,感觉也还好,没特别严重,毕竟车开了三年多了,也没那么心疼。前几个月同事新买的车,停路边,被共享单车刮了下,都报警了,但是没有监控,不知道肇事车,警察没管。

然后那人告诉我他住我楼上,让我赶紧下去看看吧。下午发生的事,这都晚上了,还以为我知道车被撞了。我说着谢谢,送他走后,也没立即下楼,有点饿,继续回厨房炒菜,幸好刚才把火关了,不然这白菜就要黑了。继续炒菜,然后吃饭。

阅读剩下更多

Android

Android-kotlin-coroutine协程的概念

Android-kotlin-coroutine协程的概念

一. 进程,线程,协程 概念

进程与线程
  • 进程是资源分配的最小单位,线程是程序执行的最小单位。

  • 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。

    为了加大一个应用可使用的内存通过多进程来获取多份内存空间
    通过给四大组件指定android:process属性可以轻易开启多进程

  • 线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC-跨进程通信)进行。不过如何处理好同步与互斥是编写多线程程序的难点。

    跨进程通信方式有:

     1. 通过Intent(Bundle)附加extras来传递信息

     2. 通过共享文件来共享数据

     3. 采用Binder方式来是想跨进程通信

     4. 采用ContentProvider

     5. 采用socket

  • 但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

    延申到android崩溃同样道理。

    app中大量Web页面的使用容易导致App内存占用巨大,存在内存泄露,崩溃率高等问题,WebView独立进程的使用是解决Android WebView相关问题的一个合理的方案。

进程与线程

阅读剩下更多

Android

Android子线程切换到UI线程方法总结

线程切换

通过消息发送(发布)和接收(订阅)的方式切换的。

1 .Handler

子线程(非UI线程)调用handler对象sendMessage(msg)方法,将消息发送给关联Looper,Looper将消息存储在MessageQueue消息队列里面。

然后轮巡取出MessageQueue中的消息给UI线程中handler处理,handler得到消息调用handleMessage方法处理消息,从而可以更新Ui。

阅读剩下更多

心情

谈谈逛博客的小习惯

逛博客

一. 事情经过

国庆节后的一周,上了六天班了,明天有继续新的一周,也就是节后要连续上两周班,确实还有点疲惫。
下班回到家,虽然很累,打开电脑,不自然的就打开了各大博客网站:掘金,博客园,csdn,简书。阅读下最近一周的博文。
看了一会,就意识到一个有意思的问题:打开电脑前,是准备看看腾讯视频有没有更新新的电影;但是电脑启动后,坐下来,我竟然无意识的就打开了各个博客网站,我都这么疲惫了,真的是无意识的动作。
突然意识到,我竟然有了一个这么小习惯,每周都要腾一点时间出来看看最近几天博客上发生的事,给自己的知识库,吸取补充下养分。
再深思下,从啥时候开始了这样的习惯?应该是最近两三年吧。
为什么能持续?反思下,阅读开阔我的眼界,追逐技术的更迭。也许阅读博客给我安全感,避免让自己被淘汰吧。

我们的眼睛就是我们的监狱,我们的眼光所到处就是我们监狱的围墙 —尼采

阅读剩下更多

Android

bsdiff&bspatch增量更新概念介绍

随着Android生态,技术越来越成熟,目前市场很多Android的项目工程很大,团队人数多,慢慢衍生出了许多组件化插件化技术。
同时也因为Android安装包apk也在逐渐增大,每次发布,用户更新apk环境复杂,如果全量更新下载apk的话在使用流量情况下,网络环境不好等等,对于用户体验是非常不好的。

首先区分下几个概念

组件化 : 把常用的模块代码,抽取lib工程或者jar达到复用的效果。
插件化:目的是把需要实现的模块或功能当做一个独立的提取出来,减少宿主的规模,当需要使用到相应的功能时再去加载相应的模块。涉及动态代理,ClassLoader,以及另一个apk资源的加载。例如:360的DroidPlugin (推荐)
热修复:往往是从修复bug的角度出发,强调的是在不需要二次安装应用的前提下修复已知的bug(涉及关键词:Hook技术、动态代理等)。例如:阿里 AndFix。
增量更新:APK增量更新是很多大厂APP采用的技术。bsdiff库生成补丁文件方式下载跟旧版本APK合成生成新版APK的原理(ligbspatch.so)。手机游戏app增量更新使用较多。例如:SmartAppUpdates

阅读剩下更多

心情

《蛮荒故事》电影观后感

蛮荒故事

这个电影由六个毫无关系的小故事构成,每个故事都不长但高潮迭起,看了让人欲罢不能,情节都充斥着复仇成功的快感,看的时候就觉得有些类似于贾樟柯的天注定,但贾樟柯更妙在每个独立故事中的主角之间有着千丝万缕的联系,而蛮荒故事则像六个独立的小剧集拼凑而成。

第一个故事是特别短,发生在一架航班上,一个中年男人和一个模特搭话,接着有人听到他们谈论的一个人,最后发现整架飞机里的乘客都认识最开始谈论的那个人,因为飞机里的每个乘客都或多或少伤害过他,后来他们才得知这架飞机的机长就是他们都伤害过的那个人,最后飞机冲向一对在花园里的夫妇,不用说,应该就是那个人的父母,因为他们从小就给他巨大的精神压力。

第二个故事发生在一个饭店里,女主发现夜里新来的客人是自己的仇人,他放高利贷最后逼女主的爸爸自杀,后来又诱奸了女主的母亲,不得已女主的妈妈带着女主逃到了现在生活的城市。女主把这个消息告诉了店里另一个女服务员,性格泼辣剽悍,她建议女主给仇人的饭里下老鼠药,但女主犹犹豫豫最后没有这么做。但那个女服务员自作主张在仇人的饭里下了药,但后来仇人的儿子也来吃饭,女主不想因此弄死两个人,故意惹怒了仇人让他停止吃饭,但仇人反过来开始欺凌女主,那个女服务员情急之下用刀捅死了仇人。

第三个故事想一个公路片,男主因为前面一辆破旧的车挡着路自己难以超车,就骂了那个车主,但走到半路车胎突然漏气,他不得已把车停到一座桥边开始换轮胎。后来那个车主赶上来,吓得男主赶紧跑到车里。那个司机一看就是瞟形大汉,浑身充满了野气,看到男主把车停到路边,就开始复仇,先用千斤顶砸车玻璃,后来当着男主的面在车上拉屎撒尿。男主气不过,正巧那个司机把车停在他的车前,就用自己的车把那辆车顶到河里。后来发现那个司机没有死,准备上来复仇,就赶紧开车溜之大吉。但想想还是觉得自己受到巨大的侮辱,男主就又掉头想撞死那个司机,那个司机赶紧躲开,后来男主的车几轮漂移,但因为车轮本身还没有加固,最后车轮脱落,整个车失去控制也翻到河里。男主和瞟形大汉就在河里几番挣扎想要互相弄死对方,最后车爆炸把两个人都烧死了。

第四个关于反抗政府腐败的故事,因为一些政府官员为了敛财,随意把停在路边的车拖走,借口是违章停车,必须交高额的赎金。男主几次找政府部门理论都没有结果,还因此弄得妻离子散,最后也丢了工作。男主本身是建筑设计师,平时会有工作要求把一些旧楼给炸掉,于是男主在自己的车里放了易炸品,一次拖车部分又来把男主的车拖走,等到被拖车辆的集中地,男主的车爆炸,造成重大损失,男主被因此关进监狱。但很多普通人视男主为英雄,敢于反抗政府,并要求政府释放男主,声称是因为拖车才导致车辆爆炸。最后男主的妻子和女儿也回到他身边。

第五个故事是在影射司法不公。一个富二代开车撞死一个孕妇后逃逸,后来他的父亲请律师想法设法帮他逃脱法律的制裁,最后决定请家中的园丁顶替他的罪名,并决定给园丁50万美金。但后来检察官来检查车查询证据时,发现园丁并不符合犯罪者的特征。后来律师想用钱贿赂律师并告诉富二代的父亲说得拿100万美金才能摆平,但后来律师,检察官还有园丁都想再在这一家人身上多捞点油水,富二代的父亲忍无可忍,决定放弃合作,让富二代自己去自首。最后经过几轮协商达成一致后,在警察带园丁去警局时,潜伏在声讨人群中孕妇的丈夫用酒瓶砸死了园丁。

第六个故事特别荒诞。新娘在婚礼上发现丈夫和他的女同事有染,在婚礼进行中先是和饭店的服务员发生关系,后来又故意把新郎的女同事弄受伤,在婚礼上疯疯癫癫,把整个仪式弄得一团糟。新郎和他的家人也都要精神崩溃。但后来这对新人发现最后的结果是两败俱伤,男主主动邀请女主跳舞,后来两个人开始激吻,让在场所有的人瞠目结舌,因为他们都觉得这对儿新人不可能再在一起了。但在一片混乱中,这对新人开始在放着他们新婚蛋糕的桌子上做爱,电影就在这样荒诞的喜剧中收场。

  • 每个复仇故事的都体现了人性中野蛮的一面,谋杀,隐藏,放纵,每个故事都把人性的阴暗面血淋淋的放到台面上,让观众忘却所谓的文明,忘却束缚人性所谓的道德。爱就是爱,恨就是恨,受伤害了就要复仇,不管什么伦理仁慈,把人性的蛮荒充分展现出来。本该就没有什么所谓的圣人,人大部分时候都是压抑着活着,除非被逼的迫不得已,人性的蛮荒只是被秘密的隐藏,但不不代表它就不存在。等蛮荒占了上风,那种释放,会似火山爆发一般蔓延。

阅读剩下更多

Android

Android屏幕适配

Android屏幕适配方案

先讲述一些屏幕适配相关概念,然后介绍下3种主要的适配方案以及优缺点。

一.基本概念

1. 像素(px)

  • 像素是手机屏幕的最小构成单元。

    2. 分辨率 (px)

  • 手机在横向、纵向上的像素点数总和,一般描述成 宽高 ,即横向像素点个数纵向像素点个数。
  • 例如:1080x1920,即宽度方向上有1080个像素点,在高度方向上有1920个像素点。

    3.屏幕尺寸(inch)

  • 手机对角线的物理尺寸,单位 英寸(inch),一英寸大约2.54cm,
  • 例如:常见的尺寸有4.7寸、5寸、5.5寸、6寸

    4.屏幕像素密度 (dpi)

  • 每英寸长度上像素点个数。”dot per inch”:
  • 例如每英寸内有160个像素点,则其像素密度为160dpi。
    以上四者之间关系
  • $ √((宽px)²+(高px)²) / (屏幕尺寸inch) = (屏幕像素密度dpi) $

    5. dp,dip,sp

  • dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素。
  • 例如:在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。
  • android中的dp在渲染前会将dp转为px,计算公式:
    $px = density * dp;$
    $density = dpi / 160;$
    $px = dp * (dpi / 160);$
  • 注意:dp与px不一定都是2倍的关系,与屏幕像素密度dpi有关。

    6. hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi

  • 用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。
  • 在设计图标时,对于五种主流的像素密度(mdpi、hdpi、xhdpi、xxhdpi 和 xxxhdpi)应按照 2:3:4:6:8 的比例进行缩放。

阅读剩下更多

心情

《蝴蝶效应》电影观后感

蝴蝶效应

丢失一个钉子,坏了一只蹄铁;
坏了一只蹄铁,折了一匹战马;
折了一匹战马,伤了一位骑士;
伤了一位骑士,输了一场战斗;
输了一场战斗,亡了一个帝国。


  蝴蝶效应(The Butterfly Effect):
  主角伊万曾经有一个糟糕的童年,因为他行为闯下了大祸,令他童年充满不堪回忆的往事。而事实上,他确实只是依稀记得一点可怕的情景,这些情景一直纠缠着他的正常生活。伊万接受心理学家建议,把琐碎生活记在记事本里,却偶然发现通过记事本回到过去。
  这时他才清楚记起,童年时候的自己做了那么多的错事。他幻想着用现在的意识,潜入童年的身体,去弥补种种过失给人们带来的伤害,尤其是希望与当年暗恋的凯西最终走回一起。然而他一次次的跨越时空的更改,只能越来越招致现实世界的不可救药。

阅读剩下更多

返回顶部