自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【java_jvm】Window下查看本地JVM类的实例数量及占用内存

1. 导出dump文件1.1 获取PID(两种方式)可以使用任务管理器获取也可以使用jconsole间接获取在jdk的bin 目录下找到jconsole.exe 执行即可如果看不到本地进程、文件权限可能存在问题解决:先通过本地java代码运行:System.out.println(System.getProperties());查看属性java.io.tmpdir=C:\Users%USER%\AppData\Local\Temp注: 此处%USER%为变量代表操作系统用户

2020-10-22 21:34:00 72

原创 【java_基础深入】Java8 Stream | Collections API 的 分组操作

Java8 Stream | Collections API 的 分组操作初始数据 // 初始数据 List<User> userList = Arrays.asList( new User("zhangsan", 10), new User("zhangsan", 12), new User("lisi", 10), new User("wangwu", 15),

2020-05-16 20:11:06 75

原创 【算法】O(n2)时间复杂度和O(nlogn)排序算法的简要分析
原力计划

排序算法的概述排序算法按时间复杂度分可以分为O(n2) 和 O(logn)O(n2) 排序算法流程分析1234.n个数已有序5.开始扫描第n+1个数n个无序序列外层遍历遍历至第n个数内层遍历外层遍历的时间复杂度是n,内层遍历的时间复杂度也是n,由于嵌套关系,总的时间复杂度就是O(n2) 。O(n2) 排序算法都使用上述的流程,典型的代表有选择排序 、插入排序选择排序123value和...

2020-03-15 00:54:14 471

转载 【MySQL】truncate、delete、drop的区别

Truncate的特点逻辑上truncate table和delete from table_name;相似,但是过程是先drop table,然后在re-create table,如果要清空一个大表的所有数据行,truncate比delete高效;Truncate是一个DDL操作,一旦执行会隐式提交,这就说明truncate无法rollback,所以执行之前需谨慎;如果表被锁住,t...

2020-03-13 17:27:49 56

原创 【java_基础深入】JDK借助RandomAccess接口 ,定制ArrayList与LinkedList的二分查找策略

java常用集合类接口实现情况public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializablepublic class LinkedList<E> exte...

2020-03-08 19:04:28 125

原创 【java_基础深入】LinkedHashMap 继承 HashMap又实现 Map 接口背后的设计思想

JDK源码的类定义public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializablepublic class LinkedHashMap<K,V> extends HashMap<K,V> implements...

2020-03-08 14:06:26 228

原创 【Elasticsearch】ElasticsearchTemplate 拼接DSL时,debug查看最终语句

前置基础知识慕课教程该教程会有讲到如何打印拼接而成的普通的DSL语句ElasticsearchTemplate.queryForpage(…)类似于JdbcTemplate,sql语句的拼接是在方法内部的但是ElasticsearchTemplate 不提供日志打印的功能,只能debug进内部执行语句debug步骤定位语句拼接逻辑的方法SeachQuery 通常是使用业务逻辑bu...

2020-03-07 21:41:24 539

原创 【Elasticsearch】模仿淘宝,将搜索框的业务逻辑抽象成DSL语句
原力计划

目标提供一个搜索API就能兼容前端的各种查询需求环境ElasticSearch 5.6.8kibana 5.6.8需求界面根据用户点击,拼接用户的查询需求input:{ 1. 匹配查询: keywords: 商品名 , 不传入默认值为"烤箱 家用小烤箱" 2. 过滤查询(布尔查询): 匹配 c...

2020-03-07 21:11:55 243

转载 【工具】Maven的常用打包命令

1.打包,包含进行单元测试mvn install2.打包,跳过单元测试mvn install -Dmaven.test.skip3.生成sourcemvn source:jar 4.生成jar和souce.jarmvn clean install source:jar -Dmaven.test.skip...

2020-03-05 17:20:46 72

原创 【Spring】SpringMVC 中 @ControllerAdvice的两种应用

SpringMVC 中 @ControllerAdvice的两种应用1. 异常处理 @ExceptionHandler1.1 全局异常处理@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) @ResponseBody pu...

