zhuxinquan的博客

私信 关注
zhuxinquan61
码龄6年

...

  • 323,016
    被访问量
  • 94
    原创文章
  • 20,969
    作者排名
  • 68
    粉丝数量
  • 毕业院校 西安邮电大学
  • 于 2015-05-20 加入CSDN
获得成就
  • 获得126次点赞
  • 内容获得44次评论
  • 获得144次收藏
荣誉勋章
兴趣领域
  • #运维
    #安全#Linux/CentOS#系统架构#Kubernetes/容器#运维开发#网络#自动化/DevOps
  • #后端
    #Go/GoLang#Linux
TA的专栏
  • Clickhouse
    1篇
  • Docker&k8s
    1篇
  • ES
    1篇
  • JAVA
    27篇
  • Spring
    7篇
  • Web
    14篇
  • LinuxC编程
    13篇
  • Linux应用
    6篇
  • LinuxC文件操作
    7篇
  • 算法与数据结构
    7篇
  • PHP
    2篇
  • Golang
    12篇
  • 操作系统
    1篇
  • 网络爬虫
    4篇
  • Cgroups
  • 数据库
    9篇
  • JSP
    1篇
  • 网络安全
    1篇
  • 工具
    8篇
  • 计算机网络
    3篇
  • servlet
    1篇
  • SpringMVC
    1篇
  • React
    1篇
  • Shell
    2篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

go mod replace 解决 fork 项目的引入问题(module declares its path as Axx, but was required as Bxx)

背景使用第三方依赖包,有自己的需求需要进行改造, fork 之后进行了改造,然后推送到自己的项目中,再去进行构建的时候,报错如下:module declares its path as Axx but was required as Bxx意思是说,我的这个项目引入的依赖路径不对,因为依赖的项目本身是使用go mod进行依赖管理的,而我在 fork 之后项目在 gopath 中的路径已经发生了变更,两者不一致导致这个错误的出现。个人开发,无论是bug、功能、公司私有仓库的一些原因,可能还是会遇上
原创
325阅读
0评论
0点赞
发布博客于 2 月前

Code:170.DB::Exception: Received from localhost:9000. DB::Exception: Requested cluster xxx not found

Received exception from server (version 20.10.3):Code: 170. DB::Exception: Received from localhost:9000. DB::Exception: Requested cluster 'kcdnbandwidthonlinech' not found.0 rows in set. Elapsed: 0.017 sec.Clickhouse 完整报错如上,猜测你也是自己在搭建 clickhouse,然后去创建
原创
275阅读
0评论
0点赞
发布博客于 2 月前

grafana 安装 clickhouse 数据源插件

1. 使用grafana-cli 安装官方的帮助手册:https://grafana.com/grafana/plugins/vertamedia-clickhouse-datasource/installation官方推荐是使用 grafana-cli 工具来安装的,不过我的线上机器因为网络还是版本的原因,安装没有反应,那就使用第二种方式来安装2. 使用zip安装包安装在这里下载文件上传至插件指定的目录,默认目录是 /var/lib/grafana/plugins解压缩,解压缩之后是作为
原创
116阅读
0评论
0点赞
发布博客于 2 月前

Golang的Mutex是值传递还是引用传递?

