自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

.

  • 博客(78)
  • 资源 (6)
  • 收藏
  • 关注

原创 Java自定义注解进行字段格式校验

通常字段校验使用Hibernate Validator进行校验,如@NotBlank @NotNull @NotEmpty等,但如时间等特殊格式无法校验。但Java提供@Constraint及ConstraintValidator类方便我们自己定义特殊格式字段校验,例如定义不同时间格式校验:import javax.validation.Constraint;import javax.validation.ConstraintValidator;import javax.validation.Cons

2020-05-19 05:53:35 1825

原创 Golang中函数及方法的区别

在Java等语言中,方法及函数几乎没有区别,但是在Golang中两者是完全不同的。官方给出解释中,方法是包含了接收者的函数。函数的格式是固定的,由func 函数名 参数 返回值(可选) 函数体组成。例如:func main(a,b int) (int) {}而方法会在func关键字后是接收者而不是函数名,接收者可以是自己定义的一个类型,这个类型可以说struct ,interface,甚...

2020-04-18 09:16:09 862

原创 JavaBean转换成Map的几种方式

将JavaBean转换成Map有许多方式,可使用各种JSON框架进行转换,也可用反射方式转换或者使用apache commons包中的BeanUtils.describe(item)方法进行转换,不过此方法会将JavaBean中所有字段的类型都转换为String。接下来介绍利用JDK 8的新特性及Spring框架的方法进行转换,代码如下:Arrays.stream(BeanUtils.getP...

2020-02-13 11:06:24 9830 3

原创 mongodb线程池实现

@Configuration@EnableWebMvc@EnableSpringDataWebSupportpublic class MongoConfig { private static final Logger logger = LoggerFactory.getLogger(MongoConfig.class); // 覆盖容器中默认的MongoDbFacotry Bean ...

2020-02-07 14:01:09 1352 1

原创 垃圾回收算法——引用计数

在引用计数算法中,对象的存活性可以通过引用关系的创建或删除直接判定,从而无须像追踪式回收器那样先通过堆遍历找出所有的存活对象,然后再反向确定出未遍历到的垃圾对象。引用计数算法所依赖的是一个十分简单的不变式:当且仅当指向某个对象的引用数量大于零时,该对象才有可能是存活的。在引用计数算法中,每个对象都需要与一个引用计数相关联,这一技术通常保存在对象头部的某个槽中。下述为一个简单的引用计数算法伪...

2020-02-07 10:42:06 613

原创 垃圾回收算法——复制式回收

标记-清扫回收地开销较低,但其可能受到内存碎片问题地困扰。在一个设计良好地系统中,垃圾回收通常只会占用整体执行时间地一小部分,赋值器地执行开销将决定整个程序的性能,因此应当设法降低赋值器的开销,特别是应当尽量提升它的分配速度。标记-整理回收器可以根除碎片问题,而且支持极为快速的“阶跃指针”分配,但它需要多次堆遍历过程,进而显著增加了回收时间。半区复制算法:该算法属于追踪式回收算法。回收...

2020-02-06 12:21:53 480

原创 垃圾回收算法——标记—整理回收

内存碎片化是非移动式回收器无法解决的问题之一,即:堆中仍有可用空间,但是内存管理器却无法找到一块连续内存块来满足较大对象的分配需求,或者需要花费较长时间才能找到合适的空闲内存。堆整理的最大优势在于,它允许极为快速的顺序分配,即简单的进行堆上限判断,然后根据所需空间的大小阶跃式移动空闲指针。标记——整理算法的执行需要经过数个阶段:首先是标记阶段;然后是整理阶段,即移动存活对象,同时更新存活对象中...

2020-02-04 15:58:01 996

转载 双显示器切换为单显示器后,软件窗口找不到的问题

在双显示器拔掉一个后,有些在第二显示器屏幕中的窗口,不会自动回来。Windows提供有一个键盘方向键代替鼠标功能,我们可以通过这个功能把隐藏在屏幕外的窗口移回来。解决方案:1.打开那个"丢失"的软件,不要做任何操作。2.按 Alt+空格键,然后按 M 键。3.再按住左方向键 ← 不要松手 (一般都是在隐藏在右边),大概等几秒它就应该从右边跑回来了。4.最后点一下 鼠标左键 或按一下 回...

2020-02-03 11:00:57 2019

原创 垃圾回收算法——标记—清扫回收算法

理想的垃圾回收的目的是回收程序不再使用的对象所占用的空间,任何自动内存管理系统都面临三个任务:为对象分配空间;确定存活对象;回收死亡对象所占用的空间;这些任务并非相互独立,特别是回收空间的方法影响着分配新空间的方法。真正的存活性问题是一个不可确定的问题,因此我们使用指针可达性爱近似对象的存活性:只有当堆中存在一条从根出发的指针链最终到达某个对象时,才能认定该对象存货,更进一...

2020-01-20 07:27:06 880

原创 Netty之架构剖析

Netty 逻辑架构Netty 采用了典型的三层网络架构进行设计和开发,其逻辑架构如下图所示:1.Reactor 通信调度层:由一系列辅助类组成,包括 Reactor 线程 NioEventLoop 及其父类,NioSocketChannel 和 NioServerSocketChannel 等等。该层的职责就是监听网络的读写和连接操作,负责将网络层的数据读到内存缓冲区,然后触发各自网络事件...

2020-01-15 12:22:42 188

原创 Netty异步编程之Future和Promise

Netty 源码中大量使用了异步编程,从代码实现角度看就是大量使用了线程池和 Future。并在Java自带Future的基础上,增加了Promise机制。这两者的目的都是使异步编程更加方便使用。在阅读源码之前,我们需要对Future的机制有很清楚的认识。1.Future功能Future最早来自JDK的java.util.concurrent.Future,它用于代表异步操作的结果,相关API...

2020-01-14 07:59:22 822

原创 Netty之EventLoop和EventLoopGroup

https://blog.csdn.net/twt936457991/article/details/89854851https://www.cnblogs.com/lovezmc/p/11547912.html

2020-01-13 21:55:42 421

原创 Netty之ChannelPipeline和ChannelHandler(2)

ChannelHandler功能说明ChannelHandler类似Servlet的Filter过滤器,负责对I/O事件或者I/O操作进行拦截和处理,它可以选择性的拦截和处理自己感兴趣的事件,也可以透传和终止事件的传递。基于ChannelHandler接口,用户可以方便的进行业务逻辑定制,例如打印日志、统一封装异常信息、性能统计和消息编解码等。ChannelHandler支持注解,目前支持的...

2020-01-12 21:37:31 171

原创 Netty之ChannelPipeline和ChannelHandler(1)

https://blog.csdn.net/qq_37598011/article/details/83957860https://www.jianshu.com/p/9aad9c32cc09https://www.jianshu.com/p/9aad9c32cc09

2020-01-12 21:35:02 210

原创 Netty之WebSocket解决方案

一直以来,解决服务器有新数据时,立即将数据发送到客户端的方案种类繁多,例如“推送”或Comet。实现Comet有两种方式:长轮询与http流长轮询是短轮询的翻版,短轮询的方式是:页面定时向服务器发送请求,看有没有更新的数据。而长轮询的方式是,页面向服务器发起一个请求,服务器一直保持tcp连接打开,知道有数据可发送。发送完数据后,页面关闭该连接,随即又发起一个新的服务器请求,在这一过程中循环...

2020-01-12 08:55:25 1477

原创 TCP粘包/拆包问题之Netty解决方案

TCP以流的方式进行数据传输,上层的应用协议为了对消息进行区分,往往采用如下四种方式:消息长度固定,累计读取到长度总和为定长LEN的报文后,就认为读取到了一个完整的消息;将计数器置位,重新开始读取下一个数据报;将回车换行符作为消息结束符,例如FTP协议,这种方式在文本协议中应用比较广泛;将特殊的分隔符作为消息的结束标志,回车换行符就是一种特殊的结束分隔符;通过在消息头中定义...

2020-01-12 08:29:59 306

原创 TCP粘包/拆包问题及解决

1.TCP粘包/拆包TCP是个“流”协议,所谓流,就是没有界限的遗传数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。...

2019-12-31 07:20:18 156

原创 Spring Boot 1.X 优雅停机的一种实现方式

在微服务中系统部署时,若当前服务发布重启,调用方会不可避免会受到影响。在微服务中增加一些停机前将已接收的请求处理完成。相关代码实现如下:import org.apache.catalina.connector.Connector;import org.apache.tomcat.util.threads.ThreadPoolExecutor;import org.slf4j.Logger...

2019-12-27 21:32:58 542

原创 ubuntu系统启用shell远程登陆

Ubuntu desktop系统安装后,想使用shell远程登陆,会提示Connecting to 192.168.220.133:22...Could not connect to '192.168.220.133' (port 22): Connection failed.Type `help' to learn how to use Xshell prompt.是因为未安...

2019-08-31 08:15:36 595

原创 微服务通过feign调用时,跨服务间调用传递header

首先需要实现一个拦截器进行封装:@Componentpublic class HystrixRequestWrapInterceptor implements HandlerInterceptor { public static final HystrixRequestVariableDefault<HttpServletRequest> REQUEST = new Hyst...

2019-07-19 06:31:57 4207

原创 JavaBean之间不同属性名拷贝的方式

import java.util.Iterator;import java.util.Map;import java.util.Set;import net.sf.cglib.beans.BeanGenerator;import net.sf.cglib.beans.BeanMap;public class CGlibBean { /** * 实体Object */ p...

2018-11-17 09:01:51 4618

原创 Oracle查询正在执行的SQL语句及死锁的查询和处理

最近在看项目里大批量数据导入操作,但是涉及数据较多关联其他表也较多时,插入Oracle中时会导致表被锁住,此文记录表被锁住时的查询表状态及正在执行的SQL。1.以下SQL用于查看当前数据库登陆用户及正在执行的SQL SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, ...

2018-10-25 21:57:06 13596 1

原创 Oracle存储过程数组的使用方法

declare -- Local variables here TYPE v_ar IS VARRAY(8) OF INTEGER; my_array v_ar := v_ar(1,2,3,4,5,6,7,8);BEGIN FOR i IN 1..my_array.COUNT LOOP dbms_output.put_line(my_arr...

2018-10-15 22:56:01 7589

转载 Oracle ORA-01653:unable to extend table tabeName by 8192 i tablespace

最近在用PL/SQL对环境插入5千多万条数据复现测试环境的问题。在插入的过程中遇到问题如下:ORA-01653: unable to extend table table_space.table_name by 128 in tablespace MSMS大概意思是说table_space表空间不足,出现这种问题一般有两种情况:一种是表空间的自动扩展功能没有打开;另一种是空间确实不够用了,已...

2018-10-15 22:48:05 2349

原创 Docker环境操作FTP 报错:FTP response 421 received.Server closed connection解决

最近项目在慢慢转型到Docker环境,在测试过程中发现原本很稳定的上传文件到FTP服务器的地方报错了,主要报错信息如下:FTP response 421 received.Server closed connection查找解决方法之后发现在上传FTP时,只需要将FTP操作改为被动模式即可,修改之后重新部署测试上传文件到FTP正常。 示例如下:@Componentpubli...

2018-09-04 22:05:07 17041

转载 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$

https://www.cnblogs.com/wangcp-2014/p/6427689.html

2018-08-10 13:23:13 226

转载 Redis配置文件中各个配置项含义

https://blog.csdn.net/neubuffer/article/details/17003909

2018-08-10 09:59:30 1367

原创 Linux Shell脚本中变量替换

1. :=句法 在这种替换中,使用和前例中相同的句法来设置默认值。username=&amp;quot;&amp;quot;echo &amp;quot;${username:=$logname}&amp;quot;在使用”:=”进行比较时,username变量已经被定义了,但是它的值为空,因此这里对echo命令使用了变量logname的值,即设置变量username的值为logname的值。 3.=句法 下面的语句和:=句法非常类似,但是没有冒号...

2018-08-10 09:34:48 2869

原创 Redis针对过期key的删除策略

Redis数据库键的过期时间都保存在过期字典中,可使用exit key 或ttl key 或者pttl key命令判断key是否过期。若内存中存放的key-value对较多,Redis应该如何才能保证不影响查询效率又能控制其中的有效缓存?(尽可能保证Redis中存放的key是未过期的key)。 这个问题有三种可能的答案,分别代表了三种不同的过期删除策略:定时删除:在设置key的过期时间的同...

2018-08-09 09:11:21 2634

原创 Shell中参数替换的几种方式

在使用脚本时,要把参数替换为它的值,最简单的形式就是在参数前面加上一个美元符号,例如$i或$9。 1. ${parameter}: 如果因为参数名后面的字符可能会导致冲突,可以把参数名放在大括号中,比如:mv $file ${file}x该命令将$file指定的文件改名,在原文件名后加一个x。该命令不能写成如下:mv $file $filex因为shell会把...

2018-07-11 12:46:22 3905

转载 Shell 中eval的用法

eval command-line其中command-line是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次。如:pipe=&quot;|&quot;eval ls $pipe wc -lshell第1次扫描命令行时,它替换出pipe的值|,接着eval使它再次扫描命令行,这时shell把|作为管道符号了。如果变量中包含任何需要s...

2018-07-11 12:45:35 38505

转载 Shell中的四种模式匹配

POSIX为shell为进行模式匹配提供了四种参数替换结构(老版本的shell可能不支持),每种结构有两个参数:变量名(或变量号)及模式。 第一种模式: ${variable%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最短的匹配模式 第二种模式: ${variabl...

2018-07-11 12:44:31 5079

原创 Jenkins的配置问题(不知是bug还是Jenkins设置问题)

项目中部署项目时,需求A部署在server-a服务器上,需求B部署在server-b服务器上,但是突然一天需求A的代码出现在server-b上,于是开始查问题源头。 1.看SVN合并分支是否有误,看log无问题; 2.Jenkins配置查看也无问题; 网上搜寻资料也无果,最后用笨方法,查看Jenkins配置,一个一个查看,最终看到原本部署C需求到server-c上的配置,IP地址对应到ser...

2018-07-10 22:48:59 1048

原创 Jenkins部署项目远程执行SSH重启-操作问题

最近用Jenkins部署项目,部署结束后启动Tomcat,一直不成功,网上查找资料说是jenkins在脚本执行结束后,就认为任务结束了,但是脚本启动的相关子程序仍然在运行。由于jenkins认为任务已经结束了,就结束了该构建相关的衍生进程。按照网上添加BUILD_ID也无济于事。 后来想起debug下重启tomcat的shell脚本。于是发现出了问题。 之前重启tomcat之前都是先用shel...

2018-07-09 20:28:36 2061

原创 Java中将对象中属性值为空字符串设置为null

业务逻辑中需要将对象中为空字符串的属性转换为null,简单的一种方式是前端JS控制,如果为空字符串则不传到后台,后台接收到没有值的属性默认为null。这种方式会导致JS繁琐。下面用后台的方式来解决此问题。 public static &amp;amp;lt;T&amp;amp;gt; T setNullValue(T source) throws IllegalArgumentException, IllegalA...

2018-07-06 22:39:22 31877 2

转载 jenkins执行shell命令,有时会提示“Command not found”----处理方案

1、如果登录linux,shell命令不可以执行,同样提示“Command not found”,则是环境变量设置失败,需要配置环境变量、/etc/profile2、如果登录linux,shell命令可以执行,则是jenkins没有加载/etc/profile导致,需要在jenkins调用shell脚本的最前面加一行脚本,#!/bin/bash -ilex,可以通过-i参数和-l参数让bash...

2018-07-05 20:38:44 4854 1

原创 Jenkins部署完项目后,执行服务器上脚本重启Tomcat

该前提是在服务器目录/root下已存有重启Tomcat的脚本restart.sh。 在Jenkins上依此进入到配置—-构建环境,然后选中“Execute shell script on remote host using ssh”,如下: 然后在SSH site中填入目标机器的信息,或是选择在配置中已配置的机器; Pre build script中填入构建前要执行的脚本; Post ...

2018-07-05 20:35:45 3219

转载 Oracle批量处理数据时,导致enq: TX - row lock contention

最近在做一个项目需求时,需要批量导入数据并更新之前其他表中的数据,每次处理超过2000行数据时都会在某个地方卡住,反复检查代码业务逻辑没问题,最终想起会不会是表锁导致,从网上查找解决方法,果然是因为批量更新时表锁导致。 1.查看是哪些原因导致执行被阻塞:select * from v$session_wait where sid in (select session_id from v$...

2018-06-29 06:56:57 605

原创 spring boot与freemarker集成配置

pom.xml文件里引入jar包是必须的: &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-freemarker&lt;/artifactId&gt; ...

2018-06-29 06:55:56 495

原创 Boost filesystem库操作文件系统

#include&lt;boost/optional.hpp&gt;#include&lt;boost/filesystem.hpp&gt;#include&lt;boost/filesystem/fstream.hpp&gt;#include&lt;boost/optional.hpp&gt;#include&lt;boost/xpressive/xpressive_dynamic.hp...

2018-06-06 20:26:40 802

CMM-CMMI.书籍

[CMM-CMMI.书籍].Addison.Wesley.-.CMMI.-.Guidelines.for.Process.Integration.and.Product.Improvement

2013-04-07

linux防火墙

linux防火墙.

2013-01-01

计算机图形学

计算机图形学,Geometric.Tools.for.Computer.Graphics,.Philip.J..Schneider,.David.H..Eberly,.MK

2012-12-18

ATL与 WTL学习

ATL与 WTL学习,学习两者互操作的.。

2012-11-25

3D游戏引擎的设计与实现

3D游戏引擎的设计与实现,西南大学硕士研究生论文

2012-11-24

空空如也

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

TA关注的人

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