<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>禹过留声</title><link>//blog.haojunyu.com/</link><description>Recent content on 禹过留声</description><generator>Hugo -- gohugo.io</generator><managingEditor>haojunyu2012@gmail.com (hjy)</managingEditor><webMaster>haojunyu2012@gmail.com (hjy)</webMaster><lastBuildDate>Sun, 09 Feb 2025 17:47:45 +0800</lastBuildDate><atom:link href="//blog.haojunyu.com/index.xml" rel="self" type="application/rss+xml"/><item><title>程序员跨平台工具软件</title><link>//blog.haojunyu.com/post/coder_common_app/</link><pubDate>Sun, 09 Feb 2025 17:47:45 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/coder_common_app/</guid><description>&lt;p>在
&lt;a href="//blog.haojunyu.com/post/software_osx/" >macbook操作系统OSX初探&lt;/a> 和
&lt;a href="//blog.haojunyu.com/post/software_mac/" >macbook常用软件及其管理&lt;/a> 中介绍了不少常用的软件，
但是随着 Linux 和 Windows 也在日常工作用到，甚至最近开始以 MatePad Pro 作为便携轻终端，辅以云端服务器，家庭 NAS，组装台式机以及树莓派等后端节点共同组成工作和娱乐的空间。&lt;/p></description></item><item><title>基于nginx的webdav服务</title><link>//blog.haojunyu.com/selfhosted/webdav/</link><pubDate>Sun, 24 Sep 2023 22:41:12 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/selfhosted/webdav/</guid><description>&lt;p>最近将终端从 item2 迁移到 tabby 了，原因就在于后者是跨平台的。但是碰到了跨平台软件的通病就是配置的同步问题。为了永久解决类似的问题，所以研究了一下 WebDAV，并且搭建了服务来给跨平台软件同步基本配置。&lt;/p></description></item><item><title>年度总结之稳中求进</title><link>//blog.haojunyu.com/page/annual_summary_2022/</link><pubDate>Mon, 30 Jan 2023 23:41:13 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/page/annual_summary_2022/</guid><description>&lt;p>去年开始写下了第一篇的年度总结
&lt;a href="//blog.haojunyu.com/page/annual_summary_2022" >2022年终总结之稳中求进&lt;/a>，今年&lt;/p>
&lt;p>3.8号-5.29 开始封控&lt;br>
给娃理发
娃监督做核酸
大人自闭，小孩疯狂 每天放风
6月份&lt;/p>
&lt;ul>
&lt;li>升级nas 920&lt;/li>
&lt;li>升级网络&lt;/li>
&lt;/ul>
&lt;p>2月 野生动物园
海昌公园
南汇沙滩
金山沙滩
崇明明珠湖 9月&lt;/p>
&lt;p>8月 左伟家看宝宝
9月 小朋友上学
10月&lt;/p>
&lt;ul>
&lt;li>公司新办公楼&lt;/li>
&lt;li>有了一块菜地&lt;/li>
&lt;li>老婆公司团建&lt;/li>
&lt;/ul>
&lt;p>11月 整了沪牌
12月21 本人小阳人，隔离
1月份 奶奶阳了，见证了医疗挤兑&lt;/p>
&lt;p>节前 跨组，同组 吃了顿饭&lt;/p>
&lt;p>从去年开始就打算写一写年度总结，大纲都列好了，但是后来因为各种原因，到现在还只是大纲。再一次翻看
&lt;a href="https://mp.weixin.qq.com/s/_ay6KfcC5DMoZu9XqS2NHA" target="_blank">若川&lt;/a>和
&lt;a href="https://mp.weixin.qq.com/s/QmLPNJgFcJXCSwo0aq4-Xg" target="_blank">松宝&lt;/a>的年度总结系列，觉得还是要给今年的自己一个交代，也给明年的自己一个期待。恰巧新公司用 OKR 来对员工的日常工作进行管理，那就学以致用，为自己的人生负责吧。&lt;/p></description></item><item><title>家庭电脑的网络唤醒</title><link>//blog.haojunyu.com/selfhosted/wake_on_lan/</link><pubDate>Tue, 18 Oct 2022 23:43:17 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/selfhosted/wake_on_lan/</guid><description>&lt;p>家里有个配置可观的台式机，但苦于噪声和耗电，基本处于关机状态。这个对于偶尔需要远程登陆该机器的需求就不太可能满足，更不谈远程控制了。
为此探究了一下电脑的远程唤醒功能，并且给家里的台式机配置了该功能，从此无论何时何地，只要有个轻终端和网络就能如同在家一样折腾这个工作站了。&lt;/p></description></item><item><title>工具集</title><link>//blog.haojunyu.com/projects/tool-set/</link><pubDate>Sat, 15 Oct 2022 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/projects/tool-set/</guid><description>初衷 作为一个资深程序员，需要有最适合自己的工具箱，有着自己最擅长的工具。该项目就是梳理那些顺手的工具来提升自己的做事效率。 鉴于自己搭建了 Na</description></item><item><title>家庭网络的升级之路</title><link>//blog.haojunyu.com/selfhosted/home_network/</link><pubDate>Thu, 23 Jun 2022 21:38:01 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/selfhosted/home_network/</guid><description>&lt;p>你家的网络会卡顿么？你家的带宽是千兆的么？你家网络的真实下载速度和带宽是否一致？如果你想知道各种缘由，可以看一下本篇文章，会给你补充一点网络知识的同时，也会让家庭网络有一次蜕变的机会。&lt;/p></description></item><item><title>经典书籍</title><link>//blog.haojunyu.com/page/books/</link><pubDate>Fri, 27 May 2022 15:51:22 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/page/books/</guid><description>&lt;p>经典书籍是对日常看过的书籍进行收集，目前主要是对程序员需要看的经典书籍进行整理，方便查询。
&lt;a href="https://ebookfoundation.github.io/free-programming-books/" target="_blank">IT 相关的书籍&lt;/a>&lt;/p></description></item><item><title>群辉NAS构建家庭相册</title><link>//blog.haojunyu.com/selfhosted/synology_photo/</link><pubDate>Mon, 10 Jan 2022 23:45:23 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/selfhosted/synology_photo/</guid><description/></item><item><title>年度总结之深度求变</title><link>//blog.haojunyu.com/page/annual_summary_2021/</link><pubDate>Sat, 01 Jan 2022 23:41:13 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/page/annual_summary_2021/</guid><description>&lt;p>从去年开始就打算写一写年度总结，大纲都列好了，但是后来因为各种原因，到现在还只是大纲。再一次翻看
&lt;a href="https://mp.weixin.qq.com/s/_ay6KfcC5DMoZu9XqS2NHA" target="_blank">若川&lt;/a>和
&lt;a href="https://mp.weixin.qq.com/s/QmLPNJgFcJXCSwo0aq4-Xg" target="_blank">松宝&lt;/a>的年度总结系列，觉得还是要给今年的自己一个交代，也给明年的自己一个期待。恰巧新公司用 OKR 来对员工的日常工作进行管理，那就学以致用，为自己的人生负责吧。&lt;/p></description></item><item><title>电影推荐</title><link>//blog.haojunyu.com/projects/movie-rec/</link><pubDate>Wed, 11 Aug 2021 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/projects/movie-rec/</guid><description>初衷 做一个电影推荐微信小程序 基于微信小程序开发 交互方式：类似连音，探探，抖音等滑选方式 数据来源：豆瓣电影 爬虫 延伸功能：电影图谱 电影（类别，标</description></item><item><title>自我介绍</title><link>//blog.haojunyu.com/page/about/</link><pubDate>Sun, 11 Jul 2021 15:51:22 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/page/about/</guid><description>个人信息 我叫郝俊禹，英文名叫 David，同济大学计算机硕士毕业。目前在 soul 从事推荐系统架构方面的工作。发表2篇专利，其中有一项国际专利，获得系</description></item><item><title>自我介绍</title><link>//blog.haojunyu.com/page/about_all/</link><pubDate>Sun, 11 Jul 2021 15:51:22 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/page/about_all/</guid><description>个人信息 我叫郝俊禹，英文名叫 David，同济大学计算机硕士毕业。目前在达观数据任资深技术专家，从事推荐系统和知识图谱相关方面的工作。发表2篇</description></item><item><title>项目实战之微服务中的CICD</title><link>//blog.haojunyu.com/post/microservice_cicd/</link><pubDate>Wed, 30 Jun 2021 12:16:00 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/microservice_cicd/</guid><description>&lt;p>在
&lt;a href="//blog.haojunyu.com/post/project_cicd/" >项目开发中的CICD&lt;/a>中介绍了企业用户使用 GitLab 做持续集成和交付&lt;code>CICD&lt;/code>，并提供了一段实际工作中的配置来进行示范。但是那段示例对于比较简单的项目还是挺适用的。这里的简单项目是指服务比较少，架构比较简单，比如只包含前端，后端，数据库三个模块的项目。但是对于复杂的项目还使用这样的 CICD 流程会带来很多问题。所以本文基于 Docker Swarm 部署的微服务项目来对该持续集成交付的机制流程进行优化。&lt;/p></description></item><item><title>源码阅读</title><link>//blog.haojunyu.com/projects/source-read/</link><pubDate>Thu, 20 May 2021 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/projects/source-read/</guid><description>初衷 对于程序员而言，任何编程语言的源码都是不可多得的学习对象。 目标 redis 缘由：重拾数据结构和 C 开发应用 时间：2021-05-20 ~ 2021-07-30 参考：以源码</description></item><item><title>项目开发中的CICD</title><link>//blog.haojunyu.com/post/project_cicd/</link><pubDate>Wed, 28 Apr 2021 16:18:16 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/project_cicd/</guid><description>&lt;p>现如今持续集成（CI）和持续交付/部署（CD）大家已经不陌生了，它们是为了帮助项目能够更快的进行版本迭代。在这篇文章中，我将介绍如何使用使用 GitLab CI/CD 工具进行项目的自动化打包和部署。&lt;/p></description></item><item><title>系统设计之基于资源角色的权限管理</title><link>//blog.haojunyu.com/post/authority_rbac/</link><pubDate>Thu, 15 Apr 2021 01:42:49 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/authority_rbac/</guid><description>&lt;p>权限管理是所有后台系统的一个重要组成部分，其目的是控制用户（User）对资源（Resource）的操作（Action），避免因为权限控制缺失或操作不当引发风险，比如操作失误，隐私数据泄露等问题。
迄今为止最为普及的权限设计模型是基于角色的访问控制模型（&lt;strong>R&lt;/strong>ole-&lt;strong>B&lt;/strong>ased &lt;strong>A&lt;/strong>ccess &lt;strong>C&lt;/strong>ontrol）。它主要是将用户和用户组捆绑在一起叫主体，资源和操作捆绑在一起叫权限，中间用角色做桥梁关联二者。
但近年来随着对数据管控的精细化，资源和操作的捆绑成为了其掣肘。所以资源也需要像用户那样拥有资源组的概念，这样就变成了用户/用户组对资源/资源组有操作权限，这就是基于资源角色的访问控制模型。
本文将详细描述基于角色的访问控制模型到基于资源角色的访问控制模型的进化过程，并使用强大、高效的开源访问控制框架 Casbin 来设计一个基于资源角色的访问控制系统。&lt;/p></description></item><item><title>系统日志收集之初探rsyslog</title><link>//blog.haojunyu.com/post/introduce_rsyslog/</link><pubDate>Tue, 23 Mar 2021 23:38:26 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/introduce_rsyslog/</guid><description>&lt;p>系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息，这些信息对用户了解系统的运行状态是非常有用的，所以需要把它们保存到对应的日志文件中，以便后续进行分析和监控系统或软件的状态。
Linux 系统拥有非常灵活和强大的日志功能，几乎可以保存所有的操作记录，并可以从中检索出我们需要的信息。完成这个工作的守护进程就是 rsyslog。&lt;/p></description></item><item><title>Flask扩展之http客户端开发</title><link>//blog.haojunyu.com/post/flask_httpclient/</link><pubDate>Sun, 14 Mar 2021 10:12:06 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/flask_httpclient/</guid><description>&lt;p>Flask 被称为“微框架”。其中的“微”字不代表整个应用只能塞在一个 Python 文件内，也不代表 Flask 功能不强。它表示 Flask 的目标是保持核心简单而又可扩展。 它不会替使用者做决定，比如选用何种数据库，使用何种模板引擎等。Flask 通过扩展功能来增加它的功能。扩展之于 Flask，就像第三方库之于 Python，插件之于 Vscode。本文将介绍如何开发一个简单的 Flask 插件：HTTPClient，并将其发布到 Python 官方索引 Pypi（&lt;strong>Py&lt;/strong>thon &lt;strong>P&lt;/strong>ackage &lt;strong>I&lt;/strong>ndex） 上。&lt;/p></description></item><item><title>版本控制之Git初探</title><link>//blog.haojunyu.com/post/software_git/</link><pubDate>Wed, 24 Feb 2021 22:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_git/</guid><description>&lt;p>作为一名程序员，肯定会将人生大部分的时光交给了 Github，这个戏称为全球最大的同性交友网站。Why？因为程序员需要版本控制系统（VCS）来对代码进行管理。这样程序员就可以跟踪项目的变化细节，将选定的文件回溯到之前某个状态，以及各个成员在多人协同项目中的代码贡献等。本文是对版本控制软件 Git 的初步探索，完全可以支持日常多人协同开发。&lt;/p></description></item><item><title>一种运用标签知识网络的搜索应用系统</title><link>//blog.haojunyu.com/recsys/search_base_kg/</link><pubDate>Fri, 29 Jan 2021 00:24:39 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/recsys/search_base_kg/</guid><description>&lt;p>本文是18年写的一个将标签知识网络/标签知识图谱应用于搜索的专利，该种新型的召回方法既能保留了原来基于内容的召回算法中容易推出新物品，可解释性高等优点，并很好的克服其扩展性差的缺点。&lt;/p></description></item><item><title>系统架构设计师软考复盘</title><link>//blog.haojunyu.com/post/system_architect/</link><pubDate>Wed, 20 Jan 2021 10:33:01 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/system_architect/</guid><description>&lt;p>在大学时就听室友说他舅舅拿到了高级架构师的资质，是 IT 行业比较难拿的证书。当时只知道这个资质很牛逼。这两年公司倡导员工通过软件专业技术资格考试考取相关的资质，
比如信息系统项目管理师，系统分析师，系统架构设计师。正因为如此，才有了去年（2020年）报考系统架构设计师这事，一方面本身的职业规划就是架构师的方向，
另一方面也是想以考代学。随着今年成绩和分数线的相继公布，侥幸低分通过，所以写下这篇考后复盘，也算是对去年下半年的努力做个交代。&lt;/p></description></item><item><title>微信公众号运营</title><link>//blog.haojunyu.com/projects/wx-publisher/</link><pubDate>Fri, 08 Jan 2021 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/projects/wx-publisher/</guid><description>初衷 构建技术茶话会这个公众号的初衷是将平时对技术的积累输出到线上，与线上千千万万热衷技术的码农分享交流，互通有无。目前涉及的领域有推荐系统，</description></item><item><title>工程篇之搭建以图搜图服务</title><link>//blog.haojunyu.com/recsys/image_search/</link><pubDate>Thu, 10 Dec 2020 23:02:09 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/recsys/image_search/</guid><description>&lt;p>基于内容的召回在推荐系统中是比较常见的召回策略，常见有基于用户或物品的标签召回或者基于用户的年龄，地域等召回，一般该策略的实现是基于开源软件 Elasticseach 实现的。虽然召回的结果都比较合理，但是召回的新颖度，惊喜度等都比较低。比如通过标签“刘德华”进行召回，基本上召回的都是包含刘德华字眼的物品，不太可能召回出“黎明”，“张学友”等其他四大天王的物品。近年随着万物皆可 Embedding，特别是 word2vec，item2vec, graph2vec 等技术的成功应用，通过物品向量召回物品向量的方法也成为推荐系统中比较常用的召回策略。本文着重讲述通过开源软件 Vearch 来搭建一个向量搜索服务，并成功实现以图搜图的功能。&lt;/p></description></item><item><title>深入浅出之ip2region实现</title><link>//blog.haojunyu.com/recsys/deep_in_ip2region/</link><pubDate>Fri, 23 Oct 2020 00:49:57 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/recsys/deep_in_ip2region/</guid><description>&lt;p>在移动互联网的应用中，经常需要根据用户的位置信息等做一些用户侧信息的统计分析。而要拿到用户的位置信息，一般有两个方法： GPS 定位的信息和用户 IP 地址。由于每个手机都不一定会打开 GPS，而且有时并不太需要太精确的位置（到城市这个级别即可），所以根据 IP 地址入手来分析用户位置是个不错的选择。 要做到这个功能得需要一个 IP 和地理位置的映射关系库，并依赖这个库启动一个 IP 转地理位置的服务。本文从需求入手，结合 Github 上拥有 8.4k 星的 ip2region 来分析映射关系库的设计以及 IP 如何快速转换成地理位置。&lt;/p></description></item><item><title>推荐算法深入浅出之协同过滤</title><link>//blog.haojunyu.com/recsys/collaborative_filtering/</link><pubDate>Tue, 11 Aug 2020 07:59:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/recsys/collaborative_filtering/</guid><description>&lt;p>相关推荐是一种常见的推荐场景，比如资讯流推荐中详情页下方的推荐列表（基于物品的相关推荐），微信看一看（基于用户的相关推荐）等。
在这个场景中必然绕不开一个算法：协同过滤算法。&lt;/p></description></item><item><title>深入了解SSH</title><link>//blog.haojunyu.com/post/deep_ssh/</link><pubDate>Wed, 05 Aug 2020 15:13:01 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/deep_ssh/</guid><description>&lt;p>SSH 是每一台电脑的标准配置，Linux 就不必说了，连
&lt;a href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_overview" target="_blank">windows&lt;/a> 也从 2018 年开始自带 OpenSSH 了。
它主要的用途是登陆到远程电脑中执行命令，在云开发的时代，它是每个程序每天都要用到的工具。本文将简单介绍一下它的原理，
基本用法以及端口转发和动态转发等高阶用法。&lt;/p></description></item><item><title>Markdown转conflunece</title><link>//blog.haojunyu.com/post/md2confluence/</link><pubDate>Sun, 19 Jul 2020 08:49:17 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/md2confluence/</guid><description>&lt;p>很多公司使用 &lt;strong>Confluence&lt;/strong> 来构建企业的知识管理系统， 但是不得不说，文档的构建对程序员很不友好。对于用惯了 &lt;strong>Markdown&lt;/strong> 这种轻量级标记语言的程序员来说，写文章半小时，排版半小时。于是乎就有了这篇将 Markdown 转换为 Confluence 格式文档的技巧文档。&lt;/p></description></item><item><title>云上开发之数据备份</title><link>//blog.haojunyu.com/selfhosted/devol_data_backup/</link><pubDate>Tue, 14 Jul 2020 00:50:54 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/selfhosted/devol_data_backup/</guid><description>&lt;p>Github 挂了，是的，你没有听错，背靠微软，坐拥 azure 的 Github 挂了。最近还看到近几年大火的 Docker 也开始限制 Docker 商业版及 Docker 的其它服务（像Docker Hub）对特定国家和公司的使用。这些都体现了数据备份的重要性，虽然上面的事件对我们小小个人影响不是很大，但覆巢之下，安有完卵。早点掌握数据备份的方法才能从容应对未来突发的“意外”。本文将介绍在 ECS 上搭建类 Github 服务 Gogs, 并且定期备份 ECS 上数据到 OSS上，有条件的可以再将 OSS上的数据备份到自己的群辉 NAS 上。&lt;/p></description></item><item><title>常用工具集</title><link>//blog.haojunyu.com/page/tools/</link><pubDate>Sat, 11 Jul 2020 15:51:22 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/page/tools/</guid><description>&lt;p>工具集是对日常使用的工具收集，目前主要是对通用的工具网站进行整理，方便查询。&lt;/p></description></item><item><title>Docker镜像瘦身</title><link>//blog.haojunyu.com/post/docker_image_slim/</link><pubDate>Mon, 06 Jul 2020 23:51:22 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/docker_image_slim/</guid><description>&lt;p>Docker 是一个用于开发，交付和运行应用程序的开发平台。 它能够将应用程序和基础架构分开，保证开发，测试，
部署的环境完全一致，从而达到快速交付的目的。 但是在实际项目中，会对项目中的模块或者服务进行细分，
导致部署的镜像过多（50+ 个），过大（打包压缩后的镜像达 50G+），这给部署带来了不小的隐患，特别是私有化部署（通过移动介质拷贝镜像进行部署）。本文从多篇镜像瘦身的文章入手，并进行实践验证，结合
&lt;a href="https://docs.docker.com/develop/develop-images/dockerfile_best-practices/" target="_blank">官方的Dockerfile最佳实践&lt;/a> 总结了镜像压缩的4种方法和日常实践的多个技巧。&lt;/p></description></item><item><title>源码图谱</title><link>//blog.haojunyu.com/projects/code-kg/</link><pubDate>Sat, 20 Jun 2020 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/projects/code-kg/</guid><description>初衷 对于程序员而言，任何编程语言的源码都是不可多得的学习对象。 而源码的阅读如果能够以图谱的形式展示那将造福广大的程序员， 特别是看着繁重复杂的</description></item><item><title>Go 源码阅读之 flag 包</title><link>//blog.haojunyu.com/post/go_flag/</link><pubDate>Sat, 08 Feb 2020 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/go_flag/</guid><description>&lt;p>Go 源码阅读系列是我的源码阅读笔记。因为本人的电脑上 Go 的版本是1.13.4，所以就选择了该版本作为学习的版本。为此我在
&lt;a href="github_goSource" >Github&lt;/a> 上 Fork 了 Go 的源码，并创建了 study1.13.4 分支，来记录对于源码的个人理解或者说中文注释也行。每当阅读完一个包后都会进行一下小结，就像这篇是对flag包的总结整理。当然在整理的过程中发现
&lt;a href="video_nightreading" >Go夜读系列视频&lt;/a>，也让我受益颇多。&lt;/p></description></item><item><title>终端实战</title><link>//blog.haojunyu.com/post/term_practise/</link><pubDate>Wed, 01 Jan 2020 22:00:47 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/term_practise/</guid><description>&lt;p>本文主要介绍终端和 shell 的一些基本概念，并着重介绍了 zsh - 目前最强大方便的 shell 以及它的配置，希望可以提高我们码农的工作效率。&lt;/p></description></item><item><title>推荐算法深入浅出之逻辑回归</title><link>//blog.haojunyu.com/recsys/recsys_lr/</link><pubDate>Fri, 06 Dec 2019 22:00:47 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/recsys/recsys_lr/</guid><description>&lt;p>谈及机器学习或推荐算法，不得不提入门级的逻辑回归算法。但我们真的掌握逻辑回归了么？不妨回答一下以下问题：&lt;/p>
&lt;ol>
&lt;li>逻辑回归的代价函数以及公式推导？&lt;/li>
&lt;li>批量梯度下降和随机梯度下降的差异？&lt;/li>
&lt;li>样本太大，导致特征编码耗时太长怎么办？&lt;/li>
&lt;li>如何优化随机梯度下降使得算法又快又准？&lt;/li>
&lt;/ol>
&lt;p>如果你对上述问题心里没底不妨读下这篇文章。本文分为四个部分，第一部分介绍逻辑回归算法的推导过程，以便理解算法背后的理论基础；第二部分介绍逻辑回归的实现细节 ，包含特征散列的技巧以及学习率自适应，使得算法能够支撑更大的数据集。第三部分简单的安利一波逻辑回归的工业级实现工具 Vowpal Wabbit，最后一部分分享一些在学习逻辑回归过程中的思考。&lt;/p></description></item><item><title>C程序编程四步走</title><link>//blog.haojunyu.com/post/c_snippet/</link><pubDate>Tue, 21 Mar 2017 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/c_snippet/</guid><description>&lt;p>任何一个 C 程序代码到生成一个可执行文件都需要四步，分别是预处理 &lt;code>Pre-processing&lt;/code> ，编译 &lt;code>Compiling&lt;/code> ，汇编 &lt;code>Assembling&lt;/code> 和链接 &lt;code>Link&lt;/code> ，这里借助 Gcc 工具来探究这四步分别做了什么事，起到什么样的作用。本文使用的测试代码是经典入门程序 &amp;ldquo;Hello World!&amp;quot;。&lt;/p></description></item><item><title>Nginx部署多应用</title><link>//blog.haojunyu.com/post/devops_nginx/</link><pubDate>Fri, 03 Feb 2017 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/devops_nginx/</guid><description>&lt;p>当拥有一个服务器后，发现有众多的应用想要部署在这个服务器上，而且想要为每个应用创建一个独有的二级域名，比如个人博客- blog.haojunyu.com,比如个人项目页面- pro.haojunyu.com等等，反正就是想要将自己所折腾的一切都放到这个服务器上，一方面算是给自己这么长时间在应用开发上的成果做个展示，另一方面是提醒自己不要再重复的造轮子，毕竟青春有限，还有很多其他的事情值得去尝试。这个以 Nginx 部署两个 Python 的 Web 框架 Django 和 Flask 为例。&lt;/p></description></item><item><title>Python项目的虚拟环境</title><link>//blog.haojunyu.com/post/software_virtualenv/</link><pubDate>Mon, 30 Jan 2017 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_virtualenv/</guid><description>&lt;p>在开发 Python 项目时，首先要确定使用的 Python 版本，目前默认是 3.7（Python 2.7 已经在 2020 年停止支持了，但是需要维护的项目中肯定有不少基于 Python 2.x 版本的），其次会根据项目的需求来选择特定版本的第三方库（一般都会选择最新版本的，除非不同库之间有冲突）。但是使用 &lt;code>pip&lt;/code> 安装第三方库时默认都会安装到 Python3 的 site-packages 目录中，一旦不同项目中的第三方库版本出现冲突时，就比较难处理了。所以我们需要对不同的项目开辟独立干净的空间进行开发部署，此时就需要 Python 的虚拟环境了。本文将介绍 virtualenv 和 pipenv 两种途径构建虚拟环境，但是
&lt;a href="https://pythonguidecn.readthedocs.io/zh/latest/index.html" target="_blank">pipenv 的方式更值得推广&lt;/a>。&lt;/p></description></item><item><title>从零开始搭建HTTPS服务</title><link>//blog.haojunyu.com/selfhosted/devops_https/</link><pubDate>Tue, 24 Jan 2017 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/selfhosted/devops_https/</guid><description>&lt;p>搭建 HTTPS 服务的最初目的是为了开发微信小程序，因为 wx.request 只允许发起 HTTPS 请求，并且还必须和指定的域名进行网络通信。要从零开始搭建一个 HTTPS 的服务需要下面 4 个要素：域名，备案，云服务器，服务搭建。本文将分别介绍这四要素的具体要求。&lt;/p></description></item><item><title>程序猿得看的经典好书</title><link>//blog.haojunyu.com/post/book_coder/</link><pubDate>Sun, 10 Jan 2016 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/book_coder/</guid><description>&lt;p>其实想写这篇文章的缘由是因为看了微信公众号菜鸟教程推荐的那篇
&lt;a href="https://mp.weixin.qq.com/s?__biz=MzA5NDIzNzY1OQ==&amp;amp;mid=447566521&amp;amp;idx=1&amp;amp;sn=7f086ef930e81e9075eb332af26240d6&amp;amp;scene=0#wechat_redirect" target="_blank">编程入门技巧大全&lt;/a>，对于它说的一点我非常赞同就是多看好书，多读经典，并对它推荐的经典书籍作了记录，以方便后面可以拜读。&lt;/p></description></item><item><title>macbook常用软件及其管理</title><link>//blog.haojunyu.com/post/software_mac/</link><pubDate>Thu, 10 Dec 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_mac/</guid><description>&lt;p>众所周知，基本上每个 Unix 系统的发行版本都有一个非常强大的软件包管理系统，它能够非常便利的管理系统中的软件，而且绝对纯净，绝壁不加任何插件，像 Ubuntu 里的 apt，CentOS里的 yum 等。而 Mac OS X 是基于 Unix 的操作系统，可以安装大部分为 Unix/Linux 开发的软件。它也有非常好用的软件包管理系统 Homebrew 和 Macports 。&lt;/p></description></item><item><title>macbook操作系统OSX初探</title><link>//blog.haojunyu.com/post/software_osx/</link><pubDate>Wed, 09 Dec 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_osx/</guid><description>&lt;p>经过一番货比三家后，终于通过苹果内部员工的 85 折拿下了这款 Macbook Pro MF840。今天怀着激动兴奋的心情，拆了配送包裹，好好把玩了一天。本篇博文对 OS X 系统内置的 APP 进行一些摸索，最后在系统中安装了 VMWare Fusion 虚拟机来搭建自己的 Ubuntu 工作环境。而下篇博文
&lt;a href="//blog.haojunyu.com/post/software_mac/" >macbook常用软件及其管理&lt;/a> 将详细介绍苹果系统的
&lt;a href="http://brew.sh" target="_blank">软件包管理&lt;/a>以及常用的软件。&lt;/p></description></item><item><title>Python里的数据科学之matplotlib实战</title><link>//blog.haojunyu.com/post/python_matplotlib/</link><pubDate>Mon, 07 Dec 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_matplotlib/</guid><description>&lt;p>这篇和 Numpy 类似，是用来将 matplotlib 在日常实践中作的图片作一个总结，方便以后查询上手。&lt;/p></description></item><item><title>python里的数据科学之Numpy实战</title><link>//blog.haojunyu.com/post/python_numpy/</link><pubDate>Fri, 04 Dec 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_numpy/</guid><description>&lt;p>Python 的强大就不多说了，而对于 Numpy 的教程网上也多得数不清，这里只是将 Numpy 在日常中的实用方法做个梳理小结，方便以后查阅上手。&lt;/p></description></item><item><title>货比三家之MacPro_MF840</title><link>//blog.haojunyu.com/post/hardware_macpro/</link><pubDate>Wed, 02 Dec 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/hardware_macpro/</guid><description>&lt;p>在临近研究生毕业，即将走向社会之际，打算将吃饭的家伙&amp;ndash;笔记本更新一下。上一任笔记本是联想的 G450 ,还是我刚上大学时买的呢，已经陪伴了我六年之久，途中只升级了一下内存（1+1G变成1+4G）。用它编过程，学过 Photoshop ，玩过真三国无双。。。现在依然可以完美运作。不过这个笔记本有个致命的缺陷，就是太大，太笨重，而且电池只能待机10min，所以非常不适合随身携带。而Mac Pro能玩虐这两点。至于说系统的差异的话，因为现在习惯的工作环境是 Ubuntu，所以对于基于 linux 内核的 OS X 应该没有啥压力。而且应该会搞个 OS X+Ubuntu+Windows 的三系统，毕竟 Windows 里的游戏还是戒不了哇！&lt;/p></description></item><item><title>程序中的存储区</title><link>//blog.haojunyu.com/post/c_storage/</link><pubDate>Sun, 22 Nov 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/c_storage/</guid><description>&lt;p>details&lt;/p></description></item><item><title>C语言编程之指针</title><link>//blog.haojunyu.com/post/c_point/</link><pubDate>Mon, 26 Oct 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/c_point/</guid><description>&lt;p>c 语言之所以强大，以及其自由性，很大部分体现在其灵活的指针运用上。因此，说指针是 c 语言的灵魂，一点都不为过。同时，这种说法也让很多人产生误解，似乎只有 C 语言的指针才能算指针。basic 不支持指针，在此不论。其实，pascal 语言本身也是支持指针的。从最初的 pascal 发展至今的object pascal，可以说在指针运用上，丝毫不会逊色于c语言的指针。还有 Java 语言，虽然任何教程都没有提及指针，但是在我看来任何类对象（基本数据类型不确定）的创建都使用了指针。所以对指针的理解决定了你对编程语言的理解。&lt;/p></description></item><item><title>C家族语言编程之输入</title><link>//blog.haojunyu.com/post/c_input/</link><pubDate>Sat, 24 Oct 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/c_input/</guid><description>&lt;p>大家都知道 C++ 语言是兼容 C 语言的，所以在 C++ 中我们有最起码两种方式来实现输入输出。但是这里我还是想将这二者区分开来。毕竟目前还是喜欢在纯C的环境下面编程。所以这里就稍微介绍一下 C/C++ 里面常用的输入输出。&lt;/p></description></item><item><title>C语言编程之运算符</title><link>//blog.haojunyu.com/post/c_operator/</link><pubDate>Sat, 10 Oct 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/c_operator/</guid><description>&lt;p>在C语言中有很多运算符，像求字节数运算符[sizeof]，赋值运算符,算术运算符,关系运算符,逻辑运算符，条件运算符，位运算符，指针运算符等。这些运算符在运算时是有优先级的，会最终影响结果。所以了解其优先级以及运算方法是挺重要的（虽然本人觉得这些都可以通过加括号来解决，但是还是要了解一下，以便更快读懂他人程序）。&lt;/p></description></item><item><title>C语言编程之数据类型</title><link>//blog.haojunyu.com/post/c_type/</link><pubDate>Thu, 08 Oct 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/c_type/</guid><description>&lt;p>在众多C语言面试题目里，经常会考察数据类型以查看面试者的基本知识的掌握程度。这里对C语言的基本数据类型和自定义数据类型进行一些试验，并理解自定义构造类型中构造数据类型的&lt;strong>字节对齐&lt;/strong>规则。&lt;/p></description></item><item><title>Vim配置之进阶篇</title><link>//blog.haojunyu.com/post/software_vim_advanced/</link><pubDate>Fri, 25 Sep 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_vim_advanced/</guid><description>&lt;p>在上一篇博文
&lt;a href="//blog.haojunyu.com/post/software_vim_base/" >Vim配置之入门篇&lt;/a>中，只是大略介绍了 Vim 的基本配置以及几个常用的使用插件，但是在后面的使用中发现该配置的Vim并不是很好用，特别是 minibuffer，taglist，fileexplore 直接存在冲突，而且它的插件管理也比较麻烦。本篇博文主要就是解决这两个问题以及尝试一些更适合码农的插件。&lt;/p></description></item><item><title>shell运行环境之sudo的环境</title><link>//blog.haojunyu.com/post/shell_sudo/</link><pubDate>Sun, 13 Sep 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_sudo/</guid><description>&lt;p>
&lt;a href="//blog.haojunyu.com/post/shell_profile/" >shell运行环境之环境配置文件&lt;/a>讲解了 Shell 里面四个配置文件的作用域以及 Shell 的四种常用模式。在此基础上，我们进一步探究一下在用户切换过程中，运行环境的变化。在 Ubuntu 里，我们通常使用 &lt;code>sudo&lt;/code> 来提权，使用 &lt;code>su&lt;/code> 来切换用户，而这两种操作都会对终端运行环境产生影响。搞明白运行环境的变化，你将明白如何在终端中使用代理。&lt;/p></description></item><item><title>shell运行环境之环境配置文件</title><link>//blog.haojunyu.com/post/shell_profile/</link><pubDate>Wed, 09 Sep 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_profile/</guid><description>&lt;p>
&lt;a href="//blog.haojunyu.com/post/shell_env_var/" >Shell运行环境之环境变量&lt;/a>介绍了 Shell 运行环境中三种不同的环境变量&amp;ndash;临时变量，用户变量和系统变量，除此之外还有 /etc/environment, /etc/profile 和 ~/.profile 作用域。这篇文章将主要围绕 Bash 这个 Shell来讲解
&lt;a href="https://wido.me/sunteya/understand-bashrc-and-profile" target="_blank">环境配置文件&lt;/a>，并结合 Shell 的四种模式来说明这些配置文件的作用域。&lt;/p></description></item><item><title>shell运行环境之环境变量</title><link>//blog.haojunyu.com/post/shell_env_var/</link><pubDate>Tue, 08 Sep 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_env_var/</guid><description>&lt;p>在 Windows 系统中，我们经常需要设置环境变量，特别是安装完 Java JDK 之后。而在 Linux 里面也是需要对一些环境变量进行设置，比如 PATH （执行文件的路径），http_proxy（http 代理）等。本文主要介绍三种环境变量&amp;ndash;临时变量，用户变量和系统变量，并对其作用的先后做一些验证。&lt;/p></description></item><item><title>刨根问底之shell里的运行环境</title><link>//blog.haojunyu.com/post/dig_shell_environment/</link><pubDate>Tue, 08 Sep 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/dig_shell_environment/</guid><description>&lt;p>在Ubuntu里，我们经常在终端中使用&lt;code>sudo&lt;/code>来提权&amp;ndash;以普通用户的身份去行使管理员的权限（前提是知道管理员用户的密码），这样减少了root用户的登录次数和管理时间，也提高了系统的安全性。不过有时候我们会直接用&lt;code>su&lt;/code>切换到管理员进行一系列操作。本篇博文就是总结&lt;code>sudo&lt;/code>，&lt;code>su&lt;/code>对bash运行环境的影响。明白了这点，你将明白在公司里怎样使用代理。&lt;/p></description></item><item><title>解题报告之格雷码</title><link>//blog.haojunyu.com/coder/report_graycode/</link><pubDate>Mon, 07 Sep 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/coder/report_graycode/</guid><description>&lt;p>&lt;strong>格雷码&lt;/strong>（Gray Code）是指在一组数的编码中，任意两个相邻的代码只有一位二进制数不同，则称这种代码为格雷码。另外由于最大数和最小数之间也仅有一位数不同，即“首尾相连”，因此又称为&lt;strong>循环码&lt;/strong>&lt;em>或&lt;/em>&lt;strong>反射码&lt;/strong>。这篇博文主要介绍怎样用递归的方式构造格雷码以及格雷码与 8421 码之间的转换。&lt;/p></description></item><item><title>Vim配置之入门篇</title><link>//blog.haojunyu.com/post/software_vim_base/</link><pubDate>Mon, 31 Aug 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_vim_base/</guid><description>&lt;p>正所谓“工欲善其事，必先利其器”，而作为一个专业的码农，怎么能不好好对待自己编程的利器&amp;ndash; VIM 编辑器呢！可能读者会说编程的利器不应该是各种语言的集成工具么？像编写 C/C++ 程序的 VS，Codeblock（跨平台）软件，像编写 Java 程序的 Eclipse（现在已经有支持 C/C++/Python 的插件），像编写 Python 程序的 PyCharm 等。这些人性化的开发集成环境功能强大，使用方便。不过成也在此，败也在此。本文将详细介绍Vim编辑器以及其基本入门级配置。&lt;/p></description></item><item><title>解题报告之最长回文子串</title><link>//blog.haojunyu.com/coder/report_longpalindrome/</link><pubDate>Tue, 25 Aug 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/coder/report_longpalindrome/</guid><description>&lt;p>题目很简单，就是求解一个字符串中最长的回文子串，回文字符串是指颠倒之后的字符串和原来的字符串完全一样。网上很多人的博文，像
&lt;a href="http://blog.csdn.net/kangroger/article/details/37742639" target="_blank">kangroger&lt;/a>,还有把最牛b的 Manacher 算法说得很清晰的
&lt;a href="http://blog.csdn.net/pi9nc/article/details/9251455" target="_blank">pi9nc&lt;/a>和
&lt;a href="http://blog.csdn.net/yzl_rex/article/details/7908259" target="_blank">yzl_rex&lt;/a>，介绍了四种解法：分别是暴力法（$O(n^3)$），动态规划（$O(n^2)$），中心扩展（$O(n^2)$）和Manache法（$O(n)$）。本博文只是对这四种方法的自我实现。&lt;/p></description></item><item><title>C语言编程之常见错误</title><link>//blog.haojunyu.com/post/c_error/</link><pubDate>Sat, 22 Aug 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/c_error/</guid><description>&lt;p>在ACM编程过程中，经常会碰到一些千奇百怪的编译错误。本篇博文就是对这些比较隐晦的编译错误做一下记录，以方便在今后的编程中少走些弯路。&lt;/p></description></item><item><title>基本算法之Trie树</title><link>//blog.haojunyu.com/coder/algorithm_trie/</link><pubDate>Fri, 21 Aug 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/coder/algorithm_trie/</guid><description>&lt;p>Trie 树是一种用于快速检索的多叉树结构,经常用于统计和排序大量的字符串（但又不限于字符串），所以经常被搜索引擎系统用于文本词频统计。本文首先介绍 Trie 树的定义、原理及具体实现，然后结合 hihocoder 上的题目做一些具体实践。&lt;/p></description></item><item><title>逃离VMWare拥抱docker</title><link>//blog.haojunyu.com/post/software_docker/</link><pubDate>Tue, 11 Aug 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_docker/</guid><description>&lt;p>Docker是一个开源项目，它是基于linux容器（LXC）等技术，旨在实现轻量级的操作系统虚拟化的一个解决方案。用户操作Docker的容器就像操作虚拟机一样，但是它比虚拟机更轻量更快速。&lt;/p></description></item><item><title>集成开发工具Eclipse的配置</title><link>//blog.haojunyu.com/post/software_eclipse/</link><pubDate>Tue, 11 Aug 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_eclipse/</guid><description>&lt;p>Eclipse是个强大的集成工具，写JAVA程序的人基本都会首选该工具，然而它的强大并不仅仅体现在对JAVA的支持上，实际上用Eclipse可以写C/C++程序以及Python代码等。当然这一切都需要安装一些插件并进行一些配置。这里就对其配置进行一些记录。&lt;/p></description></item><item><title>快速部署日志分析系统ELK</title><link>//blog.haojunyu.com/post/software_elk/</link><pubDate>Tue, 04 Aug 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_elk/</guid><description>&lt;p>日志分析系统ELK是三个开源软件的缩写，分别是Elasticsearch，Logstash，Kibana。其中Elasticsearch是用来实现索引和搜索功能的目的，Logstash是一个很灵活的日志收集和处理工具。Kibana是和Elasticsearch配套的图形展示界面，用于方便的展示数据和分析数据。本文对整个套件的安装配置过程作了记录，并写了一键安装配置的脚本。&lt;/p></description></item><item><title>解题报告之最大约数个数</title><link>//blog.haojunyu.com/coder/report_divisornumber/</link><pubDate>Thu, 23 Jul 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/coder/report_divisornumber/</guid><description>&lt;p>本题的解法是在
&lt;a href="//blog.haojunyu.com/coder/algorithm_divisor/" >基本算法之约数个数原理&lt;/a> 的基础上对问题进行优化，从而大大降低算法的时间复杂度。而解题的思路是从结果去想它满足什么样的条件，从而获得优化问题的方法。&lt;/p></description></item><item><title>基本算法之约数个数原理</title><link>//blog.haojunyu.com/coder/algorithm_divisor/</link><pubDate>Wed, 15 Jul 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/coder/algorithm_divisor/</guid><description>&lt;p>在数论里面除了老生常谈的素数问题，还有一个就是约数个数问题。对于这个问题的解法可能还停留在用n除以 $1,\cdots,\sqrt n$，然后统计能够整除的个数。其时间复杂度为 $O(\sqrt n)$。本文主要介绍约数个数定理以及它在实际题目中的应用。&lt;/p></description></item><item><title>shell编程之软硬链接ln</title><link>//blog.haojunyu.com/post/shell_ln/</link><pubDate>Mon, 06 Jul 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_ln/</guid><description>&lt;p>在 Windows 里面我们经常通过快捷方式来创建链接以方便我们使用电脑。而 Linux 中有两种方式创建链接，分别为软链接和硬链接。下面我们就来详细说下二者的区别。&lt;/p></description></item><item><title>shell编程之文件检索find</title><link>//blog.haojunyu.com/post/shell_find/</link><pubDate>Wed, 01 Jul 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_find/</guid><description>&lt;p>&lt;code>find&lt;/code> 命令是用来搜索指定目录下面符合搜索选项的文件.它跟 &lt;code>awk&lt;/code>, &lt;code>sed&lt;/code>, &lt;code>grep&lt;/code> 的区别是它搜索到的对象是文件,而后三者是文件里的字符或字符串.&lt;/p></description></item><item><title>基本算法之并查集</title><link>//blog.haojunyu.com/coder/algorithm_disjoinset/</link><pubDate>Tue, 30 Jun 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/coder/algorithm_disjoinset/</guid><description>&lt;p>并查集是一种用途广泛的数据结构，能够快速地处理集合的合并和查询问题，并且实现起来非常方便，在很多场合中都有着非常巧妙的应用。本文首先介绍并查集的定义、原理及具体实现，然后结合hihocoder以及poj上的题目做一些具体实践。&lt;/p></description></item><item><title>自定义博客主题</title><link>//blog.haojunyu.com/post/blog_theme/</link><pubDate>Sat, 13 Jun 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/blog_theme/</guid><description>&lt;p>房子需要装修,博客也需要装修.而通过&lt;strong>markdown&lt;/strong>+&lt;strong>jekyll&lt;/strong>+&lt;strong>github&lt;/strong>搭建的博客是支持自定义自己的主题的.不过这需要对&lt;strong>html&lt;/strong>,&lt;strong>javascript&lt;/strong>,&lt;strong>css&lt;/strong>有一定的了解.当然,要想自己的博客漂亮美观,自己的审美要好,显然我不具备(嘻嘻).&lt;/p></description></item><item><title>实用的写博语言markdown</title><link>//blog.haojunyu.com/post/software_markdown/</link><pubDate>Thu, 04 Jun 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_markdown/</guid><description>&lt;p>Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式.用它来书写博客是非常方便的.&lt;/p></description></item><item><title>ubuntu下lamp的构建</title><link>//blog.haojunyu.com/post/software_lamp/</link><pubDate>Sun, 31 May 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_lamp/</guid><description>&lt;p>LAMP（Linux-Apache-MySQL-PHP）网站架构是目前国际流行的Web框架，该框架包括：Linux操作系统，Apache网络服务器，MySQL数据库，Perl、PHP或者Python编程语言，所有组成产品均是开源软件，是国际上成熟的架构框架，很多流行的商业应用都是采取这个架构，和Java/J2EE架构相比，LAMP具有Web资源丰富、轻量、快速开发等特点，微软的.NET架构相比，LAMP具有通用、跨平台、高性能、低价格的优势，因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。(附带安装mysql的管理软件phpmyadmin)&lt;/p></description></item><item><title>shell编程之系统进程监控</title><link>//blog.haojunyu.com/post/shell_monitor/</link><pubDate>Fri, 22 May 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_monitor/</guid><description>&lt;p>本文内容是根据网络上一篇博文
&lt;a href="https://www.shuzhiduo.com/A/mo5k739K5w" target="_blank">使用shell脚本对linux系统和进程资源进行监控&lt;/a>对其验证学习的总结。
主要是通过常用的 shell 命令来对系统的运行状态进行监控，另一方面也是对学习的 shell 命令的实战。&lt;/p></description></item><item><title>shell编程之文本处理工具awk初探</title><link>//blog.haojunyu.com/post/shell_awk/</link><pubDate>Mon, 18 May 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_awk/</guid><description>&lt;p>AWK 是一个强大的文本分析工具，相对于 grep 的查找，sed 的编辑，awk 在其对数据分析并生成报告时，显得尤为强大。简单来说 &lt;strong>awk 就是把文件逐行的读入，以空格为默认分隔符将每行切片，切开的部分再进行各种分析处理&lt;/strong>。&lt;/p></description></item><item><title>shell编程之文本处理工具sed初探</title><link>//blog.haojunyu.com/post/shell_sed/</link><pubDate>Mon, 18 May 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_sed/</guid><description>SED命令的功能同awk类似，差别在于，sed简单，对列处理的功能要差一些，awk的功能复杂，对列处理的功能比较强大，sed全称是：Stre</description></item><item><title>shell编程之内容查找grep</title><link>//blog.haojunyu.com/post/shell_grep/</link><pubDate>Sat, 16 May 2015 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_grep/</guid><description>&lt;p>
&lt;a href="https://zh.wikipedia.org/wiki/Grep" target="_blank">GREP&lt;/a> (&lt;strong>G&lt;/strong>lobally search a &lt;strong>R&lt;/strong>egular &lt;strong>E&lt;/strong>xpression and &lt;strong>P&lt;/strong>rint,以正则表达式进行全局查找以及打印)是一种强大的文本搜索工具，它对匹配一个或多个&lt;strong>正则表达式&lt;/strong>的文本进行搜索，并只输出匹配（或者不匹配）的行或文本。&lt;/p></description></item><item><title>linux经久不衰的应用程序</title><link>//blog.haojunyu.com/post/software_linux/</link><pubDate>Wed, 31 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_linux/</guid><description>&lt;p>Linux系统里面的应用程序一贯具备高安全性和高性价比(功能/所占空间),而且它在科研领域的好软件的确要比windows里面多很多,而且功能强大很多.这里记录下Linux里面比较常用的而且经久不衰的应用程序.&lt;/p></description></item><item><title>ubuntukylin(64bit)安装推荐</title><link>//blog.haojunyu.com/post/software_ubuntu/</link><pubDate>Tue, 30 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/software_ubuntu/</guid><description>&lt;p>在网上经常会看到
&lt;a href="http://www.linuxidc.com/Linux/2014-04/100411.htm" target="_blank">安装ubuntu后必做的n件事&lt;/a>,不过这些事情都是大众通用的,并不是完全适合自己的.所以本文就是对自己使用ubuntukylin这些年来的记录总结.&lt;/p></description></item><item><title>python基础篇之实用工具</title><link>//blog.haojunyu.com/post/python_snippet/</link><pubDate>Thu, 11 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_snippet/</guid><description>&lt;p>个人觉得 Python 越来越实用离不开其强大的模块,框架的支持,像文件模块,命令行模块, django 框架, sk-learning 工具箱等等.这些都让 Python 能够非常方便的处理不同领域的问题.&lt;/p></description></item><item><title>python基础篇之正则表达式</title><link>//blog.haojunyu.com/post/python_regular/</link><pubDate>Wed, 10 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_regular/</guid><description>&lt;p>初学 Python，对 Python 的文字处理能力有很深的印象，除了 str 对象自带的一些方法外，就是正则表达式这个强大的模块了。关于 Python 里面正则表达式的使用网上有很多博文,如
&lt;a href="http://blog.csdn.net/whycadi/article/details/2011046" target="_blank">python正则式学习笔记&lt;/a>等,这里做一下自己的总结.&lt;/p></description></item><item><title>python基础篇之文件操作</title><link>//blog.haojunyu.com/post/python_io/</link><pubDate>Tue, 09 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_io/</guid><description>&lt;p>python处理文件也是有一手的,所以熟练掌握文件操作对日后的任务操作非常有利.&lt;/p></description></item><item><title>python基础篇之基本语法</title><link>//blog.haojunyu.com/post/python_base/</link><pubDate>Mon, 08 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_base/</guid><description>&lt;p>在基本的概念和数据结构了解完后,再了解一下基本语法来将这些零件合理的组合起来,这样就可以用 Python 干一下复杂的任务了.&lt;/p></description></item><item><title>python基础篇之元组和字典</title><link>//blog.haojunyu.com/post/python_dict/</link><pubDate>Sun, 07 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_dict/</guid><description>&lt;p>除了 list 之外, Python 还有两个比较常用的数据结构,就是本文所介绍的元组和字典.元组其实就相当于数组.其元素的大小无法改变.&lt;/p></description></item><item><title>python基础篇之链表</title><link>//blog.haojunyu.com/post/python_list/</link><pubDate>Sat, 06 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_list/</guid><description>&lt;p>链表是 Python 里面一个很重要的数据结构,也是非常常用的一个数据结构.&lt;/p></description></item><item><title>python基础篇之字符串</title><link>//blog.haojunyu.com/post/python_string/</link><pubDate>Fri, 05 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_string/</guid><description>&lt;p>个人感觉 Python 对字符串的处理是非常强的,所以掌握一些 Python 对字符串的基本操作是非常有必要的.&lt;/p></description></item><item><title>python基础篇之基本概念</title><link>//blog.haojunyu.com/post/python_concept/</link><pubDate>Thu, 04 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_concept/</guid><description>&lt;p>python里面有一些基本的概念,像模块,函数之类的,理解这些基本概念有利于对python程序的理解和编写.&lt;/p></description></item><item><title>python基础篇之介绍</title><link>//blog.haojunyu.com/post/python_intruduce/</link><pubDate>Wed, 03 Dec 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/python_intruduce/</guid><description>&lt;p>python基础篇是以Google for Education上面的
&lt;a href="https://developers.google.com/edu/python/?csw=1" target="_blank">Google&amp;rsquo;s Python Class课程&lt;/a>为主.这是一门非常适合初学者的课程.&lt;/p></description></item><item><title>编程技巧之常用字符操作函数</title><link>//blog.haojunyu.com/coder/skill_string/</link><pubDate>Fri, 07 Mar 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/coder/skill_string/</guid><description>&lt;p>编程里面最常用的操作就是字符操作,能够熟练的对字符进行操作对后面的编程非常有利.&lt;/p></description></item><item><title>编程技巧之代码片段</title><link>//blog.haojunyu.com/coder/skill_snippet/</link><pubDate>Wed, 05 Mar 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/coder/skill_snippet/</guid><description>&lt;p>ACM 编程也是需要一些通用的代码片段的.熟练掌握这些代码片段可以在后面的编程中更加方便.&lt;/p></description></item><item><title>shell编程之实用脚本片段</title><link>//blog.haojunyu.com/post/shell_snippet/</link><pubDate>Fri, 28 Feb 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_snippet/</guid><description>&lt;p>现在编程都讲究面向对象,处理的对象不再是最底层的变量,结构等.所以在日常也要注意实用脚本片段的积累.&lt;/p></description></item><item><title>shell编程之常用命令</title><link>//blog.haojunyu.com/post/shell_common/</link><pubDate>Fri, 28 Feb 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_common/</guid><description>&lt;p>shell编程说白了就是常用命令和语法结构的自由组合.所以本文将粗略介绍一下常用的命令以及其用法.&lt;/p></description></item><item><title>shell编程之语法结构</title><link>//blog.haojunyu.com/post/shell_struct/</link><pubDate>Thu, 27 Feb 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_struct/</guid><description>&lt;p>前一篇博文介绍了shell编程的基本内容,主要介绍了变量,数值计算以及字符串.这些相当于食材,而本文介绍的语法结构就相当于食谱,二者组合方能做出美食.&lt;/p></description></item><item><title>shell编程之基本内容</title><link>//blog.haojunyu.com/post/shell_base/</link><pubDate>Wed, 26 Feb 2014 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/shell_base/</guid><description>&lt;p>在windows里面进行任务处理通常是用批处理,但是其功能是单薄的.而且一般公司服务器都是用的linux系统,批处理是没有用武之地的,关键时候还是shell给力.其实说白了,shell编程就是linux命令的组合.&lt;/p></description></item><item><title>简单批处理之实用脚本片段</title><link>//blog.haojunyu.com/post/batch_snippet/</link><pubDate>Sun, 15 Sep 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/batch_snippet/</guid><description>&lt;p>批处理能够很便利的处理一些特定的任务,但是这些都是由基本的脚本片段构成的,所以对这些脚本片段的积累将有利于今后的任务处理.&lt;/p></description></item><item><title>简单批处理之众里find它一次度</title><link>//blog.haojunyu.com/post/batch_find/</link><pubDate>Sat, 14 Sep 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/batch_find/</guid><description>&lt;p>在批处理的过程中,经常需要查找文件以及在文件中查找相关字符串.在linux中有&lt;code>grep&lt;/code>,&lt;code>awk&lt;/code>,&lt;code>sed&lt;/code>等命令,不过windows里面也有类似的命令,如这次介绍的&lt;code>find&lt;/code>,&lt;code>findstr&lt;/code>.&lt;/p></description></item><item><title>简单批处理之一切尽在at中</title><link>//blog.haojunyu.com/post/batch_at/</link><pubDate>Fri, 13 Sep 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/batch_at/</guid><description>&lt;p>让计算机在自己规定的时间里干自己规定的事，一切尽在计划之中。所以at命令你一定不能错过。&lt;/p></description></item><item><title>简单批处理之字符串处理</title><link>//blog.haojunyu.com/post/batch_string/</link><pubDate>Thu, 12 Sep 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/batch_string/</guid><description>&lt;p>本文主要介绍批处理中字符串的处理.&lt;/p></description></item><item><title>简单批处理之语法结构</title><link>//blog.haojunyu.com/post/batch_struct/</link><pubDate>Wed, 11 Sep 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/batch_struct/</guid><description>&lt;p>本文主要介绍批处理的语法结构以方便写bat的脚本文件.&lt;/p></description></item><item><title>简单批处理之常用命令</title><link>//blog.haojunyu.com/post/batch_common/</link><pubDate>Tue, 10 Sep 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/batch_common/</guid><description>&lt;p>本文主要介绍批处理的常用命令,这里只是简单介绍命令的作用,至于命令的具体用法,可以通过 &lt;code>command /?&lt;/code> 或 &lt;code>command --help&lt;/code>查看.&lt;/p></description></item><item><title>简单批处理之符号简介</title><link>//blog.haojunyu.com/post/batch_symbol/</link><pubDate>Mon, 09 Sep 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/batch_symbol/</guid><description>&lt;p>本文主要介绍在批处理中常用的符号.&lt;/p></description></item><item><title>简单批处理之内部命令</title><link>//blog.haojunyu.com/post/batch_inner/</link><pubDate>Sun, 08 Sep 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/batch_inner/</guid><description>&lt;p>批处理(Batch)，也称为批处理脚本。顾名思义，批处理就是对某对象进行批量的处理，通常被认为是一种简化的脚本语言，它应用于DOS和Windows系统中。批处理文件的扩展名为bat 。本文主要介绍批处理比较常用的内部命令.&lt;/p></description></item><item><title>ubuntu制作usb启动盘</title><link>//blog.haojunyu.com/post/usb_reboot/</link><pubDate>Sat, 20 Jul 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/usb_reboot/</guid><description>&lt;p>常年与计算机为伴,免不了要经常给计算机安装系统.而重装系统当然需要工具.光盘安装,读取太慢;硬盘安装,需要一个大前提:电脑能正常工作,一旦电脑无法正常开机,该方法无效.现在u盘非常普及,所以用usb作系统启动盘能很好的解决上面的两个问题.&lt;/p></description></item><item><title>以Gimp为手K天P地之模糊滤镜</title><link>//blog.haojunyu.com/post/gimp_filter/</link><pubDate>Wed, 19 Jun 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/gimp_filter/</guid><description>&lt;p>最近有点忙,等事情忙定了再将这些以前写的东西整理出来.&lt;/p></description></item><item><title>以Gimp为手K天P地之简介</title><link>//blog.haojunyu.com/post/gimp_intruduce/</link><pubDate>Tue, 18 Jun 2013 17:54:04 +0800</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/post/gimp_intruduce/</guid><description>&lt;p>随着大学生活的告一段落,新的征途已经开始了.由于比较喜欢旅游,比较喜欢拍照,比较喜欢处理图片,所以打算在照片处理上下点功夫.在windows里面,提到专业的图像处理软件当属Photoshop了,而另外一款强大的专业的跨平台的位图处理软件Gimp知道的并不多,而且其性能不下于Photoshop.&lt;/p></description></item><item><title/><link>//blog.haojunyu.com/page/work-report/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>haojunyu2012@gmail.com (hjy)</author><guid>//blog.haojunyu.com/page/work-report/</guid><description>述职报告模板 转眼2021年已到尾声，回顾过去一年的工作， 内心充满感激，同时也倍感责任重大。刚接手xx工作时，内心忐忑不安，恰逢年尾年初转换特</description></item></channel></rss>