自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 机器学习LSTM RNN

LSTM四个inputs,三个门还有其他参数除了input的weights,还需要三个门的weights,参数是普通神经网络的四倍。LSTM 与 RNN 关系将memory也就是ct ,上一层的未完全输出ht 也和x一起作为输入,体现出来了rnn,这些综合的输入经过transform成四个向量,分别作为三个门的输入和普通的输入经过LSTM神经元的作用输出得到y...

2022-05-02 12:04:06 802

原创 ThreadLocal

链接知乎简书首先明确threadlocal既然能够做到线程私有变量,直觉应该是他是一个map,key为线程,value为线程私有值,但是这种设计有一个问题,内存泄露,即使某线程已经结束了,那些数据也不会被清除。所以才用了以下的设计,每个线程独有ThreadLocalMap,key为threadLocal,value为线程私有值,这样再来看一下上面那个问题,线程结束了,这个ThreadLocalMap没有引用了,会被GC回收再来看看另一个问题,是不是threadlocal弱引用造成了内存泄露?并

2022-02-10 18:09:52 222

原创 最近公共祖先

核心在于左右子树都存在所需点的话,那么祖先就是root。否则返回一边。题目一次后序遍历,计算深度的同时,将解答也返回,如果两子树深度相同,说明每颗子树都存在最深节点,此时返回root,否则返回子树深度大的,一路传上来的/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNo

2022-01-12 19:18:57 126

原创 树形dp题

题目/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) .

2022-01-11 18:39:29 199 1

原创 后序遍历 优美

题目/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } .

2022-01-11 17:28:44 74

原创 最短路径 dijkstra算法 floyd算法

