IBM developerWorks

算法

随机数生成器

使您的软件运行起来
摆弄数字
真正安全的软件需要精确的随机数生成器
https://www.ibm.com/developerworks/cn/security/playing/index.html

java

Java 编程的动态性,第 1 部分
类和类装入
研究类以及 JVM 装入类时所发生的情况
https://www.ibm.com/developerworks/cn/java/j-dyn0429/

class类文件
cafe babe 任何 Java 二进制类(甚至是文件系统中没有出现的类)都需要以这四个字节作为开始
0000 次版本 0
002e 主版本 46
001a 常量池中项的总数
后面是实际的常量池数据 常量池往往占到二进制类大小的一半或更多,但平均下来可能要少一些。

方法的可执行代码 用 JVM 的指令形式表示该代码,一般称为 字节码
构成类文件可执行部分的字节码实际上是针对特定类型的计算机 ― JVM ― 的机器码
JVM被称为 虚拟机,因为它被设计成用软件来实现,而不是用硬件来实现。每个用于运行 Java 平台应用程序的 JVM 都是围绕该机器的实现而被构建的。
JVM使用堆栈体系结构,这意味着在使用指令操作数之前要先将它们装入内部堆栈。
早期的(第一代)JVM 基本上是虚拟机字节码的解释器。这些虚拟机实际上 的确相对简单,但存在严重的性能问题 ― 解释代码的时间总是会比执行本机代码的时间长。
第二代 JVM 添加了 即时(just-in-time,JIT)转换。在第一次执行 Java 字节码之前,JIT 技术将它编译成本机代码,从而对于重复执行提供了更好的性能。
当代 JVM 的性能甚至还要好得多,因为使用了适应性技术来监控程序的执行并有选择地优化频繁使用的代码。

JAR 只是类文件的容器

增加环境变量 JAVA_OPTS -verbose 可以查看类加载过程

C 和 C++ 这些编译成本机代码的语言通常在编译完源代码之后需要链接这个步骤

使用 Java 语言,由编译器生成的类在被装入到 JVM 之前通常保持原状

链接类不是一个独立步骤,它是在 JVM 将这些类装入到内存时所执行作业的一部分

能装入独立的类集合这一灵活性是 Java 平台的一个重要特性。尽管这个特性很有用,但是它在某些情况中会产生混淆。

一个令人混淆的方面是处理 JVM 类路径这样的老问题。

使用多个类装入器还可能引起其它类型的混淆。身份危机(class identity crisis)

JDK5.0以后不需要配classpath了,只要把path配好就行

敏捷开发中高质量 Java 代码开发实践
https://www.ibm.com/developerworks/cn/java/j-lo-agile/

步骤一:统一编码规范、代码样式
步骤二:静态代码分析
步骤三:单元测试
步骤四:持续集成(Continuous Integration)
步骤五:代码评审和重构(Code Review)

使用原汁原味的 Java 语言
非 Java 原生程序员的语言流畅性
https://www.ibm.com/developerworks/cn/java/j-noaccent.html

Java 的惯例中 main()方法的参数名为 args,而不是 argv:public static void main(String[] args)

深入探讨 Java 类加载器
https://www.ibm.com/developerworks/cn/java/j-lo-classloader/

常用 Java 静态代码分析工具的分析与比较
https://www.ibm.com/developerworks/cn/java/j-lo-statictest-tools/

使用 Java 开源工具建立一个灵活的搜索引擎
揭示开源的力量
https://www.ibm.com/developerworks/cn/java/j-lo-sefrmk/

几种任务调度的 Java 实现方法与比较
https://www.ibm.com/developerworks/cn/java/j-lo-taskschedule/index.html

用 Quartz 进行作业调度
Quartz API 采用多面方式在 Java 应用程序中进行任务调度
https://www.ibm.com/developerworks/cn/java/j-quartz/

在 Web 项目中应用 Apache Shiro
https://www.ibm.com/developerworks/cn/java/j-lo-shiro/

从虚拟机视角谈 Java 应用性能优化
https://www.ibm.com/developerworks/cn/java/j-lo-jvm-perf/

