自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (6)
  • 论坛 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 领域驱动设计实践(5)-术语

AGGREGATE(聚合)——聚合就是一组相关对象的集合,我们把聚合作为数据修改的单元。外部对象只能引用聚合中的一个成员,我们把它称为根。在聚合的边界之内应用一组一致的规则。分析模式(analysis pattern)——分析模式是用来表示业务建模中的常见构造的概念集合。它可能只与一个领域有关,也可能跨多个领域[Fowler 1997, p. 8]。ASSERTION(断言)——断言是对程序在某个时刻的正确状态的声明,它与如何达到这个状态无关。通常,断言指定了一个操作的结果或者一个设计元素的固定规

2020-11-12 11:53:12 10

原创 数据采集解决方案咨询

7年数据采集研究,文本数据处理解决方案,数据采集解决方案,数据存储解决方案,有意咨询私信联系扫码备注

2020-10-31 09:57:12 17

原创 JDK11单元测试-无法读取外部 DTD

项目紧张的时候,大部分单元测试都是后期补充的,最近一个客户管理中心的项目进行时发现一个报错这里是引用外部 DTD: 无法读取外部 DTD ‘mybatis-generator-config_1_0.dtd’, 因为 accessExternalDTD 属性设置的限制导致不允许 ‘http’ 访问。参考资料:https://blog.csdn.net/dingshuo168/article/details/103317453?utm_medium=distribute.pc_relevant.no

2020-10-31 09:53:51 36

原创 Windows 系统查找快捷键占用

随着电脑安装的软件越来越多,自己熟悉的快捷键不经意就会被新的软件自动占用,处理起来比较麻烦,查了网上有通过打开spy++ 点击监视->日志消息方式处理的,这样对用户的技术水平要求比较高,并且需要花费一定时间,接下来推荐一个小工具openarkhttps://github.com/BlackINT3/OpenArk/releases使用步骤:1.点击进入系统热键 右下角点击进入内核模式2.点击热键排序,删除被占用的热键...

2020-10-21 14:53:31 16

原创 精通Redis[4]- Redis中的key

文章主要讲述Redis 中的key

2020-09-30 23:51:37 135

原创 读《程序员度量》思考

这里写目录标题一、程序员的工作内容二、程序员的考核三、程序员的工作量最近抽空在家粗读了一般书:《程序员的度量:改善软件团队的分析学》书点评描述,度量在软件开发中的应用,例如有些公司号称,三个人干五个人的活拿四个人的工资。这里人数很容易确定,技术也可以通过标准化的考核衡量,那么五个人的工作量怎么衡量,这就牵扯到了团队的管理,对于一个外行来说,无法衡量一个需求的具体工作量,软件系统纷繁复杂,表面上看起来一样的系统,内部实现可能千差万别。团队管理另一个棘手的问题是人员的考核,现在大部分公司都实行271 比

2020-09-29 22:26:51 21

原创 精通Redis[3] 之 Redis底层数据结构分析(二)

目录一、跳跃表1.1 跳跃表的实现二、整数集合2.1升级2.2降级三、压缩列表四、redis 对象一、跳跃表跳跃表(skiplist)是一种随机化的数据结构,由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出,是一种可以于平衡树媲美的层次化链表结构——查找、删除、添加等操作都可以在对数期望时间下完成Redis 中为什么使用跳跃表作者的意思是:比起红黑树,实现起来简单。1.1 跳跃表的实现

2020-09-27 20:47:13 21

原创 精通Redis2、Redis底层数据结构分析(一)

一.String 底层数据结构Sds (Simple Dynamic String,简单动态字符串)是 Redis 底层所使用的字符串表示,它被用在几乎所有的 Redis 模块中。Sds 在 Redis 中的主要作用有以下两个:实现字符串对象(StringObject);在 Redis 程序内部用作 char* 类型的替代品;1.1sds 优点在 C 语言中,字符串可以用一个 \0 结尾的 char 数组来表示。比如说, hello world 在 C 语言中就可以表示为 “hello

2020-09-27 10:19:38 42

原创 Mysql 使用UUID 作为主键的分析

前置条件Mysql innodb存储引擎一:为什么使用UUIDUUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。UUID 便于生成,不会重复,在分布式架构的系统中,很常见,但对于使用了mysql innodb 存储引擎来说,U

2020-09-20 22:52:54 82

原创 常见软件项目开发模式思考

