自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ubuntu1604安装及问题解决

使用virtualbox安装ubuntu,安装完后打不开terminal。ctrl+shift+F1打开命令行:输入root和密码。

2024-01-24 11:09:14 550

原创 金士顿u盘写保护解决

我的主控型号就是IS918M_GA - F/W 13008SE39_4G6002。在文件资源管理器打开u盘时,资源管理器会闪退,通过删除u盘当前卷新建卷后解决。打开“设定”进行配置,我选择的是低阶格式化(高阶容易出错)量产完后u盘从128G变成了65G可用。改注册表、使用命令行无用,无法格式化。

2023-12-11 13:09:51 931 3

原创 python虚拟环境离线安装

需要库python3.5+numpy1.16.1+h5py2.10.0+cython0.29.15+open3d-python0.3.0+pandas0.25.3+scikit-learn0.21.3+scipy1.4.1+PyYAML5.4。LINK : fatal error LNK1158: 无法运行“rc.exe”方法2:在联网电脑上安装打包后在离线电脑上解压。2、离线电脑:虚拟环境安装。

2023-12-08 15:05:33 521

原创 vector高效删除

1、使用erase:每次删除都要移动后面的元素。4、运行时间比:630:1:2.5。2、使用remove_if。

2023-08-20 15:30:34 393

原创 remove、remove_if、remove_copy、remove_copy_if

remove_copy和remove_copy_if会把pass的元素保存在目标迭代器,而不是直接在原始数据上修改。remove_copy_if(b,e,r,p) //[b,e) 删p条件,结果存入r。remove_copy(b,e,r,v) //[b,e) 删v,结果存入r。remove(b,e,v) //[b,e) 删value。remove和remove_if结果相同,只是传入的条件不一样。remove_if(b,e,p) //[b,e) 删p条件。

2023-08-19 17:40:25 188

原创 pcl欧式聚类

用KD-Tree找到离他最近的n个点,判断这n个点到。4、当Q再也不能有新点加入了,则完成搜索了。将距离小于阈值r的点。找到一点,重复步骤1,找到。

2023-08-19 15:17:25 334

原创 RANSAC算法

RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有“外点”(outliers)的数据中正确估计数学模型参数的迭代算法。“外点”一般指的的数据中的噪声,比如说匹配中的误匹配和估计曲线中的离群点。所以,RANSAC也是一种“外点”检测算法。RANSAC算法是一种不确定算法,它只能在一种概率下产生结果,并且这个概率会随着迭代次数的增加而加大。内群”(inlier, 即正常数据)数据可以通过几组模型的参数来叙述其分布,而“离群。

2023-08-14 19:53:42 226

原创 gurobi安装&vs配置gurobi

4、GENERATE NOW会生成,打开cmd进入gurobi安装路径(如F:\gurobi1001\win64\bin>),输入grbgetkey。online course可以免ip验证。gurobi安装&vs配置gurobi。

2023-07-19 11:03:31 1583

原创 数据集汇总

1、包含数据集modelnet10、modelnet40:airplane、car、door、desk、guitar等。2、ShpaeNet是中一个比较常见的数据集,它能够完成部件分割任务,它总共包括十六个大的类别。包含数据集:ShapeNetCore:ShapeNet数据集的一个子集,干净的3D模型,经过手动验证的分类和注释标签。它涵盖55个常见对象类别,约51300个独特的3D模型。ShapeNetSem:一个更小、注释更密集的子集,由12000个模型组成,分布在更广泛的270个类别中。

2023-07-18 14:40:43 821

原创 点云重建总结

几何处理:是一种计算的方法研究世界中的物理对象,通过硬件扫描生成物理对象的三维模型然后做各种处理和分析。三维视觉:传统的3D视觉是指从图像中恢复底层的三维结构。

2023-05-22 09:53:38 3128

原创 点云法线计算原理

