摘要:
图 注:图可以看成是一种特殊的“树”,特殊在一个节点可有多个父节点(因此也就可能出现环),故其遍历算法与树几乎一致,只不过需要借助visited[]来剪枝——标记访问过的节点以免重复访问。图的很多算法均以遍历算法为基础。 定义 G=(V,E) 顶点偶对:(通常不考虑自环,即认为vi, vj不同) ( 阅读全文
摘要:
所有可能情况的数量为卡特兰数。故求所有可能的出栈情况与此类似。 思路: 若左括号没全插入,则插入左括号; 若已插入左括号数比已插入右括号数多,则插入右括号; 阅读全文
摘要:
如果输入序列是表达式(前缀表达式、中缀表达式、后缀表达式,中缀表达式要求带括号有几个运算符就带几个)则构建出来的树为表达式树,对该树前、中、后序遍历得到对应序的表达式。 不过,中缀表达式带括号,而表达式树不带括号,故中序遍历表达式树时需要加适当的括号才能得到正确的中缀表达式。 1、表达式树的构建与遍 阅读全文
摘要:
若try或catch中没有return语句,则按正常执行流,从上到下,finally里的所有修改都生效。 这里讨论的是try或catch里有return或throw语句的情形,此情形比较让人迷惑。 总结如下: finally语句在try或catch的return或throw语句执行之后返回之前执行 阅读全文
摘要:
1、树 注:二叉树的所有问题,就是让你在前中后序位置注入巧妙的代码逻辑,去达到自己的目的!! 定义 具有n(n≥)个节点的有穷集合D与D上的关系集合R构成的结构T。即T:=(D,R)。 树的逻辑表示法:树形表示、文氏图表示、凹入表示、嵌套括号表示。 有序树、无序树。 基本概念 双亲节点、祖先节点、兄 阅读全文
摘要:
1.2、中国象棋将帅问题 要求:只用一个字节存储变量,输出将帅不照面的所有可能位置。 思路简单,就是穷举让将和帅不在同一列即可,用char高四字节和低四字节分别存储将和帅的位置,位置编号从1到9。代码如下: 1 unsigned char ch; 2 for(ch=1;ch< 0xff;ch++) 阅读全文
摘要:
关于ThreadLocal ThreadLocal相当于一个装饰器,装饰一个变量,通常将ThreadLocal实例定义为静态的。通常用来存一些多个线程都会用到的全局上下文信息,如请求信息、用户身份信心、数据库连接、当前事务等。 其作用是既使得各线程都可访问到该实例、又使各线程访问到的实际上是本线程私 阅读全文
摘要:
Netty是JBOSS针对网络开发的一套应用框架,它也是在NIO的基础上发展起来的。netty基于异步的事件驱动,具有高性能、高扩展性等特性,它提供了统一的底层协议接口,使得开发者从底层的网络协议(比如 TCP/IP、UDP)中解脱出来。 TCP传输面向的是字节流,存在粘包半包问题。Netty提供了 阅读全文
摘要:
java的访问控制是停留在编译层的,它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。因此,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。 一、JAVA反射 1、在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。 2、对于任意 阅读全文
摘要:
JDK自带的工具 在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的大小基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一层薄包装而已,他们的主要功能代码是在tools类库中实现的。命令行工具的好处是:当应用 阅读全文
摘要:
一、序列化的用途 序列化的主要用途有两个,一个是对象持久化,另一个是跨网络的数据交换、远程过程调用。 二、各种序列化机制比较 (跨语言、序列化大小、性能)1、(000)Java标准的序列化机制有很多优点,使用简单,可自动处理对象引用和循环引用,也可以方便的进行定制,处理版本问题等,但它也有一些重要的 阅读全文
摘要:
1、彻底理解字符编码-MarchOn 2、字符编码方式及大端小端-MarchOn 3、理清Java中的编码解码转换-MarchOn 4、Unicode字符编码表 总结: 1、Unicode字符集编号规则: 2、UTF-32编码规则:四个字符,与Unicode字符集直接一一对应3、UTF-16编码规则 阅读全文
摘要:
1、Java直接内存与堆内存-MarchOn 2、Java内存映射文件-MarchOn 3、Java Unsafe的使用-MarchOn 简单总结: 1、内存映射文件 读文件时候一般要两次复制:从磁盘复制到内核空间再复制到用户空间,内存映射文件避免了第二次复制,且内存分配在内核空间,应用程序访问的就 阅读全文
摘要:
Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的。如果你想搞破坏,可以使用Unsafe这个类。这个类是属于sun.*API中的类,并且它不是J2SE中真正的一部份,因此你可能找不到任何的官方文档,更可悲的是,它也没有比较好的代码文档。 Unsafe的 阅读全文
摘要:
20210819补充:线程阻塞(“阻塞”可以是指线程阻塞,也可以是指IO阻塞,两者不是一件事)的本质,详情可参阅文章 线程阻塞的本质。 深入到Linux内核源码看,阻塞与非阻塞的最终效果是线程状态的改变——阻塞就是将当前线程的状态标记为非RUNNABLE状态(例如Java scanner.nextL 阅读全文
摘要:
前言:容易让人理解的文章行文方式应该是从特殊到一般也即从具体例子到抽象理论的过程。这里反其道而行,让别人容易读懂不是本文的主要目的,主要目的是仅作为自己阅读和实践的总结以备忘。 总纲!! 计算机算法的本质是穷举,穷举有两个关键难点:无遗漏、无冗余:遗漏,会直接导致答案出错;冗余,会拖慢算法的运行速度 阅读全文
摘要:
1、摘要 文件或网络间数据Copy(如文件到文件、client到server等)过程的比较: 通常的Copy过程:因为一个文件复制是两次IO调用过程,一次IO调用过程包括数据准备的DMA Copy、数据复制的CPU Copy两个copy过程,包含2次用户态内核态切换(详见 一次IO过程的内部机制-M 阅读全文
摘要:
背景:一个文件内有多条数据记录,每条记录为一行,记录按时间字段升序排序。 需求1:将多个这样的文件合并成一个按时间排序的文件 需求2:将一个按数据记录时间字段排好序的大文件分割成几个小文件 代码: 1 import java.io.BufferedReader; 2 import java.io.B 阅读全文
摘要:
概要: synchronized能保证原子性、可见性、有序性。原理如下: 原子性:synchronized编译后产生字节码指令monitorenter、monitorexit,这两个指令最终对应到JVM底层就是原子操作lock、unlock。 可见性:对一个共享变量执行unlock前先把此变量的值从 阅读全文
摘要:
1、示例 三个角色:RMIService、RMIServer、RMIClient。(RMIServer向RMIService注册Stub、RMIService在RMIClient lookup时向其提供Stub) 服务端编写完后,把服务端的功能接口类给客户端,客户端编写自己的代码即可。(客户端通过向 阅读全文