Fakeflix 是一个模仿 Netflix 的项目,原作者通过它来学习使用 Redux 构建一个中等复杂度的 Web 应用。
Fakeflix 复制了 Netflix 的原有布局,并在此基础之上添加了自己的路由和交互动效。所以 Fakeflix 不是常见的克隆项目。无限滚动的类别相关页面,支持按标题、演员、电影导演搜索资源,“我的列表” 具有添加 / 删除功能,响应式布局,支持登录和注册,使用了 React hooks 和自定义的 hooks,提供加载骨架屏 (Loading skeletons)。
金粉帝后 发布的最新帖子
-
仿Netflix的练手Web项目Fakeflix
-
HandlerAdapter概述
-
HandlerAdapter组件是一个处理器Handler的适配器。HandlerAdapter组件的主要作用是适配特定的Handler来处理相应的请求。
在SpringMvc的源码中, HandlerAdapter是一个接口。该接口主要定义了三个方法。
boolean supports(Object handler);判断HandlerAdapter组件是否支持这个handler实例;ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception -
HandlerAdapter组件使用handler实例来处理具体的请求。long getLastModified(HttpServletRequest request, Object handler)。获取资源的最后修改值,该方法已经被遗弃。
HandlerAdapter类图
从以上类图中可以看出, HandlerAdapter接口系列的继承结构是比较简单的。HandlerFunctionAdapter,HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,SimpleServletHandlerAdapter这四个类直接继承了HandlerAdapter接口。只有 -
RequestMappingHandlerAdapter类稍微复杂一些。RequestMappingHandlerAdapter类是间接继承了HandlerAdapter这个接口。RequestMappingHandlerAdapter类首先是继承了AbstractHandlerMethodAdapter这个抽象类,而AbstractHandlerMethodAdapter这个抽象类再继承了HandlerAdapter接口。
-
-
java 热更新插件
java 热更新插件,无需重启 java 进程实现代码更新,提高开发效率,节约时间!hot-reload-core: 核心处理逻辑,编译&加载 class,hot-reload-agent: javaagent 入口hot-reload-watcher: 监听本地 java 和 class 文件变化,实现本地进程热更新hot-reload-server: api server,提供接口实现加载远程 jvm 进程。
基本原理watcher 监听本地文件变更(.class & .java)并缓存变更文件路径、将变更文件上传到 server 并保存在临时目录(本地模式忽略次步骤)通过 javaagent 技术 attach 到 jvm 进程,拿到Instrumentation对象,使用自定义类加载器(与业务代码隔离)加载 hot-reload-core 编译 java 文件,读取 class 文件字节码,通过instrumentation.redefineClasses()方法重新定义并加载 class。
-
beego高性能web框架
beego国产开源的高性能Web框架,是一个能够让你快速的开发Go Web应用服务,beego框架是一个能够快速开发 Go 应用的 HTTP 框架,除此之外,它还可以用来快速开发API、Web框架及后端服务等各种应用,属于一个RESTful的框架。
beego框架是基于八个独立的模块构建的,是一个高解耦的框架。同时也可以配合使用cache模块来做缓存逻辑;也能够使用日志模块来记录你的操作信息;使用 config模块来解析你各种格式的文件,八个模块相互独立且共同配合。
beego.Run是beego的解析配置文件,beego能够自动解析在 conf目录下面的app.conf配置文件,并且可以进行修改配置文件相关属性的操作,beego可以被定义为是一个开启的端口,是否开启 session,应用名称等信息。
执行用户的hookfunc模块:beego框架能够执行用户注册的hookfunc,默认的注册mime已经存在了,并且用户可以通过AddAPPStartHook函数来注册自己的启动函数。
判断是否开启的session模块:这个模块可以根据上面配置文件的分析进行判断,判断是否开启 了session,如果已经开启的话就初始化全局的 session。判断是否编译模板:beego框架还会在启动的时候根据配置文件,把views目录下的所有模板进行预编译预处理操作,然后保存在map里面,这样的操作可以有效的提高模板运行的效率,无需进行多次编译,从而达到节省开发时长的效果。
-
influxdb数据库
可伸缩的数据库,使用场景主要用来存储测量数据,事件点击以及其他等实时分析数据,用来做监控性能很不错。
InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便。
InfluxDB特征:无结构(无模式):可以是任意数量的列(tags)。可以设置metric的保存时间。支持与时间有关的相关函数(如min、max、sum、count、mean、median等),方便统计。支持存储策略:可以用于数据的删改(influxDB没有提供数据的删除与修改方法)。支持连续查询:是数据库中自动定时启动的一组语句,和存储策略搭配可以降低InfluxDB的系统占用量。
influxdb里面有一些重要概念:database,timestamp,field key, field value, field set,tag key,tag value,tag set,measurement, retention policy ,series,point。
-
pholcus纯GO语言爬虫软件
Pholcus(幽灵蛛)是一款纯Go语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批量任务并发、输出方式丰富(mysql/mongodb/csv/excel等)、有大量Demo共享;同时她还支持横纵向两种抓取模式,支持模拟登录和任务暂停、取消等一系列高级功能。
olcus(幽灵蛛)以高效率,高灵活性和人性化设计为开发的指导思想;支持单机、服务端、客户端三种运行模式,即支持分布式布局,适用于各种业务需要;
支持Web、GUI、命令行三种操作界面,适用于各种运行环境;支持mysql/mongodb/csv/excel等多种输出方式,且可以轻松添加更多输出方式;
Pholcus采用surfer高并发下载器,支持 GET/POST/HEAD 方法及 http/https 协议,同时支持固定UserAgent自动保存cookie与随机大量UserAgent禁用cookie两种模式,高度模拟浏览器行为,可实现模拟登录等功能;
服务器/客户端模式采用teleport高并发socketAPI框架,全双工长连接通信,内部数据传输格式为JSON;对采集规则进行了精心设计,支持静态编译与动态JS两种规则,灵活简单且有大量Demo,写规则就是这么轻松;支持横纵向两种抓取模式,并且支持任务暂停、取消等操作。
-
Spring MVC为你的编程保驾护航
Spring 能够使每个人都可以更快、更轻松、更加安全地进行 Java 编程。Spring 对速度、简单性和生产效率的关注,成为这一软件最大的特色,也是因此使其成为世界上最受欢迎的 Java 框架。
Spring MVC是MVC架构模式的一种最完美的实现,它简化了Java WEB 中基于MVC架构的编程过程,是Spring中的WEB应用模块。
Spring MVC 中的核心组件:DispatcherServlet (前端控制器, 处理请求的入口);HandlerMapping (映射器对象, 用于管理url与对应controller的映射关系);Interceptors(拦截器,实现请求响应的共性处理);Controller (后端控制器, 负责处理请求的控制逻辑);ViewResolver(视图解析器,解析对应的视图关系:前缀+view+后缀)。
-
ConcourseSuite客户关系管理器
除了面向销售和客户服务团队的功能外,这种基于Web的CRM解决方案还包括针对营销人员的多种功能,包括潜在客户跟踪,有针对性的电子邮件活动和调查功能。除开源版本外,还提供付费,受支持的版本。操作系统:Windows,Linux,OS X。
Concourse Suite 是一个专门的企业级CRM解决方案与一个单一的,易于使用的网络应用程序。Concourse Suite 是一个基于 Java 的开源应用程序,具有基于标准的插件体系结构,可以扩展到最大的企业,同时提供了中小型企业所需的易用性和低成本。
Concourse Suite 包括几个完全集成的模块。开发人员可以通过行业标准的 Java Portlet 架构添加自定义功能。
Concourse Suite 的引线和管道:管理整个销售周期-从铅捕获和接触管理到管道跟踪和报价。市场营销:通过开发引人注目的、可跟踪的营销活动,最大限度地利用你的潜在客户,发展现有客户。客户服务:用先进的行动计划、案例管理和票务工具快速、一致地识别、跟踪和解决客户问题。企业文件管理:通过高效的文档存储和管理工具,使有价值的信息在整个组织中可访问和可用。
-
从Hadoop深入学习大数据分析
Hadoop是一种分析和处理大数据的软件平台,是Appach的一个用Java语言所实现的开源软件的加框,在大量计算机组成的集群当中实现了对于海量的数据进行的分布式计算。
大数据(Big Data)是一个指大量数据的术语,包括传统数据库中存在的结构化数据以及文本文档,视频和音频等非结构化数据。大数据不仅仅是数据,也是各种工具、技术、框架和平台的集合。交通数据、搜索数据、证券交易所数据、社交媒体数据等都属于大数据的范畴。
Doug Cutting和Mike Cafarella是Hadoop历史上两位重要人物。这两位人物十分希望通过将数据分布在多台机器上并行计算来更快地返回网络搜索结果,以便同时执行多个作业。那时,他们正在开发一个名为Nutch的开源搜索引擎项目。但是,与此同时,谷歌搜索引擎项目也在进行中。所以,Nutch被分成两部分(其中一部分涉及数据处理),这两个部分被命名为Hadoop——一个属于Cutting儿子的玩具大象。Hadoop于2008年由雅虎发布为开源项目。今天,Apache软件基金会维护着Hadoop生态系统。
一个新技术不全是新的,通常是用成熟的技术实现几个核心理念Hadoop的核心理念是两个:MapReduce和HDFS。在不同的层次上,对MapReduce和HDFS的理解的深度也是不同的。Hadoop体系非常复杂,有诸多的细节,试图在短时间内完全理解Hadoop是不现实的。因此,我们需要根据学习的目标,将学习定位在不同的层次上,如应用层,架构层,然后有选择地进行学习。如果方向走偏了,会导致比较大的冗余成本---把时间花费在不该花费的地方。
Hadoop中有四个主要的库:Hadoop Common:这提供了Hadoop中所有其他模块使用的公用程序。Hadoop MapReduce:这是一个用于调度和处理数据的并行框架。Hadoop YARN:这是Yet Another Resource Navigator(另一个资源导航器)的首字母缩写。它是MapReduce的改进版本,用于Hadoop上运行的进程。
Hadoop分布式文件系统(Hadoop Distributed File System ) - HDFS:存储数据并维护各种机器或群集上的记录。它也允许数据以可访问的格式存储。
Hadoop不提供简单的工具来清除数据中的噪音; 因此,保持这些数据是一个挑战。它有许多数据安全问题,如加密问题。流式作业和批处理作业不能有效执行。
-
走进chrome的世界,探索v8引擎的工作原理
在探讨一个事物之前,你需要先了解它是什么。V8是一个由Google开源的采用C++编写的高性能JavaScript和WebAssembly引擎,应用在 Chrome和Node.js等中。它实现了ECMAScript和WebAssembly,运行在Windows 7及以上、macOS 10.12+以及使用x64、IA-32、ARM或MIPS处理器的Linux系统上。 V8可以独立运行,也可以嵌入到任何C++应用程序中。
v8可以嵌入c++之中一个重要的原因是V8使用C++开发,并在谷歌浏览器中使用。在运行JavaScript之前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序在V8引擎下的运行速度媲美二进制程序。
那它为什么会被叫做v8呢?V8最初是由Lars Bak团队开发的,以汽车的V8发动机(有八个气缸的V型发动机)进行命名,预示着这将是一款性能极高的JavaScript。
V8的内部有很多模块,其中最重要的包括:Parser: 解析器,负责将源代码解析成AST;Ignition: 解释器,负责将AST转换成字节码并执行,同时会标记热点代码;TurboFan: 编译器,负责将热点代码编译成机器码并执行;Orinoco: 垃圾回收器,负责进行内存空间回收。