一、软件项目在2000左右 程序员还是一种比较罕见的工作,那是的个人台式机还是当时富裕家庭的高级娱乐用品,一开始网络程序员部分前后端,PHP、JSP、ASP这些技术形成了最早的网络程序。BS 系统简单的设计文档在那时形成,同时诞生了一批技术、团队的外包公司,外包公司比较推崇敏捷开发,单具体操作起来就是一次性开发,根据合同内容,设定好开发目标,利用公司现有的技术架构,快速实现一套系统。敏捷开发的好处就是短时间内多做项目,多赚钱,对于系统的使用者来说,系统上线之后 开始用着还可以,随着时间的推移,问题暴露

2020-09-14 11:07:10 48

原创 精通Redis 1 - Redis概览 和基础数据结构

一、Redis 概览1.1 Redis 全称是Remote Dictionary Service远程字典服务,从名称看,redis 最开始的设计思想,是一个远程的key-value 的存储服务,主要用来解决系统缓存,分布式的数据共享问题。程序员在学生阶段的课程设计往往是单实例(单体的应用),中小型公司起步的时候,往往也是从一个war 包开始,随着业务的发展慢慢的进化成分布式系统。1.2Redis定位于一个内存数据库内存保存数据,可以省去读取磁盘的时间,明显提高数据读取速度,redis之前,如果需要

2020-09-04 18:02:37 21

原创 HashTable源码简析

