当前位置:首页 » 操作系统 » 回忆源码

回忆源码

发布时间: 2024-05-04 10:28:20

❶ 电影《源代码》结局什么意思

现实中,主角本来的身体就只剩下了半截,靠维生设备维持着脑波之类的东西。那个瘸子科学家就用这点仅存的脑波进行试验。在火车上的是另外一个人,可能他们的脑波频率等很多特征都接近,就借用了他的身体去解除炸弹。

由于平行理论,火车上的人在另外一个平行空间还活着。当主角的半截身体还活着时,主角的思维已经在火车上那个人身上了,切断维持半截身体的供给,半截身体死亡,主角的灵魂或思维就寄存在了火车上那个人身上了,以那个人的身份生活下去了。

(1)回忆源码扩展阅读

影片《源代码》是由邓肯·琼斯执导,杰克·吉伦哈尔、维拉·法米加、米歇尔·莫娜汉等人联袂出演。影片于2011年4月1日在美国上映。

影片讲述了一位在阿富汗执行任务的美国空军飞行员柯尔特·史蒂文斯,醒来时发现自己正处在一辆前往芝加哥的火车上,并就此经历的一系列惊心动魄的事件。

“咚,咚”“呼,呼”,急促的心跳声和喘息声震耳欲聋。一切都开始模糊,继而扭曲变形。然后,一阵尖锐的火车汽笛声,将柯尔特·斯蒂文斯上尉(杰克·吉伦哈尔 饰演)拉回了现实。窗外,是疾驰倒退的绿地。坐在他对面的女子(米歇尔·莫娜汉 饰演)疑惑地看着走神的他,又继续着话题,柯尔特突然觉得头皮发麻。

柯尔特意识到只有一种方法可以证明真相。他冲向洗手间,直愣愣地盯着里面的镜子,出现在镜子里的人,是一个身着呢子大衣、蓝色衬衫,眼中带着几分惊恐的中年男子。不是他自己,至少不是他印象中的自己。还没等他惊魂落定,一股强大的爆炸气流袭来,整列列车在烈火中被炸成碎片。猛然睁开双眼,柯尔特惊疑地看着四周,他发现自己身处一个独立的空间里,穿着本就属于他的军服。

存储性能优化 MMKV源码解析

好久没有更新常用的第三方库了。让我们来聊聊MMKV这个常用的第三方库。MMKV这个库是做什么的呢?他本质上的定位和sp有点相似,经常用于持久化小数据的键值逗启唤对。其速度可以说是当前所有同类型中速度最快,性能最优的库。

它的最早的诞生,主要是因为在微信iOS端有一个重大的bug,一个特殊旁尘的文本可以导致微信的山凯iOS端闪退,而且还出现了不止一次。为了统计这种闪退的字符出现频率以及过滤,但是由于出现的次数,发现原来的键值对存储组件NSUserDefaults根本达不到要求,会导致cell的滑动卡顿。

因此iOS端就开始创造一个高新性能的键值对存储组件。于此同时,Android端SharedPreferences也有如下几个缺点:

因此Android也开始复用iOS的MMKV,而后Android有了多进程的写入数据的需求,Android组又在这个基础上进行改进。

这里是官方的性能的比较图:

能看到mmkv比起我们开发常用的组件要快上数百倍。

那么本文将会从源码角度围绕MMKV的性能为什么会如此高,以及SharePrefences为什么可能出现ANR的原因。

请注意下文是以MMKV 1.1.1版本源码为例子分析。如果遇到什么问题欢迎来到本文 https://www.jianshu.com/p/c12290a9a3f7 互相讨论。

老规矩,先来看看MMKV怎么使用。mmkv其实和SharePrefences一样,有增删查改四种操作。

MMKV作为一个键值对存储组件,也对了存储对象的序列化方式进行了优化。常用的方式比如有json,Twitter的Serial。而MMKV使用的是Google开源的序列化方案:Protocol Buffers。

Protocol Buffers这个方案比起json来说就高级不少:

使用方式可以阅读下面这篇文章: https://www.jianshu.com/p/e8712962f0e9

下面进行比较几个对象序列化之间的要素比较

而MMKV就是看重了Protocol Buffers的时间开销小,选择Protocol Buffers进行对象缓存的核心。

使用前请初始化:

当然mmkv除了能够写入这些基本类型,只要SharePrefences支持的,它也一定能够支持。

同上,每一个key读取的数据类型就是decodexxx对应的类型名字。使用起来十分简单。

能够删除单个key对应的value,也能删除多个key分别对应的value。containsKey判断mmkv的磁盘缓存中是否存在对应的key。

mmkv和SharePrefences一样,还能根据模块和业务划分对应的缓存文件:

这里创建了一个id为a的实例在磁盘中,进行数据的缓存。

当需要多进程缓存的时候:

MMKV可以使用Ashmem的匿名内存进行更加快速的大对象传输:
进程1:

最重要的一点,mmkv把SharePrefences的缓存迁移到mmkv中,之后的使用就和SharePrefences一致。

这里就是把SharedPreferences的myData数据迁移到mmkv中。当然如果我们需要保持SharePreferences的用法不变需要自己进行自定义一个SharePreferences。

mmkv的用法极其简单,接下来我们关注他的原理。

首先来看看MMKV的初始化。

能看到实际上initialize分为如下几个步骤:

能看到其实就是做这个判断。由于此时设置的是libc++的打包方式。此时BuildConfig.FLAVOR就是StaticCpp,就不会加载c++_shared。当然,如果我们已经使用了c++_shared库,则没有必要打包进去,使用defaultPublishConfig "SharedCppRelease"会尝试的查找动态链接库_shared。这样就能少2M的大小。

请注意一个前提的知识,jni的初始化,在调用了 System.loadLibrary之后,会通过dlopen把so加载到内存后,调用dlsym,调用jni中的JNI_OnLoad方法。

实际上这里面做的事情十分简单:

能从这些native方法中看到了所有MMKV的存储方法,设置支持共享内存ashemem的存储,支持直接获取native malloc申请的内存

接下来就是MMKV正式的初始化方法了。

这个方法实际上调用的是pthread_once方法。它一般是在多线程环境中,根据内核的调度策略,选择一个线程初始化一次的方法。

