- 博客(103)
- 资源 (5)
- 收藏
- 关注
翻译 计算机类的书籍整理分类
资料整理不易,学习的同时不要忘记关注数据结构与算法相关书籍 挑战程序设计竞赛 百度云盘下载地址 密码 pf8h Java数据结构和算法 百度云盘下载地址 密码 jhnj 算法图解. 百度云盘下载地址 密码 gffp 算法导论 百度云盘下载地址 密码 i4ig 算法第四版 百度云盘下载地址 密码 w3sd 数据结构与算法分析C语言描述版 百度云盘下载地址 密码 wnbp 数据结构与算法分析Java语言描述版 百度云盘下载地址 密码.
2020-07-13 17:43:03 780
原创 五号编程 | Java缓存框架 JetCache
前言 缓存在项目中一般都会运用,现有的项目大部分就是基于Spring boot框架搭建,大部分的缓存也是基于Spring boot自带的缓存来做。今天我们的主角不是Spring boot自带的缓存,是阿里缓存框架JetCacheJetCache介绍 JetCache是一个基于Java的缓存系统封装,支持API和注解来使用。可以支持原生的TTL、二级缓存、分布式自动刷新,当前有四个实现,RedisCache、TairCache(此部分未在 github 开源)、CaffeineCache(in.
2021-03-08 09:49:14 270
转载 通过ZeroTier访问无公网IP地址,实现内网穿透
# 介绍ZeroTier是一款非常好用的内网穿透工具,不需要配置,就能实现虚拟局域网的组建,让你可以在外也能连回家中、学校、办公室的电脑获取资料,数据。配置与使用都非常简单,堪称「 无配置,零基础」。ZeroTier 支持 Windows、macOS、Linux 三大主流平台,iOS、Android 两大移动平台,以及 QNAP(威连通)、Synology(群晖)、Western Digital MyCloud NAS(西部数据)三个 NAS 平台,还支持 LEDE开源路由器项目。# 使用步骤.
2020-10-12 13:27:42 4278
原创 是时候把你的Sawgger2.x升级到Swagger-ui 3.0.0了
介绍Swagger 是可以为我们提供通过代码和注解自动生成Rest API 文档,这一点对于保证 API 文档的及时性将有很大的帮助Swagger 是一套基于 OpenAPI 规范(OpenAPI Specification,OAS)构建的开源工具,可以帮助我们设计、构建、记录以及使用 Rest API。Swagger 提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以在该页面中对相关接口进行查阅和做一些简单的接口请求。该项目支持在线导入描述文件和本地部署UI项目。新特性.
2020-10-10 09:49:03 1381 1
原创 找出数组中重复的数字
一:描述在一个长度为N的数组里的所有数字都在0到N-1的范围内,数组中的某些数组是重复的,但是不知道重复了多少个,也不知道某个数字复查了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或3二:解法排序后,顺序扫描,判断是否有重复,时间复杂度为 0(n²)利用哈希表,遍历数组,如果哈希表中没有该元素,则存入哈希表中,否则返回重复的元素。时间复杂度为 0(n),空间复杂度为 0(n)长度为 n,元.
2020-10-09 10:17:16 243
原创 程序员的春天到了,最受欢迎的男友职业排名第三
# 职业大曝光男方职业一直是女方关心最多的,在相亲中问的最多的就是你是做什么的。 在收集了10607个数据样本之后,相关组织获得了最受欢迎男友的职业排名前十名,依次为:医生,金融从业人员,程序员,律师,建筑师,公务员,摄影师,警察,国有企业职员。如下图# 眼中的前三名在35.4%的受访者认为,最理想的男朋友是医生。为什么医生的识别度如此之高?也许是因为医生可以最好地给人们带来安全感。 z在恋爱中的女孩比男孩需要更多的安全感。 在女孩的眼中,理性,客观,冷静和成熟是安全感的体现。 当然,就收.
2020-08-24 09:22:49 636
原创 Thread.join()在多线程中起什么作用,你知道嘛?
#使用场景有时候我们在主线程中生成了子线程,如果子线程中有进行大量的耗时操作,主线程会比子线程早结束,这也是没有问题的,但是如果主程序在结束之前需要子线程的处理结果,那么就必须要等子线程结束之后才能结束主线程。这个时候我们就可以用join()方法。多线程按照自己指定的顺序执行。例子线程1:class OneThread extends Thread { public OneThread() { super("[OneThread] Thread"); }.
2020-08-21 16:57:32 753
原创 利用Docker,轻松搞定MySQL主从复制
前言最近有小伙伴反映在Linux中搭建MySQL的主从环境比较费劲,今天给大家介绍如何利用Docker快速搭建MySQL的主从复制。关于docker关于docker的介绍,这里就不多说了,在我们之前的文章中有介绍过docker,有兴趣的朋友可以到公众号中查看docker系列文章中了解更多的docker知识。Mysql主从搭建规划首先我们规划二个实例:192.168.88.100:33061/主机192.168.88.101:33062/从机也可以准备多个从机,接下来我们在docker中.
2020-08-13 17:44:33 132
原创 分布式缓存常见问题解决方案
# 前言在高并发的分布式系统中,缓存是必不可少的一部分,如果没有缓存,大量的请求直接落到系统,系统是很难撑住高并发的冲击,所以分布式系统中缓存的设计是很重要的一部分。运用缓存后可以加速读写、降低后端的负载,但同时又会出现运维成本,数据不一致性等问题。下面介绍在运用缓存过程中可能会碰到的问题# 缓存雪崩缓存雪崩是由于原有的的缓存失效,新缓存还没有到期间,在这个期间原本所有的请求应该是先访问缓存,现在直接落在查询数据了,从而对数据库cpu和内存造成巨大压力,严重会导致数据库宕机。从而形成一系列连锁反.
2020-08-12 12:44:40 544
原创 前后端都在用的加解密技术
# 介绍数字签名、信息加密在前后端开发是经常用的的技术,主要的应用场景比如:用户登录、交易、信息通信、认证等。不同的应用场景可能会选择不同的签名加密算法,下面给大家介绍几种比较常用的签名加密算法。# AES高级加密标准(AES,Advanced Encryption Standard)是最常见的对称加密算法比如:微信小程序加密传输就是用这个加密算法的。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:# RSARSA加密算法是一种典型的非对称加密算法,是应用最广泛的非对称加密算.
2020-08-11 09:56:04 1001
原创 常用技术组件选型
常用技术组件选型负载均衡:Nginx、OpenResty、LVS、F5、DNS、HAproxy。注册中心:Eureka、Zookeeper、Etcd、Consul、Redis。认证鉴权:JWT消费队列:Kafka、Redis、RabbitMQ、ActiveMQ、ZeroMQ。网关:Nginx、Zuul。缓存:Redis、MemCached、EhCache、OsCache。搜索:ElasticSearch、Solr。熔断:Hystrix、resilie.
2020-08-10 08:56:17 1142
原创 爱了,Docker管理工具Portainer
# 介绍portainer是Docker的管理工具,是轻量级的,跨平台的和开源的管理UI。portainer提供了Docker的详细概述并允许您通过基于Web的简单仪表板管理容器,图像,网络和卷等等。# 安装portainer的安装很简单,下面我们通过docker来安装:查看镜像[root@localhost ~]# docker search portainer拉取镜像[root@localhost ~]# docker pull portainer/portainerUsi.
2020-08-04 21:21:00 312
原创 nacos初探
# 概览Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。# 什么是 Nacos服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的服务的发现、配置和管理:Kubernetes ServicegRPC &am.
2020-08-04 08:56:13 146
原创 RabbitMQ基础概念介绍
# 介绍RabbitMQ是一个由Erlang语言开发的AMQP的开源实现。AMQP是什么东西?它是高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议和客户端与中间件可以传递信息。RabbitQM主要用在分布式系统中存储转发信息。在易用性、拓展性、高可用性有很好的体现。主要的特点有:可靠性RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。路由灵活(Flexible Routing)在消息进入队列之前,可以通过 Exchange 来.
2020-07-31 15:20:07 225
原创 消息队列之Kafka
# 介绍在系统中随着业务的发展,我们要做异步、要做解耦、要做流的处理、要做可靠传输等等。消息队列是必不可少的。今天给大家讲解下消息列队中用的比较多的Kafka。Kafka是一个高吞吐量、分布式、基于发布/订阅的消息系统。主要组件有:brokerKafka的服务器,复制消息的存储和转发。topic消息类别,Kafka是按照topic来进行分类消息的。partition是topic上分区,一个topic可以包含多个partition,topic消息保存在各个partition上。.
2020-07-30 17:33:35 133
原创 Spring、Spring MVC、Springboot、SpringCloud区别
介绍Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,编写更干净、容易管理、易测试。Spring MVC是Spring的一个web框架,通过Dispatch Servlet、ModelAndView、View Resolver可使web应用开发更简单。SpringBootSpring的配置很复杂、繁琐,Springboot 是约定注解优于配置,简化了spring的配置流程。SpringCloud是构建在Springboot之上,是一个关注全局服务.
2020-07-29 20:10:54 166
翻译 神了,原来你是这么干的。
# 介绍RPC,远程调用过程的称呼,它调用远程计算机上的服务就像调用本地服务一样。RPC可以很好的解耦系统,比如我们常见的WebService就是基于Http协议的一种PRC,PRC总体架构如下:# 关键技术服务发布和订阅:在服务端我们使用Zookeeper提供注册服务地址,在客户端我们从Zookeeper获取可用的服务地址。通信:在通信方面我们可以使用Netty作为通信方式。Spring:使用Spring的配置服务,加载Bean,扫描注解。动态代理:客户端使用了代理模式透明.
2020-07-28 12:44:46 126
原创 Netty知多少?
# Netty原理Netty是一个高性能、异步事件驱动的NIO框架,是基于JAVA NIO提供API实现。它提供了对TCP、UDP和文件传输的支持。作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的。通过Future-Listenner机制,用户可以方便的主动获取或者通过通知机制获取IO操作结果。# Netty高性能当我们在编程过程中,当需要同时处理多个客户端接入请求的时候,我们可以利用多线程技术或者IO多路复用技术进行处理。IO多路复用技术是把多个IO的阻塞复用到同一个.
2020-07-27 19:28:36 123
原创 撸码,你的IDEA配置优化了吗?
# 关闭自动更新没有必要使用最新的Idea版本,所以可以关闭自动更新。当有较大版本更新时,才建议升级版本# 修改maven的path变量为非系统盘下的路径# 在新窗口打开项目# 打开代码自动完成Idea默认的代码自动完成是区分大小写的,关闭后,按任意键即可展示代码提示。# 设置编码字符集将Idea的编码方式修改为UTF-8,类似于在Eclipse的eclipse.ini中配置-Dfile.encoding=UTF-8# 修改maven仓库路径可以使用集成的maven.
2020-07-25 11:13:14 148
原创 微服务之服务跟踪
介绍当部署的服务越来越多的时候,需要跟踪一个请求从一个服务到下一个微服务的传播过程,Spring Cloud Sleuth正是解决这个问题,它在日志中引入唯一的ID,以保证微服务调用之间的一致性,这样你就可以跟踪某个请求是如何从一个服务传到下一个服务。为了实现请求跟踪,当请求发送到分布式系统的入口时,只需要服务跟踪框架为该请求创建一个唯一的跟踪标识,同时在分布式内部流转的时候,框架始终保持该ID唯一,直到返回给请求方为止,这个唯一标识就是Trace ID,通过Trace ID的标记,我们就可以将所有.
2020-07-23 10:25:08 912
原创 微服务之API Gateway
# 介绍API Gateway 是一个服务器,也可以说是系统进入的唯一入口。API Gateway封装了内部的架构,提供API给各个客户端,它还有其他的功能,比如:授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等等。API GateWay 负责请求转发、合成和协议转换。所有来自客户端的请求都要先经过API Gateway,然后路由这些请求到对应的微服务上去,API Gateway将经常调用多个微服务来处理一个请求以及聚合多个结果。它可以在web协议和内部的非web协议友好型协议直接进行转.
2020-07-22 10:43:13 304
原创 微服务之配置中心
# 介绍配置中心作为整个微服务的系统参数配置,它需要满足几点要求:高效获取、实时感知、分布式访问。# Spring Cloud Config是Spring Cloud中带的配置中心组件。也正是这个原因,所以它和Spring是无缝集成,使用起来非常方便。并且它的配置存储支持Git,不过它没有可视化的操作界面,配置的生效也不是实时的,需要重启或去刷新。所以比较适用于小型项目快速上手。Server两部分,Config Server 实现配置文件的存储,对外以接口的形式提供获取配置文件,然后Confi.
2020-07-22 10:41:59 181
原创 微服务之服务注册发现
# 介绍服务注册就是维护一个登记簿,它管理系统内所有的服务地址。当新的服务启动后,它会向登记 簿交待自己的地址信息。服务的依赖方直接向登记簿要 Service Provider 地址就行了。当下用于服 务注册的工具非常多 ZooKeeper,Consul,Etcd, 还有 Netflix 家的 eureka 等。服务注册有两 形式:客户端注册和第三方注册。# 客户端注册(zookeeper)客户端注册是服务自身要负责注册和注销的工作,当服务启动后向注册中心注册自身,当服务下线是注销自己。期.
2020-07-22 10:27:10 200
原创 微服务之SpringCloud
# 微服务介绍将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,并使用轻量级机制通信,通常是 HTTP RESTFUL API 。这些服务围绕业务能力来划分构建的,并通过完全自动化部署机制来独立部署。# 微服务特点微服务架构的主要特点是组件化、松耦合、自治、去中心化。优点:#每个服务足够内聚,足够小,代码容易理解、开发效率提高。#服务之间可以独立部署,微服务架构让持续部署成为可能。#系统相比较复杂单体应用更为简洁轻量化,每个微服务因为独立部署,可以使用不同.
2020-07-22 10:25:40 111
原创 Spring boot 原理
# 特点它是一个Spring框架的框架,能够简化配置文件,快速构建web应用,内置tomcat,无需打包,直接运行,自动装载Spring。默认有 resources 文件夹存放配置文件,默认打包方式为 jar。# 注解@SpringBootApplication标注的类为 Spring Boot 的主配置类,Spring Boot 会运行这个类的 main 方法来启动 Spring Boot 应用,本质上是由 3 个注解组成,分别是@Configuration、 @Enable...
2020-07-21 10:19:08 130
原创 了解Spring的 MVC模式吗?
Spring MVC 的原理Spring 的模型-视图-控制器(MVC)框架是围绕一个 DispatcherServlet 来设计的。这个 Servlet 会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。Spring MVC 的流程 Http 请求到 DispatcherServlet。 HandlerMapping 寻找处理器 调用处理器 Controller。 (4)(5)Cont.
2020-07-20 09:52:18 117
原创 Spring IOC 中 Bean 生命周期
Spring Bean 生命周期 实例化 实例化一个 Bean,也就是我们常说的 new。 IOC依赖注入 按照 Spring 上下文对实例化的 Bean 进行配置。 setBeanName 实现 如果这个 Bean 已经实现了 BeanNameAware 接口,会调用它实现的 setBeanName(String)方法,此处传递的就是 Spring 配置文件中 Bean 的 id 值。 BeanFactoryAware 实现 如果这个 Bea...
2020-07-17 13:55:27 164
原创 Spring IOC中 Bean 作用域
Spring Bean 作用域Spring 3 中为Bean定义了5种作用域,它们是:singleton(单例)、prototype(原型)、request、session 和 global session singleton 单例模式(多线程下不安全)。 Spring IoC 容器中只会存在一个共享的 Bean 实例,无论有多少个 Bean 引用它,始终指向同一对象。 Singleton 作用域是 Spring 中的缺省作用域,也可以显示的将 Bean 定义为 singl...
2020-07-17 13:54:27 266
原创 面试官:说一说 Spring IOC的原理吧,我懵逼了...
概念Spring 通过配置文件(或者注解的方式)描述Bean以及Bean直接的依赖关系,利用Java的反射功能实例化Bean并建立Bean直接的依赖关系。Spring 的IOC容器除了完成这些基本功能外,还提供了Bean的实例缓存、生命周期管理、Bean的实例代理、事件发布、资源装载等其他服务。Spring容器的高级视图Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之...
2020-07-17 13:52:17 290
原创 Spring的介绍一遍就够了
Spring的原理它是一个开源的轻量级框架,是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。还可以和其他的框架无缝整合。它的特点有:轻量级从大小和开销二方面来看,Spring都是轻量级的,完整的Spring框架可以在一个只有1M多的JAR文件里发布。Spring所需的处理开销也是微不足道。Spring是非浸入式的,Spring应用中的对象不依赖Spring的特殊类。控制反转Spring通过一种称作控制反转IOC的技术促进了低耦合。当应用了IOC,一个对象.
2020-07-16 10:53:31 270
原创 “拍一拍”,是时候武装下你的IDEA了
俗话说:磨刀不误砍柴功,是时候去武装一下你的IEDA了,言归正传,来看我们今天的主角:IDEA插件我这里已:mac IntelliJ IDEA 2020.1 (Ultimate Edition)版本来说明。Q1:怎样查找我们的插件了呢?Preferences-> plugins -> Browse repositories找到入口了之后,下面我来推荐几款在开发中用的频率比较高的插件。SonarLint(代码风格)在开发中保持良好的代码风格是开发的基本功,当时苦于不知道..
2020-07-11 11:37:27 182
原创 聊一聊,JAVA线程的生命周期
当线程创建并启动之后,它不是一启动就进入执行阶段,也不是一直处在执行阶段,在线程的生命周期里,它有5种状态:1、新建(new),2、就绪(Runnable),3、运行(Running),4、阻塞(Blocked),5、死亡(Dead)。在线程启动后,它不可能一直占着CPU运行,所有CPU需要在多条线程之间切换,所以线程状态也会多次在运行、阻塞之间切换。 新建状态 当程序使用 new 关键字创建了一个线程之后,该线程就处于新建状态。 此时由 JVM 为其分配 内存,并初始化其成员变量的值。 ..
2020-07-10 09:38:39 161
原创 Flutter理解
1,FlutterFlutter是一个跨平台的(android和ios)的移动开发框架,使用的是Dart语言。Flutter在开发出来的应用具有好性能,高稳定性,低延时等特点。并且开发出来的应用基本和原生开发出来的体验效果差不多。2,Flutter支持哪些平台开发Flutter开发效果高,一套代码可以开发出Android、ios、web平台应用。3,Flutter开发、迭代方...
2018-12-21 09:17:32 738
转载 Swift 4.0 中的 open,public,internal,fileprivate,private
1、privateprivate访问级别所修饰的属性或者方法只能在当前类里访问。2、fileprivatefileprivate访问级别所修饰的属性或者方法在当前的swift源文件里可以访问3、internalinternal(默认访问级别,internal修饰符可写可不写)internal访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问。如果是框架或者库代码...
2018-11-12 17:58:10 192
转载 xcode9安装使用Alcatraz
对于一个资深程序员来讲,我想Alcatraz这个插件一定不陌生吧,一个插件管理神器。里面有很多使用的提高代码写作效率的插件。但是很可惜xcode8时代屏蔽了插件,虽然有一些破解方法,但是使用起来仍然不稳定。所以很久没有用过插件了。现在xcode9时代。再加上好用的xcode签名框架xcode_plugins。我们又可以方便的使用插件了。以前最怕的就是xcode升级。因为每一个插件的info.p...
2018-11-06 17:56:10 266
转载 使用Docker Swarm搭建分布式爬虫集群
在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况。此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运行?代码修改了,于是又要一个服务器一个服务器登录上去依次更新?有时候爬虫只需要在一个服务器上面运行,有时候需要在200个服务器上面运行。你是怎么快速切换的呢?一个服务器一个服务器登录上去开关?或者聪明一点,在Redis里面设置一个可以修改的标记,只有标记...
2018-10-15 09:57:33 1152 1
转载 python yield from 语法
python yield from 语法yield语法比较简单, 教程也很多 , yield from的中文讲解很少 , python官网是这样解释的PEP 380 adds the yield from expression, allowing a generator to delegate part of its operations to another generator. Th...
2018-08-30 10:04:03 158
翻译 Python的生成器
什么是生成器创建python迭代器的过程虽然强大,但是很多时候使用不方便。生成器是一个简单的方式来完成迭代。简单来说,Python的生成器是一个返回可以迭代对象的函数。怎样创建生成器在一个一般函数中使用yield关键字,可以实现一个最简单的生成器,此时这个函数变成一个生成器函数。yield与return返回相同的值,区别在于return返回后,函数状态终止,而yield会保存当前函数的...
2018-08-30 09:39:21 155
翻译 Python迭代器(Iterator)
概述 迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。延迟计算或惰性求值 (Lazy evaluation) 迭代器不要求你事先准备好整个迭代过程中所有的元素。仅仅是在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。可迭代对...
2018-08-30 09:11:22 153
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人