Entry

Java基础知识总结(超级经典)

十年热恋 提交于 2020-10-29 23:26:09
Java基础知识总结(超级经典)   写代码:     1,明确需求。我要做什么?     2,分析思路。我要怎么做?1,2,3。     3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。     4,代码实现。用具体的java语言代码把思路体现出来。   学习新技术的四点:     1,该技术是什么?     2,该技术有什么特点(使用注意):     3,该技术怎么使用。demo     4,该技术什么时候用?test。 —————————————————————————————————————————————————————— 一:java概述:   1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;   1994年将Oak语言更名为Java;   Java的三种技术架构:   JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;   JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;   JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;   1,JDK:Java

ThreadLocal源码分析

六眼飞鱼酱① 提交于 2020-10-29 00:47:38
前言 通过分析threadLocal的源码,来解答问题:threadLocal是如何实现线程隔离的? get方法 public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEntry(this); if (e != null) { @SuppressWarnings("unchecked") T result = (T)e.value; return result; } } return setInitialValue(); } 实际上ThreadLocal中的值是存储在ThreadLocalMap这个类中的。继续进入getMap方法: ThreadLocalMap getMap(Thread t) { return t.threadLocals; } 第一次执行get方法时,还没有ThreadLocalMap实例,进入setInitialValue方法: private T setInitialValue() { T value = initialValue(); Thread t = Thread.currentThread(); ThreadLocalMap map

这 21 个刁钻的 HashMap 面试题,我把阿里面试官吊打了!

戏子无情 提交于 2020-10-28 21:00:58
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 8 分钟。 来自: cnblogs.com/Young111/p/11519952.html?utm_source=gold_browser_extension 1:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。 transient Node < K , V >\ [\] table ; 2:HashMap 的工作原理? HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry接口)实现,HashMap 通过 put & get 方法存储和获取。 存储对象时,将 K/V 键值传给 put() 方法: ①、调用 hash(K) 方法计算 K 的 hash 值,然后结合数组长度,计算得数组下标; ②、调整数组大小(当容器中的元素个数大于 capacity * loadfactor 时,容器会进行扩容resize 为 2n); ③、i.如果 K 的 hash 值在 HashMap 中不存在,则执行插入,若存在,则发生碰撞; ii.如果 K 的 hash 值在 HashMap 中存在,且它们两者 equals 返回 true,则更新键值对; iii. 如果

【17期】什么情况用ArrayList or LinkedList呢?

