自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shine0312的专栏

温故而知新

  • 博客(39)
  • 收藏
  • 关注

原创 树的最大路径和

一、最大路径和1、题目2、题解class Solution { int maxSum = Integer.MIN_VALUE; public int maxPathSum(TreeNode root) { maxGain(root); return maxSum; } public int maxGain(TreeNode node) { if (node == null) { re

2021-10-31 20:09:11 198

原创 根据前序和中序遍历构造二叉树

一、题目二、分析三、题解

2021-10-31 20:07:59 130

原创 COLA之架构演变(一)

一、常用架构1、分层架构2、CQRS架构3、六边形架构4、洋葱圈架构二、COLA介绍COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。目前COLA已经发展到COLA4.0COLA分为两个部分,COLA架构和COLA组件。三、COLA演变1、COLA1.02、COLA2.02.0作了一个对于cola来说非常核心的改动,就是采用DIP的设计理念,这

2021-10-31 19:09:58 4773

原创 dubbo应用之服务引用全流程

本文基于dubbo3.0从主流程上介绍了消费方dubbo模块启动的过程

2021-10-04 21:25:05 289

原创 dubbo应用之filter异步化设计

https://blog.csdn.net/m0_37055174/article/details/100517538

2021-10-03 18:24:45 327

原创 dubbo源码分析之provider启动过程

dubbo源码分析系列

2021-10-02 17:22:33 348

原创 dubboAdmin-黑白名单

dubbo-admin系列,会从功能和源码角度进行解析

2021-07-18 23:32:10 829

原创 sublime批处理任务

一、简单的demo1、先简单写个html并且保存2、编写任务脚本并保存3、选中任务脚本并且com+b执行浏览器打开页面hello world4、优化任务脚本可以选择为自动,然后在脚本中配置文件类型二、应用典型应用就是代码的add、push和查看,可以写成一个脚本一起执行,具体实现自己可以操作一个,本文在此忽略……...

2019-10-02 23:27:00 580

原创 动态拼接sql

一、首先尝试用sublime的列编辑,但是存在问题,是不能选择倒数第二列(中间的某一列),因为从前面或者后面依次添加的时候会出现如下问题,这样添加符号的时候就出现不能对齐的问题了二、针对上面的问题,采用了awk进行处理,真的很灵活、简单cat sqldata| awk 'BEGIN{a="insert into tmp_table (sale_id, phone) values ("}{...

2019-09-30 15:41:10 182

原创 MybatisPlus学习之动态数据源

todo

2019-08-06 20:30:05 823 1

原创 springboot学习篇之启动过程

背景:约定大于配置、spi一、首先是找到主配置类启动二、扫描到自动装配注解三、划重点(import中selector的处理)三、到此已找到需要自动装配的配置类四、自动装配(RedisAutoConfiguration)配置完成,装入ioc容器...

2019-07-17 07:41:25 94

原创 技术方案-延时支付

一、定时任务缺点:1、耗性能2、耗资源3、延时二、delayqueue延时队列缺点:对集群化支持的很不好1、单机本地数据丢失解决:重启的时候重新加载数据库2、集群一台机器挂了解决:加字段记录ip,洗数据,重启加载 用zk解决三、mq的方案优点:1、分布式支持的非常好2、mq本身支持消息丢失的解决方案3、伸缩性(增加消费者)4、...

2019-06-05 21:32:41 302

原创 长连接心跳设计(todo)

本周更新

2019-05-30 15:26:38 219

原创 springboot学习篇之启动方式

一、springboot有3种启动方式1、右键直接运行main方法,这种也是最直接的2、通过maven进行运行可以输入命令mvn spring-boot:run 点击plugin,右键运行即可3、打jar包直接运行mvn install java -jar name-0.0.1-SNAPSHOT.jar二、springboot增加热部署功能 1、三种方式,本文只...

2019-05-22 20:34:48 495

原创 springboot学习篇之bean的实例化方式

一、第一种方案是最常用的@ComponentScan()二、第二种是本文主要介绍的继承ImportSelector类,实现selectImports方法1、为什么能够实例化bean这就需要了解和根据spring的源码了,spring在启动的过程中,会调用2、该方法用于什么场景应用场景很简单,就是个性化对对类进行实例化,比如在某种条件实例化A,在另外一种条件实例化...

2019-05-21 21:01:32 2992

原创 spring源码之MVC的ioc容器初始化

一、总体步骤1、定位找到配置文件2、加载解析配置文件3、注册bean注册到容器当中二、详细步骤1、入口DispatcherServlet对于web容器的规范,初始化servlet的时候会调用init()方法,所以会调用httpServletBean的init方法2、容器启动的入口,一键触发按钮refresh方法,具体调用的步骤不具体写出了...

2019-05-20 07:58:38 138

原创 分布式事务-本地消息表实现方案

一、背景用单下单的时候需要先锁库存,然后再生成订单,库存所在的库和订单是两个库,这里就涉及到了分布式事务的处理,下面说下两种解决方案吧二、方案1、定时任务+本地消息表这种方案还有一个优化点就是:可以去掉消息的定时任务,然后就是在生成订单的事务中如果失败,那么就再开启一个事务(事务中会强制走主库查询)查询下该订单是否存在,如果存在就正常进行流程,如果不存在那么就直接设置消息的...

2019-02-27 16:09:02 3797

原创 单链表逆转(递归和迭代的实现)

单链表逆转递归和迭代的实现,代码如下:public class LinkReverse { static class Node{ int data; Node next; public Node(int data, Node next) { this.data = data; this....

2019-02-26 17:13:02 1133

原创 售票程序

有两种场景:一、1000张票开10个窗口卖public class SoldTicket implements Runnable{ private Integer ticketCount = 1000; @Override public void run() { while (true) { synchronized (t...

2019-02-25 17:45:01 539

原创 全排列的递归实现

看了看别人的实现,只是自己手动写了一遍,然后就明白了public class Permutate { public static int total = 0; public static void swap(String[] str, int i, int j) { String temp = new String(); temp = ...

2019-02-25 15:11:10 130

原创 事务中分批插入db性能优化方案

一、背景:最近需求上线的时候发现一个问题,如果运营创建活动大批量导入数据的时候,就会出现通过事务操作的某一张表插入数据延迟非常严重,以至于出现比较奇怪的现象二、解决方案1、首先考虑采用事务中多线程进行处理,这样操作有几个问题:spring的声明式事务本身是不支持多线程的,如果要支持就需要采用手动事务了,另外还需要其它一些处理,参考(https://solomon523.iteye....

2019-02-13 20:59:06 414

原创 java深拷贝之简单实战

在做需求的时候需要做方法的调用迁移,于是就用到了深拷贝,需要把老方法的参数转换成新方法的参数,然后调用新的方法(这种场景用深拷贝最简单,省去了来回的转换)一、尝试了第三方的库,比如Java Deep Cloning Library,但是这种只能是同种类型的进行序列化和反序列化二、想到了cloneable,但是有两点不符合要求1、进行转换的参数model是第三方提供的,我不能自己定义,所...

2019-02-13 17:27:51 347

原创 netty源码之eventLoop的启动

一、触发eventLoop启动有两个条件1、端口的绑定2、新连接的接入本文结合端口的绑定来介绍下eventLoop的启动二、启动的入口绑定端口执行的是线程池里面的任务,启动执行的是eventLoop()的execute方法三、开始执行如果当前线程是eventLoop关联的线程,就直接执行addTask,如果不是就需要先创建一个线程,然后执行addTask方法...

2019-01-29 17:54:41 159

原创 netty源码之端口绑定

1、绑定端口的入口2、在线程池中添加绑定端口的任务3、在pipeline中进行传播(这一点不是太明白,等介绍pipeline的时候再介绍吧)3、在NioServerSocketChannel中完成端口的绑定...

2019-01-29 15:45:01 777 1

原创 netty源码之新连接接入过程

todo

2018-12-17 07:37:58 277

原创 thrift源码-client调用流程

ing

2018-12-03 15:58:14 385

原创 netty源码之服务端启动过程

一、创建eventLoopGroup(池化的reactor模型)主要是三部分1、创建任务执行器(创建线程用的)2、创建eventLoop3、初始化线程选择器二、服务器启动1、启动入口2、初始化和注册服务端channel3、启动eventLoop三、eventLoop的执行(开始执行select的nio逻辑)至此服务端启动完毕,...

2018-12-02 19:29:10 116

原创 卖票(解决线程安全问题)

/** * Created by Gavin on 2018/8/26. */class SellTicket implements Runnable { private Integer ticketCount = 9; private Object mutex = new Object(); @Override public void run() { ...

2018-08-26 16:03:23 443

原创 abc排列组合

//可以重复的拼凑(递归) public static void repeatRange(char[] ret, char[] input, int len){ if(len == 0) { for(int i = 0; i < ret.length; i++) { System.out.print(r...

2018-08-26 00:24:31 2430

原创 二分查找(面试必会知识点)

//递归 public int recursionSearch(int[] arr, int key, int low, int high) { if(key < arr[low] || key > arr[high] || low > high) { return -1; } int mid =...

2018-08-25 18:07:51 407

原创 单例模式

饿汉式是没有线程安全问题的,下面主要说下懒汉式的安全模式一、double checkpackage Singleton;/** * 类描述:test */public class Singleton { private Singleton() {} private volatile static Singleton instance = null; ...

2018-07-08 18:01:12 108

原创 垃圾收集器之概括篇

先来一个汇总的图:

2018-05-09 19:35:10 81

原创 thrift学习理解

todo

2018-05-08 15:28:05 186 1

原创 ThreadLocal源码解析

下图是本文重点介绍的内存泄漏问题的源码:说之前先盗用一下别人的一张图片,对理解有很大的作用,图如下:1、如果虚拟机进行gc的时候,threadLocal对象是弱引用,会被回收。(key被回收了)(?这里留个问题,强引用是什么情况下去掉的)2、正常如果线程结束了,那么value也会被回收,此时正常,不会出现内存泄漏的问题。但是如果线程池,线程不回收呢,此时就出现内存泄漏了(此处准确的说法是线程不回收...

2018-05-07 15:43:01 127

原创 nio的相关知识点

一、selector.select();时阻塞的,为啥说Nio时非阻塞的?答:1、因为阻塞是否要看读取数据时能够立即返回,nio在读取数据时没有数据会立即返回,而传统的io会阻塞等待;2,然后就是selector.select()可以不阻塞,selector.select(1000),或者selector.wakeup(唤醒selector)

2016-11-07 23:31:24 208

原创 贪心算法解决求数组最大连续和

首先明确一下贪心算法的核心思想:局部最优导致全局最有下面是实现的例子:

2016-11-03 23:25:37 900

原创 朴树贝叶斯算法

由于最近老大给了一个评论打击系统的任务,所以又复习了下经典的朴素贝叶斯算法,关于机器学习的相关知识,已经好长时间没有看过了,忘得差不多了,下面简单的捋一捋吧首先就是贝叶斯定理:进行贝叶斯分类一般就是三个过程:1、确定分类的特征属性,及其划分比如:确定一个账号是真实帐号还是假账号中,确定的特征属性是:a1:日志数量/注册天数,a2:好友数量/注册天数,a3:是否使

2016-07-17 23:41:08 599

转载 跳表

此文为转载为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用跳表吧,跳表是一种随机化的数据结构,目前开

2016-07-10 22:54:15 191

转载 java线程dump

JAVA 的线程 DUMP,就象当前 JAVA进程的一个快照,打印出所有线程的状态和调用堆栈,以及 Monitor的状态。在不同的操作系统下,产生线程 DUMP的方式是不同的。 ·在 windows环境中,            在启动程序的控制台里敲: Ctrl - Break,线程的 dump会产生在标准输出中( 缺省标准输出就是控制台,如果对输出进行了重定向,则要查看输出文件

2014-06-27 19:30:58 299

空空如也

空空如也

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

TA关注的人

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