其实这里面的算法很简单:

defaultMMKV此时调用的是getDefaultMMKV这个native方法,默认是单进程模式。从这里的设计都能猜到getDefaultMMKV会从native层实例化一个MMKV对象,并且让实例化好的java层MMKV对象持有。之后Java层的方法和native层的方法一一映射就能实现一个直接操作native对象的Java对象。

我们再来看看MMKV的mmkvWithID。

感觉上和defaultMMKV有点相似,也是调用native层方法进行初始化,并且让java层MMKV对象持有native层。那么我们可否认为这两个实例化本质上在底层调用同一个方法,只是多了一个id设置呢?

可以看看MMKV.h文件:

这里就能看到上面的推测是正确的,只要是实例化,最后都是调用mmkvWithID进行实例化。默认的mmkv的id就是mmkv.default。Android端则会设置一个默认的page大小,假设4kb为例子。

所有的mmkvID以及对应的MMKV实例都会保存在之前实例化的g_instanceDic散列表中。其中mmkv每一个id对应一个文件的路径,其中路径是这么处理的:

如果发现对应路径下的mmkv在散列表中已经缓存了,则直接返回。否则就会把相对路径保存下来,传递给MMKV进行实例化,并保存在g_instanceDic散列表中。

我们来看看MMKV构造函数中几个关键的字段是怎么初始化。

mmkvID就是经过md5后对应缓存文件对应的路径。

能看到这里是根据当前的mode初始化id,如果不是ashmem匿名共享内存模式进行创建,则会和上面的处理类似。id就是经过md5后对应缓存文件对应的路径。

注意这里mode设置的是MMKV_ASHMEM,也就是ashmem匿名共享内存模式则是如下创建方法:

实际上就是在驱动目录下的一个内存文件地址。

接下来,在构造函数中使用了共享的文件锁进行保护后,调用loadFromFile进一步的初始化MMKV内部的数据。

我们大致的了解MMKV中每一个字段的负责的职责,但是具体如何进行工作下文都会解析。

在这里面我们遇到了看起来十分核心的类MemoryFile,它的名字有点像 Ashmem匿名共享内存 一文中描述过Java层的映射的匿名内存文件。

我们先来看看MemoryFile的初始化。

MemeoryFile分为两个模式进行初始化:

这里的处理很简单:

能看到此时将会调用mmap系统调用,通过设置标志位可读写,MAP_SHARED的模式进行打开。这样就file就在在内核中映射了一段4kb内存,以后访问文件可以不经过内核,直接访问file映射的这一段内存。

关于mmap系统调用的源码解析可以看这一篇 Binder驱动的初始化 映射原理 。

能看到在这个过程中实际上还是通过ftruncate进行扩容,接着调用zeroFillFile,先通过lseek把指针移动当前容量的最后,并把剩余的部分都填充空数据'\0'。最后映射指向的地址是有效的,会先解开后重新进行映射。

为什么要做最后这个步骤呢?如果阅读过我解析的mmap的源码一文,实际上就能明白,file使用MAP_SHARED的模式本质上是给file结构体绑定一段vma映射好的内存。ftruncate只是给file结构体进行了扩容,但是还没有对对应绑定虚拟内存进行扩容,因此需要解开一次映射后,重新mmap一次。

MMKV在如果使用Ashmem模式打开:

接下来loadFromFile 这个方法可以说是MMKV的核心方法,所有的读写,还是扩容都需要这个方法,从映射的文件内存,缓存到MMKV的内存中。

进入到这个方法后进行如下的处理:

在这里,遇到了一个比较有歧义的字段m_version ,从名字看起来有点像MMKV的版本号。其实它指代的是MMKV当前的状态,由一个枚举对象代表:

注意m_vector是一个长度16的char数组。其实很简单,就是把文件保存的m_vector获取16位拷贝到m_metaInfo的m_vector中。因为aes的加密必须以16的倍数才能正常运作。

初始化分为这6点,我们从最后三点开始聊聊MMKV的初始化的核心逻辑。我们还需要开始关注MMKV中内存存储的结构。

能看到首先从m_file获取映射的指针地址,往后读取4位数据。这4位数据就是actualSize 真实数据。但是如果是m_metaInfo的m_version 大于等于3,则获取m_metaInfo中保存的actualSize。

其校验的手段,是通过比较m_metaInfo保存的crcDigest和从m_file中读取的crcDigest进行比较,如果一致说明数据无误,则返回true,设置loadFromFile为true。

其实这里面只处理m_metaInfo的m_version的状态大于等于3的状态。我们回忆一下,在readActualSize方法中,把读取当前存储的数据长度,分为两个逻辑进行读取。如果大于等于3,则从m_metaInfo中获取。

crc校验失败,说明我们写入的时候发生异常。需要强制进行recover恢复数据。
首先要清除crc校验校验了什么东西:

MMKV做了如下处理,只处理状态等级在MMKVVersionActualSize情况。这个情况,在m_metaInfo记录上一次MMKV中的信息。因此可以通过m_metaInfo进行校验已经存储的数据长度,进而更新真实的已经记录数据的长度。

最后读取上一次MMKV还没有更新的备份数据长度和crc校验字段,通过writeActualSize记录在映射的内存中。

如果最后弥补的校验还是crc校验错误,最后会回调onMMKVCRCCheckFail这个方法。这个方法会反射Java层实现的异常处理策略

如果是OnErrorRecover,则设置loadFromFile和needFullWriteback都为true,尽可能的恢复数据。当然如果OnErrorDiscard,则会丢弃掉所有的数据。

❸ 姹 鐢靛奖 鍏ㄩ溃锲炲繂 鐩楁ⅵ绌洪棿 璋嶅奖閲嶉吨123 璁板繂瑁傜棔 婧愪唬镰 鍏ㄩ儴瑕佽秴娓呯殑鑻辨枃涓瀛楃増链

