自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

转载 office标准格式

%USERPROFILE%\AppData\Roaming\Microsoft\Templates目录下存放了模板文件,使用正确的模板文件替换掉即可。转载于:https://www.cnblogs.com/WJQ2017/p/10873852.html

2019-07-03 18:42:00 223

转载 Java实现生产者与消费者模式

  生产者不断向队列中添加数据,消费者不断从队列中获取数据。如果队列满了,则生产者不能添加数据;如果队列为空,则消费者不能获取数据。借助实现了BlockingQueue接口的LinkedBlockingQueue来模拟同步。 1 import java.util.Random; 2 import java.util.concurrent.BlockingQueue; 3 ...

2018-08-22 17:13:00 184

转载 Java 工厂模式

  工厂模式概念:  1 工厂方法代替直接new操作。  2 工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式。    工厂模式意图:  1 定义一个接口来创建对象,由子类来决定实例化哪些类。  2 实例化工作交给子类去实现。    适合工厂模式的情况:  1 创建一组类似的对象。  2 不能预见哪个类实例需要实例化。  3 考虑扩展性...

2018-02-22 10:13:00 178

转载 数据结构 递归和非递归方式实现二叉树先序、中序和后序遍历

  二叉树的先序遍历顺序是根、左、右;中序遍历顺序是左、根、右;后序遍历顺序是左、右、根。  递归方式实现如下: 1 public class TreeNode { 2 private int value; 3 private TreeNode left, right; 4 5 public TreeNode(int data...

2018-02-15 18:13:00 281

转载 数据结构 堆排序

  堆排序是一种树形选择排序方法。在排序过程中,将L[1...n]看成是一棵完全二叉树的顺序存储结构,通过完全二叉树的双亲结点(parent)和孩子结点之间的内在关系,在当前无序区中选择最大(或最小)的元素。  堆的定义:n个关键字序列L[1...n]称为堆,当且仅当该序列满足:  1 L[i]<=L[2i]且L[i]<=L[2i+1]  2L[i]>=L...

2018-02-13 11:09:00 247

转载 数据结构 选择排序

  选择排序的基本思想:每一趟(例如第i趟)在后面n-i+1(i=1,2,...,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第n-1趟结束,待排序元素只剩下1个,不用再选了。  参考资料  《2017年数据结构联考复习指导》P295-296转载于:https://www.cnblogs.com/WJQ2017/p/8446256.htm...

2018-02-13 11:07:00 104

转载 Java 什么是线程安全

  当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的。其中,正确性指某个类的行为与其规范完全一致。  参考资料  《Java并发编程实战 中文版》P13转载于:https://www.cnblogs.com/WJQ2017/p/8445578.h...

2018-02-12 21:22:00 120

转载 Java 跨平台原理

  Java的跨平台基于编译器和虚拟机。其中,CPU处理器和操作系统的整体称为平台。编译器把源文件编译成与平台无关的基于Unicode的字节码class文件,虚拟机把该文件解释成与平台有关的机器码指令,可以在相应平台上执行。  参考资料  为什么JAVA可以跨平台?  Java跨平台原理转载于:https://www.cnblogs.com/WJQ2017/p/84...

2018-02-10 10:45:00 94

转载 Java 面向对象

  Java面向对象有4个特征:  1抽象  提取对象的共性,构成抽象类或接口,由继承抽象类的类或接口的实现类来重写抽象方法。  2继承  子类继承父类(超类、基类),表明子类是一种特殊的父类,具有父类没有的属性或方法。super是离自己最近的父类对象的引用。  3封装  绑定属性和方法,隐藏类的具体实现,提高对象的安全性。  4多态  调用对象的...

2018-02-10 10:00:00 99

转载 Java equals()方法和hashCode()方法

  equals()方法  如果满足了以下任何一个条件,就不需要覆盖equals()方法:  1类的每个实例本质上都是唯一的。  2不关心类是否提供了“逻辑相等”的测试功能。  3 父类已经覆盖了equals,从父类继承过来的行为对于子类也是合适的。  4类是私有的或是包内私有的,可以确定它的equals方法永远不会被调用。  如果类具有自己特有的“逻辑相等...

2018-02-07 14:33:00 117

转载 Java 基础 JRE和JDK的区别

  JRE(Java Runtime Environment,Java运行时环境)是Java程序运行所需的软件环境,包含Java虚拟机和Java基础类库。  JDK(Java Development Kit,Java开发工具包)是程序员编写Java程序所需的开发工具包,包含JRE和编译Java源码的编译器javac等。    如果运行Java程序,只需安装JRE。如果编写Java...

2018-02-05 13:48:00 113

转载 Java 基础 Java平台的3个版本

  Java平台有3个版本:适用于小型设备和智能卡的JavaME(Java Platform Micro Edition,Java微型版)、适用于桌面系统的JavaSE(Java Platform Standard Edition,Java标准版)和适用于企业级应用的JavaEE(Java Platform Enterprise Edition)。而JavaEE是一个开发企业级应用的规范...

2018-02-01 21:33:00 364

转载 Java 标记接口

  没有声明或定义方法的接口称为标记接口(Mark Interface)。某个类实现该接口时不需要重写方法,表明具有接口标记的功能。Java中常用的3个标记接口如下:  1Serializable  java.io.Serializable接口用于标记类是否支持序列化。序列化指将Java对象转换成二进制字节码。如果一个类没有实现该接口,该类实例执行序列化操作,那么JVM会抛出N...

2018-01-29 09:18:00 127

转载 数据结构 红黑树

  作为二叉排序树,红黑树具有如下5个性质:  1 所有结点的颜色是红色或者黑色。  2 根结点是黑色。  3 每个红色结点的孩子结点必须是黑色。  4所有的叶子结点(包含NULL)是黑色。  5 从任意结点出发,到其所有叶子结点的简单路径上都包含相同数量的黑色结点。  它确保没有一条路径会比其他路径长1倍。因此,红黑树是相对接近平衡的二叉树,时间复杂度是...

2018-01-28 14:42:00 110

转载 项目实践总结 存储短信验证码

  存储短信验证码有如下几种方式:  1 Cookie  Cookie存在客户端即浏览器,可以被修改。因此,即使加密了,也不可靠。  2 Session  Session存在服务端即服务器,虽然安全并且可以设置失效时间,但是Session会受到客户端即浏览器的影响,因为关闭浏览器后Cookie不可用会使得Session不可用,即使Session未超时。另外,Session...

2018-01-27 19:31:00 606

转载 Java Web 浏览器关闭后Session就会被销毁吗?

  浏览器关闭后Session就会被销毁吗?  Session是JSP的九大内置对象(也称为隐含对象)中的一个,用于保存当前用户的状态信息,初学者可能认为Session的生命周期是从打开一个浏览器发送请求到关闭浏览器,这是错误的。  Session的运行机制  当用户第一次访问一个支持Session的Web应用时,会开启一个新的Session会话。当用户浏览这个Web应用的不...

2018-01-27 19:14:00 926

转载 Java Web 禁用Cookie对Session的影响

  如果客户端禁用了Cookie,那么服务端就不能得到Session了。因为通过Session ID来确定当前会话对应的服务端Session,而Session ID通过Cookie来传递,所以禁用Cookie相当于失去了Session ID,也就得不到Session了。  禁用Cookie时使用Session即传递Session ID的实现方式如下:  1PHP自动跨页传递...

2018-01-27 16:11:00 1056

转载 Java 接口 新特性(Java8)

  Java8新特性之接口增强  在Java7以及以前的版本中,接口里的方法都是抽象的,并且不存在静态方法,属性默认修饰符是public static final。所有方法的声明都是public [返回类型] [方法名](参数列表) [throws 异常列表]。  Java8定义的接口属性:only public, static & final are permitted...

2018-01-26 14:28:00 180

转载 项目实践总结 修改个人资料时避免不必要的修改

  可以修改个人资料中的昵称、性别和年龄,但是用户可能只修改其中一部分。  改进方案:  1 减少传输的数据量  如果没有修改昵称,那么向后台发送空字符串(有效昵称长度大于0)。之所以不是null,是因为传输null时自动转json的jar包会把它转成空字符串。如果没有修改性别,那么向后台发送0(1表示男,2表示女,3表示保密)。如果没有修改年龄,那么向后台发送0(有效年龄为...

2018-01-26 10:45:00 203

转载 Java 多线程 sleep()方法与yield()方法的区别

  sleep()方法与yield()方法的区别如下:  1 是否考虑线程的优先级不同  sleep()方法给其他线程运行机会时不考虑线程的优先级,也就是说,它会给低优先级的线程运行的机会。而yield()方法只会给相同优先级或更高优先级的线程运行的机会。  2 重新执行时机不同  sleep()方法会使当前线程阻塞,在睡眠时间内不会被执行。而yield()方法只是使当前...

2018-01-25 20:19:00 271

转载 Java 多线程 sleep方法与wait方法的区别

  sleep方法会使线程暂停执行一段时间,wait方法会阻塞线程,直到被唤醒或等待时间超时。  两者区别具体如下:  1 原理不同  sleep方法是Thread类的静态方法,使线程暂停执行一段时间,等到计时结束,该线程会自动“苏醒”。而wait方法是Object类的非静态方法,用于线程间的通信,使线程等待,直到其他线程调用notify方法(或notifyAll方法)时才被...

2018-01-25 20:04:00 135

转载 数据结构 二分查找

  二分查找,即折半查找,仅适用于有序的顺序表。基本思想:将给定值key与表中中间位置元素比较,如果相等则查找成功并返回该元素的存储位置,否则key只能在前半部分或后半部分中(例如,顺序表升序排列时,如果key大于中间元素,那么key只能在后半部分)。在缩小的范围内继续上述过程,直到找到或者确定表中没有key。  在数组{2,4,5,7,8,9,13,23,34,45}中查找元素34...

2018-01-25 15:19:00 369

转载 数据结构 冒泡排序

  基本思想:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素,如果是逆序(A[i-1] > A[i]),那么交换这两个元素,直到序列比较完。这是一趟冒泡,将最小的元素交换到待排序列的第一个位置(最小元素如同气泡一样逐渐往上“漂浮”直至“水面”,这是冒泡排序名字的由来)。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序列减少了一个元素,每趟冒泡把待排序列中的最小元素...

2018-01-25 10:47:00 196

转载 数据结构 归并排序

  归并排序采用了分治的思想(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。归并指将两个或两个以上的有序表组合成一个新的有序表。假设待排序表有n个元素,看成是n个有序的子表,每个子表长度为1,然后两两归并,得到n/2个长度为2或1的有序表,继续两两归并,直到合并成一个长度为n的有序表为止,这种排...

2018-01-24 21:50:00 131

转载 数据结构 AVL树

  AVL(Adelson-Velskii和Landis)树即平衡二叉树,是带有平衡条件(balance condition)的二叉搜索树。平衡二叉树要么是一棵空树,要么左子树和右子树都是平衡二叉树,并且左子树和右子树的高度差的绝对值不超过1。平衡因子BF(Balance Factor)定义为结点左子树与右子树的高度差,也就是说,平衡二叉树结点的平衡因子是-1、0或1。含有n个结点的平衡...

2018-01-24 20:20:00 424

转载 数据结构 快速排序

  快速排序是对冒泡排序的一种改进,是所有内部排序算法中平均性能最优的排序算法。其基本思想是基于分治法的:在待排序数组L[1...n]中任取一个元素pivot作为基准,从数组的两端开始扫描。设两个指示标志(low指向起始位置,high指向末尾),先从后向前扫描(high递减),如果high位置的元素小于pivot,就交换low和high位置的元素,然后从前向后扫描(low递增),如果lo...

2018-01-24 09:59:00 175

转载 Mybatis 传递多个参数

  Mybatis提供了4种传递多个参数的方法:  1 Map  sql语句    接口    调用方法    这个方法虽然简单易用,但是存在一个弊端:Map存储的元素是键值对,可读性不好。  2 注解  使用MyBatis的参数注解@Param(org.apache.ibatis.annotations.Param)。  接口    ...

2018-01-16 21:58:00 166

转载 数据结构 二叉搜索树

  二叉搜索树,又称为二叉查找树和二叉搜索树。它或者是一颗空树,或者具有下列性质的二叉树。  1若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值。  2若它的右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值。  3它的左、右子树也都为二叉搜索树。  构造一颗二叉搜索树,目的不是为了排序,而是为了提高查找、插入和删除关键字的速度。一个有序数据集...

2018-01-16 12:15:00 153

转载 Java 多线程 ReadWriteLock

  ReadWriteLock是JDK 1.5提供的读写分离锁,可以减少锁竞争。例如,线程A1、A2和A3进行写操作,线程B1、B2和B3进行读操作,如果使用重入锁或者内部锁,那么理论上所有读之间、读与写之间和写之间都是串行操作。当B1执行读操作时,B2和B3需要等待。因为读操作不会破坏数据的完整性,所以这种等待是不合理的,读写锁解决了这个问题。在并发情况下,读写锁允许多个线程同时读,使...

2018-01-13 11:32:00 114

转载 Java 基础 集合框架

  Java中的集合从类的继承和接口的实现结构来说,可以分为两大类:  1继承自Collection接口,包含List、Set和Queue等接口和实现类。  2继承自Map接口,主要包含哈希表相关的集合类。  第一类  Collection接口继承和实现结构图如下:  图中的绿色的虚线代表实现,绿色实线代表接口之间的继承,蓝色实线代表类之间的继承,下同。...

2018-01-13 09:36:00 84

转载 Java 多线程 重入锁

  作为关键字synchronized的替代品(或者说是增强版),重入锁是synchronized的功能扩展。在JDK 1.5的早期版本中,重入锁的性能远远好于synchronized,但从JDK 1.6开始,JDK优化了synchronized,使两者性能差距不大。重入锁使用java.util.concurrent.locks.ReentrantLock类来实现。  使用重入锁可以...

2018-01-12 16:07:00 218

转载 Java 多线程 临界区

  临界区表示一种公共资源或共享数据,可以被多个线程使用。但是每一次只能有一个线程使用它。一旦临界区资源被占用,想使用该资源的其他线程必须等待。  例如,办公室里的打印机一次只能执行一个任务。当小王和小明同时需要打印文件,如果小王先下发了打印任务,打印机就开始打印小王的文件,小明的文件只能等待小王打印结束后才能打印。这里的打印机就是一个临界区。  在并发情况下,临界区是受保护的对...

2018-01-12 10:23:00 296

转载 Java 多线程 并发和并行

  并发和并行都可以表示执行多个任务,但是偏重点不同。并发偏重于多个任务交替执行,而多个任务之间有可能是串行的。并行是真正意义上的同时执行。  并发和并行示意图如下:    从严格意义上来说,并行的多个任务是真实的同时执行,而并发的多个任务是交替执行,一会儿运行任务A一会儿运行任务B,系统会不停地在多个任务之间切换。但对于外部观察者来说,即使多个任务之间是串行并发的,也会产生...

2018-01-12 10:08:00 184

转载 Java 多线程 同步和异步

  同步和异步通常用来描述一次方法调用。一旦开始调用同步方法,调用者必须等到方法调用返回后,才能执行后续操作。一旦开始调用异步方法,方法调用会立即返回,调用者可以执行后续操作。异步方法会在另外一个线程中真实地执行,整个过程不会阻碍调用者的工作。对于调用者来说,异步调用似乎是瞬间完成的。如果异步调用需要返回结果,那么当这个异步调用真实完成时会通知调用者。  同步和异步方法调用示意图如下...

2018-01-12 09:43:00 124

转载 Java 多线程 高可用原则

  高可用原则  1 降级  降级开关的设计思路如下:  1. 集中管理开关:把开关推送到各个应用。    2. 可降级的多级读服务:比如服务调用降级为只读本地缓存、只读分布式缓存、只读默认降级数据(如库存状态默认有货)。    3. 前置开关:例如,架构是Nginx->Tomcat,可以将开关前置到Nginx接入层,在Nginx层做开关,请求流量回源后...

2018-01-11 20:26:00 183

转载 Java 基础 在Java中需要使用内存的组件

  Java程序启动后作为一个进程运行在操作系统中,那么这个进程有哪些部分需要分配内存?  1 Java堆  Java堆用于存储Java对象,堆的大小在JVM启动时向操作系统一次性申请完成,通过-Xmx和-Xms来控制大小。其中,Xmx表示堆的最大值,Xms表示堆的初始值。一旦分配完成,堆的大小就固定了,不能在内存不够时再向操作系统重新申请,同时当内存空闲时也不能将多余的空间交还...

2018-01-10 21:53:00 89

转载 Java WebSocket 线程安全的保证

  Java WebSocket线程安全基于3点:  1 在新的客户端连接时,WebSocket容器会创建一个新的端点实例,对应的会话实例表示从唯一的客户端到该端点实例的唯一连接。  2 每个WebSocket端点实例在任意时刻都只能被一个线程调用。  3 当WebSocket消息以片段形式到达时,Java WebSocket API保证以正确的顺序调用相应的端点,并且消息部...

2018-01-09 09:14:00 1179

转载 Java 多线程 创建线程的4种方式

  1继承Thread类,重写run方法。Thread类实现了Runnable接口。  2实现Runnable接口,重写run方法。相比于继承Thread类,可以避免单继承的缺陷和实现资源共享。  举例:假设两个窗口在卖5张火车票。  继承Thread类方式: 1 public class SharedDataThreadDemo { 2 public...

2018-01-05 21:51:00 82

转载 Spring MVC 访问静态资源

  配置web.xml中的DispatcherServlet: 1 <servlet> 2 <servlet-name>SpringMVC</servlet-name> 3 <servletclass> 4 org.springframework.web.servle...

2017-12-17 09:15:00 69

转载 Eclipse 设置Web测试的浏览器

  Window->Preferences->General->Web Browser->选择Use external web browser->选择Default system web browser或者通过点击New...选择目标浏览器->点击Apply->点击OK    参考资料  eclipse运行后在页面浏览器打开...

2017-12-10 16:43:00 284

空空如也

空空如也

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

TA关注的人

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