<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[aogogo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zhouboke</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhouboke]]></copyright><item><title><![CDATA[Book04--修改软件的艺术：构建易维护代码的9条最佳实践]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/113811460</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/113811460</guid><author>zhouboke</author><pubDate>Sun, 14 Feb 2021 21:48:47 +0800</pubDate><description><![CDATA[修改软件的艺术：构建易维护代码的9条最佳实践
[美]David Scott Bernstein

​		这本书旨在帮助你降低构建与维护软件的成本。给出一些最佳实践的方法。我可以直接在摘要将这9条建议列出来，但是有一些很精妙的话、很切实的感受还是需要自己通过阅读书本去获得。读完这本书会让我对“软件开发工程师”这个职业产生一种自豪感和满足感，为自己是这个行业中的一员表示很庆幸。要知道在此之前我为自己只是单纯的“crud”有点被磨平了热情，但是现在又找回了初心，希望这本书也能为你带来一些不同以往的观点，刷新你的认]]></description><category></category></item><item><title><![CDATA[Book03--linux系统管理初学者指南]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/113809858</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/113809858</guid><author>zhouboke</author><pubDate>Sun, 14 Feb 2021 18:31:00 +0800</pubDate><description><![CDATA[linux系统管理初学者指南

​		这本书更像是一个学习手册，介绍了linux的一些基本思想和常见指令。其中提到了两个点比较印象深刻：一个是linux设计思想，一个是程序和服务的概念。首先谈谈linux的设计思想，一共有以下几点：（1）一切皆文件（2）整个系统都是由众多小程序组成（3）避免和用户交互（4）使用文本保存配置信息。你会发现linux和windows系统是两种设计体系，windows用户操作更简单更直接，适合与人打交道，而linux是用各种操作指令和文件、和服务打交道，更适合于机器。两者像是“人]]></description><category></category></item><item><title><![CDATA[一文看懂redis知识全景--redis核心技术与实战系列]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/112638428</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/112638428</guid><author>zhouboke</author><pubDate>Thu, 14 Jan 2021 21:16:00 +0800</pubDate><description><![CDATA[一、redis基础篇–数据类型、数据结构、单线程及多路复用机制


]]></description><category></category></item><item><title><![CDATA[redis核心技术与实战系列3:基础篇C]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/112212320</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/112212320</guid><author>zhouboke</author><pubDate>Tue, 05 Jan 2021 09:14:15 +0800</pubDate><description><![CDATA[这节课，我就和你聊聊主从库同步的原理，以及应对网络断连风险的方案。主从库同步是如何完成的呢？
主库数据是一次性传给从库，还是分批同步？
要是主从库间的网络断连了，数据还能保持一致吗？

一、主从数据库如何实现数据一致
AOF 和 RDB，如果 Redis 发生了宕机，它们可以分别通过回放日志和重新读入 RDB 文件的方式恢复数据，从而保证尽量少丢失数据，提升可靠性。
不过，即使用了这两种方法，也依然存在服务不可用的问题。比如说，我们在实际使用时只运行了一个 Redis 实例，那么，如果这个实例宕机了，它在.]]></description><category></category></item><item><title><![CDATA[redis核心技术与实战系列2:基础篇B]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/112001440</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/112001440</guid><author>zhouboke</author><pubDate>Sun, 03 Jan 2021 22:44:32 +0800</pubDate><description><![CDATA[一、日志，宕机了，redis如何避免数据丢失
Redis 的持久化主要有两大机制，即 AOF（Append Only File）日志和 RDB 快照。
AOF 日志是如何实现的？
AOF是写后日志，“写后”的意思是 Redis 是先执行命令，把数据写入内存，然后才记录日志.
AOF 里记录的是 Redis 收到的每一条命令，以文本形式保存的。
好处

可以避免出现记录错误命令的情况。
它是在命令执行后才记录日志，不阻塞当前的写操作

三种写回策略
AOF 配置项 appendfsync
Always，同步写]]></description><category></category></item><item><title><![CDATA[redis核心技术与实战系列1:基础篇A]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/111878042</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/111878042</guid><author>zhouboke</author><pubDate>Tue, 29 Dec 2020 00:37:41 +0800</pubDate><description><![CDATA[本章主要讲redis的初级篇,先从一个简单的simplekv的键值对构建引出相关的操作.需要存放什么类型的数据、对数据可提供什么操作、数据保存在哪里、如何查找数据、如何保障服务的高可用性?当你下想通了这些实操过程后,你就可以类比着探寻redis的实际原理了.

基础架构:一个键值数据库包含什么
学习最好的方式是先建立起“系统观”.若想深入理解和优化redis,必须对它的总体架构和关键模块有一个全局的认知,再深入到具体的知识点.
假设我们构建一个简单的simplekv组建,我们会如何下手?
1、可以存哪些数.]]></description><category></category></item><item><title><![CDATA[redis核心技术与实战系列0:开篇词]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/111877586</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/111877586</guid><author>zhouboke</author><pubDate>Tue, 29 Dec 2020 00:13:46 +0800</pubDate><description><![CDATA[开篇词-这样学redis,才能技高一筹

开篇专栏来记录我在极客时间上学习的redis核心技术与实战系列这门课.老师讲的不错,从树状知识图的框架讲起,再来细讲其中的一个个枝叶的知识点.可以帮助新手较快的了解redis整个知识框架图.在此做个简单的知识点梳理,一是帮助自己更好的吸收理解,二是重拾博客,更好的搭建自己的知识图谱体系.

redis性能相关的问题
问题一:为了保证数据的可靠性,redis需要在磁盘上读写AOF和RDB,但是在高并发场景下会带来两个新的问题:
1、写AOF和RDB会造成redis性能]]></description><category></category></item><item><title><![CDATA[Book01--代码整洁之道：程序员的职业素养]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/111137225</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/111137225</guid><author>zhouboke</author><pubDate>Sun, 13 Dec 2020 18:07:43 +0800</pubDate><description><![CDATA[对自己读过的书做一些梳理，这是第一本：《代码整洁之道：程序员的职业素养》。作者从成为专业的程序员需要什么态度，需要遵循什么样的原则，需要采取什么样的行动三个方面说起。对日程工作受用较大，值的一看。


大致总结：

1、

职业素养体现在你如何解决问题，思路，步骤及反思
&gt;因为我们需要招聘的不是“经历丰富”的人，而是“有职业素养”的人。你遇到的问题可能很容易也可能很难，但我看重的并不是问题的难度，而是解决问题的方式、步骤以及反思的程度


面对重大事故，一方面需要及时挽救，将危害降到最低。另一方面需.]]></description><category></category></item><item><title><![CDATA[redis入门之高级用法]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/110100940</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/110100940</guid><author>zhouboke</author><pubDate>Tue, 24 Nov 2020 23:36:10 +0800</pubDate><description><![CDATA[这篇文章接上篇redis入门基础教程,写写redis的稍稍高级一点的用法~~
文章目录part 3:高级用法1、HyperLogLog(pfadd/pfcount)Redis HyperLogLog 命令2、订阅/消费Redis 发布订阅命令3、redis事务Redis 事务命令4、Redis 安全some err:

part 3:高级用法
1、HyperLogLog(pfadd/pfcount)
Redis HyperLogLog 是用来做基数统计的算法，优点是在输入元素的数量或者体积非常非常大时，计.]]></description><category></category></item><item><title><![CDATA[mac安装redis+使用超简单教程]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/110026869</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/110026869</guid><author>zhouboke</author><pubDate>Tue, 24 Nov 2020 01:13:21 +0800</pubDate><description><![CDATA[概括:本文介绍了mac系统安装redis服务的操作步骤,同时对redis常见的五种数据结构的常见用法做了一个简单的介绍和打样,希望帮助新手更快的上手使用这门应用广泛的内存数据库.]]></description><category></category></item><item><title><![CDATA[问问线程]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/83020193</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/83020193</guid><author>zhouboke</author><pubDate>Thu, 11 Oct 2018 23:08:27 +0800</pubDate><description><![CDATA[实现多线程的三种方式

 

1）一种是继承Thread类，
	2）是实现Runable接口，
	3）实现Callable接口，并与Future、线程池结合使用（Runnable和Callable都代表那些要在不同的线程中执行的任务。Runnable从JDK1.0开始就有了，Callable是在JDK1.5增加的。它们的主要区别是Callable的 call( ) 方法可以返回值和抛出异常，而Ru...]]></description><category></category></item><item><title><![CDATA[WEB22--Ajax]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82974620</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82974620</guid><author>zhouboke</author><pubDate>Mon, 08 Oct 2018 23:19:42 +0800</pubDate><description><![CDATA[一、Ajax概述

1、什么是同步，什么是异步

同步现象：客户端发送请求到服务器端，当服务器返回响应之前，客户端都处于等待卡死状态

异步现象：客户端发送请求到服务器端，无论服务器是否返回响应，客户端都可以随意做其他事情，不会被卡死



2、Ajax的运行原理

页面发起请求，会将请求发送给浏览器内核中的Ajax引擎，Ajax引擎会提交请求到服务器端，在这段时间里，客户端可以任意进行任意操作，...]]></description><category></category></item><item><title><![CDATA[在一个字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82951543</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82951543</guid><author>zhouboke</author><pubDate>Sat, 06 Oct 2018 15:59:14 +0800</pubDate><description><![CDATA[ 思路：用list集合来保存，循环遍历输入字符串，若list中包含该值就删除，否则就加入集合中。即：集合中最终保存的是只出现过一次的字符。


package offer;

import java.util.ArrayList;

public class firstNotRepeatingChar {
    
	public static int FirstNotRepeatingChar(...]]></description><category></category></item><item><title><![CDATA[输入一个链表，输出该链表中倒数第k个结点。]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82950130</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82950130</guid><author>zhouboke</author><pubDate>Sat, 06 Oct 2018 14:02:02 +0800</pubDate><description><![CDATA[两种思路：

1）用栈的思想，先把链表反转，然后再找出第k个节点。

先把所有节点放进栈内，同时统计节点个数，若总节点数小于k则返回null。在弹出栈，倒数k即为弹出的第k个值。

2）定义两个指针，一个指针先走k步，再两者一起往后走，当第一个指针到达终点的时候，第二个指针刚好到达倒数第k点，因为他们之间的距离恒为k。

 


import java.util.List;
import java...]]></description><category></category></item><item><title><![CDATA[计算机网络知识点整理]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82937660</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82937660</guid><author>zhouboke</author><pubDate>Sat, 06 Oct 2018 10:51:15 +0800</pubDate><description><![CDATA[鉴于计算机网络那几层协议笔试见过多次，但是都没有合理的总结归纳，特此来分析一波。前几天看到一段话，大意是说：一句话不管多么有道理，假设你想让对方听进去，就必须以别人听得进的方式去表述，否则就大概率无效，所以表达的方式真的是一件极其重要的事，怎样让人家听进去才是你的本事，纵使你的道理多真、本领多深，也得为听者考虑。话不多说，学习去了。

1.OSI模型七层结构



七层协议的作用：

 1.物理层...]]></description><category></category></item><item><title><![CDATA[输入两棵二叉树A，B，判断B是不是A的子结构。（ps：我们约定空树不是任意一个树的子结构）]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82934413</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82934413</guid><author>zhouboke</author><pubDate>Wed, 03 Oct 2018 22:22:13 +0800</pubDate><description><![CDATA[ 定义：父树包含子树的所有节点，注意，空树不是任何数的子树。

思路：用递归来实现，从A树的根节点开始，判断其所有的节点是不是依次和树B相同，如不同，递归调用函数，继续判断树A当前节点的左子树的所有节点或右子树的所有节点是否和树B所有节点相同，直到遍历到父树A的叶子节点，如果不是完全相同，则树B不是树A子树，如果直到遍历到树B的叶子节点，其所有节点在树A中均有，则树B是树A的子树。

isSubt...]]></description><category></category></item><item><title><![CDATA[荷兰国旗问题]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82933541</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82933541</guid><author>zhouboke</author><pubDate>Wed, 03 Oct 2018 20:14:27 +0800</pubDate><description><![CDATA[ 问题：输入RGB三种字母的随机排列的字符串，要求输出R在左边G在中间B在右边的情况。

eg  输入 ：RBGRBGGRBGGRGBRGGRG

       输出：RRRRRRGGGGGGGGGBBBB

思路：定义两个指针变量，分别划分最左端R和最右端B，对当前数组循环遍历，如若为R则与R区间的下一个指针交换，若为B则与B区间的前一个指针位置交换，注意：前者需要 i++ ; 后者 i 不变 ...]]></description><category></category></item><item><title><![CDATA[输入字符串返回其中出现次数最多的字母的大写形式]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82932232</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82932232</guid><author>zhouboke</author><pubDate>Wed, 03 Oct 2018 17:52:47 +0800</pubDate><description><![CDATA[题目： eg:    输入：12*%236addarbW  EE  FSFXAaA （无所谓数字字母特殊符号空格）;    输出：A5

 思路：先把输入字符串全转换成大写形式，再定义一个26位的数组，判断当前值，若是字母就将它存放到与A的差值数对应的数组序号里（先把数组号取出，将其次数加一，再放回去）。即数组序号代表A-Z的序号，数组的值对应字母出现的次数。最后遍历，取出最大值。

值得注意的是...]]></description><category></category></item><item><title><![CDATA[WEB10_JDBC连接池&DBUtils]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82849775</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82849775</guid><author>zhouboke</author><pubDate>Wed, 26 Sep 2018 13:52:13 +0800</pubDate><description><![CDATA[连接池

传统JDBC的操作对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序.

 在程序开始的时候,可以创建几个连接,将连接放入到连接池中.用户使用连接的时候,可以从连接池中进行获取.用完之后,可以将连接归还连接池.-----解决性能问题，即资源浪费

 



【常见的开源的数据库连接池】：

DBCP：

DBCP(DataBase connectio...]]></description><category></category></item><item><title><![CDATA[WEB08_MySQL&JDBC]]></title><link>https://blog.youkuaiyun.com/zhouboke/article/details/82845508</link><guid>https://blog.youkuaiyun.com/zhouboke/article/details/82845508</guid><author>zhouboke</author><pubDate>Wed, 26 Sep 2018 10:29:26 +0800</pubDate><description><![CDATA[MySQL 

1.创建一张表

create table 表名(

字段名 类型(长度) [约束],

字段名 类型(长度) [约束],

字段名 类型(长度) [约束]

);

2.查看数据库表

创建完成后，我们可以查看数据库表   show tables;

查看表的结构    desc 表名；



3.删除表记录

说说delete与truncate的区别？

delete删除的时候...]]></description><category></category></item></channel></rss>