项目开发问题
文章平均质量分 77
本专栏汇总笔者在日常项目开发过程中碰到的问题,解决过程,以及个人的思考,作为网络笔记,方便以后使用时检索!
毕小宝
技术路漫漫,仍然在路上的 Java 程序员!
展开
-
问答频道有价值的问题整理
CSDN 有一个问答模块,经常看看问答也是很有启发的,这里整理一些这些今年看到的有价值的问题。IDEA 编辑的功能IDEA 强大的自动代码补全功能快捷键 Tab,代码标签输入完成后,按Tab,生成代码。div.class.out + Tab常用的有 fori/sout/psvm+Tab 即可生成循环System.out、main 方法等 boilerplate 样板代码,要输入 for...原创 2019-10-24 19:02:16 · 287 阅读 · 0 评论 -
一个完整的 Zookeeper 集群自动部署脚本
背景我们知道 Kafka 作为一个比较流行的消息中间件,它的集群部署是依赖于 Zookeeper 的,所以集群不是的第一步就是部署 Zookeeper 集群,并记录 Zookeeper 集群信息,将其作为 server.properties 配置中 zookeeper.connect 的值。本文就来实现一个 Zookeeper 集群自动部署脚本。手动部署流程Zookeeper 部署流程,还...原创 2019-10-22 09:23:35 · 1043 阅读 · 0 评论 -
Shell 脚本中 3>&1 1>&2 2>&3 的含义
用了一下 whiptail 工具实现在 shell 脚本以图形界面方式进行交互,据其 使用文档 上的说明,这个工具好古老啊,竟然是 1998 年开发出来的。原创 2019-09-11 17:47:39 · 4445 阅读 · 0 评论 -
3 分钟带你了解一封邮件的收取过程
背景我们常使用邮件客户端,如 Foxmail 、Outlook 等收发邮件。大家应该了解邮件协议基础知识吧,发送邮件是通过 SMTP 协议完成,收取邮件则走的是 POP3 协议。由于工作原因,笔者曾对邮件协议的通信过程进行过完整的分析,这里承接上一篇 SMTP 协议,继续分析一些 POP3 协议的处理流程。POP3 协议基础POP3全称为「 Post Office Protocol - Ve...原创 2019-08-21 18:22:29 · 534 阅读 · 0 评论 -
HMM 基本问题的公式推导及 Java 实现(三)
HMM 的预测问题HMM 预测问题的定义:给定模型 λ=(A,B,π) 和观测序列 Q={q1,q2,…,qT},求给定观测序列条件概率 P(I|Q,λ)最大的状态序列 I 。即推导一组使得目标观测序列产生的概率最大的状态序列。单个状态的概率求给定模型 λ 和观测序列 Q 的情况下,在时刻 t 处于状态 si 的概率,记作:这是单个状态的概率定义,其意义是用于判断在每个时刻最可能...原创 2019-08-05 18:16:26 · 639 阅读 · 0 评论 -
3 分钟带你了解一封邮件的发送过程
背景我们常使用邮件客户端进行收发邮件,如 Foxmail 、Outlook 之类的,发送邮件通过 SMTP 协议完成,收取邮件走的是 POP3 协议,但是这些协议的通信过程是怎么样的呢?...原创 2019-08-12 08:51:40 · 3549 阅读 · 0 评论 -
用 Java 实现贪吃蛇小游戏
程序说明这是一个用 Java Awt 实现的贪吃蛇小游戏的完整代码算法分析(一)启动一个独立线程根据 direction 重绘面板实现蛇身移动效果,运行过程:记录上次头部的坐标到 tempBody 中根据方向修改头部坐标重绘面板判断头部坐标与食物坐标的关系,如果重合则蛇身增加,同时生成新的食物坐标,积分累加判断与边缘的关系,如果重叠,则游戏结束判断与 body 的关系,如果重叠...原创 2019-08-02 18:25:53 · 897 阅读 · 0 评论 -
HMM 基本问题的公式推导及 Java 实现(二)
后向概率公式及推导过程1.后向概率定义给定 λ,定义到时刻 t ,部分观测序列为 q1,q2,…,qt 且状态为 si 的概率为前向概率。记作: αt(i) = P(q1,q2,…qt,st=si | λ)。2.后向概率的初始条件根据定义,第一个时刻的前向概率是 α1(i)=P(q1,s1=si| λ) ,给定观察模型下,第一个时刻的状态为 Si 且观测结果为 q1 。这个值很容易用 H...原创 2019-07-31 06:39:45 · 840 阅读 · 0 评论 -
Windows10 操作系统下 MongoDB 安装过程
背景工作需要了解百度的 OpenRASP 产品,它的服务端依赖的数据库是 MongoDB 和 ElasticSearch ,本文记录在初识 MongoDB 数据库过程中的一些简单问题。安装1.下载安装文件到 MongoDB 官方 下载中心下载 Windows 的最新稳定版本。2.本地安装双击安装文件,走推荐默认安装,完成后选择自动重启主机。3.服务信息推荐的安装会自动创建一个服务名...原创 2019-07-29 15:33:29 · 407 阅读 · 0 评论 -
IDEA 文件夹颜色对目录的影响分析
背景一个网友发了一个 IDEA 的简单工程,名为 test ,导入本地后,中途不经意间做了什么操作导致工程目录中没有文件、看不到正常的目录结构了。虽然玩 IDEA 的时间不长,但 “ 事出必有因,有因必有果 ” ,这个问题是怎么产生的呢?网络上搜索也有类似问题,但跟这种现象不一样。问题分析打开一个正常的工程对比,发现工程文件夹的颜色不一样:正常的工程目录结果如右图,是蓝色的异常的结...原创 2019-07-21 06:47:01 · 8263 阅读 · 0 评论 -
Git Bash 提交文件过程整理
背景工作中使用的代码管理工具是 SVN ,偶尔会使用 Git ,由于不常用,每次使用命令时都需要现场百度。说起来,我每次用到用的 Git 并不复杂,都是一些基本命令,用以向自己的 GitHub 仓库提交一些内容。索性今天来整理一下 Git 的基本用法,作为网络笔记吧。Git 安装首先,需要安装 Git 命令工具,类似 SVN 的小乌龟,Windows 系统访问 Git bash 的 Win...原创 2019-07-07 12:33:50 · 1722 阅读 · 1 评论 -
IDEA 中 Jetty 的配置过程
背景昨天因为工作需要,玩了下 Jetty 。本来没打算了解 Jetty 的,想着就是一种 Web 服务器而已,用 Tomcat 应该是没有问题的吧。出乎意料的是,接手的这个项目代码完全是依赖于 Jetty 的,项目中的页面路径以及有些文件读取的代码竟然是按照 Jetty 定制的,用 Tomcat 无法跑起来,这点挺让人无语的。那就弄一下 Jetty 吧,以前也没玩过这个东西,在百度的指引下,...原创 2019-06-22 17:10:19 · 14871 阅读 · 5 评论 -
Shell 编程:利用字典统计文本次数
问题有一个 test.log ,内容如下:a,ea,b,eb,c,ec,ec,d,ed,e统计规则是这样的:每一行以逗号分割,如果第二个字段为 e 就统计该行,否则将第一个字段相同且第二个字段不为 e 的行数累加。脚本思路利用 Shell 脚本进行统计,可以考虑字典这个数据类型,循环遍历文件内容,对每一行进行如下的处理:awk 语句分割该行获取第一列和第二列取出第...原创 2019-05-24 13:50:27 · 884 阅读 · 0 评论 -
CentOS 7 下安装 ftp 服务过程
背景最近玩了下 ftp 服务的搭建,过程并不复杂,但是有两点值得整理记录的东西。一个是 ftp 相关的配置项中有一项违反常规思路的配置,不注意就无法访问 ftp 服务;另一个是用户权限问题,root 用户上传的文件 ,普通 ftp 用户访问执行删除操作时操作结果为 false ,文件删除失败,权限问题值得关注。vsftpVSFTP 是一个基于 GPL 发布的类 Unix 系统上使用的 FT...原创 2019-05-05 17:39:35 · 3356 阅读 · 3 评论 -
Shell 编程:maven 安装脚本
Linux 下安装 maven流程1、解压二进制包;2、设置环境变量;3、输出版本信息,验证安装成果shell 脚本#!/bin/bashif [[ $0 =~ ^\/.* ]] ; then script=$0else script=$(pwd)/$0fiscript=`readlink -f $script`script_path=${script%/*}rea...原创 2019-04-25 10:19:01 · 896 阅读 · 0 评论 -
ASCII 码不同的两种空格:32 和160
背景在 Linux 下手写一个命令和拷贝 html 页面文本域中的命令执行结果完全不同,后者的命令无法被 Linux 识别。问题截图肉眼根本看不出来这两行有什么区别,但执行结果就是有问题。问题定位编写测试代码,执行两个字符串的 equals 方法,输出结果是 false。逐个输出对应字符的 ASCII 值,发现一个 echo 命令后的空格,一个是32,另一个是160。而160那个空格来...原创 2019-04-16 15:38:22 · 7968 阅读 · 0 评论 -
Redis 复制参数 repl-disable-tcp-nodelay 学习笔记
Redis 复制分布式系统中,复制通常是解决单点故障、保障高可用的方式,本文将整理复制时传输延迟的参数。传输延迟主从节点如果不是部署在同一台机器上,那么复制时就会产生网络延迟问题。Redis 提供了 repl-disable-tcp-nodelay 参数,用于控制与 Linux 的配置选项 TCP_NODELAY ,之所以想分析下这个参数是因为感觉它不是很好理解,参考的书中用关闭和开启来说明...原创 2019-04-15 14:58:50 · 1483 阅读 · 0 评论 -
IT 从业者可以了解的几个 DNS
背景本文是一篇译文,原文链接为:https://danielmiessler.com/blog/dns-servers-you-should-have-memorized/说来惭愧,作为IT从业者,很少关注DNS。生活中如果有咨询需求,我们都知道114服务平台,所以我记住了114.114.114.114,除此之外,不曾了解过其他的DNS服务器。今天就补充下自己DNS的知识吧。谷歌8....翻译 2019-03-02 20:12:02 · 404 阅读 · 0 评论 -
Linux 目录下压缩部分文件
背景Linux下某个目录下有小文件好几万,命名规则按日期每小时N个,想要过滤出指定日期的文件并添加到压缩文件中,记录下脚本化的过程如下。正则过滤存在的问题首先,直接进入该目录,由于文件数过多,ls打印半天出不了结果。其次,ls | grep命令筛选直接报错:解决办法网络搜索到xargs命令可以批量输出,调整思路如下:1、批量输出目标目录下的文件名称到某个文件。2、逐行读取该文件内...原创 2019-02-25 18:09:48 · 3051 阅读 · 0 评论 -
Zookeeper概述
什么是Zookeeperzookeeper,英/'zuːkiːpə/,动物园管理员,将分布式系统比作动物园,那么Zookeeper就是用来管理分布式应用的。其官方定义为(本人根据官网内容翻译如下):是一个开源的分布式应用的服务,提供了更高级别的服务,包括:同步、配置维护、分组和命名。主要目标:通过与标准文件系统一致的组织结果的命名空间,允许分布式进程之间可以进行同步。功能:提供了优质的...翻译 2019-01-21 17:10:43 · 9152 阅读 · 0 评论 -
VirtualBox修改root密码
Linux虚拟机实例密码忘记,怎么修改密码呢?解决办法:1、启动Linux节点2、启动进入等待页面后按下“e”键,进入编辑模式,此时页面内容为:按键盘上下移动键,移动查找linux16所在行:在该行尾部加上rd.break,编辑完成后,按ctrl+X继续启动。(页面也有提示Press Ctrl-X to start)3、进入的界面中,执行以下操作:...原创 2019-01-14 10:45:54 · 7223 阅读 · 3 评论 -
Tomcat的Comet实践
背景ProtocolHandler接口有一个isCometSupported方法,Comet模式是一种服务器向客户端推数据的方式,由服务器端通过长连接向客户端推送数据,功能跟websocket类似的。Tomcat的6,7,8.0等版本都支持Comet的,它的catalian.jar中的org.apache.catalina.comet包里面有Comet相关类。但是tomcat8.5版本不知道为什么就原创 2017-12-06 17:25:55 · 1836 阅读 · 0 评论 -
Tomcat会话持久化配置
背景在Java Web应用中,会有一些应用重启的操作,如系统升级,怎么在重启过程中,如何保证Session也能被恢复呢,这就可以通过Tomcat的会话持久化配置实现。持久化配置Tomcat默认是支持会话持久化的,在服务重启时将当前在线会话信息持久化本地磁盘。其配置文件为context.xml,其中有对持久化的描述信息如下: <!-- Uncomment this to disable sess原创 2017-12-04 17:56:34 · 1701 阅读 · 0 评论 -
IntelliJ IDEA检出web工程笔记
背景从业以来一直使用Eclipse进行编码,已经非常习惯Eclipse的各种快捷键了。对于半路杀出来的IntelliJ IDEA这个编程工具,非常陌生。前段时间研究tomcat8源码的时候用IntelliJ IDEA编译,用过一阵子,但是只限于跟踪源码。本文将记录使用IntelliJ IDEA导出Eclipse的项目的过程,不同IDE,殊途同归。SVN检出IntelliJ IDEA的VCS即版本控制原创 2017-12-01 16:03:35 · 1058 阅读 · 0 评论 -
dubbo-admin编译笔记
背景近期玩了下zookeeper,继而感觉有必要对Dubbo+Zookeeper的联合操作再实践一下,以便了解zookeeper是如何被应用的。本文将记录dubbo-admin的编译过程,貌似很简单,但也有坑。准备工作在Git上下载源码,路径为:https://github.com/alibaba/dubbo download zip下载到本地并解压,得到项目目录如下:工程编译上图一系列的工程,只原创 2017-11-29 17:06:40 · 623 阅读 · 0 评论 -
Zookeeper集群实践
背景近期在看Apache的项目zookeeper,根据官网文档,在自己本地虚拟机上实践了下zookeeper的基本用法。验证集群的高可用性这个特征一直没有成功,不知道哪里操作不正确,把leader节点的服务stop后,其他follower中没有产生新的leader,并且这些follower自身的zookeeper服务也无法使用,操作流程是正确的。环境准备从官网下载zookeeper的稳定版本zook原创 2017-11-28 11:08:28 · 754 阅读 · 0 评论 -
Jdk源码分析-LinkedBlockingQueue类
背景近日看了下阻塞队列的实现源码,基于原来对并发包的理解,发现自己很容易就能理清楚了里面的实现原理。就像学生时代生硬记住的那些古诗句,在成年时的某一天,面对桃花满枝桠的场景时,突然就想明白了”桃之夭夭,灼灼其华“的含义。类图结构阻塞链表队列,顾名思义:它是一种用链表实现、长度可控的FIFO队列,是链表和队列两种数据结构的结合,同时它支持阻塞。根据类图结构,我们理一下它的实现逻辑 1 维护两个原创 2017-11-17 11:11:59 · 364 阅读 · 0 评论 -
Linux实用命令整理
背景本文将整理本人近期常用的Linux命令,作为网络笔记,以备后用。修改DNS重装的系统,无法上网,ping www.baidu.com -c 2时,报错unkonwn host,说明该服务器的DNS配置有问题,修正 操作如下: 1 编辑网卡配置文件,添加DNS信息,文件名称为/etc/sysconfig/network-scripts/ifcfg-eth0(注意:具体根据ifconfig显示的...原创 2017-08-17 18:13:12 · 521 阅读 · 0 评论 -
IaaS,PaaS,SaaS 的区别
背景2017年5月20日的系统集成项目管理工程师考试上午选择题中,云计算的基础知识有两道云计算的概念和三种方式之间的辨别,印象中并没有选对。到底云计算的三个名词之间有什么区别呢?今天读了阮一峰先生的一篇网络日志,大神的文章通俗易懂,重要的是解答了我的疑惑。原文真的不错,忍不住转载分享。本文转载自阮一峰先生的网络日志,原文链接:http://www.ruanyifeng.com/blog/2017/0转载 2017-08-06 15:31:27 · 3434 阅读 · 1 评论 -
MySQL 5.7搭建Master-Slave实践
背景理解了MySQL的Master-Slave的基本原理后,就想在本地虚拟机上实践一下。开启虚拟机上的两个节点,主库Ip为192.168.x.164,从库Ip为192.168.x.170,分别安装相同版本的MySQL 。同时参考http://www.cnblogs.com/jirglt/p/3549047.html这篇文章,完成Master-Slave的实践操作。主从参数配置第一步,配置master原创 2017-07-21 09:28:49 · 3751 阅读 · 0 评论 -
MySQL 5.7社区版安装实践
背景CDND首页看到一篇介绍MySQL的Master-Slave架构的文章,了解了Master-Slave的基本原理,所以想实践搭建一个Master-Slave架构,第一步先安装一个社区版的MySQL。本文记录在Linux虚拟机上安装MySQL5.7社区版本的过程,参考官方安装手册,以及http://blog.csdn.net/nengyu/article/details/51615836这篇文章,原创 2017-07-20 16:12:54 · 1221 阅读 · 0 评论 -
简单东西:Nginx 实现 Tomcat 负载均衡
基本概念百度百科上定义Nginx是这样的: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,原创 2017-06-08 14:45:01 · 822 阅读 · 0 评论 -
MySQL修改密码
许久不用MySQL了,今天打开HediSQL连接MySQL时发现root密码忘记了,修改密码操作捣鼓了一阵子,记录一下,以备后用。(Win10本机操作)1 关闭MySQL服务:net stop MySQL2 以管理员身份打开cmd控制台窗口,进入MySQL所在目录的bin目录,执行mysqld --skip-grant-tables3 再另开一个cmd窗口直接执行mysql命令(由于2操作已经是原创 2017-06-01 10:15:02 · 542 阅读 · 0 评论 -
Linux基础应用
近期工作中运用Linux命令组合获取机器信息的几个命令整理:获取本机IP获取本机IP,主要是用ifconfig命令,结合正则,及awk命令进行截取。执行操作如下: 发现awk命令特别好玩,是基于行单位的,默认以空格、tab键分割,打印序号从1开始的。设置分隔符可用-F(file_seperator)来自定义分隔符。 最后用sed阶段命令,只打印第一行就是本机IP,原创 2017-05-27 09:58:31 · 359 阅读 · 0 评论 -
Linux的主机名基础
什么是主机名主机名就是计算机的名称,局域网内计算机之间相互访问,可以通过主机名称来访问。主机名修改跟主机名有关的命令是hostname,可以用来显示当前机器的主机名,也可以修改主机名称。 永久修改主机名称的方法 1)hostname 主机名称,只会生效一次,机器重启主机名就会被还原。 2)修改/etc/sysconfig/network中的HOSTNAME属性名称与hostname设置的主机名原创 2017-05-06 18:33:13 · 772 阅读 · 0 评论 -
ElasticSearch环境搭建
定义 ElasticSearch是什么?Elastic,英文意思是灵活的,弹性的。ElasticSearch就是一种全文检索引擎。Apache Lucene是迄今为止,最先进,性能最好、功能最全的搜索引擎,但是它只是一个搜索引擎库。而ElasticSearch是一个基于Apach Lucene的开源搜索引擎,是一个分布式可扩展的实时搜索和分析引擎。 它的定义是这样的,分布式的:、时文件存储(每个原创 2017-02-19 11:41:44 · 1135 阅读 · 0 评论 -
简单东西-group by与sum一起进行数据统计
今日看到一道sql统计的题目,要求根据已经知道的表编写sql统计成另一张表。需求是这样的,有一张teacher表记录了每一位老师在哪一天有课程,表结构如下: id week (星期几) 有课 1 1 有 1 1 有 1 2 有 1 3 有 2 1 有原创 2016-04-14 14:41:38 · 17349 阅读 · 0 评论 -
简单东西-Java不变类编写
并发环境下设计线程安全的类,一个类如果是不变的,那么它一定就是线程安全的。这是设计模式中不变模式的一种,一个对象在创建之后,它的状态就不会再发生变化,它就是不变类。java中的String,各种基本类型的封装类型,都是不变类。在设计任何一个类的时候,应当慎重考虑其状态是否有需要变化的可能性。如果其状态没有有变化的必要,那么就应当将它设计成不变类。 设计不变的类,应该限制成员变量的操作原创 2016-01-14 13:50:06 · 1146 阅读 · 0 评论 -
简单东西-jQuery过滤数值
$.grep() 方法,$.grep() 方法是按照某种条件来过滤数组,所以使用 $.grep() 方法可以从数组中过滤出我们想要的结果。一个简单的去除数组中与第一个元素相同的数据。 function distinctArray(array){ var result=[]; var baseValue; while(array.length>0){原创 2016-01-12 17:28:41 · 636 阅读 · 0 评论 -
Eclipse执行片段
发现Eclipse一个有用的功能,创建Scrapbook Page,可以执行一些代码片段,而不必编写完整的类文件。 新建ctrl+N,输入Scrapbook,选择Scrapbook Page,后生成一个.jpage文件,这样就可以在这个文件里面编写代码片段来执行了。选中需要执行的片段,右键execute执行,就可以看到自己编写的代码片段的执行结果了。不用写完整的类,非常简单,又便于调试原创 2016-01-10 22:08:38 · 916 阅读 · 0 评论