- 博客(42)
- 资源 (16)
- 收藏
- 关注
原创 CSS学习
CSS相关学习flex布局flex简单运用flex-wrap自动换行flex-grow的运用flex对齐方式综合布局后台框架布局基础表单布局滚动实现网格布局手机框架布局动画简介JS事件监听画布简介flex布局flex简单运用效果图代码块<!DOCTYPE html><html><head><meta charset="utf-8"> <title>flex学习</title><style>
2021-05-12 21:49:35
186
1
原创 Cookie和Session的详解和区别
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。
2020-06-28 15:59:38
313
转载 Java 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)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写...
2020-04-15 15:59:09
154
原创 Java NIO系列教程(十一) NIO与IO
我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。Java NIO和IO的主要区别IONIO面向流面向缓存阻塞IO非阻塞IO无选择器面向流与面向缓冲Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味...
2020-04-15 15:57:40
156
原创 Java NIO系列教程(十) DatagramChannel
Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。打开 DatagramChannel下面是 DatagramChannel 的打开方式:DatagramChannel channel = DatagramChannel.open();channel.socket().bin...
2020-04-15 14:57:14
202
原创 Java NIO系列教程(九) ServerSocketChannel
Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。例如:ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); server...
2020-04-15 14:39:54
259
原创 Java NIO系列教程(八) SocketChannel
Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:打开一个SocketChannel并连接到互联网上的某台服务器。一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。打开 SocketChannel下面是SocketChannel的打开方式:SocketCha...
2020-04-15 14:29:54
161
原创 Java NIO系列教程(七) FileChannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来获取一个F...
2020-04-15 14:13:23
151
原创 Java NIO系列教程(六) Selector
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。为什么使用Selector仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通道。对于操作系统来说,线程之间上下文切换的开销很大,而且每个线程都...
2020-04-14 17:17:25
122
原创 Java NIO系列教程(五) 通道之间的数据传输
在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。transferFrom()FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节从给定的可读取字节通道传输到此通道的文件中...
2020-04-14 16:22:24
119
原创 Java NIO系列教程(四) Scatter/Gather
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。聚集(gath...
2020-04-14 16:03:11
134
原创 Java NIO系列教程(三) Buffer
Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。Buffer的基本用法使用Buffer读写数据一般遵循以下四个步骤:写入数据到Buffer调用flip()方法从Buffer中...
2020-04-14 15:44:43
124
原创 Java NIO系列教程(二) Channel
Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。Channel的实现这些是Java NIO中最重要的通道的实现:FileChannel: 从文件中读写数据DatagramChannel: 能通过UDP读写网络中的数据...
2020-04-14 14:36:06
2227
原创 Java NIO系列教程(一) Java NIO 概述
Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectorsChannel 和 Buffer基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。如下图示:Channel和Buffer有好几种类型。下面是JAVA NIO中的一...
2020-04-14 14:25:48
182
转载 基于vue和springmvc前后端分离,json类接口调用介绍
1、maven配置<!-- spring --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>3.2.9.RELEASE</versi...
2020-01-07 16:59:29
769
原创 thymeleaf+springboot+mybatis(PageHelper分页插件)
thymeleaf结合springboot实现分页展示功能;mybatis集成PageHelper分页插件可以实现后台数据查询功能以及返回数据封装效果如下pom.xml配置<!--mybatis--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifact...
2019-12-27 17:11:10
711
3
原创 Java查找算法
顺序查找从第一个到最后一个纪录依次与给定值比较,若相等则查找成功/** * 顺序表查找 * 数组下标为0的位置不用来储存实际内容 * @author Yongh * */public class Sequential_Search { /* * 顺序查找 */ public int seqSearch(int[] arr,int key) { ...
2019-12-19 16:43:25
167
原创 计算数字阶乘几种方法
方法一:迭代法public static int iteration (int n) { int ret = 1; for (int i=1;i <= n;i++){ ret *= i; } return ret;}方法二:递归法首递法public static int headRecursion (int n) { r...
2019-10-31 16:57:54
1009
原创 Java并发编程实战
生产者和消费者模式生产者和消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通信,而是通过阻塞队列来进行通信,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。Java中的线程池类其实就是一种生产者和消费者模式的实现方式,但是我觉得其实现方...
2019-10-12 10:41:45
187
原创 Executor框架
Executor框架简介Java的线程既是工作单元,也是执行机制。从JDK 5开始,把工作单元与执行机制分离开来。工作单元包括Runnable和Callable,而执行机制由Executor框架提供。框架结构·Executor是一个接口,它是Executor框架的基础,它将任务的提交与任务的执行分离开来。·ThreadPoolExecutor是线程池的核心实现类,用来执行被提交的任...
2019-10-12 10:25:01
161
原创 Java中的线程池
在工作中我经常发现,很多人因为不了解线程池的实现原理,把线程池配置错误,从而导致了各种问题。本章介绍了为什么要使用线程池、如何使用线程池和线程池的使用原理,相信阅读完本章之后,读者能更准确、更有效地使用线程池。
2019-10-11 15:50:56
96
原创 Java中的并发工具类
等待多线程完成的CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。public class JoinCountDownLatchTest { public static void main(String[] args) throws InterruptedException { Thread parser1 = new Thread(new...
2019-10-09 17:13:28
91
原创 Java中的13个原子操作类
在Atomic包里一共提供了13个类,属于4种类型的原子更新方式,分别是原子更新基本类型、原子更新数组、原子更新引用和原子更新属性(字段)。Atomic包里的类基本都是使用Unsafe实现的包装类。原子更新基本类型类使用原子的方式更新基本类型,Atomic包提供了以下3个类:·AtomicBoolean:原子更新布尔类型。·AtomicInteger:原子更新整型。·AtomicLong...
2019-10-09 14:56:07
92
原创 Java并发容器和框架
本章介绍了Java中提供的各种并发容器和框架,并分析了该容器和框架的实现原理,从中我们能够领略到大师级的设计思路,希望读者能够充分理解这种设计思想,并在以后开发的并发程序时,运用上这些并发编程的技巧。
2019-10-08 17:58:15
100
原创 Java中的锁
Lock接口锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用...
2019-09-30 16:45:44
128
原创 Java并发编程基础
线程简介在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10,在线程构建的时候可以通过setPriority(int)方法来修改优先级,默认优先级是5,优先级高的线程分配时间片的数量要多于优先级低的线程。新建(new):新创建了一个线程对象。可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。...
2019-09-29 17:30:45
94
原创 Java内存模型
Java内存模型(JMM)基础JMM通过控制主内存与每个线程的本地内存之间的交互,来为Java程序员提供内存可见性保证。JMM属于语言级的内存模型,它确保在不同的编译器和不同的处理器平台之上,通过禁止特定类型的编译器重排序和处理器重排序,为程序员提供一致的内存可见性保证。重排序重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。在执行程序时,为了提高性能,编译器...
2019-09-29 11:38:06
154
原创 Java并发机制的底层实现原理
volatile的应用volatile的两条实现原则:1)Lock前缀指令会引起处理器缓存回写到内存。2)一个处理器的缓存回写到内存会导致其他处理器的缓存无效。synchronized的的实现原理和应用重量级锁·对于普通同步方法,锁是当前实例对象。·对于静态同步方法,锁是当前类的Class对象。·对于同步方法块,锁是Synchonized括号里配置的对象。monitorent...
2019-09-25 15:38:29
101
原创 第十三章 线程安全和锁优化
概述人们很难想象现实中的对象在一项工作进行期间,会被不停地中断和切换,对象的属性(数据)可能会在中断期间被修改和变“脏”,而这些事情在计算机世界中则是很正常的事情。有时候,良好的设计原则不得不向现实做出一些让步,我们必须让程序在计算机中正确无误地运行,然后再考虑如何将代码组织得更好,让程序运行更快。对于“高效并发”来说,首先需要保证并发的正确性,然后在此基础上实现高效。线程安全“线程安全”有...
2019-09-16 18:03:19
101
原创 第十二章 Java内存模型与线程
概述并发应用场景:①充分利用计算机处理器的能力;②一个服务端同时为多个客户端提供服务。衡量一个服务性能的高低好坏,每秒事务处理数是最重要的指标之一。硬件的效率与一致性Java内存模型主内存和工作内存①Java内存模型的主要目标是定义程序中各个变量的访问规则 – 虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variables)包括了实例字段、静态字段和构成数...
2019-09-16 16:10:00
133
转载 第十一章 晚期(运行期)优化
“热点代码”(Hot Spot Code): 运行特别频繁的方法或代码块;为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler,下文中简称JIT编译器)。“热点代码”有两类:①被多次调用的方法 – 这是由方法调用触发的编译,因此编译器理会以整个方法作为编译对象...
2019-09-12 17:50:32
262
原创 第十章 早期(编译期)优化
概述编译器分类:前端编译器:把 *.java 文件转变成 .class 文件的过程;JIT编译器:把字节码转变成机器码;AOT编译器:直接把 *.java 文件编译成本地机器码;Javac编译器解析与填充符号表①词法、语法分析:词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是程序编写的最小元素,而标记则是编译过程的最小元素;语法分析是根据Token序列来构...
2019-09-11 17:40:57
272
原创 第九章 类加载及执行子系统的案例与实战
Tomcat:正统的类加载器架构一个功能健全的类加载器,都要解决以下几个问题:(1)部署在同一服务器上的两个web应用程序所使用的java类库可以实现相互隔离。这是最基本的需求,两个不同的应用程序可能会依赖同一个第三方类库的不同版本,不能要求一个类库在一个服务器中只有一份,服务器应当可以保证两个应用程序的类库可以相互独立使用。(2)部署在同一个服务器上的两个web应用程序所使用的java类库...
2019-08-27 17:54:22
144
原创 第五章 调优案例分析与实战
案例分析B/S:“浏览器/服务器”模式,好处就是维护和升级方式简单,客户端是浏览器基本不需要维护,只需要维护升级服务器端就可以C/S:“客户端/服务器”模式,好处就是可以降低通信成本且更安全,但升级维护比较困难高性能硬件上的程序部署策略通过64为JDK来使用大内存面临问题:①内存回收导致长时间停顿②64位JDK性能低于32位JDK③产生堆溢几乎无法产生堆转储快照(产生的文件...
2019-08-01 14:29:06
188
原创 第四章 虚拟机性能监控与故障处理工具
JDK的命令行工具JDK可视化工具JConsole:Java监视与管理控制台通过JDK/bin 目录下的jconsole.exe启动VisualVM:多合一故障处理工具
2019-07-31 17:07:31
101
原创 第三章 垃圾收集器与内存分配策略
内存回收与垃圾收集器在很多时候都是影响系统性能、并发能力的主要因素之一,因此必须了解每个具体收集器的的行为、优势、劣势和调节参数
2019-07-31 14:48:56
71
Lucene数据搜索笔记
2022-04-08
MySQL数据库学习笔记
2022-04-08
uml项目开发软件安装流程
2022-04-08
svn在项目中的使用以及学习
2022-04-08
struts项目学习笔记
2022-04-08
spring项目开发学习笔记
2022-04-08
linux的介绍和虚拟机安装流程
2022-04-08
hibernate完整学习
2022-04-08
军训班主任心得(一).doc
2022-04-08
购物商城技术代码.zip
2020-08-06
nginx+ftp图片上传服务器和访问.rar
2019-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人