最近所想和所做

Swift版仿天猫搜索界面 最近在逛天猫,发现天猫的搜索框还不错,于是就决定动手实现一下这个界面,按照我的习惯首先是分析这个界面,然后构思实现的技术点,之后再动手写代码。 先上效果图: 分析: 1:仔细看了看天猫的整体界面,我的想法是分为两个view,上面一个view装按钮、搜索框,下面一个view就是装一个可以滚动的ScrollView,看这种布局,所以ScrollView上面放一个CollectView(具 阅读详情
    好久没写博客了,原因之一是最近习惯了用evernote去记录自己所想和所看的,另外一个原因是CSDN关闭了live writer的写blog的功能后,就没多大兴趣在csdn的网页编辑框里面写东西了,一来崩溃了写的东西全部丢了,一来手机上不好写。CSDN的标题是“全球最大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台”,但我觉得现在的CSDN并不是面向于IT人员了,对于IT人员,特别是程序员而言,界面美不美观,操作好不好倒是其次,但功能没有确是不行的。CSDN的改版关闭了blog的很多功能,使得我也没多大兴趣在CSDN上写Blog了。
    最近在空闲时间在做一个东西:给C++添加元数据,添加反射功能,添加函数的聚合能力。
    大致做法是:用clang分析c++头文件,然后通过AST生成元数据。clang的AST里面信息非常丰富,例如结构体的大小,类的信息,函数参数信息,函数的调用方式(例如__cdecl,__stdcall)等都可以获取到,这样根据c++生成MetaData时,不需要像COM那样还需要写IDL文件。
    反射功能其实就是对元数据进行访问,然后根据元数据调整堆栈,然后call就可以了。
    函数的聚合能力主要是想实现一种类似于windows的HOOK机制,可以将多个函数附加在一个函数上,当这个函数被调用,附加在这个函数上的函数也会被调用。一个容易理解的例子就是:我们通常会写一些函数,但有时候会添加log功能,需要在这个函数调用之前或之后打log,这时一种简便的方法就是将log函数聚合到这个函数上。函数的聚合能力与Aspect编程里面的Aspect比较像。我做函数的聚合能力主要是想用于以下几个地方:1. 插件 2. Webkit中渲染时动态添加特效 3. 回调(callback)。对我而言,回调其实是函数聚合的一种特例,只不过被聚合的函数是一个空函数而已。例如js里面常见onclick callback,其实可以将onclick看作节点对于c++实现里面的一个方法,只不个这个方法是一个空实现,注册回调时,其实就是将一些函数聚合到onclick这个方法上,当onclick被调用时,注册的回调函数也会被调用。
    还有一个基本准则是:不改变现有的C++语法,不改变编译器实现,而是用外部工具做处理(也就是预编译),例如用Clang分析头文件然后生成元信息,用专门的lib或dll工具分析lib或dll,以便在链接时做一些事情。这样做的好处是可以最大程度地使得现有的C++程序可以利用这些特性。当然利用这些特性时,调用方式上也会做一些变动,例如原来是foo.bar(1234)会改成wrapper<foo>.bar(1234)。这里面的wrapper其实是一个模板,是在生成元数据时一块生成的。这个在Elastos里面叫做夹壁墙代码,我觉得这是一个比较直观的形容。
    这个东西的另外一个好处是:外部工具做处理(也就是预处理)可以对很多地方做优化,例如反射时函数堆栈调整,参数转换。因为这个信息在编译时就已经确定,运行时也不会改变,就没必要去动态获取了。这样做一个坏处是程序的大小会稍微变大,但现在的内存一般够用,所以用空间换取时间是值得的。
    上面说道参数转换,其实我是想实现一种通用些的参数转换方式,例如js调用C++或者java调用C++时,C++有元信息只是做到了第一步,还需要对参数做转换。所谓参数转换,其实就是将一种类型A转换为另外一种类型B,我们可以写一个函数A2B(a, b)去实现这个转换。类型A是可以转换为其他几种类型的,但一般是可以转换为一个基本类型(例如int,char×)或者几种基本类型的集合,而某种基本类型是可以转换为类型B的。因此类型转换可以被看成图论里面的路径,效率最高的转换其实就是最短路径。这样我们只需要写类型A和基本类型的转换函数,那么类型A和其他类型的转换是可以通过预处理生成的。每条路径的cost是通过预处理时得到的:也就是将这个函数编译进一个测试函数,然后运行,得出的运行时间就是cost。
最近半个月所所想 前一阵子读了一些关于学习方法的书,挑选出其中一些感觉有用的我认同的方法了笔记,最近在将笔记中记录的方法付诸实践,终于可以攒够足够的内容写出来分享一下。“脑袋里面有能写出来不是一个概念"(这句话是中国汉字听写大会上一个女生说的,我也认同)。经过无数的教训我在那之前也幸运的了解到,看懂与能实践出来不是一个概念,他们之间的距离往往比想象的要远的多。的确是这样,例如许多别人的方法,自己也非常认同的方 阅读详情

相关推荐

关于最近所想

站在钱塘江边,看着周围高耸的建筑,感叹这城市之大自己之渺小。自己对这个城市来说真的是微不足道,自己的梦想,自己想去的可能就如同钱江水里飘过的一个水瓶,可是却是我的全部。        想象着自己从这里跳下去,只是水里翻出了水花,而受影响的只是我的家人。我在尽量的寻找真实,眼前路过的人是真实的,我伸手就可以感受到他们身上的温度。人终究要向前走的,尽管生活给我们再多的苦难,我们也要笑着面对。

lzj_love_ly的专栏 512

java最近所想

java学习贵在坚持,在卷帙浩繁的枯燥中寻找属于自己的乐趣。梦想成功的人才会有学习的动力与激情。

寒星斜坠的专栏 557

最近所想

又一个周开始了,下一个周就到十一月份。这对于我们学校来说是一个考验,因为要面临教学评估。对于我们学生来说却是没有那么严肃。我们只是配合一下而已。想想我还要给他们专家演示获奖的软件,又是个考验阿!评估对于我们学生来说也是件好事,为了这,给宿舍装上了宽带,天大的好事啊。不过也是毁了一批人,考研的也不去上自习了,找工作的也不急了,怎么也得新鲜一阵子吧!这对于自制力来说是一个考验阿呵呵~今天去了校教学就业

探索少儿编程真正价值! 751

最近我在什么

最近我在什么 现在想了想,自己已经有大概一个月没有课题相关的事情了。 博客 最开始在研究用GitHub Pages写博客,利用jeklly搭建好了基本的架构,现在可以直接用Markdown写好文件,然后推送到GitHub就能自动生成新的博客文章了。虽然一些效果还没有完成,标题的获取方式也不是我所想的那样。但是基本的框架也搭建好了,以后可以慢慢。 鱼C的课程很有用,现在终于为网站添...

JonTargaryen的博客 566

磊哥最近所想

明年大四毕业,这两天想了很多,之前只知道认准了一个方向埋头的去学,这学了三年网络,现在新入手Linux不到3个月。光学不用,学的头好大,进而感到对前途迷茫,不知再怎么办。本想实习,可怜今年学校政策改变!感觉好多技术都不知道在企业网络中怎么运作、在实际工程中是怎么规划部署,真心的感到理论实践的差距。我本以为手里有两台路由器几台交换机就能模拟真实生产环境,汗死了,看到好多技术文...

weixin_34064653的博客 99

[个人思考] 所思所想

本文为作者在工作中所思所想,或者灵光一闪而产生的简短文字记录。 2020-01-12 一年后,即2020年8月,要开始准备面试,不在每天混日子,不可以随波逐流,要避免平庸,时时刻肯提醒自己。 工作方面的事情,有问必回。 不要心急,想一想一年后,多往好处想,相信自己可以的,保持好的精神状态战斗力。 2020-02-18 每天学习的东西太多,没有时间消化吸收,下次遇到了,还是不熟。怎么破解? 2020-02-25 每天早上7点半起床,尽量少看手机。起床喝一杯水,上午到公司后,尽量不喝水,尽量不上厕所。保.

mouliu6141的博客 368

谈几点最近的思考

又到周五了,一周又快过了,好久没有大家聊聊了,今天给大家分享几点自己最近的思考感受,希望能对你有一些帮助。1、学会利他。这点之前就给大家说过了,不要在意当前一点利益,适...

涛哥聊Python 474

谈谈最近项目参赛的心得体会

两周时间,没有上过一次自习,几乎把所有的时间都用来FollowMe这个项目。教学楼,俱乐部,寝室,三点一线的生活,过得很充实。这是我技术进步最快的两周。这段时间的经历让我体会到,只要投入足够多的时间在一件事情上,就一定会看到成效的。两周的时间学技术,敲代码,完全投入到项目中,看着功能一个个被实现,心里真的很有成就感。同时,这段经历也让我清楚地看到自己的个性中突出的两点:第一,压力可以给我带来高效率。我有时候学习不够主动,需要外界的刺激才能驱使我更努力地学习。当离项目提交只剩下两周时,我突然有了紧迫感,当时

YUYU_0908的专栏 1839

入驻博客园,以及最近的一些所思所想

入驻博客园,其实也是一个偶然的机会,在百度上搜索的时候,看到一些哥们写的文章,觉得蛮有意思的.突然觉得写博客记录下自己的在工作学习中的一些想法法也是很有必要的.之前一直是用evernotes这样类似的工具去记录的.但是重系统之后,还要去安装一遍原来的软件,觉得很是繁琐.(光是布置开发环境已经很是头疼了.-_-!).尤其是在多操作系统的情况下,比如Linux,很是不方便. 对于Linux真的...

weixin_33725272的博客 203

[随笔所想] 程序员中年失业随笔所想

1 是什么让我写这篇文章? 最近一年,身边很多中年程序员失业,有40岁的,45岁的。程序员35岁会被优化,即程序员的35岁职业危机。如果进行搜索,则在整个网络的各种博客论坛的许多地方都出现了类似的声音。巧合的是,这里的屏幕截图显示了来自美国的示例,但对于世界上任何地方的人都是如此。不仅仅是中国,其他国家也是如此。 尽管对于将年龄段视为中年的定义有多种,但在此我假设软件程序员的中年年龄为35至45岁。目前我离中年看似很遥远,但是也快了。最近身边人不断离职,我总是在考虑,要不要转行,中年失业该怎么办,该如何

You and Me 1229

智能推荐:猜你所想

推荐系统技术,总体而言,与 NLP 图像领域比,发展速度不算太快。不过最近两年,由于深度学习等一些新技术的引入,有了比较明显的提升。

IT&IC先生的博客 4979

一月所想

不积跬步无以至千里,不积小流无以成江河! 开通博客已经有一个月,仔细看来,一共写了22篇文章,达到了当初第一次写博客时自己的目标,很庆幸的是这是自己第一次能这么有耐心坚持干一件事。 我坚信我那句话, “专心一件事,把一件事好,日积月累足以成就浩瀚星空!” 今天看了《淘宝技术这10年》真心觉得人生应该像淘宝那些大牛一样,这样人生才会有意义,真心想到BAT这样的大公司去工作。继续努力,相信不...

weixin_34408717的博客 61

关于这两天所想的东西学习总结

《局外人》看法,以及最近两天计算机网络概率论的学习总结

qq_37473792的博客 114

今天我的就是为了明天

1年的混混郁郁,经历了他人的离职、动摇、反复、打击、树立信心、寻找目标。寻找了1年的动力目标,终于在最近出露端倪。是什么?我不敢说出来,因为每次当我向别人说的时候,我总发现我永远实现不了。今天了测试,我的得分还算很高,我有能力实现我的目标。也许,只有我知道我缺少什么,应该要什么。我不甘心永远在别人的脚下或阴影下,我不愿意别人操纵着我的行为。我相信我每次的判断,每次的幻想,因为在以往的记忆中,我

【猩猩的专栏】 1296

当事与愿违的时候,选择自己心中所想

之所以现在开始写博文,第一是想跟同行业的朋友有一个交流的平台,再者就是整理下之前的知识点,记录下以后遇到的一些问题。         从开始不知道Java是什么到现在能独立的完成项目,解决各种Bug,实现各种功能,已经过去四年之久了,这些年来有对未知探索的兴奋,有亲手解决问题的激动,到自己亲自参与一个项目直到完成的开心,有满足有感动。         但有时候也有困惑,在一个公司工作这么久始终

菜鸟成长记 1464
上一篇: android的crash log
下一篇: 微信的研究
chief1985
博客等级 码龄21年 1545粉丝 879原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值