使用 VisualVM 进行性能分析及调优
https://www.ibm.com/developerworks/cn/java/j-lo-visualvm/

优化 Java 垃圾收集器改进系统性能
https://www.ibm.com/developerworks/cn/java/j-lo-optimize-gc/

Java的内存泄漏
https://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/

Java 性能优化之 String 篇
https://www.ibm.com/developerworks/cn/java/j-lo-optmizestring/

Java Web 高性能开发,第 1 部分
前端的高性能
https://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf1/

您不知道的 5 件事……
JVM 命令行标志
调优 JVM 性能和 Java 运行时
https://www.ibm.com/developerworks/cn/java/j-5things11/index.html

Java.next, Common ground in Groovy, Scala, and Clojure, Part 1
Explore how these next-generation JVM languages handle operator overloading
https://www.ibm.com/developerworks/java/library/j-jn2/index.html

Java.next, Common ground in Groovy, Scala, and Clojure, Part 3
Rethinking exceptions, expressions, and emptiness
https://www.ibm.com/developerworks/java/library/j-jn4/index.html

使用JMeter进行性能测试
https://www.ibm.com/developerworks/cn/java/l-jmeter/

使用 JMeter 完成常用的压力测试
https://www.ibm.com/developerworks/cn/opensource/os-pressiontest/

启用动态 HTTP 压缩
在各种 Web 服务器上通过动态压缩节省带宽
https://www.ibm.com/developerworks/cn/web/wa-httpiis/

最佳实践:更好的设计你的 REST API
https://www.ibm.com/developerworks/cn/web/1103_chenyan_restapi/

NIO 入门
https://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html

Merlin 给 Java 平台带来了非阻塞 I/O
新增的功能大幅降低了线程开销
https://www.ibm.com/developerworks/cn/java/j-javaio/

深入分析 Java 中的中文编码问题
https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/

Java SSL/TLS 安全通讯协议介绍
Java 的安全通讯
https://www.ibm.com/developerworks/cn/java/j-lo-ssltls/

Java 安全套接字编程以及 keytool 使用最佳实践
https://www.ibm.com/developerworks/cn/java/j-lo-socketkeytool/

开源规则流引擎实践
https://www.ibm.com/developerworks/cn/opensource/os-drools/index.html

使用 Drools 规则引擎实现业务逻辑

如果你的业务场景中有很多复杂的业务逻辑/业务策略,而这些业务策略又经常发生变化,那么你就可以引入规则引擎技术。

开发 Spring Redis 应用程序
使用 Redis 作为数据存储来构建基于 Spring 的应用程序
https://www.ibm.com/developerworks/cn/java/os-springredis/index.html

Java 编程中的 OAuth 2.0 客户端,第 1 部分
资源所有者密码凭据授权
https://www.ibm.com/developerworks/cn/java/se-oauthjavapt1/index.html

Java 编程中的 OAuth 2.0 客户端,第 2 部分
客户端凭据授权
https://www.ibm.com/developerworks/cn/java/se-oauthjavapt2/index.html

Java 编程中的 OAuth 2.0 客户端,第 3 部分
认证码授权
https://www.ibm.com/developerworks/cn/java/se-oauthjavapt3/index.html

Java 开发 2.0
现实世界中的 Redis
Redis 如何在包含大量读取操作的应用程序中战胜 memcached
https://www.ibm.com/developerworks/cn/java/j-javadev2-22/

全面分析 Spring 的编程式事务管理及声明式事务管理
https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/

Spring 事务管理高级应用难点剖析
第 1 部分
https://www.ibm.com/developerworks/cn/java/j-lo-spring-ts1/index.html

Spring 事务管理高级应用难点剖析
第 2 部分
https://www.ibm.com/developerworks/cn/java/j-lo-spring-ts2/

Spring 事务管理高级应用难点剖析
第 3 部分
https://www.ibm.com/developerworks/cn/java/j-lo-spring-ts3/index.html

使用 Spring 进行单元测试
https://www.ibm.com/developerworks/cn/java/j-lo-springunitest/