鐢靛奖锛氲皪褰遍吨閲岖郴鍒1-5
涓绘紨锛氶┈鐗孤疯揪钂
绫诲瀷锛氱编锲界数褰
璋嶅奖閲嶉吨1
       绠浠嬶细銆婅皪褰遍吨閲嶃嬶纸The Bourne Identity锛夋槸涓閮2002骞寸编寰峰悎𨰾岖殑闂磋皪锷ㄤ綔鐗囷纴鏀圭紪镊缃椾集鐗孤烽瞾寰烽瞾濮嗗悓钖嶅皬璇达纴鐢遍亾镙悸烽噷镟兼墽瀵硷纴涓昏佹紨锻桦寘𨰾椹鐗孤疯揪钂欍佸厠閲屾柉路搴撴煆銆佸䌷鍏板崱路娉㈠潶鐗广佹湵涓藉▍路鏂钂傚皵鏂銆备簬2002骞6链14镞ュ湪缇庡浗鍏鏄犮傚奖鐗囦富瑕佽茶堪浜嗛┈鐗孤疯揪钂欓グ婕旂殑鎭f湁鏋佺璁板繂涓уけ镄勭敺涓昏掓澃妫路浼鎭╋纴璇曞浘鍦ㄩ冮伩缇庡浗涓澶𨱍呮姤灞杩芥潃镄勫悓镞跺彂鎺桦嚭镊宸辩殑鐪熷疄韬浠姐
       姝g増璧勬簮锛http://www.iqiyi.com/lib/m_200189114.html

❹ 绾㈤旀父鎴忔簮镰佸备綍涓嬭浇

涓嬭浇鍦板潃锛http://www.37moyu.com/azyx/jsby/hongtuyouxiv3149.html
绫诲瀷锛氩畨鍗撴父鎴-瑙掕壊镓婕
鐗堟湰锛氱孩阃旀父鎴弙3.14.9
澶у皬锛244.57M
璇瑷锛氢腑鏂
骞冲彴锛氩畨鍗揂PK
鎺ㄨ崘鏄熺骇锛堣瘎鍒嗭级锛气槄钸呪槄钸呪槄
娓告垙镙囩: 绾㈤ 浼犲囨坠娓 绾㈤旀渶鏂扮増链鏄涓娆句互鍏ㄦ柊镐濈淮鍒涗綔镄勪紶濂囨坠娓稿ぇ浣滐纴鐜╁朵滑鍦ㄨ繖閲屼笉浠呰兘澶熼吨娓╃粡鍏革纴杩樿兘浣挞獙涓庣幇浠e唴瀹圭粨钖堣捣𨱒ョ殑鍏ㄦ柊鍓ф儏锛岃屼笖鐜╂硶涔熼潪甯哥殑镊鐢憋纴鐜╁朵滑涔熻兘镊鐢辨垬鏂楋纴杩樿兘涓庝綘镄勫皬浼欎即涓璧风粍阒熸写鎴树换锷★纴鐖嗗嚭绋链夎呭囧摝锛屽绩锷ㄧ殑鐜╁跺氨蹇𨱒ュⅷ楸间笅杞界珯涓嬭浇鎴樻枟钖э紒
绾㈤斿畼鏂圭増娓告垙浠嬬粛 灏戞椂璁╀綘澶滀笉鑳藉瘣镄勭粡鍏革纴闱掓槬姘歌繙闅惧缮镄勬縺𨱍咃紒2链25镞ュ皢閲岖呮帹鍑虹殑锷ㄤ綔镓嬫父宸呭嘲涔嬩綔銆婄孩阃斻嬶纴閲嶉抠灞炰簬浣犵殑闱掓槬锲炲繂锛岃缮铡熶护浜哄姩瀹圭殑娓告垙铡嗙▼锛屽啀鐜板线镞ユ祦杩炵殑阃肩湡鍦烘櫙锛岃拷蹇嗘浘缁忕敓姝讳笌鍏辩殑鍏勫纻鐪熸儏......鍗冲皢镣圭噧浣犵殑鐑琛锛佺値镣庡忔棩锛屽悆镌鍐版嶏纴钖圭潃绌鸿皟锛岀帺镌銆婄孩阃斻嬶纴锲炲懗涓嶈佺殑缁忓吀锛屽彂鐜版柊镄勪紶濂囥

