- 博客(53)
- 收藏
- 关注
原创 自旋锁,信号量和互斥锁
对于同步的方法,最基础的就是原子操作,他是其他同步方法的基石。原子操作可以保证指令以原子的方式去执行(执行过程不被打断)。但是,不可能每个临界区都可以用简单的原子操作。很多临界区尽可能跨越多个函数,简单的原子操作也无能为力,所以就需要更复杂的同步方法,锁来提供保护。1. 自旋锁自旋锁最多只能被一个线程所持有。如果一个执行线程试图获得一个被已经持有的自旋锁,那么该线程就会一直进行忙循环等待锁重新可用。也就是说自旋锁使得请求它的线程在等待重新可用的时候自旋(特别浪费处理器的时间)。这种行为是自旋锁的要点。所
2021-10-04 20:11:21
522
原创 《STL源码分析》第四章序列式容器学习总结
《STL源码分析》第四章序列式容器学习总结序列式容器所谓序列式容器,其中的元素都可序,但未必有序。C++本身提供了一个序列式容器array,STL另外再提供了vector, list, deque, stack, queue, priority-queue等。其中stack和queue就是将deque改头换面,技术上被归类为配接器(adapter)。1. vectorvector和array十分相似。唯一的差别就是vector对于空间的运用更加的灵活。array是静态空间,一旦配置了就不能改变大小
2021-03-08 22:23:13
244
原创 《STL源码剖析》第二章空间配置器学习笔记
SGI标准的空间配置器, std::allocator这个空间配置器的效率不佳,很少被使用。主要是因为他只是把C++的::operator new和::opeator delete做了一层薄薄的包装而已。大概就这样:template<class T>T* allocator<T>::allocate(size_type n){ if (n == 0) { return nullptr; } return static_cast<T*>(::operat
2021-02-22 22:15:11
206
原创 leetcode刷题笔记--二分法
记录一下,方便复习leetcode 33/*假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入: n
2020-08-26 16:15:52
176
原创 记录一次ubuntu18.04安装 vscode并且配置C++调试环境
ubuntu18.04安装 vscode并且配置C++调试环境 安装vscode安装插件并配置安装vscode我是直接在桌面上找到应用中心装的就是这个图标,进去直接搜索Visual Studio Code,然后直接安装就好了。当然也可以去官网下在.deb文件 然后 sudo dpkg -i xxx.deb安装安装插件并配置在搜索里面搜索C++,然后安装了C/C++和 C/C++ Compile run如果想要中文也可以搜索Chinese变成中文的。然后建立一个文件夹,这个文件夹里面写你的
2020-07-10 23:34:15
5439
1
原创 leetcode刷题笔记——分治
leetcode 241这个题改了几次也看了题解,重点复习/*给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2*//*分治 以符号分成左右两边 然后分别对左右两边递归*/#include<iostream>#include<strin
2020-07-07 09:49:25
258
原创 leetcode刷题笔记-树2
leetcode 101:/*给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmetric-t
2020-06-21 14:52:52
196
原创 leetcode刷题笔记-树1
方便之后复习,记录一下leetcode上有关于树的几道题先是树的前序遍历、中序遍历、和后序遍历分别是leetcode上144、94、145前序遍历就是先根结点 – 左子树 – 右子树中序遍历就是左子树 – 根结点 – 右子树后序遍历就是左子树 – 右子树 --根结点代码:递归方法 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), le
2020-06-13 10:03:49
274
原创 Leetcode刷题笔记-滑动窗口
记录一下在leetcode上刷的滑动窗口的几道题,方便后边复习。解析都放在代码里注释。leetcode 15:/*给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum*//*用排序加双指针,这个题主要是去重*/#inc
2020-05-31 16:49:14
366
原创 keras图像二分类Loss一直0.69
最近做图像分类 遇到了loss下降的0.69就不下降了,一直停在那里,acc在0.5左右。然后在网上查了很多资料,搞清楚了为什么会出现这种情况:https://www.jianshu.com/p/45c2180cab17https://blog.youkuaiyun.com/weixin_40267472/article/details/82216668https://zhuanlan.zhihu....
2020-04-20 23:03:17
5443
6
原创 BatchNorm学习笔记
BatchNorm的作用BatchNorm的主要作用是加速训练BatchNorm还有轻微的正则化效果BatchNorm原理对于神经网络中其中某一层给定的隐藏单元Z(1)…Z(m)有以下操作:第一步,求Z(1)…Z(m)的平均值。第二步,求其方差第三步,是在做归一化前三步做完得到的数据是均值是0,方差是1,满足正态分布,用此时的数据就可以达到加速训练的效果了,但是这样就学不到他们的...
2020-02-25 22:23:38
445
原创 Momentum、RMSprop、Adam
吴恩达深度学习笔记要说Momentum、RMSprop、Adam这三个优化器就要先讲讲指数加权平均指数加权平均上图是一年中365天的温度变化指数加权平均的等式是:Vt = βVt-1 + (1-β)θtθt 代表第t天的温度,也就是纵轴的数值,那么这个等式得到的Vt 近似代表的就是近似是1/(1-β)天的平均温度。当β = 0.9时,Vt 就近似10天的平均温度,当β = 0.98...
2020-02-16 16:56:59
408
原创 DETECTION OF FAKE IMAGES VIA THE ENSEMBLE OF DEEP REPRESENTATIONS FROM MULTI COLOR SPACES 论文阅读笔记
DETECTION OF FAKE IMAGES VIA THE ENSEMBLE OF DEEP REPRESENTATIONS FROM MULTI COLOR SPACES 论文阅读笔记摘要检测方法实验数据实验实验结果问题和思考文献)摘要随着生成式对抗网络(GAN)的快速发展,可以很简单的生成一幅假脸,而且特别逼真,人们用人眼基本上不能发现问题。这样就可能产生一些社会问题(例如,安全...
2019-12-01 14:10:25
522
原创 均值空间滤波和中值空间滤波
空间滤波由一个邻域(通常是一个较小的矩形),然后对该邻域所包围的图像像素执行预定义操作产生一个新的像素,新像素的坐标等于邻域的中心坐标。均值滤波器就是对这个区域的像素取平均值给邻域中心的那个像素,它是线性滤波器。这种处理可以较低图像的“尖锐”变化。常见的应用就是较低噪声,但是一般图象边缘也是由图像灰度尖锐变化带来的特性,所以均值滤波器处理存在着边缘模糊的负面效应。一般是下面这样的模版。...
2019-05-20 16:43:40
1503
原创 直方图均衡化
直方图均衡就是找到一个变换函数,该函数产生有均匀直方图的输出图像。注意要保证输出灰度范围和输入灰度范围相同。如果一副图像经过均衡后,其像素占有全部可能的灰度级范围,并且均匀分布,则这样的图像有高对比度和多变的灰度色调。、from skimage import io,exposure,dataimport numpy as npimport matplotlib.pyplot as p...
2019-05-20 16:21:14
628
原创 灰度变换(反转,对数,伽马)的python实现
这是学习第三章的时候的灰度变换的知识,就是找一个函数对原图像的每个像素点的灰度值重新计算,得到一个新得图像。1. 图像反转一幅图像的灰度级范围为[0,L-1],那么反转函数是 s = L-1-r (原来黑的变亮,亮的变黑)from skimage import ioimport numpy as npimg = io.imread('11.jpg',as_gray = True)ro...
2019-05-20 10:12:34
6600
1
原创 python 实现临近值插入和双线性插入
上篇笔记记过这两种方法了,这里用代码实现一下临近值插入from skimage import io,dataimport numpy as npdef function(img,widths,heights): rows,cols,dims = img.shape emptyImage = np.zeros((widths,heights,dims),dtype=np....
2019-05-10 09:45:52
456
1
原创 数字图像处理-第二章笔记
1. 取样和量化为了产生数字图像,我们需要把连续的感知数据转换为数字形式对坐标值进行数字化称为取样,对幅值数字化称为量化2. 数字图像的表示f(x,y) 一般用MN矩阵表示 从0开始, 图像在任何坐标(x,y)处的值记为f(x,y) 这个值一般表示为灰度M和N一般要求是正整数,L是灰度级数,通常取2的整数次幂 L = 2的k次方 称为‘k比特图像’, 所需要的比特数为b = MNk*3...
2019-05-10 09:38:12
847
原创 ALL in ALl
最近一直没怎么上博客,今天就写到题吧。题目描述:给定两个字符串s和t,请判断s是否是t的子序列。即从t中删除一些字符,将剩余的字符连接起来,即可获得s。输入描述:包括若干组测试数据。每组测试数据由两个ASCII码的数字和字母串s和t组成, s和t的长度不超过100000。输出描述:对每组测试数据,如果s是t的子序列则输出Yes;,否则输出No。样例输入:sequence subse...
2019-03-12 23:25:03
543
原创 堆排序和归并排序笔记
堆排序堆排序是对选择排序的改进 时间复杂度是 O(nlogn),大概思路是:将待排序的数列构造成大顶堆或者小顶堆 大顶堆就是每个结点的值大于左右孩子的值此时,整个数列的最大值就是堆顶的根节点(将其与末尾交换)然后将剩余的n-1个序列重新构造成一个堆反复进行上代码:/* =======================================================...
2019-02-09 22:30:48
666
原创 简单排序算法
记一下学习的三种简单排序算法冒泡排序冒泡排序也算是最经典的了,也是比较简单的,就是将相邻的两个相比较,直接上代码吧:#include<stdio.h>void bubblesort(int a[],int n){ int i,j,temp,count1=0,count2=0,flag; flag=1; for(i=0;i<n-1&&flag;...
2019-02-07 21:38:38
266
原创 二叉排序树学习笔记
二叉排序树的定义:左子树不为空时,则左子树上所有结点的值都小于它的根结点的值右子树不为空时,则右子树上所有结点的值都大于它的根结点的值它的左右字数也分别为二叉排序树(递归)代码:#include<stdio.h>#include<stdlib.h>typedef struct BiTNode{ int data; struct BiTNode *l...
2019-02-03 23:13:41
180
原创 折半查找,插值查找和斐波那契查找
学习折半查找,插值查找和斐波那契查找笔记折半查找,插值查找和斐波那契查找的前提都是要查找的数据进行了排序,他们的思想都是差不多的,只不过是mid的值不一样。折半查找就是先查找中间的数,如果中间的数是要查找的值,那么就直接返回,否则比较中间的值与low和high的值的大小然后改变low或者high,继续查找。就直接上代码吧#include<stdio.h>#include<...
2019-01-22 23:37:29
333
原创 最小生成树Prim笔记
计算最小生成树的一种方法就是使其连续的一步一步的长成。在每一步都要把一个结点当做根来往上加边。在算法的任一时刻都可以看到一组已经添加到树上的顶点,而其余顶点尚未加到这棵树上。就找尚未加到这个树上的顶点到已经加到树上的顶点的最小的权值。以v1作为起始点,这时v4与v1的权值最小,那么就把v1和v4连上;然后在其他没有被连在树上的顶点中找到了v2里v1权值是2,v3离v4权值是2,这两个最小,那...
2019-01-18 15:58:31
161
原创 图的邻接表创建及深度优先遍历和广度优先遍历
最近在学图,写个笔记。图的创建一般有邻接矩阵和邻接表两种方法,邻接矩阵对于边数相对于顶点较少的图会有极大的浪费,所以用邻接表,用数组与链表相配合顶点用一维数组储存所有顶点的邻接点构成一个线性表,因为邻接点的个数不确定,所以用单链表图的深度优先搜索是对先序遍历的推广 一个递归的过程,沿着一个方向遍历,一直到最后,然后再回来到另一个结点沿着一个方向。广度优先遍历就是一层一层的遍历。如上图...
2019-01-17 20:09:36
26310
5
原创 逆波兰计算器
举一个逆波兰表达式的例子吧:(2+3)(4-6)变成逆波兰表达式就是 2 3 + 4 6 - *一开始数字入栈然后遇到加号,将2和3出栈相加的结果在入栈变成再把4和6入栈遇见减号再把4和6弹出,把4-6结果在入栈,然后遇见乘号 就用5(-2)就是结果了代码:#include<stdio.h>#include<stdlib.h>#include<m...
2019-01-05 23:24:07
591
原创 用栈把二进制转化为10进制
利用栈后进先出的性质写一个小程序,把二进制转化为10进制例如二进制10001先进栈,然后再转化为10进制代码:#include<stdio.h>#include<stdlib.h>#include<math.h>#define STACK_INIT_SIZE 20#define STACK 10typedef char ElemType;typ...
2019-01-05 19:11:37
549
原创 建立单链表并找到中间数
题目:建立单链表并找到中间数普通方法就是先遍历一遍链表知道了单链表的长度N,然后再从头找到N/2时候的数。这种方法时间复杂度为O(N+N/2)=O(3N/2)。在优化一下这个方法,可以利用快慢指针,也就是设置两个指针,然后快的一次移动两个,慢的一次移动一个位置。总体代码(C语言):#include<stdio.h>#include<stdlib.h>#includ...
2019-01-02 11:49:28
509
原创 最大子序列和问题的四种求解以及他们的时间复杂度
最大子序列求和的问题就是对于给定的整数数列(里面可能有负数)A1,A2,…AN,求Ai到Ak的和的最大值。例如 -2,11,-4,13,-5,-2 这个数列的最大子序列和就是11-4+13=20。下面用四种方法实现这个功能。时间复杂度依次减小。用三个for循环public class MaxSubSum { public static void main(String[] a...
2018-12-28 17:23:31
1530
原创 递归题
用递归计算n个人中选择k个人组成一个委员会的不同组成。 分析: 由n个人里面挑选k个人的组合数=有n-1个人里面选k个人+由n-1个人里选k-1个组合数。 递归推到当n=k或者k=0时结束,因为当n=k或者k=0的时候只有一种组合数。 代码:# include <iostream>using namespace std;int comm(int n,int k){...
2018-08-21 00:09:17
223
原创 今天学习springDAO的一些错误
org.springframework.core.io.ClassPathResource cannot be cast to javax.annotation.Resource (这个错误主要是因为配置applicationContext里面字母大写了,而代码里没有导致的。)Field ‘id’ doesn’t have a default value(数据库里面的id没有设置自增,我用的W...
2018-08-13 00:03:25
343
原创 查找树ADT---二叉查找树
**二叉树**:是一棵树,其中每个节点都不能多于两个儿子。二叉树的一个性质是一颗平均二叉树的深度要比节点个数N小的多。分析表明,其平均深度为O(√N),而对于特殊类型的二叉树,即**二叉查找树**。其深度的平均值为O(logN)。使二叉树成为二插查找树的性质是,对于树中的每个节点X,它的左子树所有的项值小于X中的项,而它的右子树中所有的项的值大于X。二叉查找树要求所有的项都能够排序,要写一个...
2018-08-09 20:55:51
260
原创 validation.xml配置错误
今天在写使用验证框架对数据校验的时候发生了错误,主要是因为validation.xml配置错误 错误提示: **SEVERE: Caught exception while loading file com/UserAction-validation.xml Connection timed out: connect - [unknown location] at com.open...
2018-08-04 13:53:56
1093
原创 今天写struts2的错误
第一个出现的错误是找不到struts.xml这个错误,具体报错的忘记复制下来了,这是一个很蠢的错误,后来找到原因我都要打自己了,浪费时间。一开始我以为是struts的包没有导进去,然后就检查,又重新导,结果没用,然后就开始检查struts.xml文件,看看有没有配置错误,找了好久也没发现错误,重写了好几次,然后又百度什么的。都没发现原因。最后我仔细看了看,我每次写这个代码的时候都会新建一个包,然...
2018-08-04 13:46:08
2187
原创 新学startus出现的一些错误
万事开头难啊,新学startus2出现的一些错误总结(用的是startus2.3) 1. java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 根据错误日志的提示,有一个javassist的提示,再加上百度看别人的就是博客,知道了是有一个Javassist的包没添加。去startus2 lib下面找到添加...
2018-08-01 22:11:52
533
原创 错误提示
今天在写代码的时候遇到了这个问题: 经过一顿搜索,发现是Tomact版本问题,找到了一些解决方案参考: https://www.cnblogs.com/lr393993507/p/7755867.html 但是我用了上面写的 配置tomcat的catalina.properties 添加或者修改: tomcat.util.http.parser.HttpParser.req...
2018-07-31 23:19:53
246
原创 Ajax常用实例-级联下拉列表
应用了Ajax重构 先编写AjaxRequest.js文件存在JS文件夹中,具体代码:var net = new Object(); // 定义一个全局变量net// 编写构造函数net.AjaxRequest = function(url, onload, onerror, method, params) { this.req = null; this.onload...
2018-07-31 23:15:24
307
原创 Ajax检测用户名是否唯一
首先创建jsp文件,再该文件中添加一个收集用户信息的表单和表单元素,以及“检查用户名”按钮,当按这个按钮的时候调用JavaScript中的checkUser()方法,如果不是空字符,执行createRequest(‘checkUser.jsp?user=’+userName.value);方法发出异步请求,在这个方法里面初始化XMLHttpRequest对象,然后指定处理函数,在创建与服务器连接,...
2018-07-31 00:01:40
967
原创 JSTL里面的choose when otherwise
标签可以根据不同的条件完成指定的业务逻辑,如果没有符合的条件就执行默认条件的业务逻辑。标签只能作为 标签的父标签,而要实现条件选择逻辑,可以在里面嵌套 标签。 语法格式: 标签体 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIg...
2018-07-29 19:41:21
693
原创 分页查询
分页查询是Java Web开发中常用的技术,在数据库量非常大的情况下,不适合将所有的数据都显示到一个页面中,此时就要对数据进行分页查询。 MySQL数据库里面提供的分页机制limit关键字 limit arg1,arg2 参数说明: arg1用于指定查询记录的起始位置 arg2用于指定查询数据所返回的记录数 例:通过MySQL数据库提供的分页机制,实现分页查询功能,将分页数据显示在JS...
2018-07-28 18:42:09
381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人