自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程基础--线程池中线程池的个数确定

我们在多线程开发过程中,难免会遇到线程池使用, 但是,有时候我们会发现,线程池设置的线程数量是一个棘手的问题,线程数量设置过多或者过少,都会导致系统性能无法发挥出来,那我们该如何设置线程数量?在确定线程数量前,我们首先要思考一个问题就是系统性能优化指标,通常情况下,优化指标有降低延迟和提高吞吐量两个。降低延迟:发送请求到接收数据的时间。提高吞吐量:单位时间能可以处理更多的请求。(重点)从这两个指标,我们通常会分别采取优化算法和使硬件性能发挥到极致。优化算法:降低时间和空间复杂度,使得程序

2021-01-04 16:53:00 897

原创 Vue中resetFields()方法清空无法其作用(element-ui)解决思路

前言在实际开发过程中,我们使用Vue+element-ui 对话框关闭时,使用resetFields()方法未能清空表单的数据。1、问题描述平时开发过程中,我们通常在“添加”和“编辑”页面中置“清空”、“返回”按钮,所以通常我们会使用resetFields()清空表单数据。2、resetFields()不生效的原因1.此方法用于将form表单的数据设置为初始值。2.这个初始值是在form mounted生命周期被赋值上去的。3.在form mounted之前,如果给form表单.

2020-12-22 08:42:14 6192 1

原创 设计模式(策略+工厂)---优化过多 if else 代码

