自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何用工厂模式和策略模式替换繁琐 if-else的场景

一. 用编程解决实际问题的时候,我们常常用if-else去做判断。但实际开发中,if-else 的判断常常会出错,所以,周末的时候就想探究一下如何用工厂模式和策略模式代替繁琐的if -else 场景,从而提高代码的鲁棒性。public class Main { public static void main(String[] args) { System.out.println("Hello World!"); } public static String i

2020-11-02 08:48:46 303

原创 关于SQL语言建表的技巧

    今天用了2小时去阅读《The Art of SQL》这本书,受益良多,但有点后悔的是没有去直接阅读英文,中文的翻译更类似于机翻,很多会有语言表达不精确的问题。null值出现的问题    有些表格因为前期的创建不规范,会出现大量的数据为空的情况,容易造成数据库冗余的问题。null值的出现大多数伴随着大量字段被强行加入到一张表中,从而造成数据项之间不匹配,产生空值问题。更加严重的会发生两个字段值异或的情况,即A值为空的时

2020-08-17 08:33:21 239

原创 Java 动态加载

什么是Java 动态加载动态加载是指在程序运行阶段,将写好的类通过类装载器动态的装载这个类到JVM中,然后再根据这个类内容(引用的包),再去装载其他的类.动态加载的作用与动态加载所对应的是Java静态加载,静态加载的耦合度高,不利于功能扩展,使用动态加载可以不用修改源程序。若项目复杂,当添加新功能的时候,静态加载极易出错。动态加载可以避免这类问题。静态加载实例Comic 类,实体类(entity)package test.sf.dynamicLoad;public class Com

2020-08-16 23:49:37 459

原创 SQL中的函数

聚集函数定义在实际开发中,我们经常需要汇总数据来完成业务的需求,为此SQL提供了专门的业务需求,使用这些函数,可以对数据进行预处理。几个比较典型的sq聚集l函数:AVG(): 返回某一列的平均值COUNT(): 返回某列的行数MAX(): 返回某列的最大值MIN(): 返回某列的最小值SUM(): 返回某列值之和STDEV(): 基于样本估算标准偏差。标准偏差反映数值相对于平均值(mean) 的离散程度。STDEVP(): 返回一系列指定表达式中所有值的总体标准偏差。常用SQL函数ST

2020-08-04 15:25:50 365

原创 Java Native 方法和 JNI

JNI是什么      JNI 的全称是 Java Native Interface, Java 程序通过调用JNI 调用非java语言编写的方法。JNI支持Java在不同平台的运行,只要操作系统配备本地存储JNI的dll文件,Java程序可以调用JNI。      一般情况下JNI是由C和C++编写,因为C是面向过程语言,所以更加适合计算机底层逻辑,在相等的时间内,相同功能下,JNI

2020-07-27 08:17:35 559

原创 Sql语句的优化以及Sql语句优化工具

这周在做项目的时候,发现有些Sql语句写的复杂,一个复杂的Sql语句不仅性能比较低下,当涉及到重构的时候也是不容易理解和读懂的,并且一个复杂的sql语句会显著增加程序的耦合度,所以Sql语句的优化就显的很必要了。Sql语句复杂化的原因首先列举一下Sql语句复杂化的原因:将业务逻辑由Sql语句实现数据库表的设计不符合第三范式Sql语句中含有大量冗余的不必要逻辑没有很好的利用视图如何优化Sql语句呢不要超过5个表以上的连接超过5张表以上的连接会大大增加sql引擎的消耗。考虑使用临

2020-07-13 09:20:47 744

原创 论热启动,ClassLoad和实现自己ClassLoader的方法

最近做项目的时候发现一个问题,每次修改后端的代码都要重新启动程序,耗时冗长,少则30秒,多则1分钟,而且启动的时候很容易走神。。。 这样下去肯定不利于开发啦。反观前端的vue框架的热启动程序,可以大大缩减程序启动的时间,于是本菜就特别想琢磨琢磨热启动的那些事。什么是热启动热启动英文为 dynamic loading, 是指在程序运行的时候加载类进内存,而不是一般情况下的在编译的时候加载类。拥有热启动的程序,在类变更的情况下,一般会有监听器监听到类变动的情况,然后将监听到的类加载进内存中。热启动程序是

2020-07-06 00:49:29 224

原创 使用反射比较两个对象是否相等

做项目的过程中正好需要比较两个对象是否相等,通过导师的指点,运用反射的原理完成了这个功能。突然发现,反射是一个很有用的工具,可以解决很多原来不能解决的事情。判断两个对象是否相等两个对象的相等当然可以通过重写equals() 和 hashcode() 进行实现,但是对于在项目中已经封装好的,而并没有重写equals() 和 hashcode() 方法的类,使用反射就可以判断两个对象是否相等了。public static List<Map<String ,Object>> comp

2020-06-28 09:29:30 767

原创 SpringCloud学习总结之 Ribbon 和 Hystrix (三)

按照 《spring cloud 微服务实战》这本书的书写顺序,我们首先对Ribbon 进行一个介绍。Spring Cloud Ribbon 是一个基于 HTTP 和 TCP的客户端负载均衡工具, 它不同于Nginx的服务端负载均衡,他侧重于将需要的访问清单从服务注册中心中取出,放在自己的访问服务器列表(ServerList)中,当需要访问某一台具体的服务器的时候,他会经过不同的轮询策略去访问相应的负载均衡设备。同时他也不同于硬件设施的负载均衡,硬件设施经常通过配置citrix netscaler,

2020-06-27 23:41:34 210

原创 Spring Cloud学习总结之 Eureka

什么是Eureka?Eureka是由netflix出台的服务治理组件,是在分布式系统中管理各个分布式节点之间的通信,注册的一个组件。譬如当我们打开手机登录微信的时候,我们的手机会给分布式系统发消息通知客户端微信已经开启了,实际上完成的是服务注册过程,同时我们需要获取好友列表,实际上完成的是分布式结点之间的发现过程。这两个过程的实施,都需要Eureka这样的服务治理组件的帮助。Eureka由服务器和客户端组件组成。Eureka服务器端会维护一张注册表,服务器组件将所有微服务注册在这张服务清单中,包含主机与

2020-06-22 02:10:20 143

原创 预防nullPointException

被空指针折磨许久,总结一下当调用一个对象中的方法,一定要判断对象是否为null值 (如果对象所属类为static,则不用)注意: (1) 数组也属于一种对象 (2) 当调用xxx.length() == 0的时候一定注意 xxx判空调用一个对象的属性值,要判断对象是否为null 值(如果对象所属类为static,则不用)注意: (1) str.equals("abc ")常常会被判为null指针, 所以应该为 “abc”.equals(str)在数组中,尝试操作一个数组的其中一个单元

2020-06-11 11:30:18 108

原创 Spring Cloud学习总结--Spring Cloud的介绍 (一)

作为spring全家桶的一员,spring cloud既可以整合各种微服务,又能兼容Spring Boot框架,所以作为一个不甘于继续当咸鱼的菜鸟,一定是要接受spring cloud的一波洗礼了。什么是Spring Cloud要先介绍什么是spring cloud,就要先介绍微服务的概念。首先微服务第一次出现在一位叫Martin Fowler攻城狮的 Microservices的博文当中,作为一个受够了单体机开发的年轻人,他用了几个晚上苦思冥想,提出了一种去中心化开发的全新思路,即所有的服务不用全部集

2020-06-08 00:55:45 238

原创 如何用Vue+Echarts制作世界地图下钻

在疫情期间,地图对于我们掌握疫情的走势立了大功,那么怎样能够制作一个相似的地图模块呢?本文利用vue和echarts模拟了对于疫情地图的制作。关于Vue和Echartsvue是一个轻量级的框架,他采用了MVVM的模式,也就是M(model)数据,VM 控制逻辑 和 V(view) 视图组成,相比之前的框架,vue更加的简洁,方便使用者解耦合。之前JavaScript 代码可以看见其控制逻辑和视图是混合在一起的,不利于后期添加功能,耦合度过高。所以Vue提出了将视图,数据,控制逻辑分离的思想,在vue

2020-06-01 00:59:08 2180

原创 Java框架之Mybatis

Mybatis做为一个淘汰Hibernate的强劲对手,现在应用在各大网站的系统中,为各路网站把好了ORM的关卡,那么mybatis 为什么会这么受人青睐呢?Mybatis简介MyBatis是一个持久性框架,他不仅支持自定义SQL,存储过程并且还支持诸如ResultMap,ResultType等高级映射。 MyBatis消除了几乎所有的JDBC代码和手动设置参数和结果检索。并且它可以自动生成Mapper接口将数据映射到Java POJO对象中。同时Mybatis具有缓存技术,他的多级缓存技术大大降低了对

2020-05-25 04:11:58 246

原创 Explain如何助力SQL语句的优化

Explain如何助力SQL语句的优化何为Explain怎样运行Explain如何分析Explain的表格利用EXPLAIN对SQL优化何为ExplainExplain是本菜几天前才接触到的内容,做一篇blog梳理梳理自己现在这几天所学的内容。Explain本质上是一个数据库SQL语句的模拟器,他通过对SQL语句的模拟,返回一个SQL语句的性能分析表,根据这张表的内容,工程狮可以具体了解到为啥我的程序这么慢了。第一款支持 explain功能的是MySQL 5.5,但是初始级的explain只提供对于s

2020-05-18 04:36:58 231

空空如也

空空如也

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

TA关注的人

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