javaweb icon indicating copy to clipboard operation
javaweb copied to clipboard

http://www1350.github.io/

Results 100 javaweb issues
Sort by recently updated
recently updated
newest added

想刷的清单: 1,2,10,13,15,17,20,23,25,26,28,33,38,43,44,49,50,56,57,67,68,69,71,75,76 78,79,80,85,88,90,91,98,102,117,121,125,127,128,133,139,146,157,158,161 168,173,200,206,208,209,210,211,215,218,221,234,235,236,238,252,253,257 261,265,269,273,274,275,277,278,282,283,285,286,297,301,311,314,325,334 341,377,380,398,404,410,461,477,494,523,525,534,535,543,554 1. Two Sum > 地址:https://leetcode.com/problems/two-sum/description/ > 问题:Given an array of integers, return indices of the two numbers such that they add up to a...

java基础

TreeNode类似一颗红黑树 看下普通treeMap https://juejin.im/post/5a0658f76fb9a04523415a8d 基本结构: ``` static final class TreeNode extends LinkedHashMap.Entry { //父节点 TreeNode parent; // red-black tree links //左右 TreeNode left; TreeNode right; TreeNode prev; // needed to unlink...

java基础

- HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快的查询速度主要是因为它是通过计算散列码来决定存储的位置。HashMap中主要是通过key的hashCode来计算hash值的,只要hashCode相同,计算出来的hash值就一样。如果存储的对象对多了,就有可能不同的对象所算出来的hash值是相同的,这就出现了所谓的hash冲突。学过数据结构的同学都知道,解决hash冲突的方法有很多,HashMap底层是通过链表来解决hash冲突的。 - JDK1.6中HashMap采用的是位桶+链表的方式,即我们常说的散列链表的方式,而JDK1.8中采用的是位桶+链表/红黑树的方式,也是非线程安全的。当某个位桶的链表的长度达到某个阀值的时候,这个链表就将转换成红黑树。也就是说原来如果hash不理想,所有都落入同一个桶就变成的单链表,现在只要大于8个在同一个桶里面,就会转化为红黑树,提升效率。 - 原来jdk1.7中resize是通过链表头插入的,jdk1.8是通过链表尾插入。可能有人会觉得1.7这样会更快,但是这样容易产生hash碰撞。如果它知道我们用的是哈希算法,它可能会发送大量的请求,导致产生严重的哈希碰撞。然后不停的访问这些 key就能显著的影响服务器的性能,这样就形成了一次拒绝服务攻击(DoS) ![image](https://cloud.githubusercontent.com/assets/7789698/18426598/702f1838-78f5-11e6-80ff-47cba88423ed.png) ``` public class HashMap extends AbstractMap implements Map, Cloneable, Serializable{ //默认初始化容量,HashMap容量必须是2的幂次方 static final int DEFAULT_INITIAL_CAPACITY = 1 >> 2; n |= n...

java基础

# netty3.x **入门** ``` java public void run() { // Configure the server. ServerBootstrap bootstrap = new ServerBootstrap( new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // Set up the pipeline factory. bootstrap.setPipelineFactory(new ChannelPipelineFactory()...

nio框架

![image](https://user-images.githubusercontent.com/7789698/29859692-e6762e90-8d95-11e7-8311-ebabbc6f1ad1.png) 解析阶段并不是一定的:Java的运行时绑定(动态绑定)。 初始化: 1.new、getstatic、putstatic、invokestatic这四条字节码指令(new实例化对象、读取或者设置一个静态字段、调用一个类的静态方法) 2. java.lang.reflect反射 3.初始化一个类,父类也初始化。但是一个接口初始化时,并不要求父类接口全部完成初始化,真正使用父接口才会初始化 4.虚拟机启动的时候,主类 5.java.lang.invoke.MethodHandle实例最后解析结果REF_getStatic、REF_putStatic、REF_invokeStatic方法句柄 ``` public class SuperClass { static{ System.out.println("SuperClass init!"); } public static int value = 100; } public class SubClass extends SuperClass{...

java基础

**CAP** > CAP由Eric Brewer在2000年PODC会议上提出[1][2],是Eric Brewer在Inktomi[3]期间研发搜索引擎、分布式web缓存时得出的关于数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)的猜想: - 数据一致性(consistency):如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性(strong consistency) (又叫原子性 atomic、线性一致性 linearizable consistency)[5] - 服务可用性(availability):所有读写请求在一定时间内得到响应,可终止、不会一直等待 - 分区容错性(partition-tolerance):在网络分区的情况下,被分隔的节点仍能正常对外服务 在某时刻如果满足AP,分隔的节点同时对外服务但不能相互通信,将导致状态不一致,即不能满足C;如果满足CP,网络分区的情况下为达成C,请求只能一直等待,即不满足A;如果要满足CA,在一定时间内要达到节点状态一致,要求不能出现网络分区,则不能满足P。 C、A、P三者最多只能满足其中两个,和FLP定理一样,CAP定理也指示了一个不可达的结果(impossibility result)。 在满足分区容错的前提下,没有算法能同时满足数据一致性和服务可用性[11]: P 是必选项,那3选2的选择题不就变成数据一致性(consistency)、服务可用性(availability) 2选1?工程实践中一致性有不同程度,可用性也有不同等级,在保证分区容错性的前提下,放宽约束后可以兼顾一致性和可用性,两者不是非此即彼[12]。 - 序列一致性(sequential consistency)[13]:不要求时序一致,A操作先于B操作,在B操作后如果所有调用端读操作得到A操作的结果,满足序列一致性 - 最终一致性(eventual consistency)[14]:放宽对时间的要求,在被调完成操作响应后的某个时间点,被调多个节点的数据最终达成一致 可用性在CAP定理里指所有读写操作必须要能终止,实际应用中从主调、被调两个不同的视角,可用性具有不同的含义。当P(网络分区)出现时,主调可以只支持读操作,通过牺牲部分可用性达成数据一致。...

编译jdk hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/ cd jdk8u chmod 755 get_source.sh ./get_source.sh brew install llvm brew freetype -XX:+UseCompressedOops 普通对象指针压缩 (默认由虚拟机的Ergonomics机制自动开启) -XX:+HeapDumpOnOutOfMemoryError 虚拟机出现内存溢出异常时Dump当前内存堆转储快照 -XX:HeapDumpPath=java.hprof -XX:+UseSerialGC Serial收集器.新生代收集器。 -XX:+ UseSerialOldGC SerialOld是Serial收集器的老年代收集器版本,它同样是一个单线程收集器 -XX:+UseParNewGC ParNew其实就是Serial收集器的多线程版本.新生代收集器。 -XX:+UseParallelGC 并行垃圾回收器ParallelScavenge.新生代收集器。使用Parallel收集器+...

java基础

使用动态代理的五大步骤 1.通过实现InvocationHandler接口来自定义自己的InvocationHandler; 2.通过Proxy.getProxyClass获得动态代理类 3.通过反射机制获得代理类的构造方法,方法签名为getConstructor(InvocationHandler.class) 4.通过构造函数获得代理对象并将自定义的InvocationHandler实例对象传为参数传入 5.通过代理对象调用目标方法 ``` public interface HelloWorld { void sayHello(String name); } public class HelloWorldImpl implements HelloWorld { @Override public void sayHello(String name) { System.out.println("Hello " +...

java基础

通过spring的asm ``` Method[] methods = CarServiceImpl.class.getMethods(); LocalVariableTableParameterNameDiscoverer local=new LocalVariableTableParameterNameDiscoverer(); String[] params=local.getParameterNames( methods[0]); for(String param: params){ System.out.println(param); } ``` 通过javassist ``` Class clazz = Class.forName("com.absurd.rick.service.impl.CarServiceImpl"); ClassPool pool = ClassPool.getDefault(); CtClass cc...

Spring

# 介绍 Actor 模型由 Carl Hewitt 于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。Actor 的要点包括:Actor 是一个个相互之间独立的实体; Actor 可以通过消息来通信,一个 Actor 收到其他Actor的信息后,可以根据需要作出各种相应反应;消息的类型可以是任意的,消息的内容也可以是任意的;当一个 Actor 收到多个消息时,它先建立一个消息队列,将接收到的消息就放入队列,每次从队列中取出一个消息体进行处理。 Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Actor 模型应用。Akka 使得开发人员可以更轻松地开发具有容错性、可扩展性和跨平台的并发程序,在工业界得到了广泛应用。Akka能够给应用程序带来的几个重要的特性是: - 容错性 - 可伸缩性 - 异步性 - 事件驱动架构(EDA)...