首页 文章 精选 留言 我的

精选列表

搜索[整理],共10000篇文章
优秀的个人博客,低调大师

【回放视频+PPT下载整理】编程语言系列讲座:深度学习JavaScript和React技术

编程语言系列讲座JavaScript篇,我们邀请了行业资深专家靖鑫和逸翾与大家一起学习最流行的编程语言,本次系列直播将对于JavaScript中的对象、函数和异步编程进行详细解读,并带领大家学习React技术栈,包括快速掌握组件化和搭建页面、Mobx状态管理框架和React Diff算法及新架构Fiber。 数十款阿里云产品限时折扣中,赶快点击这里,领券开始云上实践吧! 4月16日直播讲座 演讲嘉宾为阿里巴巴高级前端工程师逸翾,主讲内容包括JavaScript中的继承、函数式编程和单线程异步编程。 Javascript中的对象 视频链接:https://yq.aliyun.com/video/play/1421 PDF下载:https://yq.aliyun.com/download/2576 回顾文章:https://yq.aliyun.

优秀的个人博客,低调大师

ios 开发,通讯录信息调用常用方法,这个比较全,不用再整理了

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook); for ( int i = 0; i < CFArrayGetCount(results); i++) { ABRecordRef person = CFArrayGetValueAtIndex(results, i); //读取firstname NSString *personName = ( NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); if (personName != nil ) textView.text = [textView.text stringByAppendingFormat:@ "\n姓名:%@\n" ,personName]; //读取lastname NSString *lastname = ( NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty); if (lastname != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,lastname]; //读取middlename NSString *middlename = ( NSString *)ABRecordCopyValue(person, kABPersonMiddleNameProperty); if (middlename != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,middlename]; //读取prefix前缀 NSString *prefix = ( NSString *)ABRecordCopyValue(person, kABPersonPrefixProperty); if (prefix != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,prefix]; //读取suffix后缀 NSString *suffix = ( NSString *)ABRecordCopyValue(person, kABPers*****uffixProperty); if (suffix != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,suffix]; //读取nickname呢称 NSString *nickname = ( NSString *)ABRecordCopyValue(person, kABPersonNicknameProperty); if (nickname != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,nickname]; //读取firstname拼音音标 NSString *firstnamePhonetic = ( NSString *)ABRecordCopyValue(person, kABPersonFirstNamePhoneticProperty); if (firstnamePhonetic != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,firstnamePhonetic]; //读取lastname拼音音标 NSString *lastnamePhonetic = ( NSString *)ABRecordCopyValue(person, kABPersonLastNamePhoneticProperty); if (lastnamePhonetic != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,lastnamePhonetic]; //读取middlename拼音音标 NSString *middlenamePhonetic = ( NSString *)ABRecordCopyValue(person, kABPersonMiddleNamePhoneticProperty); if (middlenamePhonetic != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,middlenamePhonetic]; //读取organization公司 NSString *organization = ( NSString *)ABRecordCopyValue(person, kABPersonOrganizationProperty); if (organization != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,organization]; //读取jobtitle工作 NSString *jobtitle = ( NSString *)ABRecordCopyValue(person, kABPersonJobTitleProperty); if (jobtitle != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,jobtitle]; //读取department部门 NSString *department = ( NSString *)ABRecordCopyValue(person, kABPersonDepartmentProperty); if (department != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,department]; //读取birthday生日 NSDate *birthday = ( NSDate *)ABRecordCopyValue(person, kABPersonBirthdayProperty); if (birthday != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,birthday]; //读取note备忘录 NSString *note = ( NSString *)ABRecordCopyValue(person, kABPersonNoteProperty); if (note != nil ) textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,note]; //第一次添加该条记录的时间 NSString *firstknow = ( NSString *)ABRecordCopyValue(person, kABPersonCreationDateProperty); NSLog (@ "第一次添加该条记录的时间%@\n" ,firstknow); //最后一次修改該条记录的时间 NSString *lastknow = ( NSString *)ABRecordCopyValue(person, kABPersonModificationDateProperty); NSLog (@ "最后一次修改該条记录的时间%@\n" ,lastknow); //获取email多值 ABMultiValueRef email = ABRecordCopyValue(person, kABPersonEmailProperty); int emailcount = ABMultiValueGetCount(email); for ( int x = 0; x < emailcount; x++) { //获取email Label NSString * emailLabel = ( NSString *)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(email, x)); //获取email值 NSString * emailContent = ( NSString *)ABMultiValueCopyValueAtIndex(email, x); textView.text = [textView.text stringByAppendingFormat:@ "%@:%@\n" ,emailLabel,emailContent]; } //读取地址多值 ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty); int count = ABMultiValueGetCount(address); for ( int j = 0; j < count; j++) { //获取地址Label NSString * addressLabel = ( NSString *)ABMultiValueCopyLabelAtIndex(address, j); textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,addressLabel]; //获取該label下的地址6属性 NSDictionary * personaddress =( NSDictionary *) ABMultiValueCopyValueAtIndex(address, j); NSString * country = [personaddress valueForKey:( NSString *)kABPersonAddressCountryKey]; if (country != nil ) textView.text = [textView.text stringByAppendingFormat:@ "国家:%@\n" ,country]; NSString * city = [personaddress valueForKey:( NSString *)kABPersonAddressCityKey]; if (city != nil ) textView.text = [textView.text stringByAppendingFormat:@ "城市:%@\n" ,city]; NSString * state = [personaddress valueForKey:( NSString *)kABPersonAddressStateKey]; if (state != nil ) textView.text = [textView.text stringByAppendingFormat:@ "省:%@\n" ,state]; NSString * street = [personaddress valueForKey:( NSString *)kABPersonAddressStreetKey]; if (street != nil ) textView.text = [textView.text stringByAppendingFormat:@ "街道:%@\n" ,street]; NSString * zip = [personaddress valueForKey:( NSString *)kABPersonAddressZIPKey]; if (zip != nil ) textView.text = [textView.text stringByAppendingFormat:@ "邮编:%@\n" ,zip]; NSString * coutntrycode = [personaddress valueForKey:( NSString *)kABPersonAddressCountryCodeKey]; if (coutntrycode != nil ) textView.text = [textView.text stringByAppendingFormat:@ "国家编号:%@\n" ,coutntrycode]; } //获取dates多值 ABMultiValueRef dates = ABRecordCopyValue(person, kABPersonDateProperty); int datescount = ABMultiValueGetCount(dates); for ( int y = 0; y < datescount; y++) { //获取dates Label NSString * datesLabel = ( NSString *)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(dates, y)); //获取dates值 NSString * datesContent = ( NSString *)ABMultiValueCopyValueAtIndex(dates, y); textView.text = [textView.text stringByAppendingFormat:@ "%@:%@\n" ,datesLabel,datesContent]; } //获取kind值 CFNumberRef recordType = ABRecordCopyValue(person, kABPersonKindProperty); if (recordType == kABPersonKindOrganization) { // it's a company NSLog (@ "it's a company\n" ); } else { // it's a person, resource, or room NSLog (@ "it's a person, resource, or room\n" ); } //获取IM多值 ABMultiValueRef instantMessage = ABRecordCopyValue(person, kABPersonInstantMessageProperty); for ( int l = 1; l < ABMultiValueGetCount(instantMessage); l++) { //获取IM Label NSString * instantMessageLabel = ( NSString *)ABMultiValueCopyLabelAtIndex(instantMessage, l); textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,instantMessageLabel]; //获取該label下的2属性 NSDictionary * instantMessageContent =( NSDictionary *) ABMultiValueCopyValueAtIndex(instantMessage, l); NSString * username = [instantMessageContent valueForKey:( NSString *)kABPersonInstantMessageUsernameKey]; if (username != nil ) textView.text = [textView.text stringByAppendingFormat:@ "username:%@\n" ,username]; NSString * service = [instantMessageContent valueForKey:( NSString *)kABPersonInstantMessageServiceKey]; if (service != nil ) textView.text = [textView.text stringByAppendingFormat:@ "service:%@\n" ,service]; } //读取电话多值 ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty); for ( int k = 0; k<ABMultiValueGetCount(phone); k++) { //获取电话Label NSString * personPhoneLabel = ( NSString *)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k)); //获取該Label下的电话值 NSString * personPhone = ( NSString *)ABMultiValueCopyValueAtIndex(phone, k); textView.text = [textView.text stringByAppendingFormat:@ "%@:%@\n" ,personPhoneLabel,personPhone]; } //获取URL多值 ABMultiValueRef url = ABRecordCopyValue(person, kABPersonURLProperty); for ( int m = 0; m < ABMultiValueGetCount(url); m++) { //获取电话Label NSString * urlLabel = ( NSString *)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(url, m)); //获取該Label下的电话值 NSString * urlContent = ( NSString *)ABMultiValueCopyValueAtIndex(url,m); textView.text = [textView.text stringByAppendingFormat:@ "%@:%@\n" ,urlLabel,urlContent]; } //读取照片 NSData *image = ( NSData *)ABPersonCopyImageData(person); UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(200, 0, 50, 50)]; [myImage setImage:[UIImage imageWithData:image]]; myImage.opaque = YES ; [textView addSubview:myImage]; } CFRelease(results); CFRelease(addressBook); 本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/p/3472867.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

一柜子老书怎么变成能读的字——长征史料整理这段路

手上这些长征史料,说白了就是一柜子的老书和大量的扫描件。粗粗一数:《毛泽东年谱》全九卷,解放军出版社的《中国工农红军长征史料丛书》,文献、回忆史料、参考资料加起来十来卷;中央党史研究室的纪实丛书九卷,从北上抗日先遣队到西路军卷;南方三年游击战争各游击区一套;中华民国史档案里的国民党追堵两册;还有红军长征全史、战史资料、方面军人物志……十几类,几百本。

优秀的个人博客,低调大师

从空提交到流水线触发,完整理解 git commit -m --allow-empty

看到 git commit -m --allow-empty 这一类命令时,最容易产生的误解,是把它理解成一种专门用来启动 CI/CD 的 Git 命令。实际上 Git 完全不知道什么是 Jenkins、GitHub Actions、GitLab CI/CD,也不知道什么叫 pipeline。这里真正发生的是,Git 被要求创建一个新的 commit,而且即使这个 commit 与前一个 commit 对应的文件快照完全相同,也允许创建。随后,如果再执行 git push,远程仓库发现某个 branch 的 commit 指针发生变化,就可能产生一个 push 事件,CI/CD 平台再根据自己的配置决定是否启动流水线。

优秀的个人博客,低调大师

超简单:用 Python 让 Excel 飞起来:用 openpyxl 把重复报表整理交给脚本

1.为什么我想写这一篇?做办公自动化这几年,我见过太多这样的场景:每天早上的固定流程,是把十几个业务群发来的 Excel 下载下来,手动复制、粘贴、对齐格式、核对数字,最后拼成一份日报。整件事耗时约 40 分钟,其中真正需要"思考"的环节可能只有 5 分钟,其余 35 分钟都是在做低价值的机械搬运。这类工作,恰恰是 Python 最擅长接管的部分。《超简单:用 Python 让 Excel 飞起来》这本书给我的最大启发,不是某个具体函数的用法,而是一套判断标准:凡是"有规律、可重复、需批量"的 Excel 操作,都值得停下来问一句——它是不是本来就该由脚本完成?这一篇,我想聚焦其中最实用也最典型的一个场景:用 openpyxl 批量读取 Excel、规整数据、再写回新表。这是几乎所有 Excel 自动化的起点。掌握了它,合并报表、数据汇总、工作表拆分等需求,都可以顺着同一套模式扩展出去。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册