为什么会有这个问题?突然看到函数传参的问题,就想知道直接传参,Mutex是传值还是传引用结论值传递Mutex定义type Mutex struct { state int32 sema uint32}看下定义就知道了,结构体,而且里面的字段类型都是普通值类型,那函数传参如果不特定使用指针,那就是值传递抛出一个问题下面代码会报panicfunc TestMutex1(t *testing.T) { mux := sync.Mutex{} mux.Lock() mux.Unlo
原创
446阅读
0评论
0点赞
发布博客于 9 月前

Golang - 使用 bufio 提升高频写文件操作的效率

目录
原创
955阅读
0评论
0点赞
发布博客于 1 年前

harbor从1.2.2升级到1.5.0

目录前言重要提示升级1. 停止老harbor集群2. 备份老版本安装路径3. 下载新版本harbor的安装包4. 下载迁移工具镜像5. 备份 harbor.cfg 以及 数据库相关6. 升级数据库架构(schema)、harbor.cfg 并且 迁移数据7. 启动harbor1.5.08. 如果还有一些不符合预期的再自行调节配置一些问题及解决办法[ERROR] InnoDB: ./ibdata1 ...
原创
467阅读
0评论
0点赞
发布博客于 1 年前

Golang遍历map的同时并发修改map的值

目录背景解决需求问题并发问题举例1 - panic并发问题举例2 - 死锁通过复制map解决问题后记背景如题,有个逻辑设计,在遍历map的同时需要并发的修改map的值解决先说下解决,那就是把map重新复制一份,不是同一个map自然也就不存在并发安全和死锁的问题了,但是因为不是同一个map了,自然是需要注意数据还是否有效的问题了。这个可以通过加锁之后的再次判断来解决。需求问题并发的读写...
原创
2891阅读
0评论
0点赞
发布博客于 1 年前

进程如何主动限制磁盘IO/Reader中数据的读写速度 —— golang 之 io.LimitReader

背景要在agent中实现一个类似于ftp数据源端限速的功能,保证agent在运行过程中长期读取磁盘的时候,不会对磁盘造成压力,影响其它业务。前言说起限流,运维的小伙伴或多或少都知道点,来了20个流量,只能处理15个,则设置限流阈值为15,剩余的5个直接返回错误,这就是最简单理解的限流。然而限速呢?相比限流直接了当的给一个错误的返回值,限速要做的不仅不能返回错误,而且要在一定的时间段内进行响...
原创
1171阅读
0评论
1点赞
发布博客于 2 年前

es 聚合提示 Fielddata is disabled on text fields by default.

解决在查询的字段名加 .keyword如原来的字段名为 xxxx.xxxxx 则在查询时指定字段名为 xxxx.xxxx.keyword背景ES新手一枚,查询数据时报错如题网上查了一通之后,发现大多是如下文:es进行聚合操作时提示Fielddata is disabled on text fields by default可惜我是新手,上文的方案应该是完美且正确的解决方案,...
原创
167阅读
0评论
0点赞
发布博客于 2 年前

Chrome插件之vimium

程序员总是喜欢各种工具,对 vim 一般情况也不陌生,这里推荐一款和vim快捷键类似的chrome 插件 => vimium功能和 vim 快捷键一样的操作网页内容使用既然名字叫 vimium ,那实际上和 vim 的快捷键是类似的,也有一些扩展和变更,自己能用到的快捷键大概有下面所列。看到有一篇简书针对 vimium 快捷键的修改,可能个人习惯不同,我感觉标准的 vim 按键...
原创
323阅读
0评论
0点赞
发布博客于 2 年前

find 命令如何忽略目录以及 -a -o 参数的短路逻辑

近期项目中要使用到find命令,下面两个点彻底搞蒙了我:-prune 参数怎么用-a -o 两个参数的短路逻辑如何理解
原创
640阅读
0评论
4点赞
发布博客于 2 年前

golang exec 执行 shell 如何同步输出/得到执行结果

背景项目中需要执行shell命令,虽然exec包提供了CombinedOutput()方法,在shell运行结束会返回shell执行的输出,但是用户在发起一次任务时,可能在不停的刷新log,想达到同步查看log的目的,但是CombinedOutput()方法只是在完全执行结束才返回整个shell的输出,所以肯定达不到效果,所以,我需要寻找其它方法达到程序一边执行log一边输出的目的。使用重定向...
原创
7525阅读
1评论
1点赞
发布博客于 2 年前

Mac使用brew安装Thrift 0.10.0

本文参考:mac安装thrift.0.10.0brew安装指定版本的软件环境我的brew版本:➜ ~ brew -vHomebrew 1.9.2Homebrew/homebrew-core (git revision 0ff7; last commit 2019-04-29)安装brew首先需要安装 brew ,方式很多,可直接看官网编辑依赖文件然后编辑一个文件 th...
原创
1241阅读
3评论
1点赞
发布博客于 2 年前

Linux 下如何对文件名包含特殊字符的文件进行操作

参考Linux 下如何处理包含空格和特殊字符的文件名上面的文章讲的很详细,我总结出来就是三点(可能不完全,个人认为解决了80%的问题)针对 - 开头的文件需要使用 -- 来告知bash,不要将这里的 - 解释为参数针对其它特殊字符,使用 ' 单引号把文件名括起来针对文件名还包含 ' 或者 " 的情况,就需要交替使用规则针对上述三点分别举例,举例的命令一般都适用 cp、mv、chown...
原创
6029阅读
0评论
1点赞
发布博客于 2 年前

golang中多goroutine时kill信号接收的问题

本文探讨的问题:外部的kill信号能被多线程程序中的多个线程同时接收到吗?结论可以,这里用 golang 进行举例,多个goroutine通过 signal.Notify 注册消息的接收,然后在每个 goroutine 中都可以捕捉到kill的信号实验样例package mainimport ( "fmt" "os" "os/signal" "sync" "syscall...
原创
1730阅读
0评论
1点赞
发布博客于 2 年前

wget命令关于超时的参数(timeout、dns-timeout、connect-timeout、read-timeout)

查看一下wget的man手册,然后随便搜索一下time,就能看到好多时间相关的参数,如下图:这里主要看下这timeout这个参数。–timeout 指的是一次读取数据的超时时间如何理解这个一次读取数据呢?其实他包含了下面三个参数:dns-timeout : dns 解析的时间connect-timeout :链接的时间read-timeout :读取一次数据的时间举个错误用...
原创
9800阅读
0评论
0点赞
发布博客于 2 年前

golang os/exec包用法之Kill进程及其子进程

前言&背景平时在做一些开发时难免要调一些shell脚本或者外部程序,golang提供了exec包很方便的帮我们解决了这个问题。但是当外部程序或者shell脚本夯死就使得我们自身的程序很不稳定。与此同时,当我们已经感知到程序脚本运行出现问题时,我们可能需要立刻对程序进行杀死的操作,但是当我们很自然的想到cmd.Process.Kill()时,我们又遇上了另外一个问题,因为这个操作并没有将...
原创
9688阅读
0评论
2点赞
发布博客于 3 年前

golang struct tag value的语法错误

背景 Bad syntax for struct tag value less… (⌘F1) Inspection info: Verifies that struct tags conform to Go conventions. According to these conventions, tag strings are a concatenation of optio...
原创
2589阅读
0评论
0点赞
发布博客于 3 年前

使用antd开发时遇上的onChange event为空的问题

背景:在使用React进行前端页面的开发,使用antd的Input组件时,本想利用onChange事件的event.target.value获取正在修改的值,但是一直报错为空,下面是控制台的报错信息: This synthetic event is reused for performance reasons. If you’re seeing this, you’re accessi...
原创
12898阅读
3评论
3点赞
发布博客于 3 年前

完美的【去重留一】SQL

借鉴这里的SQL用法,挺全面的:MySQL 【去重留一】一条sql语句完成 思路总结 背景,CSDN网站最近好像在做 http 到 https 的转换,所以之前写的群博中本身博客唯一标示的 url 就出现了变化,导致数据库中存在重复的博客内容解决办法先贴下SQLdelete T_blog from T_blog, (select Title from T_blog wh...
原创
461阅读
0评论
0点赞
发布博客于 3 年前

virtual box启动虚拟机失败 Access denied

下面是我在启动虚拟机时的报错:Runtime error opening '/home/zxq/VirtualBox VMs/win-10/win-10.vbox' for reading: -38(Access denied.)./Main/src-server/MachineImpl.cpp[745] (nsresult Machine::i_registeredInit()).我的情形是在我用
原创
1822阅读
1评论
0点赞
发布博客于 4 年前

Go Get安装一些第三方库-网络问题

原文链接:https://javasgl.github.io/go-get-golang-x-packages/ 侵权联系删除!go在go get 一些 package时候的会由于众所周知的原因而无法下载。比如在安装 bee的时候有可能会遇到无法下载 golang.org/x/sys/unix 的问题。unrecognized import path "golang.org/x/sys/uni
转载
4929阅读
0评论
0点赞
发布博客于 4 年前

CentOS6.7上安装Mysql5.7

环境的配置总是令人作呕,所以这次表明版本条件:首先,这是一台新机器其次,CentOS版本如下:[root@pc ~]# cat /etc/redhat-release CentOS release 6.7 (Final)再者,要安装的Mysql版本如下:[root@pc ~]# mysql --versionmysql Ver 14.14 Distrib 5.7.19, for Li
原创
1773阅读
0评论
2点赞
发布博客于 4 年前

Golang Beego框架之WebIM例子分析

beego框架算是golang比较成熟的一个框架了,最近看了下这个框架其中的一个在线聊天室的例子,觉得还是有很多可以学习借鉴的地方,所以就总结下。这个例子的源码在这里,该例子配合bee工具可以很简单的进行运行。首先看下这个项目的结构:标准的beego框架,各个文件夹包含了不同的功能。然后我们从main.go(这里是WebIM.go)看起:package mainimport ( "githu
原创
4396阅读
1评论
1点赞
发布博客于 4 年前

有关golang package中init方法的多处定义及运行顺序问题

在不了解这个问题之前,在网上搜索一下竟然搜出了两个完全相反的结果,所以打算自己测试下这个问题。首先给出结论:在同一个package中,可以多个文件中定义init方法在同一个go文件中,可以重复定义init方法在同一个package中,不同文件中的init方法的执行按照文件名先后执行各个文件中的init方法在同一个文件中的多个init方法,按照在代码中编写的顺序依次执行不同的init方法下面
原创
14220阅读
1评论
6点赞
发布博客于 4 年前

axel-2.4-1.el6.rf.x86_64.rpm

axel-2.4-1.el6.rf.x86_64.rpm
rpm
发布资源于 4 年前

Centos7源码安装mysql

安装了整整一天的mysql,心好累,不过到现在为止,总算是安装完成。这里就大致回顾以下安装的过程,以防后续还有用。本来Centos安装mysql并不算什么难事,但是经过今天的折腾才算是有了新的认识,之前用的ubuntu,直接apt-get就搞定,换到红帽系还有点丝丝的不习惯。yum安装的方式就自行搜索,这里来看一下我自己源码编译安装的过程以及以下要注意的细节问题。1.卸载原有失败安装残留能够使用源码
原创
2020阅读
0评论
0点赞
发布博客于 4 年前

使用PHP-curl获取验证码并模拟登录教务系统

首先说一下这篇文章的需求,当我们在一些没有提供验证接口的系统中,需要验证用户身份的时候,就可能需要用户登录当前系统,从而确定该用户是当前系统的合法用户,校园的教务系统就是一个典型的例子,我们通过学生自己登录学校的教务系统从而确定该用户为在校生。但是,现如今各式各样的系统为了安全起见,通常都会设置验证码防止恶意攻击,这里就以本校的为例简单介绍一下如何使用PHP-curl请求登录验证码并模拟登录教
原创
5884阅读
0评论
2点赞
发布博客于 4 年前

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

在初次使用SpringMVC编写HelloWorld的时候,运行时报这个错误,在网上搜索一顿基本都是说jar包是否导入或者tomcat的缓存是否清除的问题,然而我的问题定位貌似都不是,最后在stackoverflow上看到如下的答案:I used IntelliJ IDEA, compilation is successful, but when starting Tomcat, it says:E
原创
721阅读
0评论
0点赞
发布博客于 4 年前

Spring事务管理及几种简单的实现

事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败,最为典型的就是银行转账的案例:A要向B转账,现在A,B各自账户中有1000元,A要给B转200元,那么这个转账就必须保证是一个事务,防止中途因为各种原因导致A账户资金减少而B账户资金未添加,或者B账户资金添加而A账户资金未减少,这样不是用户有损失就是银行有损失,为了保证转账前后的一致性就必须保证转账操作是一个事务。事务具有的ACID特性,参
原创
16329阅读
4评论
14点赞
发布博客于 4 年前

Spring事务管理Demo

Spring事务管理Demo
rar
发布资源于 4 年前

使用JSP+Servlet实现文件上传下载

文件的上传下载是在web应用中常用的功能之一,这篇博客就简单的使用纯Jsp+Sevlet完成文件上传下载的功能。平时在做一些数据提交的时候通常使用表单,在form表单有一个属性enctype,该属性规定在发送到服务器之前应该如何对表单数据进行编码。属性通常取以下值: 值 描述 application/x-www-form-urlencoded 在发送前编码所有字符(默认) mult
原创
869阅读
0评论
0点赞
发布博客于 4 年前

java.lang.NoClassDefFoundError与aspectjrt、aspectjweaver的联系

首先,关于NoClassDefFoundError这个问题是什么,可以参照这里在上面有关NoClassDefFoundError这个错误,有这么一段话:NoClassDefFoundError发生在JVM在动态运行时,根据你提供的类名,在classpath中找到对应的类进行加载,但当它找不到这个类时,就发生了java.lang.NoClassDefFoundError的错误,而ClassNotFou
原创
2226阅读
0评论
0点赞
发布博客于 4 年前

满二叉排序树中查找三个节点的最小子树的根节点

题目描述:于一棵满二叉排序树深度为k,节点数为2^k-1;节点值为1至(2^k - 1),给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点。样例输入:4 10 15 13样例输出:12首先,我们来理解一下满二叉排序树,如下就是一个4层的满二叉排序树: * 8 * / \ * 4 12 * / \ / \
原创
4824阅读
4评论
1点赞
发布博客于 4 年前

跳跃表的原理及Java实现

原理参考:SkipList跳表这里我使用Java实现其原理:首先是SkipListNode的定义:SkipListNode.javapackage skiplist;/** * Created by zhuxinquan on 17-3-11. */public class SkipListNode implements Comparable { private int value;
原创
3998阅读
0评论
2点赞
发布博客于 4 年前

小球在矩形框内45°碰撞问题

问题描述:在一个矩形框内长w, 高h,现在在底边某一点举例左端点x位置处有一弹性小球(可视为质点)向右上方45°发射,碰撞忽略能量损耗,继续45°弹出,输出在前n次碰撞到底边时每次碰撞的位置。首先说一种比较繁琐的思路:碰撞本身是一个过程,我们只需要将所有的可能性考虑到位就好,首先,我们定义如下几个变量用来确定当前的状态:pos 表示当前的位置在哪条边上,我们默认从顶上顺时针分别为1, 2, 3,
原创
1799阅读
0评论
0点赞
发布博客于 4 年前

判断字符串中是否包含连续相同的字符串(密码规范)

CVTE的一道笔试题:判断密码设置是否满足要求,要求如下:长度大于等于8位且小于等于16位至少包含大写字母、小写字母、特殊字符和数字中的三种密码中不能包含连续相同的字符串,如cc,cvtecvte等都是不符合规范的C语言实现如下:/************************************************************************* > F
原创
5307阅读
1评论
3点赞
发布博客于 4 年前

计算机网络——数据链路层

在ISO提出的OSI七层模型中,数据链路层处于第二层。在这一层,我们重点关注点对点之间的通信。关于点对点通信,是指网内任意两个用户之间的信息交换。在这里不过多的搬抄书上的概念,计算机网络的学习应当是以生活中的实践作为基础,来加深理论的理解。1.数据链路层首先,如同在概述中提到的一样,我们研究网络应当时刻站在分层的角度去研究,那么两台主机之间的通信,有关数据链路层的通信如下:如果我们站在数据链路层的角
原创
729阅读
1评论
1点赞
发布博客于 4 年前

计算机网络——物理层和信道复用(频分、时分、码分)技术

1.物理层如果一定要给物理层下定义,只能说是OSI模型中的最低层,实际上物理层考虑的是怎样才能在各种媒介上传输数据,而并非具体的传输媒体,物理层的主要任务是确定与传输媒体接口有关的一些特性,即:机械特性:尺寸、形状等电气特性:线路上电压范围功能特性:线路上电压高低表示的意义过程特性:各种事件的顺序2.数据通信系统上图是一个比较常用的通信系统的模型,PC产生的数字比特流经调制解调器转换成模拟
原创
12384阅读
0评论
7点赞
发布博客于 4 年前

计算机网络——概述

网络:网络的概念是什么?它是由若干节点和连接节点的链路组成,那么什么是节点?节点是包括计算机在内和集线器、交换机、路由器等等一些设备。网络分为三部分,包括电信网络、有线电视网络和计算机网络,随着技术发展,电信网络和有线电视网络已经融入计算机网络的范畴,这里我们主要了解一下计算机网络。这里还有好几个概念,像互联网、因特网等,我们大概看一下之间的关系:网络和网络通过路由器连接起来就构成了互
原创
796阅读
0评论
0点赞
发布博客于 4 年前

Spring中的增强类型

Spring通过增强类型定义横切逻辑,同时由于Spring只支持方法连接点,增强还包括了在方法的哪一点加入横切代码的方位信息,所以增强既包括横切逻辑,还包括部分连接点的信息。增强包括以下几类:前置增强:org.springframework.aop.BeforeAdvice代表前置增强,表示在目标方法整形前实施增强后置增强:org.springframework.aop.AfterReturni
原创
1276阅读
0评论
0点赞
发布博客于 5 年前

Spring AOP之动态代理

Spring AOP中包含两种AOP代理方式,分别是JDK动态代理和CGlib动态代理首先看一下JDK动态代理。JDK动态代理主要设计到java.lang.reflect包中的两个类:Proxy和InvocationHandler.其中InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态将横切逻辑和业务逻辑编织在一起。P
原创
382阅读
0评论
0点赞
发布博客于 5 年前

解决IDEA使用maven慢的问题

idea自带maven插件,但是很多时候直接去使用该插件会发现尤其的慢,慢到你开是怀疑人生。。。首先,慢是由两个原因产生的:maven每次进行创建的时候回去网上下载artheType-catalog.xmlmaven自带的仓库好像是国外的,访问起来比较慢针对这两个问题,我们逐一解决首先是下载artheType-catalog.xml文件的问题,这个文件不容小视,看下图就知道大概有多少了:大概有
原创
14440阅读
0评论
4点赞
发布博客于 5 年前

Java中的反射和类装载器

首先通过一个简单的例子看一下Java中的反射,如下,是一个Car类:Car.javapublic class Car { private String brand; private String color; private int maxSpeed; public Car(){System.out.println("init car!!");} public Ca
原创
682阅读
0评论
0点赞
发布博客于 5 年前

Java中的资源访问和加载

传统的Java资源文件的访问通过JDK中的File、URL类难以满足各种不同需求的资源加载,这里有Spring中设计的Resource接口提供更加强大的访问底层资源的能力。下面是Resource接口的主要方法:boolean exists():资源是否存在boolean isOpen():资源是否打开URL getURL() throws IOException:如果底层资源可以表示
原创
1562阅读
0评论
1点赞
发布博客于 5 年前

archetype-catalog.xml

archetype-catalog.xml、maven
xml
发布资源于 5 年前

基于S2SH的注册登录系统练习Demo

这里通过一个小的登录注册系统练习使用整套的S2SH框架,虽然整体架构不大,但也基本可以说明整个S2SH框架的组成部分和工作流程。这里我会首先摆出整个系统的组成部分以及源码,然后大致浏览一下这个框架各个组成部分的工作流程,最后说一下我所遇到过的坑!S2SH就是Struts2、Spring以及Hibernate三大框架的整合,具体的各个框架的工作原理自行搜索,这里只是一个简单的说明。先看一下整个框架整合
原创
1588阅读
0评论
0点赞
发布博客于 5 年前

Spring框架之AOP简析

面向切面编程(AOP)是一种设计思想,是把应用软件分成两个部分:核心关注点和横切关注点在没有使用到AOP框架的时候我们经常会产生大量的重复的代码,尤其是在事务处理、日志记录等方面。由于这些经常是相同并且重复使用的代码,我们可以使用AOP框架将技术问题实现代码和业务处理(如日志)的实现代码分离,降低了两种代码的耦合性,利于代码的维护和重用。我们大致上可以这样理解AOP:面向对象编程(OOP)的思想主
原创
345阅读
0评论
0点赞
发布博客于 5 年前

Spring框架之IoC

控制反转(IOC)是将由程序控制的”对象间的依赖关系”转交给IoC容器来进行控制首先,控制反转是为了降低调用者和被调用者之间的依赖关系,在通常的程序设计过程中,调用者通常会直接使用new关键字创建被调用者的实例,这样就造成了调用者和被调用者之间的耦合度很高,不利于软件的移植和维护。
原创
472阅读
0评论
0点赞
发布博客于 5 年前

validator-rules.xml配置文件

Validator框架可以很方便的实现对表单的验证,配合struts1框架的插件技术进行实现。首先Validator框架有validation.xml和validation-rules.xml两个配置文件,我们需要配置validation.xml文件,并将这两个文件部署到Web应用的/WEB-INF文件夹下(建议),这里没有说到配置validator-rules.xml。因为这个配置文件中包含
原创
2401阅读
0评论
0点赞
发布博客于 5 年前

Diffie-Hellman密钥交换

上篇说到了RSA公钥加密算法,这里看一下D-H密钥交换。首先我们看一下数学上的概念: 本原根:我们定义素数p的本原根为其乘方能够产生从1到p - 1的所有整数的数比如:若a是素数p的本原根,那么下列数字:a mod p, a^2 mod p ,…… ,a^(p - 1) mod p是互不相同的数字, 并且以某种排列包含了从1~p - 1的所有整数。也就是说,对于任何小于 p 的整数 b 和 素
原创
851阅读
0评论
0点赞
发布博客于 5 年前

RSA公钥加密算法

首先看一下对于明文块M和密文块C,加密和解密使用的两个公式(形式):在这里,发送者和接受者都必须知道n和e的值,而且只有接受者知道d的值(这就是接受者的私钥,私钥很重要)。所以,这种公钥加密算法的公钥KU={e, n}, 私钥 KR={d, n}。网络安全有关加密这部分对数学的要求还是蛮高的,这里就简单的说一下公钥和密钥的生成过程,然后通过一个例子简单使用模拟一个解密的过程:首先选
原创
6434阅读
0评论
2点赞
发布博客于 5 年前

Cannot find message resources under key org.apache.struts.action.MESSAGE

这个异常是在练习使用struts1框架的标签库时遇到的!该语句表示的原因是:源配置文件未找到!一般也就是路径使用的不对,不过我在练习struts1框架中并没有看到加载配置文件的部分,既然是struts1框架,主要的还是struts-config.xml这个配置文件,没错,直接在这个里面编写路径就可以了,如下:<struts-config> <message-resources paramet
原创
1033阅读
0评论
0点赞
发布博客于 5 年前

一个群博系统的简单实现

首先说一下背景:小组内的群博本来是有的,但是由于成员博客种类的不同,不同的博客平台提供的rss订阅的标签不相同,因而使用统一的抓取会因为标签的不同而终止。关于rss订阅的规范可以查看RSS2.0规范简易说明。群博的页面链接是:西邮linux兴趣小组群博一个简单的群博分为两个部分,一个是抓取的部分,一个是展示的部分,首先说一下抓取的部分。博文的抓取本身rss订阅会提供很多的信息供用户阅读,但是这里实现
原创
4975阅读
9评论
1点赞
发布博客于 5 年前

使用过滤器防止简单的页面SQL注入

在之前写的一个群博系统中,在上线一段时间后,被自己人发现了一个天大的漏洞——SQL注入,自己也是第一次遇到,真是难以置信,后来看到这样一篇文章:java类过滤器,防止页面SQL注入。自己修改了一下,可以解决一般的SQL注入了(最起码使用sqlmap这种工具没有造成注入)。首先说一下在我的系统中造成SQL注入的原因:大量的SQL语句拼接——为了能够根据不同的请求参数在同一个页面查询后展示,所以在主页
原创
8268阅读
1评论
1点赞
发布博客于 5 年前

JDBC使用ResultSet卷动、更新数据

通常,我们在使用JDBC的ResultSet时,默认使用next()移动数据至下一个数据,然后使用getXXX()方法来获得数据,但是这样并不方便,比如在访问完一个数据项后,想向前或者向后、寻找第一条或者最后一条记录项,或者在查看某个数据项后想更新该数据项,这是就用到了JDBC提供的ResultSet卷动、更新数据了。###结果集类型与并行方式在使用Connection的createStatement
原创
3283阅读
0评论
3点赞
发布博客于 5 年前

JDBC的批次更新

对于数据库的操作,每一次执行executeUpdate(),其实都会向数据库发送一次SQL,每次发送都等同于通过网络进行了一次信息传送。而网络传送信息实际上必须启动I/O、进行路由等动作,这样进行大量更新,当执行的次数过多时,性能会很低,因此批量更新显得尤为重要!在使用批量更新之前我们进行大量数据更新是使用如下的代码段:Statement stmt = conn.createStateme
原创
1590阅读
0评论
1点赞
发布博客于 5 年前

Struts1的工作流程

Struts1的工作流程图如下所示:其工作流程如下:当Web服务器启动的时候,根据web.xml文件加载并初始化ActionServlet,根据配置ActionServlet的config参数信息,确定struts-config.xml配置文件存放的位置,并根据Servlet映射配置确定其拦截处理的URL,例如,拦截请求的后缀是.do的UR。根据struts-config.xml中的配置信息,为s
原创
3448阅读
3评论
2点赞
发布博客于 5 年前

JSTL标签库学习总结

核心标签库:流程处理标签:<c:if>:这个标签可以根据某个表达式的结果,决定是否显示Body内容。<c:if>标签的test属性中可以放置EL表达式,如果表达式的结果是true,则会将<c:if>Body输出。<c:chosse>、<c:when>、<c:otherwise>:这些标签在某些条件成立时显示某些内容,不成立时就显示另一些内容。<c:when>及<c:otherwise>必须放在<
原创
490阅读
0评论
1点赞
发布博客于 5 年前

JavaWeb中的Model 1与MVC/Model 2架构比较

MVC/Model 2架构在Model 2架构中,请求处理、业务逻辑处理以及画面呈现被区分为三个不同的角色职责,在分工合作开发时,使用Model 2架构可以理清职责界限,网页设计者与Java代码或请求处理以及商务模型原件的设计之间不用相互考虑太多,分工较为明确。如下图是基于请求/响应修正的MVC而产生的Model 2结构: 在使用servlet来完成视图如上图,如果将视图部分改用JSP,模型部
原创
2324阅读
0评论
1点赞
发布博客于 5 年前

Tomcat修改80端口监听及虚拟主机的配置

Tomcat默认的访问监听端口是8080,但是在网址栏输入IP再加上端口难免有些麻烦,同时如果使用IP进行解析,只能解析到对应的IP,无法直接通过浏览器默认的80端口进行访问,因而我们可以修改Tomcat默认监听的端口为80,这样就可以方便的通过浏览器进行访问了。修改Tomcat默认监听端口的配置文件在Tomcat安装目录下的conf/servel.xml,找到下面这部分: <Connecto
原创
6652阅读
0评论
3点赞
发布博客于 5 年前

JavaWeb项目在Tomcat中的部署

要部署一个javaweb项目,首先必须进行环境变量的配置,同时在tomcat的环境变量也必须进行配置:在官网下载tomcat的tar包,然后解压放到自己指定的目录,这里我指定的是/opt/编辑/etc/profile文件,在末尾添加如下:export TOMCAT_HOME=/opt/apache-tomcat-8.0.32export CATALINA_HOME=$TOMCAT_HOME
原创
1979阅读
0评论
1点赞
发布博客于 5 年前

包与访问控制权限及错误: 找不到或无法加载主类

在大家要在命令行模式下执行一个程序的时候,就有可能遇到这样一个错误:错误: 找不到或无法加载主类 TestPackage但是往往程序的编写是正常的,并且在IDE中执行的结果是正常的,首先贴上一个测试的全部源码:package test_package;/** * Created by zhuxinquan on 16-7-23. */public class TestPackage {
原创
2323阅读
2评论
2点赞
发布博客于 5 年前

内部类

内部类是在一个类的内部定义的类,内部类主要包括以下几种:成员内部类方法内部类静态内部类匿名内部类其中匿名内部类又包括以下几种:继承式匿名内部类接口式匿名内部类参数式匿名内部类直接扔几个示例的代码,注释基本就够用了首先看一下成员内部类,成员内部类的声明和使用如下:package inner_class;/** * Created by zhuxinquan on 16-7-21.
原创
532阅读
0评论
0点赞
发布博客于 5 年前

字符串编译期与运行期分析及字符串常量池

首先直接看这样的两个字符串的声明: String s1 = new String("TestString"); String s2 = "TestString";对于这样两个字符串的声明在内存中的分布如下图: 字符串s1由于是new的结果,那么首先s1作为一个变量会在栈内存中开辟空间用来保存该变量,然后在堆内存中开辟一块空间用来保存这个字符串对象,同时,也正是因为s1作为一个字符串,在
原创
1162阅读
0评论
2点赞
发布博客于 5 年前

JAVA基础之装饰者模式

所谓装饰者模式就是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。首先装饰者模式通常包含下面几个部分:被装饰者对象的接口具体的被装饰者对象装饰者基类具体装饰者对象这里简单用一个豆浆的口味来举例装饰者模式:豆浆可以通过加不同的辅料来改变豆浆的口味,比如此处使用的是豆浆口味有牛奶、鸡蛋、糖,因而就可以构成不同口味的豆浆,比如
原创
541阅读
0评论
0点赞
发布博客于 5 年前

JAVA多线程之生产者消费者模型

生产者消费者模型是多线程当中比较经典的一个模型,该模型模拟线程间公用同一个对象,通过调度不同的线程休眠、等待和唤醒起到预防死锁的作用。首先列举一个线程死锁的例子,下面这个例子是模拟服务生和顾客争执先服务和先收钱而产生的死锁问题,代码如下:package deadlock;/** * 以顾客和服务生对峙举例死锁 * Created by zhuxinquan on 16-1-26. */
原创
1686阅读
0评论
0点赞
发布博客于 5 年前

对象比较器

在程序设计的过程中,经常会遇到需要进行排序的东西,对于一般的数字排序,有着各式各样的排序函数可以使用,但是他们经常是采取默认的方法进行排序的,当我么需要进行自定义的排序的时候,我们就需要自定义一个排序的方法,也就用到了对象比较器。对象比较器可以自己定义比较的对象按照某一属性进行排序,实现该方法有两种途径:实现Comparable接口实现Comparator接口对于这两种方法分别用两个实例代码举
原创
530阅读
0评论
0点赞
发布博客于 5 年前

JAVA实现程序多语言(程序国际化)

程序多语言实际就是在不同的地区根据主机不同的设定去匹配与之对应的语言环境。要实现多语言环境首先可以通过Locale类创建一个本地语言环境对象,如下有三种方式: Locale locale = new Locale("zh", "CN"); Locale locale1 = Locale.US; Locale locale2 = Locale.getDefault();第一个是通过指定语言
原创
19266阅读
5评论
6点赞
发布博客于 5 年前

Ubuntu下创建桌面启动器

在linux下的软件经常会是一些tar包直接下下来了,然后解压之后直接通过shell找到启动文件执行后使用,但是像eclipse这样比较常用的软件cd /usr/share/applicationsvim eclipse.desktop[Desktop Entry]Version=1.0Name=eclipseExec=/home/jason/Downloads/eclipse/ec
原创
1270阅读
0评论
0点赞
发布博客于 5 年前

mysql常用命令总结

查看数据库show databases;创建数据库create database 数据库名称;删除数据库drop database 数据库名称;改变/使用 数据库use 数据库名称;查看表中所有的数据信息select * from 表名;创建表create table 表名( 列名1 数据类型, 列名2 数据类型, ……);
原创
492阅读
0评论
1点赞
发布博客于 5 年前

RSS2.0规范简易说明

直接贴上一个rss的说明,标签的注释部分代表可选标签,内部子标签同样使用注释代表可选标签。<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="url"?><rss version="2.0"> <channel> <title>订阅频道名称</title>
原创
1311阅读
0评论
1点赞
发布博客于 5 年前

西邮linux兴趣小组2016纳新免试题level_1

当打开免试题链接的时候,大家看到了这样一个页面: 毫无疑问点击START,当你还想着和去年一样图片里面含有一些东东的话,那么你可能得走一些弯路了。点击START进去之后会看到这样一个页面: 然后发现这个简单的页面只有中间的数字可以点击,点击多次之后就会发现你进入死循环了,2006=>2007=>2008……2015=>2006=>2007…… 遇上这样的情况我们首先看一下网页的源码<
原创
1553阅读
0评论
1点赞
发布博客于 5 年前

HttpClient返回403 forbiddenn问题

想要做一个群博(本身是有的,由于CSDN的rss订阅不符合规范没法进行抓取,自己打算手动实现抓取操作),但是通过HttpClient进行网页源码获取的时候竟然发现返回的是403 forbidden,有点尴尬了。然后网上查找资料之后发现说是要设置请求参数,然后想着是不是HttpClient是不是有什么setParameter方法,找了一下果然有,然后向下面这样设置了参数: HttpClient
原创
6774阅读
0评论
2点赞
发布博客于 5 年前

内存分区分配算法

在多道程序的存储管理模式中,分区分配算法显得尤为重要。这里主要说一下动态分区分配算法。 主要有下面五种分配算法:首次适应算法循环首次适应算法最佳适应算法最坏适应算法快速适应算法对于这几种方式的算法,可以说各自有其优缺点,或许它的优点正好就是它的缺点呢!首次适应算法顾名思义,首次适应是从空闲链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止,然后按照作业的大小,从该分区中划出一块
原创
4183阅读
0评论
3点赞
发布博客于 5 年前

JDBC连接并使用mysql数据库

数据库在开发过程中是非常容易使用到的,在java的开发中也有一套工具方便我们对于数据库的连接和操作,那就是jdbc。jdbc是一套连接数据库的工具,在使用时,通常包括以下步骤: 1. 加载数据库驱动程序——jdbc作为工具并不包含在jdk中,我们在使用前需要去加载该类 2. 获取数据库连接对象——如同访问网站一样,我们需要建立与数据库的链接 3. 构造sql语句——sql语句为字符串,如同在sql客户端执行
原创
1485阅读
1评论
3点赞
发布博客于 5 年前

SAX解析XML

SAX:是Simple API for XML的简写,既是一种接口,也是一种软件包。SAX是一种XML解析的替代方法。SAX不同于DOM解析,它逐行扫描文档,一边扫描一边解析,所以它内存占用少,对于大型文档的解析是个很好的优势。首先是解析的步骤: 1. 创建SAX解析器工厂对象; SAXParseFactory spf = SAXParserFactory.newInstance(); 2.
原创
460阅读
1评论
0点赞
发布博客于 5 年前

使用DOM解析XML文件

XML是一种可扩展的标记语言,首先它是一种标记语言,类似于HTML,有标签,标签有属性,然而与HTML不同的是XML的标签是可以自己定义的,这样就方便我们存储一些有层次结构的内容!这里要说的是使用DOM去解析XML文件:首先,DOM是一种文档对象模型(Document Object Model),使用DOM解析时会将XML文档表示为树状,具有层次性。如下是一个xml文件的例子:
原创
1513阅读
0评论
0点赞
发布博客于 5 年前

JavaIO操作之 字节 输入输出流

在Java中IO流主要分为两大部分:字节流和字符流,这里要说的就是第一种字节流字节流也分为两大部分:输入流和输出流首先是输入流:输入流包含以下3种简单的输入数据的方法:read(); //从输入流中读取数据的下一个字节,返回一个int型字节,如果因为已经到达流末尾而没有可用的字节,则返回值 -1。read(byte[] b); //从输入流中读取一定数量的字节,并将
原创
595阅读
0评论
0点赞
发布博客于 5 年前

一个简单的爬虫(1)

在学习了简单的java语法之后,练习使用java做一个简单的爬虫,将一个电影网页的电影介绍爬下来,首先需要了解爬虫是什么! 网络爬虫(简称爬虫,又名网页蜘蛛、网络机器人),是一种按照按照一定的规则,自动地抓取万维网信息的程序或者脚本。在了解了网络爬虫的概念之后,我们需要知道如何去爬,首先我们需要获取到这些信息,如同我们访问网页请求链接返回我们需要的数据一样,我们需要首先获取到网页的信息,这里我
原创
794阅读
0评论
0点赞
发布博客于 5 年前

关于包装类自动装箱时是否产生相同对象

在java中,包装类可实现自动装箱拆箱,一般情况下自动装箱会产生一个新的包装类对象,但是对于部分特殊的基本类型值,系统将保证其两次装箱产生的是同一个对象。
原创
1101阅读
0评论
1点赞
发布博客于 6 年前

子类和父类构造方法的执行先后问题

在java中如果一个类中没有显式的使用super()进行调用超类的构造方法,则在执行子类构造方法之前会首先待用父类的构造方法,如下:/** * Created by zhuxinquan on 15-11-24. */class Circle{ double radius = 10; public Circle(){ //this(0); Syst
原创
3913阅读
0评论
2点赞
发布博客于 6 年前

PHP中的数组处理函数

php中数组是一种非常重要的数据组织方式,下面列举一些常用的数组处理函数。foreach(),array_walk(),,array_values(),array_keys(),in_array(),array_key_exists(),array_flip(),array_reverse(),count(),array_count_values(),array_unique(),array_filter()
原创
2205阅读
0评论
1点赞
发布博客于 6 年前

利用堆栈实现表达式求值

栈(stack)又名堆栈,它是一种运算受限的线性表。        栈的限制是仅允许在表的一端进行插入和删除运算。我们正是利用栈的这种特性来实现表达式求值。对于表达式求值的运算需要注意的一大问题就是运算优先级的比较,我们利用两个栈将操作数和运算符分开存放,当第一次遇到数字时我们将其压入栈低然后继续向后获取表达式的值,当遇到第一个符号时我们也将其压入栈低,不过在符号栈的初始化的过程中,我们应当首先向其中存入一个参考
原创
8629阅读
1评论
6点赞
发布博客于 6 年前

Josephus问题分析与实现

Josephus问题:编号为1,2,3,……n的n个人按顺时针方向围坐在一张圆桌周围,每人持有一个密码(正整数)。任选一个正整数作为报数上限值值m,从第一个人开始按顺时针方向自1开始报数,报到m的人出列,并将他的密码作为新的密码,重新从1开始报数,依次出列,直至所有人全部出列为止!问题分析:创建循环链表原始循环链表的打印判空操作约瑟夫环操作
原创
3645阅读
1评论
1点赞
发布博客于 6 年前

php-5.2.6.tar.gz

php-5.2.6.tar.gz,php开发源码包
gz
发布资源于 6 年前

mysql-5.0.41.tar.gz

mysql-5.0.41.tar.gz,安装php所需,数据库
gz
发布资源于 6 年前

libmcrypt-2.5.8.tar.gz

libmcrypt-2.5.8.tar.gz ,安装php环境所需源码包
gz
发布资源于 6 年前

gd-2.0.33.tar.gz

gd-2.0.33.tar.gz,安装php环境所需源码包
gz
发布资源于 6 年前

freetype-2.3.5.tar.gz

freetype-2.3.5.tar.gz,php安装环境所需源码包
gz
发布资源于 6 年前

autoconf-2.61.tar.gz

autoconf-2.61.tar.gz,php安装环境所需的源码包
gz
发布资源于 6 年前

简单的client/server模型

所谓client/server简单来说就是客户端服务器模型,简称C/S模型,一个简单的CS模型所用到的只是一些简单的网络方面的知识,下面我以一个面向连接的CS实例来解释面向连接的主要过程: 首先我们想看一张图,来了解一下服务器端和客户端的链接过程: 首先是服务器端,服务器首先要创建套接字,然后将其绑定到本地端口,之后将其转换为链接套接字,之后就时阻塞等待客户端的连接了。在这里解释一下端口和I
原创
6480阅读
0评论
3点赞
发布博客于 6 年前

feof与块读写

feof 与块读写feof是用来判断文件是否到达文件尾的一个函数,当读到一个文件的末尾时返回非零值,若没有到末尾则返回0
原创
672阅读
0评论
0点赞
发布博客于 6 年前

多线程之互斥锁、条件变量

多线程互斥锁条件变量
原创
1049阅读
0评论
0点赞
发布博客于 6 年前

线程清理处理程序

linux提供了一对函数用于自动释放资源,声明如下: #include <pthread.h> void pthread_cleanup_push(void (*routine)(void *), void *arg); void pthread_cleanup_pop(int execute);线程可以建立多个清理处理程序,清理处理程序的执行顺序与注册时顺序相反。启动例程
原创
1814阅读
0评论
4点赞
发布博客于 6 年前

库函数apue.h

unix网络编程中要使用到的库函数,该库函数中包括了错误处理的函数
h
发布资源于 6 年前

实现自己的myshell

在linux环境下,编写自己的shell命令行的参数解析以及带有空格的目录名解析
原创
5332阅读
0评论
6点赞
发布博客于 6 年前

进程退出以及内存释放

进程的正常退出与异常退出各种退出方式的比较
原创
5286阅读
0评论
0点赞
发布博客于 6 年前

LinuxC系统编程——进程控制(1)

linux进程进程标识用户ID和组IDlinux进程的结构进程状态进程控制进程的内存映像进程的创建孤儿进程vfork函数创建守护进程
原创
882阅读
0评论
0点赞
发布博客于 6 年前

vim 配置文件

vim的简单配置文件,下载后解压之后,加执行权限,即可自动配置vim
sh
发布资源于 6 年前