自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 流处理Stream

Map中去除重复映射键,一个IllegalStateException执行收集操作时被抛出。 如果映射的密钥可能有重复,请改用toMap(Function, Function, BinaryOperator)Map eventMap = missionFinishEventList.stream().collect(Collectors.toMap(CronusMissionFissionEventDTO::getEventTy...............

2022-06-21 22:50:15 384 1

原创 序列化对象实战处理

ObjectMapperUtils 是一个对Jackson的封装。 推荐直接使用Jackson,或者提供自己项目内部的Jackson工具封装。Jackson是性能优秀,同时功能也非常丰富的Java json序列化/反序列化工具,常用的模块有数十个,提供的序列化/反序列化配置也有几十个。 而每个使用者使用Jackson可能都有不同的需求,所以用统一的封装解决所有的问题是不可能的。toJson二、Serializable对象实现Serializable接口总结...

2022-05-23 22:17:27 402

原创 多线程异步并发处理写法

多线程异步并发处理核心类介绍方法1方法2核心类介绍你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。方法1 //线程池1 ExecutorService executor1 = Executors.newFixedThreadPool(5); //方法返回Future CompletionService&

2022-05-23 17:27:49 277

原创 总结面试问题

%%%%%%%java8新特性lambda表达式,(java代码更简洁紧凑->)stream(集合的操作,类似数据库的复杂操作,特性:不存储,不改变源数据,延迟执行 流程: 创建stream,中间操作,终止操作(只有它执行,中间操作才执行),optional(null),方法引用和构造器引用,接口的默认方法(default,有具体实现)与静态方法%%%%%%%%%jvm调优工具 cpu/内存高调整jvm参数,监控GC状态,分析内存泄漏,分析dump文件(arthas(dashboard看哪个

2021-03-16 21:17:39 252

原创 剑指offer

剑指offer03. 数组中重复的数字03. 数组中重复的数字

2021-02-07 17:19:56 69

原创 Mysql存储引擎介绍及对比

Mysql存储引擎InnoDB存储引擎MyISAM存储引擎MEMORY存储引擎mysql中几个存储引擎的综合对比存储引擎的选择InnoDB和MyISAM的区别InnoDB存储引擎InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是默认的MySQL引擎。InnoDB主要特性有:InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些

2021-02-01 11:33:13 174

转载 JVM重点快速总结

JVM重点快速总结JVM内存模型以及分区堆的分区,以及各个分区的特点:对象的创建方法,对象的内存布局,对象的访问定位对象的创建:对象的内存布局:垃圾回收的判定方法:引用计数法,引用链法Java的四种引用类型及特点:GC的三种收集算法的原理和特点,用途,优化思路GC收集器有哪些?CMS和G1收集器的特点Minor GC和Full GC分别发生在什么时候?类加载过程:加载、验证、准备、解析、初始化什么时候进行类的初始化?双亲委派模型:JVM内存模型以及分区JVM内存分为:1.方法区:线程共享的区域,存储已

2021-01-28 16:58:51 121

原创 CDN之初步认识

CDN之初步认识CDN定义CDN特点CDN例子传统的未加缓存服务的访问过程加缓存的访问(CDN)CDN定义CDN:内容分发网络(Content Delivery Network),建立并覆盖在承载网络之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。CDN特点CDN网络一般分为中心与边缘节点两部分,中心负责全局负载均衡管理与内容管理;CDN节点由两部分组成:负载均衡设备和高速缓存服务器分布式存储通过DNS解析实现内容分发的负载均衡全局负载均衡管理和内容管理CDN例子传统的未加

2021-01-25 20:49:43 125

原创 Thymeleaf之standard Expression Syntax

Thymeleaf之standard Expression Syntax${...} 变量表达式*{...} 选择变量表达式#{...}消息表达式~{...} 片段表达式fragments${…} 变量表达式上下围包含的变量映射上执行的OGNL表达式<span th:text="${today}"></span>相当于ctx.getVariable(“today”)#ctx:上下文对象。#vars: 上下文变量。#locale:上下文语言环境。#request:(仅

2021-01-23 17:37:10 118

原创 HashMap相关知识

HashMap相关知识红黑树知识红黑树与avl树区别(为什么用红黑树,不用bst,avl,保持o(logn)AVL树红黑树红黑树知识首先是一种特殊的二叉搜索/查找树,其性质如下:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点(no duplicate nodes)二叉查找树在某些情况下退化成线性链表,但红黑树一直保持o(logn)红黑树的5个

2021-01-22 16:47:27 57

原创 面试准备之必问知识点

面试准备之必问知识点OOM不要重写finialze方法,垃圾回收会自动调用强引用 软引用 弱引用 虚引用强引用:M m=new M()m=null;主线程阻塞才会垃圾回收软引用:SoftReference<byte[]> m=new SoftReference<>(new byte[1024102410]);new byte[]为软引用 ,m为强引用heap堆放不下,会垃圾回收,如果不够,会把软引用干掉适合于缓存使用弱引用:WeakReference m=

2021-01-18 00:30:17 94

原创 sql优化

2021-01-08 17:23:08 60

原创 LeetCode

LeetCode刷题记录

2021-01-06 18:13:37 296

转载 java的Map用法

Map用法

2021-01-04 23:35:16 399

原创 OJ-归并排序

归并排序掌握非递归与递归逆序交换次数的思想就是归并排序package Week1;import java.util.Scanner;public class Test21 { static int count=0;////静态变量最后要清零 public static void main(String[] args) { Scanner in=new Scanner(System.in); int a=in.nextInt(); for(int i=0;i<a;i++){

2021-01-04 18:56:37 176

原创 OJ-希尔排序

increment为每次相隔的距离,此过程是中间过程,可以把外循环改一下就变成希尔排序希尔排序就是有递减间隔的插入排序import java.util.Scanner;public class shellTest { public static void main(String[] args) { Scanner inScanner=new Scanner(System.in); int n=Integer.parseInt(inScanner.nextLine()); for

2021-01-04 18:49:00 304 2

原创 OJ-堆排序

快速排序递归与非递归实现快速排序非递归要注意栈进出顺序,不要弄反start,end,或者改用队列实现import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.Stack;public class Main{

2020-12-29 15:27:23 200

原创 OJ-插入排序

插入排序插入时比较元素后需要考虑向后移动元素要用temp原因是因为插入过程中a[j+1]会把a[i]里面的元素替换掉package Week1;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class bubbleS

2020-12-29 11:25:30 207

原创 OJ-计数排序

计数排序用空间换时间import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { B

2020-12-29 11:18:28 158

原创 OJ-冒泡排序

import java.awt.print.Printable;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class Main { public static void main(String[] args) thro.

2020-12-28 23:16:58 262

原创 pycharm--加载数据集出现的问题

pycharm--加载数据集出现的问题ValueError: invalid literal for int() with base 10: '' "IndexError: list index out of rangeFileNotFoundError: [Errno 2] No such file or directory: with open(file_path, 'r', encoding='GB18030') as f:ValueError: invalid literal for int()

2020-12-26 13:27:37 858

原创 pycharm Python3.6.5安装flask-No module named flask 错误解决

pycharm Python3.6.5安装flaskNo module named flask 错误解决No module named flask 错误解决但发现Flask自己已经安装过Flask包版本错误,把版本降到1.0.3,但可能会继续报错 No module named ***提醒你缺少各种组件一直把Click, Jinja2, werkzeug,itsdangersous等缺少组件安装完成就好。...

2020-12-20 22:10:45 1652

原创 pycharm运行异常 UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 600-601: invalid contin

pycharm运行异常UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 600-601: invalid continuation byte训练集和测试集的数据集格式不一样内存问题UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 600-601: invalid continuation byte)Traceback (most recent

2020-12-19 19:26:38 1851 3

转载 位运算

转载(https://blog.csdn.net/C20180630/article/details/57076374转载(https://blog.csdn.net/C20180630/article/details/57076374)) 什么是位运算?  程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。  C++提供

2020-12-19 14:39:13 506 1

原创 Leetcode-位运算之——136 137

位运算#位运算的性质1. 任何数和0做异或运算@,结果仍然是原来的数,即a@0=a2. 任何数和其自身做异或运算,结果是0,即a@a=0。3. 异或运算满足交换律和结合律,即a@b@a=b@a@a=b@0=b.4. ~x表示位运算NOT x&y 表示位运算AND x@y表示位运算XORpublic int singleNumber(int[] nums){ int single=0; for(int i:nums){ single^=num; } return single;

2020-12-17 16:39:43 89 1

原创 Java并发编程的相关知识(12)--Executor框架

Executor框架ThreadPoolExecutorFixedThreadPoolSingleThreadExecutorCachedThreadPoolScheduledThreadPoolExecutorScheduledThreadPoolExecutorSingleThreadScheduledExecutorFuture接口Runnable接口和Callable接口Java的线程即是工作单元,也是执行机制。从JDK 5开始,把工作单元与执行机制分离开来,工作单元包括Runnable和Call

2020-08-28 23:27:03 109

原创 Java并发编程的相关知识(11)--java中的线程池

线程池几乎所有需要异步或并发执行任务的程序都可以使用线程池,合理使用线程池能够带来3个好处:降低资源消耗提高响应速度提高线程的可管理性线程池处理流程图如下:线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的线程来执行任务。如果核心线程池都在执行任务,则进入下一个流程。线程池判断工作队列是否已经满,如果工作队列没有满,则将新提交的任务存储在这工作队列里,如果满则进入下一个流程。线程池判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线

2020-08-27 23:10:03 79

原创 Java并发编程的相关知识(10)--java中的并发工具类

并发工具类CountDownLatch同步屏障CyclicBarrier控制并发线程数的Semaphore线程间交换数据的ExchangerCountDownLatch,CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段。CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。构造函数接受一个int类型的参数作为计数器,如果你想等待N个点完成,这里就传入N。调用coun

2020-08-26 23:11:31 112

原创 Java并发编程的相关知识(9)--java中的原子操作类

Atomic包原子更新基本类型类原子更新数组原子更新引用类型原子更新字段类Atomic包中的原子操作类提供了一种用法简单,性能高效,线程安全地更新一个变量的方式。在Atomic包中一共提供了13个类,属于4种类型的原子更新方式分别是原子更新基本类型,原子更新数组,原子更新引用和原子更新属性。Atomic包中的类基本都是用unsafe实现的包装类。原子更新基本类型类AtomicBoolean 原子更新布尔类型AtomicInteger:原子更新整型AtomicLong:原子更新长整型publi

2020-08-26 17:09:08 83

原创 深入理解java虚拟机的相关知识(7)--方法调用

方法调用解析分派静态分派动态分派单分派和多分派虚拟机动态分派的实现方法调用不等于方法执行,方法调用阶段的唯一任务就是确定被调用方法的版本,但不涉及方法内部的具体运行过程。一切方法嗲用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址,使得java带来更强大的动态扩展能力。解析调用目标在程序代码写好,编译器进行编译时就必须确定下来。\方法在程序真正运行之前就有一个可确定的调用版本,并且这个方法的调用版本在运行期间是不可改变的。Java虚拟机提供5条方法调用字节码指令,

2020-08-20 23:40:27 105

原创 深入理解java虚拟机的相关知识(6)--虚拟机字节码执行引擎

执行引擎概念模型局部变量表操作数栈动态连接方法返回地址所有虚拟机的执行引擎是一致的:输入是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构, 它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。每一个方法从调用开始到执行完成的过程,都对应着一个栈帧在虚拟机栈从入栈到出栈的过程。局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。在Java程序编译为Cl

2020-08-20 17:48:44 110

原创 Java并发编程的相关知识(8)—Fork/Join框架

Fork/Join框架简介工作窃取算法Fork/Join框架的设计ForkJoinTask的fork方法实现原理ForkJoinTask的join方法实现原理简介用于并行执行的框架,是一个把大任务分割成若干小任务,最终汇总每个小任务结果后得到大任务结构的框架。工作窃取算法指某个线程从其他队列里窃取任务来执行(该线程已把自己队列的任务干完,去帮助其他线程的任务)。为了减少窃取任务线程和被窃取任务线程之间的竞争,通常会使用双端队列,被窃取任务线程永远从双端队列的头部拿任务执行,而窃取任务的线程永远从双

2020-08-19 21:13:03 122

原创 Java并发编程的相关知识(7)-阻塞队列

阻塞队列ArrayBlockingQueueLinkedBlockingQueueProiorityBlockingQueueDelayQueueSynchronousQueueLinkedTransferQueueLinkedBlockingDeque实现原理阻塞队列是一个支持两个附加操作的队列,这两个操作支持阻塞的插入和移除方法。支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法:在队列为空时,获取元素的线程会等待队列变为非空。7个阻塞队列Array

2020-08-15 19:29:42 232

原创 Java并发编程的相关知识(6)--HashMap HashTable ConcurrentMap ConcurrentLinkedQueue

@[TOC](HashMap(线程不安全)HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,Entry的next节点永远不为空,就会成产生死循环获取Entry。HashTable(效率低下)HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下hashtable效率非常低下,当多个线程访问hashtable时,会进入阻塞或轮询状态ConcurrenHashtMap(锁分段)hashTable容器

2020-08-13 11:49:06 155

原创 深入理解java虚拟机的相关知识(5)--虚拟机类加载机制

类加载机制类的生命周期加载验证准备解析初始化类“初始化”的情况(有且仅有5种)虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化、最终形成可以被虚拟机直接使用的java类型。类的生命周期== 加载 验证 准备 解析 初始化 使用 卸载==其中验证 准备 解析统称为连接。加载在加载阶段,虚拟机需要完成以下3件事件:、通过一个类的全限定名来获取定义此类的二进制字节流将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构在内存中生成一个代表这个类的ja

2020-08-02 22:54:45 62

原创 java并发编程的相关知识(5)--java内存模型

Java内存模型重排序编译器优化的重排序指令级并行的重排序内存系统的重排序happens-before规则Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行。 Java线程之间的通信由Java内存模型控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存

2020-08-01 21:51:13 182

原创 常见的23种设计模式

设计模式1 Iterator迭代器模式2 Adapter适配器模式3 Template Method模板方法模式4 Factory Method工厂方法模式5 Singleton单例模式6 Prototype原型模式7 Builder建造者模式8 Abstract Factory抽象工厂模式9 Bridge桥梁模式10 Strategy策略模式11 Composite混合物模式12 Decorator装饰器模式13 Visitor访问者模式14 Chain of Responsibility推卸责任模式15

2020-08-01 18:06:20 147

原创 Java并发编程的相关知识(4)--处理器和java中原子操作的实现

原子操作处理器实现原子操作== 处理器不会使用缓存锁定情况 ==java实现原子操作处理器实现原子操作== 1. 使用总线锁保证原子性==使用处理器提供的一个LOCK#信号,当一个处理器在总线上输出此信号时,其他处理器的请求将被阻塞,那么处理器可以独占共享内存。== 2. 使用缓存锁保证原子性==缓存锁定是指内存区域如果被缓存在处理器的缓存行中,并且在Lock操作期间被锁定,那么当它执行锁操作回写到内存时,处理器不在总线上声言LOCK#信号,而是修改内部的内存地址,并允许它的缓存一致性机制来保证操

2020-07-31 18:12:56 89

原创 Java并发编程的相关知识(3)--锁的升级(偏向锁,轻量级锁,重量级锁)

锁的状态为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”,锁一共有4种状态,级别分为从低到高依次是,无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态。锁可以升级但不能升级。偏向锁偏向锁的撤销关闭偏向锁轻量级锁轻量级锁加锁轻量级锁解锁锁的优缺点为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”,锁一共有4种状态,级别分为从低到高依次是,无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态。锁可以升级但不能升级。偏向锁当一个线程访问同步块并获取锁时,会在对象头和栈帧中的

2020-07-21 22:38:49 131

原创 Java并发编程的相关知识(2)--volatile和synchronized和final关键字,happens-before

java并发编程底层原理多线程编程中synchronized和valatile都扮演重要的角色,volatile是轻量级的synchronized。volatilevolatile的使用优化synchronized多线程编程中synchronized和valatile都扮演重要的角色,volatile是轻量级的synchronized。volatilevolatile保证了共享变量的“可见性”。可见性当一个线程修改一个共享变量时,另外一个线程能读这个修改的值。缓存一致性在缓存中的共享变量保持数据

2020-07-19 23:51:08 101

空空如也

空空如也

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

TA关注的人

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