- 博客(116)
- 资源 (18)
- 问答 (1)
- 收藏
- 关注
转载 设计模式学习-前提
什么是设计模式:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式分为三种类型,共23种:创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、责任链模式、访问者模式。三种类型分别是什么意思?1 创建型模式
2021-04-21 10:52:56
239
转载 9条消除if...else的锦囊妙计,助你写出更优雅的代码
9条消除if...else的锦囊妙计,助你写出更优雅的代码前言最近在做代码重构,发现了很多代码的烂味道。其他的不多说,今天主要说说那些又臭又长的if...else要如何重构。在介绍更更优雅的编程之前,让我们一起回顾一下,不好的if...else代码一、又臭又长的if...else废话不多说,先看看下面的代码。public interface IPay { void pay(); } @Servicepublic class AliaPay implement
2021-03-15 10:24:56
266
原创 前端传文件和json给后端时的处理方案
开发中碰到这个需求,既需要获取文件流,也需要获取json数据。解决方法就是将json也和文件流一样,都通过form-data格式传过来。具体的看下面的例子就懂啦!首先需要的参数格式:User就不说了,是一个对象。后端需要的传参是public BaseDataVO upload(UploadFile uploadFileReqVO) ...然后UploadFile对象字段是一个MultipartFile和List<User>对象。经过尝试,使用下面的方法进行传参是可行的。...
2021-02-26 09:58:58
2719
1
转载 一个工具简单实现简书、掘金、优快云上一些优秀的文章保存成markdown文件
因为自己部署了云服务器的个人博客站点Hello Java,因此准备将之前的博客文章迁移过去。但是一个个复制粘贴明显不可能,太浪费时间。之前网上有爬虫处理优快云博客的文章,但是由于csdn改变了机制,也用不了了。还好被我找到一个还能用的,而且非常不错的!强烈推荐!推荐Clean−mark , 这是一个简单实用的工具。针对你的需求,它可以将博客文章转换为干净的Markdown文本文件。安装只需使用npm安装:$ npm install clean-mark --global引申:如果是Ma
2020-08-21 14:28:23
826
1
原创 HeadFirst设计模式学习--策略模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式最好的方式是:把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们。以经验复用代替代码复用!书中例子:有一套模拟鸭子的游戏。游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫。游戏采用了标准OO技术,设计了一个鸭子超类SuperClass,并让各种鸭子继承此超类。现在需要为鸭子添加新的行为Fly。如果在SuperClass中添加Fly则会使所有的鸭子对象都具有该方
2020-07-03 17:08:06
304
原创 阿里巴巴Java开发手册-MySQL进行ORM操作时用ResultMap替换ResultClass
原话是:【强制】不要用 resultClass 当返回参数,即使所有类属性名与数据库字段一一对应,也需要定义;反过来,每一个表也必然有一个与之对应。 说明:配置映射关系,使字段与 DO 类解耦,方便维护。这里的“解耦”实在有点费解,但百度和google又没发现相关说法。我自己理解的是,通过配置映射关系,就不需要属性名与字段名一一对应了,这样的话万一修改了字段名(但开发手册也说了字段名的修改代价很大),映射的时候会报错从而提醒同步更新代码;而如果是用的resultClass,修改了字段名却没修改属
2020-05-28 18:42:29
720
转载 阿里巴巴Java开发手册-不要在 foreach 循环里进行元素的 remove/add 操作。
foreach循环中为什么不要进行remove/add操作
2020-05-27 14:42:19
256
原创 阿里巴巴Java开发手册-Stream中list转map需要特别关注的问题
第一种情况:手册原话是:在使用 java.util.stream.Collectors 类的 toMap()方法转为 Map 集合时,一定要使用含有参数类型为 BinaryOperator,参数名为 mergeFunction 的方法,否则当出现相同 key 值时会抛出 IllegalStateException 异常。其中mergeFunction函数就是用于处理key冲突的情况,BinaryOperator<T>接口用于执行lambda表达式并返回一个T类型的返回值。这句话的
2020-05-27 11:44:33
818
转载 Hutool-贼好用的Java工具类库【转】
简介Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。(抄自作者简介)功能一个Java基础工具类,对文件、
2020-05-26 15:05:24
347
转载 代码比较工具DiffMerge的下载和使用(转)
原文链接:https://blog.youkuaiyun.com/shenxiaomo1688/article/details/809246631.优点:DiffMerge 则是一个强大的文件比较工具,除了代码加亮,不同之处加亮之外,它最大的特点是能够跨平台运行,你在什么平台上都可以方便的使用它。DiffMerge 的体积为 6.48M,官网上面提供了 windows 版、mac 版和 linux版。2.下载地址:http://www.sourcegear.com/diffmerge/downloaded.ph
2020-05-25 14:15:38
598
转载 Mybatis中sql语句有“大于小于”等比较符号时应该注意的问题
原文链接:https://blog.youkuaiyun.com/weixin_41614924/article/details/80968669术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。在mapper文件中写sql语句时,遇到
2020-05-22 10:29:43
505
转载 Apache Commons-lang3提供的StopWatch执行时间监视器,以及Spring提供的StopWatch分析[转]
https://blog.youkuaiyun.com/f641385712/article/details/82591603?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
2020-05-22 10:22:04
260
原创 程序员进阶之路--Spring boot常用注解解析
来公司实习几天了,今天开始熟悉业务代码,之前对于Spring等只是粗略得了解,所以很多注解都一知半解的,这里记录下方便自己后续查询:1. @Slf4j用作日志输出,如果不加该注解,则一般会在项目每个类的开头加入下面代码:private final Logger logger = LoggerFactory.getLogger(当前类名.class);如果直接用注解@Slf4j就可以省略这句代码,变得更简洁。当然,使用该注解的前提是要安装好Lombok插件。2.@Component.
2020-05-18 17:14:24
227
转载 新人进阶之路-JVM学习笔记(一)
教程:Java虚拟机专栏 跟许多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看。所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试。但我知道其实学习虚拟机并不仅仅在于面试,而在于更深入地理解 Java 这门语言,以及为未来排查线上问题打下基础。重点强调一下学习虚拟机的意义何在: 学习虚拟机是为线上排查问题打下基础。我们知道我们一个 Java 应用部署在线上机器上,肯定时不时会出现问题。除去网络、系统本身问题,很多时候 Java ...
2020-05-18 10:06:23
228
原创 新人程序员学习之路-Mybatis批量操作数据库
前面博客已经研究过,批量操作数据库可以很大程度上优化操作速度,昨天做的小需求中就有批量查询的使用,于是在此记录下批量操作数据库的常用代码,方便日后查询使用。这里直接粘贴代码,批量查询操作@Select("<script>" + "select * from person" + " where id in" + " <foreach item='item' collection='list' open='('
2020-05-15 11:49:11
278
1
原创 Redis学习笔记(二)
学习网站:RUNOOB.COM具体关于Redis的内容查看相关教程:Redis教程以下只记录学习过程中遇到的问题以及进度总结:今天学习了Redis内容中剩下的部分,包括数据备份与恢复、安全、性能测试、管道技术,分区等。并结合Java连接使用本地安装的Redis,在经过两个坑之后,顺利连接Redis并对其进行操作。采坑1:IDEA中对包名重命名后,运行报”找不到或无法加载主类 ”错误。解决办法:百度发现是项目的工程下面的.idea目录下的workspace.xml里面的“MAIN...
2020-05-13 11:58:39
3657
原创 Redis学习笔记(一)
学习网站:RUNOOB.COM具体关于Redis的内容查看相关教程:Redis教程以下只记录学习过程中遇到的问题以及进度总结:采坑1:set一个中文,get出来是16进制字符串。解决办法:在启动redis服务时在后面加一个--raw,即:redis-cli --raw采坑2:报错:WRONGTYPE Operation against a key holding the wrong kind of value解决办法:前面已经有定义过同样名字的key了,要用del key..
2020-05-12 18:49:42
207
转载 Google Guava工具
公司代码中用到了这个工具,所以学习的同时记录一下,方便后续查阅。引言Guava([ˈɡwɑːvə])工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Goo.
2020-05-11 14:35:29
159
原创 Java开发常用组件学习
来公司实习也有几天了,也慢慢适应下来了。目前正在看代码熟悉业务的阶段,顺便学习一下业务用到的一些相关组件。1.DubboDubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。为什么要使用Dubbo,以及如何使用Dubbo,下面这篇.
2020-05-11 09:52:41
729
原创 Idea自动生成代码神器EasyCode,让你如虎添翼
可以看下面这篇文章:https://blog.youkuaiyun.com/wo541075754/article/details/105961353?utm_medium=distribute.pc_feed.none-task-blog-alirecmd-18.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-alirecmd-18.nonecase&request_id=
2020-05-11 09:37:10
445
转载 新人程序员的 10 点建议(转载)
一转眼从学校毕业已经超过10年了,从一名普通的程序员成长为500强企业的架构师,如今也开始做IT管理工作,可以算是一个过来人。这一路走来,自己有一些感悟,也看到其他人的一些经验教训,对于如何掌控自己的职业生涯,总结了10点建议,希望对那些处在迷茫中的年轻朋友们有些许帮助。尽早确定你想做的事情一个人的职业生涯总是包含很多阶段,而每个阶段又是环环相扣,互为因果的。因此,我们总是能够看到一群同时毕业的人,经过10年后,各自的发展却迥然不同,有些人总能快人一步,提前到达职涯的新高,而有些人却慢人半拍,逐
2020-05-09 19:07:49
312
转载 Java 3种批量插入更新操作的效率横向比较
以前总是说批量插入和更新的效率比非批量的要高,但是到底高多少,没有评估过,今天我就具体的测试下(1)三种插入操作的方法1.1 利用for循环的批量插入示例xml <insert id="insertUser"> insert into test_user (u_name,create_date) value (#{userName},SYSDATE()) </insert>示例代码:for (int i = 1; i &l
2020-05-09 16:58:01
764
转载 在Java中声明一个无参构造函数的目的是什么?
我们在定义一个类的时候,如果需要重新写一个构造函数,就必须要写一个无参构造函数,如下代码所示,那这到底是为什么?public class Fruit { private String name; // 必须显式声明一个无参构造函数 public Fruit(){} public Fruit(String name){ this.name = name; } public String getName() { ret
2020-05-08 21:07:03
1763
原创 安装homebrew踩得坑
MacOS下安装brew时总是报错port 443: Connection refused,大概就是被墙了的原因,但试了网上很多高赞办法,也fq了,还是无法解决,最后一番折腾,有幸看到知乎一位大佬提供的脚本解决了。链接如下:mac安装homebrew失败怎么办? - 金牛肖马的回答 - 知乎 https://www.zhihu.com/question/35928898/answer/1333...
2020-05-07 17:01:11
301
转载 巧妙理解动态规划算法
我们先来看一个题目:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。很显然可以使用暴力破解求出所有的排列组合,但是时间复杂度是指数级的。这里很显然使用动态规划是最合适的!那到底什么是动态规划呢?动态规划的英文名是Dynamic Programming,是一种分阶段求解决策问题的数学思想。它不仅用于编程领域,也应用于管
2020-04-10 12:01:17
2645
2
转载 不要重复造轮子了!这里有一个牛逼的 Java 开源后台管理系统推荐给你!
今天想要记录一款非常全面好用的Java开源后台管理系统eladmin,项目基于 Spring Boot 2.1.0 、 Jpa、 Spring Security、redis、Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由。开发文档:https://docs.auauz.net/体验地址...
2020-04-10 11:54:52
2630
原创 SSM初尝试之新闻发布管理系统实现
前几天学Spring的时候,发现很多概念都不了解,所以这两天找了本概念书(《Spring+SpringMVC+MyBatis从零开始学》)大概了解了一些SSM(Spring + SpringMVC + MyBatis)的概念。书上最后一个章节是完整项目开发的实例,为了更好感受SSM的魅力,跟着完整敲了一遍,下面记录下整个项目的实现进程。该系统在开发过程中整合三大框架的基础上实现了系统后台的用户...
2020-04-08 16:18:24
2489
5
转载 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
今天学习spring项目的时候出现了下面的错误信息:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListenerat org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:170...
2020-04-07 21:05:01
145
原创 Spring实际使用初探
迟迟不能开学,在家无事,为了工作能更快上手spring等框架,今天决定跟着视频教程学习一下,并把过程中碰到的一些问题记录博客。废话不多说,从最基本的配置环境开始吧!1.Eclipse配置Gradle教程的话看这篇应该就可以了,eclipse 配置gradle 详细教程。先在网上下好gradle(我下的5.5版本),然后配置环境变量,之后在eclipse里面链接到gradle的路径下即可,详...
2020-04-02 17:46:13
190
转载 程序员跳槽后如何快速熟悉项目代码
对IT人士而言,换一份工作或进入一个新的公司,往往意味着要熟悉一个新的开发环境,要快速了解新的项目。如何快速地熟悉项目代码,是每个IT人士都会遇到的问题,特别是对刚进入IT职场的应届毕业生,这个问题更显得棘手。下面是我自己在经历几个工作之后结束的一些方法,与大家分享一下,仅贡参考!1.通读需求文档,了解项目用途;一个企业级的项目,一定会保留一些相关文档吧!比如需求文档,设计文档,项目计划等,...
2020-03-30 19:54:19
1750
原创 什么是微服务架构
概念就目前而言,对于微服务业界并没有一个统一的,标准的定义。但通常而言,微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。换句话说,微服务提倡将单一应用程序划分一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于RPC或HTTP 的...
2020-03-30 19:45:43
739
转载 JAVA8 十大新特性详解
前言:Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Time API Tutorial : LocalDateTime和Abstract Class Versus Inte...
2020-03-23 20:45:06
337
原创 Java 8 Lambda学习笔记(一)
一直感觉Lambda表达式是十分“高大上”的一种技术,不管是冲着其本身可以将代码量缩短至变态的缘故,还是希望拿来当做装逼神器的工具(开玩笑!),都值得好好学习一波。好了,言归正传!Lambda表达式的格式不外乎如下:(parameters) -> expression 或 (parameters) ->{ statements; }语法格式和传统的方法其实一...
2020-03-22 17:04:32
268
原创 Java 泛型学习记录
日常编码时泛型的体现简直无处不在,但是对其一直没有系统的学习过,今天就来学习一下!老样子,先百度其他大牛已经写好的博客来看,对于这种成熟的知识点,网上肯定已经有很多了。下面这篇就已经写得很详细了,可以说超级好理解!Java泛型详解:<T>和Class<T>的使用。泛型类,泛型方法的详细使用实例...
2020-03-21 16:20:55
115
原创 网络编程面试题整理(一)
1:tcp和udp的区别首先,了解网络经典的五层协议体系结构:物理层、数据链路层、网络层、传输层、应用层。信号的传输总要符合一定的协议(protocol),而计算机之间的通信也要遵循不同层次的协议,来实现计算机的通信。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。...
2019-10-26 09:55:54
3838
原创 网络编程面试题整理(二)
1:什么是C/S和B/S架构?C/S架构软件(即客户机/服务器模式)分为客户机和服务器两层:第一层是在客户机系统上结合了表示与业务逻辑,第二层是通过网络结合了数据库服务器。简单的说就是第一层是用户表示层,第二层是数据库层。客户端和服务器直接相连,这两个组成部分都承担着重要的角色。B/S架构第一层是浏览器(即客户端)只有简单的输入输出功能,处理极少部分的事务逻辑。由于客户不需要安装客户端,只...
2019-10-26 09:55:48
1353
原创 网络编程面试题整理(三)
1:什么是并发和并行?并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。2:进程锁和线程锁的作用?线程锁: 大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有一个线程在执行该段代码。当有多个线程访问同一对象的加锁...
2019-10-26 09:55:41
564
android 如何等待服务器返回消息
2016-12-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人