- 博客(19)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 Windows/Linux下一些实用的命令技巧【持续更新】
Windows/Linux下一些实用的命令技巧【持续更新】1.进程、端口相关1.进程、端口相关(1)根据端口(port)杀进程:Windows版(cygwin/git bash中运行)://port为端口号,TCP可按需改成UDPtaskkill -f -t -pid $(netstat -ano|awk '/TCP.*:port/{print $(NF)}'|awk 'NR==1{pr...
2019-09-21 10:27:57
144
原创 一个Servlet线程安全问题实例
1.问题起源几年前开发的一个JavaWeb应用,用于课程实验,同一时段内每次使用的用户量大约20人左右,采用的技术框架为Tomcat+Hibernate,功能仅限于简单的增删查改,并没有复杂的逻辑。但是由于当时对JavaWeb只了解皮毛,所以根本没有考虑到线程安全的问题,导致了后来的问题发生。2.问题症状1.单机本地功能测试时完全没有问题,多人同时使用时才出现问题;2.第一年实验过程中未出...
2019-05-22 00:15:48
183
原创 从一个资源文件找不到的问题谈IntelliJ IDEA中的Java/Maven项目构建
1.遇到的主要问题构建一个Maven项目时,无法将resources文件夹中的资源文件打包进构建后的目录中,具体情况如下图。可见,虽然已将源码中的resources文件夹Mark Directory As Resources Root,但是构建出的target文件夹中并没有resources文件夹下的内容,导致后续在Java文件中读取资源文件找不到(开始一直认为是读取的路径配置不正确,因为...
2019-04-04 01:45:12
589
原创 《Java并发编程实战》第3章-对象的共享
0.概念理解对象状态:就是对象当中的各个成员变量;对象发布:就是将对象的引用交给别人;安全发布:创建对象需要一段时间,等彻底创建完了才把引用给别人(其他线程);逸出/逃逸:不应该发布的对象被发布了;不正确构造:this在构造过程中逸出(即使在构造函数最后一行也不行);线程封闭:不要让不安全的对象被多线程共享;不可变对象:只有一种状态的对象;事实不可变对象:状态在发布后不会改变的可变...
2019-03-09 18:01:27
156
原创 Tomcat8.5.23中StandardWrapper容器对Servlet实例的多线程池化复用机制分析
一、前言在前一篇文章中分析filterChain的线程安全问题时讲到了真正需要考虑线程安全问题与复用的场景是Request与Servlet的实例,本文重点分析一下Servlet实例的线程安全问题与池化复用机制。二、正文1. 什么情况下Servlet实例会发生线程安全问题?直接给答案:(1)多个线程尝试同时修改(未做synchronized/lock/condition等同步处理)同一个实...
2018-10-31 22:56:16
517
原创 Tomcat8.5.23中ApplicationFilterChain对象的线程安全性分析
一、前言在前一篇文章中分析ApplicationFilterChain的源码时遗留了线程安全问题未能彻底理解,因此有了本文,来彻底研究下filterChain对象的线程安全是如何保证的。二、正文1. 源码的运行流程分析(1)ApplicationFilterChain对象的特点与创建特点:经过一路代码跟踪发现,每一个url匹配模式对应于一个ApplicationFilterChain对象...
2018-10-28 02:22:25
1670
1
原创 Tomcat8.5.23 ApplicationFilterChain源码分析(职责链模式)
一、前言因为在前一篇文章中分析JavaWeb项目切入点时提到了一种从Filter入手的思路,所以本文来探究一下多个Filter之间究竟是怎么组织、运行的。二、正文1. 首次运行(1)引入依赖(2)关联程序的配置(3)编译构建a)IDE构建b)Maven构建2. 分析源码切入点(1)JavaWeb项目的切入点(以SpringBoot项目为例)a)由URL路由入手b)由Filt...
2018-10-25 05:12:13
4089
3
原创 JavaWeb项目分析系列(一)-从首次运行到源码切入点
一、前言最近开始研究一些优秀的JavaWeb开源项目,由于自己是新手,以前遇到开源项目时也处理得不是太好,往往浪费很多时间,希望在本次研究的过程中总结出一套方法论来,因此有了这一系列文章。二、正文首次运行拿到一个开源项目,第一步要做的一定是把它跑起来,而这个过程又包含了以下几个小步骤,只有全部搞定后项目才能正常运行。(1)引入依赖大多数Java项目采用Maven管理依赖,需要我们在计...
2018-10-24 13:53:33
2756
原创 图相关算法(二):无向无权图的广度优先遍历(BFS)-非递归版本
核心采用邻接表作为图数据的存储结构对访问过的节点进行记录,文中采用HashSet实现采用队列存放未访问的子节点,不断更新队列BFS采用队列实现很简单,采用递归反而更复杂了本文建立的图结构如下:实现代码如下:package algorithms;import java.util.*;/** * Created by Json Wan on 2018/10/19. * ...
2018-10-19 18:44:47
1269
原创 图相关算法(一):无向无权图的深度优先遍历(DFS)-递归版本
核心采用邻接表作为图数据的存储结构对访问过的节点进行记录,文中采用HashSet实现根据深度优先规则递归遍历未访问节点本文建立的图结构如下:实现代码如下:package algorithms;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util...
2018-10-19 18:05:16
2390
原创 Windows10下Rabbitmq+Redis搭建Celery运行环境
Rabbitmq是依赖于erlang语言的,必须先装erlang;最重要的一点:Rabbitmq的版本与erlang的版本是有对应关系的,一开始装的时候版本对应没有搞对结果遇到nodedown的问题,在网上搜的结果是去从C:/windows/下复制.erlang.cookie到用户文件夹下,结果C:/windows/下根本就没有这个文件!后来一步步按照官方文档走,终于装成功了,官方文档请查看htt
2018-01-09 14:51:04
998
原创 分析一下最简单高效的整数互换方式
正好有空,分析一下之前看到过的整数交换的最高效的方式,打算以后一直采用这种方式了。经验证,负数也是没问题的,可以放心使用。原理:异或操作可以得到两个数间的差异信息,两个数各自结合差异信息即可得到对方的值。/** * Created by Json Wan on 2017/10/7. * Description:异或操作可以得到a,b间的差异信息,a,b各自结合差异信息即可得到对方的值
2017-10-07 06:18:54
422
原创 Maven自定义ArcheType踩过的坑
刚接手一个Java Web的ssh+shiro的项目,前辈已经将模板工程打包好了,留下了一个Jar包,自己在使用时只需通过Maven命令利用该包从命令行生成模板工程即可,十分方便。但是在安装好的模板工程中存在一个痛点,就是pom文件中有两个依赖包已过时,Maven中央仓库里没有了,每次生成模板后都需要去修改那两个地方,令人不爽,决定自己重新打包,生成自己的模板工程,所以就开始了踩坑之旅。1
2017-02-14 15:03:07
12857
1
Android蓝牙模块使用简化工具
2016-11-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人