
java
文章平均质量分 74
weixin_40657079
这个作者很懒,什么都没留下…
展开
-
two-phase termination模式-- 先收拾房间再睡觉
定义:分两段终止。她是一种先执行完终止处理再终止线程的模式。引例:类的一览表 名字 说明 countupthread 表示技术的线程的类 main 测试行为的类 public class CountupThread extends Thread { // 计数器的值 private long counter = 0; //...翻译 2019-03-10 14:15:01 · 155 阅读 · 0 评论 -
thread-specific stroage模式 一个线程一个储物柜
定义:thread-specific stroage模式 是一种即使只有一个入口,也会在内部为每个线程分配特定的空间的模式引例:不用thread-specific stroage模式 的实例public class Log { private static PrintWriter writer = null; // 初始化writer字段 stati...转载 2019-03-02 14:27:04 · 132 阅读 · 0 评论 -
Future模式 --先给你提货带
定义:获取Future角色的线程会在稍后使用Future角色来获得运行的结果。引例:类的一览表 名字 说明 main 向host发出请求并获取数据 data 表示访问数据方法的接口。 host 向请求返回futuredata实例的类 futuredata 表示提货带类 realdata 表示真实数据 public clas...翻译 2019-03-10 14:08:23 · 167 阅读 · 0 评论 -
Worker Thread模式--工作没来就一直等,工作来了就干活
定义:Worker Thread模式也叫背景模式或者线程池模式,工作线程逐个取回并处理,在所有工作完全完成后,线程等待新的工作到来。引例:类的一览表 名字 说明 main 测试行为类 clientthread 表示发出工作的类 request 表示工作请求的类 channel 接受工作并将工作请求交给工人线程 workerthread...翻译 2019-03-10 13:59:13 · 424 阅读 · 0 评论 -
Thread-Per-Message模式 这项工作交给你
定义:在Thread-Per-Message模式中,消息的委托者和执行者是不同线程的,消息的委托者把消息的交给执行者去执行。引例类的一览表 名字 说明 mian 向host发送 字符显示请求的类 host 针对请求创建的类 helper 提供字符显示功能的被动类 public class Main { public static vo...翻译 2019-03-10 13:47:28 · 155 阅读 · 0 评论 -
Read-Write Lock模式 --大家一起读可以,读的时候不要写
定义:线程执行读取操作时,实例的状态不会发生改变,所以多个线程可以同时读取。线程执行写取操作时,实例的状态可能会发生改变,所以多个线程不可以同时写入。引例类的一览表 名字 说明 main 测试行为的类 data 可以读写的类 writerthread 写入线程 readthread 读取线程 readwritelock 提供读写...翻译 2019-03-10 13:32:43 · 341 阅读 · 0 评论 -
Producer-Consumer--生产者消费者
定义:Producer-Consumer--生产者消费者模式:生产者将数据交给消费者。引例:类的一览表 名字 说明 main 测试行为类 makethread 厨师类 eaterthread 客人类 table 桌子类 /* * * ProducerConsumer中的角色 * 1.producer * ...翻译 2019-03-02 14:12:39 · 455 阅读 · 0 评论 -
Balking模式--不需要就算了
定义:Balking模式也有守护条件,如果守护条件不成立,立即中断处理。引例名字 说明 Data SaverThread ChangeThread Main public class Data { private String filename; //修改是的名字 private String ...翻译 2019-02-28 18:41:15 · 252 阅读 · 0 评论 -
Guarded Suspension模式 --等我准备好
定义:Suspension模式通过线程等待来保证实例的安全性。引例类的一览表 名字 说明 Request 请求类 RequestQueue 依次存放求情的类 ClientThread 发送请求类 ServerThread 接受请求类 Main 测试行为类 public class Request { private fi...翻译 2019-02-28 18:22:27 · 167 阅读 · 0 评论 -
immutable模式--想破坏也破坏不了
定义:immutable模式存在着确保实例状态不发生改变的类。在访问这些事例时不需要执行互斥的处理。引例:这是一个使用了immutable模式的小例子。类的一览表 名字 说明 person 人的类 main 测试行为类 printpersonthread 显示person示例的线程类 /* * * 1.final class Perso...翻译 2019-02-28 18:03:10 · 237 阅读 · 0 评论 -
Single Threaded Execution
定义Single Threaded Execution模式定义:同一时间能够执行的线程只有一个。引例一次只允许一个人通过的门类说明 名字 说明 Main 创建门,让3个人不断通过 Gate 门,通过时记录姓名和出生地。如果姓名和出生地不一致,拒绝通过 UserThread 人,人们不断通过门 public class Main { p...翻译 2019-02-28 17:34:23 · 161 阅读 · 0 评论 -
深入理解JVM-内存区域与内存溢出
JVM运行时数据区域PC寄存器:每个线程拥有一个PC寄存器 在线程创建时 创建 指向下一条指令的地址 执行本地方法时,PC的值为undefined 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,一个处理器都只会执行一条线程中的指令。因此,为了线程切换后能...转载 2019-02-03 09:30:28 · 219 阅读 · 1 评论 -
水滴石穿--多线程安全同步与锁
什么是线程安全?当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为, 那么这个类(对象或方法)就是线程安全的。java内存模型 在说明多线程安全问题前,要明白java内存模型。为什么有线程安全问题?当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。经典售票问题...原创 2018-12-12 13:26:41 · 138 阅读 · 0 评论 -
水滴石穿--多线程入门
前记:鄙人大三信息管理与信息系统专业,写这一个系列的目的就是为了好好磨磨自己的秉性,再好好从基础一步一步走一遍,顺便总结总结自己写代码时才过的坑,也为下一次机会做准备。这一学年我通过传智播客视频课的形式学习了JAVA EE,又在假期好好看了一些计算机方向的书籍,自以为有所收获(其实自己是过于自信)。一次学校导员发的一个百度javaee实习信息,我就自不量力的附上了自己的简历去试试,人家直接电话...原创 2018-12-12 10:27:59 · 131 阅读 · 0 评论 -
深入理解JVM-GC 回收算法
如何判断对象是否存活引用计数法概念引用计数法就是如果一个对象没有被任何引用指向,则可视之为垃圾。这种方法的缺点就是不能检测到环的存在。首先需要声明,至少主流的Java虚拟机里面都没有选用引用计数算法来管理内存。什么是引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器值减1.任何时刻计数器值为0的对象就是不可能再被使用的。那为什么...转载 2019-03-02 15:25:37 · 164 阅读 · 0 评论 -
深入理解JVM-垃圾收集器&&性能工具
JVM参数配置JVM提供了诸多的参数进行JVM各个方面内存大小的设置,为Java应用进行优化提供了诸多的工具,本文将会详细分析各个参数的功能与使用。常见参数配置-XX:+PrintGC 每次触发GC的时候打印相关日志-XX:+UseSerialGC 串行回收-XX:+PrintGCDetails 更详细的GC日志-Xms 堆...转载 2019-03-02 16:07:27 · 96 阅读 · 0 评论 -
高并发与高可用实战(七)高并发服务限流特技
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限...转载 2019-04-02 16:33:07 · 362 阅读 · 0 评论 -
高并发与高可用实战(六)高并发服务降级特技
背景在今天,基于SOA的架构已经大行其道。伴随着架构的SOA化,相关联的服务熔断、降级、限流等思想,也在各种技术讲座中频繁出现。本文将结合Netflix开源的Hystrix框架,对这些思想做一个梳理。伴随着业务复杂性的提高,系统的不断拆分,一个面向用户端的API,其内部的RPC调用层层嵌套,调用链条可能会非常长。这会造成以下几个问题:API接口可用性降低引用Hystrix官方的一个...转载 2019-04-02 16:15:20 · 271 阅读 · 0 评论 -
互联网API开放平台安全设计(一)--Web安全漏洞
什么是XSS攻击手段XSS攻击使用Javascript脚本注入进行攻击例如在提交表单后,展示到另一个页面,可能会受到XSS脚本注入,读取本地cookie远程发送给黑客服务器端。<script>alert('sss')</script><script>window.location.href='http://www.itmayiedu.com';...转载 2019-03-13 20:22:04 · 971 阅读 · 0 评论 -
高并发与高可用实战(一)基础
DNS域名解析整个过程大体描述如下,其中前两个步骤是在本机完成的,后8个步骤涉及到真正的域名解析服务器:1、浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好,如果时间太...转载 2019-03-13 20:33:42 · 183 阅读 · 0 评论 -
大数据基础-Storm基础(一)
1、流式计算是什么 流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示 代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。 一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果2、离线计算与实时计...转载 2019-04-16 17:04:20 · 271 阅读 · 0 评论 -
大数据基础-Hadoop RPC框架
什么是RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。...原创 2019-03-14 12:00:49 · 255 阅读 · 0 评论 -
大数据基础-HBASE
hbase简介 什么是hbaseHBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Goo...转载 2019-03-09 18:21:42 · 127 阅读 · 0 评论 -
大数据基础-HIVE辅助系统
前言在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示:1. 日志采集框架Flume1.1 Flume介绍1.1.1 概述Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。 ...转载 2019-03-09 17:57:11 · 1054 阅读 · 0 评论 -
大数据基础-HIVE
Hive基本概念Hive简介 什么是HiveHive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。为什么使用Hive直接使用hadoop所面临的问题人员学习成本太高项目周期要求太短MapReduce实现复杂查询逻辑开发难度太大为什么要使用Hive操作接口采用类SQL语法,提供快速开发的能力。...转载 2019-03-09 16:48:37 · 246 阅读 · 0 评论 -
大数据基础-Hadoop HDFS开发
******HDFS应用开发篇******HDFS的java操作hdfs在生产应用中主要是客户端的开发,其核心步骤是从hdfs提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件搭建开发环境1、引入依赖<dependency> <groupId>org.apache.hadoop</gro...转载 2019-03-09 16:07:02 · 158 阅读 · 0 评论 -
大数据基础-Hadoop原理
hdfs的工作机制(工作机制的学习主要是为加深对分布式系统的理解,以及增强遇到各种问题时的分析解决能力,形成一定的集群运维能力)注:很多不是真正理解hadoop技术体系的人会常常觉得HDFS可用于网盘类应用,但实际并非如此。要想将技术准确用在恰当的地方,必须对技术有深刻的理解概述HDFS集群分为两大角色:NameNode、DataNode NameNode负责管理整个文件...转载 2019-03-09 15:49:40 · 1276 阅读 · 0 评论 -
大数据基础-Hadoop基础
什么是HADOOPHADOOP是apache旗下的一套开源软件平台 HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 HADOOP的核心组件有 HDFS(分布式文件系统) YARN(运算资源调度系统) MAPREDUCE(分布式运算编程框架) 广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈分...转载 2019-03-09 15:41:52 · 401 阅读 · 0 评论 -
深入理解JVM-类加载器
类加载的机制的层次结构每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载,这里我们需要了解一下类加载...转载 2019-03-02 16:27:07 · 128 阅读 · 0 评论 -
深入理解JVM-字节码技术
字节码技术字节码技术应用场景AOP技术、Lombok去除重复代码插件、动态修改class文件等字节技术优势 Java字节码增强指的是在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。Java字节码增强主要是为了减少冗余代码,提高性能等。实现字节码增强的主要步骤为:1、修改字节码 在内存中获取到原来...转载 2019-03-02 16:20:59 · 321 阅读 · 0 评论 -
Netty--通信模型演化之传统的BIO(同步阻塞式)
传统的BIO(同步阻塞式)网络编程的基本模型是client/service模型,也就是说两个进程之间进行的相互通信,服务器提供位置服务(绑定ip地址和监听端口),客户端通过连接操作向服务器发起连接请求,通过三次握手建立连接,如果连接成功,双方就进行网络套接字进行通信。在基于传统同步阻塞模型开发中,servicesocket负责绑定ip地址启动监听端口,socket负责连接操作。连接成功后双...原创 2018-08-21 16:01:29 · 156 阅读 · 0 评论 -
JavaEE--Js原生Ajax和Jquery的Ajax
一、Ajax概述 1.什么是同步,什么是异步同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随 意做其他事情,不会被卡死 2.Ajax的运行原理页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到 服务器端,在...原创 2018-08-28 15:11:06 · 199 阅读 · 0 评论 -
JavaEE--过滤器Filter
一、过滤器Filter 1.filter的简介 filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目 标资源访问前后进行逻辑处理 2.快速入门步骤:编写一个过滤器的类实现Filter接口 实现接口中尚未实现的方法(着重实现doFilter方法) 在web.xml中进行配置(主要是配置要对哪些资源进行过滤) 3.Fi...原创 2018-08-28 15:21:44 · 321 阅读 · 0 评论 -
JavaEE--监听器Listener
一、监听器Listener javaEE包括13门规范 在课程中主要学习 servlet技术 和 jsp技术其中 servlet规范包括三个技术点:servlet listener filter2.什么是监听器?监听器就是监听某个对象的的状态变化的组件监听器的相关概念:事件源:被监听的对象 ----- 三个域对象 request session servletCo...原创 2018-08-28 11:40:54 · 927 阅读 · 0 评论 -
JavaEE--动态页面技术jsp
一、JSP技术 1.jsp脚本和注释 jsp脚本:<%java代码%> ----- 内部的java代码翻译到service方法的内部 <%=java变量或表达式> ----- 会被翻译成service方法内部out.print() <%!java代码%> ---- 会被翻译成servlet的成员的内容 jsp注释: 不同的注释可...原创 2018-08-28 10:34:55 · 347 阅读 · 0 评论 -
JavaEE--会话技术Cookie&Session
一、会话技术简介1.存储客户端的状态由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪 里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并 不知道该客户端是谁,所以需要会话技术识别客户端的状态。会话技术是帮助服务器 记住客户端状态(区分客户端)2.会话技术从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,...原创 2018-08-28 10:23:07 · 202 阅读 · 0 评论 -
JavaEE--HttpServletRequest
1.HttpServletRequest概述我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpS...原创 2018-08-28 10:02:34 · 283 阅读 · 0 评论 -
JavaEE--HttpServletResponse
1.HttpServletResponse概述我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。service方法中的response的类型是ServletResponse,而doGet/doPost方法的response的类型是HttpServletResponse,...原创 2018-08-28 09:08:17 · 155 阅读 · 0 评论 -
JavaEE--反射
反射1、什么是反射技术?动态获取指定类以及类中的内容(成员),并运行其内容。应用程序已经运行,无法在其中进行new对象的建立,就无法使用对象。这时可以根据配置文件的类全名去找对应的字节码文件,并加载进内存,并创建该类对象实例。这就需要使用反射技术完成2、获取class对象的三种方式获取Class对象的方式一:通过对象具备的getClass方法(源于Object类的方法...原创 2018-08-20 20:44:15 · 346 阅读 · 0 评论 -
JavaEE--JDBC连接池&&增删改查
需求:传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序.* 在程序开始的时候,可以创建几个连接,将连接放入到连接池中.用户使用连接的时候,可以从连接池中进行获取.用完之后,可以将连接归还连接池.技术分析:* SUN公司提供了一个连接池的接口.(javax.sql.DataSource).* 定义一个连接池:...原创 2018-08-20 20:32:56 · 700 阅读 · 0 评论