自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 客观的衡量想法

战略咨询师巴德·卡德尔把工作分为三类:善于做的、喜欢做的和能赚钱的。同时他用了一张极其简单的图,高度概括了我们应该如何选择职业:善于做的 ∩ 希望做的 ∩ 能赚钱的

2020-07-29 09:36:01 186

原创 Web项目开发中常见安全问题防范

背景随着计算机网络技术的快速发展,Web应用技术在各个领域都得到了广泛的应用,但是由于不法分子针对Web应用程序相关安全漏洞的挖掘利用及恶意攻击手段的层出不穷,而与此同时国内Web应用开发人员水平参差不齐,很多开发人员安全意识淡薄,导致Web应用存在各种各样的安全漏洞,使得Web应用程序在给用户提供简便、快捷服务的同时,用户不得不为其自身可能存在的Web安全问题而担忧。主要针对Web项目中常见的安全问题进行深入的研究与分析,并对提出的各种安全问题给出了一些有效的解决方案。安全常见问题及防范1.输入检查

2020-07-23 14:43:06 748

原创 SSO流程图

2020-07-23 14:39:06 436

原创 MQTT采集

2020-07-23 14:37:00 341

原创 springboot jar 转换成war

Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布。使用jar包比较方便,但如果是频繁修改更新的项目,需要打补丁包,那这么大的jar包上传都是问题。所以,jar包不一定合适适用所有的场景,如war包更合适,你可以尝试转为传统的war包,这样打补丁包可能更方便。1.修改Spring Boot启动类启动类继承 SpringBootServletInitializer类,并覆盖 configure方法。public class XXXApplicationWar extend

2020-07-23 13:44:29 257

转载 spring事务的传播机制及原因分析

PROPAGATION_REQUIRED – 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS – 支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY – 支持当前事务,如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_NEW – 新建事务,如果当前存在事务,把当前事务挂起。PROPAGATION_NOT_SUPPORTED – 以非事务方式执行操作,如果当前存在事务,就把当前

2020-07-14 17:08:39 167

原创 微信公众号域名验证路径正则表达式