使用 Apache JMeter 测试基于云的应用程序
学习使用 JMeter 进行 RESTful API 测试的有效技术和最佳实践
https://www.ibm.com/developerworks/cn/cloud/library/cl-jmeter-restful/

让开发自动化
用 Eclipse 插件提高代码质量
在 Eclipse 中使用 5 个有用的插件来自动化代码质量分析
https://www.ibm.com/developerworks/cn/java/j-ap01117/

常用 Java Profiling 工具的分析与比较
https://www.ibm.com/developerworks/cn/java/j-lo-profiling/

Java Web 高性能开发,第 2 部分
前端的高性能
https://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf2/

在 Java 应用程序中使用 Elasticsearch
高性能 RESTful 搜索引擎和文档存储快速入门指南
https://www.ibm.com/developerworks/cn/java/j-use-elasticsearch-java-apps/index.html

Java 应用性能调优实践
让 Java 应用运行更快:性能调优工具及实践
https://www.ibm.com/developerworks/cn/java/j-lo-performance-tuning-practice/

通过零拷贝实现有效数据传输
零拷贝,零开销
https://www.ibm.com/developerworks/cn/java/j-zerocopy/

Java 性能分析工具 , 第 1 部分
操作系统工具
https://www.ibm.com/developerworks/cn/java/j-lo-performance-analysissy-tools/

Java 性能测试的四项原则
https://www.ibm.com/developerworks/cn/java/j-lo-java-performance-testing/

Groovy 使 Spring 更出色,第 1 部分: 集成的基础知识

Java 8 Annotation 新特性在软件质量和开发效率方面的提升

使用 Groovy 构建 DSL

Groovy:Java 程序员的 DSL

SQL

SQL 语句性能调优
初级篇 —— 简单查询语句的调优
https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1002limh/index.html

SQL 在常用报表业务中的归并、转换与信息汇总中的应用技巧
https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1008yangxy/

JavaScript

Understand memory leaks in JavaScript applications
Detect and address memory issues
https://www.ibm.com/developerworks/library/wa-jsmemory/index.html

拥抱原型面向对象编程
https://www.ibm.com/developerworks/cn/web/wa-protoop/index.html

浅谈 JavaScript 编程语言的编码规范
https://www.ibm.com/developerworks/cn/web/1008_wangdd_jscodingrule/

使用 Chrome 开发者工具进行 JavaScript 问题定位与调试
https://www.ibm.com/developerworks/cn/web/1410_wangcy_chromejs/index.html

JavaScript 中的类

用 Maven 做项目构建

POM 即 Project Object Module,项目对象模型,在 pom.xml 文件中定义了项目的基本信息、源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的 url、以及构建项目所用的插件,依赖继承关系。

Maven 本质上是一个插件框架,它的核心并不执行任何具体的构建任务,仅仅定义了抽象的生命周期,所有这些任务都交给插件来完成的。每个插件都能完成至少一个任务,每个任务即是一个功能,将这些功能应用在构建过程的不同生命周期中。这样既能保证拿来即用,又能保证 maven 本身的繁杂和冗余。

可以用 去除这种依赖的传递

可以在当前的 POM 文件中使用 元素声明排除依赖,exclusions 可以包含一个或者多个 exclusion 子元素,因此可以排除一个或者多个传递性依赖。

Nexus是Maven仓库管理器,用来搭建一个本地仓库服务器,这样做的好处是便于管理,节省网络资源,速度快,还有一个非常有用的功能就是可以通过项目的SNAPSHOT版本管理,来进行模块间的高效依赖开发

ES6

新 JavaScript 中的变量声明等功能

React

React:创建可维护、高性能的 UI 组件
使用 React JavaScript 库创建可维护的 Web UI,超越浏览器 DOM
https://www.ibm.com/developerworks/cn/web/wa-react-intro/index.html

React 介绍及实践教程
https://www.ibm.com/developerworks/cn/web/1509_dongyue_react/

redux

Redux 简介

状态管理是软件开发的最困难方面之一,这使得状态管理错误成为了几乎所有 bug 的源头。

Redux,这是一个针对 JavaScript 应用程序的可预测的状态容器。
Redux 不仅有助于状态管理,还使得实现一些高级特性变得很简单,比如无限撤销/重做和实时编辑时间旅行 (live-editing time travel)。

