自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 virtualbox配置ubuntu1804虚拟机相关流程

virtualbox配置ubuntu1804虚拟机相关流程

2023-09-17 19:58:18 332

原创 VHDL语法相关

一、实体、结构体以下内容对应《VHDL入门.解惑.经典实例.经验总结》第二章。实体(entity)定义输入输出接口,结构体(architecture)描述内部功能。一个实体可以对应很多个结构体,但同一时间只能有一个结构体被使用。实体名必须与文件名相同。实体声明格式如下:端口方向种类如下:结构体语法如下:二、数据类型、数据对象、运算符VHDL是强类型语言,只有同类型的变量、信号之间才能相互赋值。VHDL数据类型如下:VHDL中,数据

2022-05-11 16:09:50 1271

原创 Xilinx AXI4 相关

正点原子相关视频地址。相关PDF:ug1037-vivado-axi-reference-guide.pdf、IHI0022H_c_amba_axi_protocol_spec.pdf。AXI描述了主从设备间通信的协议。接口组成:分别对应写地址(aw)、写数据(w)、写响应(b)、读地址(ar)、读数据(r)。每个独立的通道都包含一组信息信号以及VALID、READY信号。读数据通道传输读数据以及读响应信息,写数据通道传输写数据以及频闪信号。...

2022-03-26 15:00:44 438

原创 反转链表、递归、迭代