dijkstra算法的基本思想是贪⼼,每次都遍历所有邻居,并从中找到距离最⼩的,本质上是⼀种⼴度优先遍历。这⾥我们借助堆这种数据结构。题目class Solution { public int networkDelayTime(int[][] times, int n, int k) { List<int[]>[] graph = buildGraph(times, n); int[] minDistance = dijkstra(graph,

2022-01-10 15:40:08 192

原创 并查集 最小生成树 连通

贪心 + 并查集class Solution { public int minimumCost(int n, int[][] connections) { Arrays.sort(connections, (o1,o2) -> { return Integer.compare(o1[2],o2[2]); }); int res = 0; UF uf = new UF(n + 1); for

2022-01-07 15:54:55 284

原创 欧拉路径 Hierholzer 算法

思路普通节点出度和入度数是相等的,在while用完之前,我有入有出,又回去了,但是最后一个节点就不一样了,其出度数必定比入度数小1,最后一次走到这,应该是入度1次,出度0次,进来了发现回不去了呀,输出了我们的第一个需要的节点,也就是终点,同理,开始节点出度比入度大1,最后别人都走完了,他还要出最后一次,出完这一次,才能输出,也就是保证最后一个添加的是起点,这时候反转就ok啦。考虑到字典序,就需要排序啦,影响的也就是拆边的顺序,不可能影响到头尾:如果死胡同节点字典序更小,则当前直接进入死胡同。那么死胡

2022-01-06 15:33:28 323

原创 KMP算法

next:最长相等前后缀~~ 次长class Solution { public int strStr(String haystack, String needle) { int n = haystack.length(); int m = needle.length(); if(m == 0){ return 0; } int[] next = new int[m]; for(

2022-01-03 14:53:05 211

原创 二叉树遍历 迭代法 Morris法

前序遍历比较简单,注意入栈是右子节点先,后左节点,毕竟左结点马上要出栈,结束条件就是栈空class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); if(root == null){ return res; }

2021-12-26 15:13:16 324 1

原创 IO多路复用 epoll select

一些必要的基础知识必要的C语言基础知识等待队列网络数据包可不是直接就到socket的网络包到达最为传统的方式又是如何实现的呢?同步阻塞网络IOIO多路复用的正题文章select简单对比epoll非源码解读epoll源码解读...

2021-12-23 19:17:14 1483

原创 剑指offer 把数字翻译成字符串有多少种结果

import java.util.*;public class Solution { /** * 解码 * @param nums string字符串 数字串 * @return int整型 */ public int solve (String nums) { // write code here int[] dp = new int[nums.length() + 1]; dp[0] = 1;.

2021-11-24 21:38:48 191

原创 i++ ++i 局部变量表 操作数栈

执行是看栈内,要注意局部变量表内入栈与出栈时机。此外在代码循环while(i–)之类的,应该意识到此时先入栈,再在局部变量表自减,栈内是i,不过局部变量表已经是i-1,下一次再入栈那就是i-1了。i = i++; 代码解释:iload_1 把局部变量表中位置为“1”的变量加载到栈顶,即把 i 的值加载到栈顶。iinc 1 by 1,将局部变量表中位置为“1”的 i 加 1,此时局部变量表中 i 的结果为 2。然后 istore_1 把栈顶的元素弹出,并赋值给局部变量表中位置为“1”的变量。所以 i 的值

2021-11-24 19:40:12 704

原创 递归回溯 值传递

在写算法题的时候,犯了一些错误,突入忘记了java是值传递,方法内的int和String之类的因此都是固定的(String是由于别的方法就算改变这个String,也是另外生成一个新的String,int则是值传递),而像ArrayList这些(比如递归回溯时候的path),值传递是一个地址,别的方法改变了,那就要回溯,否则方法栈回溯的时候,方法对应的变量就发生了变化。总结:String、Integer之类的需要发生变化就定义一个全局变量,不走方法内值传递。而ArrayList这些可以走值传递,但是又不

2021-11-23 20:12:17 580

原创 位运算技巧

位运算基本位运算与运算的用途:1)清零如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。2)取一个数的指定位比如取数 X=1010 1110 的低4位,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位与运算(X&Y=0000 1110)即可得到X的指定位。3)判断奇偶只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2

2021-11-08 13:54:12 179

原创 虚拟头结点

没有虚拟头结点,那头结点的删除需要分开考虑,不能通过slow.next = slow.next.nextListNode removeNthFromEnd(ListNode head, int n) { ListNode fast, slow; fast = slow = head; // 快指针先前进 n 步 while (n-- > 0) { fast = fast.next; } if (fast == null) { .

2021-11-01 19:04:52 1199 1

原创 算法——二分法

查找最左或者最右边界,思想应该是找到不可用的段12222335找最左边的2,很明显最后会跑到1,最后一次left = middle + 1,我们成功来到了最左边的2.以查找左边界为例,来到这段的边界也就是left=right时(不可用段的边界),此时如果nums[mid] < target,也就是向左走过了,需要向右回去一个,再执行一次left = mid + 1,打破循环条件,返回left,这个点可能是目标值,也可能比目标值大;否则就是这个点的值大于或者等于target(意味着),再执行一次ri

2021-11-01 17:37:28 80

原创 BFS Dijkstra

BFS// 输入起点,进行 BFS 搜索int BFS(Node start) { Queue<Node> q; // 核心数据结构 Set<Node> visited; // 避免走回头路 q.offer(start); // 将起点加入队列 visited.add(start); int step = 0; // 记录搜索的步数 while (q not empty) { int sz = q.siz

2021-10-25 15:38:22 376

原创 算法——递归

二叉树是用来训练递归的好题目。你要相信你函数的定义(因为这是你自己写的根据当前节点所做的所有操作,那递归调用当然可以信赖)。写好这个函数签名也是很有意义的工作,一般题目给的够用了,但是有时候返回的数据其实是不够看的,或者方法参数给的也不够用,这时候就需要我们自定义,比如1373.二叉搜索子树的最大键值和(困难),这题我们采用后续遍历的方法,需要的参数很多,所以返回值用的是一个数组,当然你用的爽了,自己这个节点也要写出来对应的确定返回值方法,不能光用不给,没这个道理,递归也不能用。写出base case

2021-10-23 12:48:31 73

原创 Java同步和异步,阻塞和非阻塞

Java同步和异步,阻塞和非阻塞同步和异步、阻塞和非阻塞同步和异步关注的是消息通信机制.同步是指: 发送方发出数据后, 等待接收方发回响应后才发下一个数据包的通讯方式. 就是在发出一个调用时, 在没有得到结果之前, 该调用就不返回, 但是一旦调用返回, 就得到返回值了. 也就是由"调用者"主动等待这个"调用"的结果.异步是指: 发送方发出数据后, 不等待接收方发回响应, 接着发送下个数据包的通讯方式. 当一个异步过程调用发出后, 调用者不会立刻得到结果. 而是在调用发出后, "被调用者"通过状态、通

2021-10-19 20:47:41 1508

原创 springboot启动流程

结合spring完成学习完成分布式学习后回来复习。

2021-10-18 21:21:30 56

原创 事物 分布式事务

事物(阅读高性能mysql)分布式事务

2021-10-18 21:19:37 133

原创 分布式id

分布式ID是什么?在分布式集群环境下,生成的唯一id,成为分布式ID。分布式ID解决了什么问题?在分布式集群环境下,后台数据库服务有多台,每台数据库服务都有同一张表,那么应用程序在对多台数据库服务中的同一张表进行存储数据时,就需要保证id唯一。单机环境下,可以使用mysql的表自增,但是在分布式集群环境下了,就不能使用mysql的表自增了, 因为这样会造成多个数据库中的同类型表id重复,所以此时就需要分布式id来保证数据的唯一性。分布式ID生产的常用解决方案UUID使用Java中jdk自带的

2021-10-18 20:56:03 84

原创 策略模式 Comparator

策略模式定义:定义了算法族,分别分装起来,让他们可以相互替换,此模式让算法的变化独立于使用算法的用户;我们会变换各种排序方法,但是数据是不会变的。因此排序应该使用策略模式。此模式让算法的变化独立于使用算法的客户。这算法体现了几个设计原则:第一:把变化的代码从不变的代码中分离出来第二:针对接口编程而不是具体类(定义了策略接口)第三:多用组合/聚合,少用继承(客户通过组合方式使用策略排序ComparableComparable可以认为是一个内比较器,实现了Comparable接口的类有一个特

2021-10-18 14:32:51 207

原创 服务熔断和服务降级 以尚硅谷sentinel为例

服务降级服务降级是在高请求的情况下,对某些接口的请求非常频繁,而对某些接口几乎没有请求,这时就可以主动的停止那些请求比较低的接口,把服务器资源给请求较高的接口,当再请求那些被停止的接口时,只需给出友好的提示即可,这就是 服务降级。服务熔断服务熔断服务熔断机制是对应服务雪崩的一种微服务链路保护机制。在链路请求中,如果某个微服务节点不可用或者响应时间太长,可以熔断该节点的微服务调用,快速的返回错误的响应信息,当恢复正常后可正常调用。服务熔断是在服务端对某个请求设置备选方案,当这个请求超时或异常,就会

2021-10-17 22:25:32 395

原创 SpringCloud 尚硅谷笔记汇总

springcloud上链接springcloud下链接另一个总结 (综合看看效果更好)链接

2021-10-15 16:15:49 341

原创 GitBash及idea集成操作

GitBash相关linux相关命令ctrl l换页ctrl insert 复制shift insert 粘贴本地库操作git statusgit add xx 从工作区添加到暂存区(修改后的文件依然这样操作,重新添加到暂存区然后执行commit,此时指针指向新版本,存储文件区域显示的只会是新版本)git rm --cached xx 从暂存区删除,当然工作区还是存在的git commit -m “日志信息” xx 提交到本地库git reflog 查看精简日志信息

2021-10-14 21:56:32 515

原创 @LoadBalanced如何让RestTemplate具有负载均衡功能

我们在注册resttemplate时在上加上@LoadBalanced注解就能让restTemplate具有负载均衡功能,显然这个注解做了一些事,或者做了一些标记后续由谁来完成处理。下面我们点开这个注解:连个方法都没有,显然这个注解只是起了某种标记作用,后续由谁来完成了处理,这个任务就是由LoadBalancerAutoConfiguration来自动完成了。这个自动注入的类首先完成了标记了@LoadBalanced的restTemplate实例,并对其加入拦截器。这两步工作第一步是由spring的qu

2021-10-11 22:06:03 436

原创 以Eureka为例 学习Springboot的自动配置

Eureka Springboot的注入分析我们在SpringBoot中一般直接通过autoconfiguration注入组件,也就是@SpringBootApplication注解的作用。如图,扫描每个Jar包的spring.factories内的内容,对应eureka就是org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration。不过来到这个类,我们发现其并不是可以直接就实习自动注入的,除了一些Prop

2021-10-11 00:29:16 226

原创 Maven

聚合模块知道它聚合了哪些模块,但是被聚合的模块不知道聚合模块的存在;父模块不知道子模块的存在,但是子模块都必须知道自己的父模块是谁。聚合什么是聚合?将多个项目同时运行就称为聚合。如何实现聚合?只需在pom中作如下配置即可实现聚合:<modules> <module>web-connection-pool</module> <module>web-java-crawler</module></modules&gt

2021-10-08 17:48:06 37

原创 分布式系统一致性模型

https://zhuanlan.zhihu.com/p/48782892评论中所提到《survey on consistency condition》分布式一致性,内存一致性,事务隔离性共性的问题但是解决方案多种多样,可以联系在一起思考一致性模型的研究由来已久,在基于共享内存的多核CPU并行计算中,科学家就已经开始对一致性模型开始研究,然后将一致性模型顺理成章的推广到基于网络通信的多节点协同系统中。一致性模型一致性模型:给定一些涉及操作与状态的规则,随着操作的演进,系统将一直遵循这些规则。一致

2021-10-06 20:14:03 409

原创 Linux常用指令

软件安装Linux下软件安装的方式主要有源码安装、rpm安装(类似于exe执行文件)、yum安装(联网),而常用的安装包主要有以下三种:tar包:例如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。解压命令:tar -xvzf xxx.tar.gzrpm包,如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。(现在用的全称叫RPM Package Manager,以前叫Redhat Package Mana

2021-10-02 18:55:49 62

原创 Dubbo端口占用

注意tomcat端口号默认也是8080,避免冲突

2021-10-01 23:07:24 293

原创 Mysql Commit事物提交

https://www.cnblogs.com/exceptioneye/p/5451960.html1、清理undo段信息,对于innodb存储引擎的更新操作来说,undo段需要purge,这里的purge主要职能是,真正删除物理记录。在执行delete或update操作时,实际旧记录没有真正删除,只是在记录上打了一个标记,而是在事务提交后,purge线程真正删除,释放物理页空间。因此,提交过程中会将undo信息加入purge列表,供purge线程处理。2、释放锁资源,mysql通过锁互斥机制保证不同

2021-09-30 12:38:28 462

原创 虚拟机执行子系统——类文件结构、字节码指令、类加载机制、虚拟机字节码执行引擎

深入理解Java虚拟机——虚拟机执行子系统类文件代码编译的结构从本地机器码转化为字节码,是编程语言的一大步。越来越多的程序语言选择将代码编译为与操作系统、机器指令集无关、平台中立的格式。Java虚拟机只和Class文件绑定,不和任何语言绑定,所写Java程序通过javac编译器,得到相对应的字节码文件,也就是.class文件,从而被虚拟机执行。Java语言的每一行代码都是由多条字节码命令组合而成,因此字节码能够提供的语义描述能力肯定比Java语言本身强。虽然说是文件,但不一定就由磁盘形式存在,可以

2021-09-28 20:50:44 175

原创 自动内存管理机制——运行时数据区、对象创建、内存布局、访问、垃圾回收

深入理解Java虚拟机走进Java优点:结构严谨、面对对象;摆脱硬件束缚;内存安全管理;热点代码检测和运行时编译优化;有一套完整的应用程序接口,第三方类库JDK(Java Development Kit):Java程序设计语言、Java虚拟机、Java API类库三部分JRE(Java Runtime Environment):Java API类库中的Java SE API子集、Java虚拟机两部分自动内存管理机制运行时数据区域程序计数器Program Counter Register:可

2021-09-26 18:29:56 113

原创 Spring技术内幕——Spring MVC

Spring技术内幕——Spring MVCmodel:封装应用数据状态(参数解析器),响应数据状态查询(数据库),提供应用功能接口(模型本该做的事),数据状态变化通知视图(返回值处理器)view:通过视图展现应用数据,向应用数据提供更新请求,向控制器提交用户动作,运行控制器选择不同的视图control:dispatcherservlet:定义应用的功能,映射用户动作到数据更新,选择对应的视图,一个控制器对应一组功能Web容器ServletContextweb.xml配置文件:首先定义一

2021-09-25 17:01:45 165

原创 Spring技术内幕——AOP

Spring技术内幕AOP的实现AOP概念Advice通知、PointCut切点(需要增强的方法的集合)、Advisor通知器(完成通知和切点的结合)AOP的设计与实现

2021-09-25 11:32:03 66

原创 Spring技术内幕——IoC

Spring技术内幕IoC控制反转,对象依赖关系的管理被反转了,由IoC容器负责,由其进行管理并完成对象的注入。BeanFactory基本接口:简单容器,体现了Spring为提供给用户使用的IoC容器所设定的最基本的功能规范。通过BeanDefinition来管理Spring中各种对象以及他们的依赖关系。BeanDefinition抽象了我们对Bean的定义,是让容器起作用的主要数据类型。以XmlBeanFactory为例(DefaultListableBeanFactory作为基类):首先需

2021-09-24 20:34:16 71

原创 Netty实战

Netty实战一个既是异步又是事件驱动的系统会表现出一个极具价值的行为:可以以任意的顺序响应在任意的时间点产生的事件。非阻塞网络调用使我们不必等待一个操作的完成,异步方法会立即返回并且在他完成时,会直接或者在稍后的某个时间点通知用户。ChannelFuture(异步) + FutureListener(回调)选择器使得我们能够通过较少的线程监视许多连接上的事件并派发处理。selector + channelhandler...

2021-09-24 16:20:41 320

空空如也

空空如也

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

TA关注的人

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