![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java架构学习
wmq_fly
这个作者很懒,什么都没留下…
展开
-
java架构学习——1. 多线程快速入门
一. 线程基本概念进程:每个正在系统上运行的程序都是一个进程,如QQ等。每个进程包含一到多个线程。线程:线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。即正在独立运行的一条执行路径。多线程:能够在同一时间执行多于一个线程,每个线程都能独立运行,互不影响,进而提高了程序的效率,而不提高带宽速度。在多线程中如果其中一个线程抛异常执行中断,而其他线程却不会受其影响。...原创 2019-02-11 15:23:24 · 179 阅读 · 0 评论 -
java架构学习——23. SpringIOC与AOP
一、Spring的概述springIOC(控制反转)所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现...原创 2019-02-18 17:14:08 · 132 阅读 · 0 评论 -
java架构学习——24. Spring事物与传播行为
事物:保证数据的一致性⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 拿转账来说,假设用户...原创 2019-02-18 17:36:31 · 100 阅读 · 0 评论 -
java架构学习——7. 自定义注解与java设计模式
一、自定义注解Jdk1.5新增新技术,注解。很多框架为了简化代码,都会提供有些注解。解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。其分为:内置注解(jdk自带)和自定义注解。内置注解(1) @SuppressWarnings 在程序前面加上可以在javac编译中去除警告–阶段是SOURCE(2) @Deprecated 带有标记的包,方法,字段说明其过时----阶段是S...原创 2019-02-13 10:03:01 · 162 阅读 · 0 评论 -
java架构学习——27. SpringBoot基础
一、springboot介绍Spring Boot让我们的Spring应用变的更轻量化。Spring Boot的主要优点:1)为所有Spring开发者更快的入门2)开箱即用,提供各种默认配置来简化项目配置3)内嵌式容器简化Web项目4)没有冗余代码生成和XML配置的要求系统要求Java1.8及以上Spring Framework 4.1.5及以上本文采用Java 1.8...原创 2019-02-19 10:01:53 · 177 阅读 · 0 评论 -
java架构学习——28. SpringBoot高级
一、springboot整合多数据源项目目录:数据库目录:建表语句:CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `age` int...原创 2019-02-19 10:40:57 · 226 阅读 · 0 评论 -
java架构学习——8. Socket网络通讯基础&TCP协议&UDP协议
一、基本概念端口号的作用:定位到应用程序。每个端口对应一个唯一的程序。IP地址的作用:具体定位到某台计算机。在网络中只能使用IP地址进行数据传输,所以在传输以前,需要把域名转换为IP,这个由称作DNS的服务器专门来完成。网络模型图:http协议底层使用tcp协议进行连接。什么是SocketSocket就是为网络服务提供的一种机制。通讯的两端都有Sokcet网络通讯其实就是Sok...原创 2019-02-13 16:52:37 · 209 阅读 · 0 评论 -
java架构学习——9. NIO编程基础
一、NIO概述Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。Java NIO: Channels and Buffers(通道和缓冲区)标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中...原创 2019-02-13 17:31:44 · 101 阅读 · 0 评论 -
java架构学习——29. Redis基础与高级
一、概述Java缓存机制Java中要用到缓存的地方很多,首当其冲的就是持久层缓存,针对持久层谈一下:要实现java缓存有很多种方式,最简单的无非就是static HashMap,这个显然是基于内存缓存,一个map就可以搞定引用对象的缓存,最简单也最不实用,首要的问题就是保存对象的有效性以及周期无法控制,这样很容易就导致内存急剧上升,周期无法控制可以采用SoftReference,Weak...原创 2019-02-19 16:20:01 · 147 阅读 · 0 评论 -
java架构学习——10. NIO高级编程与Netty入门
一、NIO同步阻塞与同步非阻塞IO(BIO)和NIO区别:其本质就是阻塞和非阻塞的区别阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,就会一直等待,直到传输完毕为止。非阻塞概念:应用程序直接可以获取已经准备就绪好的数据,无需等待。IO为同步阻塞形式,NIO为同步非阻塞形式,NIO并没有实现异步,在JDK1.7后升级NIO库包,支持异步非阻塞通讯模型NIO2.0(AIO)...原创 2019-02-14 09:15:38 · 151 阅读 · 0 评论 -
java架构学习——11. Netty高级
一、TCP粘包、拆包问题解决方案什么是粘包/拆包一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题。下面可以看一张图,是客户端向服务端发送包:1.) 第一种情况,Data1和Data2都分开发送到了Server端,没有产生粘包和拆包的情况。2.)第二种情况,Data1和Data2数据粘在了一起,打成了一个大...原创 2019-02-14 09:50:14 · 261 阅读 · 0 评论 -
java架构学习——12. JVM参数调优配置
一、 自动内存管理机制Java虚拟机原理所谓虚拟机,就是一台虚拟的机器。他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box、Vmare就属于系统虚拟机,他们完全是对物理计算的仿真,提供了一个可以运行完整操作系统的软件平台。程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我...原创 2019-02-14 11:34:52 · 293 阅读 · 0 评论 -
java架构学习——6. 数据交换格式与SpringIOC底层实现
一、数据交换格式JSON简单使用JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过JSON来进行交换。常用JSON解析框架:fastjson(阿里)、gson(谷歌)、jackson(SpringMVC自带)以下案例使用...原创 2019-02-12 18:01:09 · 158 阅读 · 0 评论 -
java架构学习——5. 线程池原理剖析&锁的深度化
一、线程池什么是线程池Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗...原创 2019-02-12 16:25:05 · 254 阅读 · 1 评论 -
java架构学习——2. 多线程线程安全
一. 当我们编写程序的时候可能会绕不过去线程安全问题,遇到了又如何解决呢?首先先来看看下面几个问题,在问题的回答中你可能会找到答案。为什么有线程安全问题?当多个线程同时共享同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。如何解决多线程之间线程安全问题?使用多线程之间同步synchronized(自动挡)或使用锁(l...原创 2019-02-11 16:25:54 · 188 阅读 · 0 评论 -
java架构学习——13. 垃圾回收机制算法分析&使用Jmeter压力测试工具
一、基本概念什么是垃圾回收机制?垃圾回收机制不定时,向堆内存清理不可达对象。手动GC回收代码演示:public class GcDemo { public static void main(String[] args) { GcDemo gc = new GcDemo(); //将对象设置为不可达,垃圾回收机制将对其进行回收 gc = null; //手动...原创 2019-02-14 16:18:38 · 361 阅读 · 0 评论 -
java架构学习——14. Maven项目管理工具
1、 什么是mavenMaven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理。如图为项目构建的过程:解决的项目的问题:如果有好几个项目,这好几个项目中,需要用到很多相同的jar包,能不能只建立一个仓库来解决这个问题?测试方法能不能全部运行呢?怎么样把一个模块的功能放入到仓库中2、Maven的安装与配置2.1 下载安装包官网:http://mav...原创 2019-02-14 16:44:42 · 161 阅读 · 0 评论 -
java架构学习——15. Cookie与Session实现原理&外网映射工具的使用
一、Web开发入门1、软件的结构C/S (Client - Server 客户端-服务器端)典型应用:QQ软件 ,飞秋,红蜘蛛。特点:1)必须下载特定的客户端程序。2)服务器端升级,客户端升级。B/S (Broswer -Server 浏览器端- 服务器端)典型应用: 腾讯官方(www.qq.com) 163新闻网站, 蚂蚁课堂官网(俗称:网站)特点:1)不需要安装特定的...原创 2019-02-15 11:06:02 · 459 阅读 · 0 评论 -
java架构学习——16. 深入理解Http协议&反盗链技术&使用时间戳解决浏览器缓存
一、深入理解Http协议1、什么是http协议对浏览器客户端和服务器端之间数据传输的格式规范。2、http协议内容2.1 请求(浏览器-》服务器)Accept: text/html,image/* - - 浏览器接受的数据类型Accept-Charset: ISO-8859-1 - - 浏览器接受的编码格式Accept-Encoding: gzip,compre...原创 2019-02-15 11:33:22 · 248 阅读 · 1 评论 -
java架构学习——17. 表单重复提交&防止模拟请求&跨域解决方案&XSS攻击
一、http长连接与短连接在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。但从 HTTP/1.1起,默认使用长连接,用以保...原创 2019-02-15 11:56:58 · 725 阅读 · 1 评论 -
java架构学习——20. MySQL优化1
一、MySQL如何优化表的设计合理化(符合3NF)添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]SQL语句优化分表技术(水平分割、垂直分割)读写[写: update/delete/add]分离存储过程 [模块化编程,可以提高速度]对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ]mysql服务器硬件升级定时的去清除不...原创 2019-02-15 14:14:20 · 123 阅读 · 0 评论 -
java架构学习——21. MySQL优化2
一、索引索引用来快速地寻找那些具有特定值的记录,所有MySQL索引的实现通常使用 B 树及其变种 B+ 树。树的形式保存,采用折半查询。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录...原创 2019-02-15 15:37:18 · 132 阅读 · 0 评论 -
java架构学习——22. MySQL读写分离&Mybatis基础知识
一、MySql主从复制mysql主具有读写的权限,而mysql从只具有读的权限。主从服务器通过长链接传输二进制SQL执行文件实时数据同步,如果同步不一致,清除从服务器的所有数据,重新同步。1. mysql主从复制的作用:读写分离、数据备份、高可用(解决方案)、集群。2. MySql主从复制的配置:2.1 主(master)配置如下:root用户执行以下命令:1)修改/etc/my.cn...原创 2019-02-15 17:48:36 · 185 阅读 · 0 评论 -
java架构学习——3. 多线程之间实现通讯
什么是多线程之间通讯?多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。例如:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。代码演示:/** * 共享资源源实体类 * */class People{ String name; String sex;}/** * 写线程类 * */class Outp...原创 2019-02-11 17:55:22 · 217 阅读 · 0 评论 -
java架构学习——4. java并发包&信号量&并发队列
一、同步容器类Vector与ArrayList区别:ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插...原创 2019-02-12 15:33:46 · 275 阅读 · 0 评论