自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法-动态规划

动态规划概念分治算法将规模较大的问题划分成规模较小的子问题,通常,这些子问题是不重叠的。这一篇要介绍的动态规划算法,也是基于问题划分,区别在于划分的子问题是有重叠的(黄色部分),这样在求解的过程中,对于重叠的部分只要求解一次,记录下结果(备忘录方法),其他子问题中直接使用即可,减少了重复计算,效率更高。如下图,在计算子问题A的时候需要计算A的子问题a,b,c,计算B的时候需要计算b,c,d,这里b,c就是重叠部分。按照分治算法,b,c需要分别计算两次。按照动态规划,b,c只要求解A时计算一次,然后记录

2021-11-22 15:41:26 616

原创 算法-分治算法

分治算法分治即分而治之。一个问题规模过大不容易直接解决,就可以划分成许多小问题,如果小问题不容易求解,那么可以再划分成规模更小的问题,直到规模小到很容易解决为止,解决这些小问题,再将小问题的解合并成大问题的解。这就是分治算法的基本思想。至于小问题的规模到底划分多大,这是没有规定的,依实际情况而定。小问题的规模可以是相等的,也可以是不相等的。可以分成简单的2个小问题,当然也可以分成多个小问题。分治算法常用的实现方法是递归。因为分治就是将大问题不断划分成小问题,递归的解决小问题,再合并小问题的解就可以得到

2021-11-19 15:07:57 880 1

原创 匈牙利算法

概念今天我们来看一个没有前几篇讲的那么常用,但是很有用的算法:匈牙利算法(Hungarian algorithm)。匈牙利算法主要用于解决一些与二分图匹配有关的问题,所以我们先来了解一下二分图。二分图(Bipartite graph)是一类特殊的图,它可以被划分为两个部分,每个部分内的点互不相连。下图是典型的二分图。可以看到,在上面的二分图中,每条边的端点都分别处于点集X和Y中。匈牙利算法主要用来解决两个问题:求二分图的最大匹配数和最小点覆盖数。这么说起来过于抽象了,我们现在从实际问题出发。最大

2021-11-05 15:51:21 202

原创 数据结构-天勤

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-08-17 09:42:24 530

转载 springboot+cas单点登录

一、 CAS介绍简介:CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。特点:1、开源的企业级单点登录解决方案。2、CAS Server 为需要独立部署的 Web 应用。3、CAS Client 支持非常多的客户端(这里指单点登录系统中

2021-08-17 09:40:27 3324

原创 docker入门

基础介绍centos7上docker安装使用官方脚本安装curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun启动dockersystemctl start dockerdocker上安装mysql5.7下载mysqldocker pull mysql:5.7启动mysqldocker run --name mysql-5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12

2021-08-17 09:37:37 88

原创 公共Controller、Service、Dao、Entity封装及EasyCode代码生成模板

自己开发独立项目的时候,像对单表的增删改查是必不可少的,每个都去写未免过于重复,下面对controller、service、dao以及entity都会有的字段,例如修改人、修改时间、删除标识等进行抽取封装,结合EasyCode代码生成工具,达到对单表的增删改查的代码自动生成的效果。此外,对像全局异常处理、操作日志管理、统一返回值等进行实现和封装,并作为一个独立的项目common,再次创建创建新项目的时候,只需要将此common引入即可。下面将封装的公共部分罗列出来。git地址:1、公共实体类packag

2021-08-17 09:36:26 959

原创 HashMap底层剖析

1、基础知识铺垫1.1 哈希表我们知道数组更利于元素的查找链表更利于元素的插入和删除那么有没有一种数据结构可以同时具有数组和链表的优点呢?即能快速地查找又能高效地插入删除元素?很明显,本文的主角“哈希表”就能很好的满足这个要求。那么哈希表是怎么做到两者的优点兼具的呢?这主要归功于它独特的数据结构。哈希表是由一块地址连续的数组空间构成的,其中每个数组都是一个链表,数组的作用在于快速寻址查找,链表的作用在于快速插入和删除元素,因此,哈希表可以被认为就是链表的数组,下图是一个哈希表的简单示意图:一

2021-05-17 14:08:21 78

原创 springboot+通用mapper使用

一、 什么是通用Mapper通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查。什么是通用mapper,一句话简单说,它就是个辅助mybatis极简单表开发的组件。它不是为了替代mybatis,而是让mybatis的开发更方便。可以按照自己的需要选择通用方法,还能很方便的开发自己的通用方法。二、为什么要用通用Mapper?原来Mybatis的痛点1、mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改2、需要自己实现sql分页,select

2021-05-13 14:52:22 812

原创 JVM

1、 JVM体系结构概述1.1 JVM系统架构图这张图必须会画出来!!!1.2 JVM位置1.3 类加载器ClassLoader负责加载class文件,class文件在文件开头有特定的文件标示,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于它是否可以运行,则有Execution Engine决定。(1)虚拟机自带的加载器启动类加载器(Bootstrap)C++拓展类加载器(Extension)J

2021-05-08 10:25:22 65

原创 数据结构与算法-栈

基础知识

2021-04-13 14:45:20 46

原创 商城项目-基础

一、项目简介二、分布式基础概念三、环境搭建1、准备linux操作系统的主机准备一台linux系统的主机,可以是云主机,也可以用虚拟机创建。2、安装配置docker及mysql、redis点击查看具体操作3、开发环境统一mavengit4、创建项目微服务1)从gitee初始化一个项目2)创建各个微服务项目商品服务(product)、仓储服务(ware)、订单服务(order)、优惠券服务(coupon)、用户服务(member)共同:group名:com.atguigu.guli

