- 博客(167)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注

原创 统计日志中ip访问次数并排序的三种方法
1 利用linux中的awk命令grep "GET aaa.log| awk -F " " '{print $NF}' >d:/test.log假设日志的最后一行是ip地址,则取出日志的最后一行以空格为分隔符并且重定向到d盘下的test.log中。取出之后还可以进一步操作直接统计出ip访问的次数并且降序排列。cat test.log | sed 's/:[0-9]\+//g'| awk '{IP[$1]++}END {for(a in IP) print a"-----"IP[..
2021-05-09 22:09:23
3150
3

原创 PCA降维算法原理及代码实现(python和matlab)
欢迎转载:转载请注明出处,谢谢。常见的数据降维算法有:奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。PCA降维的基本思想:通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值、特征向量、选择特征值最大(即方差最大)的K个特征所对应的特征向量组成的矩阵,这样可以将数据矩阵转换到新的空间当中,实现数据特征的降维。PCA降维有两种思路:一种是特征值...
2019-04-19 19:46:44
11696
3

原创 小波去噪MATLAB代码
本文基于北京交通大学陈后金教授的课件。我加以整理,若有冒犯还请谅解1利用MATLAB产生分解与重建滤波器组计算滤波器组的函数[Ld,Hd,Lr,Hr]=wfilters('wname')Ld:分解低通滤波器h0[-n];Hd:分解高通滤波器h1[-n];Lr:分解低通滤波器h0[-n];Hr:分解高通滤波器h1[-n];wfname:小波名eg1:计算db2小波的四...
2018-09-24 10:13:46
40247
5
原创 docker以挂载目录的形式安装mysql和redis
写在前面:博主安装是在阿里云服务器上安装的,在阿里云服务器上安装需要注意的两点是:1 要打开端口2 要开防火墙具体操作如下1 拉取并运行mysql# 拉取docker pull mysql:5.7# 运行docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/co
2022-05-30 19:43:04
398
1
原创 mybatis快速入门
1 mybatis介绍MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。提到mybatis框架就不得不提到Hibernate,Hibernate作为常用的ORM框架,使用起来简单易懂,对于SQL语言的封装,让对于SQL并不是很熟练的程序员也可以轻松地开发DAO层,IDE也有对应的工具来反向生成,所以开发效
2022-02-17 14:22:54
978
原创 switch与ifelse的效率问题
switch与ifelse的效率问题:https://blog.youkuaiyun.com/kehui123/article/details/5298337switch与ifelse的使用方法:https://www.runoob.com/java/java-switch-case.html
2021-05-14 17:57:55
256
原创 如何让for循环中最后一次的输出和循环体的不一样
题目:假设循环有n次,前n-1次均有逗号,第n次没有逗号。方法:1) 用if else语句判断是否是最后一次循环,如果是的话去掉逗号。for(int i=0;i<n;i++){ if(i<n-1){ System.out.println("输出有逗号"); } else{ System.out.println("输出没有逗号"); }}2)设置标识位String flag="";.
2021-05-13 16:53:25
2698
原创 安卓手机Charles抓包显示unknown原因及解决办法
假如你按照网上的教程,在配置好代理的IP地址和端口号,下载并安装了证书,抓包仍然显示unnown的话,你要去找下安卓手机怎么信任证书。ios会直接弹窗。安卓手机不会,以小米10为例,你需要在设置里面搜索证书,-》CA证书,安装CA证书,其他的安卓手机要找到安装的证书适用于vpn和应用程序,而不是在无线网络里高级设置里面安装证书,这样只适用于网络。...
2021-05-11 10:02:34
7583
7
原创 2021-03-12
function [y,noise] = Gnoisegen(x,snr)noise=randn(size(x)); % 用randn函数产生高斯白噪声Nx=length(x); % 求出信号x长signal_power = 1/Nx*sum(x.*x); % 求出信号的平均能量noise_power=1/Nx*sum(noise.*noise);% 求出噪声的能量noise_variance = signal_power...
2021-03-12 22:13:04
300
原创 深信服一面总结
1 项目项目是C++集群聊天服务器里面涉及到主要的技术栈有 nginx负载均衡器、基于redis的发布订阅序列、muduo网络库(使用的时候特别的简单,但是面试官一般会问它的底层代码是怎么实现的,最主要的思想是epoll+线程池)、mysql、json序列化和反序列化(1)怎么处理多个客户端的连接epoll去监听客户端的连接,当有多个客户端到来之后条件变量利用广播的方式去唤醒多个线程,线程来任务队列取走任务。线程池的创建a 设置一个生产者消费者队列作为临界资源b 初始话n个线程 并让
2020-09-19 20:51:52
963
原创 LRU缓存淘汰策略
之前写过一篇关于LRU缓存淘汰策略的博客,那时候还在俄罗斯。在面试深信服的时候面试官有问到,面试官特别的nice,虽然好多问题没有答上来,但是从面试官那里学到不少的东西。今天再总结下LRU首先是写LRU缓存淘汰策略的逻辑。LRU缓存淘汰策略分为访问和新建两个方面访问:如果最近有访问直接把它提到最前面。新建:新建的时候应该考虑到两个方面(1)程序是新打开的之前没有打开过这个时候需要判断存放缓存的容器是否已满,如果满了的话就需要把最后一个缓存删掉。。如果没有满的话直接插入就可以(2)
2020-09-19 10:30:39
296
原创 小米公司笔试题
#include<iostream>#include<vector>#include<string>#include<stack>using namespace std; bool isValid(string s) { stack<int> sta; int n=s.size(); if(n==0) return true; if(n%2==1) re.
2020-09-16 10:28:14
579
原创 归并排序算法C++代码
#include<iostream>#include<vector>using namespace std;void merge(vector<int>nums,int l,int m,int r){ vector<int> lnums,rnums; for(int i=l;i<m;i++) lnums[i-l]=nums[i]; for(int i=m;i<=r;i++) rnums[i-m]=nums[i]; int i=.
2020-08-30 18:52:48
366
原创 插入排序算法C++代码实现
插入排序过程如图所示代码:#include<iostream>#include<vector>using namespace std;void selectsort(vector<int> nums){ for(int i=1;i<nums.size();i++) { for(int j=i-1;j>=0;j--) { if(nums[j+1]<nums[j]) { int temp=nums[j].
2020-08-30 14:19:55
181
1
原创 选择排序C++代码
#include<iostream>#include<vector>using namespace std;void selectsort(vector<int> nums){ for(int i=0;i<nums.size()-1;i++) { int min=i; for(int j=i+1;j<nums.size();j++) { if(nums[min]>nums[j]) { min=j; }.
2020-08-30 10:51:22
360
原创 冒泡排序C++代码实现
#include<iostream>#include<vector>using namespace std;void sort(vector<int> nums){ int i=0,j=0,n=nums.size(); int temp=0; for(int i=0;i<n-1;i++) { for(int j=0;j<n-i-1;j++) { if(nums[j]>nums[j+1]) { temp=num.
2020-08-30 10:29:01
1769
原创 linux父子进程之间之间的区别与联系
刚fork之后:父子相同处: 全局变量、.data、.text、栈、堆、环境变量、用户ID、宿主目录、进程工作目录、信号处理方式...父子不同处: 1.进程ID 2.fork返回值 3.父进程ID 4.进程运行时间 5.闹钟(定时器) 6.未决信号集似乎,子进程复制了父进程0-3G用户空间内容,以及父进程的PCB,但pid不同。真的每fork一个子进程都要将父进程的0-3G地址空间完全拷贝一份,然后在映射至物理内存吗?当然不是!父子进程间遵循读时共享写时复制的原则。这样设计,...
2020-08-08 12:10:06
2146
原创 解决Linux下动态链接库失败的问题
首先利用ldd查看可执行文件依赖的动态库及其状态。解决办法(1)将自己制作的动态库放到系统存放库的目录下 usr/lib (2) 在实际开发中测试时-经常用的方法export $ LD_LIBRARY_PATH=./lib(设置库的导入目录)重启会失效(3)在家目录下找到.bashrc文件将(2)中的内容放入(不推荐)(4)常用: 1. 找到动态链接库的配置文件: /etc/ld.so.conf 2. 在该文件中添加动...
2020-08-07 10:29:11
2055
转载 Linux下制作和使用静态库和动态库
概述:Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库。linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib。静态函数库:这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译,而且体积也较大。动态函数库.
2020-08-07 09:24:06
164
原创 linux下ftp服务器搭建详解
总体搭建流程:1.安装vsftpd2.配置vsftpd.conf配置文件3.启动vsftpd服务器(安装完后默认是启动的)4.客户端发起连接5.传递数据(上传,下载)6.关闭连接详解1.安装vsftpdCtrl+alt+t打开虚拟终端,然后键入shells命令sudo apt-get install vsftpd2.配置vsftpd.conf配置文件在root用户权限下通过vim编辑器打开/etc目录下的配置文件vsftpd.conf,命令如下sudo vim /.
2020-08-06 22:00:18
361
原创 GDB调试详解
1 简介GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下:GDB主要帮忙你完成下面四个方面的功能:1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3.当程序被停住时,可以检查此时你的程序中所发生的事。4.动态的改变你程序的执行环境。2 生成调试信息一般来说GDB主要调试的是C/C...
2020-08-06 12:32:53
793
转载 Linux下gcc入门
1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compil...
2020-04-30 15:42:30
222
原创 零基础入门NLP之搭建中文分词工具
1 文本分析的基本过程分词就是中学学的断句:举个例子来说明:假设我们输入一句话:北京欢迎你。则有可能的断句为:北,京,欢,迎,你北京,欢,迎,你北京,欢迎,你 等等如果没有语料库的话就是这样的枚举。分词我们可以根据语料库里面的次来分,比如语料库里面有[北京,欢迎,你,欢,迎]则上面列出的就是我们可能的分词结果用程序来是实现就是需要的语料库:https://gi...
2020-04-28 20:34:50
495
原创 c++中的引用
引用的特点(1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。(2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。(3)引用与指针的区别是,指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性...
2020-04-27 21:04:31
284
转载 c++工程师面试常见问题之c++中四种cast转换
int main(){ const int a = 10; // a++; int& b = const_cast<int &>(a); b++; cout << b << endl; // 11 int c = 10; int d = 11; const int* p = &c; int * p...
2020-04-27 16:43:02
289
原创 我的秋招之路之c++中static的用法
c++的内存分布如上图所示。对于一个完整的程序,在内存中的分布情况如下图: 1.栈区: 由编译器自动分配释放,像局部变量,函数参数,都是在栈区。会随着作用于退出而释放空间。3.堆区:程序员分配并释放的区域,像malloc(c),new(c++)3.全局数据区(静态区):全局变量和静态便令的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的...
2020-04-27 16:37:32
203
转载 xgboost、随机森林和逻辑回归的优缺点
转载自https://www.nowcoder.com/ta/review-ml/review?query=&asc=true&order=&page=99Xgboost:优缺点:1)在寻找最佳分割点时,考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者...
2020-04-20 21:12:35
17238
原创 我的秋招之路(开篇)
近期在准备秋招的同时也在找春招的实习,在准备的过程中有一些心得想写下来,希望对同学们有些帮助。(1)大厂通常特别重视项目经验,问得很深,所以有项目得同学一定要对项目中用到得技术吃得很透。(2)与项目相比起,论文不是那么的重要,但是面试官也会对你论文中用到的技术问得很深。(ps:其实你做的项目和论文都是给面试官问你问题的一个入口,先从你最熟悉的问题,然后再横向扩展)。(3)在找工作的时候...
2020-04-20 21:07:26
249
原创 LRU缓存机制
LRU 缓存淘汰算法就是一种常用策略。LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用的」,很久都没用过的数据应该是无用的,内存满了就优先删那些很久没用过的数据。这里用c++来实现。知识铺垫:c++迭代器(1)正向迭代器形式:容器类名::iterator 迭代器名(2)常量正向迭代器:容器类名::const_iterat...
2020-04-15 16:30:35
180
原创 除法求值bfs实现c++代码
pair 的用法std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象。class pair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(key/value)的成对元素。pair被定义为struct,因此可直接存取pair中的个别...
2020-04-12 14:14:32
233
原创 有向无环图(邻接矩阵和邻接表)
一、图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。注:在线性表中,元素个数可以为零,称为空表;在树中,结点个数可以为零,称为空树;在图中,顶点个数不能为零,但可以没有边。二、图的遍历 图的遍历是在从图中某...
2020-04-08 01:23:39
9057
原创 summary+plan
这两天的时间没有刷leetcode上的题,我发现树对于我来说还是有一定难度,需要像大学考二级一样不断的刷题,不断的做,让树栈什么的成为自己潜意识的内容,不断的复习。还需要学习python里面的一些知识。包括基本语法numpy,sklearn,panda,这些东西。还有三个月就要回国了,就要找工作了,时间很紧迫了。现在已经实现hmm、cnn、lstm、bilstm对语音情感进行识别,有时间把英文论文...
2020-04-06 15:20:23
341
原创 深度学习笔记之lSTM网络
解决梯度爆炸问题可以利用LSTM网络也可以用clip gradients 算法https://blog.youkuaiyun.com/jiachen0212/article/details/80285648
2020-04-05 15:05:21
221
原创 leetcode刷题之树(三)
翻转二叉树,感觉做二叉树的问题好像都是那一套公式,除了个别的问题解决不了,用上篇博客leetcode刷题之树(二)的模型基本可以解决。总体来说就是树基本都可以利用递归和迭代的方法去解决,在涉及到树的遍历的时候偏向于利用栈来存储数据,在求和树的层次相关的问题时偏向于利用队列来存储数据。 个人感觉迭代更好理解,因为递归涉及回溯。class Solution {public: Tre...
2020-04-04 04:40:33
271
原创 keras入门之手写字识别python代码
import numpy as np import tensorflow as tffrom keras.datasets import mnistfrom keras.models import Sequentialfrom keras.layers import Dense, Dropout, Flattenfrom keras.layers.convolutional impor...
2020-04-04 02:39:33
400
原创 lstm网络python代码实现
LSTM的宏观讲解推荐这篇博客,以动图的形式展示特别容易理解https://blog.youkuaiyun.com/dQCFKyQDXYm3F8rB0/article/details/82922386LSTM的输入、输出、遗忘门的控制推荐这篇博客。本篇的代码也是基于这篇博客的https://zybuluo.com/hanbingtao/note/581764import numpy as...
2020-04-02 22:31:23
6401
1
原创 leetcode刷题之树(2)
树的层次遍历如果用递归实现的话,则是深度优先搜索,即先遍历到最后最后再回溯,然后看根据在每一层上插入同一层的其它数据。过程class Solution {public:vector<vector<int>>res; vector<vector<int>> levelOrder(TreeNode* root) { ...
2020-03-30 21:46:27
177
原创 深度学习入门之感知器(原理+代码)
感知器的原理:感知器的原理相当简单,当线性可分的时候就是中学的时候学过的y=kx+b,只不过中学的时候k和b都是给出的,给我们x让我们去求y,看看y是在这条直线的上方还是下方。而现在没有给我们k和b,给我们了一大堆(x,y),让我们根据这一大堆x和y找出一条直线,这条直线最好能把这一大堆数据划分为两类,并且要求这条直线两边的点最好离这条直线远一点(支持向量机),因为这些点离这条直线远了,一些点被误...
2020-03-30 14:17:21
971
1
求两块74hc595驱动4个8乘以8的led点阵的程序详解及原理
2016-04-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人