点云数据只是一种基本的、对物理目标三维结构的理解形式,一般无法直接使用。从点云重建网格模型的关键是从离散点构造出拓扑连接关系。确定表面一点法线的问题近似于估计表面的一个相切面法线的问题,因此转换过来以后就变成一个最小二乘法平面拟合估计问题。对一个平面来说,可以使用法线方式表示一个平面,则我们的目标就是求最小特征值对应的特征向量。对于点云来说,法线是很重要的一个属性。特征值对应的特征向量。

2023-05-16 11:08:01 663

原创 C语言实现继承多态

使用虚函数实现:我们知道的是在C++中会维护一张虚函数表,根据赋值兼容规则,我们知道父类的指针或者引用是可以指向子类对象的。如果一个父类的指针或者引用调用父类的虚函数则该父类的指针会在自己的虚函数表中查找自己的函数地址,如果该父类对象的指针或者引用指向的是子类的对象,而且该子类已经重写了父类的虚函数,则该指针会调用子类的已经重写的虚函数。对于封装来说就是数据与具体操作实现的代码都放在某个对象的内部,使这些代码的具体细节不被外界发现,只留下一些接口供外部来使用,而不能一任何的形式来对象内部的实现。

2023-02-09 14:48:21 425

原创 Linux Workqueue

1、前言Workqueue 是内核里面很重要的一个机制,特别是内核驱动,一般的小型任务 (work) 都不会自己起一个线程来处理,而是扔到 Workqueue 中处理。Workqueue 的主要工作就是用进程上下文来处理内核中大量的小任务。所以 Workqueue 的主要设计思想:一个是并行,多个 work 不要相互阻塞;另外一个是节省资源,多个 work 尽量共享资源 ( 进程、调度、内存 ),不要造成系统过多的资源浪费。为了实现的设计思想,workqueue 的设计实现也更新了很多版本。

2023-01-30 15:03:07 523

原创 Linux网络收包过程

当用户执行完 recvfrom 调用后,用户进程就通过系统调用进行到内核态工作了。如果接收队列没有数据,进程就进入睡眠状态被操作系统挂起。剩下大部分都是由 Linux 内核其它模块来完成。首先在开始收包之前,Linux 要做许多的准备工作:创建 ksoftirqd 线程,为它设置好它自己的线程函数,以便后面处理软中断。协议栈注册,linux 要实现许多协议,比如 arp,icmp,ip,udp,tcp,每一个协议都会将自己的处理函数注册一下,方便包来了迅速找到对应的处理函数。

2022-12-30 14:27:26 2767 1

原创 NAPI简介

如果此时有数据到达,则没必要再触发中断了,因为中断处理函数中会轮询处理数据,直到没有新数据时才打开中断。后续 net_rx_action 会处理报文,如果报文处理完了,就回调用napi_complete,此时会将状态设置位非调度状态,同时enable 网卡中断。非NAPI使用共享的CPU队列softnet_data->input_pkt_queue,NAPI使用设备内存或者驱动程序的接受环。非NAPI的内核接口为netif_rx(),NAPI的内核接口为napi_schedule()。

2022-12-30 14:05:36 1483

原创 linux timer浅析

相反,在支持 NO_HZ模式时,CPU 如果处于空闲状态,是不会收到任何Tick的,在这段时间内对应CPU的timer_base结构体中的clk就肯定不会得到 更新,因此需要调用该函数来补。夹在中间的一些位到真的是一些标志位。每一级的64个桶的检查粒度是一样的,而不同级内的桶之间检查的粒度不同,级数越小,检查粒度越细。也就是第0级内64个桶中存放的所有定时器每个Tick都会检查,第1级内64个桶中存放的所有定时器每8个Tick才会检查,第2级内64个桶中存放的所有定时器每64个Tick才会检查,以此类推。

2022-12-10 11:27:56 873

原创 platform驱动框架梳理

