自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spock测试框架浅尝

这篇文章会介绍 Spock 测试框架相关的一些基本概念,包括数据驱动测试(Data Driven Testing)、基于交互的测试(Interaction Based Testing)、Mocking 和 Stubbing 等,这其中会带有一些简单的例子。

2021-12-05 15:35:29 656

原创 Optional中orElse与orElseGet的区别

Optional 中 orElse 可能导致空指针异常,orElseGet 可以避免这种情况,另外还对两者做了一些介绍。

2021-12-04 16:58:57 9576 2

原创 Java多线程中的 Lock, synchronized 和 volatile

Java 多线程编程中 Lock 的概念和synchronized、volatile关键字是经常遇到的内容或者说知识点,本文是我最近学习多线程的个人总结,会说明这三者涉及的一些基础概念,所以它们不是很全面。你可以浏览下目录来确定是否看下去,参考资料会在文章结尾给出。

2021-11-28 23:58:12 545

翻译 DTO(数据传输对象)模式

0. 写在前面首先,这是一篇翻译文章,个人建议你可以阅读英文原文Baeldung: The DTO Pattern (Data Transfer Object),因为个人水平,很多地方翻译的不通顺和晦涩,如果你选择继续往下看,请不要高估了我的英文水平。当然,你也可以对比原文来看。1. 概览在这篇教程中,我们将讨论 DTO 模式,它是什么,怎样以及何时使用它们。在最后,希望我们知道如何正确地使用它。2. DTO模式DTO 或者说数据传输对象(Data Transfer Objects)是在处理方法中

2021-11-21 17:04:45 7809

翻译 实现一个自定义的Spring AOP注解(AOP annotation)

1. 介绍在这篇文章中,我们将会使用Spring中的AOP支持来实现一个自定义的AOP注解(AOP annotation)。首先,我们会给出AOP的一个高级(high-level)概述,解释它是什么和它的优点。接着,我们会一步一步地实现自己的注解,从而逐渐地对AOP有更深入的了解。我们将会获得(outcome):更好地理解AOP,以及将来创建自定义Spring注解的能力。2. AOP注解是什么?快速总结一下,AOP表示面向切面编程(Aspect-Orientated Programming)。本质

2021-09-21 18:25:37 721

翻译 Java中为什么要避免原始类型(raw types)?

原始类型是指使用泛型类型而没有指定类型参数。例如,List是一个原始类型,而List<String>是一个参数化类型。当泛型在JDK 1.5中被介绍时,原始类型被保留仅仅是为了维持对老版本Java其向后兼容的特性。虽然原始类型仍然可以使用,但应该避免,原因如下:它们通常要求类型转换(type cast);它们不是类型安全的,一些重要的error仅会发生在运行时;它们的表达性较差,相比于参数化类型,它们不能做到自描述(self-document)。例子:import java.ut

2021-09-19 16:43:42 841

翻译 Java中volatile和synchronized关键字的区别

本文介绍了Java中一些基本但很重要的概念。volatile是一个域修饰器(field modifier),而synchronized修饰代码块和方法。因此,我们可以使用这两个关键字来指定一个简单累加器的三种变体。int i1; int geti1() { return i1; }volatile int i2; int geti2() { return i2; } int i3;synchronized int geti

2021-09-19 16:23:12 143

原创 浅析:Java Thread ID是否重用