HashTable 数据结构是一种比较古老的 Dictionary 实现 ,大家常用的hashMap 是实现的AbstractMap。HashTable 内部使用了Table[] 数组和Entry<K,V> 链表实现。内部使用了synchronized 关键字保证线程安全,简单粗暴,但是有效。若担心多线程环境下 hashTable 的阻塞 可以使用 ConcurrentHashMap简单分析一下hashTable的源码。public synchronized V put(K key

2020-08-11 19:39:20 38

原创 合同中心设计概要

这是一个小型合同中心设计概要,适合需要电子签章的业务,满足多个业务线。多租户。SAAS 服务。设计中选择E签宝,也可以替换其他电子签章通道版本修订人备注修改时间V1.0andy初稿2020.02.03V1.1hamish接口修订2020.02.13一、 引言1.1 项目背景目前合同与订单数据耦合在一起,合同模板唯一,生成合同采用硬编码方式1.2 术语名称电子合同:根据合同模板填充数据,数据来源于业务系统或着数据库电子印章:E签.

2020-07-06 10:34:45 132

原创 Git 原理与实践

工作过程中发现很多小伙伴会git李杰不深,操作过程中往往使用一些 删除分支,文件备份的方法保证自己的代码。本文将结合工程实践讲解git的原理 本文长期更新,欢迎研讨交流。一:git 强制回退一不小心提交了多于的代码到master分支,怎么处理呢。这时候远程代码已经提交到远程仓库了,这就需要强制回退,idea里没有对应的操作菜单。用命令实现1、获取某个历史版本的id(即change-id,每个版本唯一)方法1:使用git log命令查看所有的历史版本,输入q便可退出。git log方法2

2020-07-02 11:11:46 44

原创 idea git分支图 使用说明(2)

Trun IntelliSort On打开intelli 排序默认排序默认排序按照时间线,不同分支提交节点交替分支数少,对应collapse linear branch and Expand linear branch折叠的线性分支 和 扩展线性分支

2020-06-23 19:51:27 557

原创 idea git分支图 使用说明(1)

idea git图解分析compact references view 简洁引用视图简洁引用:align references to left 将引用向左对齐引用左右对齐配置:Show tag names 显示标签名称设置是否显示标签:Show long Edges 显示长线Turn Intellisort On 打开intelli 排序incase of merge show incoming commits first (directly below merge co

2020-06-23 19:00:55 409

原创 jvisualvm分析hprof文件

jvisualvm是jdk1.8自带的dump 文件分析工具,hprof文件是 jvm 有OutOfMemory异常出现的时候,JVM就会将当前的虚拟机的堆等信息放入hprof文件中,名字是大概java_pid加上进程号,比如:java_pid11656.hprof。jvisualvmjvisualvm工具是jdk自带的分析工具,在jdk11 没有发现对应参数配置分析hprof文件过程计算量比较大,也比较消耗内存,可以修改对应配置参数# Options used by VisualVM lau

2020-06-20 19:48:52 885

原创 精通Redis 11 之 Redis cluster槽的迁移原理分析

一、槽的迁移redis 提供redis-trlib 可以让运维手工调整槽位分配情况,set key 的时候可以通过在key字符串里嵌入tag 标记,强制把key 所挂的槽位等于tag 所在的槽位如图 所示,Redis 客户端向“缓存节点 1”发出请求,此时“缓存节点 1”正向“缓存节点 2”迁移数据,如果没有命中对应的 Slot,它会返回客户端一个 ASK 重定向请求并且告诉“缓存节点 2”的地址。客户端向“缓存节点 2”发送 Asking 命令,询问需要的数据是否在“缓存节点 2”上,“缓存节点

2020-06-18 14:40:53 240

原创 缓存穿透、缓存雪崩、缓存击穿、缓存抖动

redis 常见面试内容,缓存穿透、缓存雪崩 、缓存击穿一、缓存穿透:本质:查询缓存中没有的数据,流量直接到了mysql造成这种现象的情况分多种 ,可以是黑客攻击,笔者遇到过有人利用技术手段获取系统中注册手机号信息。可以是系统调用出错。也可以是数据逻辑错误。举个例子:对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。黑客发出的那 4000 个攻击,缓存中查不到,每次你去数据库里查,也查不到。举个栗子。数据库 id 是从 1 开始的,结果黑客发过来的请

2020-06-15 14:31:04 67

原创 idea 配置javap 扩展工具 External Tools

一:新增 External Tools二、 配置javap三、使用在idea 项目中 选中一个Java文件

2020-06-03 11:19:20 368

原创 idea实用技巧

一:dubug模式下查看jvm dump信息dubug 模式下 有个照相机按钮get thread dump

2020-06-01 23:14:23 66

原创 领域驱动设计实践(4)- 上下文映射图

一个典型的上下文映射图

2020-05-20 12:54:07 56

原创 JAVA Bean 转换工具 BULL 使用简介

How to Transform Any Type of Java Bean With BULL

2020-04-29 12:00:20 116

原创 idea插件推荐

1.GitToolBox自动展示 git未提交、未拉取的代码2.free-idea-mybatisfree-idea-mybatis是一款增强idea对mybatis支持的插件,主要功能如下:生成mapper xml文件快速从代码跳转到mapper及从mapper返回代码mybatis自动补全及语法错误提示集成mybatis generator gui界面...

2020-04-24 12:41:52 125

原创 2.算法-手写滑动窗口限流

限流滑动窗口手写滑动窗口限流手写滑动窗口限流public class slidingWindows { /** * 时间窗口 **/ private Long window; /** * 窗口的size 用于计算总的流量上限 **/ private Integer size = 2000; /**...

2020-04-03 22:02:08 732 1

翻译 JDK12 垃圾收集

Garbage Collection in JDK 12 and onward

2020-03-28 16:27:45 89

原创 gitlab配置钉钉机器人

文章目录1.钉钉群配置机器人2.复制机器人Webhook3.配置gitlab项目1.钉钉群配置机器人群设置-> 智能群助手->添加机器人2.复制机器人Webhook3.配置gitlab项目Setings->integrationswebhooks 、钉钉机器人 也可以结合你开发的系统做到线上异常监控,报错实时通知到人。...

2020-03-27 11:03:51 1255

原创 5年整理 爬虫资料

爬虫学习过程中收集的资料理性使用技术,远离非法业务。 Crawler 无头浏览器异闻录 | 岚光 Burp Suite Python网页信息采集:使用PhantomJS采集淘宝天猫商品内容 - 华天清 - 博客...

2020-03-15 22:19:35 211 1

原创 爬虫技术第六篇:java随机返回UserAgent

java随机返回UserAgentpackage com.tom.util;import java.util.ArrayList;import java.util.List;import java.util.Random;public class UserAgentUtil { private static List<String> list = new ArrayL...

2020-03-11 23:39:27 378

原创 1.跳跃表SkipList

redis 中zset 数据结构使用了跳跃表实现zset 要支持随机删除和插入。插入特定顺序,继续保证链表有序,二分查找的对象必须是数组跳跃表一:理解思路 链表加上多层的索引:跳跃表二:假如我们要用某种数据结构来维护一组有序的int型数据的集合,并且希望这个数据结构在插入、删除、查找等操作上能够尽可能着快速,那么,你会用什么样的数据结构呢?数组一种很简单的方法应该就是采用数组了,...

2020-03-11 15:03:41 86

原创 实践领域驱动设计(3)- 领域

从广义上理解:领域domain 即是一个组织所做的事情以及其中所包含的一切。商业机构通常会确定一个市场,然后在这市场中销售产品和服务。每个组织都有啊自己的业务和做事方式。这个业务范围以及在其中所进行的活动便是领域。领域、子域领域是一个范围,包含时空的概念。团队沟通的时候,领域可以表示整个业务系统,也可以表示某个核心域或者支撑子域。建议使用核心域 或者 子域在进行分工的时候,可以先划分领域...

2020-03-10 22:29:44 89

原创 实现领域驱动设计(2)- 交流与语言的使用

文章目录一、通用语言二、 一个团队,一个语言三、文档和图3.1流程图3.2 交互图3.3 UML 模型图3.4系统设计概要领域模型可以成为软件项目通用语言的核心。该模型是一组来自于人员头脑中的概念,一级反应了领域深层次含义的术语和关系。这种基于模型的交流并不局限与UML(统一建模语言)图,为了最有效的使用模型,需要充分利用各种交流手段,基于模型的交流提高了书面文档的的效用。一、通用语言...

2020-03-06 00:06:09 64

原创 实现领域驱动设计(1)

领域驱动设计概念,怎么实践领域驱动设计

2020-03-04 22:28:42 58

原创 Java 内存溢出和Java泄露的几种情况

内存泄漏定义(memory leak):一个不再被程序使用的对象或变量还在内存中占有存储空间。一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出 (out of memory) :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出...

2020-03-04 16:32:54 198

原创 JAVA 获取系统的配置信息

Java System.getProperty(“java.io.tmpdir”) 获取系统临时目录System.getProperty(“java.io.tmpdir”) 是获取操作系统的缓存临时目录在windows7中的目录是:C:\Users\登录用户~1\AppData\Local\Temp\在linux下的目录是:/tmp可以获取系统的配置信息,下面说一下System.get...

2020-03-04 15:47:50 75

原创 maven管理第三方jar

日常开发中大家普遍使用了maven 管理引用的jar ,或者使用公共仓库,或者使用公司自己搭建的私有仓库如果遇到项目需要引用第三方jar ,可以采用以下两种方式处理:1.本地引用 <dependency> <groupId>com.aspose.words</groupId> <artifactId&g...

2020-02-18 17:03:12 79

原创 java集合数据复制到另外一个集合

文章目录Lsit中数据复制问题1.1copy问题1.2怎么高效的复制1.3 回答Lsit中数据复制问题这是由一道开放式面试题引发的文章,题目:加入内存足够大,一个集合中有100万条数据,怎么高效的把集合中的数据复制到另外一个集合1.1copy问题java 中复制分为浅拷贝和深拷贝如果考察浅拷贝:直接使用clone方法System.out.println("测试开始时");...

2019-11-23 12:06:30 2027

原创 设计模式7原则概述

Java 设计模式23种设计模式原则1.开闭原则:对扩展开放,对修改关闭实践:分模块、接口、类 方法方法重载类继承接口实现项目设计中基本都用到开闭原则的作用开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。具体来说,其作用如下。对软件测试的影响软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的...

2019-11-14 13:54:53 39

原创 spring mvc 参数校验

当业务需要参数校验的时候,可以直接在controller 写入校验逻辑参数校验经验: 用户业务,前端页面校验、服务端参数 校验管理后台:前端校验,服务端可以放开javax.validation包提供了常见参数的校验注解,如果常见注解不能满足可以使用@Pattern 注解 使用正则表达式校验校验注解:这是javax.validation包中的 主要包括上述的几个注解注解 描述@Ass...

2019-09-09 14:01:43 197

原创 spring cloud 检查配置中心

spring cloud 启动的时候 如果使用配置中心,会先请求配置中心配置文件,如果请求配置中心失败再使用本地配置文件初始化。在这个过程中,很难分辨到底是哪个配置文件起作用可以增加一个检查类,在项目启动之后检查配置中心是否起作用@Configuration@Conditional(CloudConfigurationCheck.InnerCondition.class)public c...

2019-05-30 15:58:19 262

pro+WF4.5pdf

C# workflow 技术文档,英文原版。

2014-04-25

C语言解析WMV,ASF格式文件

C语言解析ASF格式文件,打印头对象

2013-10-27

jsp数据库连接管理

适合初学者练习jsp连接mysql数据库。简单但的数据库操作。 增加、删除、修改数据库的数据。

2012-10-09

c语言打印控制

c语言基础,适合 初学 者 使用。

2011-12-04

c语言源代码

数组对角线求和,联系数组中数据的操作。适合初学者使用。

2011-12-04

spring 离线文档

spring 离线文档 用于离线查看spring接口 下载之后解压即可

2017-12-04

Java 写法 public Spider addUrl(String... urls)

发表于 2014-09-26 最后回复 2014-09-28

myeclipse web project 运行后不能自动在浏览器中显示

发表于 2014-07-11 最后回复 2014-07-15

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

TA关注的人 TA的粉丝

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