![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java杂记
tom有了cat
积跬步,以至千里
展开
-
记一次策略模式在项目中的应用
前面一篇文章中提到了策略模式的demo但没有实际进行项目的整合。正好这两天做项目遇到了一个可以使用这个模式的需求。分享一下。需求如下:这是个在app进行的统计,每个项目都有这样的统计,统计每个用户在不同项目下订单的数量。我的想法是每个项目给前端返回一个List<String>比如“全部:111”“通过:2”“撤销:3”因为每个项目的统计可能不一样,如果只是返回每个字段对应的数据的话app发版频率可能就比较频繁。整体需求大概是这样。每个项目对应一个策略。原创 2020-06-03 20:35:18 · 301 阅读 · 0 评论 -
设计模式-策略模式的应用
对于策略模式的各种定义以及UML图我就不给出了,网上前篇一律。下面有一个自己写的小demo分享一下1.定义策略接口package com.leke.springsecurity.design.stratety;/** * @classname StrInt * @description * @date 2020/5/21 10:30 * @created by weiwensi */public interface Strategy { public void doSt原创 2020-05-21 10:50:58 · 184 阅读 · 0 评论 -
git删除本地和删除远程分支
查看所有分支git branch -a 查看当前所在分支git branch 删除本地的wws分支git branch -d weiwensi 或者git branch -D wws 删除远程的wws分支git push origin --delete wws原创 2020-05-20 14:57:21 · 178 阅读 · 0 评论 -
Optional的巧妙使用以及常见空指针解决办法
记一次使用jadk8优化代码的经历最近在开发过程中碰到一个情景就是根据不同的状态去处理不同的业务,对于这样根据if(status==0){ //业务逻辑 } else if(status==1){ //业务逻辑 } else if(status==2){ } 对于大部分用户来说是不是感觉这样写很low,对于多年开发经验的人来说就是耻辱啊,我是忍受不了这种写法 于是乎有了下面这...原创 2019-04-30 15:36:10 · 5171 阅读 · 0 评论 -
Java 代码优化 -避免创建不必要的对象
《effective Java 》书中第六条写道避免创建不必要的对象,再次做一个总结总结如下几点:1.避免创建不必要的对象,比如字符串的创建不使用new方式2.通过静态工厂方法可以创建不必要的对象3.对象的复用 如果一些对象可以被复用看下面 的一个例子有下面一个正则校验数据的格式static boolean isRomanNumeral(String s) { ...原创 2019-11-11 17:09:40 · 628 阅读 · 0 评论 -
Java8的骚操作,获取lambda对象属性值
实现效果通过传入一个lambda表达式获取这个字段的属性名得到的结果:name实现方式:定义一个Function类型的接口实现序列化代码如下:package com.soecode.lyf.demo.test.java8.reflect;import java.beans.Introspector;import java.io.Serializable;imp...原创 2019-11-11 11:35:39 · 7301 阅读 · 0 评论 -
Java 序列化 机制writeReplace的方法探究
如果一个序列化类中含有Object writeReplace()方法,那么实际序列化的对象将是作为writeReplace方法返回值的对象,而且序列化过程的依据是实际被序列化对象的序列化实现。People定义了writeReplace方法,并且自定义了writeObject/readObject方法。package com.soecode.lyf.demo.test.io;impor...转载 2019-11-11 11:28:48 · 5545 阅读 · 0 评论 -
java8 函接式口学习-Predicate,Consumer,Supplier
Predicate这个接口可以用于做一些过滤操作,它的源码如下:@FunctionalInterfacepublic interface Predicate<T> { boolean test(T t); default Predicate<T> and(Predicate<? super T> other) ...原创 2019-11-09 16:04:07 · 536 阅读 · 0 评论 -
java8 函接式口学习-Function
参考博客地址:https://blog.csdn.net/y_k_y/article/details/84632889Function<T,R> :抽象方法:Rapply(T t):传入一个参数,返回想要的结果。默认方法:为了下面能更好地解释,这里先假设有两个Function实例:f1,f2default <V...原创 2019-11-09 15:03:18 · 296 阅读 · 0 评论 -
两种排序,分组的方式及TreeSet排序数据丢失问题
有时候我们会碰到这样的需求,将数据分组以后并且需要按照指定的字段排序,我使用jdk8,实现了两种方式。初始化数据 Map<Integer,TreeSet<Book>> map=new HashMap<>(); Map<Integer,List<Book>> map2=new HashMap<>...原创 2019-09-05 16:39:26 · 1251 阅读 · 0 评论 -
内存泄漏问题,消除过期的对象引用
首先看一个栈类:import java.util.Arrays;import java.util.EmptyStackException;/** * @author 魏文思 * @date 2019/8/28$ 9:17$ */public class Stack { private Object[] elements; private int size...原创 2019-08-29 09:47:59 · 294 阅读 · 0 评论 -
对已经提交到git上的忽略文件的处理,设置我们需要忽略的文件
对于已经推到线上的代码,一些配置的东西,一些我们不想提交的东西已经提交到git了,我们可以采用 如下的方式在git提交的目录下增加.gitignore配置文件,文件内容如下:target/!.mvn/wrapper/maven-wrapper.jar### STS ###.apt_generated.classpath.factorypath.project...原创 2019-05-09 15:37:58 · 1579 阅读 · 2 评论 -
记一次对集合中对象指定字段按照中文排序的问题
代码如下:Collections.sort(list,new Comparator<自动对象ProductofferingTypeInfo >() {@Overridepublic int compare(ProductofferingTypeInfo o1,P...原创 2019-04-29 20:45:56 · 514 阅读 · 0 评论 -
http协议总结-网络基础篇
TCP /IP是互联网相关的各类协议族的总称。协议中存在各种各样的内容,从电缆的规格到IP地址的选定方法。寻找异地用户的方法。双发建立通信的顺序,以及web页面显示需求的处理如上图,是对tcp/ip协议的一种描述。分层管理TCP,IP协议按层次分分为应用层传输层网络层数据链层应用层: 决定了向用户提供应用服务时通...原创 2019-02-27 22:49:44 · 214 阅读 · 0 评论 -
jdk1.8工作实用特性总结
#jdk1.8工作实用特性总结jdk8提供了很多新特性,lamda表达式,stream流式编程,函数式接口,日期类的更新,还有一些jvm相关的更改,开发最常用的就是lamda表达式还有流式编程,函数式接口。下面针对这几个常用特性做一个稍微具体点的总结。有不足或者建议的地方还请多多指教。#一、.stream流式编程1.获取集合中对象某个字段所有值2.将集合映射成一个Map将集合映射成...原创 2019-05-02 21:49:49 · 611 阅读 · 0 评论 -
Build模式-参数过多不再使用原生的构造器
很多人应该用过lombok,这个小插件省去了我们对数据的组装。今天有时间研究了一下这种设计思想,分享一下。设计思想是通过内部类的方式,让内部类拥有外部类所有的属性,再通过外部类的构造器访问内部类的属性,给外部类的属性赋值。具体的实现如下:package bettercode.constractbuild;/** * @Description 当构造器过多的时候...原创 2019-05-06 09:54:55 · 313 阅读 · 0 评论 -
java8Collectors.toMap 的value为null的时候报NullPointException ,key重复报IllegalStateException: Duplicate key
使用jdk8对于熟悉的的还好,要是不熟悉,肯定会有很多坑有时候我们查询数据库得到一个List集合,然后将list集合使用Stream流将List集合映射成map,如下面的形式: ArrayList<Person> persons= new ArrayList<>(); Person person1 = new Person(); ...原创 2019-05-20 14:04:43 · 5654 阅读 · 0 评论 -
Maven父工程的<dependency>和<dependencyManagement>标签
在maven的父工程里直接使用dependences标签标示在每个子类都会依赖这个标签里的jar包。 <dependencyManagement>需要子类引入,子类不需要指定jar包版本,版本由父类管理。我的大部分模块都需要依赖springbootstarter,单独依赖的放在了dependencemanagement标签栏里面。...原创 2019-08-20 16:26:34 · 511 阅读 · 0 评论 -
log4j学习 异常日志的捕获 使用线程池或者rabbitmq实现日志的异步存储
最近项目中使用到了ES用来记录日志,用起来非常的方便,基本的记录如下,实现了类似下面的效果。这个架构不是本人搭建,自己也顺便学了一下。下面先简单介绍一下使用log4j将日志存储在数据库,不管存储在哪,原理都是一样,只要明白日志的工作机制,就很容易搞懂,实现起来很简单。整体一个思路如下:1.log4j.properties文件的写入当然在这个文件里可以直接配置写入日志到MySQL...原创 2019-05-06 17:04:23 · 1424 阅读 · 0 评论 -
设计模式学习之装饰者模式
研究了一下装饰者模式,分享一下学习心得在学习这个模式的时候上网查了一下相关的技术博客,大部分都只是实现但是对于这里的一些细节问题很少有去讲,一开始我也只是知道这么写会实现加强一些类的功能。为了彻底搞明白我打断点一步步调试。首先有这样一个场景我现在想画一幅人的画像第一步 准备一张白纸 是空白的第二部步画一个脸 技术不是很好,画的有点丑第三步 脸有点黑,加点粉底吧第四步...原创 2019-05-10 08:32:20 · 153 阅读 · 0 评论 -
Intellij IDEA 自定义UML类图
最近在学习一些东西时,需要用到这些东西,觉得用起来挺方便的就记录下来。几个常用快捷键ctrl+alt+B查看接口的实现ctrl+shift+alt+u 查看类的继承关系图ctrl+h查看类的继承图举个栗子ctrl+shift+alt+u选择Java Class Diagrams,记得选中需要展示的类,如下面的效果有时候我们需要扩展这个结构图,我们网...原创 2019-06-20 10:47:13 · 4045 阅读 · 0 评论 -
记一次设计pojo生成工具出现的问题-mysql 获取数据库表的的所有列属性以及其他信息
最近在做一个pojo,dao生成工具,了解了一下mysql相关的东西,这里做个总结:获取某个库指定表的列的属性:select COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT from information_schema.COLUMNS where table_name = '表名' and table_schema = '数据库名';数据库的查询结果:...原创 2019-05-31 17:59:05 · 187 阅读 · 0 评论