最后将device_node链表赋给of_root,即of_root代表所有的device_node的root,通过它,可以遍历所有的device_node。从start_kernel开始是找不到platform device这一部分转换的源头的,这个转换过程的函数是of_platform_default_populate_init(),它被调用的方式是一个声明:arch_initcall_sync(of_platform_default_populate_init);但这种方式应该很少见了。

2022-11-30 17:48:17 1160

转载 linux内核中设备中断

找到interrupt controller对应的irq domain,对于i2c来说,其对应的中断控制器为gic。通过匹配irq_domain_list中的fwnode参数来找当前终端控制器对应的domain, 那么domain又是在什么时候加入irq_domain_list中的呢。参考:https://blog.csdn.net/pandy_gao/article/details/79309712。1.3 找到gic终端控制器对应的domain之后,进行map, 将硬件中断号转化为软件中断号。

2022-11-23 10:25:26 675

原创 regmap

regmap 是在 Linux 3.1 加入进来的特性,其最初的目的是减少i2c/spi等设备驱动里的重复逻辑,提供一种通用的接口来操作芯片内寄存器,随着版本的更迭,regmap 支持的bus越来越多,并且除了能做到统一的 寄存器I/O 接口,还可以在驱动和硬件 IC 之间做一层缓存,从而能减少底层 I/O 的操作次数。作者:老吴的嵌入式之旅参考链接:https://www.jianshu.com/p/600a3a4c78e9。

2022-11-13 14:24:10 777

原创 U_BOOT_DRIVER简析

board_init_r是uboot重定位后需要执行的流程,它包含基础模块、硬件驱动以及板级特性等的初始化,并最终通过run_main_loop启动os会进入命令行窗口。使用U_BOOT_DRIVER宏都会指向u_boot_list_2_xx段,展开后,相当于定义了一个struct driver类型的变量。1、board_init_f和board_init_r(uboot/common/board_r.c、board_f.c)然后再调用dm_scan_fdt_node分解子节点。

2022-11-04 15:03:24 2478

原创 单例模式c++

单例模式

2022-09-01 16:34:04 132

原创 单例模式c++

懒汉模式和饿汉模式

2022-08-30 10:32:47 313

转载 数字签名是什么

数字签名是什么?作者:David Youd翻译:阮一峰原文网址:http://www.youdzone.com/signature.html鲍勃有两把钥匙,一把是公钥,另一把是私钥。鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。鲍勃

2021-11-13 15:06:46 129

原创 linux链接

linux1. 文件权限若是目录为对其他人开放x,则目录下任何指令均无法执行,因此也无法进入目录。将文件复制给他人时需要chmod环境变量PATH:执行一个指令时,系统根据PATH定义的每个路径下搜寻文件。若两个ls文件在两个不同的目录下,那么PATH中哪个目录先被查到就先执行哪个。2. 查看文件内容cat:从第一行开始显示tac:最后一行开始显示more:一页一页显示文件内容less:类似于more,但可以往前head -n num:显示前num行3. 链接文件硬盘结构:一个

2021-11-13 15:01:15 832

原创 回溯方法总结

