【阅读推荐】系列文章合集(第二辑)
系列文章清单列表(一)
系列文章清单列表(三)
动手学深度学习 https://cloud.tencent.com/developer/inventory/1621"
Spring框架参考手册 https://cloud.tencent.com/developer/inventory/1622
使用ADMT和PES实现window AD账户跨域迁移 https://cloud.tencent.com/developer/inventory/1623
Ldap3 库使用方法 https://cloud.tencent.com/developer/inventory/1625
机器学习之交叉验证、集成学习 https://cloud.tencent.com/developer/inventory/1626
CSS魔法堂 https://cloud.tencent.com/developer/inventory/1627"
机器学习算法之回归、向量机知识整理 https://cloud.tencent.com/developer/inventory/1628
sqli-labs练习(第一到六关) https://cloud.tencent.com/developer/inventory/1629
自学sql注入 https://cloud.tencent.com/developer/inventory/1630
JavaScript 基础知识笔记总结 https://cloud.tencent.com/developer/inventory/1631
网络编程-一个简单的echo程序 https://cloud.tencent.com/developer/inventory/1632
Linux的命令 https://cloud.tencent.com/developer/inventory/1633"
GDB调试指南 https://cloud.tencent.com/developer/inventory/1634
python高级特性迭代、生成器、迭代器 https://cloud.tencent.com/developer/inventory/1636
Python Web学习笔记 https://cloud.tencent.com/developer/inventory/1661
Glide源码解析 https://cloud.tencent.com/developer/inventory/1663
Tinker源码分析 https://cloud.tencent.com/developer/inventory/1664
ARouter源码解析 https://cloud.tencent.com/developer/inventory/1666
Android开发之那些好用的数据结构与API https://cloud.tencent.com/developer/inventory/1668
Android开发-动画 https://cloud.tencent.com/developer/inventory/1669
Android开发之ViewPager https://cloud.tencent.com/developer/inventory/1670
Android开发之Fragment https://cloud.tencent.com/developer/inventory/1671
《Learning Scrapy》(中文版) https://cloud.tencent.com/developer/inventory/1679
Python模拟登陆 —— 征服验证码 https://cloud.tencent.com/developer/inventory/1680
《利用Python进行数据分析·第2版》 https://cloud.tencent.com/developer/inventory/1681
《数据科学家访谈录》 https://cloud.tencent.com/developer/inventory/1683
《Scikit-Learn与TensorFlow机器学习实用指南》 https://cloud.tencent.com/developer/inventory/1684
《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》 https://cloud.tencent.com/developer/inventory/1685
回溯算法(java版) https://cloud.tencent.com/developer/inventory/1686
Docker下实战zabbix三部曲 https://cloud.tencent.com/developer/inventory/1689
手写实现SpringMVC https://cloud.tencent.com/developer/inventory/1690
Spring源码学习 https://cloud.tencent.com/developer/inventory/1692
商业数据分析案例 https://cloud.tencent.com/developer/inventory/1696
Excel数据分析案例 https://cloud.tencent.com/developer/inventory/1698
Improving Deep Neural Networks学习笔记 https://cloud.tencent.com/developer/inventory/1723
Elasticsearch系列 https://cloud.tencent.com/developer/inventory/1724
JavaScript系列 https://cloud.tencent.com/developer/inventory/1725
游戏人工智能 读书笔记 https://cloud.tencent.com/developer/inventory/1726
Webkit底层原理 https://cloud.tencent.com/developer/inventory/1728
JavaScript测试教程 https://cloud.tencent.com/developer/inventory/1729
面向 JavaScript 开发人员的 ECMAScript 6 指南 https://cloud.tencent.com/developer/inventory/1730
React-Native入门指南 https://cloud.tencent.com/developer/inventory/1731
前端开发面试题答案合集 https://cloud.tencent.com/developer/inventory/1732
JavaScript 数据结构 https://cloud.tencent.com/developer/inventory/1733
每日面试题推送及讲解小合集 https://cloud.tencent.com/developer/inventory/1735
Java设计模式合集 https://cloud.tencent.com/developer/inventory/1736
重构-代码整洁之道TypeScript版 https://cloud.tencent.com/developer/inventory/1737
CodeForces小合集 https://cloud.tencent.com/developer/inventory/1738
Leetcode小合集 https://cloud.tencent.com/developer/inventory/1739
Leetcode小合集 https://cloud.tencent.com/developer/inventory/1742
动手学深度学习系列 https://cloud.tencent.com/developer/inventory/1743
浅谈xss——跨站脚本攻击 https://cloud.tencent.com/developer/inventory/1746
GitLabCI系列之流水线语法 https://cloud.tencent.com/developer/inventory/1747
SSH快速进阶 https://cloud.tencent.com/developer/inventory/1748
ASP.NET Core 3.0系列 https://cloud.tencent.com/developer/inventory/1749
CentOS 7系列 https://cloud.tencent.com/developer/inventory/1750
ASP.NET Core的身份认证框架IdentityServer4 https://cloud.tencent.com/developer/inventory/1752
Android微信篇 https://cloud.tencent.com/developer/inventory/1753
SSH框架之旅-spring https://cloud.tencent.com/developer/inventory/1754
从后端到前端之Vue https://cloud.tencent.com/developer/inventory/1755
【自然框架】元数据的数据库结构的详细说明和示例 https://cloud.tencent.com/developer/inventory/1756
分页解决方案 之 QuickPager的使用方法 https://cloud.tencent.com/developer/inventory/1758
SSH框架之旅-hibernate https://cloud.tencent.com/developer/inventory/1759
QuickPager ASP.NET2分页控件 https://cloud.tencent.com/developer/inventory/1760
【自然框架】之通用权限 https://cloud.tencent.com/developer/inventory/1762
Velocity魔法堂 https://cloud.tencent.com/developer/inventory/1763
网页优化 https://cloud.tencent.com/developer/inventory/1764
Bootstrap源码分析 https://cloud.tencent.com/developer/inventory/1766
从PowerVM,KVM到Docker:存储池的配置与调优 https://cloud.tencent.com/developer/inventory/1768
Maven学习笔记 https://cloud.tencent.com/developer/inventory/1769
Linux养成计划 https://cloud.tencent.com/developer/inventory/1770
Asp.Net Mvc3.0 https://cloud.tencent.com/developer/inventory/1772
hbase集群安装 https://cloud.tencent.com/developer/inventory/1774
Knockout.Js官网学习 https://cloud.tencent.com/developer/inventory/1776
ExtJs篇 https://cloud.tencent.com/developer/inventory/1778
ExtJs系列 https://cloud.tencent.com/developer/inventory/1782
菜菜从零学习WCF https://cloud.tencent.com/developer/inventory/1797
一步一步学Linq to sql https://cloud.tencent.com/developer/inventory/1798
数据库的一些注入技巧 https://cloud.tencent.com/developer/inventory/1800
Kafka分布式消息系统 https://cloud.tencent.com/developer/inventory/1809
tcplayer 源码改造第二弹 https://cloud.tencent.com/developer/inventory/1810
JS小合集 https://cloud.tencent.com/developer/inventory/1811
Entity Framework https://cloud.tencent.com/developer/inventory/1812
JavaScript学习 https://cloud.tencent.com/developer/inventory/1814
持续集成 &代码质量平台 https://cloud.tencent.com/developer/inventory/1815
c++中两个类互相引用的问题 https://cloud.tencent.com/developer/inventory/1816
每日前端夜话 https://cloud.tencent.com/developer/inventory/1817
Cocos Creator!实战 https://cloud.tencent.com/developer/inventory/1818
终极 shell 脚本 快速入门指南 https://cloud.tencent.com/developer/inventory/1820
JavaScript 正则表达式( https://cloud.tencent.com/developer/inventory/1821
Spring Boot 2.x https://cloud.tencent.com/developer/inventory/1825
TypeScript 设计模式 https://cloud.tencent.com/developer/inventory/1826
TypeScript 类型 https://cloud.tencent.com/developer/inventory/1827
Sequelize 系列教程 https://cloud.tencent.com/developer/inventory/1829
EMR入门学习 https://cloud.tencent.com/developer/inventory/1830
EMR入门学习(二) https://cloud.tencent.com/developer/inventory/1831
Spring Security 实战干货 https://cloud.tencent.com/developer/inventory/1833"
Vivado综合设置选项分析 https://cloud.tencent.com/developer/inventory/1834"
Vivado综合设置选项分析(二) https://cloud.tencent.com/developer/inventory/1835"
Java设计模式 https://cloud.tencent.com/developer/inventory/1836
iOS开发-OpenGL ES入门教程 https://cloud.tencent.com/developer/inventory/1931
iOS开发-OpenGLES进阶教程 https://cloud.tencent.com/developer/inventory/1932
iOS开发笔记 https://cloud.tencent.com/developer/inventory/1933
程序员进阶之算法练习系列1 https://cloud.tencent.com/developer/inventory/1935
程序员进阶之算法练习系列2 https://cloud.tencent.com/developer/inventory/1940
GPUImage详细解析 https://cloud.tencent.com/developer/inventory/1948
Git命令集 https://cloud.tencent.com/developer/inventory/1949
Bootstrap响应式前端框架笔记 https://cloud.tencent.com/developer/inventory/1951
iOS开发CoreGraphics核心图形框架系列 https://cloud.tencent.com/developer/inventory/1952
iOS文本布局探讨之术 https://cloud.tencent.com/developer/inventory/1953
Android开发 https://cloud.tencent.com/developer/inventory/1954
分布式系统的那些事儿 https://cloud.tencent.com/developer/inventory/1955
iOS开发CoreAnimation解读 https://cloud.tencent.com/developer/inventory/1956
Android移动开发案例教程 https://cloud.tencent.com/developer/inventory/1957
iOS8新特性扩展(Extension)应用系列 https://cloud.tencent.com/developer/inventory/1958
时间管理笔记 https://cloud.tencent.com/developer/inventory/1959
spring boot 配置属性大全 https://cloud.tencent.com/developer/inventory/1960
基于Docker的持续集成方案 https://cloud.tencent.com/developer/inventory/1961
AppleWatch开发入门系列 https://cloud.tencent.com/developer/inventory/1962
安装和配置Hadoop集群 https://cloud.tencent.com/developer/inventory/1963
.Net中的反射 https://cloud.tencent.com/developer/inventory/1964
Qt入门之基础篇 https://cloud.tencent.com/developer/inventory/1965
iOS网络编程系列 https://cloud.tencent.com/developer/inventory/1966
Android必知必会 https://cloud.tencent.com/developer/inventory/1967
Elasticsearch系列 https://cloud.tencent.com/developer/inventory/1969
iOS流布局UICollectionView系列 https://cloud.tencent.com/developer/inventory/1970
iOS开发UINavigation系列 https://cloud.tencent.com/developer/inventory/1971
.Net Remoting https://cloud.tencent.com/developer/inventory/1972
iOS中CoreData数据管理系列 https://cloud.tencent.com/developer/inventory/1973
Swift3.0带来的变化汇总系列 https://cloud.tencent.com/developer/inventory/1974
Elasticsearch系列 https://cloud.tencent.com/developer/inventory/1975
ubiome类似数据dada2处理探索 https://cloud.tencent.com/developer/inventory/1976
JavaScript基础系列 https://cloud.tencent.com/developer/inventory/1977
宏转录组学习笔记 https://cloud.tencent.com/developer/inventory/1978
JQuery笔记系列 https://cloud.tencent.com/developer/inventory/1980
前端-标签之系列 https://cloud.tencent.com/developer/inventory/1981
《Objective-C-高级编程》系列 https://cloud.tencent.com/developer/inventory/1982
面向对象设计的设计模式 https://cloud.tencent.com/developer/inventory/1983
java反射机制入门系列 https://cloud.tencent.com/developer/inventory/1985
cocos2d-x学习笔记系列 https://cloud.tencent.com/developer/inventory/1986
JVM系列 https://cloud.tencent.com/developer/inventory/1987
qiime2-2019.1更新学习笔记 https://cloud.tencent.com/developer/inventory/1988
Android新手之旅 https://cloud.tencent.com/developer/inventory/1989
Spring Boot系列 https://cloud.tencent.com/developer/inventory/1990
WEB 小案例 -- 网上书城 https://cloud.tencent.com/developer/inventory/1991
github学习系列 https://cloud.tencent.com/developer/inventory/1992
深度学习之 TensorFlow 系列 https://cloud.tencent.com/developer/inventory/1993
笔记 | Linux系列 https://cloud.tencent.com/developer/inventory/1994
mybatis 学习笔记系列 https://cloud.tencent.com/developer/inventory/1995
CC2530基础实验之四通道模拟量值采集 https://cloud.tencent.com/developer/inventory/1997
如何定位Obj-C野指针随机Crash https://cloud.tencent.com/developer/inventory/2000
JavaScript设计模式 https://cloud.tencent.com/developer/inventory/2001
Android高频面试专题 https://cloud.tencent.com/developer/inventory/2006
Android高频面试专题 - 基础篇 https://cloud.tencent.com/developer/inventory/2007
Redis-集群配置 https://cloud.tencent.com/developer/inventory/2008
Linux后台开发常用工具 https://cloud.tencent.com/developer/inventory/2009
R语言进阶 https://cloud.tencent.com/developer/inventory/2010
Docker实战 https://cloud.tencent.com/developer/inventory/2011
R语言数据处理 https://cloud.tencent.com/developer/inventory/2013
Spring Bean容器 https://cloud.tencent.com/developer/inventory/2014
设计模式系列 https://cloud.tencent.com/developer/inventory/2015
php基础知识 https://cloud.tencent.com/developer/inventory/2017
leetcode算法 https://cloud.tencent.com/developer/inventory/2019
垃圾回收相关概念 https://cloud.tencent.com/developer/inventory/2020
Vivado约束学习 https://cloud.tencent.com/developer/inventory/2021
三个算法题介绍与解析 https://cloud.tencent.com/developer/inventory/2022
机器学习笔记 https://cloud.tencent.com/developer/inventory/2023
JavaWeb学习 https://cloud.tencent.com/developer/inventory/2024
ElasticSearch全文检索引擎 https://cloud.tencent.com/developer/inventory/2025
C++经典算 https://cloud.tencent.com/developer/inventory/2027
Elasticsearch的使用 https://cloud.tencent.com/developer/inventory/2028
快速学习-ElasticJob https://cloud.tencent.com/developer/inventory/2029
微服务项目-日记 https://cloud.tencent.com/developer/inventory/2030
快速学习-Jenkins CLI https://cloud.tencent.com/developer/inventory/2031
spring框架学习 https://cloud.tencent.com/developer/inventory/2032
Java基础 https://cloud.tencent.com/developer/inventory/2033
算法和数据结构 https://cloud.tencent.com/developer/inventory/2034
数据库PostrageSQL https://cloud.tencent.com/developer/inventory/2036
数据库PostgreSQ(二) https://cloud.tencent.com/developer/inventory/2037
Skywalking学习 https://cloud.tencent.com/developer/inventory/2039
速读原著-UnixLinux基础 https://cloud.tencent.com/developer/inventory/2040
如何使用sentinel https://cloud.tencent.com/developer/inventory/2042
快速学习-以太坊 https://cloud.tencent.com/developer/inventory/2043
快速学习-以太坊(二) https://cloud.tencent.com/developer/inventory/2046
前端基础-CSS https://cloud.tencent.com/developer/inventory/2047
快速学习-Spring Data JPA https://cloud.tencent.com/developer/inventory/2048
快速学习-Linux https://cloud.tencent.com/developer/inventory/2049"
Kingfisher源码阅读 https://cloud.tencent.com/developer/inventory/2050
Java开发环境系列:全文搜索引擎elasticsearch https://cloud.tencent.com/developer/inventory/2051
ASP.NET那点不为人知的事 https://cloud.tencent.com/developer/inventory/2052
java设计模式 https://cloud.tencent.com/developer/inventory/2053
java微信公众号接入 https://cloud.tencent.com/developer/inventory/2054
java设计模式 https://cloud.tencent.com/developer/inventory/2055
Spring Boot 2.X https://cloud.tencent.com/developer/inventory/2056
Netty 系列 https://cloud.tencent.com/developer/inventory/2058
Spring Boot 2.X https://cloud.tencent.com/developer/inventory/2059
JVM系列 https://cloud.tencent.com/developer/inventory/2060
Spring Boot 2.X系列 https://cloud.tencent.com/developer/inventory/2061
Docker 系列 https://cloud.tencent.com/developer/inventory/2062
多线程编程学习 https://cloud.tencent.com/developer/inventory/2063
Redis学习 https://cloud.tencent.com/developer/inventory/2064
MongoDB系列 https://cloud.tencent.com/developer/inventory/2065
Linux 学习记录 https://cloud.tencent.com/developer/inventory/2066
AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习 https://cloud.tencent.com/developer/inventory/2067
数据库-基本操作 https://cloud.tencent.com/developer/inventory/2068"
.NET快速开发实践 https://cloud.tencent.com/developer/inventory/2069
数据库MySQL https://cloud.tencent.com/developer/inventory/2070
前端基础-Vue.js https://cloud.tencent.com/developer/inventory/2071
前端基础-ECMAScript https://cloud.tencent.com/developer/inventory/2072"
一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇 https://cloud.tencent.com/developer/inventory/2076
一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-UDA https://cloud.tencent.com/developer/inventory/2077
前端基础-Ajax https://cloud.tencent.com/developer/inventory/2078
前端基础-JQuery https://cloud.tencent.com/developer/inventory/2079
一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM https://cloud.tencent.com/developer/inventory/2080
Basemap系列教程 https://cloud.tencent.com/developer/inventory/2081
PHP-文件上传 https://cloud.tencent.com/developer/inventory/2082
Basemap工具函数 https://cloud.tencent.com/developer/inventory/2083
快速学习-Shell https://cloud.tencent.com/developer/inventory/2084
快速学习-Zookeeper https://cloud.tencent.com/developer/inventory/2085
连仕彤博客Python笔记 https://cloud.tencent.com/developer/inventory/2087
xarray | 数据结构 https://cloud.tencent.com/developer/inventory/2088
机器学习的敲门砖:kNN算法 https://cloud.tencent.com/developer/inventory/2089
七天数据埋点之旅 https://cloud.tencent.com/developer/inventory/2091
快速学习-Druid https://cloud.tencent.com/developer/inventory/2097
快速学习-Presto https://cloud.tencent.com/developer/inventory/2099
快速学习-Kylin https://cloud.tencent.com/developer/inventory/2100"
快速学习-Python https://cloud.tencent.com/developer/inventory/2104"
Veeam Backup & Replication https://cloud.tencent.com/developer/inventory/2105
eShopOnContainers 知多少 https://cloud.tencent.com/developer/inventory/2106
2019 MySQL8 24小时快速入门 https://cloud.tencent.com/developer/inventory/2107
Asp.net mvc 知多少 https://cloud.tencent.com/developer/inventory/2108
1 小时 SQL 极速入门 https://cloud.tencent.com/developer/inventory/2109
Spark 高难度对话 SQL Server https://cloud.tencent.com/developer/inventory/2110
快速学习-电影推荐系统设计( https://cloud.tencent.com/developer/inventory/2111
jQuery笔记 https://cloud.tencent.com/developer/inventory/2112
快速学习-机器学习 https://cloud.tencent.com/developer/inventory/2113
速读原著-TCP/IP https://cloud.tencent.com/developer/inventory/2114
速读原著-TCP/IP(二) https://cloud.tencent.com/developer/inventory/2115
速读原著-TCP/IP(三) https://cloud.tencent.com/developer/inventory/2116
速读原著-TCP/IP(四) https://cloud.tencent.com/developer/inventory/2117
速读原著-TCP/IP(五) https://cloud.tencent.com/developer/inventory/2118
UNIX环境高级编程笔记之线程 https://cloud.tencent.com/developer/inventory/2119
速读原著-TCP/IP(六) https://cloud.tencent.com/developer/inventory/2120
速读原著-TCP/IP(七) https://cloud.tencent.com/developer/inventory/2121
速读原著-TCP/IP(八) https://cloud.tencent.com/developer/inventory/2123
速读原著-TCP/IP(九) https://cloud.tencent.com/developer/inventory/2124
速读原著-TCP/IP(十) https://cloud.tencent.com/developer/inventory/2125
速读原著-TCP/IP(十一) https://cloud.tencent.com/developer/inventory/2127
经典排序系列 https://cloud.tencent.com/developer/inventory/2128
速读原著-TCP/IP(十二) https://cloud.tencent.com/developer/inventory/2129
python函数式编程 https://cloud.tencent.com/developer/inventory/2130
速读原著-TCP/IP(十三) https://cloud.tencent.com/developer/inventory/2131
速读原著-TCP/IP(十四) https://cloud.tencent.com/developer/inventory/2132
Intel OpenCL 之 Pipeline https://cloud.tencent.com/developer/inventory/2133
快速学习-HBase https://cloud.tencent.com/developer/inventory/2134
神经网络低比特量化 https://cloud.tencent.com/developer/inventory/2135
神经网络架构搜索——可微分搜索 https://cloud.tencent.com/developer/inventory/2136
快速学习-Hive https://cloud.tencent.com/developer/inventory/2137
神经网络架构搜索——可微分搜索与二值可微分搜索 https://cloud.tencent.com/developer/inventory/2138
一看就懂的Tensorflow实战 https://cloud.tencent.com/developer/inventory/2139
快速学习-Kafka https://cloud.tencent.com/developer/inventory/2140
一看就懂的Tensorflow实战之模型与TensorBoard https://cloud.tencent.com/developer/inventory/2141
基于Flask开发企业级REST API应用(一) https://cloud.tencent.com/developer/inventory/2142
Python数据分析之Seaborn与Pandas https://cloud.tencent.com/developer/inventory/2143
Python数据分析之matplotlib https://cloud.tencent.com/developer/inventory/2144
Git最全系列教程 https://cloud.tencent.com/developer/inventory/2145
Python数据分析之基础篇与Numpy https://cloud.tencent.com/developer/inventory/2146
MySQL数据库 https://cloud.tencent.com/developer/inventory/2147
快速学习-skywalking https://cloud.tencent.com/developer/inventory/2148
Java设计模式系列 https://cloud.tencent.com/developer/inventory/2149
快速学习-Oozie https://cloud.tencent.com/developer/inventory/2150
matlab学习笔记 https://cloud.tencent.com/developer/inventory/2204
matlab学习笔记2 https://cloud.tencent.com/developer/inventory/2205
Docker入门学习 https://cloud.tencent.com/developer/inventory/2206
PHP学习与使用技巧 https://cloud.tencent.com/developer/inventory/2207
算法和数据结构之平衡树 https://cloud.tencent.com/developer/inventory/2216
算法和数据结构之排序 https://cloud.tencent.com/developer/inventory/2217
教您玩转linux https://cloud.tencent.com/developer/inventory/2218
React 基础 https://cloud.tencent.com/developer/inventory/2220
这30个CSS选择器,你必须熟记 https://cloud.tencent.com/developer/inventory/2221
从技术雷达看DevOps的十年 https://cloud.tencent.com/developer/inventory/2227
登录工程系列 https://cloud.tencent.com/developer/inventory/2228
计算机图形学入门学习 https://cloud.tencent.com/developer/inventory/2229
C++Primer笔记 https://cloud.tencent.com/developer/inventory/2230
Java 多线程 https://cloud.tencent.com/developer/inventory/2231
face_recognition中文文档 https://cloud.tencent.com/developer/inventory/2232
练习题 https://cloud.tencent.com/developer/inventory/2233
iptables网络安全服务详细使用 https://cloud.tencent.com/developer/inventory/2234
synchronized工作原理 https://cloud.tencent.com/developer/inventory/2235
KVM 虚拟化技术 https://cloud.tencent.com/developer/inventory/2236
Java多线程 https://cloud.tencent.com/developer/inventory/2237
网络基础系列 https://cloud.tencent.com/developer/inventory/2239
Python学习笔记合集 https://cloud.tencent.com/developer/inventory/2240
python 常用代码段汇总 https://cloud.tencent.com/developer/inventory/2242
打造黑苹果 https://cloud.tencent.com/developer/inventory/2243
vue3.0 Composition API 上手初体验 https://cloud.tencent.com/developer/inventory/2244
【Matlab】表情合成尝试教程 https://cloud.tencent.com/developer/inventory/2245
React + webpack 开发单页面应用简明中文文档教程 https://cloud.tencent.com/developer/inventory/2246
从C++/Java到Python入门 https://cloud.tencent.com/developer/inventory/2247
Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版 https://cloud.tencent.com/developer/inventory/2248
机器学习合集 https://cloud.tencent.com/developer/inventory/2249
Python|张量创建操作 https://cloud.tencent.com/developer/inventory/2250
各种各样的树集合 https://cloud.tencent.com/developer/inventory/2251
Python系列 https://cloud.tencent.com/developer/inventory/2252
LeetCode攀登之旅 https://cloud.tencent.com/developer/inventory/2253
用Unity做个宝石迷阵 https://cloud.tencent.com/developer/inventory/2254
Ques前端组件化体系 https://cloud.tencent.com/developer/inventory/2255
极客算法训练笔记 https://cloud.tencent.com/developer/inventory/2256
Nodejs进阶 https://cloud.tencent.com/developer/inventory/2257
MyBatis相关学习 https://cloud.tencent.com/developer/inventory/2258
重构不完全教程集 https://cloud.tencent.com/developer/inventory/2259
Spring全家桶之SpringBoot https://cloud.tencent.com/developer/inventory/2260
Node.js必须收藏,五大应用性能技巧 https://cloud.tencent.com/developer/inventory/2261
从零开始学web安全 https://cloud.tencent.com/developer/inventory/2262
排序算法学习 https://cloud.tencent.com/developer/inventory/2263
Nodejs进阶 https://cloud.tencent.com/developer/inventory/2264
几种错误异常处理方法 https://cloud.tencent.com/developer/inventory/2265
PHP 数组相关函数 https://cloud.tencent.com/developer/inventory/2266
redis 学习系列 https://cloud.tencent.com/developer/inventory/2267
数据结构与算法 https://cloud.tencent.com/developer/inventory/2268
React-Native https://cloud.tencent.com/developer/inventory/2269
I2C总线架构 https://cloud.tencent.com/developer/inventory/2270
Java面试系列 https://cloud.tencent.com/developer/inventory/2272
每日一算法题 https://cloud.tencent.com/developer/inventory/2273
jQuery学习系列 https://cloud.tencent.com/developer/inventory/2274
计算广告基础入门 https://cloud.tencent.com/developer/inventory/2277
分布式锁 https://cloud.tencent.com/developer/inventory/2279
LeetCode每日一题 https://cloud.tencent.com/developer/inventory/2281
一起学源码-微服务 https://cloud.tencent.com/developer/inventory/2282
Java反射理解系列学习 https://cloud.tencent.com/developer/inventory/2283
网络请求框架OkHttp3全解系列 https://cloud.tencent.com/developer/inventory/2284
Java中常见数据结构 https://cloud.tencent.com/developer/inventory/2285
spring 学习 https://cloud.tencent.com/developer/inventory/2287
VS2008(C#)制作网页Tab标签切换方法 https://cloud.tencent.com/developer/inventory/2288
R语言绘制图案示例 https://cloud.tencent.com/developer/inventory/2289
VS2008(C#)子页嵌套母版页的控件访问方法 https://cloud.tencent.com/developer/inventory/2290
Linux入门学习笔记 https://cloud.tencent.com/developer/inventory/2291
各种基本算法实现小结 https://cloud.tencent.com/developer/inventory/2292
MyBatis学习总结 https://cloud.tencent.com/developer/inventory/2294
Sqlilabs通关笔记 https://cloud.tencent.com/developer/inventory/2295
Upload-labs通关笔记 https://cloud.tencent.com/developer/inventory/2296
DC-靶机渗透实战 https://cloud.tencent.com/developer/inventory/2297
NVH原始数据文件如何读取 https://cloud.tencent.com/developer/inventory/2298
Python面试必刷题系列 https://cloud.tencent.com/developer/inventory/2300
Android 创建与解析XML https://cloud.tencent.com/developer/inventory/2301
Android 音视频开发打怪升级:OpenGL渲染视频画面篇 https://cloud.tencent.com/developer/inventory/2303
Vue3.0 beta源码学习笔记 https://cloud.tencent.com/developer/inventory/2304
基于TypeScript封装Axios笔记 https://cloud.tencent.com/developer/inventory/2305
TypeScript手记 https://cloud.tencent.com/developer/inventory/2306
Android 滑动效果入门篇 https://cloud.tencent.com/developer/inventory/2307
RabbitMQ入门系列 https://cloud.tencent.com/developer/inventory/2308
Android Service 服务 https://cloud.tencent.com/developer/inventory/2309
Android 音视频开发打怪升级:音视频硬解码篇 https://cloud.tencent.com/developer/inventory/2310
JavaScript强化教程 https://cloud.tencent.com/developer/inventory/2313
caffe详解之softmax层、Dropout层、mnist手写体识别 https://cloud.tencent.com/developer/inventory/2314
深入理解Python面向对象学习 https://cloud.tencent.com/developer/inventory/2315
Zepto源码分析 https://cloud.tencent.com/developer/inventory/2316
深入理解Kafka必知必会系列 https://cloud.tencent.com/developer/inventory/2317
caffe详解之层与损失函数 https://cloud.tencent.com/developer/inventory/2318
Java程序员学习Go指南 https://cloud.tencent.com/developer/inventory/2320
计算机组成原理学习 https://cloud.tencent.com/developer/inventory/2321
SDAccel矩阵乘法优化 https://cloud.tencent.com/developer/inventory/2322
SOFAJRaft源码分析 https://cloud.tencent.com/developer/inventory/2323
Sentinel源码分析系列 https://cloud.tencent.com/developer/inventory/2326
Django 学习笔记之模板等基础内容 https://cloud.tencent.com/developer/inventory/2327
Python Threading 学习笔记之添加线程、join、队列、GIL、锁 https://cloud.tencent.com/developer/inventory/2328
Java IO学习笔记系列 https://cloud.tencent.com/developer/inventory/2329
SQL操作系列 https://cloud.tencent.com/developer/inventory/2330
一起学源码-微服务 https://cloud.tencent.com/developer/inventory/2331
MySQL 8.0新特性 https://cloud.tencent.com/developer/inventory/2332
宝宝都能学会的python编程教程 https://cloud.tencent.com/developer/inventory/2333
jQuery中的常用内容总结 https://cloud.tencent.com/developer/inventory/2334
浅谈go&java差异 https://cloud.tencent.com/developer/inventory/2335
Spring_总结 https://cloud.tencent.com/developer/inventory/2336
Python3学习笔记基础知识整理汇总(一) https://cloud.tencent.com/developer/inventory/2337
搭建简易的物联网服务端和客户端 https://cloud.tencent.com/developer/inventory/2338
Python学习笔记系列 https://cloud.tencent.com/developer/inventory/2339
Python3学习笔记基础知识汇总(二) https://cloud.tencent.com/developer/inventory/2340
菜鸟SpringCloud实战入门系列 https://cloud.tencent.com/developer/inventory/2341
mybatis获取update的id https://cloud.tencent.com/developer/inventory/2343
Python爬虫入门教程(第一部分) https://cloud.tencent.com/developer/inventory/2344
Python爬虫入门教程(第二部分) https://cloud.tencent.com/developer/inventory/2346
Python爬虫入门教程(第三部分) https://cloud.tencent.com/developer/inventory/2347
Python爬虫入门教程(第四部分) https://cloud.tencent.com/developer/inventory/2348
从Android到React Native开发系列 https://cloud.tencent.com/developer/inventory/2349
Python爬虫入门教程(第五部分) https://cloud.tencent.com/developer/inventory/2351
Python爬虫入门教程(第六部分) https://cloud.tencent.com/developer/inventory/2352
CSS几个竖直与水平居中盒子模型 https://cloud.tencent.com/developer/inventory/2353
Flutter完整开发实战详解 https://cloud.tencent.com/developer/inventory/2354
Python爬虫入门教程(第七部分) https://cloud.tencent.com/developer/inventory/2355
JSON Web Token介绍与工作原理 https://cloud.tencent.com/developer/inventory/2357
SuperNAP数据中心揭秘 https://cloud.tencent.com/developer/inventory/2358
spring 在Thread中注入 https://cloud.tencent.com/developer/inventory/2359
Discourse 如何修改注册用户的头像、密码、限制用户密码长度 https://cloud.tencent.com/developer/inventory/2360
实现一个轻量级RPC框架学习 https://cloud.tencent.com/developer/inventory/2361
深入分析Java反射系列学习 https://cloud.tencent.com/developer/inventory/2362
Quartz系列学习 https://cloud.tencent.com/developer/inventory/2363
Shiro系列 | 《Shiro开发详细教程》 https://cloud.tencent.com/developer/inventory/2364
ActiveMQ入门篇学习 https://cloud.tencent.com/developer/inventory/2365
beego利用casbin进行权限管理系列学习 https://cloud.tencent.com/developer/inventory/2369
ONLYOFFICE历史版本功能的开发技术系列 https://cloud.tencent.com/developer/inventory/2370
golang知识图谱NLP实战 https://cloud.tencent.com/developer/inventory/2371
网站渗透攻防Web篇之SQL注入攻击系列学习 https://cloud.tencent.com/developer/inventory/2372
【图像分割应用】医学图像分割系列 https://cloud.tencent.com/developer/inventory/2373
MessagePack Java Jackson Dataformat之序列化 https://cloud.tencent.com/developer/inventory/2374
Confluence 6、Confluence 7管理文件与图片文件与编辑文件 https://cloud.tencent.com/developer/inventory/2376
Confluence 6 预览、编辑、评论、分享、删除文件 https://cloud.tencent.com/developer/inventory/2377
快速排序 https://cloud.tencent.com/developer/inventory/2380"
快学Scala https://cloud.tencent.com/developer/inventory/2381
Oozie分布式任务的工作流 https://cloud.tencent.com/developer/inventory/2382
Confluence 6之升级 https://cloud.tencent.com/developer/inventory/2384
Confluence 6 PostgreSQL 数据库与JConsole https://cloud.tencent.com/developer/inventory/2386
剑指OFFER一 https://cloud.tencent.com/developer/inventory/2387
剑指OFFER二 https://cloud.tencent.com/developer/inventory/2388
剑指OFFER三 https://cloud.tencent.com/developer/inventory/2389
Confluence 6配置与查看附加文件等汇总 https://cloud.tencent.com/developer/inventory/2390
剑指OFFER四 https://cloud.tencent.com/developer/inventory/2393
Confluence 6 之使用 WebDAV https://cloud.tencent.com/developer/inventory/2394
剑指OFFER五 https://cloud.tencent.com/developer/inventory/2395
Confluence 6 新安装配置数据库字符集编码和问题 https://cloud.tencent.com/developer/inventory/2397
记录安装oracle的那些事 https://cloud.tencent.com/developer/inventory/2398
Confluence 6 MySQL与XML https://cloud.tencent.com/developer/inventory/2399
其他 Confluence 6 的 cookies与MBeans https://cloud.tencent.com/developer/inventory/2402
Java基础 https://cloud.tencent.com/developer/inventory/2403
Confluence 6 通过 SSL 或 HTTPS 运行 https://cloud.tencent.com/developer/inventory/2405
python爬虫从入门到放弃一 https://cloud.tencent.com/developer/inventory/2406
Confluence 6 之使用 Apache https://cloud.tencent.com/developer/inventory/2408
python爬虫从入门到放弃二 https://cloud.tencent.com/developer/inventory/2409
Confluence 6 之Windows以服务方式重启 https://cloud.tencent.com/developer/inventory/2410
python爬虫从入门到放弃三 https://cloud.tencent.com/developer/inventory/2411
Confluence 6 缓存性能与属性和编辑附加文件 https://cloud.tencent.com/developer/inventory/2413
python爬虫从入门到放弃四 https://cloud.tencent.com/developer/inventory/2416
Go从入门到精通 https://cloud.tencent.com/developer/inventory/2417
Vue项目使用Ant Design升级后报错解决办法 https://cloud.tencent.com/developer/inventory/2419
RxJava 1.x 笔记 https://cloud.tencent.com/developer/inventory/2420
Java 集合深入理解一 https://cloud.tencent.com/developer/inventory/2421
Java 集合深入理解二 https://cloud.tencent.com/developer/inventory/2422
search一 https://cloud.tencent.com/developer/inventory/2423
search二 https://cloud.tencent.com/developer/inventory/2424
search三 https://cloud.tencent.com/developer/inventory/2425
快速学习-Linux https://cloud.tencent.com/developer/inventory/2427"
Android RxJava 实战系列 https://cloud.tencent.com/developer/inventory/2428
Java基础 https://cloud.tencent.com/developer/inventory/2429
Java基础(二) https://cloud.tencent.com/developer/inventory/2430
Java基础(三) https://cloud.tencent.com/developer/inventory/2431
Java基础(四) https://cloud.tencent.com/developer/inventory/2432
快速学习Jetty https://cloud.tencent.com/developer/inventory/2433
快速学习Jetty(二) https://cloud.tencent.com/developer/inventory/2434
" 快速学习Docker https://cloud.tencent.com/developer/inventory/2435"
ElasticSearch https://cloud.tencent.com/developer/inventory/2436
Java编程基础阶段笔记 https://cloud.tencent.com/developer/inventory/2437
ElasticSearch(二) https://cloud.tencent.com/developer/inventory/2438
ElasticSearch(三) https://cloud.tencent.com/developer/inventory/2439
Docker 入门系列 https://cloud.tencent.com/developer/inventory/2440
ElasticSearch(四) https://cloud.tencent.com/developer/inventory/2441
ElasticSearch(五) https://cloud.tencent.com/developer/inventory/2442
C++-面向对象( https://cloud.tencent.com/developer/inventory/2443
C++-入门语法( https://cloud.tencent.com/developer/inventory/2444
PHP定时执行任务 https://cloud.tencent.com/developer/inventory/2445
软考分类精讲-软件架构设计 https://cloud.tencent.com/developer/inventory/2446
数据结构与算法 https://cloud.tencent.com/developer/inventory/2447
数据结构与算法(二) https://cloud.tencent.com/developer/inventory/2449
数据结构与算法(三) https://cloud.tencent.com/developer/inventory/2450
Java工具集 https://cloud.tencent.com/developer/inventory/2451
Java工具集(二) https://cloud.tencent.com/developer/inventory/2452
Java工具集(四) https://cloud.tencent.com/developer/inventory/2453
Java工具集(三) https://cloud.tencent.com/developer/inventory/2454
Java工具集(五) https://cloud.tencent.com/developer/inventory/2455
Java工具集(六) https://cloud.tencent.com/developer/inventory/2456
系统架构师 https://cloud.tencent.com/developer/inventory/2457
Day 1-Java-imooc https://cloud.tencent.com/developer/inventory/2458
系统架构师(二) https://cloud.tencent.com/developer/inventory/2460
系统架构师(三) https://cloud.tencent.com/developer/inventory/2461
系统架构师(四) https://cloud.tencent.com/developer/inventory/2462
3分钟快速阅读-《Effective Java》 https://cloud.tencent.com/developer/inventory/2463
ADO.NET入门教程 https://cloud.tencent.com/developer/inventory/2542
Spring Cloud各组件配置总结 https://cloud.tencent.com/developer/inventory/2543
Spring Cloud Edgware新特性系列 https://cloud.tencent.com/developer/inventory/2545
《Algorithms Unlocked》读书笔记 https://cloud.tencent.com/developer/inventory/2546
WebSocket刨根问底系列 https://cloud.tencent.com/developer/inventory/2547
MongoDB文档查询操作 https://cloud.tencent.com/developer/inventory/2548
SpringBoot+WebSocket实现在线聊天 https://cloud.tencent.com/developer/inventory/2550
elasticsearch文档学习 https://cloud.tencent.com/developer/inventory/2551
一天带你入门到放弃vue.js https://cloud.tencent.com/developer/inventory/2552
设计模式 https://cloud.tencent.com/developer/inventory/2553
海量之道系列文章之弱联网优化 https://cloud.tencent.com/developer/inventory/2554
Elasticsearch https://cloud.tencent.com/developer/inventory/2555
为了你们的「部落」,一起来认识这些安全守护者 https://cloud.tencent.com/developer/inventory/2556
机器学习概念总结笔记 https://cloud.tencent.com/developer/inventory/2557
Amazon Aurora 深度探索 https://cloud.tencent.com/developer/inventory/2558
深入浅出 Nodejs https://cloud.tencent.com/developer/inventory/2559
Linux 的进程间通信 https://cloud.tencent.com/developer/inventory/2560
vue 开发常用工具及配置 https://cloud.tencent.com/developer/inventory/2561
AI 每周必读:The Ones https://cloud.tencent.com/developer/inventory/2562
像 google 一样测试系列 https://cloud.tencent.com/developer/inventory/2563
破解 Kotlin 协程 https://cloud.tencent.com/developer/inventory/2564
【译】JavaScript和TypeScript https://cloud.tencent.com/developer/inventory/2565
微服务架构系列 https://cloud.tencent.com/developer/inventory/2566
Quartz.NET 3.0 https://cloud.tencent.com/developer/inventory/2567
Docker 学习应用篇系列 https://cloud.tencent.com/developer/inventory/2568
包学会之浅入浅出Vue.js https://cloud.tencent.com/developer/inventory/2569
Solidity学习系列 https://cloud.tencent.com/developer/inventory/2570
PCA主成分分析 https://cloud.tencent.com/developer/inventory/2571
使用 ASP.NET Web API 构建超媒体 Web API等 https://cloud.tencent.com/developer/inventory/2572
Contact Manager Web API 示例1CRUD 操作 https://cloud.tencent.com/developer/inventory/2573
数据结构学习 https://cloud.tencent.com/developer/inventory/2574
Windows Server AppFabric Caching https://cloud.tencent.com/developer/inventory/2575
Python——爬虫入门学习 https://cloud.tencent.com/developer/inventory/2576
iOS开发学习 https://cloud.tencent.com/developer/inventory/2577
工具 | w3af系列 https://cloud.tencent.com/developer/inventory/2578
Quartz.net官方开发指南 https://cloud.tencent.com/developer/inventory/2579
业务逻辑漏洞探索系列 https://cloud.tencent.com/developer/inventory/2580
ASP.NET MVC 4 https://cloud.tencent.com/developer/inventory/2581
Android RxJava操作符详解 https://cloud.tencent.com/developer/inventory/2582
HTML自适应手机屏 https://cloud.tencent.com/developer/inventory/2583
NVIDIA Jetson OpenCV开发实战教程 https://cloud.tencent.com/developer/inventory/2584
Shiro 集成 Spring https://cloud.tencent.com/developer/inventory/2585
Shiro 集成 Spring系列 https://cloud.tencent.com/developer/inventory/2586
落单的数 https://cloud.tencent.com/developer/inventory/2587
php之laravel学习常见错误 https://cloud.tencent.com/developer/inventory/2588
Day 2-Java https://cloud.tencent.com/developer/inventory/2589
请收好这一份全面 & 详细的Android学习指南 https://cloud.tencent.com/developer/inventory/2590
windows完成端口系列 https://cloud.tencent.com/developer/inventory/2591
漫谈图神经网络 https://cloud.tencent.com/developer/inventory/2592
小程序成微信社交打造智慧零售生态圈的关键环节 https://cloud.tencent.com/developer/inventory/2593
从零实现一款12306刷票软件 https://cloud.tencent.com/developer/inventory/2594
ASP.NET MVC学习笔记 https://cloud.tencent.com/developer/inventory/2595
001 红黑树(二)之 C语言的实现 https://cloud.tencent.com/developer/inventory/2596
F-Stack Q&A https://cloud.tencent.com/developer/inventory/2597
自定义View Draw过程 https://cloud.tencent.com/developer/inventory/2598
10 分钟梳理关系数据库基础知识 https://cloud.tencent.com/developer/inventory/2599
Spring官网阅读系列 https://cloud.tencent.com/developer/inventory/2600
基于云开发开发 Web 应用 https://cloud.tencent.com/developer/inventory/2603
Web大前端时代系列 https://cloud.tencent.com/developer/inventory/2679
SQL Server 深入解析索引存储 https://cloud.tencent.com/developer/inventory/2680
Python3 与 C# 基础语法对比系列学习 https://cloud.tencent.com/developer/inventory/2681
解析微服务架构 https://cloud.tencent.com/developer/inventory/2682
架构漫谈系列 https://cloud.tencent.com/developer/inventory/2683
LoT.UI 前后台通用框架分解系列 https://cloud.tencent.com/developer/inventory/2684
c# 温故而知新: 线程篇 https://cloud.tencent.com/developer/inventory/2685
C# 温故而知新:Stream篇 https://cloud.tencent.com/developer/inventory/2686
Python3 与 C# 并发编程 https://cloud.tencent.com/developer/inventory/2687
关于windows完成端口(IOCP)的一些理解 https://cloud.tencent.com/developer/inventory/2688
机器学习入门基础 https://cloud.tencent.com/developer/inventory/2689
时序数据库 InfluxDB https://cloud.tencent.com/developer/inventory/2697
Java基础——对象、方法、容器、结构 https://cloud.tencent.com/developer/inventory/2700
Java基础——对象、数据、作用域、方法、类 https://cloud.tencent.com/developer/inventory/2701
Java基础——构造器、方法重载、关键字、枚举 https://cloud.tencent.com/developer/inventory/2703
JDBC 处理事务、事务的隔离级别、批量处理 https://cloud.tencent.com/developer/inventory/2705
Java设计模式——设计模式七大设计原则 https://cloud.tencent.com/developer/inventory/2706
Java设计模式——工厂、简单工厂、抽象工厂模式 https://cloud.tencent.com/developer/inventory/2707
上一篇: 洛谷P1236 算24点
推荐阅读
-
【阅读推荐】系列文章合集(第二辑)
-
趣谈留言队列,搞清楚留言队列到底是什么!-说到消息队列,洪觉大概能猜到人们听到消息队列的反应,大致可以分为以下几类人。 第一类人,懵懵懂懂,刚上大学接触编程,还没用过消息队列,甚至还以为消息队列就是代码里面要新建一个List之类的;第二类人,听过消息队列,了解消息队列,但具体是什么还不是太明白,只知道一说到消息队列,脑海里马上出现了三组词,削峰、异步、解耦;第三类人,用过消息队列,对它有一定了解,但不知道为什么要这样设计,消息队列有什么样的前世今生,是如何演化到现在的模式的?**第四类人,已经对消息队列有了足够的了解,可以阅读本帖作为复习和温习。**你属于哪一类?无论你对消息队列了解多少,读完这篇文章后,我相信你都会有所收获。 什么是消息队列?我们为什么要使用消息队列?真的只是因为它看起来很勉强、很常用吗?当然不是,一项技术的出现往往是为了解决某种痛点,我们就从这个痛点出发,看看消息队列到底是为了解决什么问题而诞生的。 相信大家在工作之前,或者工作中接触单片机的次数会多一点,不管什么业务都一股脑塞进一个系统里,这种情况下接触消息队列的场景会比较少。但随着业务的增长,量上去了,单机系统就很难维护了,也扛不住并发量的增长,就需要把原来的单体应用拆分成多个服务。例如,牛奇网采用分布式架构,将原来的单体系统拆分成用户服务、题库服务、求职服务、论坛服务等,每个分布式节点都有一个集群,保证高可用性。 那虽然在这样的微服务架构下,如果某个核心业务并发量过大,系统就扛不住了。比如淘宝、淘票票、拼多多、京东等电商场景中的支付场景,你在某宝下单并支付后,调用支付服务,完成支付后,还需要更新订单的状态,这个时候就需要调用订单服务,那我们平时也下单,除了简单完成这些操作外,还会给你相应的积分;商家也会收到订单消息,并给您发送旺旺消息,确认订单无误;同时,也会给您发送消息,确认订单无误。确认订单无误;同时您还可以查看您的物流状态;还有系统为了给您推荐更适合您的商品,会根据您的订单做类似的推荐等等,我说的这些都是当我们下单后,肉眼可以感知到系统所做的动作。 **一个支付动作如果还需要调用那么多服务,等他们响应成功,最后再告诉用户你支付成功了,用户在系统中的整个体验会非常糟糕。**设想一下,假设请求服务+处理请求+响应总共需要 50ms,我们上面列出的场景:支付服务、订单服务、积分服务、商家服务、物流服务、推荐服务,总共需要 300ms。
-
深度FM模型详解:推荐系统FM系列文章的第二篇
-
F#探险之旅(二):函数式编程(上)-函数式编程范式简介 F#主要支持三种编程范式:函数式编程(Functional Programming,FP)、命令式编程(Imperative Programming)和面向对象(Object-Oriented,OO)的编程。回顾它们的历史,FP是最早的一种范式,第一种FP语言是IPL,产生于1955年,大约在Fortran一年之前。第二种FP语言是Lisp,产生于1958,早于Cobol一年。Fortan和Cobol都是命令式编程语言,它们在科学和商业领域的迅速成功使得命令式编程在30多年的时间里独领风骚。而产生于1970年代的面向对象编程则不断成熟,至今已是最流行的编程范式。有道是“*代有语言出,各领风骚数十年”。 尽管强大的FP语言(SML,Ocaml,Haskell及Clean等)和类FP语言(APL和Lisp是现实世界中最成功的两个)在1950年代就不断发展,FP仍停留在学院派的“象牙塔”里;而命令式编程和面向对象编程则分别凭着在商业领域和企业级应用的需要占据领先。今天,FP的潜力终被认识——它是用来解决更复杂的问题的(当然更简单的问题也不在话下)。 纯粹的FP将程序看作是接受参数并返回值的函数的集合,它不允许有副作用(side effect,即改变了状态),使用递归而不是循环进行迭代。FP中的函数很像数学中的函数,它们都不改变程序的状态。举个简单的例子,一旦将一个值赋给一个标识符,它就不会改变了,函数不改变参数的值,返回值是全新的值。 FP的数学基础使得它很是优雅,FP的程序看起来往往简洁、漂亮。但它无状态和递归的天性使得它在处理很多通用的编程任务时没有其它的编程范式来得方便。但对F#来说这不是问题,它的优势之一就是融合了多种编程范式,允许开发人员按照需要采用最好的范式。 关于FP的更多内容建议阅读一下这篇文章:Why Functional Programming Matters(中文版)。F#中的函数式编程 从现在开始,我将对F#中FP相关的主要语言结构逐一进行介绍。标识符(Identifier) 在F#中,我们通过标识符给值(value)取名字,这样就可以在后面的程序中引用它。通过关键字let定义标识符,如: let x = 42 这看起来像命令式编程语言中的赋值语句,两者有着关键的不同。在纯粹的FP中,一旦值赋给了标识符就不能改变了,这也是把它称为标识符而非变量(variable)的原因。另外,在某些条件下,我们可以重定义标识符;在F#的命令式编程范式下,在某些条件下标识符的值是可以修改的。 标识符也可用于引用函数,在F#中函数本质上也是值。也就是说,F#中没有真正的函数名和参数名的概念,它们都是标识符。定义函数的方式与定义值是类似的,只是会有额外的标识符表示参数: let add x y = x + y 这里共有三个标识符,add表示函数名,x和y表示它的参数。关键字和保留字关键字是指语言中一些标记,它们被编译器保留作特殊之用。在F#中,不能用作标识符或类型的名称(后面会讨论“定义类型”)。它们是: abstract and as asr assert begin class default delegate do donedowncast downto elif else end exception extern false finally forfun function if in inherit inline interface internal land lazy letlor lsr lxor match member mod module mutable namespace new nullof open or override private public rec return sig static structthen to true try type upcast use val void when while with yield 保留字是指当前还不是关键字,但被F#保留做将来之用。可以用它们来定义标识符或类型名称,但编译器会报告一个警告。如果你在意程序与未来版本编译器的兼容性,最好不要使用。它们是: atomic break checked component const constraint constructor continue eager event external fixed functor global include method mixinobject parallel process protected pure sealed trait virtual volatile 文字值(Literals) 文字值表示常数值,在构建计算代码块时很有用,F#提供了丰富的文字值集。与C#类似,这些文字值包括了常见的字符串、字符、布尔值、整型数、浮点数等,在此不再赘述,详细信息请查看F#手册。 与C#一样,F#中的字符串常量表示也有两种方式。一是常规字符串(regular string),其中可包含转义字符;二是逐字字符串(verbatim string),其中的(")被看作是常规的字符,而两个双引号作为双引号的转义表示。下面这个简单的例子演示了常见的文字常量表示: let message = "Hello World"r"n!" // 常规字符串let dir = @"C:"FS"FP" // 逐字字符串let bytes = "bytes"B // byte 数组let xA = 0xFFy // sbyte, 16进制表示let xB = 0o777un // unsigned native-sized integer,8进制表示let print x = printfn "%A" xlet main = print message; print dir; print bytes; print xA; print xB; main Printf函数通过F#的反射机制和.NET的ToString方法来解析“%A”模式,适用于任何类型的值,也可以通过F#中的print_any和print_to_string函数来完成类似的功能。值和函数(Values and Functions) 在F#中函数也是值,F#处理它们的语法也是类似的。 let n = 10let add a b = a + blet addFour = add 4let result = addFour n printfn "result = %i" result 可以看到定义值n和函数add的语法很类似,只不过add还有两个参数。对于add来说a + b的值自动作为其返回值,也就是说在F#中我们不需要显式地为函数定义返回值。对于函数addFour来说,它定义在add的基础上,它只向add传递了一个参数,这样对于不同的参数addFour将返回不同的值。考虑数学中的函数概念,F(x, y) = x + y,G(y) = F(4, y),实际上G(y) = 4 + y,G也是一个函数,它接收一个参数,这个地方是不是很类似?这种只向函数传递部分参数的特性称为函数的柯里化(curried function)。 当然对某些函数来说,传递部分参数是无意义的,此时需要强制提供所有参数,可是将参数括起来,将它们转换为元组(tuple)。下面的例子将不能编译通过: let sub(a, b) = a - blet subFour = sub 4 必须为sub提供两个参数,如sub(4, 5),这样就很像C#中的方法调用了。 对于这两种方式来说,前者具有更高的灵活性,一般可优先考虑。 如果函数的计算过程中需要定义一些中间值,我们应当将这些行进行缩进: let halfWay a b = let dif = b - a let mid = dif / 2 mid + a 需要注意的是,缩进时要用空格而不是Tab,如果你不想每次都按几次空格键,可以在VS中设置,将Tab字符自动转换为空格;虽然缩进的字符数没有限制,但一般建议用4个空格。而且此时一定要用在文件开头添加#light指令。作用域(Scope)作用域是编程语言中的一个重要的概念,它表示在何处可以访问(使用)一个标识符或类型。所有标识符,不管是函数还是值,其作用域都从其声明处开始,结束自其所处的代码块。对于一个处于最顶层的标识符而言,一旦为其赋值,它的值就不能修改或重定义了。标识符在定义之后才能使用,这意味着在定义过程中不能使用自身的值。 let defineMessage = let message = "Help me" print_endline message // error 对于在函数内部定义的标识符,一般而言,它们的作用域会到函数的结束处。 但可使用let关键字重定义它们,有时这会很有用,对于某些函数来说,计算过程涉及多个中间值,因为值是不可修改的,所以我们就需要定义多个标识符,这就要求我们去维护这些标识符的名称,其实是没必要的,这时可以使用重定义标识符。但这并不同于可以修改标识符的值。你甚至可以修改标识符的类型,但F#仍能确保类型安全。所谓类型安全,其基本意义是F#会避免对值的错误操作,比如我们不能像对待字符串那样对待整数。这个跟C#也是类似的。 let changeType = let x = 1 let x = "change me" let x = x + 1 print_string x 在本例的函数中,第一行和第二行都没问题,第三行就有问题了,在重定义x的时候,赋给它的值是x + 1,而x是字符串,与1相加在F#中是非法的。 另外,如果在嵌套函数中重定义标识符就更有趣了。 let printMessages = let message = "fun value" printfn "%s" message; let innerFun = let message = "inner fun value" printfn "%s" message innerFun printfn "%s" message printMessages 打印结果: fun value inner fun valuefun value 最后一次不是inner fun value,因为在innerFun仅仅将值重新绑定而不是赋值,其有效范围仅仅在innerFun内部。递归(Recursion)递归是编程中的一个极为重要的概念,它表示函数通过自身进行定义,亦即在定义处调用自身。在FP中常用于表达命令式编程的循环。很多人认为使用递归表示的算法要比循环更易理解。 使用rec关键字进行递归函数的定义。看下面的计算阶乘的函数: let rec factorial x = match x with | x when x < 0 -> failwith "value must be greater than or equal to 0" | 0 -> 1 | x -> x * factorial(x - 1) 这里使用了模式匹配(F#的一个很棒的特性),其C#版本为: public static long Factorial(int n) { if (n < 0) { throw new ArgumentOutOfRangeException("value must be greater than or equal to 0"); } if (n == 0) { return 1; } return n * Factorial (n - 1); } 递归在解决阶乘、Fibonacci数列这样的问题时尤为适合。但使用的时候要当心,可能会写出不能终止的递归。匿名函数(Anonymous Function) 定义函数的时候F#提供了第二种方式:使用关键字fun。有时我们没必要给函数起名,这种函数就是所谓的匿名函数,有时称为lambda函数,这也是C#3.0的一个新特性。比如有的函数仅仅作为一个参数传给另一个函数,通常就不需要起名。在后面的“列表”一节中你会看到这样的例子。除了fun,我们还可以使用function关键字定义匿名函数,它们的区别在于后者可以使用模式匹配(本文后面将做介绍)特性。看下面的例子: let x = (fun x y -> x + y) 1 2let x1 = (function x -> function y -> x + y) 1 2let x2 = (function (x, y) -> x + y) (1, 2) 我们可优先考虑fun,因为它更为紧凑,在F#类库中你能看到很多这样的例子。 注意:本文中的代码均在F# 1.9.4.17版本下编写,在F# CTP 1.9.6.0版本下可能不能通过编译。 F#系列随笔索引页面