我与影子孤独终老i 提交于 2020-10-28 17:29:13
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 7 分钟。 来自:网络 ArrayList 和 LinkedList 是 Java 集合框架中用来存储对象引用列表的两个类。ArrayList 和 LinkedList 都实现 List 接口。先对List做一个简单的了解: 列表(list)是元素的有序集合,也称为序列。它提供了基于元素位置的操作,有助于快速访问、添加和删除列表中特定索引位置的元素。List 接口实现了 Collection 和 Iterable 作为父接口。它允许存储重复值和空值,支持通过索引访问元素。 读完这篇文章要搞清楚的问题: ArrayList和LinkedList有什么不同之处?什么时候应该用ArrayList什么时候又该用LinkedList呢? 下面以增加和删除元素为例比较ArrayList和LinkedList的不同之处 增加元素到列表尾端: 在ArrayList中增加元素到队列尾端的代码如下: public boolean add (E e) { ensureCapacity(size+ 1 ); //确保内部数组有足够的空间 elementData[size++]=e; //将元素加入到数组的末尾,完成添加 return true ; } ArrayList中add()方法的性能决定于ensureCapacity()方法

ORA-00001: unique constraint (string.string) violated 违反唯一约束条件(.)

北城以北 提交于 2020-10-28 17:08:47
ORA-00001: unique constraint (string.string) violated ORA-00001: 违反唯一约束条件(.) Cause: An UPDATE or INSERT statement attempted to insert a duplicate key. For Trusted Oracle configured in DBMS MAC mode, you may see this message if a duplicate entry exists at a different level. Action: Either remove the unique restriction or do not insert the key. 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 来源: oschina 链接: https://my.oschina.net/u/4257869/blog/3489349

02PyListObject: 列表对象的扩容机制

丶灬走出姿态 提交于 2020-10-28 14:36:17
list object 可变对象头 ob_item: 指向分配的空间,元素是指针 allocated: 真实容量. Objects/listobjects.c /* Ensure ob_item has room for at least newsize elements, and set * ob_size to newsize. If newsize > ob_size on entry, the content * of the new slots at exit is undefined heap trash; it's the caller's * responsibility to overwrite them with sane values. * The number of allocated elements may grow, shrink, or stay the same. * Failure is impossible if newsize <= self.allocated on entry, although * that partly relies on an assumption that the system realloc() never * fails when passed a number of bytes <= the number

鸿蒙开发初体验

做~自己de王妃 提交于 2020-10-28 12:52:02
关注“ 逆锋起笔 ”领取视频教程 ☞ 程序员进阶必备资源免费送「各种技术! 」 ☜ 来源:https://juejin.im/user/4441682709326958 作者:伤心的猪大肠 2020年9月10号,鸿蒙2.0(HarmonyOS 2.0)系统正式发布,鸿蒙2.0面向应用开发者发布Beta版本,在2020年9月10发布大屏,手表,车机版鸿蒙,2020年12月发布手机版鸿蒙。在2020年9月10日,鸿蒙开源路标面向内存128KB-128MB终端设备;2021年10月,将面向4GB以上所有设备。 / 背景 / 作为一个安卓开发者,能够看到国产的操作系统的发布确实很兴奋,兴奋之余,更想要看看具体是怎么一回事,首先打开官网,看看官网该系统的定义:HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。 对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。该优点在5G这个万物互联的时代具有着巨大的优势。 / 安装DevEco Studio / 接下来下载DevEco

Haproxy

耗尽温柔 提交于 2020-10-28 11:01:25
一、HAProxy的核心功能 负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法 健康检查:支持TCP和HTTP两种健康检查模式 会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持 SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输 HTTP请求重写与重定向 监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控HAProxy的状态 二、HAProxy的关键特性 性能 采用单线程、事件驱动、非阻塞模型,减少上下文切换的消耗,能在1ms内处理数百个请求。并且每个会话只占用数KB的内存。 大量精细的性能优化,如O(1)复杂度的事件检查器、延迟更新技术、Single-buffereing、Zero-copy forwarding等等,这些技术使得HAProxy在中等负载下只占用极低的CPU资源。 HAProxy大量利用操作系统本身的功能特性,使得其在处理请求时能发挥极高的性能,通常情况下,HAProxy自身只占用15%的处理时间,剩余的85

Raft共识算法

此生再无相见时 提交于 2020-10-28 10:40:41
Raft共识算法在分布式系统中是常用的共识算法之一,论文原文 In Search of an Understandable Consensus Algorithm ,作者在论文中指出Poxas共识算法的两大问题,其一是难懂,其二是应用到实际系统存在困难。针对Paxos存在的问题,作者的目的是提出一个易懂的共识算法,论文中有Designing for understandability单独一小节,其中强调Raft必须是一个实用的、安全可用、有效易懂的共识算法。本文描述了Raft共识算法的细节,很多内容描述及引用图片均摘自论文原文。 Raft概述 我们主要分以下三部分对Raft进行讨论: Leader election——a new leader must be chosen when an existing leader fails. (领导人选举) Log replication——the leader must accept log entries from clients and replicate them across the cluster, forcing the other logs to agree with its own.(日志复制) Safety——the key safety property for Raft. (安全性) 正常工作过程中

Java Hashcode

安稳与你 提交于 2020-10-28 06:27:15
哈希值这个应该都听过,并且用于hashMap, hashSet, HashTable.后面对这三个进行详细说明。 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 1 public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。   为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCode方法。 一.hashCode方法的作用 对于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode。在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。   为什么这么说呢?考虑一种情况,当向集合中插入对象时,如何判别在集合中是否已经存在该对象了?(注意:集合中不允许重复的元素存在)   也许大多数人都会想到调用equals方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用equals方法去逐一比较,效率必然是一个问题。此时hashCode方法的作用就体现出来了,当集合要添加新的对象时