我们平时在开发的过程中,肯定会大量的出现if else这种类型的代码,随着业务量的上升,if else代码格式过于复杂,导致代码可读性降低,今天,小编就带大家来利用设计模式之策略和工厂模式来优化if else代码,代码如下所示:if(a){ //dosomething}else if(b){ //doshomething}else if(c){ //doshomething} else{ ////doshomething}策略模式首先,利用策略模式来优化doSomething。

2020-12-21 11:09:16 1322 1

原创 Java8 Stream流应用(树状结构数据生成)

树状结构的查询在JavaWeb项目开发是经常遇到的一类开发需求,这一问题我们是可以通过SQL语句的来解决,那有没有可以利用代码来解决那,今天,小编就来和大家分享一个利用Stream流来解决树状图的问题。首先准备一下实体类ItemInfo类:public class ItemInfo { private int id; private Integer code; private Integer pcode; private String value; priv

2020-12-08 15:55:12 2770 1

原创 IDEA下 Mybatis generator总是报错targetProject找不到

在实际开发过程中,我们经常会遇到需要使用Mybatis进行和数据库相关表的xml文件、dao层java代码的生成,由于有的表字段过多,这在我们实际开发过程中难免会遇到粗心,后来小编发现可以使用Mybatis generator这个工具进行生成相应的xml文件和dao层Java代码的生成。小编在实际使用的时候,发现在idea环境相对路径总是无法找到,总是报错,如下图所示:小编的Mybatis generator配置文件如下:<?xml version="1.0" encoding=".

2020-12-08 15:04:00 1303

原创 Java 利用正则表达式替换第二个位置的固定字符串

0x01 背景在我们实际开发过程中,难免会遇到字符串替换问题,但String工具类中给我们提供的只有replace,replaceAll,replaceFirst三种方法供我们使用,小编在实际开发过程中遇到业务需求,需要替换字符串第二个位置的固定字符串,但是简单的使用上面的三种方法又不能很好的实现。所以,现在记录一下,该如何替换。0x02 代码public class TestRegExp { public static void main(String[] args) {

2020-11-30 15:07:45 2612

原创 Java Stream原理解析(二)续

前一篇文章关于Stream pipelines还留下两个问题,分别是叠加之后的操作如何执行以及执行后的结果在哪里,今天,小编在这里做一下收尾。叠加之后的操作如何执行?Sink完美的封装了Stream的每个步骤,并给出了【处理->转发】的模式来叠加操作。那经过操作记录保存以及操作叠加之后,就来到了最后一步,Stream是如何启动这一连串的叠加操作的?此时,你可能会记得我们在一开始说的结束操作会触发计算。结束操作之后不能再有别的操作,所以结束操作并不会创建新的Stage。结束操作会创建一个包装

2020-11-19 20:02:01 270

原创 Java Stream原理解析(二)

1、Stream Pipelines上一篇文章对Stream流做了简单介绍,并遗留下几个小问题,其中一个是Stream流在结束操作会触发实际计算,在计算发生的时候会把所有的中间操作积攒操作pipeline的方式进行,那此处pipeline到底是怎么样的方式那,下面我们用一个简单的例子来一步一步的理解。栗子:从一个字符串列表中找到以‘a'开头的,最长的字符串长度。一种简单的方式是每一次函数调用的时候都执行一次迭代,这样并将处理中间结果放到某种数据结构中(比如数组、容器等)。for循环的处理形式:

2020-11-19 19:27:40 195

原创 Java8 Stream流原理分析(一)

1、Stream的优势代码简单:函数式编程,使用Stream接口可以有效规避for循环的复杂运算多核友好:Java函数式编程能够使得编写并行程序从未如此简单,如果需要的,直接调用一下parallel()方法即可。这是常见的Stream接口继承关系图,图中4种Stream继承BaseStream,可以看到结构图中,Stream为不同数据据类型设置了不同的接口,在这里你可能会奇怪为什么不把IntStream等设计成Stream子接口?毕竟接口中的方法名大部分都一样。答案是因为这些方法的名

2020-11-19 16:55:53 466

原创 并发编程的理解(一)

https://juejin.im/post/6844903910113542152

2020-08-21 16:19:55 221

原创 两大注册中心比较(Zookeeper,Eureka)

简介Eureka是一款由Netflix提供的开源的服务注册和发现的产品,并能够提供相应的Java封装。在实现的时候,节点之间相互平等,部分注册中心的节点挂掉或者没有及时的被注册中心发现,也不会影响集群的正常的运转,即使集群只剩下一个节点存活,也可以提供正常的服务发现功能。哪怕是所有的服务注册点都挂了,Eureka Clients(客户端)上也会缓存服务调用的信息。这就保证了微服务之间的互相调用足够的健壮。Zookeeper(以下简称ZK)主要是为大型的分布式计算提供开源的分布式配置服务,同步服务和命

2020-07-24 10:22:40 328

原创 MySQL分页坑(limit+order by数据重复)

问题描述在MySQL中我们经常使用limit来进行分页查询,比如使用limit(0,10)标识列出第一页的10条数据,limit(10,10)表示列出第二页。但是,如果此时limit加上order by的时候,可能会出现翻到第二个时候,会出现第一页的数据。具体如下:select ORG_CODE,NAME from b_org order by CREATE_TIME desc limit 6,6;使用上述的SQL查询的时候,很有可能出现和Limit 0,6相同的某条记录。而如果使用如下

2020-07-09 16:34:12 2957

原创 初始Redis(一)

一、缓存知识概念解析 什么是缓存 我们日常生活中,经常会接触听到缓存这个词,例如,浏览器清空缓存,处理器缓存大小,磁盘缓存等等。但今天我们可以将缓存大致分为以下种类:硬件缓存:指的是机器上的 CPU、硬盘等组件的缓存区间,利用内存作为中转区域,并通过内存交互信息,减轻负载,提高传输效率。客户端缓存:指的是某些应用,例如浏览器、手机App、视频缓冲等,都是在加载一次数据后将数据临时存储到本地,当再次访问时候先检查本地缓存中是否存在,存在就不必去远程重新拉取,而是直接读取缓存,这样来减少远..

2020-07-02 17:27:06 124

原创 递归拆解三步骤

算法思路“递归”一词顾名思义就是一个方法在不断的调用自己,没错,但这只是对递归最表层的理解。那么递归的实质是什么?递归的本质是在能够把一个大问题不断的拆解成比他小点的问题,然后,当我们拿到最核心的小问题解,就可以利用小问题的解去不断的解决大问题的解。那小问题的解该如何去得到?用再小一号的问题去解构出来,小到不能再小的时候就是我们最核心、最基础的零号问题。通过以上的这些发问,我们不难总结出递归算法的三步骤:核心、基础问题:就是递归的终点,走到最小的那个问题,能够直接给出结果,不必再

2020-07-01 16:52:08 903

原创 RPC、RMI、HTTP、REST的区别(小知识)

RPC:远程服务调用(Remote Procedure Call),加上Protocol后可以称为远程过程调用协议,可以用不同的语言实现,可以借用HTTP协议或者其他协议来实现,一般都是通过基于TCP/IP的自定义协议实现。HTTP协议和TCP/IP协议有什么关系呢?HTTP是应用层协议,TCP/IP是传输层协议。HTTP协议请求中会包含很多内容,传输效率要低,一般RPC实现都不采用HTTP协议;RPC采用自定义的TCP协议,可以精简报文格式,一般都是采用二进制形式,客户端和服务端采用统一的序列化和

2020-06-24 14:17:56 401

原创 DataX使用以及安装

DataX的概述DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。DataX开源地址:https://github.com/alibaba/DataX安装步骤如下:1.前置条件DataX需要有JDK(1.8版本,推荐使用1.8)、Python(推荐使

2020-06-04 17:24:19 222

原创 MYSQL数据库之ON DUPLICATE KEY UPDATE 作用

首先,需要特别提醒大家,ON DUPLICATE KEY UPDATE 语法是MYSQL数据库独有。ON DUPLICATE KEY UPDATE 语法的作用是:当insert一条语句的时候,如果发现该条记录已在数据库中存在,则使用Update更新相同记录中部分字段。用法:现有一张user表,表结构以及表数据如下:user表结构user表数据现在如果执行如下语句:insert...

2020-04-15 09:51:09 329

原创 HashMap源码理解(一)

HashMap设计的初心是找到一种方法,可以存储一组键值对的集合,并能够快速的实现查找元素。Map的定义:是将键映射到值的对象HashMap中是利用内部类Node来定义存储这个键值对的,之后利用Node数组来存储HashMap数据结构,那我们都知道数组之所以能够快速的查找,是因为其具有索引(数组下标)直接定位到对应的存储桶(数组所存储对象的位置)。而在HashMap中为了能够利用索引来查找...

2019-11-13 13:32:29 114

原创 Java的逃逸分析技术

使用内存逃逸分析技术,编译器会对代码做如下优化同步省略。如果一个对象被发现只能从一个线程被访问到。那么对于这个对象的操作可以不考虑同步。 将堆分配转化为栈分配。如果一个对象在子程序中被分配,要使得指向该对象的指针永远不会逃逸,对象可能是栈分配的时候选的,而不是堆分配 分离对象或者标量替换。有的对象可能不需要作为一个连续的内存结构存在也可以访问到。那么对象的部分可以不存储在内存中,而是存储在...

2019-11-13 11:10:45 262

转载 cas单点登录详细搭建教程

【环境说明】:本文演示过程在同一个机器上的,环境如下: windows7 64位 jdk1.7.0_51 apache-tomcat-7.0.57-windows-x64 cas-server-webapp-4.0.0.war、cas-client-core-3.2.1.jar、commons-logging.jar 确保本地jdk环境已经搭建好 ...

2019-09-10 09:33:30 916

转载 CAS单点登录原理详解

转载地址http://www.cnblogs.com/lihuidu/p/6495247.html1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让用户从某种意义上觉得只登录了一次。...

2019-09-10 08:58:01 176

原创 设计模式之开篇原则(二)

续设计模式之开篇原则(一)今天介绍设计模式原则之接口隔离、依赖倒置、迪米特法则接口隔离接口隔离(分离)指的是对高层接口的独立、分化,客户端对类的依赖应该基于最小接口,而不应该依赖不需要的接口。简单来说就是定义接口的时候尽量往小定义,不要定义成全能型的,什么都能,什么都会,最好是一个接口只对应一个角色职能。假设我们要定义一个动物高层接口,我们开始思考,区别于植物,动物一定是能跑的,而...

2019-08-22 14:57:20 96

原创 设计模式之开篇原则(一)

设计模式到底是什么?它是对整个软件系统的拆分,组装,并决定模块间关系以及如何互动的方式。究其本质,设计模式就是以封装、继承、多态、抽象的语言特性为基础,以六大设计原则的灵魂组合而总结出的一系列优化方案。本篇文章主要讲的是设计模式之六大基本原则:单一职责、开闭原则、里式替换、依赖倒置、接口隔离、迪力米特里原则单一职责我们知道功能完备的软件系统是复杂的,系统的拆分与模块化是不可或缺的,而面向对...

2019-08-22 14:53:15 122

原创 设计模式之工厂(二)

续集工厂模式之工厂(一)工厂方法模式我们都知道简单工厂模式的缺点是担任工厂角色的工厂类的扩展和维护方面极为差,为了能够解决这一问题,我们需要将工厂类进一步的抽象,于是,这一件的工厂方法模式就有一下几个角色:抽象工厂:工厂方法模式的核心,与应用程序无关,任何在模式中创建的对象的工厂必须实现这个接口,具体工厂:实现抽象工厂接口的具体工厂类,包含了与应用程序的相关设计逻辑,并且受到应用程...

2019-08-22 14:17:05 72

原创 设计模式之工厂(一)

本文章主要是对Java23种设计模式种的工厂模式进行总结。工厂,顾名思义,就是创建批量化操作的大的工厂。而今天我们也可以利用现实生活中的工厂思维,来理解设计模式的工厂模式。设计模式之工厂模式共有三种形态:简单的工厂模式(静态工厂模式),工厂方法模式(多态性工厂或者虚拟构造子模式)、抽象工厂模式(工具箱模式)简单的工厂模式所谓的简单工厂模式,所涉及到的有工厂角色、抽象产品角色以及具体...

2019-08-22 13:58:04 92

原创 Oracle基础之exists解读

SQL语句允许测试一个子查询的结果中是否有元组。而在这个业务逻辑中,Exists关键字起到了至关重要的作用。Exists的基本逻辑Exists结构在作为参数的子查询中返回值不是为空集合时,返回true,是空集时,返回为false。同理,Not Exists结构与Exists的结构相反,返回值为空集时,返回true,为非空集合时,返回false。使用Exists作为连接词的嵌套查询叫做相关...

2019-08-22 13:12:26 1160

原创 Java基础之类型信息(一)

我们都知道对于面向对象的语言,一般都会在编译期执行类型检查。那如果我们要在运行期间如何对数据类型进行提取并识别那,在Java里面有两种方式可以做到这一点。其一,利用传统的RTTI,它假定我们在编译时就已经知道所有类型。另一种是“反射”机制,它允许我们在运行时发现和使用类的信息。RTTI(运行时类型识别)RTTI的一般形式我们先来看一段代码abstract class Shape ...

2019-08-08 17:11:20 129

原创 Oracle函数总结

常用函数sysdate系统的当前日期和时间,包括每月日和时分秒 Lower(string) 大写转小写 Upper(string) 小写转大写 trim(string) 、ltrim、rtrim 去左右空格 to_numer(string) 字符转数字 to_char(date,'format') 日期按照format格式转化为字符串 to_date(string,'for...

2019-07-11 16:57:41 126

原创 Java基础之this关键字解读

首先我们来看一下这段代码:class Banana{ public void peel(int i){ }}public class BananaPeel{ public static void main(String[] args){ Banana a=new Banana(); Banana b=new Banana(); ...

2019-07-08 12:57:36 116

原创 Java基础之方法重载

在日常生活中,相同的词可以表达多种不同的含义。而把这一思想放到程序设计语言当中,用“重载”来代表。特别是含义之间的差别很小的时候,这种表达方式的作用就显得的尤为重要。方法的重载在Java语言中可以说是随处可见。那么我们应该如何去判断方法的重载那? 区分重载的方法 Java是如何找到你调用的方法是哪一个的那?其实规则很简单:每个重载的方法都必须有一个独一无二的参数类型列表。对规则进行简...

2019-07-08 10:44:32 139

原创 Java的常见误区和细节

1 定义名称时尽量避免使用$,因为编译器在对.java文件进行编译的时候,会将”$”编译成顶层类型与底层类型的连接符。2 当short,byte,char参加运算时,结果为int型,而非与较高的类型相同。如果变量是byte,short,byte类型,当对其赋予编译时期的常量,而该常量又没有超过变量的取值范围时,编译器就可以进行隐式的收缩转换。这种隐式的收缩转换是安全的,因为该收缩转换只适用...

2018-04-14 10:46:08 210

原创 设计模式之单例模式

在介绍单例模式之前,我们先了解一下,什么是设计模式?设计模式(Design Pattern):是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。目的:使用设计模式是为了可重用性代码,让代码更容易被他人理解,保证代码可靠性。单例模式:单例,顾名思义就是只能有一个、不能再出现第二个。就如同地球上没有两片一模一样的树叶一样。在这里就是说:一个类...

2018-04-14 10:33:31 585

原创 ACM最大和问题

最大和时间限制:1000 ms  |  内存限制:65535 KB难度:5描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。 例子:0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 其最大子矩阵为:9 2 -4

2017-09-17 09:10:59 338

原创 ACM单词拼接

单词拼接时间限制:3000 ms  |  内存限制:65535 KB难度:5描述 给你一些单词,请你判断能否把它们首尾串起来串成一串。前一个单词的结尾应该与下一个单词的道字母相同。如alohadogarachnidgophertigerrat 可以拼接成:aloha.arachnid.dog.gopher.rat.tiger输入第一行

2017-09-13 15:41:00 413

原创 三国志

Dijkstra算法+01背包问题# include   # define MAX(a,b) (a)>(b)?(a):(b)  # define MIN(a,b) (a)# define N 102  # define S 1000001  void DJSTL();  char Flag[N];  int MAP[N][N],NUM[N],DP[S],s,n,m;

2017-09-11 16:30:57 260

空空如也

空空如也

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

TA关注的人

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