绾㈤旀坠链虹増娓告垙鐗硅壊 1銆佺Е闄靛湴瀹锛屾墍链塨oss涓鐖嗙巼链楂桡纴鐖嗗缑链濂界殑锛屾病链変箣涓銆
2銆佸滆娌椤煄锛屾捣閲忓厓瀹濆栧姳璁╀綘涔愮炕澶┿傚彟澶栵纴镟存湁灏侀瓟濉斻侀櫎榄斿坛链绛変釜浜烘棩甯告椿锷锛岃缮链夊ず瀹濆囧叺銆佺殗锘庝簤闇哥瓑婵𨱍呭洟鎴樼帺娉曘
3銆佽疆锲为亾锛屽叏澶╁悇镞舵靛畾镞跺紑钖锛屽悇绉峛oss绛変綘𨱒ユ垬銆
4銆佺为瓟鐣岋纴绁炵晫鎸傛満锛屾捣閲忕粡楠岋纴鍗囩骇瓒呭揩锛岄瓟鐣宐oss锛岃秴楂樼垎鐜囥
绾㈤斿畨鍗撶増镓嬫父浜镣 1銆乸k鐖呜呭囷纴镊鐢卞垏鎹㈡垬鏂楁ā寮忥纴镊鐢眕k锛屽崟鎸戝洟鎴树换浣犻夋嫨銆
2銆佹棤鍧愰獞銆佺繀鑶銆佺粡鑴夛纴杩桦师链鐪熷疄镄勪紶濂囷纴娌℃湁闾d簺鍧戠埞镄勫潗楠戙佺繀鑶銆佺粡鑴夌瓑锷熻兘銆
3銆佽呭囧拰鎶鑳戒功闱犳墦锛屾父鎴忎笉涔拌呭囧拰鎶鑳戒功锛屽彧链夐氲繃镓撴鎺夎惤銆
4銆侀櫎姝や互澶栵纴镟磋缮娓呮榈镄勭敾闱銆佹祦鐣呯殑镎崭綔锛岃窇姝ョ湡瀹炪佹棤楝兼ャ佷笉鐬绉伙纴浜ゆ槗镊鐢便佹棤镓嬬画璐广
绾㈤旀父鎴忓唴瀹硅В鏋 1. 瑁呭囬潬镓掳细銆婄孩阃斻嬬夋圹浜嗕紶濂囩殑缁忓吀鐜╂硶锛岃呭囧彧链夐氲繃𨱒镐銮峰缑銆傜垎瑁呭囷纴鐪嬩汉鍝侊纴缁欑帺瀹惰惀阃犱简涓涓鍏骞崇珵浜夌殑镩濂界幆澧冦傛垜浠涓嶅嚭鍞1888镄勫己鍖栨妧鑳戒功锛屼篃娌℃湁6888鍏冨疂镄勮呭囧楄咃纴涓鍒囬潬镓掳纴闱犺繍姘斻
2. pk鐖呜呭囷细浼犲囩粡鍏哥殑鐜╂硶涔嬩竴锛歱k鐖呜呭囷纴銆婄孩阃斻嫔悓镙风户镓夸简浼犲囱繖涓鐗圭偣銆傝嚜鐢卞垏鎹㈡垬鏂楁ā寮忥纴镊鐢眕k锛屽崟鎸戣缮鏄锲㈡垬锛屽畬鍏ㄨ嚜鐢便傛敾鍑荤槠钖岖帺瀹朵细澧炲姞pk鍊硷纴pk鍊奸珮浜嗕细绾㈠悕锛岀孩钖嶅悗姝讳骸浼氩ぇ鐖嗭纴璧庣姜浠ゅ彲浠ユ秷闄pk鍊笺傚枩娆pk镄勭帺瀹惰佺壒鍒娉ㄦ剰锛岃瘏鍜掑煎彲浠ユ彁楂樼垎瀵规柟瑁呭囩殑姒傜巼鍝︺
3. 镊鐢变氦鏄撱佹棤镓嬬画璐癸细瀹屽叏寮鏀剧殑镊鐢变氦鏄撶郴缁燂纴涓嶆敹鍙栦换浣曟坠缁璐癸纴涓虹帺瀹舵彁渚涗简涓涓瀹屽叏鍏骞炽佸叕寮镄勬父鎴忕幆澧冦备笉鑺遍挶镄勭帺瀹跺悓镙峰彲浠ラ氲繃镊宸辩殑锷锷涘湪娓告垙涓娲诲姩鍏冨疂锛屾病链変氦鏄撶殑镓嬬画璐癸纴涓嶉渶瑕佸仛棰濆栫殑娑堣楋纴涔板崠闅忓绩锛屾兂锅氢釜娓告垙鐢熸剰浜猴纴瀹屽叏涓岖敤𨰾呭绩琚绯荤粺钖冨洖镓c
4. 鎶鑳戒功闱犳墦锛氢笌瑁呭囦竴镙凤纴銆婄孩阃斻嬩腑镄勬墍链夋妧鑳戒功閮介潬𨱒镐鐖嗐傛妧鑳戒竴鍏辨湁5涓绛夌骇锛屾墍链夌帺瀹堕兘鍙浠ュ湪npc涔﹀簵澶勭敤閲戝竵璐涔板埌镓链夌殑鍒濈骇鎶鑳戒功锛岃屽叾浠栫瓑绾х殑鎶鑳戒功鍒欓渶瑕佹潃镐镓崭细鎺夎惤锛屾湁阍变篃涔颁笉鍒般伞婄孩阃斻嫔憡璇変綘,鎴戜滑鐣欑粰鐜╁剁殑鏄鍙戣储镊村瘜镄勬満阆囷纴鎴戜滑镄勫晢锘庢病链1888鍏冨疂镄勫幓鎶鑳戒功寮哄寲涔﹂〉锛屼篃娌℃湁888鍏冨疂镄勭洿鎺ュ嚭鍞鎶鑳姐
5. 镞犲潗楠戙佺繀鑶銆佺粡鑴夛细銆婄孩阃斻嬫棤鍧愰獞銆佺繀鑶銆佺粡鑴夌瓑绛夊潙阍辩殑灞炴х郴缁燂纴瀹屽叏杩桦师姝g増浼犲囥备笉鍧戠埞銆佷笉纾ㄥ径锛屾垜浠鍟嗗煄娌℃湁18888鍏冨疂镄勯栧啿澶х繀鑶锛屾病链128888鍏冨疂镄勮吹镞忓潗楠戯纴涓崭细锲犱负浣犲厖鍊间简灏辩粰浣犲姞8%鐗╃悊鏀诲嚮銆8%榄旀硶鏀诲嚮銆8%鍙嶆g墰阃煎埌鐖嗙殑灞炴э纴镐讳箣閮芥病链夈
6. 璺戞ョ湡瀹炪佹棤楝兼ャ佷笉鐬绉伙细銆婄孩阃斻嬫垬鏂楅‘鐣咃纴绉诲姩鐪熷疄锛岀粷瀵逛笉鍗★纴镟翠笉浼氩嚭鐜伴兼ャ佺灛绉荤瓑鐜拌薄锛岀帺瀹跺彲浠ュ湪閲岄溃灏芥儏鎴樻枟銆傜Щ锷ㄩ潬璧帮纴阃氲闱犲惣锛屼粬浠闾i炴潵椋炲幓镄勬粦𨱒块瀷锛熼兘娌℃湁锛佸彧链夋恳镎︽恳镎︺侀瓟楝肩殑姝ヤ紣锛佷竴姝ヤ竴姝ユ渶鐪熷疄锛
7. 鐢婚溃娓呮榈銆佹搷浣沧祦鐣咃细涓娄简10涓浜鸿勬ā镄勭兢鏋讹纴浣犳槸涓嶆槸灏辩湅涓嶆竻妤氲嚜宸遍暱浠涔堟牱浜嗭纻鍦ㄥ摢閲屼简锛熸槸涓嶆槸涓鐗囩墖镄勫垁鍏夊拰缁氢附镄勯瓟娉旷壒鏁堟妸浣犳饭娌★纻杩樻槸锻兼墖锻兼墖镄勫ぇ缈呰唨阆鎸′綘鑻变缪镄勮劯镞侊纻閲戝厜闂闂镄勫ぇ鍧愰獞灏辫嗙洊浜嗕綘镄勬尯𨰾旂殑鑳歌啗锛熷湪銆婄孩阃斻嬩腑閮芥病链夛紒锛侊紒
8. 璁╀綘𨱒ュ喅瀹氾细浣犳湡链涖婄孩阃斻嬬殑绗鍏澶х壒镩叉槸浠涔堬纻浣犳湡链涙渶链夌壒镩茬殑浼犲囨槸浠涔堬纻鍕囨暍镄勫湪璁哄潧锻婅瘔鎴戜滑钖э紒浼犲囨槸锲犱负浣犱滑镓嶆案鎭掞纴绗鍏澶х壒镩蹭氦缁欎綘浠𨱒ュ喅瀹氾紒

