![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序算法
文章平均质量分 73
记录敲代码过程中遇到的困难、知识点
Jason_Lee155
不生产文章,只是文章的搬运工。。。
展开
-
通俗易懂地解释遗传算法?有什么例子?
这是个真实的故事。从前在海岸边有一群扇贝在悠转载 2018-06-05 09:54:02 · 2637 阅读 · 0 评论 -
数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)
数字签名是什么?1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。2.鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。3.苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。4.鲍勃收信后,用私钥解密,看到信件内容。5.鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest)...转载 2018-08-06 13:46:18 · 791 阅读 · 0 评论 -
提供推荐——协作型过滤
一、协作型过滤一个协作型过滤算法通常的做法是对一大群人进行搜索,并从中找出与我们品味相近的一群人。然后对这些人的偏好内容进行考查,并将它们组合起来构造出一个经过排名的推荐列表。搜集偏好寻找相近的用户欧几里得距离评价皮尔逊相关度评价为相近用户打分排序推荐物品推荐结果1.搜集偏好# 不同用户对电影的评分字典critics={'Lisa Rose': {'Lady ...转载 2018-06-24 09:28:24 · 308 阅读 · 0 评论 -
C++虚继承下的类大小
虚拟继承确定是要增加一张虚函数表和一个虚基类指针表嘛原创 2023-04-21 16:58:53 · 1420 阅读 · 2 评论 -
C++无符号整型与有符号整型变量的运算-不简单
当表达式中存在有符号类型和无符号类型的变量时,所有的操作数都会自动的转换为无符号类型进行计算。原创 2023-04-10 19:59:34 · 1639 阅读 · 0 评论 -
C++中#pragma pack(N)计算sizeof
#pragma pack(N)计算sizeof原创 2023-03-25 12:03:04 · 936 阅读 · 0 评论 -
C++实现一个不能被继承的类
C++不同于Java,Java中被final关键字修饰的类不能被继承,C++能实现不被继承的类,但是需要自己实现。原创 2023-03-07 11:47:45 · 1681 阅读 · 0 评论 -
Java数据结构之优先级队列
PriorityQueue优先队列。优先队列可以保证每次取出来的元素都是队列中的最小或最大的元素(Java优先队列默认每次取出来的为最小元素)。原创 2023-02-14 09:46:38 · 975 阅读 · 0 评论 -
C/C++全局变量、局部变量、静态变量和常量
C和C++中全局变量,局部变量,静态变量和常量原创 2023-01-11 16:41:59 · 4123 阅读 · 2 评论 -
JAVA的Random类的常见用法
Random类主要用来生成随机数原创 2023-01-11 14:12:55 · 3425 阅读 · 0 评论 -
看看 C++ 的 Lambda 表达式
C++11标准中引入了 Lambda 表达式,用于定义匿名函数,使得代码更加灵活简洁。Lambda 表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。...原创 2022-06-28 17:19:13 · 186 阅读 · 0 评论 -
C/C++的String常用函数介绍
string .h头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。原创 2022-06-15 17:14:23 · 208 阅读 · 0 评论 -
C++的emplace_back函数介绍
在C++11之前,一般给vector插入新元素用得都是push_back函数。C++11引入了emplace_back函数,它通过完美转发实现了在vector中插入时直接在容器内构造对象,省略了创建临时对象的操作。转载 2022-06-13 09:29:19 · 11039 阅读 · 0 评论 -
C++的单例模式怎么释放内存?
经过new出一个对象来实现的单例,不论单例是经过饿汉方式,仍是懒汉方式来实现,都面临一个问题,即new出来的对象由谁释放,什么时候释放,怎么释放 ?原创 2022-06-07 16:20:21 · 1068 阅读 · 0 评论 -
Java枚举实现单例模式原理
单例的枚举实现在《Effective Java》中有提到,因为其功能完整、使用简洁、无偿地提供了序列化机制、在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点原创 2022-06-01 17:32:10 · 2053 阅读 · 0 评论 -
C++中清空Vector内元素的方法以及释放内存
C++中,如何清空Vector内的所有元素原创 2022-05-26 14:15:19 · 17934 阅读 · 0 评论 -
C++常用函数之sort函数
sort()函数是C++标准库中的排序函数,头文件为algorithm原创 2022-05-25 09:14:11 · 3400 阅读 · 0 评论 -
C++中 =defaule 和 =delete什么意思
编译器默认为一个类生成的默认函数默认构造函数 默认析构函数 默认拷贝构造函数 默认赋值函数 移动构造函数 移动拷贝函数例如:class DataOnly {public: DataOnly () // default constructor ~DataOnly () // destructor DataOnly (const DataOnly & rhs) /原创 2021-09-30 11:54:13 · 687 阅读 · 0 评论 -
最深刻最通俗的HTTPS 原理详解,图文并茂
摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个hello消息给B:如果我们要实现这个聊天软件,本文只考虑安全性问题,要实现A发给B的hello消息包,即使被中间人拦截到了,也无法得知消息的内容。如何做到真正的安全?这个问题,很多人马上就想到了各种加密.转载 2021-09-06 22:29:23 · 330 阅读 · 0 评论 -
C++常见面试题之数据结构和算法
1、String原理及实现string类是由模板类basic_string<class _CharT,class _traits,class _alloc>实例化生成的一个类。basic_tring是由_String_base继承而来的。typedef basic_string<char> string而实际面试由于时间关系,一般不会要求很详细的string的功能,一般要求是实现构造函数,拷贝构造函数,赋值函数,析构函数等部分,因为string里面涉及动态内存管理,默认原创 2021-08-24 22:19:04 · 1138 阅读 · 0 评论 -
【C/C++】中的__FILE__、__LINE__、#line、__func__关键字(预定义宏)
c++11预先定义了一些标识符,其实也就是宏。现在简单说几个:1、__FILE__用于指示本行语句所在源文件的文件名,如下(test.c):#include <stdio.h>void main(){ printf("%s\n", __FILE__);} =====>>GCC编译执行结果为:=====>> "test.c"=====>>Windows的VC6.0编译执行结果为:=====>> "c:\documen原创 2021-08-08 09:17:37 · 3960 阅读 · 2 评论 -
C++常用数据结构入门
前言所有的容器归根到底都是内存空间的排列方式和在空间上施加各种各种不同的限制所得的。空间排列方式只有线性和链式两种方式,链式是通过记录每一个数据的地址来实现查找下一位数据的。而每一个容器所具有的特性就决定了它所适用的情况,总的来看容器常用的无非是增删改查操作,下面将从适用场景、常用操作来进行总结。array数组内存空间为连续的一段地址,适用于提前已知所要存储的数据类型和数量、进行大量的查、改操作,不适用于含有大量交换、删除、增加数据的操作,该容器无法动态改变大小,所以说提前已知存储数据类型和原创 2021-08-05 22:18:35 · 257 阅读 · 0 评论 -
C++11线程使用
C++11线程使用线程概念构造函数成员函数使用线程创建详解用一个初始函数创建一个线程用类对象创建一个线程用lambda表达式创建一个线程认识一个函数线程概念C++11引入了thread类,大大降低了多线程使用的复杂度,原先使用多线程只能用系统的API,无法解决跨平台问题,一套代码平台移植,对应多线程代码也必须要修改。现在在C++11中只需使用语言层面的thread可以解决这个问题。所需头文件:#include <thread>构造函数1.默认构造函数thread() noexce原创 2021-08-03 22:10:20 · 1628 阅读 · 1 评论 -
源码里throw new RuntimeException(“Stub!“)什么意思
在阅读源码的过程中,发现有些类只定义了方法名和参数列表,里面具体的实现就一句话:throw new RuntimeException("Stub!");比如BaseDexClassLoader这个类://// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)// package dalvik.system; import java.io.File转载 2021-04-17 11:04:08 · 1640 阅读 · 0 评论 -
大家都说 Java 反射效率低,为什么呢?
我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运用更是常见。我相信,每次提到反射,大家的第一反应一定是反射效率低,尽量少使用。但是反射的效率到底低多少?反射效率低的原因在哪里?这篇文章就来探索一下这些问题。这里使用 openjdk 12 源码进行分析。我们先看结论,然后分析一下 Java 反射的原理,过程中大家可以根据结论,对源码做一些思考,然后再根据原理中的一些实现,看看 Java 反射效率低的原因。0.先放结论Java 反射效率低主要原因是:Method#invo..原创 2021-02-19 21:16:47 · 989 阅读 · 0 评论 -
简单了解音视频传输协议SDP、RTP、RTMP、SIP等
SDP会话描述协议(SDP)为会话通知、会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述。参考RFC2327(Request For Comments(RFC),是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。基本的互联网通信协议都有在RFC文件内详细说明。)会话目录用于协助多媒体会议的通告,并为会话参与者传送相关设置信息。SDP 即用于将这种信息传输到接收端。SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输原创 2020-08-19 15:56:01 · 2783 阅读 · 0 评论 -
Java、Android注解代码生成(ButterKnife原理、ViewBinding)
前言首先需要一些先验知识:浅谈Java/Android下的注解Java、Android基础之—反射Java、Android静态代理与动态代理简介在我们常用的框架中注解和自动生成代码的身影很常见,因为注解和自动生成的配合,从而简化和统一代码,使框架使用简单且容易扩展,典型且最熟悉的就是ButterKnife,主要功能利用注解省略了findViewById的过程,当然也提供了其他的监听、绑定等很多强大的操作符,熟悉ButterKnife源码的应该知道,ButterKnife的实现就.原创 2020-08-05 15:41:29 · 622 阅读 · 0 评论 -
Java、Android静态代理与动态代理
代理(1) 什么是代理?大道理上讲代理是一种软件设计模式,目的地希望能做到代码重用。具体上讲,代理这种设计模式是通过不直接访问被代理对象的方式,而访问被代理对象的方法。这个就好比 商户---->明星经纪人(代理)---->明星这种模式。我们可以不通过直接与明星对话的情况下,而通过明星经纪人(代理)与其产生间接对话。(2) 什么情况下使用代理?a. 设计模式中有一个设计原则是开闭原则,是说对修改关闭对扩展开放,我们在工作中有时会接手很多前人的代码,里面代码逻辑让人摸不着头脑(som原创 2020-08-05 10:07:53 · 377 阅读 · 0 评论 -
Java、Android基础之—反射
前言写这篇文章原因之一,是因为之后会对一些Android第三方框架进行分析。虽不能达到完全清晰,但大体的涉及知识需明白。反射概述反射是框架设计的灵魂。(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该原创 2020-08-04 20:53:43 · 199 阅读 · 0 评论 -
浏览器URL地址里一堆%或者6E616D6531之类的是啥?编码
为什么要进行URL编码我们都知道Http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割。如"?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值。针对“name1=value1&name2=value2”我们来说一下客户端到服务端的概念上解析过程:上述字符串在计算机中用ASCII吗表示为:6E616..原创 2020-07-31 13:55:47 · 4082 阅读 · 0 评论 -
Java基础之Comparable接口和Comparator接口的比较
前言就是普普通通的写这么一篇文章,java集合类估计java程序猿都知道,那就写一点小众的。在实际应用中,我们往往有需要比较两个自定义对象大小的地方。而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义的对象进行比较的。一般,Java中通过接口实现两个对象的比较,常用的就是Comparable接口和Comparator接口。首先类要实现接口,并且使用泛型规定要进行比较的对象所属的类,然后类实现了接口后,还需要实现接口定义的比较方法(co原创 2020-07-22 19:37:21 · 263 阅读 · 0 评论 -
各种有return的情况下try-catch-finally的执行顺序
结论:1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finall...原创 2020-04-08 13:58:41 · 207 阅读 · 0 评论 -
大体了解Android应用安装过程及原理
Android应用安装的流程及路径:应用安装涉及到如下几个目录:system/app 系统自带的应用程序,无法删除data/app 用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录data/data 存放应用程序的数据Data/dalvik-cache 将apk...转载 2020-03-24 14:03:54 · 3398 阅读 · 0 评论 -
编程思想之多线程与多进程——以操作系统的角度述说线程与进程
编程思想之多线程与多进程——以操作系统的角度述说线程与进程 什么是线程?线程与进程与有什么关系?这是一个非常抽象的问题,也是一个特别广的话题,涉及到非常多的知识。我不能确保能把它讲的话,也不能确保讲的内容全部都正确。即使这样,我也希望尽可能地把他讲通俗一点,讲的明白一点,因为这是个一直困扰我很久的,扑朔迷离的知识领域,希望通过我的理解揭开它一层一层神秘的面纱。转载 2018-01-30 19:20:34 · 222 阅读 · 0 评论 -
C++写#pragma warning(disable 4786)的作用
C++编程时,在使用STL(C++标准模板库)的时候经常引发类似的错误,尤其是vector,map这类模板类,模板中套模板,一不小心就很长了。当命名超过C++规定范围255字符时,就会产生这个名为disabale 4786的warning。故为了屏蔽该warning,在各模板类的引用声明(如#include )之前,使用这个#pragma warning(disable 4786)。原创 2017-08-03 16:14:31 · 1158 阅读 · 0 评论 -
转载:vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
原文链接:http://www.cnblogs.com/newpanderking/articles/3372969.html>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏问题说明:当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。l 当VS201转载 2017-08-03 15:37:25 · 323 阅读 · 0 评论 -
Java基础之移位运算,为什么高位补1?
首先,了解原码、反码、补码:原码:使用高位作为符号位。最高位为0时表示正数,最高位为1时则表示为负数。其余位使用此数字数值本身二进制的绝对值表示。反码:使用高位作为符号位。最高位为0时表示正数,最高位为1时则表示为负数。正数的反码还是正数本身;负数的补码即在原码的基础上,符号位不变,其他位取反。补码:使用高位作为符号位。最高位为0时表示正数,最高位为1时则表示为负数。正数的...原创 2020-01-21 10:40:35 · 3767 阅读 · 2 评论 -
数据结构Stack:关系以及方法
Stack简介Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedList当作栈来使用!Stack的方法java中Stack只有一个无参构造函数。属于sta...原创 2020-01-20 11:44:39 · 347 阅读 · 0 评论 -
数据结构Queue:poll、offer、element、peek
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。在java5中新增...原创 2020-01-20 11:33:29 · 1581 阅读 · 0 评论 -
栈、堆、方法区之间的关系
先放一张图:1.栈内存中放哪些东西?基本类型的变量,例如int a=3中的a; 对象的引用变量,例如Thread t=new Thread();中的t。当在代码块中定义一个变量时,Java就在栈中为这个变量分配内存空间;当超过变量的作用域后,Java会自动 释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。2.堆内存中存放哪些东西?存放由new创建的对象和数组。...原创 2020-01-16 20:50:36 · 1314 阅读 · 2 评论