自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 electron无法安装的问题

使用命令:npm config set ELECTRON_MIRROR http://npm.taobao.org/mirrors/electron/也用了npm的镜像:registry = “https://registry.npmmirror.com/”,也不行。后来网上折腾一段时间,看到一个开源项目(基于electron),写到要在npm设置electron的镜像,才可以。使用electron,安照官方例子,结果是失败的。完后,再重新npm install,再npm start,解决。

2023-03-18 13:21:36 977 1

原创 如何解决拉取微应用 entry 时 cookie 未携带的问题

因为拉取微应用 entry 的请求都是跨域的,所以当你的微应用是依赖 cookie (如登陆鉴权)的情况下,你需要通过自定义 fetch 的方式,开启 fetch 的 cors 模式:如果你是通过 registerMicroApps 加载微应用的,你需要在 start 方法里配置自定义 fetch,如:import { start } from 'qiankun';start({ fetch(url, ...args) { // 给指定的微应用 entry 开启跨域请求 if (

2021-12-21 01:00:00 230162 1

原创 qiankun微前端 如何确保主应用跟微应用之间的样式隔离

qiankun 将会自动隔离微应用之间的样式(开启沙箱的情况下),你可以通过手动的方式确保主应用与微应用之间的样式隔离。比如给主应用的所有样式添加一个前缀,或者假如你使用了 ant-design 这样的组件库,你可以通过这篇文档中的配置方式给主应用样式自动添加指定的前缀。以 antd 为例:配置 webpack 修改 less 变量{ loader: 'less-loader', options: { modifyVars: { '@ant-prefix': 'yourPr

2021-12-20 01:00:00 234159 2

原创 qiankun微前端 为什么微应用加载的资源会 404

原因是 webpack 加载资源时未使用正确的 publicPath。可以通过以下两个方式解决这个问题:a. 使用 webpack 运行时 publicPath 配置qiankun 将会在微应用 bootstrap 之前注入一个运行时的 publicPath 变量,你需要做的是在微应用的 entry js 的顶部添加如下代码:__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;关于运行时 publicPath

2021-12-19 01:00:00 237115 2

原创 qiankun如何在主应用的某个路由页面加载微应用

必须保证微应用加载时主应用这个路由页面也加载了。vue + vue-router 技术栈的主应用:主应用注册这个路由时给 path 加一个 *,注意:如果这个路由有其他子路由,需要另外注册一个路由,仍然使用这个组件即可。const routes = [ { path: '/portal/*', name: 'portal', component: () => import('../views/Portal.vue'), },];微应用的 activeRule

2021-12-18 17:23:12 233636

原创 ant-design-vue-jeecg关于首页加载过慢的优化小结

网站首页登陆的时候,等待较长,用户反馈体验较差,我们可以从以下几个思路优化处理以下。1.为什么等待较长?很明显,有个文件加载过慢了。chunk-vendors是什么文件呢?第三方模块文件,就是node_models里面的文件,ant-design-vue-jeecg把vue主配置文件(main.js)里依赖加载需要的文件全部打包到了这个文件里,文件过大,就会加载会过慢。2.解决问题的第一步。去掉不必要的依赖加载。Jeecg官网说明了加载所需要的必要文件,个人建议除建议外,其余进行相应移除和懒加

2021-12-15 21:45:44 248310 3

原创 谈谈递归,递归算法通用解决思路

最近参与了一个比较大的项目,其中用到的各种聚合算法理解起来也比较困难,尤其用到了递归的地方。递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google 的 PageRank 算法都能看到最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时间/空间复杂度,而时间/空间复杂度是算法的重要考量!递归算法的时间复杂度普遍比较难(需要用到归纳法等),换句话说,如果能解决递归的算法复杂度,其他算

2021-10-25 19:13:05 319815

原创 缓存 Redis 在项目中合理使用总结

Redis 是一个开源的内存数据结构存储系统。可以作为数据库、缓存和消息中间件使用。支持多种类型的数据结构。Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence)。通过 Redis 哨兵(Sentinel)和 Redis 集群(Cluster)的自动分区,提供高可用性(high availability)。基本数据类型字符串.

2021-09-28 18:16:09 361725

原创 Java如何减少繁琐臃肿的代码

消除ifelse在项目实际开发中使用if…else判断的场景非常多,上面只是其中几种场景。下面再列举一下,其他常见的场景。1.根据不同的数字返回不同的字符串 public String getMessage(int code) { if (code == 1) { return "成功!"; } else if (code == -1) { return "失败!"; } else if (code ==

2021-09-20 14:48:44 379062

原创 TransactionUtils Spring事物回滚工具类

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.stereotype.Component;import org.springframework.transaction.TransactionStatus;import org.sp

2021-09-20 14:39:37 376669

原创 使用Java实现“解析并计算基本算术表达式”

代码的实现逻辑很简单,分别将数字和符号放入两个栈,然后再根据条件出栈并计算表达式即可。示例代码如下:/** * 计算并打印简单表达式 * @param array 表达式列表,比如:7+3*4*5+2+4-3-1 */private static void print(List<String> array){ for(String string : array){ //数字栈 Stack<Double> numStack = new

2021-09-14 20:17:39 387199

原创 Arrays.asList() 使用add/remove/clear 抛出UnsupportedOperationException()异常的问题

阿里巴巴java开发规范说到使用工具类Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException(),我们来看一下为什么会出现这种情况。问题分析:我们做个测试public static void main(String[] args) { List<String> list = Arrays.asList("a", "b", "c");

2021-09-04 23:40:28 395653 1

原创 自定义浏览器协议 实现web调用本地程序

我们都知道QQ有个功能,你只要在网页上点击 发起会话 按钮,就能打开QQ聊天窗口跟别人聊天例如你打开这个链接:tencent://Message/?Uin=100000 就可以跟调起QQ聊天窗口那么,这是怎么做到的呢?不告诉你 哈哈哈哈我们只需要在注册表里添加几条注册项,就能实现我们看QQ在注册表里是怎么写的Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Tencent]"URL Protocol"="C:\\Progra

2021-09-04 23:27:10 398421 1

原创 Win10系统下IE浏览器flash全屏黑屏崩溃问题解决办法

Win10系统下IE浏览器flash全屏黑屏崩溃问题解决办法方法1:下载flash player for IE版本下载地址 https://www.flash.cn/cdm/latest/flashplayerax_install_cn.exe下载完成后不要直接打开右键 属性 兼容性 选择windows7 确定 然后打开等待安装完成若上述方法没有解决方法2:请下载360电脑救援 下载地址 https://eyun.baidu.com/s/3smRrm5f打开后搜索 flash

2021-09-04 23:17:46 404094

原创 某东商品详情页图片放大镜功能

首先看看某东的效果:这个案例可以分为三个功能模块:鼠标经过小图片的盒子,遮罩层和大图片盒子显示,离开隐藏遮罩层和大图片盒子。遮罩层跟随鼠标移动。移动遮罩层,大图片跟随移动。要实现这个案例,我们需要用到下面几个知识点:属性作用element.offsetTop返回元素相对于带有定位父元素上边框的偏移量element.offsetLeft返回元素相对于带有定位父元素左边框的偏移量element.offsetWidth返回自身包括padding、边框、内容区

2021-09-04 23:13:24 399489

原创 关于springcloud中Feign和ribbon设置超时时间和重试机制的记录

一、 Feign设置超时时间使用Feign调用接口分两层,ribbon的调用和hystrix的调用,所以ribbon的超时时间和Hystrix的超时时间的结合就是Feign的超时时间#hystrix的超时时间hystrix: command: default: execution: timeout: enabled: true isolation:

2021-09-04 23:04:02 400383 1

原创 前端面试最常见的功能代码 防抖 节流 new bind call apply deepCopy 事件总线 发布订阅模式 柯里化 es5 实现继承 instanceof 异步并发数限制 异步串行

1. 防抖function debounce(func, ms = 1000) { let timer; return function (...args) { if (timer) { clearTimeout(timer) } timer = setTimeout(() => { func.apply(this, args) }, ms) }}// 测试const task = () => { console.lo

2021-08-30 19:52:36 402123 1

原创 CORS跨域资源共享

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。1 简介CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信

2021-08-29 21:38:56 407853

原创 返回状态码304 Not Modified详解

第一次访问 200鼠标点击二次访问 (Cache)按F5刷新 304按Ctrl+F5强制刷新 200在客户端向服务端发送http请求时,若返回状态码为304 Not Modified 则表明此次请求为条件请求。在请求头中有两个请求参数:If-Modified-Since 和 If-None-Match。当客户端缓存了目标资源但不确定该缓存资源是否是最新版本的时候, 就会发送一个条件请求。在进行条件请求时,客户端会提供给服务器一个If-Modified-Since请求头,其值为服务器上次返回响应

2021-08-29 21:28:02 420550 1

原创 还在使用@Autowired 吗?@Autowired和@Resource有啥区别

区别一@Autowired 是 Spring 自带的注解@Resource 是 J2EE提供,Spring 做了支持区别二@Autowired 默认按类型装配@Resource 默认按照名称进行装配我们一起看看 @Resource 的源码@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface Resource

2021-08-29 21:22:14 410122

原创 java压缩包加密上传,解密下载

java压缩包加密上传,解密下载业务场景供应商上传投标文件需要进行加密处理,通过链接下载时下载的时加密的文件,而通过系统内访问接口下载时,下载的是解密好的文件。问题解决思路1. 首先配置三个保存文件的地址:上传地址,解密地址,再次加密地址(也就是最终地址)2. 压缩包加密上传思路:上传压缩文件时,首先上传到上传地址进行解压,解压完成后,删除掉上传地址的压缩文件,生成密码保存数据库再次加密压缩到加密地址,并删除掉解压的文件。3. 压缩包解密下载思路:通过系统外部链接下载时下载的是已经加密好的文件。

2021-08-28 09:06:31 410907

原创 android实现在线预览图片,手势放大缩小

android实现在线预览图片,手势放大缩小简要描述首先对文件类型进行判断。WPS不支持在线预览图片,当文件是doc、xls、pdf等,调用WPS。图片时,调用预览图片方法1.判断文件类型方法2.新建一个Activity类,并且继承Activity,来实现对图片的预览 Intent intent=new Intent(context, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

2021-08-28 09:02:04 413767

原创 Cordova实现自定义下载插件和WPS在线预览

Cordova实现自定义下载插件和WPS在线预览简要描述点击下载链接,请求URL,判断手机是否安装WPS,如果安装则调用wps在线编辑,没有安装则对文件进行下载,并在通知栏进行通知,显示下载进度(不调用安卓系统内的下载管理器)。使用AsyncTask异步任务实现,调用publishProgress()方法刷新进度下载请求控件WebView,可以使得网页轻松的内嵌到app里,并且比较强大的是,还可以直接跟js相互调用。WebChromeClient是辅助WebView处理JavaScript的对

2021-08-28 08:58:02 410464

原创 Cordova中使用JS调用JAVA,并进行回调,判断手机位置信息是否打开,并将结果进行反馈

cordova判断手机位置信息是否打开,并将结果进行反馈简要描述JS调用java方法,并进行回调配置文件的具体方法需要配置的内容如下(举例)1.在html页面调用JS windows.geoJslocation.getLocation()windows.geoJslocation 需要与 cordova_plugins.js 中的 clobbers 下的命名一致;2.定义JS调用java方法 cordova.define("cordova-plugin-geolocation.loca

2021-08-28 08:55:35 408713

原创 设计模式之美(13)-行为型-职责链模式

模版模式、策略模式、职责链模式。这三种模式都具有相同的作用:复用和扩展,在实际的项目开发中比较常用,特别是框架开发。我们可以利用他们来提供框架的扩展点,能够让框架的使用者在不修改框架源码的情况下,基于扩展点定制化框架的功能。职责链模式的原理和实现职责链模式,将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,知道链上的某个接收对象能够处理它为止。职责链模式,有两种实现方式,一种是使用链表,一种是数组。如果职责链上的某个处理器能够处理这个请求,

2021-08-23 21:56:48 403015

原创 设计模式之美(12)-行为型-策略模式

策略模式的原理与实现策略模式(Strategy Design Pattern) 定义一组算法,将每个算法分别封装起来,让他们可以互相替换。策略模式可以使算法的变化独立于使用他们的客户端(这里的客户端代指使用算法的代码)。工程模式是结偶对象创建和使用,观察者模式是解耦观察者和被观察者。策略模式跟两者类似,也能起到解耦的作用,不过它的解耦是策略的定义、创建、使用这三部分。策略的定义策略的定义比较简单,包含一个策略接口和一组实现这个接口的策略类。因为所有的策略类都实现相同的接口,所以客户端代码基于接口而

2021-08-23 21:53:39 408719 1

原创 设计模式之美(11)-行为型-模版模式

模版模式的原理与实现模版模式,全称是模版方法设计模式,模版方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模版方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。这里的“算法”,可以理解为业务逻辑。public abstract class AbstractClass { public final void templateMethod() { //... method1(); //... method2(); //

2021-08-23 21:48:38 404657

原创 设计模式之美(10)-行为型-观察者模式

原理及应用场景剖析观察者模式(Observer Design Pattern)也被称为发布订阅模式,在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。被依赖的对象叫做被观察者(Observable),依赖的对象叫作观察者(Observer)观察者模式是一个比较抽象的模式,根据不同的场景和需求,又完全不同的实现方式。public interface Subject { void registerObserver(Observer observer); v

2021-08-23 21:46:35 401388

原创 设计模式之美(9)-结构型-门面模式

门面模式的原理与实现门面模式,也叫外观模式,Facade Design Pattern。门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。假设有一个系统A,提供了a、b、c、d四个接口。系统B完成某个业务功能,需要调用A系统的 a、b、d接口。利用门面模式,我们提供一个包裹 a、b、d接口调用的门面接口X,给系统B直接使用。也就是类似, 客户端的响应速度比较慢,排查之后发现,因为过多的接口调用过多的网络通信,针对这种情况,我们也可以利用门面模式,让后端服务器提供一个包裹 a、b、d

2021-08-23 21:44:53 407514

原创 设计模式之美(8)-结构型-适配器模式

适配器模式的原理与实现适配器模式(Adapter Design Pattern)。这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式有两种实现方式:类适配器和对象适配器。类适配器使用继承关系来实现,对象适配器使用组合关系来实现。// 类适配器: 基于继承public interface ITarget { void f1(); void f2(); void fc();}public class Adap

2021-08-23 21:43:17 417988 3

原创 设计模式之美(7)-结构型-代理模式

结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题,包括:代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式。代理模式原理解析代理模式(Proxy Design Pattern),它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。public class UserController { //...省略其他属性和方法... private MetricsCollector metricsColle

2021-08-23 21:40:33 404189

原创 设计模式之美(6)-创建型-原型模式

原型模式的原理与应用如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行赋值(或者叫拷贝)的方式来创建新对象,达到节省创建时间的目的。这种基于原型来创建的方式就叫作原型设计模式(Prototype Design Pattern),简称原型模式。为何“对象的创建成本比较大”实际上,创建对象包含申请内存、给成员变量赋值这一过程,本身并不会花费太多时间,但是,如果对象中的数据需要经过复杂的计算才能得到(比如排序、计算哈希),或者从

2021-08-23 21:37:28 403796

原创 服务器异常重启,导致mysql启动失败,问题解决过程记录

思路一:检查linux的安全策略。1、查看SELinux状态:/usr/sbin/sestatus -v2、如果状态为enabled,则为开启状态,将其设置关闭状态,以上截图为设置后的状态:1)临时关闭 setenforce 02)修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled3)重启服务器 reboot3、启动mysql服务,还是报错systemctl start mysqldsystemctl status m

2021-08-23 21:35:04 408006

原创 设计模式之美(5)-结构型-代理模式

结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题,包括:代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式。代理模式原理解析代理模式(Proxy Design Pattern),它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。public class UserController {//…省略其他属性和方法…private MetricsCollector metricsCollector; //

2021-08-22 17:57:19 409434

原创 设计模式之美(4)-创建型-建造者模式

Builder模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。建造者模式原理和代码非常简单, 难点在于应用场景。比如直接使用构造函数或者配合set方法就能创建对象,为什么还需要建造者模式来创建呢?建造者模式和工厂模式都可以创建对象,那他们的区别在哪里呢?为什么需要建造者模式?创建一个对象最常用的方式就是使用new关键字调用类的构造函数来完成,那么什么情况下这种方式就不适用了,就需要采用建造者模式来创建对象呢?假设有这样的需求:定义一个资源池配置类,有以下几个成员变量,是可配置项。现在

2021-08-22 17:50:36 405766

原创 设计模式之美(3)-创建型-工厂模式

工厂模式(Factory Design Pattern)工厂模式分为三种类型:简单工厂、工厂方法和抽象工厂。简单工厂(Simple Factory)首先看一段代码然后把代码整理成简单工厂。public class RuleConfigSource {public RuleConfig load(String ruleConfigFilePath) {String ruleConfigFileExtension = getFileExtension(ruleConfigFilePath);IRu

2021-08-22 17:47:15 410585

原创 设计模式之美(2)-创建型-单例模式

单例设计模式(Singleton Design pattern)理解起来非常简单。一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。如何实现一个单例?要实现一个单例。我们需要关注的如下几个点:构造函数需要是private访问权限的,这样才能避免如何实现一个单例?要实现一个单例。我们需要关注的如下几个点:1.外部通过new创建实例;2.考虑对象创建时的线程安全问题;3.考虑是否支持延迟加载;4.考虑 getInstance() 性

2021-08-22 17:44:10 403392

原创 设计模式之美(1)-面向对象、设计原则

面向对象面向对象概述现在主流的编程范式或编程风格有三种,分别是面向过程、面向对象和函数式编程。面向对象又是这其中最主流的,现在大部分编程语言都是面向对象编程语言。大部分项目也是基于面向对象风格开发的。面向对象拥有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。2. 面向对象四大特性“封装”,封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类的方法来访问内部信息或者数据。它需要编程语言提供全新访问控制机制的语法

2021-08-22 17:38:21 408659

原创 【毕业设计全篇论文和源码】基于SSM的实体商城商户在线租赁以及信息管理系统的设计与实现(多人在线聊天室,微信扫码支付,在线签字,PDF合同在线生成,商户评分)

毕业时写的毕业设计,因为毕业后论文还有可能被复查,若大家的论文是原创,建议大家毕业几年后再进行开源本设计包含了 多人在线聊天室,微信扫码支付,在线签字,PDF合同在线生成,商户评分,基本的商铺信息管理,合同管理,新闻和公告管理,用户管理等功能,具体功能请参看论文中截图1 绪论1.1课题背景在我国城市化高速发展的今天,各种规模的商城相继出现。商城需要招商,进驻商家进行经营,商城的商铺需要出租和管理,商城各经营场所的招商信息,公告信息和活动信息的发布,进驻商家的各种信息的管理,都是人工手动..

2021-08-18 22:42:23 412778

原创 在IDEA中Debug调试VUE前端项目的方法

调试js代码,每次都在要在代码中写debugger,或者在chrome中打断点,而且chrome的断点信息不人性化。偶然发现idea竟然有这个功能,简直神器啊。研究了半天终于搞定了,哈哈,开心。下面是详细步骤:1.下载浏览器插件在chrome应用商店搜索"jetbrains ide support"插件,可能需要FQ(不会百度,老D google host),如下图,这里是我安装好的。这里我试过找下载好的插件,安装但是没有连接成功,总是提示错误,下文会提到。所以别偷懒,老老实实下载。安装成功后如右上

2021-08-09 21:50:08 425483

【毕业设计开源】基于SSM的实体商城商户在线租赁以及信息管理系统的设计与实现

【毕业设计开源】基于SSM的实体商城商户在线租赁以及信息管理系统的设计与实现

2021-08-18

空空如也

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

TA关注的人

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