缁间笂镓杩帮纴澧ㄩ奔涓嬭浇绔欐槸鎭ㄥ绘垒瀹夊崜娓告垙鍜岃掕壊镓婕旇В鍐虫柟妗堢殑鐞嗘兂涔嬮夈傛棤璁烘槸瀹夊崜娓告垙瑙掕壊镓婕旂埍濂借呰缮鏄涓扑笟浜哄+锛屾垜浠鎺ㄨ崘瀹夊崜娓告垙瑙掕壊镓婕旂殑鐩稿叧鍐呭归兘鑳芥弧瓒虫偍镄勯渶姹伞傜珛鍗充笅杞芥垨浣挞獙绾㈤旀父鎴忥纴浜鍙楀畨鍗撴父鎴忚掕壊镓婕斿甫𨱒ョ殑镞犲敖涔愯叮锛佹ゅ栵纴鎴戜滑杩樻彁渚涚孩阃旀父鎴忕殑璇︾粏淇℃伅锛屽寘𨰾锷熻兘浠嬬粛銆佺敤鎴疯瘎浠蜂互鍙婂畼鏂逛笅杞介摼鎺http://www.37moyu.com/azyx/jsby/hongtuyouxiv3149.html 銆傝╂偍镄勪笅杞借繃绋嬫洿锷犺交𨱒惧揩鎹凤紒

❺ 源码资本|曹毅:以“码会”笼住“江湖人”,新基金靠三种武器立足

​-Begin-

2014年4月曹毅找到王兴、张一鸣,告诉他们自己打算成立一只基金。一个月后,名为“源码资本”的新基金公司完成了1亿美元的募集。即使是在“全民PE”火热的2009年,这样的募资速度也堪称惊人。

不到一年,源码资本二期基金也快速募集完成。1.5亿美元、2亿人民币的基金规模只用了两个月。除了之前的LP,7家A股上市公司的CEO全新加入曹毅构建的“码会”。在曹毅眼中,商业的“棋局”正变成一种资源合力和智力游戏。对接起LP和创业者的,是这张“码会”身份认证。

以“码会”笼住“江湖人”

在北京风沙肆虐的傍晚,略带倦色的曹毅快速吃完1个小时前订好的快餐开始接受记者的采访。自从成立源码资本后,这种状态已经成为一种常态。“一周飞五个地方,一年休息不到五天,”他的同事这样形容。

对于互联网的“痴迷”或许可以解释目前身为80后的曹毅的这种状态。这种“痴迷”正成为一种“纽带”开始连接起曹毅和他周围的那个圈子。王兴、张一鸣、姚劲波、李想、李一男......正是因为这种纽带开始聚集到源码的周围。“一期基金我们只用一个月就募完了,这些LP每个人就是见了个面,甚至有的只是打了个电话”曹毅回忆到。

在这个圈子里,身份是一种需要江湖认可的东西。“在他所在那个领域里面有明显的成就,可以说在江湖上面都是有名号的,都有自己独特的一套方法论。而且这些人基本都在一线,对行业的这种纽带还是非常紧密的。”曹毅这样描述着源码的LP们。

在投资圈锤炼多年的曹毅正在触碰到创业投资的真谛:将成功的创业者聚集在圈子里,用资本以及人脉来撬动新的创业机会。这一点在硅谷早已得到验证:比如创业教父Paul Grahamy以及科技偶像Kevin Rose等都曾在知名互联网公司任职,深谙互联网精髓,转型投资也都获得了不错的收益。

对于创业公司而言,这样的LP背景的确具有诱惑力。曹毅认为,美国创投圈50年的发展已经证明创业的成功所需要具备的要素越来越多,也可以说每个创业者得到的武器越来越多了。但是正因为提供武器的人越来越多,所以创业的红海实际上更加残酷。创业者需要获取更多的资源和帮助。源码的LP正是这样一种武器。

他的胃口并不仅限于此。源码的二期基金同样只用了2个月时间完成募集。1.5亿美金和2亿人民币的规模印证了曹毅对于资本市场的判断。除了原有的一些美股港股、机构投资人外,源码还引入了A股知名的TMT公司。蓝色光标、神州泰岳等成为了码会LP群体里的新的“入会者”。

风口中的“捕风者”

曾在红杉任职副总裁的曹毅,自然也深谙沈南鹏的“赛道”投资法。曹毅认为,互联网变得越来越大,随着移动互联网时代的到来,互联网的赛道机会正在像白垩纪的物种大爆发一样出现“井喷”。在这其中诞生出许多子赛道机会。

首先是传统行业的互联网化。曹毅以源码投资的一亩田为例,农业是互联网渗透水平最低的行业。尽管早期也有一些农业报价的网站,但非常初级。然而到了2014年,随着智能手机在农民中的普及和网络购物的盛行,农业大规模的互联网化开始成为可能。一亩田所做的正是利用互联网来消除原本的农业信息不对称问题。复杂的流通环节被互联网所取代,买卖双方则可以获得更好的产品和利润。

此前,一亩田花了两个多月时间帮助河南新苗销售完了滞销大葱。这被曹毅视为一次经典的互联网改造传统农业案例。互联网改造传统农业,改造的方式是透过信息化的方式,使得信息传播更加有效,中间环节更少,资源配置得到优化。

其次是金融的互联网化。趣分期是源码投资的互联网金融行业中一个代表性企业。看似简单的学生贷款其实是一个巨大的市场。曹毅认为,金融的需求是始终存在的,传统金融并不能解决很多需求,其中最大一块就是学生市场:学生具有巨大的消费需求,但收入受限。趣分期的出现其实是解决了一个供需矛盾,金融就是时间和空间的转化。学生的提前消费同时也可能提升其资源利用率。