@Controller@RequestMapping("/")@PropertySource(value = “classpath:application_mp_verify.properties”)@ConfigurationProperties(prefix = “mp”)public class WxMpVerifyConfigController {private Map<String, String> verify = new HashMap<>();priva

2020-07-13 16:48:59 503

转载 微服务与单体服务的拆分原则

单体架构的优势:1、便于开发2、易于测试3、易于部署单体架构的不足:1、复杂性高2、交付效率低:构建和部署耗时长3、伸缩性差:只能按整体横向扩展,无法分模块垂直扩展,IO密集型模块和CPU密集型模块无法独立升级和扩容4、可靠性差:一个BUG可能引起整个项目的运行5、阻碍技术创新微服务架构的优势:1、易于开发和维护2、独立部署3、伸缩性强4、与组织结构相匹配5、技术异构性微服务面临的挑战:1、服务拆分:(1)、微服务拆分原则:领域模型、组织结构、康威定律、单一职责(2).

2020-07-10 07:23:16 1716

原创 java线程池大小设置

一般说来,大家认为线程池的大小经验值应该这样设置:(其中N为CPU的个数)如果是CPU密集型应用,则线程池大小设置为N+1如果是IO密集型应用,则线程池大小设置为2N+1这个说法到底是不是正确的呢?其实这是极不正确的。那为什么呢?首先我们从反面来看,假设这个说法是成立的,那我们在一台服务器上部署多少个服务都无所谓了。因为线程池的大小只能服务器的核数有关,所以这个说法是不正确的。那具体应该怎么设置大小呢?假设这个应用是两者混合型的,其中任务即有 CPU 密集,也有 IO 密集型的,那么我们改怎么

2020-07-10 06:39:17 469

原创 索引结构B+树

m阶B树具有如下特征:1.根结点至少有两个子女。2.每个中间节点都至少包含ceil(m / 2)个孩子,最多有m个孩子。3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m。4.所有的叶子结点都位于同一层。5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。B+树与B树的区别有k个子结点的结点必然有k个关键码(有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点

2020-07-07 20:49:05 902

原创 java中对象、成员变量、静态变量、方法的内存分配

java中内存主要包含4块,heap(堆内存)stack(栈内存)data segment(静态变量或是常量存放区)codesegment(方法区).堆内存中存放的是new出的对象,new出的对象只包含成员变量。栈内存中:存放的是局部成员变量。对于基本的数据类型存放的是基本变量的值,而对于对象变量,存放的是堆内存的地址。静态、常量区:存放的是静态变量(类变量)或是常量。方法区:存放的是对象的方法。因此即使new出多个对象也是只是存在一个方法。...

2020-07-07 15:17:38 315

原创 JVM类装载分为以下 5 个步骤

加载:根据查找路径找到相应的 class 文件然后导入检查:检查加载的 class 文件的正确性准备:给类中的静态变量分配内存空间解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示,而在直接引用直接指向内存中的地址初始化:对静态变量和静态代码块执行初始化工作...

2020-07-07 13:58:27 159

原创 Maven的Scope

scope定义了类包在项目的使用阶段。项目阶段包括: 编译,运行,测试和发布。compile默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会达到包里去test该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比如定性的Junitruntime依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。此类的驱

2020-07-06 21:49:00 87

原创 GC Roots

虚拟机栈(栈桢中的本地变量表)中的引用的对象方法区中的类静态属性引用的对象方法区中的常量引用的对象本地方法栈中JNI的引用的对象

2020-07-06 20:20:06 122

原创 JAVA线程池的执行过程

线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面有任务,线程池也不会马上执行它们。当调用 execute() 方法添加一个任务时,线程池会做如下判断:如果正在运行的线程数量小于 corePoolSize,那么马上创建线程运行这个任务;如果正在运行的线程数量大于或等于 corePoolSize,那么将这个任务放入队列;如果这时候队列满了,而且正在运行的线程数量小于 maximumPoolSize,那么还是要创建非核心线程立刻运行这个任务;如果队列满了,而且正在.

2020-07-04 21:23:32 560

原创 Mysql分表标准

什么样的表需要拆分:根据表的体积、表的行数、访问特点来衡量表是否需要拆分一.拆分标准是:1.表的体积大于2G或行数大于1000w,以单表主键等简单形式访问数据,这个时候需要分表2.表的体积大于2G或行数大于500W,以两表jion,小范围查询(结果集小100行)等形式访问数据,这个时候需要分表3.表的体积大于2G或行数大于200w,以多表join,范围查询,order by,group by,高频率等复杂形式访问数据,尤其DML,这个时候需要分表4.表的字段中含有text等大字段的、varchar

2020-07-04 12:21:45 314

原创 java.lang.NoClassDefFoundError和ClassNotFoundException的几种解决思路方法

CLASSPATH环境变量配置出错java运行环境的jdk版本比class文件的编译版本低了导致class文件的访问权限或者所在目录的访问权限有问题,导致java无法读这个文件jar包有错误,查看jar是否有漏或者重新导入jar包...

2020-07-02 11:24:43 309

原创 反射

反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力Java反射:在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法58. 什么是 java 序列化?什么情况下需要序列化?简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可

2020-07-02 07:39:26 107

原创 ArrayList 扩容原理

List扩容实现步骤分两步:1、扩容把原来的数组复制到另一个内存空间更大的数组中2、添加元素把新元素添加到扩容以后的数组中ArrayList 的构造函数ArrayList的两个构造方法ArrayList()ArrayList(int initialCapacity)/** * 默认初始容量大小 */ private static final int DEFAULT_CAPACITY = 10; /** *声明空数组 */

2020-07-01 23:27:46 254

空空如也

空空如也

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

TA关注的人

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