Java
wjwisme
知其然,知其所以然
展开
-
Vagrant执行“vagrant box add“报“An error occurred while downloading the remote file”错误
由于box文件未写成绝对路径,vagrant默认远程下载该box文件,导致该报错。我已经将需要的box文件下载在本地,所以最后的CentOS-7.VMwareFusion.box文件所在位置写成本地绝对路径,系统不再试图远程下载该box文件,执行成功,如下图:如有错误,欢迎指正end...原创 2021-07-07 16:14:59 · 2907 阅读 · 0 评论 -
【一道算法题】有效的括号
一道来自leetcode的题,题目如下:第一种思路:第一种思路是我自己最先考虑到的思路,合格的字符串最内部,一定有一个最小单元是相对应的,不断把这个最小单元提出来,通过递归将剩余的字符串进行再一次操作,直到空串,这样就是一个合格字符串,否则不合格。相关代码如下: public boolean isValid(String s) { if(s != null && s.length() == 0){ return tr..原创 2020-06-24 17:36:06 · 363 阅读 · 0 评论 -
JavaCV截取的视频帧(Frame)为无效帧
使用JavaCV的FFmpegFrameGrabber遍历视频帧(Frame)并截取帧转化为图片,在这个过程中,某些视频帧转化为图片过程中会报 空指针异常(NullPointerException),这也许是由当前帧无效造成的,我们可以通过判断org.bytedeco.javacv.Frame 里的image属性是否为null来判断视频是否为有效帧。如果frame.image == null,...原创 2019-11-03 11:33:11 · 2862 阅读 · 5 评论 -
Java Web世界中PDF处理及预览那些事
在浏览器上预览PDF文件,某些情况下来说是一件比较简单的事情,为什么说某些情况下呢,大多数情况下,由于现代浏览器提供的优秀功能,预览PDF文件是一件简单的事情。但某些情况下,由于PDF文件的特殊,我们在操作程序修改或签名PDF文件后的预览功能会出现这样那样的问题,或某些情况下,我们不希望我们的PDF文件被客户直接下载,这时候我们也不能用最直接的方式将PDF文件直接暴露给客户,或者,我们需要在移...原创 2019-10-26 21:58:11 · 1312 阅读 · 0 评论 -
J2SE桌面小程序包含配置文件打成jar包引出的一系列问题(2)-maven打jar包 getResource为null问题解析
上一篇博文最后说了个jar可执行文件getResource("/")为空的问题,在IDE中这个问题是不存在的,那为什么打成jar包就出现这个问题呢?这还要说一下我用的打包工具--maven其实,一般情况下,java project打出来的jar包是没这个问题的,但为什么maven打出来的就不行了呢。这里要说到一个文件,其实用maven打jar出现的其他某些运行问题也是这个文件造成的,这个文原创 2017-11-15 17:01:49 · 1321 阅读 · 1 评论 -
java网络图片抓取及其引发的相关问题
jsoup解析html原创 2017-12-16 09:26:15 · 264 阅读 · 0 评论 -
jsoup解析html简单总结
jsoup(Java HTML Parser)java html解析器。使用jsoup解析html很简单,只要抓到最重要的点,剩下的代码很容易就顺下来。Document document = Jsoup.parse(html);通过Jsoup中静态方法解析HTML文本内容,解析成Document对象,接下来操作就是在玩儿这个Document对象。按照解析html中的图片地址原创 2017-12-16 08:45:27 · 731 阅读 · 0 评论 -
对struts2中ActionContext模拟及ThreadLocal的使用分析
struts2中,一个用户访问,对应一个线程,我们经常使用ActionContext来取Session,取我们特定线程的数据,那么,这一切究竟是怎样完成的呢,通过一个对struts2 ActionContext类的模拟,解释一下这个事情。下面粗略的模拟了100个用户在5秒钟内随机访问系统的场景,以及对struts2中Session的使用代码如下:import java.util原创 2017-12-07 16:17:30 · 645 阅读 · 0 评论 -
java关于局部变量必须初始化赋初值及成员变量不必须该操作的原理浅解析
一个我们编写的java源码类(机器码)要想被正式运行,必须先编译成字节码(class文件),然后虚拟机经过类加载过程后才能真正使用。而这个类加载过程包括了对字节码 加载 验证 准备 解析 初始化等过程。在这个过程中,我们会对我们定义的成员变量进行两次初始化,一次赋默认初值(0值,boolean赋为false),一次赋我们定义的初值,如:class Test{int a = 2;}原创 2018-02-02 22:14:43 · 7000 阅读 · 6 评论 -
基于java的当前登录qq客户端账号检测
最近需要写一个本机qq客户端登录检测的功能,首先,在点击打开链接找到了如下C语言代码:#include <windows.h>#include <stdio.h>#include <string.h> BOOL CALLBACK enumwindowsproc(HWND hwnd,LPARAM lParam){ char name[255]={0}...原创 2018-03-07 16:08:49 · 1076 阅读 · 1 评论 -
J2SE桌面小程序包含配置文件打成jar包引出的一系列问题(1)
用swing写了个j2se的桌面小程序,想要保存程序的一些配置信息,内嵌数据库有点大材小用,于是考虑使用xml文件保存配置信息,万万没想到啊。。。开始,想把配置文件存在classpath下,考虑这样可以内嵌在jar包中,在IDE中调试的时候,读配置文件,写配置文件都没毛病,但是当打成jar包运行的时候,读配置文件可以,写配置文件报FileNotFoundException。为什么不打成jar包运行...原创 2017-11-15 16:13:45 · 206 阅读 · 0 评论 -
匿名内部类访问方法成员变量需要加final的原因及证明
在java编程中,没用的类定义太多对系统来说也是一个负担,这时候我们可以通过定义匿名内部类来简化编程,但匿名内部类访问外部方法的成员变量时都要求外部成员变量添加final修饰符,final修饰变量代表该变量只能被初始化一次,以后不能被修改。但为什么匿名内部类访问外部成员变量就不允许他修改了呢?接下来这个例子应该足够把这些说清楚了:示例代码:public class InnerFinal原创 2017-08-17 16:31:26 · 11367 阅读 · 7 评论 -
基于java的开源论坛jforum的安装及简介
安装要有安装入口,jforum的安装入口是install.jsp.里面只有一句跳转:访问install.jsp,这是安装入口,我们通过这个安装入口进行了数据库安装,初始化论坛配置等一系列操作。在安装过程中,我使用mysql数据库,所以数据库类型选择的MySql,但是在后面初始化数据库表的过程中出现了字段不一致错误,官网上查了一下,用了HSQLDB问题解决。网站链接代原创 2017-09-10 10:23:00 · 790 阅读 · 0 评论 -
设计模式(23)--访问者模式
访问者模式,用来解决多个访问者访问多个不同元素的问题。访问者模式引入了访问者角色和被访问者角色,不同访问者访问元素的方式不同。举个例子(该例子来源于 《C#设计模式》刘伟 胡志刚 阎朝坤):公司员工分为全职员工和兼职员工(这里员工就是被访问者),公司有财务部结算工资,人力资源部计算工作时长(这里财务部和人力资源部为访问者),于是就有了不同访问者访问不同被访问者的情况。访问者模式UML类原创 2017-08-06 19:03:05 · 275 阅读 · 0 评论 -
设计模式(13)--职责链模式
行为型模式关注对象之间交互,对象之间的通信与协作。共十一个,职责链模式是其中之一。为什么职责链模式属于行为型模式,因为他很好的体现了对象之间的通信与协作,职责链,就是说在这条链上的对象都有这个职责,有职责来做什么呢?处理请求。举个例子,公司审批活动经费,小于5000,副经理就有权限审批,5000-10000,需要经理审批,10000-50000董事长审批,大于50000,召开董事会决定。原创 2017-07-29 10:56:51 · 367 阅读 · 0 评论 -
设计模式(12)--代理模式
代理模式的理论在前面的一条博文 JAVA基于反射动态代理 说过了,因为这篇代理模式更侧重说一些理论性的东西,所以侧重点放在了静态代理上,九层之台,起于垒土,明白了静态代理也就很容易理解动态代理了(动态代理是在静态代理的基础上加上了编程的技巧和编程思想的智慧)。代理模式中代理类和真实类要实现相同接口,为什么要实现相同接口呢?这要从代理模式的目的说起,它的目的就是代理真实类,当然,想代理真实原创 2017-07-28 21:20:44 · 259 阅读 · 0 评论 -
设计模式(22)--模板方法模式
模板方法,即通过父类定义的模板来执行算法或方法。而这个模板,被称作模板方法,这也是名字的由来。举个例子,本人懒(懒人创造世界),还用上一个策略模式的例子,给他稍作修改:小明 走路(骑自行车或坐公交车) 去上学。这时候,可以定义三个方法,一,getPerson(),不一定是小明,也可能是其他人,howToGetToSchool()方法,选择哪种方式上学,where()方法,不一定去上学,原创 2017-08-06 10:23:11 · 230 阅读 · 0 评论 -
设计模式(21)--策略模式
策略模式即解决问题的策略。当我们需要解决某个问题时,可能会有多种解决问题的办法,这时候,可以将每个办法看成一个策略,我们可以选择其中一个合适策略来解决问题。同时,我们可以方便的更换策略活或者增加策略。策略模式比较容易理解,该模式通过增加一个抽象策略类来定义策略角色。而我们面向抽象编程,使策略模式变得容易扩展。举例:小明去上学,可以走路,可以骑自行车,可以做公交车,他的每一种去学校方式都原创 2017-08-05 16:01:35 · 234 阅读 · 0 评论 -
java基于递归思想的文件拷贝
这段代码原本目的是扫描是否插入U盘,插入的话,自动将U盘文件全部备份到目标文件夹中。文件目录是树状结构,很有层次感,且每层操作大致相同。复制目录中的文件,不是创建文件夹操作,就是复制文件操作,所以递归思想在这里很适用。代码如下:/**** * * @author wjw * @since 2018-02-27 * */public class Copy { public stat...原创 2018-02-27 17:38:17 · 248 阅读 · 0 评论 -
java框架漫谈
写j2ee系统,使用框架有时候也许会产生困惑,这框架这么复杂,为什么要用他们。感觉框架复杂的原因,一是对框架使用不熟练,二是没用过比框架更难用的东西。没有颠沛流离过,不容易体会到安居乐业的幸福。当纯用servlet+jsp写几个系统,再回来用struts,只能说,爽!当纯用jdbc增删改查,再回来用ORM/半ORM框架时,还是爽!(当然,如果你自己技术很强,自己做了封装又另当别论)网上流传的很广的...原创 2018-02-27 21:16:06 · 264 阅读 · 0 评论 -
Spring框架常用注解及通配符总结
@Autowired 自动注入 默认是类型匹配 使用配置文件需要set ,使用注解不需要,只需要类属性 @Autowired可以和@Qualifier("beanName") 配合着使用@Qualifier("beanName") 多个相同类型的bean,标注名称@Scope 单例模式还是原型模式@Resource @Auto...原创 2018-02-27 21:50:52 · 642 阅读 · 0 评论 -
从DispatcherServlet开始到结束,浅谈springmvc执行流程
这篇文章,DispatcherServlet是个重点,谈springmvc绕不开他,我们使用他作为springmvc接管web项目request的入口(在web.xml)中配置。所以,接下来,将这位老大哥的身子贴在下面,请大家文明阅览:protected void doDispatch(HttpServletRequest request, HttpServletResponse res...原创 2019-09-21 11:49:24 · 440 阅读 · 0 评论 -
面试题:用三个线程按顺序循环打印 abc 三个字母,比如 abcabcabc
揣摩出题人意图,应该希望你用wait notify notifyAll来一环套一环进行线程通信,从而按顺序循环打印abc,也就是说,打印了a就打印b然后打印c。思路就是我们三个线程用同一把锁,刚开始,a线程获取锁,打印a,设置下一个打印b,并同时唤醒bc,这时候,bc线程都阻塞等待,如果c抢到了锁,进入代码执行,由于不符合条件,会wait(同时释放锁),直到b抢到锁,符合条件打印,如此,顺序执...原创 2019-03-12 16:03:02 · 4902 阅读 · 0 评论 -
javafx tableview 双击(double clicks)行事件且获取该行数据
原链接:https://stackoverflow.com/questions/26563390/detect-doubleclick-on-row-of-tableview-javafx dataTable.setRowFactory( tv -> { TableRow<EmailInfo> row = new TableRow<Ema...原创 2018-08-24 17:15:11 · 6709 阅读 · 3 评论 -
锁——可重入锁(ReentrantLock)和可重入读写锁(ReentrantReadWriteLock)的区别
可重入读写锁是可重入锁功能的增强。可重入锁分为读锁和写锁,他也可以完成可重入锁的功能,但对锁粒度进行了细分。比如,有个功能我们使用可重入锁完成了,这个功能我们用可重入锁的写锁同样能完成(读锁不能)。但假如有个功能,我们要区分读和写,因为有时候多线程读完全没必要互斥。这时候就需要用到可重入读写锁,提高程序的效率。 大致如此,如有错误,欢迎指正end...原创 2018-08-03 10:11:48 · 2164 阅读 · 1 评论 -
锁——ReentrantReadWriteLock 可重入读写锁
ReentrantReadWriteLock 为可重入读写锁,实现ReadWriteLock接口,他包含一个读锁(ReentrantReadWriteLock.ReadLock),一个写锁(ReentrantReadWriteLock.WriteLock),实现Lock接口。读写锁,读读不互斥,读写互斥,写写互斥。示例代码如下:import java.util.concurrent...原创 2018-08-03 10:02:45 · 631 阅读 · 0 评论 -
锁——ReentrantLock 可重入锁
ReentrantLock是一个可重入(re entrant)锁(lock),怎么解释可重入呢?一个线程是否可多次获得同一个锁方法a和方法b被相同可重入锁锁定,a方法里调用了b方法,线程1调用a方法,如果是不可重入锁,会在b方法处阻塞,而可重入锁,由于ab方法持有的锁和调用线程一样,所以可以无阻碍执行。示例代码:import java.util.concurrent.locks...原创 2018-08-03 09:54:31 · 442 阅读 · 0 评论 -
oim(类QQ)开源项目源码阅读笔记(1)——登录部分
oim项目是码云上相当优秀的开源项目,项目完整,有客户端,服务器端web端,项目地址:https://gitee.com/oimchat因为最近打算使用javafx写个客户端,所以看了一下该项目基于java的pc客户端源码,客户端项目如下:接下来简单说一下登录部分:客户端与服务端通信使用mina框架,通过main入口运行程序,执行代码launch(args);然后调用start方法进...原创 2018-07-27 15:49:16 · 1193 阅读 · 0 评论 -
java文件共享锁 独占锁 NonReadableChannelException NonWritableChannelException情况分析说明
共享锁 所有共享锁持有者可读 FileOutputStream.getChannel().tryLock(0L, Long.MAX_VALUE, true)获得共享锁, NonReadableChannelException异常,共享锁可读不可写,获取共享锁,必须要包含read channel FileInputStream.getChannel().tryLock(0L, L...原创 2018-07-25 17:07:27 · 4814 阅读 · 0 评论 -
锁——FileLock 文件锁
文件锁(FileLock),使用文件锁锁住文件后,其他进程不能操作读或写文件,除非当前进程release或unlock文件锁。前两天看码云上的oim项目源码,该项目即使用了文件锁来防止同一账户重复登录(当然,该方法是不太合理的,因为用户换一台电脑或修改锁文件路径即可同一账户重复登录,但也是一个文件锁使用的不错的例子)文件锁分为共享锁、独占锁,加锁方式有阻塞(lock())和非阻塞(tryL...原创 2018-07-25 14:55:19 · 2291 阅读 · 0 评论 -
java 列出邮箱所有默认文件夹名称
使用Javamail收取邮件,要知道邮箱文件夹名称,然后使用列如: Folder folder = store.getFolder(“垃圾箱”);就可以,那怎样知道folder name呢,方法如下: Folder defaultFolder = store.getDefaultFolder(); Folder[] folders = defaultFolder.list()...原创 2018-07-16 15:43:26 · 1649 阅读 · 1 评论 -
分布式事务解决方案——基于可靠消息的最终一致性方案异常分析(01理论)
什么时候使用分布式?业务太复杂,对业务进行拆分,进行服务化,对数据库进行拆分,水平拆分或垂直拆分。不管怎么拆分吧,拆出了其他问题,当我们系统最初级阶段,所有数据都在一个数据库中,进行事务一致性控制很容易,但是当我们分库,分表后,曾经的兄弟姐妹表们都风流云散了,如果业务执行失败,你再给我一个回滚试试,离得十万八千里,想全部一起控制,有心无力,鞭长莫及。这时候就出现了分布式事务解决方案,今天说的基于可...原创 2018-05-06 11:33:17 · 1038 阅读 · 0 评论 -
八皇后问题及n皇后问题解法及效率优化笔记(1)
八皇后问题是一个很有趣的问题,话说,有一个八行八列的棋盘,有八个皇后棋子,这八个棋子摆在这八行八列的棋盘上,且行列斜线都不能重合,由此,推及到n皇后问题。八皇后的程序效率问题是一个相当值得研究的问题,程序效率的高低和程序算法密切相关,由此,研究程序效率最后变成了算法的研究。有人将类似追求效率极致的编程称为极限编程。一个问题的解法千千万,但效率最好的却不好发现。下面,是我关于八皇后及n皇后问题解法的...原创 2018-03-14 16:12:28 · 1576 阅读 · 0 评论 -
设计模式(10)--外观模式
外观模式即系统很复杂的时候,客户端与系统各个业务类亲自交互也会显得相当复杂,为了降低各个类之间的耦合度,使程序结构变得清晰,外观模式提供了一个外观角色来统一和客户端交互,而复杂的业务类只需和外观角色交互即可。这个外观怎么理解呢?某个系统存在一群复杂的业务交互,但这些业务交互对于客户端而言都看不到,客户端能看到的就是这个外观类,外观类负责在外面挡风遮雨,在客户端来看,它就是复杂业务的外观。外原创 2017-07-26 21:44:15 · 249 阅读 · 0 评论 -
设计模式(4)--原型模式
原型模式,顾名思义,以某个对象为原型创建和原型对象相同或相似的新对象。新的被创建的对象占用内存空间和原型对象不同。也就是说,它就是个全新的对象。原型模式和单例模式区分一下,同样得到一个新对象,原型模式创建的是一个全新的对象,而单例模式拿到的一直是相同的一个对象。原型模式分为浅克隆和深克隆两种方式。浅克隆:当原型对象被复制时只复制值类型的成员变量,不复制引用类型的成员变量。深克隆:无原创 2017-07-16 09:50:46 · 204 阅读 · 0 评论 -
设计模式(3)--建造者模式
昨天的抽象工厂模式旨在创建多个产品,比如手机屏幕,手机电池,在这里面,手机屏幕,手机电池都是独立的产品。而建造者模式旨在创建一个产品,但这个产品包含有其他零部件,比如生产手机产品,在这里看,手机是一个产品,建造者模式以生产手机为目的,手机的零部件有电池,屏幕,但是在建造者模式中,电池、屏幕仅仅是手机的一个属性,我们也许会创建电池对象、屏幕对象,但创建他们的目的就是为了组装手机。综上,承接昨天抽原创 2017-07-14 21:08:13 · 230 阅读 · 0 评论 -
设计模式(2)--抽象工厂模式
上一篇工厂方法模式,一个工厂只生产一个产品,比如手机电池工厂只生产电池不生产别的,摄像头工厂只生产摄像头,不生产别的。而抽象工厂模式,生产一系列产品,比如:苹果手机工厂,生产苹果电池、苹果屏幕、苹果摄像头等有相同共同点的产品。也就是说,我们如果需要某个功能,这个功能按照类别不同,他的属性也就不同,比如:报告生成系统,可以生成pdf格式和word格式两种报告格式,如果是需要生成pdf类型报告原创 2017-07-13 21:16:09 · 198 阅读 · 0 评论 -
JAVA ArrayList集合add(int index, E element)方法源码简单分析
ArrayList集合底层是基于数组实现的,定义如下:/** * The array buffer into which the elements of the ArrayList are stored. * The capacity of the ArrayList is the length of this array buffer. */ private原创 2017-07-04 14:11:44 · 1673 阅读 · 0 评论 -
JAVA 编程小技巧之UDP发送中文字符乱码问题解决
String sendStr = "Hellow 你好!";System.out.println(sendStr.length() + " " + sendStr.getBytes().length);DatagramPacket dp = new DatagramPacket(sendStr.getBytes(), sendStr.getBytes().length,InetAddress.原创 2017-07-04 11:51:32 · 4829 阅读 · 3 评论 -
设计模式(1)--工厂方法模式
上一篇简单工厂模式,如果扩展新的产品类,需要修改工厂类源代码,不符合开闭原则,工厂方法模式通过对工厂类进行抽象,很好的解决了这个问题。工厂方法模式UML类图如图所示:具体实例代码如下所示(其实是在简单工厂模式实例代码的基础上对工厂类进行了一下抽象):抽象工厂类:public abstract class AbstractFactory { public abstract原创 2017-07-12 20:40:20 · 295 阅读 · 0 评论