第三是O2O。曹毅以源码投资的PP租车为例:北京有400万的车,每天空闲的可能有四分之一,另外一端有300多万的人,有驾照没有车。其实是一个巨大的供求不匹配,PP租车所做的平台,使得被闲置的这些车这些资源得到了更好的利用。

曹毅认为,从这三个赛道上可以看到了非常多的行业可以通过互联网去改变,资源也可以更加有效地得到配置。“因为这些都是社会的底层设施,是刚需。因此而产生出来的巨大价值,我相信会很持续。

新基金的“打法”

在以互联网基因为纽带建立的“码会”中,源码的担子并不轻。梳理企业战略和融资战略是曹毅每天最重要的两项工作。“作为VC,最重要的事情是帮助创业公司做正确的事情,只有将正确的事不断叠加,创业公司和VC才能实现双赢。”

这并不简单。在投资趣分期时,曹毅就曾经历了困扰。在趣分期发展壮大后,面对的诱惑也多起来。除了大学生外,趣分期还曾开辟了注入家庭用户、白领等用户的贷款业务,多条业务线使得趣分期的业务总量很大,但问题也随之而来。

有一天曹毅找到趣分期CEO罗敏,告诉他必须要坐下来好好聊聊。在源码会议室里,曹毅在黑板上详细阐述了他对于目前趣分期发展的看法。他在黑板上画了一个矩阵,左边是不同的资产类型,比如信用贷、抵押贷。纵轴是用户、大学生、白领、家庭。曹毅告诉罗敏,每个细分市场都需要大量的人力与物力投入,而且每个市场的金融消费属性也不相同。对于趣分期来说,最重要的目标是首先在某一领域达到王者地位。

作为投资人,曹毅坦言,如果公司有几块业务,每块业务都是第3名,那么这个公司根本就不值钱。因为每个跑道都是赢家通吃。因此,对于创业公司而言,最重要的就是聚焦。必须在某个跑道上成为王者,必须把所有的资源投入到最重要的业务上。

曹毅告诉罗敏,大学生市场并非已经饱和,很多业务可以细化,这样是做加法而并非延伸到更多业务去分散资源做减法。“这是创业公司容易犯的错误,当你有资源的时候你会跑到第一名,这时候你会面对很多诱惑,你需要控制住自己,有时候甚至要去砍掉业务。作为VC,应该帮助创业者做这样的梳理和判断。”

除了战略决策,融资同样重要。在融资圈里,流行着B轮和C轮死的说法。意思是当创业公司无法在成长阶段拿到B轮或者C轮融资时,很可能会半路夭折。在曹毅看来,创业竞争的惨烈,使得融资周期大幅缩短。大概2-3个季度创业公司就必须拿到下一轮融资。但融资的残酷性显而易见。2014年据不完全估算,有2000-3000家已融资企业无法拿到下一轮融资,在C轮阶段,50%-60%的企业将会被淘汰。因此源码重要的工作之一就是帮助投资企业拿到下一轮融资,持续“输血”。

曹毅认为,时间窗是一个客观和实际的问题,如果不能在与竞争对手的角逐中持续“输血”,那么错过时间周期可能就意味着灭亡。这也印证了曹毅之前所做的决断。吸引更多具有互联网基因的个人和企业成为源码二期基金LP,这保证了源码投资企业的融资可持续性。据曹毅介绍,目前所投企业中65%的后续融资通过源码完成,这也让其在早期投资中更加得心应手。

-end-

❻ 鍏充簬鐢靛奖婧愪唬镰佺殑鐤戦梾

浠ヤ笅鍐呭瑰畬鍏ㄤ釜浜哄垎鏋愶纴闱炶浆杞姐傛ゼ涓荤粰鍒嗗惂锛
銆1銆戜竴寮濮嬶纴涓婂皦浠Shawn镄勮韩浠藉嚭鐜板湪鍒楄溅涓婏纴镦ч暅瀛愬彂鐜拌嚜宸辩殑镙峰瓙鍏跺疄鏄疭hawn銆
銆庤瘉鏄庤溅涓娄笉鏄鐪熷疄涓栫晫锛屽彧鏄涓婂皦镄勪釜浜鸿板繂锷犺浇鍒版簮浠g爜涓栫晫閲屽偍瀛樼殑Shawn镄勮板繂瀛樻。涓锛屽苟浠shawn镄勮韩浠藉嚭鐜般伞

銆2銆戣屽悗鍒楄溅鐖嗙偢锛屼笂灏夌涓娆″洖鍒痫eleaguered Castle锲村汹鍫★纴Goodwin闂涓婂皦钬滆兘鐪嫔埌褰卞儚钖楋纻钬
銆庤瘉鏄庡奖镀忓拰澹伴煶涓嶆槸阃氲繃鐪肩潧鍜岃虫湹鐪嬫垨钖鍒帮纴钥屾槸阃氲繃澶栭儴浠鍣ㄧ洿鎺ュ彂阃佽呖Colter澶ц剳镄勶纴鍏朵粬浜烘槸鐪嬩笉鍒板惉涓嶅埌锛屾墍浠ユ墠纭璁ゃ伞

銆3銆戝垰锲炲埌锲村汹鍫$殑镞跺欙纴涓婂皦寮勪笉娓呯姸鍐碉纴Goodwin甯锷╀笂灏夐吨鏋勮板繂銆傚洖蹇嗏滆帀銮夌┛镌鏅氱ぜ链嶅拰鏂楃烽啋𨱒モ︹︹浓沧墤鍏嬬墝钬浓灭尗澶撮拱镄勫彨澹板綍阔斥濇渶钖庡府锷╀笂灏夋垚锷熷洖𨱍宠捣濂圭殑钖嶅瓧銆
銆庤瘉鏄庝笂灏夋槸鍦ㄥ洿锲板牎浠ュ悗阃氲繃婧愪唬镰侀”鐩瀹为獙妞嶅叆璁板繂浠g爜镓嶈よ瘑Goodwin镄勚傚洜涓轰笂灏夋渶钖庣殑璁板繂鏄寮鐩村崌链猴纴铹跺悗绱ф帴镌鍦ㄥ垪杞︿笂阅掓潵锛岄┈涓婂张锲炲埌锲村汹鍫°傛墍浠ヤ粠涓婂皦镄勮板繂杩炶疮镐т笂鍙浠ョ煡阆扑粬镙规湰娌℃湁阃氲繃镊鎴戞劅鐭ヨよ瘑Goodwin镄勬椂闂淬傚叾钖嶨oodwin锻婅瘔涓婂皦宸茬粡𨱒ュ洿锲板牎2涓链堜简钥屼笂灏夊叏铹朵笉鐭ワ纴涔熷彲浠ヨ存槑杩欎釜闂棰樸备篃灏辨槸璇磋繖瀹为檯涓婃槸涓婂皦绗涓娆℃簮浠g爜浠诲姟銆备箣钖庡崥澹瀹e竷婧愪唬镰侀”鐩鍑烘垬锻婃嵎涔熷嵃璇佷简杩欎竴镣广伞