2020-02-26 17:03:56 99

原创 【RabbitMQ】@RabbitListener的使用及造成报错死循环的分析

问题复现:docker 下清空对应的队列信息exec rabbitmq /bin/bash #rabbitmq是容器名,也可以指定为Idrabbitmqctl purge_queue queue.order # queue.order是队列名RabbitMQ控制台新建消息,等待消费者消费http://localhost:15672前置知识:一、 @RabbitListener的使...

2020-02-10 18:27:03 1762

原创 【Linux】重启 Exited 状态的 docker 容器 bind: address already in use

查看docker 容器docker -ps -a重启docker 容器docker restart 容器ID(或容器名)报错: bind: address already in use查看端口号监听的进程, 获取pid,lsof命令的其他用法lsof -i:端口号或netstat -tunlp | grep 端口号根据pid杀掉进程,-9参数表示强力删除,其他...

2020-02-09 23:33:02 824

原创 【Spring】Filter、Interceptor、Aspect的设计及区别

Filter、Interceptor、Aspect的设计及区别1) Filter定义基于Servlet架构,Spring无法控制,也无法拿到Spring控制的参数public class TimeFilter implements Filter { @Override public void doFilter(ServletRequest request, Se...

2020-01-30 23:37:25 75

原创 【工具】使用 import static 在测试用例中简化重复代码(idea)

需求测试用例中存在大量静态方法需要加类前缀,如何省略这些类名前缀idea实现先写完整的类.方法名MockMvcRequestBuilders.get("/user")删掉类名get("/user")鼠标单击方法名, ALT + ENTER3.1 如果是第一次导入,需要选择如下选项3.2 成功导入过的,自动生成如下 import语句import static org.spri...

2020-01-28 13:41:20 120

原创 【项目】Restful API 存在问号的情况解读,搜索业务相关

Restful API 基本规范GET user/1 获取id 为1的user资源POST user/1 创建id 为1的user资源PUT user/1 修改id 为1的user资源DELETE user/1 删除id 为1的user资源项目中用到的带?的URLGET user/1?name=zhangsan区别于GET user/1?name=zhangsan表示...

2020-01-27 16:27:43 233

原创 【工具】idea 折叠任意注释或代码块,与对应的快捷键

需求前提: idea中/** */ 和 整个方法可以折叠需要拓展: 折叠任意的注释或代码块实现,用idea内置的注释模板//region.....你需要折叠的内容// endregion //region /* clients.inMemory() .withClient("changgou") //客户端id ...

2020-01-12 11:31:49 876

原创 【java_基础深入】SimpleDateFormat.format()线程不安全的起因与解决方案

追踪问题网上找到的最多讨论的就是 calendar的线程不安全操作传递到了SimpleDateFormat针对Calendar进行断点观察,观察其值的变化观察calendar的赋值链SimpleDateFormat实例化过程1: calendar初始化的位置追踪上层方法:2.1 疑惑:无参构造调用了有参的构造方法,初始化了calendar2.2 解惑:无参构造中使用了this...

2019-12-29 23:12:44 64

转载 【工具】解决idea导入项目出现窗口闪回

原文地址其实是别人的项目用到了分屏,以下目录记录了窗口信息.idea/workspace.xml平时没有这个bug是因为.idea文件添加到gitignore里面了

2019-12-25 22:31:29 46

原创 【java_基础深入】模板方法设计模式的妙用 : 回调子类实现

模板方法设计模式应用场景HttpServlet 的 service() 就是一个模板方法,它实现了Servlet规范,DispatcherServlet 借助service() 的模板方法,拓展了自己的逻辑。HttpServlet 是一个抽象类。抽象类是实现模板方法的基石,以下先举个简单例子,再从底层证明实例产品线定义:/** * @Author james * @Descript...

2019-12-24 22:52:02 77

原创 【Spring】SpringMVC DispatcherServlet 和 Controller的交互

1. MVC架构1.1 FrontController: DispatcherServlet​ FrontController就是Spring提供的DispatcherServlet , 而不是Spring提供的@Controller,xml配置文件需要指定Tomcat启动时优先加载该Servlet映射路径写/,转发所有请求 <servlet> <ser...

2019-12-24 17:28:34 222

转载 【工具】Git commit 与 pull 的先后顺序

Git commit与pull的先后顺序

2019-12-12 16:52:46 174

原创 【java_基础深入】com.mysql.jdbc.Driver 借助SPI打破双亲委派

一. SPI 中角色前言以下概念拓展至Effective java page 6 (中文版)SPI (Service Provider Interface),用于拓展工程实例的接口对于JDBC ,Connection 就是其服务接口的一部分1.1 服务提供者面向的JDK接口 DriverService InterfaceJDK 提供了标准,具体的数据库驱动由各大数据库厂商提供...

2019-12-11 22:48:40 177

原创 【java_基础深入】类加载器和双亲委派机制、全盘委托机制的关系

类加载器和双亲委派机制、全盘委托机制的关系一. 类加载器1.1 类加载器rt.jar中 sun.misc.Launcher.classpublic class Launcher { static class AppClassLoader extends URLClassLoader {} static class ExtClassLoader extends URLClas...

2019-12-11 22:32:33 183

原创 【工具】idea 版本控制账号从github切换至码云

报错:Authentication failed for排查git中的账号信息git config --list ## 找到下列信息,去校验码云的账号信息user.name=jamesuser.email=xxx@xxx.com忘记账号,可以去码云查看或者绑定,绑定了github,直接用github也可以## 修改本地git的用户信息git config --global...

2019-12-11 20:42:40 303

原创 【MySQL】不同时区如何解析timestamp, 较datetime、date、time的区别

时间戳的定义时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。系统时间2019-11-29 10:00:15带时区的系统时间2019-11-29 10:00:15 UTC+8:00系统时间的格林威治时间 —— 时间戳(Timestamp)2019-1...

2019-11-29 15:59:30 406

原创 【java_多线程】多线程核心问题

有多少种实现线程的方法?思路有5点摆明立场从不同的角度看,会有不同的答案我认为本质上都是实现Runnable 和继承Thread举出例子线程池的Worker 本质上是一个线程安全的RunnableFutureTask 是使用Future接口拓展的一个RunnableTimerTask 也是一个Runnable一个线程两次调用start()方法会出现什么情况?为什么会抛出异常...

2019-11-23 21:41:57 53

原创 【java_多线程】模拟银行转账,为保证原子性而引发死锁,检测死锁并解决

前言本例子不是实际的生产模型,只是为了更好研究死锁而举的例子需求james 转账给 jay 20 元,需要保证转账过程原子性操作能加锁的前提每个对象都有一个monitor,用于维护自身的锁状态,换句话说,所有对象都可以作为一把锁每个用户的monitor就可以作为一把锁,并且这把锁是互斥的,暂且称作读写锁用加锁实现原子性锁规则每个用户都持有账户的一把读写锁,可以自己持有,也可以被...

2019-11-22 17:54:16 357

原创 【java_基础深入】ThreadPoolExecutor.execute() 源码分析

第一层:初见阻塞队列BlockingQueue、任务载入方法Worker.addWorker()思考:corePoolSize BlockingQueue 如何直接参与调度出现了的Worker是什么为什么没有出现maximumPoolSize public void execute(Runnable command) { //线程池指标: 获取线程池状态 + 活跃线程数 (使用二...

2019-11-17 16:23:10 129

转载 【工具】idea设置代码模板,如psvm

https://blog.csdn.net/hehe1006114318/article/details/80456321

2019-11-08 16:39:04 674

原创 【工具】idea创建Maven项目时统一jdk版本

处理的问题Target bytecode version 每次创建都为1.8修改Maven setting 配置定位配置路径增加 profiles 属性<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xm...

2019-11-08 16:33:00 120

原创 【java_多线程】让线程阻塞,获取其他线程的返回值 ,使用AQS组件实现

1. 传统方式 Thread.join() /** * 使用传统方式启动线程,执行任务,实现阻塞 * * @see Thread#join() * */ public static void main(String[] args) { Thread thread = new Thread(new Runnable() {...

2019-10-29 21:39:14 178

原创 【nginx】Linux上安装nginx,开放端口并部署静态网页

安装环境安装gcc,期间有提示,一律选y[root@james nginx]#yum install gcc-c++安装Nginx依赖环境,-y表示所有提示默认选择y[root@james nginx]#yum -y install pcre pcre-devel [root@james nginx]#yum -y install zlib zlib-devel [root@ja...

2019-10-27 20:54:55 1125

原创 【Linux】用户组、用户操作

Linux与用户相关的目录结构​ /:根目录​ root:超级管理员(root)的家​ home:其他用户(普通用户)的家​ etc:配置文件​ usr:存放共享文件的(软件的安装路径)​ lib:依赖库Linux用户组和用户的概念基本概念用户分为 超级管理员 和 普通用户用户组 是用户的管理单元,一个用户至少属于一个用户组依赖关系超管 操作用户超管可以创建...

2019-10-27 19:27:56 351

原创 【java_设计模式】动态代理和静态代理的本质区别

前言网上有很多讲动态代理和静态代理的写法作为区分原因,但是都没有讲到本质上本文主要从应用层自上而下看待这个问题应用场景静态代理 // 数据准备 Order order = new Order();order.setUserId(1); Money money = new Money(); // 创建静态代理 O...

2019-10-25 20:22:53 184

原创 【java_基础深入】从语言规范、字节码指令、jvm编译 理解finally语句块细节

一、finally语句块执行的外在表现1.1. Gosling 亲自对 finally 的描述a finally clause is always entered with a reason. That reason may be that the try code finished normally, that it executed a control flow statement su...

2019-10-22 21:18:29 69

原创 【java_基础深入】注解注入配置 / Properties读取配置 / ResourceBundle读取配置

注解注入/** * 生命周期问题: * 注解的默认生命周期是保留到字节码阶段 * 通过Retention元注解指定注解的生命周期 * 1. SOURCE 保留到源码阶段 * 2. CLASS 保留到字节码阶段 * 3. RUNTIME 保留到运行时 */@Retention(RetentionPolicy.RUNTIME)public @interface JdbcI...

2019-10-22 10:30:54 92

原创 【java_基础深入】使用内省技术模仿实现BeanUtils

原BeanUtils出处import org.apache.commons.beanutils.BeanUtils;原BeanUtils常用法populate(Object bean, Map<String, ? extends Object> properties); // 传入Map参数注入bean public void getBean() { ...

2019-10-22 10:03:58 40

原创 【算法】求100以内的所有素数,使用数组优化

普通解法 public static void getE(int size){ int count = 0; for (int i = 2; i < size; i++) { // 默认所有数都是素数 boolean flag = true; for (int j = 2; j <...

2019-10-20 19:46:54 965

原创 【算法】从斐波那契问题看待数据结构和算法

题目回顾求斐波那契数列的第n个数1, 1, 2 , 3, 5,8,… /** * 递归算法 * @param n 第n个数 * @return 第n个数的值 */ private static long Fibonacci(int n) { if(n == 1 || n == 2) { ret...

2019-10-20 18:58:51 40

原创 【java_设计模式】jdk动态代理原码解析,debug 获取 $proxy0

普通测试场景业务场景保存订单信息分层模型IOrderService -> OrderServiceImpl业务代码public class OrderServiceImpl implements IOrderService { // spring 会自己注入,这里手动注入 private IOrderDao iOrderDao; @Override ...

2019-10-09 23:39:14 163

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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