首页 文章 精选 留言 我的

精选列表

搜索[小程序安全防护],共10000篇文章
优秀的个人博客,低调大师

这一堆初中生写的类库、框架,让一群中年程序员坐不住了!

前不久在V2EX上看到一个帖子,主题是「一堆初中生写的类库、框架」,原本猿妹以为只是个标题党不以为意。点进去该博主的博客主页发现,博主确实是一名初中生,而且他的GitHub主页,确实已经创建了多个项目,如下图: 虽然Star数量都不多,但是项目的技术水平却不低,下面就介绍几个项目给你们: 1、XPHP 根据他在V2EX上的介绍:这个项目,在他小学的时候就已经开发了第一个版本,那时还不知道 Semantic Version,于是版本号是版本0,这个框架旨在像 Laravel 一样优雅,与 CI 一样高性能。 它把整个 Handler 层单独出来了,所以整合 Swoole、Workerman 之类的十分方便。后期有原生支持多线程( pthreads )的打算。提供完整的工具集,包括 CLI 等等。Container 化管理,符合 PSR 标准,摒弃了 Laravel 中我认为多余的思想,十分简化,并且是 Event-Driven 的。 这个框架是完全模块化的,例如你觉得 Router 不好用,可以直接替换,只需修改 Container中的 Registry 就行了。(项目地址:https://github.com/xtlsoft/XPHP) 这个项目涉及的知识可不少,人家小学就开发出来了,就问你惊不惊讶。 2、NonDB NonDB 的前身是 XDO 和 xdb,是一个非关系型文档数据库(但是旧版 xdb 是关系型的)。同样,他的前身也是他小学开始就开发的,NonDB 完全符合 PSR 标准,注释完备,接口开放,底层 Driver 上层 Sorter, Dumper,Checker都可以注册为自己的类。性能很高,默认的 LocalDriver 是 JSON 存储的。 (项目地址:https://github.com/xtlsoft/NonDB) 3、OnePort 正向端口代理,在同一个端口同时启用 HTTP 和WebSocket基于的端口代理,TCP/UDP 均可代理。支持黑白名单,简单鉴权。具有以下特性: ● 快速,响应式,跨平台 ● 使用 PHP 编写 ● 可以为多个用户分别设置密码 ● 可以对数据加密传输 ● 比端口映射做得更多,比端口映射更轻快 ● 免费,开源,便于使用(项目地址:https://github.com/ourCloudSky/OnePort-php/) 其余PHP项目 1、GoFeature— 在 PHP 中启用 Golang 特性,无需拓展。(项目地址:https://github.com/xtlsoft/GoFeature) 2、FuncPhy— PHP 云函数框架。(项目地址:https://github.com/xtlsoft/FuncPhy) 3、CachedRecursion—— 存的递归调用。(项目地址:https://github.com/xtlsoft/CachedRecursion) 4、NoiLab— 在线 CppIde。(项目地址:https://github.com/SZCK/NoiLab) 5、Golang Go-Router— 一个给 Go 用的 router,十分轻巧,语法和 XPHP 的 Router 相似。(详情:https://github.com/xtlsoft/router) 你以为这就完了,当然还没有,还有些项目是上面没有提到的,感兴趣的可以自行到他们的GitHub主页查看,看完之后相信你也一定会对他们刮目相看(GitHub主页:https://github.com/xtlsoft) 看完这些项目,网友么就开始纷纷议论:有感慨中年人表示压力山大;瞬间发现自己老了;也有质疑是码农父母搞得,你怎么看呢? 最后附上一张别人家初中时候的年度总结: 感谢阅读 如果你依然在编程的世界里迷茫,不知道自己的未来规划,可以加入web前端学习交流群:731771211 里面可以与大神一起交流并走出迷茫。小白可进群免费领取学习资料,看看前辈们是如何在编程的世界里傲然前行!群里不停更新最新的教程和学习方法(进群送web前端系统学习路线,详细的前端项目实战教学视频),有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。 点击:加入

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

在android中读取联系人信息的程序,包括读取联系人姓名、手机号码和邮箱

1:androidmanifest.xml的内容 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.itcast.contacts" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="android.test.runner" /> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="cn.itcast.contacts" android:label="Tests for My App" /> </manifest> 里面重要的是搭建测试环境和添加<uses-permission>,即读取和写入联系人信息的权限 2:读取的主要方法 /* * 读取联系人的信息 */ public void testReadAllContacts() { Cursor cursor = this.getContext().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); int contactIdIndex = 0; int nameIndex = 0; if(cursor.getCount() > 0) { contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID); nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); } while(cursor.moveToNext()) { String contactId = cursor.getString(contactIdIndex); String name = cursor.getString(nameIndex); Log.i(TAG, contactId); Log.i(TAG, name); /* * 查找该联系人的phone信息 */ Cursor phones = this.getContext().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null); int phoneIndex = 0; if(phones.getCount() > 0) { phoneIndex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); } while(phones.moveToNext()) { String phoneNumber = phones.getString(phoneIndex); Log.i(TAG, phoneNumber); } /* * 查找该联系人的email信息 */ Cursor emails = this.getContext().getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=" + contactId, null, null); int emailIndex = 0; if(emails.getCount() > 0) { emailIndex = emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA); } while(emails.moveToNext()) { String email = emails.getString(emailIndex); Log.i(TAG, email); } } } 3:目前手机中的联系人信息,有两个联系人的信息,如图所示, 这是Hellen的联系信息 这是Mike的联系信息 4:测试结果,在控制台输出的内容为: 可以看到在控制台输出了两个联系人的信息。 //-------------------------------------- 获取所有分组编号和组的名称 Cursor groupInfoCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI, null, null, null, null); while(groupInfoCursor.moveToNext()) { int idIndex = groupInfoCursor.getColumnIndex(ContactsContract.Groups._ID); int titleIndex = groupInfoCursor.getColumnIndex(ContactsContract.Groups.TITLE); String id = groupInfoCursor.getString(idIndex); String title = groupInfoCursor.getString(titleIndex); } groupInfoCursor.close(); 本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2013/03/12/2956090.html,如需转载请自行联系原作者

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

iOS 新手指引在App中的添加,第一次启动应用程序出现,后面都不出现

1、在appdelegate.m中找到“application:didFinishLaunchingWithOptions:” 通过NSUserDefaults 来进行判断 if(![[NSUserDefaultsstandardUserDefaults]boolForKey:@"everLaunched"]) { [[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"everLaunched"]; [[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"firstLaunch"]; NSLog(@"first launch"); }else{ [[NSUserDefaultsstandardUserDefaults]setBool:NOforKey:@"firstLaunch"]; NSLog(@"second launch"); } 2、在RootViewController的 viewWillAppear:的方法里面进行添加 if([[NSUserDefaultsstandardUserDefaults]boolForKey:@"firstLaunch"]) { [[NSUserDefaultsstandardUserDefaults]setBool:NOforKey:@"firstLaunch"]; UserGuideController*userGuide = [[[UserGuideControlleralloc]init]autorelease]; [selfpresentModalViewController:userGuideanimated:YES]; } 3、在设置页面里面也可以添加同样的视图,让用户可以查看。 本文转自 卓行天下 51CTO博客,原文链接:http://blog.51cto.com/9951038/1746336,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

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

用户登录
用户注册