2021-01-27 07:59:53 163

原创 VUE初始化构建前端项目

1、 npm install webpack -g全局安装webpack2、 npm install -g @vue/cli-init全局安装vue脚手架3、初始化vue项目vue init webpack appname(vue脚手架使用webpack模板初始化一个appname项目)4、启动vue项目项目的package.json中有scripts,代表我们能运行的命令npm start = npm run dev;启动项目npm run build;将项目打包...

2021-01-25 20:29:51 92

原创 前端全栈

一、开发工具使用前端技术栈类比:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210125185908235.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDk3NjU4,size_16,color_FFFFFF,t_70二、ES6ECMAScript是浏览器脚本语言的规范,而各种我们熟

2021-01-25 20:12:08 331

原创 学习之旅-Docker

一、 简介docker官方文档docker镜像站为什么会有Docker的出现?一款产品从开发到上线,从操作系统到运行环境,再到应用配置。作为开发和运维之间的协作我们需要关心很多东西,特别是各种版本迭代之后,不同版本环境的兼容,对运维人员都是考验。环境安装如此麻烦,换一台机器就要重来一次,费时费力。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样的复制过来。开发人员利用Docker可以消除协作编码时”在我的机器上可以正常工作”的问题。Docker镜像的

2021-01-15 16:02:36 99

原创 java8 新特性

函数式接口java.util.function函数式接口都在这个包里,且都有@FunctionalInterface标注。java内置核心四大函数式接口Stream流是什么?是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。“集合讲的是数据,流讲的是计算!”特点自己不会存储元素不会改变源对象,相反他们会返回一个持有结果的新的StreamStream操作是延迟执行的,这意味着他们会等到需要结果的时候才去执行。如何用源头->中间流水线->结果...

2021-01-14 15:52:00 69

原创 java juc 线程池

线程池的优势:线程池做的工作只要是控制运行的线程数量,处理过程中将任务放入队列,然后再线程创建后启动这些任务,如果线程数量超过最大数量,超过数量的线程排队等待,等其他线程执行完毕,再从队列中取出任务来执行。它的主要特点是:线程复用;控制最大并发数;管理线程。第一:降低资源消耗。通过重复利用已经创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等待线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的

2021-01-14 15:22:59 99

Java juc 阻塞队列

阻塞队列阻塞队列是一个队列,在数据结构中起到的作用如下图:当队列是空的,从队列中获取元素的操作将会被阻塞当队列是满的,从队列中添加元素的操作将会被阻塞试图从空的队列中获取元素的线程将不被阻塞,知道其他线程往空的队列中插入新的元素。试图向已满的队列中添加新元素的线程将会被阻塞,知道其他线程从队列中一处一个或多个元素或者完全清空,是队列变得空闲起来并后续新增。队列的用处在多线程领域:所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤起为什么需要BlockingQu

2021-01-14 10:36:29 108

原创 java juc 读写锁(ReentrantReadWriteLock)

学习这个,首先了解下乐观锁和悲观锁的概念,这里参考了下面的博文https://blog.csdn.net/qq_34337272/article/details/81072874乐观锁与悲观锁乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中

2021-01-14 09:56:02 120

原创 JUC强大辅助类

