摘要: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以 阅读全文
posted @ 2022-08-01 23:30 开源遗迹 阅读(30) 评论(0) 推荐(0)
摘要: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示 阅读全文
posted @ 2022-08-01 23:00 开源遗迹 阅读(26) 评论(0) 推荐(0)
摘要: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2: 阅读全文
posted @ 2022-08-01 22:03 开源遗迹 阅读(33) 评论(0) 推荐(0)
摘要: 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]示例 2: 输入:n = 1, k = 1输出:[ 阅读全文
posted @ 2022-08-01 20:46 开源遗迹 阅读(24) 评论(0) 推荐(0)
摘要: https://www.jianshu.com/p/2b47a3078a46a. git init:使⽤git init初始化⼀个新的⽬录时,会⽣成⼀个.git的⽬录,该⽬录即为本地仓库。⼀个新初始化的本地仓库是这样的:|——HEAD|——branches|——config|—— descripti 阅读全文
posted @ 2022-08-01 18:08 开源遗迹 阅读(63) 评论(0) 推荐(0)
摘要: 1、选择最合适的字段属性:类型、⻓度、是否允许NULL等;尽量把字段设为not null,⼀⾯查询时对⽐是否为null; 2.要尽量避免全表扫描,⾸先应考虑在 where 及 order by 涉及的列上建⽴索引。 3.应尽量避免在 where ⼦句中对字段进⾏ null 值判断、使⽤!= 或 <> 阅读全文
posted @ 2022-08-01 17:44 开源遗迹 阅读(182) 评论(0) 推荐(0)
摘要: a. InnoDB:1. ⽀持事务处理2. ⽀持外键3. ⽀持⾏锁4. 不⽀持FULLTEXT类型的索引(在Mysql5.6已引⼊)5. 不保存表的具体⾏数,扫描表来计算有多少⾏6. 对于AUTO_INCREMENT类型的字段,必须包含只有该字段的索引7. DELETE 表时,是⼀⾏⼀⾏的删除8.  阅读全文
posted @ 2022-08-01 17:39 开源遗迹 阅读(50) 评论(0) 推荐(0)
摘要: 1、Zookeeper:基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来⾃于IBM⽹站)。⼤致思想即为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的⽬录下,⽣成⼀个唯⼀的瞬时有序节点。判断是否获取锁的⽅式很简单,只需要判断有序节点中序号最⼩的⼀ 阅读全文
posted @ 2022-08-01 17:33 开源遗迹 阅读(119) 评论(0) 推荐(0)
摘要: 1. 通过 SpringFactoriesLoader加载 META-INF/spring.factories⽂件,获取并创建SpringApplicationRunListener对象2. 然后由 SpringApplicationRunListener来发出 starting 消息3. 创建参数 阅读全文
posted @ 2022-08-01 17:08 开源遗迹 阅读(1840) 评论(0) 推荐(0)
摘要: 1. 设定堆内存⼤⼩,这是最基本的。 2. -Xms:启动JVM时的堆内存空间。 3. -Xmx:堆内存最⼤限制。 4. 设定新⽣代⼤⼩。 5. 新⽣代不宜太⼩,否则会有⼤量对象涌⼊⽼年代 6. -XX:NewRatio:新⽣代和⽼年代的占⽐。 7. -XX:NewSize:新⽣代空间。 8. -X 阅读全文
posted @ 2022-08-01 16:51 开源遗迹 阅读(116) 评论(0) 推荐(0)
摘要: 1. PC寄存器:a. 每个线程拥有⼀个pc寄存器;b. 指向下⼀条指令的地址。 2. ⽅法区:a. 保存装载的类的元信息:类型的常量池,字段、⽅法信息,⽅法字节码;jdk6时,String等常量信息置于⽅法区,jdk7移到了堆中;b. 通常和永久区(Perm)关联在⼀起; 3. 堆:a. 应⽤系统 阅读全文
posted @ 2022-08-01 16:44 开源遗迹 阅读(53) 评论(0) 推荐(0)
摘要: a. 优点:i. 模块解耦:把模块拆分,使⽤接⼝通信,降低模块之间的耦合度.ii. 项⽬拆分,不同团队负责不同的⼦项⽬:把项⽬拆分成若⼲个⼦项⽬,不同的团队负责不同的⼦项⽬.iii. 提⾼项⽬扩展性:增加功能时只需要再增加⼀个⼦项⽬,调⽤其他系统的接⼝就可以。iv. 分布式部署:可以灵活的进⾏分布式 阅读全文
posted @ 2022-08-01 16:26 开源遗迹 阅读(145) 评论(0) 推荐(0)
摘要: 1. ⼆阶段提交:a. 概念:参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈情报决定各参与者是否要提交操作还是中⽌操作。b. 作⽤:主要保证了分布式事务的原⼦性;第⼀阶段为准备阶段,第⼆阶段为提交阶段 c. 缺点:不仅要锁住参与者的所有资源,⽽且要锁住协调者资源,开销⼤。⼀句话总结就是: 阅读全文
posted @ 2022-08-01 16:20 开源遗迹 阅读(420) 评论(0) 推荐(0)
摘要: a. 区别:传输协议RPC,可以基于TCP协议,也可以基于HTTP协议HTTP,基于HTTP协议传输效率RPC,使⽤⾃定义的TCP协议,可以让请求报⽂体积更⼩,或者使⽤HTTP2协议,也可以很好的减少报⽂的体积,提 ⾼传输效率HTTP,如果是基于HTTP1.1的协议,请求中会包含很多⽆⽤的内容,如果 阅读全文
posted @ 2022-08-01 16:07 开源遗迹 阅读(337) 评论(0) 推荐(0)
摘要: a. 第⼀层缓存:readOnlyCacheMap,本质上是ConcurrentHashMap:这是⼀个JVM的CurrentHashMap只读缓存,这个主要是为了供客户端获取注册信息时使⽤,其缓存更新,依赖于定时器的更新,通过和readWriteCacheMap 的值做对⽐,如果数据不⼀致,则以r 阅读全文
posted @ 2022-08-01 15:54 开源遗迹 阅读(219) 评论(0) 推荐(0)
摘要: 某个服务不可⽤时,各个Eureka Client不能及时的知道,需要1~3个⼼跳周期才能感知,但是,由于基于Netflix的服务调⽤端都会使⽤Hystrix来容错和降级,当服务调⽤不可⽤时Hystrix也能及时感知到,通过熔断机制来降级服务调⽤,因此弥补了基于客户端服务发现的时效性的缺点 阅读全文
posted @ 2022-08-01 15:33 开源遗迹 阅读(207) 评论(0) 推荐(0)
摘要: a. 当⼀个服务实例启动,会将它的ip地址等信息注册到eureka;b. 当a服务调⽤b服务,a服务会通过Ribbon检查本地是否有b服务实例信息的缓存;c. Ribbon会定期从eureka刷新本地缓存。 阅读全文
posted @ 2022-08-01 15:30 开源遗迹 阅读(109) 评论(0) 推荐(0)
摘要: springcloud由以下⼏个核⼼组件构成:Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从⽽知道其他服务在哪⾥Ribbon:服务间发起请求的时候,基于Ribbo 阅读全文
posted @ 2022-08-01 13:39 开源遗迹 阅读(303) 评论(0) 推荐(0)
摘要: 特性 ActiveMQ RabbitMQ RocketMQ kafka 开发语⾔ java erlang java scala 单机吞吐量 万级 万级 10万级 10万级 时效性 ms级 us级 ms级 ms级以内 可⽤性 ⾼(主从架构) ⾼(主从架构) ⾮常⾼(分布式架构) ⾮常⾼(分布式架构) 阅读全文
posted @ 2022-08-01 13:02 开源遗迹 阅读(77) 评论(0) 推荐(0)
摘要: a消息处理过程: b. 四种交换机:i. 直连交换机,Direct exchange:带路由功能的交换机,根据routing_key(消息发送的时候需要指定)直接绑定到队列,⼀个交换机也可以通过过个routing_key绑定多个队列。ii. 扇形交换机,Fanout exchange:⼴播消息。ii 阅读全文
posted @ 2022-08-01 12:51 开源遗迹 阅读(74) 评论(0) 推荐(0)
摘要: 1、虚拟机:我们传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有⾃⼰的操作系统,虚拟机⼀旦被开启,预分配给他的资源将全部被占⽤。,每⼀个虚拟机包括应⽤,必要的⼆进制和库,以及⼀个完整的⽤户操作系统。2、Docker:容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。容器包 阅读全文
posted @ 2022-08-01 12:45 开源遗迹 阅读(3777) 评论(0) 推荐(0)
摘要: a. explain select语句;b. 当只要⼀条数据时使⽤limit 1;c. 为搜索字段建索引;d. 避免select *;e. 字段尽量使⽤not null;f. 垂直分割;g. 拆分⼤的delete和insert语句:delete和insert会锁表;h. 分表分库分区。 阅读全文
posted @ 2022-08-01 12:31 开源遗迹 阅读(33) 评论(0) 推荐(0)
摘要: a. RDB:快照形式是直接把内存中的数据保存到⼀个 dump ⽂件中,定时保存,保存策略。(会丢数据) b. AOF:把所有的对Redis的服务器进⾏修改的命令都存到⼀个⽂件⾥,命令的集合。(影响性能) 阅读全文
posted @ 2022-08-01 12:27 开源遗迹 阅读(34) 评论(0) 推荐(0)
摘要: a. 更多的数据结构; b. 可持久化; c. 计数器; d. 发布-订阅功能; e. 事务功能; f. 过期回调功能; g. 队列功能; h. 排序、聚合查询功能 阅读全文
posted @ 2022-08-01 12:21 开源遗迹 阅读(34) 评论(0) 推荐(0)
摘要: 特点: 1)代码量少且代码末尾没有分号; 2)空类型安全(编译期处理了各种 null 情况,避免执行时异常); 3)函数式的,可使用 lambda 表达式; 4)可扩展方法(可扩展任意类的属性); 5)互操作性强,可以在一个项目中使用 kotlin 和 java 两种语言混合开发; 阅读全文
posted @ 2022-08-01 12:12 开源遗迹 阅读(38) 评论(0) 推荐(0)
摘要: 序列化:将一个对象转换成可存储或可传输的状态,序列化后的对象可以在网络上传输,也可以存储到本地,或实现跨进程传输; 为什么要进行序列化:开发过程中,我们需要将对象的引用传给其他 activity 或 fragment使用时,需要将这些对象放到一个 Intent 或 Bundle 中,再进行传递,而  阅读全文
posted @ 2022-08-01 12:00 开源遗迹 阅读(185) 评论(0) 推荐(0)
摘要: final:变量、类、方法的修饰符,被 final 修饰的类不能被继承,变量或方法被 final 修饰则不能被修改和重写。 finally:异常处理时提供 finally 块来执行清除操作,不管有没有异常抛出,此处代码都会被执行。如果 try 语句块中包含 return 语句,finally 语句块 阅读全文
posted @ 2022-08-01 11:31 开源遗迹 阅读(47) 评论(0) 推荐(0)
摘要: 进程:具有一定独立功能的程序,是系统进行资源分配和调度运行的基本单位。 线程:进程的一个实体,是 CPU 调度的基本单位,也是进程中执行运算的最小单位,即执行处理机调度的基本单位,如果把进程理解为逻辑上操作系统所完成的任务,线程则表示完成该任务的许多可能的子任务之一。 关系:一个进程可有多个线程,至 阅读全文
posted @ 2022-08-01 11:27 开源遗迹 阅读(37) 评论(0) 推荐(0)
摘要: <? extends T>限定参数类型的上界,参数类型必须是 T 或 T 的子类型,但对于 List<?extends T>,不能通过 add()来加入元素,因为不知道<? extends T>是 T 的哪一种子类; <? super T>限定参数类型的下界,参数类型必须是 T 或 T 的父类型,不 阅读全文
posted @ 2022-08-01 11:18 开源遗迹 阅读(79) 评论(0) 推荐(0)
摘要: 抽象类意义 抽象类是用来提供子类的通用性,用来创建继承层级里子类的模板,减少代码编写,有利于代码规范化。 接口意义 1)有利于代码的规范,对于大型项目,对一些接口进行定义,可以给开发人员一个清晰的指示,防止开发人员随意命名和代码混乱,影响开发效率。 2)有利于代码维护和扩展,当前类不能满足要求时,不 阅读全文
posted @ 2022-08-01 11:07 开源遗迹 阅读(123) 评论(0) 推荐(0)
摘要: 抽象类在类前面须用 abstract 关键字修饰,一般至少包含一个抽象方法,抽象方法指只有声明,用关键字 abstract 修饰,没有具体的实现的方法。因抽象类中含有无具体实现的方法,固不能用抽象类创建对象。当然如果只是用 abstract 修饰类而无具体实现,也是抽象 类。抽象类也可以有成员变量和 阅读全文
posted @ 2022-08-01 10:55 开源遗迹 阅读(89) 评论(0) 推荐(0)
摘要: 内部类指在类的内部再定义另一个类。内部类的作用:1)实现多重继承,因为 java 中类的继承只能单继承,使用内部类可达到多重继承; 2)内部类可以很好的实现隐藏,一般非内部类,不允许有 private 或 protected权限的,但内部类可以; 3)减少了类文件编译后产生的字节码文件大小; 内部类 阅读全文
posted @ 2022-08-01 10:40 开源遗迹 阅读(1707) 评论(0) 推荐(0)
摘要: 都是字符串类,String 类中使用字符数组保存字符串,因有 final 修饰符,String 对象是不可变的,每次对 String 操作都会生成新的 String 对象,这样效率低,且浪费内存空间。但线程安全。 StringBuilder 和 StringBuffer 也是使用字符数组保存字符,但 阅读全文
posted @ 2022-08-01 10:27 开源遗迹 阅读(39) 评论(0) 推荐(0)
摘要: 1)==若是基本数据类型比较,是比较值,若是引用类型,则比较的是他们在内存中的存放地址。对象是存放在堆中,栈中存放的对象的引用,所以==是对栈中的值进行比较,若返回 true 代表变量的内存地址相等; 2)equals 是 Object 类中的方法,Object 类的 equals 方法用于判断对象 阅读全文
posted @ 2022-08-01 10:14 开源遗迹 阅读(121) 评论(0) 推荐(0)