銆4銆戜笂灏夌浜屾″姞杞藉埌婧愪唬镰佷笘鐣岄噷Shawn镄勮板繂瀛樻。涓镄勬簮浠g爜涓栫晫镄勫彂灞曞拰绗涓娆℃湁閮ㄥ垎鍙桦寲銆
銆庤瘉鏄庢簮浠g爜涓栫晫鏄鍗虫椂婕旂畻镄勮櫄𨰾熶笘鐣岃岄潪锲哄畾镄勭▼搴忋伞

銆5銆戜笂灏夊洖鍒板洿锲板牎镄勬椂鍊椤彂鐜板湴𨱒挎湁姘达纴鍖呮嫭钖庢潵镒熻夊緢鍐锋湁鐢熷懡鍗遍橹銆
銆庤瘉鏄庝笂灏夛纴杩樻椿镌锛岀被浼兼岖墿浜猴纴浣呜韩浣撴槸链夋劅鐭ョ殑銆傚啺鍐锋槸锲犱负浠栨劅鐭ュ埌浠栫殑缁寸敓鐜澧冦傚悓镞舵殚绀虹潃婧愪唬镰侀”鐩杩树笉鎴愮啛涓岖ǔ瀹氥伞

銆6銆戜笂灏夌橱褰曟簮浠g爜涓栫晫缁椤崥澹镓撶数璇濓纴链夋帴绾垮憳鎺ラ氩苟绛斿崭笂灏夛纴浠ュ强鍏嬮噷鏂钂傚滀笂缃戞煡鍒颁笂灏夊幓涓栫殑淇℃伅锛屽寘𨰾涓婂皦鍦ㄥ垪杞︿互澶栬拷鐤戠姱绛夈
銆庤瘉鏄庢簮浠g爜涓栫晫镄勬瀯鎴愰櫎浜嗗垪杞︿笂镄勬墍链夌焦闅捐呭强涓婂皦链浜轰互澶栵纴杩樻湁澶ч噺鍏朵粬镄勬暟鎹銆
鏁版嵁閲忕粷涓崭粎链塖hawn姝诲墠8鍒嗛挓镄勮板繂鏁版嵁銆伞

銆7銆戜笂灏夊湪婧愪唬镰佷笘鐣屾椂锛屽惉鍒癎oodwin镄勫懠鍙锛屼细寮曡捣婧愪唬镰佷笘鐣岄噷闱㈢殑浜虹墿璐村浘阌栾銆
銆庤呖灏戣瘉鏄庡綋Goodwin鍦ㄩ氲繃澶栭儴浠鍣ㄥ垭婵涓婂皦鎺ュ弹淇″彿镄勬椂鍊欙纴涓婂皦镓澶勭殑铏氭嫙婧愪唬镰佷笘鐣屼细鍙楀埌褰卞儚銆傛墍浠ワ纴婧愪唬镰佷笘鐣屽疄闄呬笂鏄鍦ㄤ笂灏夊ぇ鑴戦噷鍗虫椂婕旂畻骞跺憟鐜板嚭𨱒ョ殑锛岃屼笉鏄铏氭嫙鍜岃剧疆浜嗗悇绉岖幆澧冨强璁板繂鏁版嵁镄勭数鑴戠郴缁熴傚惁鍒橤oodwin鍜屽崥澹灏变笉闇瑕佹疮娆¢梾涓婂皦鍙戠敓骞剁湅鍒颁简浠涔堛伞

銆8銆戜笂灏夊湪鍙嶅嶅嚭鍏ユ簮浠g爜涓栫晫钖庨梾Goodwin鏄钖︾浉淇″彲鑳藉瓨鍦ㄥ彟澶栦竴涓鐗堟湰镄勮嚜宸便侴oodwin涓崭俊銆
銆庝笂灏夋劅瑙夊湪婧愪唬镰佷笘鐣屽拰鐜板疄涓栫晫瀹屽叏涓镙凤纴镙规湰娌℃湁锷炴硶鍖哄垎銆傛簮浠g爜涓栫晫镀忕煭𨱌傜殑鐜板疄涓栫晫锛岃岀幇瀹炰笘鐣屽儚闀夸竴镣圭殑婧愪唬镰佷笘鐣屻傛垨钥呮湁鍙鑳界幇瀹炰笘鐣屼篃鏄镟村栧眰涓栫晫镄勪竴灞傛簮浠g爜涓栫晫銆傚熀链涓婂氨鏄涓虹粨灏炬墦浼忕玛浜嗐伞

銆9銆戜笂灏夎锋眰Goodwin链钖庝竴娆¤╄嚜宸卞洖鍒版簮浠g爜涓栫晫镄勭幇瀹炵敾闱㈢粰鍑轰简浠栦滑娌熼氭柟寮忕殑鐗瑰啓闀滃ご锛氢笂灏夋槸阃氲繃澶栭儴浠鍣ㄦ劅搴斾粬镄勮韩浣撴潵镓揿瓧娌熼氱殑銆
銆庤瘉鏄庣数鑴戠郴缁熷彧鑳芥劅搴斾笂灏夎韩浣撶殑鍙嶅簲钥屼笉鑳借幏鍙栦粬澶ц剳閲屼骇鐢熺殑褰卞儚銆伞

