Java
Java后台小张
就读于南昌大学软件学院
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java中常用集合&线程安全的集合
Java中常用集合(图中忽略中间接口)Collection接口族下的对象都是存的单一值的元素,而Map接口族下存的是key-value结构的数据。其中Set集合需借助Map对象来实现。线程安全的ListArrayList和LinkedList都不是线程安全的,在多线程环境下存在线程安全问题。1.VectorVector通过在方法上加上synchronized关键字修饰来实现线程安全,但Vector的线程安全仅限于单个操作,多个操作并不能保证线程安全。2.Collections.synchro原创 2020-09-25 17:42:28 · 2386 阅读 · 0 评论 -
JVM参数设置
Eden、from、to 的默认比例是 8:1:1,所以只会造成 10% 的空间浪费。-XX:SurvivorRatio 进行配置的(默认为 8)。关于对象老不老,是通过它的年龄(age)来判断的。每当发生一次 Minor GC,存活下来的对象年龄都会加 1。直到达到一定的阈值,就会把这些“老顽固”给提升到老年代。这个阈值,可以通过参数 ‐XX:+MaxTenuringThreshold 进行配置,最大值是 15,因为它是用 4bit 存储的。通过 -XX:+PrintCommandLineFlag原创 2020-08-25 14:55:26 · 236 阅读 · 0 评论 -
Enum枚举类
创建一个枚举类:public enum MyEnum { A("AA"),B("BB"),C("CC"); String value; MyEnum(String value) { this.value = value; }}编译之后,拿到字节码文件进行反编译:public final class MyEnum extends Enum{ public static final MyEnum A; public static final原创 2020-07-08 11:45:47 · 211 阅读 · 0 评论 -
静态代码块&构造代码块
public class MyStatic { private static MyStatic a; private static MyStatic b; private String value; static { System.out.println("静态代码块初始化中。。。"); a = new MyStatic("a"); System.out.println("静态代码块初始化a完毕"); b =原创 2020-07-08 11:21:22 · 290 阅读 · 0 评论 -
线程池的拒绝策略
何时用到拒绝策略当线程池已达到最大线程数且等待队列也满了,此时如何对新增的任务进行处理,就用到了拒绝策略。拒绝策略拒绝策略都是ThreadPoolExecutor类内部的公有静态类,继承自RejectedExecutionHandler接口,创建方式:RejectedExecutionHandler abortPolicy = new ThreadPoolExecutor.AbortPolicy();ThreadPoolExecutor线程池默认的拒绝策略是AbortPolicy。Abor原创 2020-07-05 16:59:40 · 243 阅读 · 0 评论 -
Java线程池
线程基础–线程生命周期线程池jdk提供的线程池jdk的concurrent包的Executors工具类里为我们提供了静态方法,来方便我们创建线程池。1. Executors.newSingleThreadExecutor();/** * Creates an Executor that uses a single worker thread operating * off an unbounded queue. (Note however that if this single转载 2020-07-05 16:21:09 · 175 阅读 · 0 评论 -
三次握手四次挥手
详解转载 2020-04-14 10:23:16 · 229 阅读 · 0 评论 -
海量积分排序
海量积分排序详解采用在内存中构建平衡二叉树的方式,查询排名的时间复杂度为O(log n)。转载 2020-04-10 16:46:40 · 343 阅读 · 0 评论 -
volatile关键字
volatile详解synchronized和lock能保证原子性和可见性,但不能保证指令有序性。volatile能保证可见性和有序性,但不能保证原子性。转载 2020-04-09 18:58:32 · 159 阅读 · 0 评论 -
eureka的二级缓存
eureka缓存机制转载 2020-04-09 17:39:02 · 1192 阅读 · 0 评论 -
设计模式
单例模式工厂模式代理模式装饰者模式责任链模式Reactor模式原创 2020-04-09 16:19:33 · 125 阅读 · 0 评论 -
反应器模式Reactor
原文链接NIO就是采用了Reactor的设计模式,Reactor是一种事件驱动的模式,即检测IO是否就绪,就绪则调用指定的handler进行处理。NIO中这个检测IO是否就绪的角色就是Seletor(多路复用器),Seletor也是一个线程,每个NIO线程都有一个Seletor,Seletor是一个不断循环的线程,当Seletor检测到IO准备就绪后,就会调用指定的handler进行处理。但一...原创 2020-04-08 23:55:22 · 190 阅读 · 0 评论 -
责任链模式
责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。优点: 1、降低耦合度。它将请求的发送者和接...原创 2020-04-08 22:19:37 · 137 阅读 · 0 评论 -
IO流
原文链接为什么需要IO流?当我们在网上下载一个大文件的时候,由于带宽和内存的限制,我们不可能一次性把它下载下来,这个时候我们会用到流,在内存划分一个缓冲区,一点一点慢慢下载,缓存区满了就写到磁盘上。IO流的分类按方向分:输入流、输出流按传输单位分:字节流(8位)、字符流(16位)按处理方式分:节点流、处理流节点流:直接连接数据源的流,可以直接向数据源读写数据处理流:通过构造函数传...转载 2020-04-08 22:08:45 · 173 阅读 · 0 评论 -
面试总结:AOP
AOP(面向切面编程)是OOP的延申。在处理业务的过程中,通过调用对象的方法可以完成对业务的处理;但是如果在业务处理之前要进行一些非核心的处理,如输出日志或做空值判断,这些非核心代码并不重要,并且是可以重用的,我们不想把它加入到核心代码中,但是在执行核心代码之前又必须要进行非核心的处理,这个时候我们就要用到AOP,其核心思想就是代理。AOP用到的设计模式就是代理模式,即在不影响原功能的前提下,...原创 2020-04-08 19:23:23 · 337 阅读 · 0 评论 -
面试总结:IOC
控制反转(IOC)、依赖注入(DI)都是同一个意思。即将本应该由程序来实例化对象的工作交给第三方容器来处理,并将实例化的对象注入到引用中。IOC用到的设计模式是工厂模式:根据传入的参数决定返回的实例对象。如:public interface IUserService { public void add();}@Service(value="aa")public class User...原创 2020-04-08 15:55:37 · 249 阅读 · 0 评论 -
面试总结:单例模式
class MySingle{ // 饿汉式---立即加载 // private static MySingle single = new MySingle(); // 懒汉式----延时加载 private static MySingle single; private MySingle() { } public synchronized static MySingle ...原创 2020-04-08 14:28:59 · 172 阅读 · 0 评论 -
面试总结:强引用、软引用、弱引用、虚引用
强引用(StrongReference)强引用是最常用的一种引用方式,即Object obj = new Object();obj就是一个强引用,指向Object对象,属于引用变量,被存放在栈中;new Object()则创建了一个Object对象,Object对象存放在堆区。众所周知,堆区是垃圾回收的主要场所,引用与垃圾回收息息相关。GC在查找Object对象的引用链时,发现有强引用...转载 2020-04-08 13:59:12 · 188 阅读 · 0 评论 -
面试总结:OOP
OOP:面向对象编程思想,Java是一门面向对象的编程语言,变量、方法都是属于对象的,需要通过对象来调用。OOP有三大特性:封装、继承、多态封装私有化成员变量的细节,只对外提供获取的方法,如用private修饰成员变量,用public修饰getter方法。继承子类继承父类,获得父类的非私有成员变量和方法。子类继承抽象类或接口,需要实现抽象方法,或重写方法。接口和抽象类的区别:接口...原创 2020-04-08 12:56:28 · 231 阅读 · 0 评论 -
使用boostrap重复提交的坑
我在用boostrap写页面时,用了load加载页面,每次提交数据后页面重新load一次。点击页面上的按钮触发js事件时,发现多次点击之后,会明显感觉到页面逐渐变卡,而且点击modal框中的按钮,会出现重复提交的情况。解决:因为问题出现在modal框的按钮重复提交,导致我一直以为是modal的问题,网上也确实有挺多modal重复提交的解决方案,但我试了都不行,后面想到会不会是多次load导致...原创 2020-03-31 22:31:46 · 261 阅读 · 0 评论 -
vagrant_1.8.7.msi网盘下载链接
下了一天,不多说,直接上链接vagrant_1.8.7.msi链接:https://pan.baidu.com/s/1q8Rjf0Xg03qsq_h5hiOvOQ提取码:nfzf原创 2020-02-11 18:40:12 · 807 阅读 · 3 评论 -
微信公众号开发基础入门
一、申请一个微信公众号https://mp.weixin.qq.com/二、接口认证(证明你是一名合法的开发者)在微信公众平台左侧菜单找到基本配置开发者ID是注册完就有的,这里要注意的是开发者密码,非常重要,获取密码后,建议保存在文本文档里。还有一个IP白名单是干什么的呢?开发者访问微信服务器时会携带ID和密码和IP地址,在服务器里IP白名单上的IP地址才允许访问。点击修改配置...原创 2019-10-08 21:02:17 · 509 阅读 · 0 评论
分享