1.安卓开发需要学习什么
2.手把手教你为基于Netty的源码IM生成自签名SSL/TLS证书
安卓开发需要学习什么
学习分三个阶段:1,Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深层实现
2,源码Android进阶初级:组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理,源码。
SQLite /SharedPreferences/File详解 多媒体Audio/Video/Camera 详解
3,源码Android进阶高级:蓝牙/WIFI SMS/MMS 应用实现 深层次解析GPS原理。源码
实现LocationManager/LocationProvider 进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节 2D图形库(Graphics/View)详解 SDCARD/传感器/手势 应用实现
扩展资料:
知识体系
1、源码音频分享网站源码Unix/Linux平台技术:基本命令,源码Linux下的源码开发环境
2、企业级数据库技术:SQL语言、源码SQL语句调优、源码Oracle数据库技术
3、源码Java 语言核心技术:Java语言基础、源码Java面向对象编程、源码JDK核心API、源码Java集合框架、源码Java网络编 程、JavaI/O编程、Java多线程编程、Java异常机制、Java安全、JDBC、linux源码安装位置XML
4、软件工程和设计模式:软件工程概述、配置管理及SVN、UML、基本设计模式
5、Android应用开发基础:Android开发平台、Eclipse+ADT开发环境、AVD及传感模拟器调试、Android核心组件、Android常用组件、卖源码的商城Android高级组件、文件及网络访问、SQLite数据库编程、后台服务编程
6、互联网核心技术: HTML、CSS、JavaScript、JQuery、Ajax应用
7、Android高级应用开发:音频\视频\摄像头、rocketmq 广播源码解析互联网应用、GPS和位置服务、Google Map、2D\3D绘制、传感器开发、游戏开发、电话及SMS服务、网络\Bluetooth\Wi-Fi等。
8、Android系统级开发:移植、如何手动编译源码驱动、NDK(C方向)。
9、JavaEE核心技术:Servlet核心技术、JSP核心技术、Struts、Spring、Hibernate框架。
参考资料:
手把手教你为基于Netty的IM生成自签名SSL/TLS证书
对于IM聊天应用来说,为了提升安全性,对聊天消息加密是常规操作。Netty作为高性能的Java NIO网络通信框架,用它来编写IM应用再合适不过了。然而,网上关于为Netty生成、以及使用SSL/TLS证书的文章有很多,但由于各种原因,生成的证书要么是Netty中无法读取和使用,要么是代码不全或不具体导致根本配不通SSL/TLS加密。本文旨在分享如何使用OpenSSL生成在基于Netty的IM中真正可用的SSL/TLS证书,并提供代码范例,以帮助开发者实现这一过程。 生成Netty可用的SSL/TLS证书包括以下步骤:下载和安装OpenSSL:推荐使用第三方编译好的OpenSSL安装程序或直接使用附件中的安装程序。
创建私钥证书:在CMD控制台下执行指令 `openssl genrsa -des3 -out netty/netty-key.pem `。
将私钥格式转成pk8:执行指令 `openssl pkcs8 -innetty/netty-key2.pem -topk8 -out netty/netty-key2.pk8`。
创建证书请求:执行指令 `openssl req -new -out netty/netty-req2.csr -key netty/netty-key2.pem`。
生成公钥证书:执行指令 `openssl x -req -inca/ca-req2.csr -out netty/netty-cert2.crt -signkey netty/netty-key2.pem -days `。
至此,我们为Netty创建好了证书。在服务端,使用以下示例代码将证书应用于SSL/TLS加密:/** * 创建SslContext对象,用于开启SSL/TLS加密传输。 * @return 如果成功创建则返回SslContext对象,否则返回null */ privatestaticSslContext createSslContext() { try{ InputStream certChainFile = ServerLauncherImpl.class.getResourceAsStream("certs/netty-cert2.crt"); InputStream keyFile = ServerLauncherImpl.class.getResourceAsStream("certs/netty-key2.pk8"); String keyPassword = ""; SslContext sslCtx = SslContextBuilder.forServer(certChainFile, keyFile, keyPassword).clientAuth(ClientAuth.NONE).build(); return sslCtx; } catch(Exception e) { logger.warn("createSslContext()时出错了,原因:" + e.getMessage(), e); } return null; }
在客户端,不同平台的实现方式如下:Android端:使用示例代码配置SSLContext并启动连接。
iOS端:配置CocoaAsyncSocket以启用SSL/TLS加密。
Java桌面端:使用示例代码配置SSLContext并启动连接。
H5端:将请求url由“ws”改成“wss”以启用SSL/TLS。
本文提供的详细步骤和代码示例,旨在帮助开发者在基于Netty的IM应用中实现SSL/TLS加密,以确保数据传输的安全性。希望这些内容能对您有所帮助。