- 博客(595)
- 资源 (20)
- 收藏
- 关注

原创 单点登陆sso实现(基于全局session实现)
本篇博客实现借鉴自:大厂架构演进实战之手写 CAS 单点登录如果不想按下面的步骤一个一个粘贴,我也提供了github地址:https://github.com/XuBaozhao/sso一、实现目标:登陆淘宝,跳转登陆页面,登陆后,进入淘宝主页,再次登陆天猫,发现不用登陆,直接进入了天猫主页。我省略了和数据库打交道的一点,并且也省略了验证token相同的环节,因为只是简单的熟悉流程,细节问题并不考虑在内。看下面的结果展示,你就明白了。(1)taobao 首先访问,被拦截,检测到没有
2020-09-18 14:28:07
1306
4

原创 对深度学习目前以及未来的看法 (AI时代可能延后,但总会到来)
下面的观点仅代表个人看法,没有收到任何外在观点的浸染,只是自己躺在椅子上,望着蓝蓝的天空,脑子里突然蹦出来的想法。个人认为:深度学习目前处于一个突破性的临界点的状态,很像是60年代左右出现的数据库的状态,当然如果相比于数据库,数据库系统发展经历了人工、文件、然后才到了目前的数据库系统的阶段,深度学习呢,神似数据库的发展,数据库是如何发展起来的呢,对数据量的要求,对存储结构的要求,然后经过...
2020-04-08 16:43:04
1389
2

原创 语义分割代码实现流程
语义分割的整体实现代码大致思路很简单,但是具体到细节,就有很多可说的东西。之前写过一篇文章,可能有些地方现在又有了新的思路或者感受,或者说之前没有突出重点。作为一个小白,这里把自己知道的知识写一下,事无巨细,希望看到的人能有所收获。一、文件思路总的来说,语义分割代码可以分为如下几个部分:data:图像数据 data/train:训练集数据 data/train/img:...
2019-11-23 18:59:27
11304
8