尽管 Redux 来自 React 社区,但它并不依赖于 React。

Redux 是 Facebook 的 Flux 架构的一种简化实现。

Flux 在本质上采用了模型-视图-控制器 (MVC) 的结构

Redux 有 3 条原则:

  • 应用程序状态存储在单个对象中。
  • 应用程序状态不可变,只能通过描述状态更改的操作 彻底替换。
  • 缩减程序根据当前状态和某个操作来创建下一个状态。

Redux 简介

结合使用 Redux 和 React

Unix

对话 UNIX,第 4 部分
UNIX 所有权和权限管理
共享信息
https://www.ibm.com/developerworks/cn/aix/library/au-speakingunix4/index.html

UNIX 文件的权限位 表示了三类用户(您本人、您的一个组和其他用户)的某一种特定的权限
10 个字符组成的序列
每个字符都是一个开/关设置或位

起始位表示该文件是否为目录(通常,起始位 表示该文件是否为特殊文件。如果该文件是特殊文件,起始字符 d 表示目录、l 表示符号链接,等等)。这个设置是无法改变的。

接下来的三位(用蓝色表示的)分别表示您 对该文件的读、写和执行权限。您可以禁用写权限位,例如要防止删除文件。(是的,要删除一个文件,您需要写权限。)

接下来的三位(用绿色表示的)表示组 对该文件的读、写和执行权限。

最后的三位(用橙色表示的)表示所有其他 用户(即除了您自己以及您的组中的成员之外的所有用户)的权限。

您可以使用 chmod(更改模式 change mode)命令修改相应的权限(除了目录位之外)。您可以使用 chgrp(更改组 change group)命令来修改文件所属的组。(超级用户 root 也可以使用 chown 或 change owner 命令来更改文件所有权。)

find . -type f -print | sort | uniq

您可以使用符号 ~(波浪符号)引用您的 home 目录。您还可以使用 $HOME 环境变量引用您的 home 目录

许多程序可以从一个名为 .netrc(读做 net-r-c)的文件中读取您的凭据,该文件通常位于 ~/.netrc 目录中。

Linux 新用户的基本任务
Linux 安装好后,下一步该做什么?
https://www.ibm.com/developerworks/cn/linux/tutorials/l-basics/

学习 Linux,101
LPIC-1 路线图
关于 LPIC-1 考试准备的 developerWorks 文章指南
https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-map/

学习 Linux,101
创建和更改硬链接和符号链接
为同一文件使用多个名称
https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-104-6/

学习 Linux,101
管理文件权限和所有权
在您的文件上设置正确的安全性
https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-104-5/index.html

学习 Linux,101
RPM 和 YUM 包管理
添加新软件并及时更新系统
https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-102-5/

Bash 实例,第一部分
Bourne again shell (bash) 基本编程
https://www.ibm.com/developerworks/cn/linux/shell/bash/bash-1/

Bash 实例,第 2 部分
更多的 bash 基本编程
https://www.ibm.com/developerworks/cn/linux/shell/bash/bash-2/

Bash 实例,第 3 部分
探讨 ebuild 系统
https://www.ibm.com/developerworks/cn/linux/shell/bash/bash-3/

系统管理员工具包
充分利用 bash
https://www.ibm.com/developerworks/cn/aix/library/au-satbash.html

LPI 102 考试准备,主题 109
Shell、脚本、编程和编译
初级管理(LPIC-1)主题 109
https://www.ibm.com/developerworks/cn/education/linux/l-lpic1109/index.html

LPI 102 考试准备,主题 109
Shell、脚本、编程和编译
初级管理(LPIC-1)主题 109
https://www.ibm.com/developerworks/cn/education/linux/l-lpic1109/index.html

Linux 编程和系统管理新手入门
https://www.ibm.com/developerworks/cn/linux/newto/index.html

Windows 到 Linux 之旅: 系列文章概述
指引开发者走向 Linux 的路线图
https://www.ibm.com/developerworks/cn/linux/l-roadmap/index.html

Windows 到 Linux 之旅: 第 4 部分. 用户管理