1. 问题来源我最近在看Java多线程的视频时,主讲老师介绍Thread.getId()函数,后面演示的时候,说到,“thread ID可能会被重用”。他示范了几次,thread ID都是递增的,问题在当时没有解释清楚,所以我去查了一下源码,在此做一个简单总结。2. getId()函数首先API文档中对Thread.getId()的detail描述,说到当一个线程终止运行后,它的thread ID可能会被重用。但是,问题在于它是怎么被重用的?然后,我去查了源码(下图是其中一部分,出自java/la

2021-04-08 11:33:12 1828

原创 Java多次继承后访问父类属性

Java多次继承后访问覆盖的父类同名属性事情是这样的:Java类只能有一个直接父类,但可以有无限多个间接父类。(From 《疯狂Java讲义》)这样确实实现了多继承,如果想要访问同名的父类成员变量或方法,使用super就可以,然后就有一个问题,多次继承之后,如何访问它的上上层或更高层的父类属性?像下面代码的第6行这样:public class SubSubClass extends SubClass { int a = 30; public void accessData() { System

2021-03-04 14:36:27 838 9

原创 P1044 [NOIP2003 普及组] 栈——一种容易理解的方式

这是洛谷里的一道题,也是一道非常经典的题,解法有很多,如卡特兰数、动态规划、记忆化搜索,我自己花了一个下午时间把这道题搞明白,方法是很纯粹的动态规划,稍后在代码中便可看出。我会在后面把个人思路尽我所能地表达清楚,若有更好见解也欢迎你的留言与私信,感谢你的阅读。

2021-01-08 21:18:09 1337 2

原创 2.7 TCP套接字编程

2.7 TCP套接字编程2.7.1 UDP套接字编程环境:主机win10-Server,虚拟机win7-Client,python3UDPClient.pyfrom socket import *serverName = '192.168.***.***' # 这里用你们自己主机的ip addressserverPort = 12000clientSocket = socket...

2020-03-13 14:39:00 139

原创 c++ std::set iterator it->insert error

先放代码:typename std::set<std::set<TV> >::iterator itU, itV;itU = S.find(USet); itV = S.find(VSet);itU->insert(itV->begin(), itU->end());原因解释:itU->insert(...) 函数为const类型,...

2019-11-25 20:46:24 299

原创 c++ std::set(typename T)::iterator error

原因解释可以去找一下其他的博客,这里我简单说:编译器无法分配合适的迭代器。解决:方法很简单,只需iterator声明前加上typename。typename std::set<std::set<TV> >::iterator itU, itV;像是这样。That's all....

2019-11-25 20:25:42 250 1

原创 Algorithm库 sort函数 cmp函数报错 unresolved overloaded funciton type

深夜写篇博客。被这一个bug搞了快3个小时,终于这只虫子还是被我给摁死了(死吧!虫子!)。言归正传,<unresolved overloaded funciton type>中文意思是:<未解析的重载函数类型>我放一部分我的报错代码:bool cmp(const Edge<TV, TE> &a, const Edge<TV, TE...

2019-11-25 00:47:31 2333

转载 ERROR: No matching distribution found for opencv-python No matching distribution found for cv2

对于python 3.6用于OpenCV的conda安装opencv和conda install -c conda-forge opencv方法继续用于视频/图像读取和显示的BROKEN。请改用下面的pip install:python -m pip install opencv-python...

2019-11-16 12:12:37 2398

原创 第十周上机作业:定义二叉树类

1. 题目描述:定义二叉树类,封装构造二叉树操作,遍历操作(非递归实现)。2. 题目分析:参考教材,定义二叉树类是很容易的(书上定义已经给了,还差简单的实现);封装构造二叉树操作,稍微需要考虑一下私有类型,而且 BinTree 已经定义为 BinTreeNode 的友元类了,难度会降低很多。第一个问题是如何构建一个二叉树,考虑到数据输入和构造二叉树的一些方法,我觉得是要花一些时...

2019-11-05 19:58:23 473

原创 第九周上机作业:找出所有满足其出现频率大于某个给定阈值的所有子串

1. 问题描述: 给定一组字符串的集合(共53个长度相同的字符串),试设计一个算法,找出所有满足其出现频率大于某个给定阈值的子串,其中阈值为输入参数。例如:“taat”这个子串,集合中的53个字符串中有24个字符串包含“taat”这个子串,则其频率计算为24/53. 如果阈值设置为0.5,则该子串由于其频率小于0.5,所以不必输出。反之,如果阈值设置为0.4,则该子串由于其频率24/53...

2019-10-30 11:33:41 255 1

原创 NOI 1789:算24

#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;math.h&amp;gt;enum {false, true} flag; //如果按C++提交,用 bool flag,因为true, false 与bool 类型冲突;/*从k个数里选2个数,进行+ - * /运算,还剩k-1个数;直到剩1个数,判断是24即可;*/void expression(sho...

2018-10-05 20:26:10 342

空空如也

空空如也

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

TA关注的人

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