转载 ElasticSearch简介
摘自Elasticsearch-基础介绍及索引原理分析Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的...
2019-05-18 08:51:31
116429
30
原创 面向对象设计 - 抽象
最近在修改毕业论文,老师提了意见,说:p.89“本文设计的采集系统结合了面向对象的设计思想,每种采集方式都以实例的形式抽象了出来,系统能够通过对实例的管理实现对整体采集流程的管理。”这段话如何讲,没看到你的设计是如何抽象的?!在平时的软件开发过程中,将抽象的思想融入系统设计已经成为了习惯,因此,当老师提出这个问题的时候,我困惑了,就像你每天都会看到太阳从东边升起,但是有人问你为什么太阳从东边升起,你却无法回应他…因此,为了使论文的质量进一步提高,便对抽象的概念进行了深入学习。创造性:1、知识
2022-05-17 11:52:10
440
原创 canal在执行不同类型的sql语句时的rowData返回情况
Drop table test;create table test(name varchar(20), age int);可以看到,当我们使用drop和create语句时,我们通过rowChange.getSql()可以直接获得其sql语句!insert into test(name, age) values("123", 123);UPDATE test SET age = 1 where name = "123";DELETE FROM test WHERE na..
2021-04-15 14:49:18
1300
原创 mybatis动态标签拼接sql提高插入速度
实验室的项目,Excel文件的数据入库,原始录入语句如下:void insertCaculatePlanData(@Param("excelName") String excelName, @Param("CaculatePlanColumnName") List<String>CaculatePlanColumnName, @Param("InsertIntoCaculatePlanDat
2021-04-09 16:43:53
798
原创 多线程使用MultipartFile上传excel文件报错
实验室项目中有一个文件上传的功能,因为之前我使用的new Thread来做的,线程不好管理,所以我改用了ThreadPoolExecutor来做,没想到出现了如下问题:原因:然后我从网上看了很多方式,无非这么几种解决方案:1、修改配置,指定临时文件存储路径 2、 修改multipart的最大文件大小,当文件数大于该值时,就不会有临时文件产生上面两种方法对我均无效!最终的解决方案是:InputStream is = file.getInputStream();...
2021-02-18 20:39:24
1868
原创 并查集解决1584连接所有点的最小费用
import java.util.*;class Solution{ private class UnionFind{ // 节点的祖先节点 private int []parent; // 初始化,自己是自己的祖先 public UnionFind(int n){ this.parent = new int[n]; for(int i=0; i<n; i++)...
2021-01-19 10:57:58
365
原创 并查集解决721账户合并
解决方法:因为要使用并查集,所以要建立每个邮箱的地址:<邮箱, 索引> 建立并查集 插入数据,对每个人下面的邮箱,和第一个邮箱做合并 建立root地址对应邮箱同属一个人的集合:<root, List> 组合结果代码量比较多:import java.util.*;class Solution { private class UnionFind{ // 节点的祖先节点 private int []paren..
2021-01-18 21:01:33
283
原创 指针法解决5243同积元组
第一次做:用的DFS ,超时了????class Solution { int res = 0; public void dfs(int[]nums, int n, int j1, int j2, boolean sign[]){ if(j1 != 0 && j1 == j2 && n == 4){ res+=1; return; }
2021-01-17 14:38:52
352
原创 并查集解决803打砖块
看到这道题我的思路:把二维数组转成一维 把相邻的索引对记录下来 遍历敲打的数组: 如果敲打的地方没砖头,直接continue 如果有砖头: 把对应索引置0,删除该索引的相邻索引对 把剩下的相邻的索引对建立并查集 建立map数组,查看每个砖头可达的集合中是否包含与屋顶相连的索引,可达说明砖头没掉,不可达说明砖头掉了,集合中的全部都不可达屋顶,全部掉落 我的思路代码如下,结果可想而知.....import java.util.*;class Solutio
2021-01-16 20:13:45
327
原创 ArrayList和LinkedList遍历的时间对比
先放结论:ArrayList遍历最大的优势在于内存的连续性,CPU的内部缓存结构会缓存连续的内存片段,可以大幅降低读取内存的性能开销。Iterator遍历:100万数据:ArrayList程序运行时间: 5ms LinkedList程序运行时间: 11msimport java.util.*;class Test { public static void main(String[] args) { ArrayList<Integer> a.
2021-01-16 14:05:56
582
原创 线段树数组实现解决307区域和检索
线段树数组实现的逻辑比较复杂......借此记录一下吧????详见https://leetcode-cn.com/problems/range-sum-query-mutable/solution/xian-duan-shu-zu-shou-hui-tu-xiang-yi-qing-er-chu-/class NumArray { int[] tree; int n; public NumArray(int[] nums) { n = nums.le
2021-01-14 09:27:06
193
原创 Linux 文件系统
一、Linux文件系统简介在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。也就是说在LINUX系统中有一个重要的概念:一切都是文件。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。二、文件类型与目录结.
2021-01-13 21:54:57
321
原创 线段树解决729我的日程安排表I
这个题主要是学习线段树的使用:class MyCalendar { // 线段树的根 private SegmentTreeNode root; /** * 线段树结构体 */ private static class SegmentTreeNode { int start;// 时间开始区间 int end;// 时间结束区间 SegmentTreeNode left;// 区间左.
2021-01-13 11:55:50
275
原创 并查集求婴儿名字
学过之前的并查集后,发现就很简单了,简单的改造一下并查集,并且按照并查集的三步走策略,就做出来了:class Solution { private class UnionFind{ Map<String, String> parent = new HashMap<>(); public UnionFind(int n, String[] names){ for(int i=0; i<n;
2021-01-12 10:58:33
422
原创 1722-并查集求执行交换操作后的最小汉明距离
并查集操作一般步骤: 并查集模版套上 构建映射关系<root节点,集合> 执行相关操作,得到题目结果 看到题目后,首先我的做法是:将allowedSwaps分成可以互相交换的集合,比如[[0,1],[2,3]],分成两个集合[0,1]和[2,3] 对每个集合对应的下表排序,因为一个集合中的下标是可以随便排列的,souce=[1,2,3,4]每个集合子集排序后是[1,2,3,4],target每个子集排序后是[1,2,4,5] 然后比较每个位置不同数字..
2021-01-12 10:58:20
280
原创 两、三、四数之和
两次遍历就不写了,这里写双指针做法:class Data implements Comparable{ int num; int index; Data(int num, int index){ this.num = num; this.index = index; } @Override public int compareTo(Object o) { if(this.num < ((Da...
2021-01-11 21:16:30
232
原创 两个栈实现队列
写这道题的原因是两次做法,时间是差距很大的,主要是记住:当第二个栈空的时候,再一次性导入,没必要每次都插进去!第一次做法:class CQueue { Stack<Integer> stack; Stack<Integer> stack2; public CQueue() { stack = new Stack<Integer>(); stack2 = new Stack<Intege...
2021-01-11 21:16:19
227
原创 组合问题(1至4)
前三道组合问题都是很简单的用递归就能解决的但是第四道用回溯就超时了,当然可以用记忆化搜索的方式,但是我看了题解后,决定记录一下最简单的动态规划的思路class Solution { private List<List<Integer>> res = new LinkedList<>(); private void dfs(int n, int k, LinkedList<Integer> ls, boolean sign[], i
2021-01-11 21:15:54
290
原创 Java天生就是多线程程序
import java.lang.management.ManagementFactory;import java.lang.management.ThreadInfo;import java.lang.management.ThreadMXBean;class Solution { public static void main(String[] args) { // 获取java线程管理的MXBean ThreadMXBean threadMXBean.
2021-01-11 21:15:13
225
原创 并查集
并查集的详细讲解:https://oi-wiki.org/ds/dsu/#_6下题的详细解释:https://leetcode-cn.com/problems/smallest-string-with-swaps/solution/1202-jiao-huan-zi-fu-chuan-zhong-de-yuan-aob7/并查集的模版: private class UnionFind{ // 节点的祖先节点 private int []parent; .
2021-01-11 21:14:57
155
原创 Lucene倒排索引结构
总体过程:分词(统一大小写、过滤无用词(字符)、词还原等) 建立倒排索引([词,出现位置,出现频率]、词按字典序排序) 底层实现为三个文件(词典文件、频率文件、位置文件) 压缩存储查找某个词时,首先利用二分查找,查找到所在位置,然后利用词典文件指向频率文件和位置文件的指针,找到对应信息。第一步:取得关键词分词处理 过滤无用字符和标点 统一大小写 还原单词第二步:建立倒排索引第三步:实现第四步:压缩算法第五步:应用...
2021-01-11 21:14:34
389
1
原创 RPC原理
服务提供者在容器启动的时候,将自己所有的服务信息注册到注册中心,然后不断监听是否有服务调用信息,当有服务调用到来时,利用netty的编解码器进行数据解析后,对请求信息(包含了反射使用的信息)通过反射调用本地方法进行处理,处理后返回响应。 服务消费者不断监听服务注册中心的服务信息,将所有被注解标注的接口赋值为代理类,该代理类将接口信息和请求信息封装成Request对象,从注册中心拿到可以执行服务的服务地址端口等信息,通过netty连接到服务提供者,将Request信息发送至服务提供者端,接受...
2020-12-22 11:11:31
187
2
转载 Spring事务失效的8大原因
8种:数据库引擎不支持事务(都默认InnoDB了,一般不会发生) 没有被 Spring 管理(这......代码没写好,类没被加载到) 方法不是 public 的(这------这还真得⚠️) 自身调用问题(常见!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) 数据源没有配置事务管理器(emmmm) 不支持事务(emmmm) 异常被吃了(常见!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) 异常类型错误(常见!!!!!!!!!!!!!!!!!!!!!!!!!!!
2020-12-11 15:49:31
644
原创 微服务网关简述
1、什么是微服务网关微服务网关是整个微服务API请求的入口,可以实现:日志拦截 权限控制 解决跨域问题 限流 熔断 负载均衡 黑名单与白名单拦截 授权 ......2、过滤器与网关的区别过滤器用于拦截单个服务 网关拦截整个的微服务3、Zuul与Gateway有那些区别Zuul 网关属于 netfix 公司开源的产品属于第一代微服务网关 Gateway 属于SpringCloud自研发的第二代微服务网关 相比来说SpringCloud Gat...
2020-12-11 15:49:02
2355
原创 自定义注解案例(反射)
1、设置性别的注解import java.lang.annotation.*;/* 1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃; 2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期; 3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在; */@Documen
2020-12-09 16:21:26
329
原创 计算机科学领域的任何问题的解决方法
“Any problem in computer science can be solved by another layer of indirection.”“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”
2020-12-09 09:29:48
649
原创 springboot日志显示冲突位置时最简单的解决方法
很多时候,日志冲突了,我们想着怎么去pom文件里面exclusive相关的jar包,很麻烦!其实我们直接去对应的位置把它删除掉就ok了!比如我出现了这个问题:SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/Users/qishi/flinklibs/log4j-slf4j-impl-2.12.1.jar!/org/slf4j/impl/StaticLoggerBin.
2020-12-06 16:01:27
735
原创 Canal监控库表代码(新)
网上的监控代码很多,但是我运行了几个后发现不太符合我们的sql语句格式。于是,自己写了一下,并且提供了很大的可扩展性:监控sql结果如下:[sql]----> UPDATE test.user SET name = 'vv' WHERE id = 1[sql]----> INSERT INTO test.user (id,name) VALUES (2,'aaa')[sql]----> DELETE FROM user WHERE id=2package com.
2020-12-06 11:37:01
639
原创 com.alibaba.otter.canal.protocol.exception.CanalClientException
如果你用canal连接mysql,查看日志没有发现错误,但是!!!!!!用客户端连接的时候出现了问题!!!!!!!记住铁子: CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(AddressUtils.getHostIp(), 11111), "example", "canal", "canal");port一定要设置成11111,因为这是.
2020-12-05 21:15:19
7780
2
原创 Mac mysql8安装canal1.1.5
我说实话!!!!!!!canal默认支持mysql8?!!!配了一下午,终于配好了......????1、下载canal包,解压,修改配置文件/usr/local/canal-1.1.5 » vim conf/example/instance.propertiescanal.instance.mysql.slaveId=1234# position infocanal.instance.master.address=localhost:3306# 自己数据库的用户密码c
2020-12-03 17:11:43
806
1
转载 MAC如何找到my.cnf
1. 找到mysqld的路径 which mysqld2. /usr/local/mysql/bin/mysqld --verbose --help |grep -A 1 'Default options'3. 下面就是my.cnf的路径
2020-12-03 14:07:05
2030
原创 mysql数据表创建格式
CREATE TABLE fileInfo ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键Id', `fileName` varchar(255) DEFAULT NULL COMMENT '文件名称', `suffix_type` varchar(255) DEFAULT NULL COMMENT '文件类型', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` da.
2020-12-01 16:24:34
1379
Linux网站搭建流程
2017-12-22
数学建模教材(精品)
2017-09-27
Linux操作系统实验教程_南大版
2017-09-23
2016年考研核心考点——计算机组成原理
2017-09-23
2016年考研核心考点-----计算机网络
2017-09-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人