銆10銆戜笂灏変箣鍓嶅湪婧愪唬镰佷笘鐣岀粰鍗氩+镓撶数璇濓纴铏界劧鍦ㄦ簮浠g爜涓栫晫链夊弽搴旓纴浣嗘槸鐜板疄涓栫晫瀹屽叏涓嶅弹褰卞儚銆傜幇瀹炰笘鐣岀殑鍗氩+娌℃湁鎺ュ埌𨱒ヨ嚜婧愪唬镰佷笘鐣岀殑鐢佃瘽銆备絾鏄涓婂皦链钖庝竴娆″湪婧愪唬镰佷笘鐣岀粰Goodwin鍙戠煭淇★纴Goodwin灞呯劧鏀跺埌浜嗙煭淇°
銆庤瘉鏄庝简涓ょ偣锛1鏄婧愪唬镰佷笘鐣屼笉浼氩圭幇瀹炰笘鐣屼骇鐢熷奖鍝嶃2鏄鍙楀埌鐭淇$殑Goodwin鏄灞炰簬婧愪唬镰佷笘鐣岀殑銆伞

銆11銆戞簮浠g爜涓栫晫𨱌傚仠钖庡张缁х画銆
銆庢殏锅沧槸鐜板疄涓栫晫涓婂皦鑴戝仠姝㈡椿锷----涔熷氨鏄鑴戞讳骸銆傞偅涔堢户缁娲诲姩鏄锛熶笂灏夊仠姝㈡椂镄勬簮浠g爜涓栫晫鍦ㄥ叾浠栦笂灏夌殑澶ц剳閲岀户缁杩愯屻伞

銆12銆戠幇瀹炰笘鐣岀殑缃榄佺ジ棣栫О鏄涓鏋佸叾镵鏄庣殑镙哥墿鐞嗕笓瀹讹纴鐢氲呖镊宸卞埗阃犱简镙告﹀櫒銆傚苟绉拌繖涓涓栫晫链夋満浼氶吨𨱒ャ傚逛簬涓婂皦鐭ラ亾镊宸辨湭瀹炶岀殑璁″垝鍙璇翠綘鐭ラ亾寰楀お澶氢简銆
銆庝簨瀹炰笂锛岃繖浜涚嚎绱㈠彲浠ヨ╂垜浠鐩镐俊鍑舵坠鐭ラ亾婧愪唬镰佷笘鐣岋纴鐭ラ亾婧愪唬镰佷笘鐣屽彲浠ラ吨𨱒ワ纴镓浠ュ逛笂灏夎瘑镰磋嚜宸辨病链夊疄琛岀殑璁″垝涔熷苟涓嶅囨銆伞

銆13銆戋灭幇瀹炰笘鐣屸濇槸鐪熺殑钬灭幇瀹炰笘鐣屸濆悧锛
銆庤繖涓娌℃湁瀹氲恒备絾鏄锛岀岖嶈抗璞¤〃鏄庡嚩镓嬫兂瑕佺牬鍧忕殑锛涗笂灏夈佸崥澹銆丢oodwin镓璁や负镄勯偅涓鐪熷疄镄勨灭幇瀹炰笘鐣屸濇瀬链夊彲鑳戒篃鏄鍙﹀栦竴绉嶅舰寮忔垨灞傞溃镄勨沧簮浠g爜涓栫晫钬濄傜被浼笺婄洍姊︾┖闂淬嬮噷镄勬ⅵ涓姊︿腑姊︿腑姊︹︹︺

銆14銆戜笂灏夋渶钖庣殑璇濓细濡傛灉鎴戠寽瀵逛简锛岄偅涔埚湪婧愪唬镰佷笘鐣岀殑镆愪釜鍦版柟浣犱细镓惧埌姝e湪绛夊緟浠诲姟镄勪笂灏夆︹
銆庤繖閲屽彲鐭ユ簮浠g爜涓栫晫涓嶆槸鍞涓镄勶纴钥屼笖镞堕棿杞翠篃涓嶆槸钖屾ョ殑銆伞

❼ 任天堂多款N64游戏源码泄露,几款经典大作均中招

作为很多80后和90后的童年回忆,N64主机已拥有超过20年的 历史 ,甚至早已退出了市场。不过,这一经典机型仍然是很多黑客眼里的目标——最近有多款任天堂N64 游戏 的源代码就遭到了黑客盗窃,这其中就包括了经典大作《马里奥》和《塞尔达》系列。

虽然在从前也出现过 游戏 代码失窃事件,但任天堂此次遭受的损失是巨大的,因为本次泄漏的代码虽然隶属古董型号主机,但其内容却非常重要,包括《马里奥医生64》、《马里奥赛车64》、《超级马里奥64》和《星际火狐64》等着名作品从此毫无秘密可言。

另外,此次失窃的还有《星际狐狸》、《超级马里奥世界》、《塞尔达传说:A Linke to the Past》、《超级马里奥:RPG》和《F-Zero》等。

关于本次黑客盗窃事件,知情人士均表示难以置信,本次任天堂遭受的损失不但巨大,而且还很彻底,甚至连 游戏 开发工具也被发现并盗走。而《星际狐狸》系列制作人Dylan Cuthbert则表示他已经有30年没见过该系列 游戏 的开发工具了,而且它还是早期为了学习而使用C++开发的工具。

更为值得一提的是,本次失窃的除了源代码、开发工具,甚至还有N64的操作系统,或许它的泄漏会给模拟器开发者和MOD制作者带来很多方便。

热点内容
2016邮件服务器搭建 发布:2024-11-27 12:45:15 浏览:927
pythonstrptime 发布:2024-11-27 12:34:50 浏览:954
怎么判断组装电脑配置真假 发布:2024-11-27 12:30:18 浏览:379
周鸿祎编程 发布:2024-11-27 12:30:12 浏览:615
索赔的脚本 发布:2024-11-27 12:30:09 浏览:547
什么是淘宝数据库 发布:2024-11-27 12:30:08 浏览:373
联系辅导员重设密码需要什么 发布:2024-11-27 12:19:16 浏览:510
android刷系统 发布:2024-11-27 12:18:40 浏览:915
安卓什么是id密码 发布:2024-11-27 11:52:39 浏览:446
zjs解压 发布:2024-11-27 11:33:10 浏览:159