2018年12月29日

CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法

摘要: sed -n '/2016-11-02 15:00:/,/2016-11-02 15:05:/p' catalina.out > /tmp/123/error.txt 将 catalina.out 文件的中的日志信息,按 2016-11-02 15:00 到 2016-11-02 15:05 时间段 阅读全文

posted @ 2018-12-29 15:20 我是司 阅读(740) 评论(0) 推荐(0)

getField和getDeclaredField的区别

摘要: 这两个方法都是用于获取字段getField 只能获取public的,包括从父类继承来的字段。getDeclaredField 可以获取本类所有的字段,包括private的,但是不能获取继承来的字段。 (注: 这里只能获取到private的字段,但并不能访问该private字段的值,除非加上setAc 阅读全文

posted @ 2018-12-29 14:29 我是司 阅读(4588) 评论(0) 推荐(1)

使用HSQLDB 客户端(jvm自带数据库使用技巧)

摘要: 数据库连接jar包 http://how2j.cn/frontdownload?bean.id=1169 hsqldb.jarservlet-2_3-fcs-classfiles.zipsqltool.jar import org.hsqldb.util.DatabaseManagerSwing; 阅读全文

posted @ 2018-12-29 14:16 我是司 阅读(1878) 评论(1) 推荐(0)

PageHelper分页

摘要: 至少使用JDK8版本,请下载JDK8或者更高版本: 下载以及配置JDK环境 因为是第三方插件,所以需要额外的jar包,都在右上角提供了下载:pagehelper-5.1.0-beta2.jar,jsqlparser-1.0.jar 配置插件 在mybatis-config.xml中,添加15-19行 阅读全文

posted @ 2018-12-29 13:51 我是司 阅读(641) 评论(0) 推荐(0)

使用exe4j打包Java程序

摘要: 1、下载及安装exe4j的破解版 http://www.pc0359.cn/downinfo/52705.html#download 1、下载及安装exe4j的破解版 http://www.pc0359.cn/downinfo/52705.html#download 1、下载及安装exe4j的破解版 阅读全文

posted @ 2018-12-29 13:25 我是司 阅读(1469) 评论(1) 推荐(0)

有图形界面的聊天程序

摘要: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 阅读全文

posted @ 2018-12-29 11:52 我是司 阅读(515) 评论(0) 推荐(0)

同时收发消息

摘要: 这是因为接受和发送都在主线程中,不能同时进行。 为了实现同时收发消息,基本设计思路是把收发分别放在不同的线程中进行1. SendThread 发送消息线程2. RecieveThread 接受消息线程3. Server一旦接受到连接,就启动收发两个线程4. Client 一旦建立了连接,就启动收发两 阅读全文

posted @ 2018-12-29 11:46 我是司 阅读(442) 评论(0) 推荐(0)

服务端和客户端互聊

摘要: package socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.i 阅读全文

posted @ 2018-12-29 11:39 我是司 阅读(332) 评论(0) 推荐(0)

使用Scanner

摘要: 在上个步骤中,每次要发不同的数据都需要修改代码 可以使用Scanner读取控制台的输入,并发送到服务端,这样每次都可以发送不同的数据了。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 阅读全文

posted @ 2018-12-29 11:35 我是司 阅读(303) 评论(0) 推荐(0)

收发字符串

摘要: 直接使用字节流收发字符串比较麻烦,使用数据流对字节流进行封装,这样收发字符串就容易了 1. 把输出流封装在DataOutputStream中 使用writeUTF发送字符串 "Legendary!" 2. 把输入流封装在DataInputStream 使用readUTF读取字符串,并打印 1 2 3 阅读全文

posted @ 2018-12-29 11:33 我是司 阅读(321) 评论(0) 推荐(0)

收发数字

摘要: 一旦建立了连接,服务端和客户端就可以通过Socket进行通信了 1. 客户端打开输出流,并发送数字 110 2. 服务端打开输入流,接受数字 110,并打印 Server.java Client.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 阅读全文

posted @ 2018-12-29 11:32 我是司 阅读(195) 评论(0) 推荐(0)

建立连接

摘要: 1. 服务端开启8888端口,并监听着,时刻等待着客户端的连接请求 2. 客户端知道服务端的ip地址和监听端口号,发出请求到服务端 客户端的端口地址是系统分配的,通常都会大于1024 一旦建立了连接,服务端会得到一个新的Socket对象,该对象负责与客户端进行通信。 注意: 在开发调试的过程中,如果 阅读全文

posted @ 2018-12-29 11:30 我是司 阅读(377) 评论(0) 推荐(0)

判断本网段有多少可用的ip地址

摘要: 为了提高效率,使用多线程方式同时ping。 但是如果开启255个线程,又会因为网络端口太拥挤,会被判定为无法ping通。所以本例使用java自带线程池,线程池的连接数还不能太大,启动了15个线程。 等待所有的线程结束后打印出ping通了的ip地址。 package AtomicInteger; im 阅读全文

posted @ 2018-12-29 11:18 我是司 阅读(2082) 评论(0) 推荐(0)

java执行windows 的cmd 命令

摘要: //获取运行时 Runtime rt = Runtime.getRuntime(); //获取进程 Process p = rt.exec(String[] cmdarray); 或者 Process p = rt.exec(String cmd); 如果p不为空,那么要清空 if(null!=p) 阅读全文

posted @ 2018-12-29 11:10 我是司 阅读(8580) 评论(0) 推荐(1)

使用java 执行ping命令

摘要: 借助 Runtime.getRuntime().exec() 可以运行一个windows的exe程序如图,使用java运行 ping 192.168.2.106,返回这样的字符串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 阅读全文

posted @ 2018-12-29 10:52 我是司 阅读(4765) 评论(0) 推荐(0)

C语言的printf输出格式控制

摘要: printf大家都耳熟能详,但是能真正将其用法弄透的估计很少见。 转一篇,改天整理。 1.转换说明符 %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符 %d 有符号十进制整数 %f 浮点数(包括float和doulbe) %e(%E) 浮点数指数输出[e-(E-)记数法] 阅读全文

posted @ 2018-12-29 10:50 我是司 阅读(5521) 评论(0) 推荐(1)

获取本机IP地址

摘要: 1 2 3 4 5 6 7 8 9 10 11 12 13 package socket; import java.net.InetAddress; import java.net.UnknownHostException; public class TestSocket { public stat 阅读全文

posted @ 2018-12-29 10:50 我是司 阅读(375) 评论(0) 推荐(0)

synchronized 同步对象概念

摘要: 解决上述问题之前,先理解synchronized关键字的意义如下代码: Object someObject =new Object(); synchronized (someObject){ //此处的代码只有占有了someObject后才可以执行 } synchronized表示当前线程,独占 对 阅读全文

posted @ 2018-12-29 10:37 我是司 阅读(1155) 评论(0) 推荐(0)

线程交互

摘要: 使用synchronized方式进行线程交互,用到的是同步对象的wait,notify和notifyAll方法Lock也提供了类似的解决办法,首先通过lock对象得到一个Condition对象,然后分别调用这个Condition对象的:await, signal,signalAll 方法注意: 不是 阅读全文

posted @ 2018-12-29 09:50 我是司 阅读(389) 评论(0) 推荐(0)

总结Lock和synchronized的区别

摘要: 1. Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现,Lock是代码层面的实现。2. Lock可以选择性的获取锁,如果一段时间获取不到,可以放弃。synchronized不行,会一根筋一直获取下去。 借助Lock的这个特性,就能够规避死锁 阅读全文

posted @ 2018-12-29 09:50 我是司 阅读(261) 评论(0) 推荐(0)

trylock方法

摘要: synchronized 是不占用到手不罢休的,会一直试图占用下去。 synchronized 是不占用到手不罢休的,会一直试图占用下去。 synchronized 是不占用到手不罢休的,会一直试图占用下去。 与 synchronized 的钻牛角尖不一样,Lock接口还提供了一个trylock方法 阅读全文

posted @ 2018-12-29 09:48 我是司 阅读(5017) 评论(0) 推荐(0)

使用Lock对象实现同步效果

摘要: Lock是一个接口,为了使用一个Lock对象,需要用到 Lock是一个接口,为了使用一个Lock对象,需要用到 Lock是一个接口,为了使用一个Lock对象,需要用到 Lock lock = new ReentrantLock(); 与 synchronized (someObject) 类似的,l 阅读全文

posted @ 2018-12-29 09:44 我是司 阅读(537) 评论(0) 推荐(0)

借助线程池同步查找文件内容

摘要: package multiplethread; import java.io.File; import java.io.FileReader; import java.io.IOException; public class SearchFileTask implements Runnable{ p 阅读全文

posted @ 2018-12-29 09:39 我是司 阅读(421) 评论(0) 推荐(0)

使用java自带线程池

摘要: java提供自带的线程池,而不需要自己去开发一个自定义线程池了。线程池类ThreadPoolExecutor在包java.util.concurrent下 ThreadPoolExecutor threadPool= new ThreadPoolExecutor(10, 15, 60, TimeUn 阅读全文

posted @ 2018-12-29 09:10 我是司 阅读(1239) 评论(1) 推荐(0)

线程池设计思路

摘要: 线程池的思路和生产者消费者模型是很接近的。1. 准备一个任务容器2. 一次性启动10个 消费者线程3. 刚开始任务容器是空的,所以线程都wait在上面。4. 直到一个外部线程往这个任务容器中扔了一个“任务”,就会有一个消费者线程被唤醒notify5. 这个消费者线程取出“任务”,并且执行这个任务,执 阅读全文

posted @ 2018-12-29 09:07 我是司 阅读(1971) 评论(0) 推荐(0)

ArrayList和Vector的区别

摘要: 通过在eclipse中查看源代码可以得知:ArrayList类的声明: public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializabl 阅读全文

posted @ 2018-12-29 08:42 我是司 阅读(464) 评论(0) 推荐(0)

StringBuffer和StringBuilder的区别

摘要: StringBuffer 是线程安全的StringBuilder 是非线程安全的所以当进行大量字符串拼接操作的时候,如果是单线程就用StringBuilder会更快些,如果是多线程,就需要用StringBuffer 保证数据的安全性非线程安全的为什么会比线程安全的 快? 因为不需要同步嘛,省略了些时 阅读全文

posted @ 2018-12-29 08:40 我是司 阅读(185) 评论(0) 推荐(0)

HashMap和Hashtable的区别

摘要: HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式区别1: HashMap可以存放 nullHashtable不能存放null区别2:HashMap不是线程安全的类Hashtable是线程安全的类 HashMap和Hashtable都实现了Map接口,都是键值对保存数据的 阅读全文

posted @ 2018-12-29 08:39 我是司 阅读(311) 评论(0) 推荐(0)

把非线程安全的集合转换为线程安全

摘要: ArrayList是非线程安全的,换句话说,多个线程可以同时进入一个ArrayList对象的add方法借助Collections.synchronizedList,可以把ArrayList转换为线程安全的List。与此类似的,还有HashSet,LinkedList,HashMap等等非线程安全的类 阅读全文

posted @ 2018-12-29 08:38 我是司 阅读(1447) 评论(0) 推荐(0)

导航