0%

排序(sort)- 下

归并排序(Merge Sort)

归并排序算法原理

先把数组从中间分成前后两部分,然后对前后两部分分别进行排序,再将排序好的两部分合并到一起,这样整个数组就有序了。这就是归并排序的核心思想。如何用递归实现归并排序呢?写递归代码的技巧就是分写得出递推公式,然后找到终止条件,最后将递推公式翻译成递归代码。递推公式怎么写?如下

阅读全文 »

递归(recursion)

递归需要满足的三个条件

究竟什么样的问题可以用递归来解决呢?我总结了三个条件,只要同时满足以下三个条件,就可以用递归来解决。

  1. 一个问题的解可以分解为几个子问题的解
  2. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样
  3. 存在递归终止条件
阅读全文 »

栈(stack)

如何理解“栈”?

从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。

我第一次接触这种数据结构的时候,就对它存在的意义产生了很大的疑惑。因为我觉得,相比数组和链表,栈带给我的只有限制,并没有任何优势。那我直接使用数组或者链表不就好了吗?为什么还要用这个“操作受限”的“栈”呢?

阅读全文 »

前言

最近人有些低潮,干什么都不得劲。工作也逐渐进入安逸区,没什么有挑战性的工作,都是对之前的重复。想着把计算机基础都好好补一下,系统性的梳理一下,中国大学慕课网上面的国家精品课程看一看,极客时间上面的一些课程也好好学习一下。

以下的一些总结可能过于简陋,更多的是总纲性质的总结,更多的细枝末节,不懂为什么的,自己去找那些基础来看。简而言之,就是下面的总结很多只说了是什么,没有说为什么。

阅读全文 »

前言

最近开始做一个物联网项目,设备(终端)会向服务器发送心跳包以及其他数据,服务端的框架我使用了 netty 以及 spring-boot,考虑到后续随着设备数量的增多,现在的这种同步的模式,后续肯定会产生性能瓶颈。大概就 netty,数据库,设备这几部分,其实 netty 性能我是不担心的,但是数据一多,数据库肯定是会成为性能瓶颈。现在我把数据库这块,也就是业务这块,跟 netty 分离,netty 只处理终端上传的数据,处理完之后直接丢到 mq 里面。业务模块消费 mq 消息,将终端上传的数据持久化到数据库,供后续业务调用。

阅读全文 »

前言

最近有个想法,就是在单机上面部署双实例来实现高可用,当一个实例修改之后重新启动部署的时候,另一个实例是可用的。于是,准备试试 docker。

Docker 简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

阅读全文 »

前言

好久没更新博客了,最近来一波更新吧。

咳咳,最近得到了一批纯洁图片的 url 地址,起因是有人用爬虫爬取纯洁网站的图片。刚好很久没折腾了,于是我想着使用 python 脚本,把它们都下载下来。

阅读全文 »

JWT

一、什么是 JWT

Json web token (JWT),是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准((RFC 7519)。该 token 被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该 token 也可直接被用于认证,也可被加密。

阅读全文 »

今天碰到一个问题,就是往数据库存中文名字的时候,发现存不进去,错误提示如下:

1
[HY000][1366] Incorrect string value

简单搜索了一下,发现可能是编码设置的问题,在 MySQL 中输入 show variables like 'character%'; 命令,就可以看到自己的 MySQL 数据库相关的设置了,MySQL 默认的设置是 Latin1。我按照网上的相关说明,拷贝了一个 my.cnf 设置文件进去,设置好相关的编码,然后把数据表全删了,重新生成,发现还是插入不了中文数据,我当时有点奔溃。

阅读全文 »