精华内容
下载资源
问答
  • 开源代码

    万次阅读 2018-01-15 18:02:48
    龙果支付系统是国内首款开源的互联网支付系统,其核心目标是汇聚所有主流支付渠道,打造一款轻量、便捷、易用,且集支付、资金对账、资金清结算于一体的支付系统,满足互联网业务系统的收款和业务资金管理需求。...

    1、zheng:基于 Spring+SpringMVC+Mybatis 分布式敏捷开发系统架构

    upms

    基于 Spring+SpringMVC+Mybatis 分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。

    码云地址:https://gitee.com/shuzheng/zheng  
    授权协议:MIT

    2、JFinal:基于 Java 语言的极速 WEB + ORM 框架

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :)

    码云地址:https://gitee.com/jfinal/jfinal  
    授权协议:Apache

    3、t-io:百万级即时通讯框架

    t-io 是一个网络框架,从这一点来说是有点像 netty 的,但 t-io 的特点在于,它不仅仅是一个网络框架, 因为它为常见和网络相关的业务(如 IM、消息推送、RPC、监控)提供了近乎于现成的解决方案,即开箱即用的 API。t-io 的口号是让网络编程更简单和有趣。

    码云地址:https://gitee.com/tywo45/t-io  
    授权协议:Apache-2.0

    4、guns:集成 flowable 工作流引擎及完善代码生成器

    基于 SpringBoot,致力于做更简洁的后台管理系统,完美整合 springmvc + shiro + mybatis-plus + beetl + flowable!Guns 项目代码简洁,注释丰富,上手容易,同时 Guns 包含许多基础模块(用户管理,角色管理,部门管理,字典管理等 10 个模块),可以直接作为一个后台管理系统的脚手架。Guns v3.0新增rest api服务。提供对接服务端接口的支持。并利用jwt token鉴权机制给予客户端的访问权限。传输数据进行md5签名保证传输过程数据的安全性!Guns v3.1 新增集成工作流引擎 flowable6.2.0!

    码云地址:https://gitee.com/naan1993/guns  
    授权协议:Apache

    5、hutool:Java 工具集

    Hutool 是一个 Java 工具集,针对我们项目中util包进行开刀,抽象大量的工具方法,旨在减少项目中工具类的数量,将我们的编码工作专注在业务上。Hutool 对文件、流、加密解密、转码、正则、线程、XML、日期、Http客户端 等 JDK 方法进行封装,组成各种 Util 工具类。  Hutool并非框架,而是一个工具类方法集合,随用随取,且随时可被替换,与任何框架不冲突。  Hutool的大部分工具方法并不依赖第三方包(extra模块对第三方框架封装工具类除外),轻量简洁。

    码云地址:https://gitee.com/loolly/hutool  
    授权协议:Apache

    6、mybatis-plus:Mybatis 的增强工具

    Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

    码云地址:https://gitee.com/baomidou/mybatis-plus  
    授权协议:Apache

    7、NiceFish:基于 Angular 的微型博客系统

    nicefish-jigsaw

    NiceFish(美人鱼)是一个系列教学项目,全面示范了Angular新版本在浏览器、移动端、Electron环境中的用法。

    码云地址:https://gitee.com/mumu-osc/NiceFish  
    授权协议:MIT

    8、easypoi:POI 的封装工具类

    POI 工具类,Excel的快速导入导出,Excel模板导出,Word模板导出,可以仅仅5行代码就可以完成Excel的导入导出,修改导出格式简单粗暴,快速有效,easypoi值得你尝试

    码云地址:https://gitee.com/lemur/easypoi   
    授权协议:Apache

    9、roncoo-pay:开源的互联网支付系统

    应用架构

    龙果支付系统是国内首款开源的互联网支付系统,其核心目标是汇聚所有主流支付渠道,打造一款轻量、便捷、易用,且集支付、资金对账、资金清结算于一体的支付系统,满足互联网业务系统的收款和业务资金管理需求。

    码云地址:https://gitee.com/roncoocom/roncoo-pay  
    授权协议:Apache

    10、beimi:开源棋牌游戏

    贝密游戏是一系列棋牌游戏的名称,其中包含麻将、斗地主、德州扑克。采用当前最流行的房卡模式。

    码云地址:https://gitee.com/beimigame/beimi
    授权协议:Apache

    11、AOSuite:基于 JavaEE 技术体系的开发套件

    AOSuite开发套件基于JavaEE技术体系,以帮助企业落实IT策略、屏蔽技术壁垒,快速实现高性能高可用可水平扩展的技术愿景为目标。为传统软件企业和互联网企业研发团队提供高效可控、随需应变、快速实现业务需求的全栈式技术解决方案,以最低成本和最低风险获得更高质量、更快交付业务和运维支持的核心技术竞争力。

    码云地址:https://gitee.com/osworks/AOS  
    授权协议:Apache

    12、Spiderman:强力 Java 爬虫

    强力 Java 爬虫,列表分页、详细页分页、ajax、微内核高扩展、配置灵活

    码云地址:https://gitee.com/l-weiwei/spiderman  
    授权协议:Apache

    13、AG-Admin:基于 Spring Cloud 微服务化开发平台

    img

    AG-Admin是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。核心技术采用Eureka、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis等主要框架和中间件,前端采用vue-element-admin组件。

    码云地址:https://gitee.com/geek_qi/ace-security  
    授权协议:Apache

    14、renren-security:基于 Spring+MyBatis+Shiro 框架的权限系统

    输入图片说明

    采用Spring、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。

    码云地址:https://gitee.com/babaio/renren-security  
    授权协议:GPL

    15、jfinal-weixin:基于 JFinal 的微信公众号极速开发 SDK

    JFinal Weixin 是基于 JFinal 的微信公众号极速开发 SDK,只需浏览 Demo 代码即可进行极速开发,自 JFinal Weixin 1.2 版本开始已添加对多公众号支持。

    码云地址:https://gitee.com/jfinal/jfinal-weixin  
    授权协议:Apache

    16、webmagic:爬虫框架

    logo

    webmagic 是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。

    码云地址:https://gitee.com/flashsword20/webmagic  
    授权协议:Apache

    17、ip2region:IP 到地名映射库

    准确率 99.9% 的 ip 地址定位库,0.0x 毫秒级查询,数据库文件大小只有 1.5M,提供了java,php,c,python,nodejs,golang 查询绑定和 Binary,B树,内存三种查询算法,妈妈再也不用担心我的 ip 地址定位!

    码云地址:https://gitee.com/lionsoul/ip2region  
    授权协议:Apache

    18、zbus:MQ、RPC 实现

    小巧而极速的MQ、RPC实现,支持 HTTP/TCP 代理,开放易扩展,多语言支撑微服务,系统总线架构

    码云地址:https://gitee.com/rushmore/zbus  
    授权协议:MIT

    19、xxl-job:轻量级分布式任务调度框架

    XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

    码云地址:https://gitee.com/xuxueli0323/xxl-job  
    授权协议:GPL

    20、layui:前端 UI 框架

    layui

    采用自身模块规范编写的前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式,极低门槛,拿来即用。它区别于那些基于MVVM底层的UI框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,她更多是为服务端程序员量身定做,你无需涉足各种前端工具的复杂配置,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。

    码云地址:https://gitee.com/sentsin/layui  
    授权协议:MIT

    21、EasyPR:中文的开源车牌识别系统

    EasyPR 输出窗口

    EasyPR 是一个中文的开源车牌识别系统,其目标是成为一个简单、高效、准确的车牌识别引擎。相比于其他的车牌识别系统,EasyPR有如下特点:* 它基于openCV这个开源库。这意味着你可以获取全部源代码,并且移植到java等平台。* 它能够识别中文。例如车牌为苏EUK722的图片,它可以准确地输出std:string类型的"苏EUK722"的结果。* 它的识别率较高。图片清晰情况下,车牌检测与字符识别可以达到80%以上的精度。

    码云地址:https://gitee.com/easypr/EasyPR  
    授权协议:Apache

    22、Mybatis_PageHelper:Mybatis 分页插件

    Mybatis 分页插件。如果你也在用 Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。

    码云地址:https://gitee.com/free/Mybatis_PageHelper  
    授权协议:MIT

    23、xbin-store:分布式 B2C 商城

    20170320148998263242121.png

    模仿国内知名B2C网站,实现的一个分布式B2C商城,使用 Spring Boot 自动配置 Dubbox / MVC / MyBatis / Druid / Solr / Redis 等。

    码云地址:https://gitee.com/binu/xbin-store  
    授权协议:GPL

    24、PhalApi:轻量级 PHP 开源接口框架

    简称π框架,一个轻量级PHP开源接口框架,专注于接口服务开发,支持HTTP/SOAP/RPC协议,拥有自动生成的在线文档、多种开发语言的客户端SDK包以及可重用的扩展类库,可用于快速搭建微服务、RESTful接口或Web Services。

    码云地址:https://gitee.com/dogstar/PhalApi  
    授权协议:GPL

    25、xxpay:使用 Java 开发的聚合支付

    输入图片说明

    XxPay聚合支付使用Java开发,包括spring-cloud、dubbo、spring-boot三个架构版本,已接入微信、支付宝等主流支付渠道,可直接用于生产环境

    码云地址:https://gitee.com/jmdhappy/xxpay-master  
    授权协议:MIT

    26、Mapper:Mybatis 通用 Mapper

    极其方便的使用 Mybatis 单表的增删改查

    码云地址:https://gitee.com/free/Mapper  
    授权协议:MIT

    27、weixin-java-tools:微信 Java 开发工具包

    可能是目前最好最全的微信Java开发工具包,支持包括微信支付、开放平台、公众号、企业号、小程序等的开发

    码云地址:https://gitee.com/binary/weixin-java-tools  
    授权协议:Apache

    28、ybg-spring-fast:基于 SpringBoot 的模块化开发系统

    输入图片说明

    以 SpringBoot 为中心,模块化开发系统,用户可以随意删减除权限框架外任意的系统模块。复用,组装性强主要应用技术:spring Security+Ehcache+quartz+swagger2+Mysql5.6+springjdbc+druid+spring social+spring session + layerui+vue.js等。

    码云地址:https://gitee.com/YYDeament/88ybg  
    授权协议:GPL

    29、IJPay:对支付工具的二次封装

    IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。

    码云地址:https://gitee.com/javen205/IJPay  
    授权协议:Apache

    30、spring-boot-pay:开源支付后台管理

    模拟登陆

    支付服务:支付宝,微信,银联详细代码案例(除银联支付可以测试以外,支付宝和微信支付测试均需要企业认证,个人无法完成测试)

    码云地址:https://gitee.com/52itstyle/spring-boot-pay  
    授权协议:GPL

    31、Morning:B2C 模式运营的公益在线商城

    后台管理系统用户登录界面

    猫宁Morning公益商城是中国公益性在线电子商城,以商城B2C模式运营的公益在线商城。系统分为前台和后台,前台主要功能包括注册和登录、商品浏览、个人信息管理、购物车、我的订单、网上支付、评价、提问、公益活动、公益论坛、商城论坛等系统,后台主要功能包括管理成员信息管理、用户信息管理、商品管理、公益活动管理、商品分类管理、订单管理、公告资讯管理、论坛平台管理、商品提上管理、商品评价管理等。

    码云地址:https://gitee.com/Morning_/Morning  
    授权协议:未知(作者未选择开源协议,暂未发现相关使用限制)

    32、fastadmin:基于 ThinkPHP5 和 Bootstrap 的极速后台开发框架

    控制台

    FastAdmin 是一款基于 ThinkPHP5+Bootstrap 的极速后台开发框架。

    码云地址:https://gitee.com/karson/fastadmin  
    授权协议:Apache

    33、zscat-me:基于 springboot dubbo 的商城项目

    基于springboot dubbo构建的一个商城项目,包括前端,后端和h5应用,作为zscat应用实践的模板项目。包含sso登录、API网关、流量控制、自定义协议包装、、自动crud、自动缓存、读写分离、分布式缓存、分布式定时任务、分布式锁、消息队列、事件机制、oauth2.0登录、全文搜索、集成qiniu文件服务、集成dubbo、集成springcboot等功能。

    码云地址:https://gitee.com/catshen/zscat_sw  
    授权协议:GPL

    34、miaosha:秒杀、抢购解决方案

    输入图片说明

    秒杀、抢购解决方案,设计目标:性能支撑"小米印度抢购搞挂亚马逊事件”

    码云地址:https://gitee.com/1028125449/miaosha  
    授权协议:Apache

    35、Jboot:基于 jfinal 和 undertow 开发的微服务框架

    Jboot 是一个基于jfinal 和 undertow开发的微服务框架。提供了AOP、RPC、分布式缓存、限流、降级、熔断、统一配置中心、swagger api自动生成、Opentracing数据追踪、metrics数据监控、分布式session、代码生成器、shiro安全控制等功能。

    码云地址:https://gitee.com/fuhai/jboot  
    授权协议:Apache

    36、xiaoyaoji:在线文档管理

    LOGO

    小幺鸡在线文档管理,支持在线测试,支持 json,txt,xml,html,js,流和 WebSocket

    码云地址:https://gitee.com/zhoujingjie/apiManager
    授权协议:GPL

    37、CrapApi:免费开源 API 接口管理系统

    CrapApi 免费开源API接口管理系统、API接口调试工具:API接口管理、文档管理、接口调试,GitHub、码云、开源中国托管源码

    码云地址:https://gitee.com/CrapApi/CrapApi  
    授权协议:AGPL

    38、OpenAuth.Net:权限管理系统

    输入图片说明

    基于经典领域驱动设计的权限管理系统。项目采用经典 DDD 架构(用沃恩.弗农大神的话,其实这是 DDD-Lite)思想进行开发,简洁而不简单,实用至上,并且所写每一行代码都经过深思熟虑,符合SOLID规则!

    码云地址:https://gitee.com/yubaolee/OpenAuth.Net  
    授权协议:GPL 

    39、sequence:分布式高效 ID 生产黑科技

    性能测试结果

    高效 GUID 产生算法(sequence),基于 Snowflake 实现 64 位自增 ID 算法。Twitter-Snowflake 算法产生的背景相当简单,为了满足 Twitter 每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的id必须不同。

    码云地址:https://gitee.com/yu120/sequence  
    授权协议:MIT

    40、framework-admin:基于 Vue.js 的单页面管理系统前端

    用户管理模块

    项目基于 vue-template 的 webpack-simple 构建,采用的主要框架除了 Bootstrap 4。没有任何其它重度依赖。

    码云地址:https://gitee.com/backflow/framework-admin  
    授权协议:未知(作者未选择开源协议,暂未发现相关使用限制)

    41、Sharding-JDBC:轻量级的关系型数据库中间件

    Architecture

    Sharding-JDBC是一个轻量级的关系型数据库中间件,提供分库分表、读写分离和柔性事务等功能。

    码云地址:https://gitee.com/shardingjdbc/sharding-jdbc  
    授权协议:Apache

    42、PornHubBot:网络爬虫

    全球最大成人网站 PornHub 爬虫 (Scrapy、MongoDB) 一天 500w 的数据

    码云地址:https://gitee.com/xiyouMc/pornhubbot  
    授权协议:MIT

    43、vue2-elm:基于 vue2 + vuex 的大型单页面应用

    基于 vue2 + vuex 构建一个具有 45 个页面的大型单页面应用

    码云地址:https://gitee.com/mgh_com/vue2-elm  
    授权协议:MIT

    44、Bootdo:开源 Java EE 开发框架

    BootDo 是高效率,低封装,面向学习型,面向微服的开源 Java EE 开发框架。BootDo是在SpringBoot基础上搭建的一个Java基础开发平台,MyBatis为数据访问层,ApacheShiro为权限授权层,Ehcahe对常用数据进行缓存。

    码云地址:https://gitee.com/lcg0124/bootdo  
    授权协议:Apache

    45、Tale:Java 博客系统

    Tale

    Tale是一款简洁美观的Java博客系统,让每一个有故事的人更好的表达想法!使用了轻量级 mvc 框架 Blade 开发,默认主题使用了漂亮的 pinghsu

    码云地址:https://gitee.com/biezhi/tale  
    授权协议:MIT

    46、iView:基于 Vue.js 的 UI 组件库

    iView 是一套基于 Vue.js 的 UI 组件库,主要服务于 PC 界面的中后台产品

    码云地址:https://gitee.com/icarusion/iview  
    授权协议:MIT

    47、Jcseg:轻量级开源中文分词器

    Jcseg 是基于 mmseg 算法的一个轻量级开源中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了最新版本的 lucene, solr, elasticsearch 的分词接口。Jcseg 自带了一个 jcseg.properties 文件用于快速配置而得到适合不同场合的分词应用,例如:最大匹配词长、是否开启中文人名识别、是否追加拼音、是否追加同义词等。

    码云地址:https://gitee.com/lionsoul/jcseg 
    授权协议:Apache

    48、pay-java-parent:轻量级支付模块集成

    轻量级支付模块集成(微信支付,友店扫码,支付宝,富友,银联)支付整合,app,扫码,即时到帐刷卡付条码付、支持多种支付类型多支付账户,支付与业务完全剥离,简单几行代码即可实现支付,简单快速完成支付模块的开发,可轻松嵌入到任何系统里

    码云地址:https://gitee.com/egzosn/pay-java-parent  
    授权协议:Apache

    49、file-online-preview:文件文档在线预览项目解决方案

    输入图片说明

    此项目为文件文档在线预览项目解决方案,在取得公司高层同意后以 Apache 协议开源出来反哺社区。该项目基本支持主流办公文档的在线预览,如 doc、docx、Excel、pdf、txt、zip、rar、图片等等。

    码云地址:https://gitee.com/kekingcn/file-online-preview  
    授权协议:Apache

    50、smart-socket:500 行代码实现的 AIO 框架

    基于 NIO 实现的一个高性能通信框架,简单易懂,一款线程模型单一,性能表现“爆炸”的项目。先已开发了AIO版的smart-socket

    码云地址:https://gitee.com/smartdms/smart-socket  
    授权协议:Apache

    展开全文
  • 这几天,红警1的开源代码重现江湖,这个20年前,甚至25年前的代码,被我们所有的后来者所惊叹,这才是一个艺术品一般的存在。那么如果我们也想写出如此优美的代码,应该注意的事项有哪些?本文将讲述3个编码时需要...

    1.前言

    这几天,红警1的开源代码重现江湖,这个20年前,甚至25年前的代码,被我们所有的后来者所惊叹,这才是一个艺术品(art)一般的存在。其优秀的代码才是一款RTS游戏能够风靡全球的最根本保障。
    其开源链接为:https://github.com/electronicarts/CnC_Remastered_Collection
    如果你想重温这款童年记忆,那么花费140人民币,你就可以在Steam上体验到这款游戏。

    但是,我们的重点,主要在其代码上,因此不放出其游戏截图了,而是专注代码。下面是我随便点开的一个文件内容。大家可以欣赏一下什么是赏心悦目的代码。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2. 我们惊叹它的什么?

    通过上图,我们能够看到什么?我们惊叹的是它的什么?
    先看看小伙伴们的评价(只摘取了部分评价):
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在我看来,我们惊艳的部分至少包含三点:

    1. 清晰的代码注释
    2. 语义化的编码规范
    3. 小而精的逻辑实现

    2.1 清晰的代码注释

    我们可以看到非常工整的文档头注释(图1),还有详细的方法注释(图2),以及代码的字里行间里的逻辑注释(图3)。这些注释不仅仅是简单的重复代码,更把代码背后的业务逻辑详细的呈现了出来,使得我们不用猜测这个的用途,只读代码就可以知道它应该在哪里使用。最为夸张的是第三张,在具体实现中,注释竟然比代码所占篇幅还要大。

    2.2 语义化的编码规范

    我们可以看到它明显的语义化编码,也就是在逻辑实现部分,尽可能的能够少考虑具体的实现,如if判断条件中,使用一个函数来实现具体的判断,而不是直接把判断细节暴露出来。这有助于我们思维的连续性,从而从更高的层面对于代码有一个整体的把握。

    2.3 小而精的逻辑实现

    一般的,尽可能的要让一个函数的实现少,大概一个屏幕可以放得下即可,真正做到一个函数只做1件事,这样既可以避免逻辑混乱,而且也易于维护。对于其中的复杂的逻辑的细节实现,完全可以放到另一个函数中,从而避免一个函数包含了若干个层次的逻辑。

    3. 依葫芦画瓢

    那么在我们感叹之余,我们能不能做些什么向大佬看齐?在我的Blink发出以后,收到了上百个点赞评论,一致认为都想像20多年前的前辈一样优雅的编程。那么,我们就从最简单的、最明显改观的代码注释开始。

    在Python中,代码注释其实就两种,单行代码注释(#)和多行代码注释("""""")。但是我们需要用到的地方则有4个部分:文档级、类级、方法级和行级别。下面我们分别讲解一下这些部分的组成。

    3.1 添加文档级注释

    我们可以看到红警文件开头的那个非常醒目的注释,它展示了整个文件的简要信息,如属于什么项目,谁在什么时候创建的,什么时候更新的,而且以一种非常规范的格式呈现在我们面前。我们能不能拥有这样酷炫的文档开头呢?答案是Yes!
    首先看一下我复现的效果:
    在这里插入图片描述
    尽管看起来可能没有红警原版霸气,但是只要学会了这个技术,我们都可以创建属于自己的风格的文件头。我们只需要利用pycharm中的文件模板设置即可。它总共分为3个步骤:
    首先,点击File->Settings进入设置界面,选择Editor下的File and Code Templates选项。
    在这里插入图片描述
    然后,点击Python Script(你也可以为其他类型文件设置文件头),就可以看到最右侧显式的文件模板了。
    最后,只需要将我们喜欢的文件头复制粘贴进去即可,点击OK即可。

    下面是我仿照红警风格自己设计的文件头,大家可以随意取用(CV一下):

    #!/usr/bin/env python
    # encoding: utf-8
    '''
    #-------------------------------------------------------------------#
    #                   CONFIDENTIAL --- CUSTOM STUDIOS                 #     
    #-------------------------------------------------------------------#
    #                                                                   #
    #                   @Project Name : ${PROJECT_NAME}                 #
    #                                                                   #
    #                   @File Name    : ${NAME}.py                      #
    #                                                                   #
    #                   @Programmer   : Adam                            #
    #                                                                   #  
    #                   @Start Date   : ${DATE} ${TIME}                 #
    #                                                                   #
    #                   @Last Update  : ${DATE} ${TIME}                 #
    #                                                                   #
    #-------------------------------------------------------------------#
    # Classes:                                                          #
    #                                                                   #
    #-------------------------------------------------------------------#
    '''
    

    当然,更多其他的这种内置变量或者自定义变量的使用方法可以参见《详解pycharm新建文件时头部的模板》。

    3.2 添加类级注释

    当添加完文件注释以后,我们就需要添加更加细致的注释,首先来看对于类的注释。下面的例子给出了类注释的两个部分,一个部分是直接处于类下的简要介绍,另一个则是在__init__下的注释。两个部分都是使用"""进行标记的。图上风格为pycharm自带的编码风格,也有google和Numpy风格的注释,详情可以看《python常见的三种注释风格

    class CustomFile:
        """
        This is the main class, the file contains all documents.
        One document contains paragraphs that have several sentences.
        It loads the original file and converts the original file to new content.
        Then the new content will be saved by this class.
        """
        def __init__(self,src_file_name:str):
            """
            Initial the custom file by src file.
            :param src_file_name: string, the original filename.
            :return: None
            """
            file = open(src_file_name, encoding='utf-8').read()
            file="<File>"+file+"</File>"    # Special operation to avoid there is no root. node in original file.
            self.soup = BeautifulSoup(file, 'xml')
            self.document_list=[]
            self._set_documents()
    

    3.3 添加方法级注释

    更加细致的注释是在方法级的注释,如下面代码所示,它注释在方法上,一个好处是可以直接指导这个函数的功能,另一个好处就是当你在查看方法时,不需要点击方法里面查看源代码,也知道它的用途、参数和返回值,这个操作我们下面会介绍。

    def to_string(self):
            """
            Convert the document into string.
            :return: string, example: para\n\npara\n\npara
            """
            paragraph_string_list=[]
            for paragraph in self.paragraph_list:
                paragraph_string_list.append(paragraph.to_string())
            result="\n\n".join(paragraph_string_list)
            return result
    

    3.4 添加行级注释

    最细致的是行级注释,只注释在每一个行上,例如刚才出现过的例子。它可以用来解释一些不是很容易知道操作的目的的代码。

    file="<File>"+file+"</File>"    # Special operation to avoid there is no root.
    

    3.5 其他小技巧

    经过以上4级的注释,我们让代码更加的丰满了,从而能够达到红警里注释的效果。但是我们这东西可不是绣花枕,中看不中用,它是可以实实在在帮助我们提高编程效率的。下面我们介绍一些小技巧来帮助我们更好的利用我们/其他人的注释。

    3.5.1 查看方法注释

    当我们费了千辛万苦注释完毕后,该怎么查看呢?一个方法就是将鼠标放置在我们想要查看的方法上,按住ctrl,就可以查看到其注释了。
    在这里插入图片描述
    另一个方法则是ctrl+Q,它用来查看说明文档呈现的注释,两者的不同大家可以通过下面的图和上面的图对比可得。
    在这里插入图片描述

    3.5.2 生成说明文档

    就像刚才讲的,这些都是在代码里查看的,如果我们想生成一个工业级的软件说明文档该如何呢?这么多注释不能白写了呀。这时候我们就可以使用Sphinx来帮助我们实现自动化的说明文档生成,详情可以看《Sphinx入门——快速生成Python文档》。

    3.5.3 打包项目所需依赖包

    当我们代码也准备好了,说明文档也准备好了,距离交付别人就只差一个依赖包了。我们的项目可能会依赖很多第三方的包,如果不给别人一个依赖清单,那么别人也没有办法非常容易的复现你的程序,因为总会报各种各样的错误。这时候,我们又需要另一个神器了pipreqs
    首先使用命令行执行pip install pipreqs
    然后进入项目的文件夹里,执行下面的命令:

    pipreqs ./  # 报错就执行下面这条
    pipreqs ./ --encoding=utf-8
    

    这样就会生成一个requirement.txt文件,里面就是我们的依赖包了,等到再复现的时候,只需要执行pip install -r requirement.txt即可重装这些依赖了。

    4 小结

    至此,我们基本上讲述了如何实现教科书级的红警开源代码需要注意的事项,为以后我们更好的编码打下了基础。在将来,我们将会磨砺自己的编程技巧,终有一天做出一流的艺术品,为整个虚拟世界真真正正的贡献自己的一份力量!

    展开全文
  • 鸿蒙OS开源代码精要解读之——init

    万次阅读 多人点赞 2020-09-25 09:34:26
    鸿蒙OS开源代码精要解读之——init 作者介绍: 中科创达OpenHarmony研究组 说明: 中科创达OpenHarmony研究组第一时间对https://codechina.csdn.net/openharmony上开源的代码进行了详尽的代码研读和学习。为此,...

    鸿蒙OS开源代码精要解读之——init

    作者介绍

    中科创达OpenHarmony研究组

    说明

      中科创达OpenHarmony研究组第一时间对https://codechina.csdn.net/openharmony上开源的代码进行了详尽的代码研读和学习。为此,我们打算编写一系列篇幅中等,内容精炼的源码分析文章来引领大家更进一步的走进鸿蒙OS。随着对代码的了解,广大开发者想亲自动手参与的意愿和信心也会随之增强——这也是鸿蒙OS开源的意义所在。

    本篇内容摘要

    本篇以OpenHarmony中ipcamera_hi3518ev300为编译目标,介绍init进程的相关代码。

    写在前面的话

    我们对OpenHarmony的代码进行了一个简单粗略的统计。除去所有的third_party代码(即OpenHarmony使用的第三方开源库),其他剩余的代码中,以.c、.h文件为统计入口,总有效代码行数(不含注释、空行等,统计工具为tSourceCounter)为325627行。其中,归属kernel目录下的总有效代码行数为74150行。整个OpenHarmony中,kernel部分占比为22.8%左右,代码量上占大头的还在于kernel之上的、我们称之为Framework的部分。根据我们在Android系统上多年的摸索和经验,Framework恰恰是Android OS的精髓。所以,以OpenHarmony目前才20多万行的Framework代码量来看,感兴趣的开发者在这块参与共建、献策献力的机会非常大。

    1.  OpenHarmony源码的下载和编译

    先介绍代码的下载和编译。我们研究组用得是ubuntu 19.10的主机环境。

    1.1  源码下载

    按照codechina.csdn官网的源码下载指南:https://codechina.csdn.net/openharmony/docs/-/blob/master/get-code/%E6%BA%90%E7%A0%81%E8%8E%B7%E5%8F%96.md

    我们使用的是第四种方式“获取方式4:从代码仓库获取”。执行这一节中的几个命令,即可得到整个源码仓库。

    1.2  编译源码

    我们选择的编译目标是“Hi3518解决方案”,其编译后的输出目录名为ipcamera_hi3518ev300。ipcamera_hi3518ev300是一个基于海思的ip摄像头设备。相关的介绍文档入口在https://codechina.csdn.net/openharmony/docs/-/blob/master/quick-start/%E6%90%AD%E5%BB%BA%E7%8E%AF%E5%A2%83-2.md

    注意,编译不同的解决方案需要建立对应的编译环境。对hi3518来说,开发者需要按照上述链接里的“搭建环境”来下载和配置。

    一切就绪后,在源码根目录下执行 python build.py。如果不带参数的话,它会提醒你指定编译目标,截图如下:

    图1  python build.py不带参数的执行结果

    这次,我们通过python build.py ipcamera_hi3518ev300即可编译“Hi3518解决方案”。编译耗时10几分钟。

    注意,编译过程中可能出现找不到<valgrind/valgrind.h>的错误。这是因为目前我们下载的代码中没有包含valgrind的头文件。开发者可以手动将/usr/include/valgrind目录拷贝到prebuilts/lite/sysroot/usr/include下即可(仅限Ubuntu平台,需提前安装好valgrind工具)。

    1.3  OpenHarmony编译相关小知识介绍

    OpenHarmony源码编译系统使用了google开发的gn工具以及ninjia。这二者结合起来比传统的makefile编译系要高效,尤其适合大系统的并行编译。对开发者而言,如果要参与OpenHarmony的开发,需要对gn的语法有些了解。本文仅做一些最基本的介绍:

    1. 使用gn工具的话,开发者将编译规则写在名为BUILD.gn文件中。和Makefile一样,gn文件有自己的语法规则,属于领域语言(Domain Specific Language,DSL)。gn语法不难,但编译规则本身有很多内容,所以一下子要掌握全部内容也不容易。
    2. gn支持自定义模板函数,可放在名为.gni的文件中。OpenHarmony中最常见到的gn模板文件为./build/lite/config/component/lite_component.gni。.gn文件中通过import可导入gni模板文件。OpenHarmony定义了lite_component、lite_library等模板函数。
    3. gn中,可执行文件的编译函数入口为exectuable("文件名"),共享库的编译规则函数为shared_library("文件名")。所以,如果要搜索某个文件对应的编译规则,可以先搜索所有的BUILD.gn文件,然后grep executable。以下是我们grep所有的executable的结果截图。

    图2  grep BUILD.gn中executable的结果示意

    通过这种方式,我们能很快定位到比如init对应的代码在什么地方。

    最后,我们再简单介绍下OpenHarmony编译系统中和底层OS有关的一个条件编译控制变量ohos_kernel_type。目前,该变量有四个取值,分别为"liteos_a"、"liteos_m"、"liteos_riscv"和"linux":

    1. "liteos_a"和"linux"经常做为一组进行判断。liteos_a实际对应的是Cortex-A系列,其性能相对较高,可以跑Linux系统。
    2. "liteos_m"和"liteos_riscv"往往是一组的。liteos_m对应的是Cortex-M系列,liteos_riscv是Riscv芯片的表示,二者可能都是针对性能一般,功耗较低的设备。

    ohos_kernel_type的取值由build/lite/product/解决方案名.json文件中的product字段决定。例如,我们选择的ipcamera_hi3518ev300的配置文件内容截图如下,它的kernel字段值为"liteos_a"。

    图3  build/lite/product/ ipcamera_hi3518ev300.json配置文件示意图

     编译完成后,所有编译生成物都在out/ipcamera_hi3518ev300目录下。

    2 init源码精要解析

    init是Linux系统上的第一个应用进程,是其它进程的源头。对ipcamera_hi3518ev300来说,它的编译产物中也有一个init进程。

    在上面提到的out/ipcamera_hi3518ev300目录下,有一个rootfs.tar文件。这个文件里就是设备上根文件系统的内容。打开其中的/rootfs/bin目录,可以看到此次编译的可执行程序如下截图所示:

    图4  out/ipcamera_hi3518ev300/rootfs.tar/bin内容示意

    借助图2里提到的办法,我们可以定位到init对应的代码路径为base/startup/services/init_lite/。其内容如下图所示:

    图5  init_lite源码文件示意图

    main.c是整个init的入口。我们简单看一下它的代码,如下所示。

    图6  init_lite/main.c

    init main函数非常精简,非常符合"lite"轻量简便的风格。当然,也不排除未来init的代码会越来越复杂。我们在AOSP上观察到的情况就是一个例子——AOSP里现在的init的相关代码非常复杂)。

    我们对InitReadCfg比较感兴趣,这个函数内部将读取/etc/init.cfg文件。这个文件在图4中提到的rootfs.tar中可以找到,下图是其内容的示意:

    图7  rootfs.tar/etc/init.cfg

    init.cfg本质上是一个json格式的文件。它包括一个名为"jobs"的数组和一个名为"services"的数组。

    1. 对"jobs"来说:内部分别包含"pre-init"、"init"和"post-init"三个元素。从上面的截图中可以看出,这三个元素对应的就是设置挂载一些设备、设置好路径,启动服务等工作。
    2. 对"services"来说:它包含一组服务的定义。所谓的服务,就是系统里的关键进程。可以猜测到,init将根据service的配置来启动对应的服务程序,并设置它的uid、gid、进程优先级和权限等。

    如果开发者对Android系统有一定了解的话,会发现OpenHarmony和AOSP在init的工作流程上有着相似的设计思路。不过,对OpenHarmony目标设备来说,使用json格式无疑是比较简单且方便的。

    最后,我们再看一下init的另外一个重要职能——服务进程状况监控。init.cfg中的那些服务属于系统关键进程。运行过程中如果它们出现异常导致进程退出,需要有个办法将它们重新启动以保证业务连续性。

    这个功能的实现就是利用Linux系统的SIGCHILD信号。init在SignalInitModule中监听了该信号并设置了对应的信号处理函数——SigHandler。SigHandler函数的具体处理过程则比此处说得要更复杂一点。现在,这部分内容就留给读者们自行探索了!!

    展开全文
  • WPF优秀开源代码合集

    千次下载 热门讨论 2013-01-27 23:14:16
    WPF优秀开源代码合集
  • 卫星导航开源代码

    千次阅读 2017-09-21 17:24:58
    开源代码

    RTKlib


    GPSTk


    GMAT:航天器轨道

    General Mission Analysis Tool (GMAT)User Guide: http://gmat.sourceforge.net/doc/R2012a/help-letter.pdf


    GMAT is a space trajectory optimization, navigation, and mission analysis system developed by NASA and private industry in the spirit of the NASA Vision. It is a collaboratively developed, open-source tool written to enable the development of new mission concepts andto improve current missions.

    展开全文
  • 【流浪地球】春节十二响程序开源代码

    万次阅读 多人点赞 2019-02-20 17:42:08
    ) 代码和程序在我的github: 流浪地球-春节十二响开源代码 ,下载前记得star哦。最后在此提示您:博文千万条,版权第一条。转载不规范,博主两行泪! 部分代码如下: 代码实现效果如下: >>>关于作者 CSDN 博客...
  • 国密开源代码

    千次阅读 2018-01-19 14:04:35
    c/c++ 国密开源工程http://gmssl.org/java 国密开源代码 https://github.com/gotoworld/hsd-cipher-sm
  • 开源代码的文献

    千次阅读 2016-11-21 16:52:55
    目标检测开源代码汇总 跟踪算法开源代码汇总 人脸检测识别代码汇总 人群分析、人群计数 开源代码文献及数据库 语义分割+视频分割 开源代码文献集合 网络优化加速开源代码汇总 计算机视觉&amp;...
  • 高通android开源代码下载

    万次阅读 2017-06-06 15:05:46
    高通android开源代码下载 开源网站https://www.codeaurora.org/projects/all-active-projects/android-msm,选择wiki,在Wiki页面中查找BranchRelease章节,就可找到代码下载方法。我们要下载Release分支的代码, ...
  • 高通开源代码下载

    千次阅读 2017-05-25 23:47:32
    下载高通开源代码
  • Java报表系统,通过页面选择数据源,配置相应的维度等自动展示出报表 有没有类似的开源代码参考?
  • 69 开源代码网站

    千次阅读 2019-06-13 17:04:00
    0 引言 造轮子之前先看看有没有轮子已经存在,...本文列举了一些常用的开源代码网站,大家可以参考一下。 1 介绍开源代码网站的帖子 网友贡献。 https://blog.csdn.net/yjreset/article/details/79081404 ...
  • 为什么要开源代码

    千次阅读 2019-06-15 09:34:53
    下面说一说我对开源代码意义的理解。 首先,简单说一下当前对开源代码意义描述较多的一些观点: 1)实现软件“共产主义”,借鉴开源代码,仅编写与自己应用紧密相关的代码,即可达成目标;或者是集成当前多种...
  • 企业开源指南:开源代码的使用

    千次阅读 2019-05-29 10:05:37
    开源项目办公室最重要的责任之一,是要在整合开源代码与专有的、第三方的源代码到商业产品中时,确保您的组织符合其法定义务。作者/来源:Todo最大限度优化组织中运行开源计划或...
  • VDS开源代码下载

    千次阅读 2019-04-25 15:35:46
    VDS开源代码 下载地址:https://u19985279.pipipan.com/fs/19985279-368257802
  • 开源代码库整理

    千次阅读 2019-03-12 13:50:49
    开源代码库整理 可以把下面的文本,保存成shell脚本,运行下载。 #!/bin/bash c\c++ 代码库 mkdir cpp cd cpp echo c c++ 代码库 pwd ini配置文件解析 git clone ...
  • 开源代码阅读小工具

    2020-03-08 08:33:31
    开源代码阅读小工具 今天分享两款还不错的开源代码阅读工具:Octotree和GitCodeTree 首先你要有谷歌浏览器,在扩展程序--打开 Chrome 网上应用店--下载即可使用 1、Octotree github查看项目时,不用挨个点开查看...
  • 请问一下怎样查看下载的开源代码版本是哪个版本,从BUILD-ID 里能看到吗?如果能,请问怎么看呢?感觉看不太懂,编译过程中出现问题,需要确认一下开源代码版本,谢谢各位了。
  • Docker - 开源代码检查工具 Sonarqube

    千次阅读 2019-07-13 18:45:50
    文章目录Docker - 开源代码检查工具 Sonarqube1、拉取镜像2、以默认方式运行镜像3、高级配置方式运行镜像4、sonarqube 文档5、访问管理页面6、登录管理界面 Docker - 开源代码检查工具 Sonarqube 1、拉取镜像 开始...
  • 查找论文及其开源代码

    千次阅读 2020-08-16 16:11:50
    哇塞发现了一个宝藏网站,可以用来查找各大论文及其开源代码 网址:https://paperswithcode.com/ 打开之后界面是这样的,输入论文关键词搜索即可。
  • 感谢github上大佬们开源,开源代码整理如下: (1)PyTorch实现1:https://github.com/xiaolai-sqlai/mobilenetv3 (2)PyTorch实现2:https://github.com/kuan-wang/pytorch-mobilenet-v3 (3)PyTorch实现...
  • WWDC2014开源代码

    千次阅读 2014-06-03 09:08:45
    WWDC2014开源代码
  • 蒙OS开源代码精要解读之—— 系统服务框架子系统(服务启动) 作者介绍: 中科创达OpenHarmony研究组 说明: 中科创达OpenHarmony研究组第一时间对https://codechina.csdn.net/openharmony上开源的代码进行了详尽...
  • 区块链开源代码什么意思 在从事开源工作的10多年中,我参与了一些具有创新思想的小型项目,这些创意后来发展成为具有牢固社区的大型项目。 我还见证了功能失调的社区如何从项目中汲取能量。 我最近还通过编写项目...
  • 开源代码下载路径

    千次阅读 2013-11-21 17:49:21
    开一个贴记录下开源代码下载路径: 一. codeauraro 代码下载路径: https://www.codeaurora.org/xwiki/bin/QAEP/ 高通各平台开源部分下载路径   二. CM 代码路径 CyanogenMod开源代码包括...
  • CyanogenMod开源代码

    千次阅读 2012-06-19 22:30:34
    CyanogenMod开源代码包括Android和kernel代码,包含Android官方分支和CM分支及Kernel的HTC、Samsung等分支。 网站为:https://github.com/CyanogenMod  1.Android代码下载 repo init -u git://github....
  • 如何阅读和学习开源代码

    千次阅读 2017-10-05 11:56:13
    如何阅读和学习开源代码 通过阅读开源代码,可以学习其中的框架和模式、代码技巧、算法等。但是经常有些人拿到开源代码以后不知道如何下手,这里分享一下我的一些经验。 1.拿到代码以后编译...
  • https://www.jianshu.com/p/0ff8c3b2f59f,开始写代码了,对于一个对小程序了解程度半生不熟的人来说无从下手,看视频吧又太浪费时间了,那么只要有一定的前端基础,再结合一些别人的开源代码,很快就能开发出自己的...
  • 本文来自作者 李峰 在 GitChat 上分享 「利用开源代码和读相关论文来提高写代码能力」,「阅读原文」查看交流实录。「文末高能」编辑 | 哈比越来越多的软件开源以及搜索引擎带来的便利,大大提高了工程开发效率...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 146,713
精华内容 58,685
关键字:

开源代码