CountDownLatch(减少计数)例子题目: 现在教室里一共七个人,六位同学,一位班长,要求六位同学走之后班长才能锁门离开。写程序模拟:public class CountDownLatchDemo { public static void main(String[] args) { for(int i=1;i<=6;i++){ new Thread(()->{ System.out.println(Th

2021-01-14 08:34:51 135

原创 Java JUC

一、 volatile关键字作用:当多个线程操作共享数据时,可以保证内存中的数据是可见的。相较于synchronized是一种比较轻量级的同步策略。注意:1、volatile不具备“互斥性”2、valatile不能保证变量的“原子性”问题引入:看下面这段代码public class TestVolatile { public static void main(String[] args) { ThreadDemo td = new ThreadDemo();

2021-01-13 11:49:31 191 3

原创 java多线程进阶

理解synchronized的实现想理解这个东西,我们要做一些知识预备,先明确下面这些问题CAS问题全称compare and swap解决的问题:在无锁的状态下,保证线程一致性(线程安全)的去改共享数据。1、获取当前共享数据的值,放到E2、对共享数据进行计算结果,放到V3、重新获取当前共享数据的值N,与刚才的E比较;相等则将共享数据更新为V,否则继续步骤1ABA问题:过程中存在ABA问题,什么是ABA问题呢?就是其他线程修改数次最后值和原值E相同,也就是原来是A,中间被别人修改了数次,可

2021-01-11 11:35:41 147 1

原创 java多线程基础

基本概念:程序、进程、线程程序:为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程:是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有他自身的产生、存在、消亡的过程。即生命周期程序是静态的,进程是动态的线程:线程创建和使用线程的生命周期线程的同步线程的通信jdk5.0新增线程创建方式...

2021-01-08 15:22:40 135

原创 java反射

反射相关的主要apijava.lang.Class:代表一个类java.lang.reflect.Method:代表类的方法java.lang.reflect.Field:代表类的成员变量java.lang.reflect.Constructor:代表类的构造器关于java.lang.Class类的理解Class的简单理解要想理解Class类,首先要先知道类的加载过程。类的加载过程:程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾),接着我们使用java.

2021-01-05 16:09:57 45

原创 短信服务-企业用户

一、企业认证企业实名

2020-12-24 14:57:51 338

原创 记几条oracle开窗函数的使用

-- 各个工种下的人数t1:selecth.work_type as work_type,1 as nfromjs_gkb_handyman hwhere h.DELETED = 0t2:selectw.TYPE_NAME,sum(n) over(partition by work_type) as numfrom(selecth.work_type as work_type,1 as nfromjs_gkb_handyman hwhere h.DELETED = 0)

2020-12-24 11:10:15 100

原创 oracle数据被误更新,如何回滚?

得益于自己的好习惯,每次更新数据都是在测试库把sql先跑一遍,才敢到线上库执行。其实即使出错了,还有恢复的余地。步骤如下。步骤一:SELECT * FROM js_gkb_unit AS OF TIMESTAMP TO_TIMESTAMP('20201223 14:30:00','YYYYMMDD HH24:MI:SS')看下这条sql,js_gkb_unit就是你要回滚的表名,后面的时间戳就是你想回滚到的时间点。执行这条语句,查看数据,确定此时间点就是想回滚到的那个点。步骤二:create t

2020-12-23 15:06:50 742

原创 Cookie、Session、Token、JWT

想清楚的知道这几个东西的区别与联系,首先要区分认证(Authentication)和授权(Authorization)。什么是认证(Authentication)通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功)互联网中的认证:用户名密码登录邮箱发送登录链接手机号接收验证码只要你能收到邮箱/验证码,就默认你是账号的主人什么是授权(Authorization)用户授予第三方应用访问该

2020-12-11 10:19:44 67

原创 阿里云短信服务-个人账户测试短信服务

AccessKeyIdAccessKeySecretLTAI4Fz4BbkbkQUbP3ej2FHmBD2OeEtxhs7LTNwq6dcVBcVAqO3HGq

2020-12-10 11:57:45 4348 2

原创 instantclient12&plsql12下载、安装及配置

一、oracle11g client下载安装及配置1.1 下载instantclient下载链接根据操作系统和机器位数选择相应的下载链接例如我是windows64位操作系统,选择了1.2 安装及配置1.在E盘创建文件夹比如oracle_client,将下载的压缩包解压到刚新建的文件夹中(E:\oralce_client\instantclient_11_2)。解压好就算安装完成2.在当前目录下,新建文件夹NETWORK,在NETWORK下新建文件夹ADMIN在ADMIN中新建文件tnsn

2020-12-08 10:45:59 5698

原创 ORACLE(11g)----存储过程

运行存储过程的时,使用navicat运行会报错,网上说这是navicat本身的bug,建议使用pl/sql来作为IDE,pl/sql的下载安装教程如下:一、简单入门-- 第一个存储过程create or replace procedure myDemo01asbegin dbms_output.put_line('hello world,my name is stored procedure');end;-- -- 方式一:声明declare关键字declarebegin

2020-12-07 16:48:56 462

原创 买房攻略

购房流程图买房流程一、着手准备买房买房首先要根据资金实力、还款能力等估算自己的实际购买力,并根据工作生活的需要,确定房屋的区位、面积、价格、楼层、朝向等。预算:首付+税25万以内楼层:不要顶层,一楼如果质量可以,有入户花园可以要三室两厅两卫或一卫>=90平方离学校十分钟车程之内二、挑选房源房源一:名称面积户型图开发商景观设计方备案价上房时间地图位置三、实地看房1、一定要看五证看国有土地使用证、建设用地规划许可证、建设工程规划许可证、建设工程施工许可证、商品

2020-12-01 16:16:05 606

原创 房源信息

一、国美房源一:(1)户型图:(2)基本信息房源二:(1)户型图(2)基本信息房源三:(1)户型图(2)基本信息房源四:(1)户型图(2)基本信息房源五:(1)户型图(2)基本信息房源六:(1)户型图(2)基本信息房源七:(1)户型图(2)基本信息房源八:(1)户型图(2)基本信息二、兴地美利悦府(1)房源一:(2)基本信息...

2020-12-01 16:15:21 157

原创 计算机网络学习之旅-1.1.2 标准化工作及相关组织

标准化工作分类:法定标准:由权威机构指定的正式的、合法的标准 osi事实标准:某些公司的产品在竞争中占据了RFC(Request For Commen的形式ts)-因特网标准的形式RFC要上升为因特网正式标准的四个阶段:1)因特网草案:2)建议标准:3)因特网标准:...

2020-11-27 09:58:40 1276 2

原创 计算机网络学习之旅-1.1.1概念、组成、功能和分类

1

2020-11-26 19:47:18 116

原创 turnserver4.5.0.8在centos7上安装

一、 安装相关依赖# 安装依赖yum install -y make gcc cc gcc-c++ wget openssl-devel libevent libevent-devel mysql-devel# 获取安装包wget http://turnserver.open-sys.org/downloads/v4.5.0.8/# 解压并进入目录tar -zxvf turnserver-4.5.0.8.tar.gzcd turnserver-4.5.0.8/# 编译,默认目录在/usr

2020-11-24 10:18:55 491

原创 jquery轮播图

效果图需求:对右侧杂志进行轮播,左侧视口放大显示,对正在轮播的杂志图片向上放大。鼠标放上小的杂志图,则停止轮播,鼠标离开小的杂志图,则从这张杂志往后轮播。html<!DOCTYPE html><html lang="en" class="no-js"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-s

2020-11-13 09:20:42 137

原创 ES聚合分析

前言01 ES聚合类型02 aggregations的语法结构在学习之前,先掌握aggregations的语法结构:【注意aggregations关键字可使用aggs代替】一、聚合起步为了更加深刻的理解DSL聚合语法,这里是一个完整的案例,并且提供了DSL实现和sql语句实现,方便具象化、对照着理解1、创建索引1.1 创建索引DSL实现(1) 创建索引carsput cars(2) 批量导入测试数据POST /cars/transactions/_bulk{"index":{}

2020-11-06 17:30:57 303

原创 oracle导出dmp文件教程

1、切换到oralce用户;执行source ~/.bash_profile2、sqlplus sys/123456# as sysdba3、导出dmp文件create or replace directory data_dir as ‘/home/dmp’;Grant read,write on directory data_dir to sys;grant exp_full_database,imp_full_database to sys;expdp sys/123456#@192.168

2020-11-06 11:29:41 1434

原创 Elasticsearch的DSL教程

Elasticsearch的DSL教程一、前言二、数据结构三、DLS语法3.1 新增索引库3.2 新增字段3.3 新增/修改数据3.4 查询(一)查询索引库所有数据(二)根据ID查询某一条数据(三)等值(term)查询(四)组合(bool)查询(五)模糊(wildcard)查询一、前言二、数据结构三、DLS语法3.1 新增索引库示例:PUT test1{ "settings" : { "number_of_shards" : 10, "number_of

2020-11-02 15:53:18 1792

空空如也

空空如也

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

TA关注的人

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