自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SmileTimLi的博客

一起追时光,不负好少年

  • 博客(345)
  • 资源 (1)
  • 收藏
  • 关注

原创 商品类目树状图 -- 通过递归生成

1、数据库相关结构CREATE TABLE `pms_category` ( `cat_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类id', `name` char(50) DEFAULT NULL COMMENT '分类名称', `parent_cid` bigint(20) DEFAULT NULL COMMENT '父分类id', `cat_level` int(11) DEFAULT NULL COMMENT '层级',...

2020-10-28 17:09:15 1170

原创 spring (六) 应用:spring aop 动态代理

java中的proxy - 设计模式 - 代理模式什么是代理增强一个对象的功能买火车票、app就是一个代理,他代理了火车站,小区当中的代售窗口java实现的代理的两种方式静态代理动态代理代理的名词代理对象 增强后的对象目标对象 被增强的对象他们不是绝对的,会根据情况发生变化静态代理继承 聚合继承代理对象继承目标对象,重写需要增强的方法缺点:代理类会过多,非常复杂聚合目标对象和代理对象实现同一个接口,代理对象当中...

2020-10-12 14:41:36 335

原创 spring (五) 应用:spring aop相关

aop的应用场景1、日志记录2、权限验证3、效率检查4、事务管理5、exceptionAop是什么与OOP对比,面向切面,传统的OOP开发中的代码逻辑是自上而下的,而这些过程会产生一些横切性问题,这些横切性的问题和我们的主业务逻辑关系不大,这些横切性问题不会影响到主逻辑实现的,但是会散落到代码的各个部分,难以维护。AOP是处理一些横切性问题,AOP的编程思想就是把这些问题和主业务逻辑分开,达到与主业务逻辑解耦的目的。使代码的重用性和开发效率更高。aop 把...

2020-10-10 18:16:38 482

原创 go 语言(三)go函数学习

go语言的函数分为不定参数和固定参数、无参数1、固定参数和无参数用法相同func main() { Myfunc() Myfunc1(666, 888) Myfunc2(988, 222, 22222)}func Myfunc() { fmt.Printf("Helloworld!")}// 固定参数函数 -- 一定要传参func Myfunc1(a int, b int) { fmt.Printf("a = %d, b = %d\n", a, b) //a = 666,

2020-09-30 13:17:47 219 1

原创 spring (四) 应用:相关注解、生命周期和spring配置mybatis

spring相关的注解、生命周期注解和配置相关是spring应用,以及springboot应该应用的重要一部分,相关注解的使用程度会很大程度减少工作量为了更好的理解笔记,练习时用的目录结构记录如下1、相关注解(1)@Configuration 声明为配置类 @ComponentScan 注解扫描 @ComponentScan(value = "com.smileTimli", excludeFilters = {@ComponentScan....

2020-09-25 17:29:01 268

原创 spring (三) 应用:springIOC

springIOC (Inversion of Control ,IoC),是面向对象编程的一种设计原则,可以用来降低计算机代码之间的耦合度常见的方式: 依赖注入 (Dependency Injection , DI) 依赖查找 (Dependency Lookup)目录Spring实现ioc的思路spring编程风格依赖注入的两种方式1、通过getter和setter方法进行注入2、通过getter和setter方法进行注入具体实...

2020-09-25 11:02:18 212

原创 go 语言(二)相关基础学习

1、go语言main函数的了解把程序比作商场 -- 需要入口函数1)go语言以包作为管理单位2)每个文件必须先声明包3)程序必须有一个main包(重要) 一个文件夹只能有一个main函数fmt.Println("23") // go语言语句结尾没有分号命令行编译go build xxx.go 编译go代码,生成一个可执行程序.exego run xxx.go 不生成程序,直接运行,不过一般都是直接go run2、变量相关(1)声明格式 var 变量名 类型 变量声明也必须

2020-09-24 09:58:07 163

原创 spring(二) spring源码编译

spring 源码编译过程本身就是一个学习的过程,不骄不躁好好干1、下载spring源码https://github.com/SmileLsf/spring-framework/tree/5.0.x2、下载gradle经过试验,gradle版本,我用的gradle-4.4.1,jdk用的1.8的(jdk1.8本地如果有多个,注意保持一致,要不会出问题)3、编译过程(1)通过idea导入spring项目,第一步就是注释spring-beans.gradle的如下内容(..

2020-09-23 17:07:13 184

原创 go 语言(一)基础了解

go语言作为云计算的c语言,拥有面向对象编程、自带有异步编程、简单易学1、go语言相关链接go语言文档库:https://studygolang.com/pkgdocgo包下载路径1.5.1:源码:https://storage.googleapis.com/golang/go1.5.1.src.tar.gzMAC版本-安装版:https://storage.googleapis.com/golang/go1.5.1.darwin-amd64.pkgMAC版本-绿色版:ht..

2020-09-23 07:45:30 156

原创 vue项目如何刷新当前页面

最近开发了自定义的表单,作为dialog的形式存在在表格同页面的部分,表单提交后,列表中么有进行相关的加载,但是我又不想window.refresh,就找到了下面这个方法1、course-list.vue 页面进行注册对应的add 组件 <el-dialog title="创新课程" width="97%" top=2vh :append-to-body=tru.

2020-09-19 18:26:42 621

转载 MyEclipse中最常用的快捷键大全(绝对实用!!)

MyEclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率。Eclipse中有如下一些和编辑相关的快捷键。1. 【ALT+/】此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。2. 【Ctrl+O】显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时非常有用。3. 【Ctrl+/】快速添加注...

2020-07-24 20:48:26 470

原创 mysql 查询当月的所有日期

SELECT ('2020-06-01' - INTERVAL DAY('2020-06-01') DAY) + INTERVAL s DAY AS d FROM ( SELECT 31 AS s UNION ALL SELECT 30...

2020-07-13 17:32:33 1385

原创 java实现对象的克隆

不通过构造函数也能创建对象吗?答:Java创建对象的几种方式(重要):1)、用new语句创建对象,这是最常见的创建对象的方法。2)、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。3)、调用对象的clone()方法。4)、运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。(1)和(2)都会明确的显式的调用构造函数 ;(3)是在.

2020-07-07 18:01:03 268

原创 mysql 查询返回map 第二种方式

2020-07-06 14:49:53 4025

原创 docker 容器启动后设置开机自启动

1、设置容器开机自启动docker update mysql --restart=always

2020-07-05 13:43:10 1196 1

原创 mysql 查询json相关

mysql数据库数据如图,存放的是json字符串现在需要进行模糊查询,查询productId中有76的select bace.name,bace.target->'$.productId'from bill_coupon as bacewhere FIND_IN_SET('76', json_unquote(json_extract(bace.target,'$.productId')));1、json_extract 获取json中指定的值获取指定json字符串中指定.

2020-06-30 14:30:09 604

原创 Spring的Event事件驱动 实现 日志系统相关记录 之 功能调用

如何使用自定义API日志下面我们使用blade-demo中的一个API接口来测试下API日志 增加@ApiLog注解,代码如下/** * 详情 */@ApiLog("Blog详情")@GetMapping("/detail")@ApiOperation(value = "查看详情", notes = "传入主键", position = 1)public R<Blog> detail(@ApiParam(value = "主键值") @RequestParam Intege

2020-06-16 18:01:07 300

原创 Spring的Event事件驱动 实现 日志系统相关记录

前言系统一大,就会拆分成多个独立的进程,比如使用微服务架构,也就成了分布式系统。 传统的日志系统比如log4j已经无法满足,我们需要将这些日志合并展示到一个统一的地方。 如此一来,分布式日志收集系统就登场了。 现在用的较多的技术组合为 ElasticSearch+ logstash(基于java)+kibana(基于JRuby, logstash已自带),也就是大家常说的ELK。 但是此系统较为重量级并不是很适合轻量级微服务架构,SpringBlade封装了一个相对好拓展的日志系统,下面我们来具

2020-06-16 17:43:19 597

转载 JVM 判断对象已死的算法

GC的历史比Java还有久远,我们在思考GC时候需要思考三个问题: 哪些内存需要回收? 什么时候回收? 如何回收?在Java中程序计数器、虚拟机栈、本地方法栈这三个区域随线程而生,随线程而灭:栈中的栈帧随着方法的调用和退出而有条不紊的进行着入栈和出栈的过程。每个栈帧分配多少内存在类结构确定下来时就已知的,方法结束或者线程结束内存自然跟着回收了。而Java堆和方法区不一样,一个接口中的多个实现类的内存可能不一样,每个方法的多个分支需要的内存也可能不一样,我们...

2020-06-16 15:52:34 218

转载 Java获取N天前,N天后的日期(如3天)

一. JDK8之前 - CalendarJdk1.1 之后, 带来了java.util.Calendar工具类, 用于处理时间.1.1 某(3)天前:取负值Calendar calendar1 = Calendar.getInstance();SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");calendar1.add(Calendar.DATE, -3);String three_days_ago...

2020-06-12 18:00:39 15014

转载 SimpleDateFormat的线程安全问题与解决方案

SimpleDateFormat的线程安全问题与解决方案1. 线程不安全场景描述 SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交给Calendar引用来储存的. 这样就会导致一个问题,如果你的sdf是个static的, 那么多个thread 之间就会共享...

2020-06-12 17:41:42 200

原创 Java8 函数式接口学习

Java8 函数式接口一览// Function<T, R> -T作为输入,返回的R作为输出 Function<String,String> fun = (x) -> {System.out.print(x+": ");return "Function";}; System.out.println(function.apply("hello world"));//Predicate<T> -T作为输入,返回的boolean值作为输出Predic

2020-06-12 14:42:38 142

原创 Optional干掉空指针

简介空指针异常是导致Java应用程序失败的最常见原因。 为了解决空指针异常更加优雅,Java8 提供了Optional类库。 Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。 Optional提供很多有用的方法,这样我们就不用显式进行空值检测。代码示例1、Optional.of()或者Optional.ofNullable():创建Optional对象,差别在于of不允许参数是null,而ofNullable则无限制。// 参数不能是nullOptio..

2020-06-12 14:36:11 186

原创 Stream API 上

Stream API 上使用流创建流在使用流之前,首先需要拥有一个数据源,并通过StreamAPI提供的一些方法获取该数据源的流对象。数据源可以有多种形式:1. 集合这种数据源较为常用,通过stream()方法即可获取流对象:List<Person> list = new ArrayList<Person>(); Stream<Person> stream = list.stream();2. 数组通过Arrays类提供的静态函数st

2020-06-12 13:31:10 179

原创 Stream API 下

Stream API 下Collector 收集收集器用来将经过筛选、映射的流进行最后的整理,可以使得最后的结果以不同的形式展现。collect方法即为收集器,它接收Collector接口的实现作为具体收集器的收集方法。Collector接口提供了很多默认实现的方法,我们可以直接使用它们格式化流的结果;也可以自定义Collector接口的实现,从而定制自己的收集器。归约流由一个个元素组成,归约就是将一个个元素“折叠”成一个值,如求和、求最值、求平均值都是归约操作。一般性归约...

2020-06-12 13:30:56 149

原创 cnpm: 无法加载文件 C:\software\work\node\node_global\cnpm.ps1

cnpm : 无法加载文件 C:\software\work\node\node_global\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170中的 about_Execution_Policies。所在位置 行:1 字符: 1+ cnpm install --global vue-cli+ ~~~~ + CategoryInfo : SecurityErro...

2020-06-12 10:36:10 228

原创 npm 安装 vue相关命令

1、npm 安装vue稳定版# 最新稳定版 $ npm install vue2、npm 安装 cnpm$ npm install -g cnpm --registry=https://registry.npm.taobao.org3、使用 cnpm 安装软件$ cnpm install [name]4、安装 vue-cli$ cnpm install --global vue-cli5、新建vue项目vue init webpack my-proj...

2020-06-09 17:12:20 408

原创 node安装和环境变量配置

1、下载nodejs选择自己喜欢的nodejs,并下载,我用的是zip的,因为本地msi总是因为某个权限不够安装不了2、新建两个空的文件夹node_cache 和 node_global3、在路径输入cmd,打开命令行窗口,输入如下的命令 npm config set prefix "C:\software\work\node\node_global(你自己的,别用我的)" npm config set cache "C:\software\work\node\...

2020-06-09 16:48:42 309

转载 SQL进阶技巧

主要目录如下: SQL 的书写规范 SQL 的一些进阶使用技巧 SQL 的优化方法 SQL 的书写规范在介绍一些技巧之前,有必要强调一下规范,这一点我发现工作中经常被人忽略,其实遵循好的规范可读性会好很多,应该遵循哪些规范呢?①表名要有意义,且标准 SQL 中规定表名的第一个字符应该是字母。②注释,有单行注释和多行注释,如下:--单行注释--从SomeTable中查询col_1SELECTcol_1FROMSomeT...

2020-06-01 13:54:05 420

转载 关于springboot项目在普通Java类(非controller或者service类)注入@Autowired引用service类的方法

关于springboot项目在普通Java类(非controller或者service类)注入@Autowired引用service类的方法根据自己的类添加以下加粗/红色标注的代码即可实现package com.bootdo.publicOrder.utils;import javax.annotation.PostConstruct;import org.springframework.beans.factory.annotation.Autowired;import org.sprin

2020-06-01 11:45:02 1515

原创 【49. 字母异位词分组】 个人题解和领悟 自上而下的解题

做题之前,需要明确一个概念int[] a={0, 1, 1, 2, 8, 4, 9};System.out.println(String.valueOf(a));-----类型+句柄System.out.println(a.toString());----------类型+句柄System.out.println(Arrays.toString(a));----[0, 1, 1, 2, 8, 4, 9]System.out.println(new String(a));------参数错误

2020-06-01 11:21:45 144

原创 Camunda(七)camunda相关表单介绍

1.工作流的后台自动生成数据库表介绍1) ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等)。 2) ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。 3) ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等.

2020-05-25 16:04:53 4644

转载 如何破坏单例

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。是一种创建型设计模式。他的定义为:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式一般体现在类声明中,单例的类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。但是其实,单例并不是完完全全安全的,也是有可能被破坏的。以下,是一次面试现场的还原,之所以会聊到这个话题,是因为面试官问了我很多关于单例模式的问题,我回答的还可.

2020-05-22 17:49:17 196

原创 API网关的安全

API 网关的安全XSRF/CSRF**跨站请求伪造(Cross-site request forgery)**是一种挟制用户在当前已登录的web程序上执行非本意的操作的攻击方法,简单来说就是你在浏览器打开了两个页面,其中一个页面通过窃取另一个页面的cookie来发送伪造请求Example某一家银行转账操作的url地址为:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName藏

2020-05-22 13:43:32 539

原创 Docker容器获取外部文件参考

容器中获取文件参考如果项目中需要用到操作文件,文件又放在项目的resource下面,通过 Resource resource = new ClassPathResource("templates/template.xls"); File file = resource.getFile(); 这种方式在编辑器中能成功,但是打成jar包之后就报错了,是因为灵雀云上的容器内部是jar包运行,jar包没有绝对路径,所有报错,下面给出两种解决方案:方案1(推荐)将需要操作的文件添加到docke

2020-05-22 13:29:49 6069 2

原创 git记住密码

git config --global credential.helper store

2020-05-21 14:45:00 123

原创 linux 安装 easy-mock

(1)项目下载地址: https://github.com/easy-mock/easy-mock(2)将easy-mock-dev.zip上传至服务器(3)安装zip 和unzipyum install zip unzip(4)解压unzip easy-mock-dev.zip(5)进入其目录,安装依赖 npm install(6)执行构建npm run build(7)启动npm run start(8)打开浏览器 http://...

2020-05-17 19:42:39 612

原创 linux安裝nodejs、mongodb、单机版redis

1、安装nodejs(1)将node官网下载的node-v8.11.1-linux-x64.tar.xz 上传至服务器(2)解压xz文件xz -d node-v8.11.1-linux-x64.tar.xz(3)解压tar文件tar -xvf node-v8.11.1-linux-x64.tar(4)目录重命名mv node-v8.11.1-linux-x64 node(5)移动目录到/usr/local下mv node /usr/local/

2020-05-17 19:37:06 207

转载 项目实践:Spring Boot 三招组合拳,手把手教你打出优雅的后端接口

一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范!本文就一步一步演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了规范,同时再构建新的后端接口也会十分轻松。在文章末尾贴上了项目演示的github地址,clone下来即可..

2020-05-15 20:13:57 229

原创 设计模式(十六)代理模式(Proxy)-- 结构型

代理模式的基本介绍1)代理模式: 为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。 这样做的好处是: 可以在目标对象实现的基础上,增加额外的功能操作,即扩展目标对象的功能2)被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象3)代理模式有不同的形式,主要有三种:静态代理、动态代理(JDK代理、接口代理)和Cglib代理(可以在内存动态的创建对象,而不需要实现接口,是属于动态代理的范畴)一、静态代理静态代理在使用时,需...

2020-05-15 10:18:21 200

logstash同步mysql到elasticsearch

logstash同步mysql到elasticsearch,其中包括同步的配置文件和mysql驱动

2019-02-17

空空如也

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

TA关注的人

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