- 博客(43)
- 资源 (5)
- 收藏
- 关注
原创 Spring bean加载流程
bean加载过程包括两方面,实例化(创建对象),初始化(填充属性以及前置后置处理器)Spring核心方法是AbstractApplicationContext.refresh() -- spring容器加载的核心方法。内部的就是进行bean实例化的入口。
2024-11-28 21:19:59
531
原创 RocketMQ
主要组成部分producer 消息生产者,负责将消息发送到brokerconsumer 消费者,负责从broker消费、处理消息broker 消息中转服务器,负责存储和转发消息。RocketMQ支持多个broker构成集群,每个broker拥有独立存储空间和消息队列。Topic 主题,消息的分类单位,生产者将消息发送到特定Topic,然后消费者从特定Topic中拉取消息进行消费Queue 消息队列,Topic的物理实现,一个Topic可有多个Queue,每个Queue都是独立存储单元。
2024-11-27 21:11:45
1073
原创 对象排序的方式
① 对象实现Comparable 接口,然后代码里直接调用Collections.sort(list)java实现 list 排序的方式,有三种。没实现Comparable接口的实体类。实现Comparable接口的实体类。②使用内部类Comparator。③使用stream.sort。
2024-11-25 17:57:30
293
原创 LinkedHashMap
LinkedHashMap 继承了HashMap,是map的重要成员之一,内部数据构成上基于HashMap,不过内部Entry继了HashMap的Node,并扩展出了before、after两个属性,使之成为一个双向链表,可以记录数据的插入顺序。该结构的数据可以实现LRU算法,只要在初始化的时候使用对应构造方法传入accessOrder=true(该参数默认为false),即可在使用过程中每获取一次数据都将该数据放入末尾(开头数据就是最久未使用的数据)LinkedHashMap重写了newNode方法。
2024-11-18 12:22:59
168
原创 JVM堆(1.6、1.7、1.8)
在jdk1.6里,堆的具体划分如下:栈:包含本地方法栈、虚拟机栈、程序计数器堆方法区(永久代):包含运行时常量池、字符串池二、
2024-11-14 17:12:04
627
原创 两个线程交替打印
先写这俩,实现方式应该还挺多,像信号量、阻塞队列,都可以实现这种交替打印。1、通过LockSupport实现。2、通过synchronized。两个线程交替打印A/B,
2024-11-14 12:22:22
330
原创 取消idea 的光标自由选择
首先要去setting-Editor-General-Virtual Space ,把After the end of line 勾选取消掉(如下图)idea最近抽风一样,鼠标点到哪里光标就是哪里,可以在光标位置输入,这就比较坑了,在网上查了半天,反正和我的情况是不一样的,记录一下我是咋解决的。编辑界面邮件点击,Column Selection Mode 选项。
2024-11-14 11:06:26
474
原创 线程的实现方式
但是话说回来,有些面试官可能是想问代码里的实现方式,他可能觉得线程池、Callable和FutureTask也都算,所以别头铁。jdk里说了,就两种:继承Thread类,另一个就是实现Runnable接口,下面是thread类的注解。Callable和Runnable都可以扔到线程池里,但是Thread确只能支持Runnable。你可以把这几种实现方式都说一下,然后说归根结底就两种,完美!是没有返回值的,Callable是有返回值的,返回值类型为Object。
2024-11-06 21:31:44
239
原创 实现访问统计
2.bitmap(布隆过滤器)去重,redis incr 自增。不过这个要做好去重工作,且java里的位图实现类(intmap,longmap)都不是安全的,需要做好并发控制。1.直接使用redis,存set,拿到唯一值,就扔进去,最后统计数量(面试官说有遗漏?我没搞明白哪里有遗漏,set直接去重了)问题如下,一个展览会,门口有个二维码,扫码签到,想统计一下有多少人。面试被问如何实现访问数据统计,想了几个方案。
2024-11-04 17:18:59
112
原创 oracle查询表空间大小、使用量,增加表空间文件
查找Oracle表空间剩余(当前用户具有dba权限才可以)SELECT TABLESPACE_NAME "表空间", To_char(Round(BYTES / 1024, 2), '99990.00') || '' "实有", To_char(Round(FREE / 1024, 2), '99990.00') || 'G' "现有", To_char(Round(( BYTES - FREE...
2021-01-25 19:11:46
321
原创 spring AOP 基于注解的代码实现实现日志打印
Spring AOP 用的广泛,功能也强大,实现的方式也从传统的xml配置跟随者springboot的兴起转换成了基于注解的方式去实现。下面就简单写一下,基于注解的AOP实现。首先pom要引入aop的启动器 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-a...
2020-08-02 15:57:46
434
原创 死锁---演示问题排查(windows系统下演示包含linux命令)
在windows环境下演示死锁,以及排查,寻找问题所在(linux下思路一致,只是命令不一样而已)1.找到对应程序项目运行的pid(本人windows main方法,所以tasklist | findstr "java" 找所有的java相关)linux下使用 netstat -tump | grep 2246 根据端口号查找程序pid(或者用ps -ef|grep tomcat 根据程序运行名)2.使用Java自带的jstack命令查看线程C:\Users\zefei>...
2020-07-21 10:56:52
872
1
原创 线程池参数设置---别被问蒙了,但是也不要乱回答
线程池都经常用,但是具体的参数设置* 需要根据几个值来决定 - tasks :每秒的任务数,假设为500~1000 - taskcost:每个任务花费时间,假设为0.1s - responsetime:系统允许容忍的最大响应时间,假设为1s * 做几个计算 - corePoolSize = 每秒需要多少个线程处理? * threadcount = tasks.
2020-07-15 16:28:19
225
原创 spring读源码前的准备---一些需要提前知道的内容
几个概念:IOC:spring的核心之一,就是控制反转,一种思想,让你不用关注对象的创建过程,由spring来负责控制对象的生命周期和对象间的关系,你只要用就可以了。DI:依赖注入,容器启动和在对象实例化的过程中会自动为对象提供它需要对象属性。AOP:切面管理,横向管理,加强某些代码,前置,后置,环绕,异常抛出增强。几个类:BeanFactory :实例工厂,最基础的底层容器。ApplicationContext:spring上下文,容器,顶层父类就是BeanFactory,不过比它
2020-07-14 15:20:32
219
原创 Mysql的存储文件
一.存储引擎常用的有MyISAM,InnoDB,CSV,Archive等,基本也就前两种最常用。默认存储引擎1. 从MySQL5.5版本之后是InnoDB存储引擎2.MySQL5.5之前是MyISAM二数据库文件数据库文件和存储引擎不同也有不同,但有一个.frm的文件,存储数据结构MyISAM:1.*.MYD--"D"数据信息文件,是表的数据文件。2.*.MYI--"I"索引信息文件,是表数据文件中任何索引的数据树InnoDB .ibd : 单表表空间...
2020-06-19 16:49:09
424
原创 JVM垃圾回收(G1、CMS)
在看这段之前,首先要知道JVM的内存结构划分。有些地方要用的,可以自行去百度一下。生产环境建议开启-XX:+HeapDumpOnOutOfMemoryError 当堆内存空间溢出时输出堆的内存快照,在java.lang.OutOfMemoryError 异常出现时,输出一个dump.core文件,记录当时的堆内存快照。-XX:HeapDumpPath=./java_pid<pid>.hprof 用来设置堆内存快照的存储文件路径,默认是java进程启动位置本地调试:...
2020-06-15 17:25:42
894
原创 JVM虚拟机----类加载、堆和栈
JVM是Java Virtual Machine(Java虚拟机)的缩写。Java虚拟机主要分为五大模块:类装载器子系统、运行时数据区、执行引擎、本地方法接口和垃圾收集模块。而为主要的,经常被问起的,就只有类装载器子系统、运行时数据区和垃圾收集模块。一.类装载机制这个要了解,类加载机制的具体流程,和流程都做了什么。类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resol
2020-06-15 16:18:52
218
原创 spring事务传播级别(枚举项意义)
spring事务的传播级别不知道可就尴尬了(Propagation,一个枚举类)1.REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED),默认级别,Support a current transaction, create a new one if none exists. 支持当前事务,不存在就创建新的2.SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS),Support a
2020-06-15 10:56:52
267
原创 spring源码------BeanDefinition的封装
分析ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();到本类方法后找到核心方法refreshBeanFactory();具体代码在AbstractRefreshableApplicationContext类,因为最初的跟进方法是由xml方式的启动的spring工程,loadBeanDefinitions(解析xml,并把xml中的标签封装成BeanDefinition,也有通过注解加载,总之就是将一切需要..
2020-06-11 14:58:56
228
原创 spring源码-----主流程
spring源码是一个很有意思的东西,没事可以去读一下,看一下从最简单的spring源码开始解读,带web.xml配置的那种,在web.xml中有两个很重要的配置,第一个,spring的listener,第二个就是springmvc的最重要的容器了。<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </
2020-06-11 14:04:18
189
原创 ArrayLIst(JDK1.8)
一.ArrayList 实现的接口extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableArrayList是一个动态数组,能够自动扩容,在添加的时候首先判断是不是需要扩容 private void ensureExplicitCapacity(int minCapacity) {//minCapacity=size+1 ...
2020-06-02 20:18:05
906
原创 HashMap(jdk1.8)
hashmap在1.8中是以数组+链表+红黑树的结构实现的,在数组中的存放位置是用hash属性&长度-1去寻址的(因为长度是2的幂,加上寻址方式,方便扩容,扩容两倍后数据不在原来位置就在原来位置X2的地方),允许key为null,但是只能有一个;value可以null,不限个数。hashmap无参构造初始化时啥没有,只有put时才会调用resize()才会有长度,默认16一接口实现了Map<K,V>, Cloneable, Serializable 接口继承.
2020-06-02 15:45:09
174
1
原创 JPA
一.缓存清除缓存:1.代码注入@PersistenceContextprivate EntityManager entityManager;2.entityManager.clear();//清空所有entityManager.detach(tem);//缓存,关联关系去除 tem为相应的entity对象二@Query 相关1.条件空判断判断showtype 是不是空,+" AND IF(:showtype !='', showtype LIKE CO..
2020-05-26 20:22:03
530
原创 关于oracle数据泵和imp命令导入导出以及一些应用中遇到的问题
一:创建用户并导入导出使用管理员登陆:sqlplus user/pass as sysdba创建用户:create user user identified by pass default tablespace NNC_DATA01;下面是授权:grant connect,resource,dba to user;grant alter system to user;grant se...
2020-04-26 15:53:22
710
原创 redis 安装。连接,常见问题
基于centos 7一.依赖包检查 1 yum install cpp -y 2 yum install binutils -y 3 yum install glibc-kernheaders -y 4 yum install glibc-common -y 5 yum install glibc-devel -y 6 yum install gcc -y 7 yu...
2020-04-26 15:30:47
169
原创 线程池
线程池的好处:①重复利用已建立的线程,减少线程创建和销毁的消耗。②提高效率,不用等待线程创建,直接利用已经创建好的线程③更容易管理线程ThreadPoolExecutor 构造函数corePoolSize, 核心线程数,线程池已有线程数未达到之前会一直创建新线程,达到后会放到阻塞队列里,maximumPoolSize, 最大线程数keepAliveTime, 线程空...
2020-04-23 11:33:25
113
原创 关于多线程的一些记录
1.线程的创建,方式就两种(不是我说的,详情找到1.8Thread.class)继承Thread类,实现Runnable接口,就这两种方法。2.线程的启动调用Thread的start方法,实现了接口的类需要重新包装成Thread类去运行3.线程的状态4.线程常用方法综合上图来看就简单明白了。①sleep():thread里的方法,让线程休眠一段时间(毫秒数...
2020-04-23 10:22:40
149
原创 anglarjs select下拉搜索框
html:<div> <select-search datas="datas"></select-search> </div> js:csApp.directive('selectSearch', function($compile) { return { restrict: 'AE', //att...
2018-07-18 11:19:31
327
anglarjs+springboot导出excel
2018-07-05
springboot.zip
2020-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人