自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专属_Smile

我不要当搬码工~ o(╯□╰)o ~

  • 博客(50)
  • 资源 (5)
  • 收藏
  • 关注

转载 一看你就懂,超详细java中的ClassLoader详解【转】

转自:http://blog.csdn.net/briblue/article/details/54973413ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。...

2018-09-26 11:36:32 6177 2

转载 HashMap,LinkedHashMap,TreeMap的区别

HashMap     HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得数据的顺序是完全随机的。     HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null。        HashMap不支持线程的同步(即任一时刻可以有多个线程同时写HashMap),可能会导致数据的不一致。如果需要...

2018-04-11 15:24:30 200

原创 Nginx日志文件拆分备份

    刚刚将公司项目新版本发布上线时,意外的发现nginx的access.log文件竟然有4.7G。因为nginx的日志文件没有rotate功能,而且当初并没有对nginx的访问日志文件和错误日志文件做定期清理操作。所以才导致了两个超大文件的出现。于是我抽空在网上找了些关于对nginx日志文件进行拆分备份的解决方案,顺便整理出来供大家参考。当时在网上找到两种解决方案:1、通过工具cronolog...

2018-03-22 17:01:00 566

原创 StackOverflowError和OutOfMemoryError

对于堆内存溢出和栈内存溢出,在深入理解JVM虚拟机这本书中有相关的定义:在java虚拟机规范中,对于局部变量空间(这里的局部变量空间指的是java虚拟机中的“栈”或者说java虚拟机栈中局部变量表部分)规定了两种异常状态:如果线程请求的栈深度(栈深度指的是程序递归调用的次数)大于虚拟机所允许的深度,将抛出StackOverflowError;如果虚拟机栈可以动态扩展(当前大部分的java虚拟机都可...

2018-03-15 14:05:19 290

转载 Redis和Memcached的区别

Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较:Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效...

2018-02-26 11:34:07 171

原创 如何使用线程安全的HashMap

HashMap为什么线程不安全导致HashMap线程不安全的原因可能有两种:1、当多个线程同时使用put方法添加元素的时候,正巧存在两个put的key发生了碰撞(根据hash值计算的bucket一样),那么根据HashMap的存储原理,这两个key会添加多数组的同一个位置,这样一定会导致其中一个线程put的数据被覆盖丢失2、当多个线程同时检测到元素个数超过哈希表的size*loadFl

2017-12-20 16:53:01 3907 2

转载 JAVA 对象引用&对象赋值

JAVA 对象引用,以及对象赋值 关键字: java对象 引用Java对象及其引用关于对象与引用之间的一些基本概念。       初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,       那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初

2017-12-20 16:25:27 227

原创 浅析java8中HashMap的结构

HashMap中涉及的部分数据结构数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表之拉链法哈希表(Hash table,也叫散列表),是根据关键码值

2017-12-20 14:58:59 959

原创 equals 、 ==的深度解析

如何理解equals和==之间的区别?对于刚开始工作的小白,在面试的时候可能经常会遇到下面的代码:String a= new String("abc");String b= new String("abc"); System.out.println(a==b);System.out.println(a.equals(b));输出结果如下:falsetrue那为什么两个输出结果不一

2017-12-15 18:02:46 252

转载 jvm虚拟机工作机制【转】

1 概述  众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障。1.1 Java程序执行流程  Java程序的执行依赖于编译环境和运行环境。源码代码转变成可执行的机器代码,由下面的流程完成:

2017-12-15 14:49:12 434

hadoop-3.3.1-aarch64.tar.gz

基于M1芯片的Hadoop安装包

2021-06-30

hadoop-3.3.1.tar.gz

hadoop-3.3.1.tar.gz安装包

2021-06-26

SecureCRT软件

绿色版的SecureCRT,使用与Windows系列的系统,无需安装,随时解压随时使用

2017-12-15

App后台开发运维和架构实践(完整版).pdf

ps:本书的目录大纲如下: 第1章 App后台入门 16 1.1 App后台的功能 16 1.2 App后台架构 17 1.3 App和App后台的通信 19 1.4 App后台和Web后端的区别 22 1.5 选择服务器 23 1.6 选择编程语言 24 1.7 快速入门新技术 25 1.7.1 思维模式 25 1.7.2 4种快速入门新技术的方法 25 1.8 App是怎样炼成的 26 1.8.1 项目启动阶段 26 1.8.2 研发阶段 28 1.8.3 测试阶段 29 1.8.4 正式推出阶段 29 1.9 最适合App的开发模式——敏捷开发 30 1.9.1 Sprint 计划会议 31 1.9.2 日常开发 32 1.9.3 每日例会 33 1.9.4 测试和修复Bug 33 1.9.5 评审会议 34 1.9.6 回顾会议 34 1.9.7 及时反馈 34 1.9.8 总结 34 第2章 App后台基础技术 35 2.1 从App业务逻辑中提炼API接口 35 2.1.1 业务逻辑思维导图 36 2.1.2 功能—业务逻辑思维导图 37 2.1.3 基本功能模块关系 40 2.1.4 功能模块接口UML(设计出API) 41 2.1.5 编写在线API测试文档 42 2.1.6 设计稿标注API 45 2.2 设计API的要点 46 2.3 如何选择合适的数据库产品 50 2.3.1 Redis,MongoDB,MySQL读写数据的区别 50 2.3.2 Redis,MongoDB,MySQL查找数据的区别 50 2.3.3 Redis,MongoDB,MySQL适用场景 51 2.4 如何选择消息队列软件 52 2.4.1 为什么要用消息队列? 52 2.4.2 消息队列的工作流程 53 2.4.3 常见的一些消息队列产品 54 2.5 使用分布式服务实现业务的复用 54 2.5.1 巨无霸系统的危害 55 2.5.2 远程服务的优点 56 2.5.3 远程服务的实现 56 2.6 搜索技术入门 59 2.6.1 一个简单的搜索例子 59 2.6.2 搜索技术的基本原理 60 2.6.3 常见的开源搜索软件介绍 62 2.7 定时任务 65 2.7.1 Linux定时任务Crontab 65 2.7.2 在后台轻松管理各种各样的定时任务 66 第3章 App后台核心技术 68 3.1 用户验证方案 68 3.1.1 使用HTTPS协议 68 3.1.2 基本的用户登录方案 69 3.2 App通信安全 72 3.2.1 URL签名 72 3.2.2 AES对称加密 74 3.2.3 更进一步的通信安全 77 3.3 短信服务 78 3.3.1 App后台发送短信简介 78 3.3.2 选择短信平台 78 3.3.3 建立可靠的短信服务 79 3.4 处理表情的一些技巧 80 3.4.1 表情在MySQL的存储 80 3.4.2 当文字中夹带表情的处理 80 3.4.3 Openfire中发送表情引起连接断开的问题 81 3.5 高效更新数据 82 3.5.1 内容的推拉 83 3.5.2 数据增量更新策略 84 3.6 图片处理 90 3.7 视频处理 91 3.7.1 FFmpeg简介 91 3.7.2 后台调用FFmpeg的功能 92 3.8 获取APK和IPA文件里的资源 94 3.8.1 Android的APK文件 94 3.8.2 iOS的IPA文件 96 3.9 文件系统 98 3.9.1 文件云存储服务 99 3.9.2 架设文件系统 99 3.10 ELK日志分析平台 101 3.10.1 基本模块 101 3.10.2 日志分析流程 102 3.11 Docker构建一致的开发环境 103 3.11.1 Docker原理 103 3.11.2 搭建一致的开发环境 104 第4章 Linux——App后台应用最广泛的系统 107 4.1 基本的系统优化 107 4.1.1 开机自启动服务优化 107 4.1.2 增大文件描述符 109 4.2 常用的命令 110 4.2.1 全面了解系统资源情况——top 110 4.2.2 显示进程状态——ps 115 4.2.3 查看网络相关信息——netstat 116 4.2.4 查看某个进程打开的所有文件——lsof 118 4.2.5 跟踪数据到达主机所经路由——traceroute 119 4.2.6 文件下载/上传工具——“ssh secure shell client”和“lrzsz” 119 4.2.7 查看程序的依赖库——LD_DEBUG 121 4.2.8 进程管理利器——superivisor 122 4.3 故障案例分析 125 第5章 Nginx——App后台HTTP服务的利器 126 5.1 简介 126 5.2 基本原理 127 5.2.1 工作模型 127 5.2.2 进程解析 128 5.3 常用配置 129 5.3.1 Nginx的全局配置 130 5.3.2 event配置 130 5.3.3 http配置 131 5.3.4 负载均衡配置 133 5.3.5 server虚拟主机配置 134 5.3.6 location配置 134 5.3.7 HTTPS的配置 135 5.3.8 下载App的配置 136 5.3.9 生产环境中修改配置的良好习惯 136 5.4 性能统计 136 5.5 实现负载均衡的方案 137 5.6 用Nginx处理业务逻辑 139 第6章 MySQL——App后台最常用的数据库 140 6.1 基本架构 140 6.2 选择版本 141 6.3 配置文件详解 142 6.4 软件优化 144 6.4.1 正确使用MyISAM和InnoDB存储引擎 144 6.4.2 正确使用索引 145 6.4.3 避免使用select * 146 6.4.4 字段尽可能地设置为NOT NULL 146 6.5 硬件优化 147 6.5.1 增加物理内存 147 6.5.2 增加应用缓存 147 6.5.3 用固态硬盘代替机械硬盘 148 6.5.4 SSD硬盘+SATA硬盘混合存储方案 149 6.6 架构优化 149 6.6.1 分表 150 6.6.2 读写分离 151 6.6.3 分库 153 6.7 SQL慢查询分析 156 6.8 云数据库简介 157 6.9 灵活的存储结构 158 6.10 故障排除案例 159 第7章 Redis——App后台高性能的缓存系统 160 7.1 Redis简介 160 7.2 Redis的常用数据结构及应用场景 161 7.2.1 string——存储简单的数据 162 7.2.2 hash——存储对象的数据 163 7.2.3 list——模拟队列操作 165 7.2.4 set——无序且不重复的元素集合 167 7.2.5 sorted set——有序且不重复的元素集合 168 7.3 内存优化 170 7.3.1 监控内存使用的状况 170 7.3.2 优化存储结构 170 7.3.3 限制使用的最大内存 172 7.3.4 设置过期时间 172 7.4 集群 174 7.4.1 客户端分片 174 7.4.2 Twemproxy 175 7.4.3 Codis 176 7.4.4 Redis 3.0集群 179 7.4.5 云服务器上的集群服务 180 7.5 持久化 180 7.5.1 RDB 181 7.5.2 AOF 182 7.6 故障排除案例 184 第8章 MongoDB——App后台新兴的数据库 185 8.1 简介 185 8.2 核心机制解析 186 8.2.1 MMAP(内存文件映射) 186 8.2.2 Journal日志 187 8.3 入门 187 8.3.1 基本操作 188 8.3.2 数组操作 190 8.3.3 实例演示MySQL和MongoDB设计数据库的区别 191 8.4 高可用集群 195 8.4.1 主从 195 8.4.2 副本集 196 8.4.3 分片 198 8.5 LBS——地理位置查询 200 8.6 MongoDB 3.0版本的改进 205 8.6.1 灵活的存储架构 206 8.6.2 性能提升7~10倍 206 8.6.3 存储空间最多减少80% 207 8.6.4 运维成本最多降低95% 207 第9章 App后台架构剖析 208 9.1 聊天App后台架构 208 9.1.1 移动互联网的网络特性 209 9.1.2 协议 212 9.1.3 整体架构 218 9.2 社交App后台架构 221 9.2.1 基本表结构 222 9.2.2 推拉模式 223 9.2.3 数据库架构的演进 225 9.2.4 缓存架构的演进 229 9.3 LBS App后台架构 234 9.3.1 地理坐标详解 235 9.3.2 查找附近的人 236 9.3.3 基于MongoDB的LBS后台架构演进 240 9.4 推送服务器后台架构 242 9.4.1 Android推送 242 9.4.2 iOS推送 248 9.5 获得更多App后台架构资料 252 第10章 App后台架构的演进 255 10.1 架构的核心要素 255 10.1.1 高性能 256 10.1.2 高可用 258 10.1.3 可伸缩 261 10.1.4 可扩展 262 10.1.5 安全性 262 10.2 架构选型的要点 262 10.2.1 用成熟稳定的开源软件 263 10.2.2 尽可能使用云服务 264 10.3 架构的演进 268 10.3.1 单机部署 269 10.3.2 分布式部署 275 10.3.3 服务化 277 10.4 架构的特点 279 10.4.1 每个App的后台架构不会完全一样 279 10.4.2 架构的演进是由业务驱动的 279 10.4.3 架构不是为了炫耀技术 280

2017-12-15

阿里巴巴java开发手册完整版

这份阿里巴巴java开发手册,公司最近来了个架构师,对我们的编码规范进行了改革,要求我们严格参照阿里的编码规范来进行开发

2017-12-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除