- 博客(10)
- 收藏
- 关注
原创 算法_04_前缀和
题号难度掌握LeetCode560middleleetcode724easy原理技巧这个的模板性没有那么强,基本上就是求到数组[0,1,2……i]的和实例leetcode560题目:给定一个整数数组和一个整数 **k,**你需要找到该数组中和为 k 的连续的子数组的个数。输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。解class Solution { p...
2021-08-19 11:06:36
77
1
原创 算法_03_并查集
题号难度掌握leetcode721middle练习leetcode947middle上手学(实列题)原理原理必背模板class UnionFind{ int[] p; public UnionFind(int n){ p=new int[n]; for(int i=0;i<n;i++){ p[i]=i; } } public void uni...
2021-08-18 12:31:39
135
原创 算法_02_单调栈
题号难度掌握leetcode84hardleetcode739middle值得记一下原理如期名,保证栈是单调递增或者单调递减的,比如[1(0),3(1),4(2),2(3),5(4)] ps:这里的括号是对应的index。在保证单调增的时候,栈的变化如下,(栈存index,()里写的是数组对应的值)[0(1)]->[0(1),1(3)]->[0(1),1(3),2(4)]->[0(1),3(2)]->(0(1),3(2),4(5));...
2021-08-16 20:40:16
87
原创 算法_01_分治
题号难度掌握归并排序经典必leetcode 23hard原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uIrokNO0-1628767790753)(.\img.png)]如图所示、分治就是将大问题分成两个小问题再将两个小问题再分,只到能解决为止,然后再然返回结果实例归并排序public class sort { public static void main(String[] args) { ...
2021-08-12 19:30:38
81
原创 JVM_Java并发_05_实现同步的方式:锁和其他方法
一些名词解析互斥同步:一个共享资源在一段时间内只有一个线程共享(1v1)(悲观策略,认为只要不占有这个共享资源,就会出问题)非阻塞同步:先操作,如何没有其他线程争用共享资源,操作成功;出现竞争那再进行补偿措施。(乐观)synchronized关键字关键词:实现互斥同步、悲观锁、非公平锁synchronized实现同步的基础:java中的每个对象都有一个内部锁。内部锁来管理试图进入synchronize方法的线程。public synchronized void method(){ method
2021-08-11 01:13:46
104
原创 JVM_04_线程安全
什么是线程安全?非黑即白的定义说某代码是线程安全的则它必然:1)代码本身封装了所有的必要手段保证线程安全2)调用者无需关系多线程下的调用问题3)无需实现任何措施保证多线程环节下的正确调用java的线程安全按照线程的安全程度来划分为五类1、不可变内容:final保证不可变;如果共享的是个对象,那对象自行保证其行为不会产生任何状态变化。例子:如String,枚举2、绝对线程安全就是上述非黑即白的定义方便理解的例子:java.util.Vector是线程安全的容器但是不是绝对线程安全,在
2021-08-08 02:27:49
106
原创 JVM_02_对象的创建
如图所示,new指令后strep 1:定位类的符号引用说明:到常量池中定位一个类的符号引用,检查这个类是否已被加载、解析、初始化过。没有就进行类加载过程,有就为对象在java堆中分配空间step 2:java堆为对象分配空间分配方式:1)指针碰撞 (垃圾回收器带空间压缩整理使得java堆规整时)2)空闲列表 (垃圾回收器不带空间压缩整理使得java堆不规整时)保证分配过程线程安全:1) 同步处理(一个线程分配时其他线程不分配):实现方式CAS(比较与交换)+失败重试2)如下图所示。在ja.
2021-08-07 21:52:47
76
原创 JVM_03_类的加载过程
类的加载过程step 1 加载:方法区添加访问入口1)获取字节流:通过一个类的全限定名来获取定义此类的二进制字节流;注:没有规矩从某个class文件获得,这里可以从zip获取(jar、war等);从网络获得(web Applet)2)转换字节流结构:将这个字节流代表的静态存储结构传化为方法区的运行时数据结构;3)生成方法区的访问入口:内存生成这个类的java.lang.class对象,作为方法区访问这个类各种数据的访问入口step 2 验证:验证class文件字节流信息符合约束1)文件.
2021-08-07 21:51:37
82
原创 JVM_01_Java内存区域
线程私有程序计术器(内存空间较小):存储内容:当前线程所执行的字节码的行号指令器,用来取下一条要执行的字节码指令。线程执行java方法,计数器记录正在执行的虚拟机字节码;本地方法则为空。注:不会发生OutOfMemoryError虚拟机栈(线程的内存模型):存储内容:如图所示,特别说明,局部变量表存储的编译可知的Java基本类型(int、float等)、对象引用(reference)、returnAddress类型(指向一条字码指令的地址);异常:StackOverflowError.
2021-08-07 01:44:07
91
原创 1.爬山法-随机变异
随机爬山法伪代码图片来源Evolutionary Optimization Algorithms by Dan Simonpython实现随机爬山法求解ackley函数import mathimport random# 适应度函数def f(x): # Ackley函数 d=len(x) a,b,c=20,0.2,2*math.pi sum1,sum2=0,0 for i in range(d): sum1+=x[i]**2
2020-09-02 14:18:41
445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人