2020 01-23

Elasticsearch系列---结构化搜索

概要 结构化搜索针对日期、时间、数字等结构化数据的搜索,它们有自己的格式,我们可以对它们进行范围,比较大小等逻辑操作,这些逻辑操作得到的结果非黑即白,要么符合条件在结果集里,要么不符合条件在结果集之外,没有那种相似的概念。 前言 结构化搜索将会有大量的搜索实例,我们将"音乐APP"作为主要的案例背景,去开发一些跟音乐APP相关的搜索或数据分析,有助力于我们理解实战的目标,顺带巩固一下学习的知识。 我们将一首歌需要的字段暂定为:|name|code|type|remark||:----|:--:|

2020 01-23

算法浅谈——递归算法与海盗分金问题

本文始发于个人公众号:TechFlow 最近看到一道很有意思的问题,分享给大家。 还是老规矩,在我们聊算法问题之前,先来看一个故事。 传说中,有5个海盗组成了一支无敌的海盗舰队,他们在最后一次的寻宝当中找寻到了100枚价值连城的金币。于是,很自然的,这群海盗面临分赃的问题。为了防止海盗内讧,残忍的海盗们制定了一个奇怪的规则: 他们决定按照功劳大小对五个人进行编号,由编号小的海盗先提出分配方案。如果方案能够得到大多数人的同意,那么就按照他提出的方案进行分配。如果不能通过,说明他已经失去了威望

2020 01-23

基于JS实现归并排序算法

/********************************************* JS归并排序***************************************************/   /*之前学习了一下归并算法,现在想把他分享给大家*/ /*  * 归并排序,分开数组,不断一分为二直到只剩一个元素(这里用到递归思想,不断自己分开自己),   * 然后对分开的自己进行排序,在归并的

2020 01-23

基于七牛云对象存储,搭建一个自己专属的极简Web图床应用(手摸手的注释讲解核心部分的实现原理)

一个极简的Web图床应用,支持复制粘贴与拖拽上传图片 1.开发缘由 日常使用VsCode编写markdown笔记与博客文章时,在文章中插入图片时发现非常不便 使用本地文件编写相对路径---没法直接复制粘贴到其它地方 使用第三方的图床---需要登录账号(还是放到自己"口袋"里放心) vscode内置插件---诸多bug使用不方便 喜欢折腾(真实) 2.效果预览 抛弃一切花里胡哨的,满足日常使用 静图 动图 点击体验一把 项目地址:github,附有详细的食用指南,从0到1 3.手把手讲

2020 01-23

PythonI/O进阶学习笔记_11.python的多进程

content: 1. 为什么要多进程编程?和多线程有什么区别? 2. python多进程编程 3. 进程间通信 =======================================   一.为什么要多进程编程?和多线程有什么区别? 由于GIL的存在,所以对于某一些多线程任务来说,无法利用多核的优势,对这些耗cpu的任务,用多进程反而能利用多cpu。 所以多cpu的操作用多进程编程。 对io操作较多的任务来

2020 01-23

【Java并发基础】死锁

前言 我们使用加锁机制来保证线程安全,但是如果过度地使用加锁,则可能会导致死锁。下面将介绍关于死锁的相关知识以及我们在编写程序时如何预防死锁。 什么是死锁 学习操作系统时,给出死锁的定义为两个或两个以上的线程在执行过程中,由于竞争资源而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。简化一点说就是:一组相互竞争资源的线程因为互相等待,导致“永久”阻塞的现象。 下面我们通过一个转账例子来深入理解死锁。 classAccount{ privateintbalance; //转账 voidt

2020 01-22

源码学习之线程池

大家面试过程中肯定被问道过线程池。为什么要使用线程池呢?因为在系统中频繁创建线程会造成很大的CPU消耗。而且用完的线程要等待GC回收也会造成消耗。 下面我们就来学习下最常用的线程池 ThreadPoolExecutor, 首先先来看看它的构造方法: publicThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,TimeUnitunit,BlockingQueue<Runnable>

2020 01-22

javaweb-codereview 学习记录-4

反射java.lang.Runtime 之前在p牛的知识星球中也学过反射机制调用Runtime来执行命令时需要用getruntime来返回Runtime类的实例,因为Runtime类设计是单例模式,并且该类的构造方法是私有的,因此无法直接通过newinstance来实例化该类,因此除了通过getRuntime来返回类的实例来调用该类的方法外,还可以通过反射直接获取该类的构造方法并且设置访问属性来实例化该类。 importsun.misc.IOUtils; importjava.io.Inpu

2020 01-22

Django框架的初使用

1Django框架的初使用 说起Django框架,肯定需要首先明确一个概念,即软件框架。下面就是第一个问题: 1软件框架(softwareframework) 1.1概念界定 软件框架:通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。1 软件框架是具有基础功能的软件产品: 基础功能:可以理解为为了满足某类业务场景而设定的功能。 软件产品:软件框架是为了针对某一类软件设计问题而产生的。 1.2形象理解 其

2020 01-22

Mybatis Plus入门

MyBatisPlus介绍 MyBatisPlus (简称MP)是国内人员开发的MyBatis增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。 特征 无侵入:Mybatis-Plus在Mybatis的基础上进行扩展,只做增强不做改变,引入Mybatis-Plus不会对您现有的Mybatis构架产生任何影响,而且MP支持所有Mybatis原生的特性依赖少:仅仅依赖Mybatis以及Mybatis-Spring损耗小:启动即会自动注入基本CURD,性能基本无损