首先是经典的LeetCode206,反转整个链表。解法可分为迭代、递归两种方式。而递归解法,根据返回函数的先后顺序(即处理当前递归栈与下一递归栈的先后顺序),又可分为top-down,bottom-up两种方式。本题十分经典,仔细体会,可以加深对迭代、递归的理解。public ListNode reverseList(ListNode head) { // return iterateSolution(head); // return recursionTopDownSolution(..

2021-08-06 16:06:52 151

原创 LeetCode_String to Integer (atoi)

LeetCode第8题,字符串转整型。为什么不用一个大循环而选择用分段式的小循环?合法字符串的格式是分段式的,但问题是,我们不知道实际的字符串的各个段长度为多少(无法定界)。若使用一个大循环轮询处理,需要额外的状态变量与判断语句决定当前状态,代码逻辑会变得更加复杂。如何进行溢出判断?这个问题是写本文的主要动机,我们可以很直接的得到一个可读性很高的、同时也是高赞答案采用的方式:if(total>Integer.MAX_VALUE/10 || (total==Integer

2021-07-03 16:02:55 86

原创 算法心得-未完待续

处理有序数组时,先考虑双指针(对撞指针,快慢指针)。形参引用类型,先考虑形参是否为 null 吧。接2,迭代链表时,不要随便就 cur.next.next,你考虑过 cur.next 是null吗?接3,如果不想考虑 null,可以试着新维护两个头、尾结点。能用 for 别用 while。接5,头铁非要用 while,别在结束循环判定条件里更新控制变量!!!不简洁但一眼就能看明白的代码,要优于那些形式上简洁但不直观的(不要为了简洁优雅而耗费时间,有那功夫想想性能咋提高吧)。...

2021-06-05 12:04:07 103 2

原创 JAVA——健忘年轻人笔记

类内若未定义构造函数,编译器会隐式定义默认构造函数(是一个无参构造函数),来调用父类无参构造函数,若此时父类无对应函数,则报错。若无父类,则其隐式继承自 Object 类,该类有无参构造函数(隐式塞个父亲???hardcore)。JAVA中,对象、数组都是引用类型,一经初始化赋值就无法再改变。new 关键字实例化一个类(按类定义分配一份内存),并返回内存地址的引用,同时,调用构造函数。...

2021-06-05 12:01:16 222

原创 Spring实战——阅读笔记-未完待续

Spring框架的出现是为了简化Java开发。系统——模块——搭积木。Spring是一种关系、纽带。IoC(控制反转):将创建对象的内部工作转移给外部框架,被动接受框架分配的实例对象,使其与内部引用建立连接关系(DI,依赖注入)。Spring在这里可以看作是一个尽职尽责的保姆(或者说粘合剂),我们将需求(接口)告诉它,它自动给我们装上符合条件的实例对象。通过增加框架这个中间层,对象间的耦合性得到降低。同时,开放接口的做法提升了代码的泛化性、灵活性,并使其更易于维护。有了Sprin..

2021-06-05 11:57:49 102

原创 JavaGuide-RPC框架项目学习笔记-未完待续

首先,根据作者的教程以及POM文件查看项目依赖关系。由于对mave不熟悉,即使理清了依赖关系,对应打了jar包,编译时也报了错。后来发现是因为没有将包instal到本地仓库,导致不可见。(关键词:maven生命周期)参考资料:Idea操作Maven超级详细使用 基础篇。Idea操作Maven超级详细使用 高级篇。MAVEN01_概述+核心概念+IDEA中如何使用(创建项目)。MAVEN02_依赖范围+依赖冲突+解决冲突+继承聚合。...

2021-06-05 11:47:47 2214

原创 Java8部分集合类、接口API总结

API得背熟!!!interface Collection < E >:int size(),boolean isEmpty()boolean add(E e),boolean remove(Object o),Object[] toArray()interface List< E >,Queue< E >,Set< E >继承Collection< E >,存储单值元素;而interface Map< K,V &gt..

2021-05-30 17:05:23 192

原创 ThreadLocal部分源码解析

线程局部变量提供类,ThreadLocal< T >,简单说,对于某个变量(对象),为每个线程维护一个自己的独立副本。ThreadLocal定义了内部静态类ThreadLocalMap,而Thread类内维护了一个ThreadLocalMap类型的成员变量:threadLocals/* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */..

2021-05-27 21:32:34 254

原创 Git学习日记

Chapter 1版本控制(VCS):记录文件内容变化,便于未来查阅特定版本修订情况的系统。集中式VCS:单一服务器集中保存版本信息。单点故障。分布式VCS(distributed VCS):客户端不光保存最新的版本快照,还将整个版本库(包括历史记录)完整镜像下来。Git直接记录快照,而非文件差异。(联合上一条一起看,是否意味着Git只适用于小型项目?)Git索引文件用文件内容的哈希值(sha-1)。3+1个区域:工作区(working directory):在此处进行修改,modifie

2021-05-03 21:00:28 93

原创 从单例模式到并发编程、volatile

单例模式:一个只能创建一个对象的类。饿汉式,直接在内部创建好对象,需要时return,优点是需要时直接就能获取对象,且并发安全,缺点是如果一直不需要的话,会造成资源浪费:public class test { private static test aInstance = new test(); private test(){} public static test getInstance(){ return aInstance; } }..

2021-04-22 22:21:48 106

原创 HashMap部分源码剖析

笔者所用JDK为 RedHat 的 OpenJDK-8u282-win64 版。HashMap,存放键-值对(Key-Value)数据,可根据键生成的哈希值快速查找对应值,数组加链表实现(拉链法解决哈希冲突,此外,元素过多时链表会转为红黑树)。允许null作为Key或Value。所储存键值对数据无序(若要求有序可用TreeMap)。线程不安全(若要求线程安全可用ConcurrentHashMap),fail-fast(modCount成员保证)。capacity:数组的长度,默认值是16,最大可

2021-04-12 21:07:14 146 2

原创 JDK动态代理源码解析——Proxy、WeakCache、ProxyGenerator

JDK版本为RedHat OpenJDK 1.8.0_282。JDK中的动态代理Proxy类仅限于方法拦截,且只能代理实现了接口的对象。调用Proxy的静态方法创建——继承了Proxy类的代理类(java只支持单继承,这就是为什么要求被代理类必须实现接口),通过该代理类的构造器创建对应代理对象,该对象实现了被代理类的接口,仅起到接口的作用。代理类对象内持有一个——实现了InvocationHandler接口的对象(我们称它为中间对象吧)的引用,中间对象又持有一个被代理对象的引用。中间对..

2021-04-03 22:21:54 416

原创 LeetCode_Partition Equal Subset Sum

416题,给定某无序数组,判断其是否能被分成总和相等的两个子集。此问题可转换成:判断其是否能恰好凑出原数组总和的一半,即 0/1 背包问题。那么可以由此引出两个优化点:若想能凑出,则原数组总和必为偶数,且数组内最大元素不能大于原数组总和一半。此外便是常规的二维数组压缩至一维的dp套路:class Solution { public boolean canPartition(int[] nums) { int sum = 0; int max = 0;..

2021-03-28 10:04:34 67

原创 LeetCode_Next Permutation

字典序全排列问题,该系列的核心问题是,如何从一个字典序的排列生成下一个最小排列。例如,12543 的下一个最小排列是,13245。我们可以这么考虑,排列从左到右的每个数位,对应不同的权重。其中,最左边的权重最大,最右的权重最小(右至左如同个、十、百、千…);而给定的数字,如同砝码。那么这个问题翻译过来就是,生成下一个总重量大于当前重量的排列,且该排列在所有可能的结果中,总重量最小(说白了就是重一点意思一下得了)。那么,给定数字 1 2 3 4 5,它的所有排列中,最小的、最大的分别是什么?这..

2021-03-22 19:48:08 106

原创 ArrayDeque部分源码剖析

笔者所用JDK为RedHat的OpenJDK 8u282 win64版。简介ArrayDeque,数组实现的双端队列。核心思想是维护头尾指针,将数组变为循环数组,由于没有固定的起始参考量(头指针可动),故无法按索引取值。但是,相比于...

2021-03-19 19:53:15 106

原创 二分查找——一网打尽所有细节!

二分查找,典中典的算法,笔者先写下经典实现。代码如下:参考资料:详解二分查找算法。

2021-03-15 22:04:28 62

原创 JAVA除2与右移

起因是二分查找取mid值时,是这么写的int mid = lef + (rig-mid)/2;但还有兄弟抠细节,将 除2 换成 右移,因为位运算快。。。int mid = lef + (rig-mid)>>1;抛开效率不谈,除2 和 右移 一样吗?笔者搜索了一番,得出结论:对于负奇数而言,如-3,除2得到 -1,而右移则得到 -2。除此之外,除2 和 右移 结果是一致的。原因:奇数除2会得到小数,赋给 int 类型时,只保留整数部分,因此,无论正数还是负数,除..

2021-03-14 18:52:53 1394

原创 快速排序——凑活能用版

快速排序是排序的经典算法,具体思路很简单,但实现起来并非那么容易!如果使用最直观的双指针法,总会遇到神奇的问题:low<high 还是 low<=high?!(我纠结一天了真的整不明白orz…)所以为了珍爱生命,以后就用挖坑填数法吧。。。代码如下:import java.util.Arrays;public class QuickSort { public static void sort(int[] input, int low, int high){ ..

2021-03-14 15:37:22 78

原创 LeetCode_The Skyline Problem

自己的一开始的想法将 x 轴抽象成一个数组,然后遍历一次建筑群,每遇到新一个建筑,就更新对应的子数组高度。最后将整个数组再遍历一次即可。这个思路很简单,但是存在一个问题,就是维护的数组长度,与建筑群的总占地宽度与要求的输出精度相关,这样在极端条件下,可能会造成很大的空间浪费。同时,这种做法在最后遍历数组时,我们可以发现,有大量的重复数组值是无用的。后来看了下评论区和网上的资料,得到一个比较好的方案。仔细观察可以发现:天际线的 key point 由建筑的边界构成。而建筑之间经常会有覆盖现象,..

2021-03-04 15:55:25 82 1

原创 LeetCode_Construct Binary Tree from Inorder and Postorder Traversal

给定二叉树中序、后序遍历结果,构建二叉树。后序的最后一个结点必为根节点。对于后序的最后一个结点而言,中序遍历结果中,位于它左边的是它的左子树,位于它右边的是它的右子树。由 2 可得基本递归思路一:不断利用后序最后一个节点将中序结果分割,自底向上递归建立左右子树即可。此时,由于要在中序结果中寻找后序最后结点,故要么每次都循环遍历(时间代价),要么提前建立一个哈希表(空间代价)作为参数。本文的重点是第二种递归思路,既不循环也不需要哈希表。代码如下:int pInorder; // index o

2021-02-03 15:56:42 139

原创 浅谈迭代(非递归)遍历二叉树

不管是迭代遍历还是递归遍历,二叉树遍历都只做了三件事:处理左子树,处理右子树,处理当前结点。依据处理当前结点的时机不同,可分为:先序、中序、后序三种遍历方式。二叉树迭代遍历的主要难点在于:如何在处理完子树后,返回父结点。常用思路是利用栈先入后出的特性。

2021-01-23 17:24:16 274 1

原创 经典算法题——寻找质数

本题也算是老生常谈了,给定一个数,输出小于该数的素数个数。暴力解法是遍历。当然,主要想说的是其优化方法。素数,即仅能被拆分成1与自身二数乘积的数。若有其它的拆解方法,则为合数。考虑拆分成乘积时,总是一个大数乘小数,那么我们并不需要遍历所有,仅需将范围限定在开根号后的范围内。合数总能拆解为两个素数之积(算数基本定理),故反向思考下,可以不用遍历除的方式判定,而是先将2的倍数筛去(必为合数),之后,3未被筛去,说明小于3的所有数都无法整除3,则3为素数,再将3的倍数筛去,如此循环往复,依次筛去剩余数

2020-12-28 20:50:11 384

原创 LeetCode_TwoSum

LeetCode题目TwoSum直接双重循环暴力解决,时间On2O_{n^2}On2​,空间O1O_{1}O1​。每次都要遍历查找,因此可以通过空间换时间,缩短查找的时间开销,先遍历一次建立散列表(HashMap),再遍历一次利用散列表查找,时间OnO_{n}On​,空间OnO_{n}On​。(此外还有HashTable,HashSet)public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map

2020-12-28 19:46:45 67

原创 算法——快慢指针迷思

今天学了快慢指针算法,思想很简单,不过有个困扰点:为什么两个指针一定会在某时刻相遇?我当然知道追及问题,问题是这里不是连续移动直至经过(或追及),指针的移动方式是离散的,如何保证两指针一定会恰好在某个结点相遇?具体的例子:快指针4,慢指针2,环路长4,假定两指针并非同起点出发(为了说明问题假设有此条件),快指针在环路起点时,慢指针恰在前一个位置。入环后,快指针速度恰等于环路长,故原地不动;而慢指针,恰在快指针左右来回摇摆,不得相遇。在网上搜索了下,找到了满意的答案。简单来讲,由于两指针.

2020-12-23 22:25:45 139

原创 JAVA——官方lambda表达式经典教程

本文内容针对于oracle的JAVA教程中,lambda表达式章节。教程围绕“ 如何从 输出所有大于某年龄的职工信息,到 针对性筛选对象并提取信息的通用性函数” 而展开,阅读完整个教程不光能学习到lambda表达式的用法,还可深入体会到所谓 抽象、泛化 的概念。最直接简单的实现如下,代码思路很简单,依次遍历表中所有职工,逐个判断年龄,符合条件则输出。这里有一个特殊遍历方法,python里也有类似的概念。由于List是Iterable的子类,故可使用For-Each Loop。public s

2020-12-02 20:27:00 207

原创 电子科技大学——离散数学

P1一组不重复的对象构成集合(set),每对象称为元素(element)。集合中的元素是无序的,打乱某集合的元素顺序,并不能构成新集合。{1,2,3,2,4} = {4,1,2,3}N自然数集合,Z整数集合,Q有理数集合,R实数集合。集合A中的元素个数成为集合的基数(base number),基数有限则称为有限集(finite set),否则称为无限集(infinite set)。A={a,b,c},|A|=3; B={a,{b,c}},|B|=2全集(universal set),记作 U

2020-09-28 20:27:32 1603

原创 C语言参数传递——地址传递与值传递

以经典的交换变量函数 swap(a,b) 为例,说明地址传递与值传递的区别。值传递:函数的形参变量与实参变量,是两个完全无关的变量,函数在被调用时,创建形参,将实参的值复制过来(替身)。形参本身在函数调用结束后会被销毁(除形参外,static关键字可以使函数内部的变量在调用结束时避免被销毁)。 除非函数内部有 return 语句将更新后的值再传递出去,否则函数内部进行过的逻辑于外部而言无意义。 地址传递:通过将实参地址传递给函数,并在函数内部通过地址调用实参,可以实现对实参的直接控制。 进.

2020-09-20 11:43:15 5125 3

原创 Pytorch中torch.nn.ConvTranspose2d函数详解

原理ConvTranspose,即反卷积,通过卷积的形式,利用图像特征“恢复”到原图像。当然,此处卷积核的权重参数与前面下采样卷积核的参数互相独立,且可更新。也就是说“反”卷积不是之前的逆过程,无法保证完全恢复。事实上,反卷积仅仅保留了特征与前级特征,点之间的对应关系。代码详解简明起见,引入“正卷积”概念,意指从低级特征到高级特征的过程。ConvTranspos...

2019-10-11 19:23:35 9892

原创 老板,来一斤BUG!——Python

2019/3/3:Python中的列表赋值:import copydef ID(x): id_x = [id(i) for i in x] id_x.insert(0, id(x)) print(x, id_x) return id_x# print(id(1))a = [1, [2, 3]] # 创建 列表list,将其前两指向,分别...

2019-03-03 13:50:25 189

原创 老板,来一斤BUG!——Numpy

2019/3/1:numpy的创建数组的各种方法中numpy.arange( int )创建的数据格式为 int32;numpy.full( int,int )创建的数据格式为 int32,numpy.full( int,float )创建的数据格式为 float64;其余的如:ones,zeros,empty,eye,linspace( ep: np.linspace(1,6,6...

2019-03-03 13:50:04 151

原创 老板,来一斤BUG!——Pytorch

2019/2/28:torch.Tensor是默认的tensor类型(torch.FloatTensor)的简称。也就是float、float32。pytorch的权重weight,若未手动修改,默认格式一定是float32,不会随输入的格式而自适应更改。问题在于,在pytorch中,要进行wx+b,w与x的数据格式要一致!!!最后,如果要进行反向传播更新参数,那么权重weight...

2019-02-28 16:32:16 176

原创 关于enumerate遍历的问题

import numpy as npa=np.arange(10).tolist()# a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]for index,ele in enumerate(a): a.remove(ele)# a=[1,3,5,7,9]该代码不会将列表a的所有元素删除。当index=0,ele=0时,删除首元素0,此时列表元素次序变...

2019-02-27 11:46:50 357

原创 Pytorch中torch.nn.Conv3D、torch.nn.Conv2D函数详解

import torchimport torch.nn as nnimport numpy as npfrom torch.autograd import Variablex = torch.Tensor([1,10,100,1000,10000,100000]).view(1,2,-1,1,1)# view()函数用来reshape,-1参数意为自动设置,此处计算得6# Conv...

2019-02-20 20:56:41 28177 1

原创 sublime text3编程,CMD中文乱码

将Sublime text3配置成为简易C++开发工具后,运行.cpp文件发现中文乱码。之前下载了ST3的插件ConvertToUTF8使得ST3支持GBK,在新建的编译系统BUILD文件里加上对应指令也没有效果最后得知ST3不支持GBK,默认为UTF-8,而WIN10 CMD默认GBK编码。故修改注册表,将WIN10 CMD的默认编码改为UTF-8,同时令ST3的编码格式设为UTF-...

2018-10-13 11:01:49 1017

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除