1、排列问题问题描述一般是给定一个集合(可能含有重复元素),计算符合条件的所有排列。注:排列内部可能会出现相同元素,但是不能出现相同排列。例题幂集class Solution { List<List<Integer>> res; private void backtrack(List<Integer> path,int start,int[] nums){ //1、停止条件\ res.add(new Arra

2021-04-12 18:49:59 482

原创 submit()和execute()区别

1、接收的参数不同由以上图看出,execute()只能接受Runnable类型参数,而submit()函数还可以接受Callable类型参数;2、有无返回值submit()函数都有返回值Future,而execute()函数没有返回值;3、submit()方便exception处理submit()函数可以通过Future.get()函数可以判断任务是不是执行完成;如果在task里会抛出checked或者unchecked exception,而又希望外面的调用者能够感知这些exce..

2020-12-30 16:05:43 2568

转载 Java创建Class对象的方式及对比

以下三种获取Class对象的方式有什么不同?1、new Object().getClass2、Object.class3、 Class.forName(“java.util.String”)实例演示场景一为了更好的演示,我们先创建一个对象Person,对象内部定义了一些静态的方法。public class Person { static { System.out.println("Person:静态代码块"); } { System.

2020-12-09 21:41:22 267

原创 《将博客搬至CSDN》

博客搬至CSDN

2020-11-13 10:21:00 63

原创 Effective Java-6:消除过期的对象引用

1、内存泄露的常见来源1.1 过期引用class MyStack { private Object[] elements; private int size=0; private static final int DEFAULT_INITAL_CAPACITY=16; public MyStack(){ elements=new Object[DEFAULT_INITAL_CAPACITY]; } public void push(Obje

2020-10-23 10:29:08 115

原创 《Effective Java》5、避免创建不必要的对象

一般来说,最好能重用对象而不是每次需要的时候创建一个相同功能的新对象。一些无意识创建不必要的对象的情况:String实例String s=new String("gyx");上述语句每次被执行时都创建一个新的String实例,改进后为String s="gyx";自动装箱机制Long sum = 0L;long start = System.currentTimeMillis();for (int i = 0; i< Integer.MAX_VALUE; i++) { sum

2020-10-22 11:22:02 87

原创 《Effective Java》4、通过私有构造器强化不可实例化的能力

有时候,你可能需要编写只包含静态方法和静态域的类作为工具类,这样的工具类不希望被实例化,实例化对它没有意义。但是在缺少显式构造器的情况下,编译器会提供一个公有的、无参的缺省构造器。错误做法:做成抽象类强制该类不可被实例化,这是行不通的,该类可以被子类化,且子类也可以被实例化。解决办法:让这个类包含私有构造器。//Noninstantiable utility classpublic class JDBCUtil { //Suppress default constructor for .

2020-10-22 10:39:59 92

原创 《Effective Java》2、多个构造器参数时考虑builder

1、创建对象的方式静态工厂和构造器模式:不能很好地扩展到大量的可选参数。比如用一个类表示包装食品外面显示的营养成分标签。这些标签中有几个域是必需的:每份的含量、每罐的含量以及每份的卡路里。还有超过2 0 个的可选域: 总脂肪量、饱和脂肪量、转化脂肪、胆固醇、纳,等等。大多数产品在某几个可选域中都会有非零的值。对于这样的类,应该用哪种构造器或者静态工厂来编写呢?程序员一向习惯采用重叠构造器( telescoping cons tructor )模式,在这种模式下,提供的第一个构造器只有必要的参数,第二个

2020-10-21 22:11:39 106

原创 《Effective Java》1、考虑用静态工厂方法代替构造器

为了获取类的一个实例,最常用的方法就是提供一个公有的构造器。还有一种方法:类可以提供一个公有的静态工厂方法,它只是一个返回类的实例的静态方法。静态工厂方法与设计模式中的工厂模式方法不是一个概念;1、静态工厂方法相比于构造器的优势静态工厂方法具有名称由于语言的特性,Java 的构造函数都是跟类名一样的。这导致的一个问题是构造函数的名称不够灵活,经常不能准确地描述返回值,在有多个重载的构造函数时尤甚,如果参数类型、数目又比较相似的话,那更是很容易出错。一般来说一个类会有多个构造器,他们的参数列表

2020-10-21 21:28:54 140

原创 String在虚拟机的实现

1、String在虚拟机的实现不变性可以提高多线程访问的性能,因为对象不可变因此对于所有线程都是只读的,多线程访问时不加同步也不会产生数据的不一致,故减少了系统开销;针对常量池的优化当两个String对象拥有相同的值时只引用常量池中的同一个拷贝,可以大幅度节省内存空间;类的final定义String类在系统中不可能有任何子类,这是对系统安全性的保护;2、String的内存泄漏内存泄漏:由于不再使用的对象占据内存不被释放导致可用内存不断减小最终导致内存泄漏;在JDK1.6中,String

2020-10-21 15:43:01 221

原创 分析Java堆:内存溢出的原因

1、堆溢出  一般来说,绝大部分Java的内存溢出都属于堆溢出。原因是因为大量对象占据了堆空间,这些对象都持有强引用导致无法回收,当对象大小之和大于Xmx参数指定的堆空间时就会发生堆溢出;解决办法使用Xmx参数指定一个更大的堆空间;由于堆空间不可能无限增长,分析找到大量占用对空间的对象,在应用程序上做出优化;2、直接内存溢出在Java的NIO中,支持直接内存的使用,通过Java代码获得一块堆外的内存空间。直接内存的申请速度一般比堆内存慢,但是访问速度快于堆内存。对于那些可复用的,并且会被经

2020-10-21 15:39:39 6776

原创 垃圾回收概念

1、分代算法分代算法将内存区间根据对象的特点分为几块,根据每块内存区间的特点,使用不同的回收算法,以提高垃圾回收的效率;JVM会将所有的新建对象放入新生代的内存区域,新生代的对象90%会很快被回收。新生代比较适合使用复制算法;老年代的对象都是经过几次回收后存活下来的。因此老年代采取标记压缩或者标记清除算法。新生代回收的频率很高,但是每次耗时都很短,老年代回收频率低但是消耗时间多。虚拟机使用卡表的数据结构,是一个比特位集合,每一个集合位表示老年代的某一个区域的所有对象是否持有新生代对象的引用。这样在

2020-10-20 14:12:39 232

原创 软引用和引用队列

  软引用可以和一个引用队列联合使用,如果软引用所引用的对象被垃圾回收器回收,JVM就会把这个软引用加入到与之关联的引用队列中;1、为什么需要软引用首先,我们看一个雇员信息查询系统的实例。我们将使用一个Java语言实现的雇员信息查询系统查询存储在磁盘文件或者数据库中的雇员人事档案信息。作为一个用户,我们完全有可能需要回头去查看几分钟甚至几秒钟前查看过的雇员档案信息(同样,我们在浏览WEB页面的时候也经常会使用“后退”按钮)。这时我们通常会有两种程序实现方式:一种是把过去查看过的雇员信息保存在内存中,每一

2020-10-20 13:01:18 785

原创 Netty8:服务器启动源码分析

1、服务端启动时序图创建ServerBootStrap实例。ServerBootStrap是Netty服务端的启动辅助类,它提供了一系列的方法用于设置服务器启动相关的参数。ServerBootStrap只有一个无参的构造函数,是因为他的参数太多了。设置并绑定Reactor线程池。Netty的Reactor线程池就是EventLoopGroup,是EventLoop的数组。处理所有注册到本线程Selector上的Channel,Selector的轮询操作由绑定的EventLoop线程

2020-10-17 15:47:16 152

原创 Netty7:核心模块组件

1、Bootstrap、ServerBootstrap一个Netty应用通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件。Bootstrap是客户端程序的启动引导类,ServerBootstrap是服务端启动引导类;2、Future、ChannelFutureChannel channel(),返回当前正在进行IO操作的通道;ChannelFuture sync(),等待异步操作执行完毕;3、Channel可获得当前网络连接的通道的状态;可获得网络连接

2020-10-15 19:55:58 177

原创 Netty6:Channel、Pipeline、异步模型

1、Channel介绍Channel是通讯的载体,ChannelHandler负责Channel中的逻辑处理;ChannelPipeline是ChannelHandler的容器,一个Channel包含一个ChannelPipeline,所有ChannelHandler都会注册到ChannelPipeline中,并按顺序组织起来;Netty中,ChannelEvent是数据或者状态的载体,传输数据对应MessageEvent,改变状态对应ChannelStateEvent,当对Channel操作时,会

2020-10-15 19:18:02 336 1

空空如也

空空如也

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

TA关注的人

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