- 博客(27)
- 资源 (6)
- 收藏
- 关注
原创 CompletableFuture使用
在Java中,并发地请求IO资源并将结果组装并返回,可以使用多线程和异步编程的方式来实现。submit()CallableRunnableFutureget()通过以上步骤,可以并发地请求IO资源,并将结果组装并返回。使用线程池来管理并发请求,可以充分利用系统资源,提高程序的性能和效率。需要注意的是,对于IO密集型任务,可以根据具体情况调整线程池的大小以避免资源浪费或阻塞。
2024-06-13 11:10:37
414
原创 杂七杂八的踩坑
springboot项目中,application.properties配置server.context-path后,filter无法拦截到这个context-path部分,例如配置server.context-path=/api,那么在调用接口/api/banner/block接口时,filter只会拦截到/banner/block部分。(这个是servlet的相关知识点,以前读过,但是第一次...
2019-02-28 09:36:18
253
原创 SpringBoot项目Maven配置
用maven打包文件,为包名添加时间戳,这里使用的build-helper插件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc...
2019-02-17 00:02:50
1431
原创 数据库四大特性和隔离级别小记
数据库四大特性数据库的四大特性缩写为ACID,分开来说就是原子性(A tomicity)、一致性(C onsistency)、隔离性(I solation)、持久性(D urability)。原子性:一致性:隔离性:持久性:...
2019-01-31 23:37:53
382
转载 正向代理和反向代理
这里的正向和反向的“方向”,统统都是针对客户端来描述的:正向代理代理的对象是客户端(客户端主动进行代理),反向代理代理的对象是服务端(从客户端的方向来看就是反向的,客户端被代理了)。正向代理A同学在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱,可想而知,最后碰一鼻子灰回来了,情急之下,他想到一个办法,找关系开后门,经过一番...
2018-11-28 13:04:20
240
原创 算法和数据结构--快速排序
文章主要针对自己在理解快速排序过程中当时卡壳的点,记录了接触这个算法的经历,不是对快速排序算法原理的分析和理解。两种思维我在网上找到了两种理解快速排序比较好的思维方法,具体的思路写在了注释中:方法一:private static void quickSort1(int[] nums, int start, int end) { //递归出口,千万别忘记,如果start==...
2018-09-21 20:19:28
281
原创 Java并发基础概念
本文讲述了线程同步和互斥的概念,以及对“锁”的通俗理解,还介绍了Java内存模型,对并发编程的3个概念:原子性、可见性、有序性进行了介绍。
2018-09-09 14:36:29
407
原创 Redis底层数据结构和value值的类型
Redis有7种主要数据结构,基于这些数据结构,Redis创建了一个对象系统,包含5种对象:字符串对象、列表对象、哈希对象、集合对象、有序集合对象这5种。...
2018-08-22 16:33:25
493
原创 Java动态代理
代理在说明动态代理前,先对“代理”进行简述。它是基本的设计模式之一,它是你为了提供额外的或不同的操作,而插入的用来代替“实际”对象的对象。public class Test { interface TestInterface{ void doSomething(); } static class TestOne implements TestI...
2018-08-20 17:18:26
335
原创 对象存储项目小记
上传文件时候的处理对象存储alpha版本实现方式:分为4种手段,小文件的普通上传、中等文件的分片上传、大文件的分片多线程上传、超大文件的工具上传。这里的大小其实没有明确的定义,是根据服务器的用户数目以及服务器的负载能力划分的,按照当时的版本,与上面描述对应的大小为:0~5M、5~100M、100~300M、&amp;amp;amp;amp;amp;gt;300M。设计想法:这个其实也是最近在做微服务架构改造的时候才想通的,由...
2018-08-19 00:59:33
659
原创 大搜车一面总结
1.锁的在jvm中的实现,内存模型,volatile的实现原理,volatile是否能保证i++操作的线程安全 2.concurrentHashMap的实现原理 3.HashMap初始化因子相关,初始化HashMap的时候指定长度可以提高效率,那么初始化长度有哪些依据,例如要存入12个k,v,初始化大小为多少 4.spring的ioc它的作用是什么,有什么优势 5.gc相关,如果频繁发生f...
2018-08-03 10:50:53
2969
原创 MySQL索引小记
本文默认针对的MySQL引擎为InnoDB。索引的分类聚簇索引聚簇索引就是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据,也将聚集索引的叶子节点称为数据页。值得注意的是,如果一个表没有指定主键,那么MySQL服务器会自动为我们添加一个row_id作为主键,这部分内容需要参考InnoDB行记录格式部分的内容。辅助索引非聚簇索引在其他...
2018-07-26 11:14:26
280
原创 ConcurrentHashMap小记
为了减少保存的书签数目,整理一下收藏的文章。JDK7中的ConcurrentHashMap设计在JDK7的实现中,ConcurrentHashMap被分成了许多Segment,只有在同一个Segment内才存在竞态关系。实际上ConcurrentHashMap是一个Segment数组,而Segment继承自ReentrantLock static final class S...
2018-07-18 21:37:21
309
原创 JVM知识点总结(四)——即时编译(JIT)
一些代表性的编译器: - 前端编译器:Sun的Javac、Eclipse JDT中的增量式编译器(ECJ)。 - JIT编译器:Hotspot VM的C1、C2编译器。 - AOT(Ahead of Time):GCT、Excelsior JET。 解释执行与编译执行解释型代码的优势是可移植,只要有合适的解释器,代码可以在任意平台上运行,而且解释型代码启动速度总是要比编译型...
2018-07-16 15:05:03
954
原创 JVM知识点总结(三)——对象的创建与类加载过程
首先需要区别开对象的创建和类加载的含义,对象的创建是指实例的创建过程,而类加载机制指的是一个类的类信息的加载过程。 有许多的面试题,关于成员变量、构造函数、static变量、static方法的加载顺序,都与本文的内容息息相关,例如:Java中构造方法的执行顺序,这篇博文就是一个常见的考题。实际上static修饰的成员和非static修饰的成员的初始化是两个过程。对象的创建 上图显示的就...
2018-07-16 09:31:13
564
1
原创 JVM知识点总结(二)——垃圾回收
引用分类:强引用类似Object obj=new Object()这类的引用,只要强引用还存在,垃圾回收器永远不会回收掉被引用的对象。软引用是用来描述一些还有用但非必需的对象。在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行二次回收。JDK1.2之后,提供了SoftReference来实现。弱引用用来描述非必需对象的,强度比软引用还弱。被弱引用关联...
2018-07-12 19:14:06
316
2
原创 JVM知识点总结(一)——运行时数据区
虚拟机规范的内存模型: 各个内存区域简介:1. 程序计数器(PC)它是线程私有的,每个线程都会有一个独立的PC。它可以看做是当前线程所执行的字节码的行号指示器,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖它。2. Java虚拟机栈:它是线程私有的,它的生命周期与线程相同,他描述的是Java方法执行的内存模型,每个方法执行时都会创建一个栈帧用于存储局部变量表、操作数...
2018-07-12 14:28:59
347
原创 Java定时任务
源自icp云硬盘项目。当时保存了许多有关Timer和ScheduledExecutorService相关的书签,整理一下,删一删书签。使用ScheduledExecutorService而不是Timer原因可以总结为一下几点: 1. Timer是单线程的,如果存在多个任务,且任务时间过长,超过了两个任务的时间间隔,那下个任务的执行可能不会按照预期的时间执行。 2. 当T...
2018-07-11 16:14:23
301
原创 基于JDK8的HashMap解析
此文章缘由第一次面试阿里。在jdk1.6,1.7中,使用的是数组+链表实现的。在jdk1.8中,使用的是数组+链表+红黑树实现,这是因为当一个桶内的元素过多时,hashMap实际上变成了对链表的查找,效率降低,所以当链长的长度超过8的时候,将链表转化为红黑树。HashMap基本存储结构如图: 数组:存储区间连续,占用内存严重,寻址容易,插入删除困难; 链表:存储区...
2018-07-10 11:38:01
1002
原创 java编程思想--classpath
摘自《Java编程思想》110页:编译单元:当编写一个java源代码文件时,此文件通常被称为编译单元(也称转译单元),每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件名相同(包括大小写)。每个编译单元只能有一个public类,否则编译器不会接受。如果该编译单元还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为他们不是public类
2017-01-18 22:28:14
505
原创 冒泡算法及其改进
import java.util.Arrays;/** * Created by Niu on 16/11/28. */public class BubbleSort { //版本A,最基本的冒泡排序算法 public static void BubbleSort1(int[] a,int lo,int hi){ int temp=0; for(
2016-11-28 21:00:37
532
转载 求最长公共子序列LCS
问题描述:给定两个序列,例如 X = “ABCBDAB”、Y = “BDCABA”,求它们的最长公共子序列的长度。 下面是求解时的动态规划表,可以看出 X 和 Y 的最长公共子序列的长度为4: 输出一个最长公共子序列并不难(网上很多相关代码),难点在于输出所有的最长公共子序列,因为 LCS 通常不唯一。总之,我们需要在动态规划表上进行回溯 —— 从table[m][n],即右下角的格子,开始
2016-11-22 22:43:16
912
原创 菲波那切数列问题(上台阶问题)
通常,在最开始学c语言的时候,写法如下:int fib(int n){ return n>2?n:fib(n-1)+fib(n-2);}但是算法时间复杂度太高,达到了O(2^n)。具体原因就是因为fib的实例重复使用了太多次。 递归算法的一种实例: 图引用自:学堂在线 实际需要的一种实例: 改进后的算法:int fib(int n){ int f=0; int
2016-11-18 23:21:03
1904
原创 String、StringBuffer、StringBuilder整理
来自微信号Android每日干货一、简介1、String(字符串常量) a、String是对象不是基本数据类型 b、String是final类,不能被继承。是不可变对象,一旦创建,就不能修改它的值。 2、StringBuffer(字符串变量) a、一个类似于String的字符串缓冲区,对它的修改的不会像String那样重创建对象。 b、使用append()方法修改StringBuffer
2016-10-18 18:40:08
421
原创 IDEA自用快捷键整理
5. control+alt+T添加try-catch等surround代码块。6. control+alt+insert添加getter&setter等。1.control+y,删除一行(control+x会剪切一行)4. control+shift+/,对选中部分进行/*的注释。13. control+shift 单机类,新窗口显示类的内容。3. control+/,对选中的部分进行//的注释。12. control+alt+space 显示提示。8. control+alt+u,显示类图。
2016-08-13 17:35:39
865
1
jquery开发文档1.8
2017-09-07
吉林大学计算机、软件学院计算机网络课件
2017-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人