Windows 到 Linux 之旅: 第 6 部分. 使用分区和文件系统

数据库

超越 MySQL
对流行数据库进行分支
https://www.ibm.com/developerworks/cn/opensource/os-beyondmysql/

LAMP 系统性能调优,第 3 部分
MySQL 服务器调优
利用服务器的几个调优技巧,让 MySQL 服务器飞速运行
https://www.ibm.com/developerworks/cn/linux/l-tune-lamp-3.html

Web

响应式 Web 设计技巧
https://www.ibm.com/developerworks/cn/web/1506_zhangqun_responsiveweb/

利用 Sass 改善 CSS 预处理

Syntactically awesome stylesheets (Sass) 是一种元语言和层叠式样式表 (CSS) 预处理程序

Sass 主要使用 Ruby 来实现

html5

使用 HTML 5 创建移动 Web 应用程序

第 1 部分: 联合使用 HTML 5、地理定位 API 和 Web 服务来创建移动混搭程序

第 2 部分: 使用 HTML 5 开启移动 Web 应用程序的本地存储

localStorage API

第 3 部分: 使用 HTML 5 支持移动 Web 应用程序离线工作

第 4 部分: 使用 Web Workers 来加速您的移动 Web 应用程序

Web Worker 规范

从 Android 2.0 开始,Android 浏览器就拥有了对 HTML 5 Web Worker 规范的全面支持。

第 5 部分: 使用 HTML 5 开发新的可视化 UI 特性

所有基于 Webkit 的浏览器都能实现 Canvas 并极大地优化其性能。

工具类

ImageMagick 魔咒
面向用户和程序员等受众的图像处理
https://www.ibm.com/developerworks/cn/opensource/os-imagemagick/index.html

其它

利用 squid 反向代理提高网站性能
https://www.ibm.com/developerworks/cn/linux/l-cn-squid/

MQ 遥测传输 (MQTT) V3.1 协议规范
https://www.ibm.com/developerworks/cn/webservices/ws-mqtt/index.html

使用 Nginx 提升网站访问速度
https://www.ibm.com/developerworks/cn/web/wa-lo-nginx/

管理移动云套接字连接
云提供商如何管理移动应用程序与云之间的连接
https://www.ibm.com/developerworks/cn/cloud/library/cl-mobilesockconnect/

配置 Tomcat 和 Wireshark 来获取并解码 SSL 通信
调试安全通信
https://www.ibm.com/developerworks/cn/web/tutorials/wa-tomcat/

使用 OpenSSL API 进行安全编程
创建基本的安全连接和非安全连接
https://www.ibm.com/developerworks/cn/linux/l-openssl.html

利用物联网 (IoT)
探索 IoT 的 7 个重要概念和开始使用它的 4 个步骤
https://www.ibm.com/developerworks/cn/iot/iot-key-concepts/index.html

了解 IT 即流程
如何自动化企业中的 IT 操作
https://www.ibm.com/developerworks/cn/websphere/techjournal/1510_brown-trs/1510_brown.html

使用访问令牌保护微服务

量子计算

量子计算入门
棘手问题的简便解法指南
https://www.ibm.com/developerworks/cn/linux/other/quant/

LLVM

使用 LLVM 框架创建一个工作编译器,第 1 部分

使用 LLVM 框架创建有效的编译器,第 2 部分

LLVM 拥有自己的前端:名为 clang 的一种工具(恰如其分)。Clang 是一种功能强大的 C/C++/Objective-C 编译器,其编译速度可以媲美甚至超过 GNU Compiler Collection (GCC) 工具(参见 参考资料 中的链接,获取更多信息)。更重要的是,clang 拥有一个可修改的代码基,可以轻松实现定制扩展。

blockchain

区块链技术基础:商业账本简介

区块链技术基础:术语和用例

Docker

Docker:带给现代开发人员的福利

Docker 就像是用于 DevOps 的一把瑞士军刀,这一点已得到充分证明。但 Docker 托管的应用程序容器的用途不仅是在云中部署服务器。Docker 容器还可以在许多常见的开发场景中帮助开发和显著提高生产力。