![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
Canliture
hello, 程序分析!
展开
-
仿Hex-Editor,实现简单地二进制文件查看器JHexer
0. 前言当对Java语言的理解逐渐加深时,我们会有必要对.class文件有一定的了解,那么就少不了查看二进制文件。互联网上有很多的工具,能够帮助我们有效地查看,分析.class文件字节码。那么我们何不自己写一个小工具来查看二进制文件呢?当然,我们一般都是查看16进制的数据,所以这里尝试写一个最简单的二进制文件查看器,我们称之为JHexer。1. 设计模式建造者(Builder)设计模式...原创 2019-07-22 21:58:30 · 1921 阅读 · 6 评论 -
课程表的实现(基于强智科技教务系统)
课程表的实现(1)(基于强智科技教务系统)1,本小系统服务于在校大学生。用户可以根据代码定制安装自己的轻量级课程表app在手机上(当然,可以把网络请求部分修改移植到PC或者Web平台上)。 2,好处:再也不用为了在手机上看课表而专门去下载30~60MB不等大小并且有各种干扰信息的APP了。 同时,许多教务系统只能用IE登陆,是否让人恼火? 3,这里尝试做个简单的课表查询小程序(Andro...原创 2018-10-29 23:47:19 · 7893 阅读 · 4 评论 -
实现Tomcat——实现javax.servlet.Servlet接口
0. 环境配置这里使用IntelliJ IDEA,Maven WebApp项目,不过这里我们不会使用/启动Tomcat服务器。本文的目的就是使用Socket实现一个服务器;此服务器是一个Servlet容器,我们需要遵循Servlet接口规范,即javax.servlet.*。这里由于我们使用的是Maven项目,所以这里引入servlet api 依赖,servlet api的版本为3.1&...原创 2019-07-11 00:38:19 · 8146 阅读 · 0 评论 -
并发编程实战(4). 异步任务 之 Callable,Future,FutureTask
Java 中异步任务的实现 之 Callable,Future,FutureTask这里,我们主要用到的类和接口为:Callable,Future,FutureTaskRunable只需关心运行的动作行为,而Callable同时关心运行的结果。package java.util.concurrent;@FunctionalInterfacepublic interface Callabl...原创 2019-05-17 11:53:59 · 225 阅读 · 0 评论 -
并发编程实战(3). 安全发布对象 之 单例模式的7种实现
摘自Java Concurrency In Practice安全发布对象的常用模式1.在静态初始化函数中初始化一个对象引用2.将对象的引用保存到volatile类型的域或者AtomicReference对象中3.将对象的引用保存到某个正确构造对象的final域中4.将对象的引用保存到一个由锁保护的域中这里介绍一下懒汉模式,它代码实现的演进包含了除了3之外的所有模式。文章目录懒...原创 2019-05-16 18:36:13 · 141 阅读 · 0 评论 -
并发编程实战(2). 线程安全性
线程安全性什么是线程安全性? 在《Java Concurrency In Practice》中,有这么一段对于线程安全性的描述,被广泛引用:当多个线程访问某个类时,不管运行时环境采取何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的---- P13. Java Concurrency In P...原创 2019-05-16 17:08:44 · 162 阅读 · 0 评论 -
并发编程实战(1). 环境搭建
1. 定义辅助注释我们定义四个注释:ThreadSafe, NotThreadSafe , Recommend , NotRecommend@Target(ElementType.TYPE) // 注解作用的目标:给一个类加上注解@Retention(RetentionPolicy.SOURCE) // 注解存在的范围:只存在于源代码中public @interface Thread...原创 2019-05-16 17:07:46 · 202 阅读 · 0 评论 -
synchronized锁住什么?锁的范围?
synchronized关键字简单地讲,可以使用这一简单的关键字来保证线程安全。但是我们首先得知道synchronized到底锁住的是什么?锁住的范围又是什么?这里测试实验仅用两个类:Test.java类,里面只有一个函数,在线程中调用的函数。Main.java类,整个实验的测试入口Tips:这里缩略地使用syn锁来表示synchronized锁版本1:syn锁住函数这里使用最简单...原创 2018-11-28 22:49:15 · 749 阅读 · 0 评论 -
线程安全(Thread Safety)
注意:更详细的内容参考<<Java并发编程实践>>这里大量的代码都来自此书,或者在此书代码的基础上进行改动/扩展本节关键字/词: 线程安全,竞争条件,Atomic(原子性),synchronized(同步锁),Reentrancy(重进入)这里主要对重要代码分析。代码例子引入线程安全问题public class UnsafeSeque原创 2018-11-28 02:33:19 · 1169 阅读 · 0 评论 -
Java正则表达式提取特定html标签内的内容
如题:使用正则表达式,怎么匹配特定html标签内的内容。比如,对于如下文本串:... ignored contentprefix content <html>inner content</html>postfix content... ignored content我们要提取出<html>标签内的内容: inner content(这里的html标签可以换成任何其它的标签,比如<p>标签)这里引入正则表达式的group概念:详细点击文章查看原创 2020-08-31 16:19:50 · 5647 阅读 · 5 评论 -
jdom dom4j解析阻塞,报错
在解析mybatis的mapper.xml文件时,发现saxBuilder.build函数发生·阻塞·的情况,更加严重的情况会出现下图所示的错误,也就是Connection time out经研究,对错误发生的位置的调用栈debug,最终终于发现了如下的问题:也就是说,在最底层的连接超时是因为连接不上mybatis.org,也就是说,连接mybatis.org网站超时;然后自己在浏览器中...原创 2019-12-10 17:33:47 · 345 阅读 · 0 评论 -
IDEA + maven打包程序成为jar包
IDEA下打包程序成为jar包原创 2019-12-12 20:44:59 · 167 阅读 · 0 评论 -
System.getenv(String)获取不到环境变量
如题,我在Windows上设置了环境变量,在Java中获取,总是获取不到。解决方法:简单粗暴 - 重启。原创 2019-12-07 09:38:40 · 4356 阅读 · 0 评论 -
认真读文档!
认真读文档!认真读文档!认真读文档!血的教训....// ignored some codes ...Map options = JavaCore.getOptions();JavaCore.setComplianceOptions(JavaCore.VERSION_1_5, options);parser.setCompilerOptions(options);Which ...原创 2019-12-04 10:51:29 · 172 阅读 · 0 评论 -
静态语义分析构建
静态语义分析构建静态语义处理;学习笔记,仅供个人知识导航用处,不作其它用途部分段落翻译自博客中列出的 参考文献1. JDT(Java开发工具, Java development tools)了解JDT是啥,了解其工具集1.1 JDT插件的组件内容JDT APTAnnotation Processor Tool(注解处理工具)JDT Core非UI的基础设施...原创 2019-10-21 16:28:41 · 990 阅读 · 0 评论 -
LinkedHashMap
JDK版本jdk1.8.0_191 1从继承体系的角度,LinkedHashMap是HashMap的子类public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>内部维护一个双向链表,维护插入顺序或者LRU顺序。/*** The head (eldest) of t...原创 2019-08-22 20:45:15 · 110 阅读 · 0 评论 -
ConcurrentHashMap源码解读
说明JDK版本jdk1.8.0_191 1建议先理解HashMap的源码,再来理解ConcurrentHashMap源码HashMap源码解读: HashMap源码解读1. 核心数据结构与HashMap数据结构类似,它们有着相同的数据结构:/*** The array of bins. Lazily initialized upon first insertion.* Size i...原创 2019-08-22 15:58:55 · 143 阅读 · 0 评论 -
HashMap源码解读
说明JDK版本jdk1.8.0_1911. 核心数据结构/*** The table, initialized on first use, and resized as* necessary. When allocated, length is always a power of two.* (We also tolerate length zero in some operation...原创 2019-08-22 02:18:02 · 138 阅读 · 0 评论 -
java.lang.Integer包装类的缓存
1. 发现问题先看一段代码:Integer a = 1;Integer b = 1;Integer c = 500;Integer d = 500;System.out.print(a == b);System.out.print(c == d);输出是啥?输出的结果如下:truefalse为啥?两个不都是引用吗?要输出false应该都输出false啊?下面解释原因。2...原创 2019-07-25 19:02:25 · 232 阅读 · 0 评论 -
Java RTTI(RunTime Type Information,运行时类型信息)
0. IntroductionJava 运行时类型信息,简称RTTI;RTTI能够让我们在程序正在运行时发现并使用类型信息; RTTI能够让我们放开编译时面向类型的约束,编写更强大的代码RTTI可以分为两种:传统的RTTI。这是在编译时所有的类型就可用。反射机制(reflection machanism)。它能够帮助我们在运行时发现类型信息。1. RTTI的必要性多态是面向对象编程...原创 2019-07-15 16:50:52 · 609 阅读 · 0 评论 -
深入浅出 对象序列化EOF异常(java.io.EOFException)
1. 说明本文有一些个人观点,如果有异议/更好的建议,可以在下面评论,或者联系我canliture#outlook.com(#改为@)如果你对象流不是很明白的,可以先看看The Java™ Tutorials——(2)Essential Classes——Basic I/O 之 7. 对象流(Object Streams)的讲述,链接中给出了一些程序例子,很容易理解。这里描述的j...原创 2019-05-23 03:09:07 · 13880 阅读 · 19 评论 -
补码知识解惑:-Integer.MIN_VALUE == Integer.MIN_VALUE;
0. 引言今天在看 Oracle Java Tutorial 有关Comparator比较器时,教程提醒了我们使用Comparator的一个注意事项,下面我们简要介绍这个注意事项,引入本文的主题。首先介绍Comparator的compare(T o1, T o2)返回值:1. < 0 则 o1 < o22. = 0 则 o1 = o23. > 0 则 o1 > 0...原创 2019-05-08 00:34:30 · 2062 阅读 · 0 评论 -
Java文本文件中关于换行符的打印问题
看下面的代码:public class CopyBytes { public static void main(String[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in ...原创 2019-04-24 19:19:49 · 1249 阅读 · 0 评论 -
Lambda表达式的序列化 与 强制类型转换——(Comparator<;Map.Entry<;K, V>;>; & Serializable)
这篇文章先引出问题,再给出一个例子重现问题。最后通过一些较为官方的资料,来说明引起问题的原因,原理。文章目录1. 发现问题2. 重现问题3. 分析问题参考文献1. 发现问题在文章开始之前我们先看看一段JDK 8中java.util.Map的代码。public interface Map<K,V> { // ... 省略与本文无关的代码 interface Entry&l...原创 2019-05-04 03:44:11 · 5903 阅读 · 3 评论 -
Java集合框架中,子接口为啥重复地列出父接口的抽象方法?
我们通过阅读Java集合接口的源代码:Collection, Set, List, Queue, Deque,发现它们之间会有接口继承的关系,但是我们会发现一个奇怪的问题,下面细细说来。 我们可以看到Deque接口的源码public interface Deque<E> extends Queue<E> { // 这里是Deque特有的方法,对问题的...原创 2019-05-04 00:40:03 · 317 阅读 · 0 评论