Flask

Flask 是一个用 Python 编写的轻量级 Web 应用框架。

Flask 基于 WSGI(Web Server Gateway Interface)和 Jinja2 模板引擎,旨在帮助开发者快速、简便地创建 Web 应用。

Flask 被称为"微框架",因为它使用简单的核心,用扩展增加其他功能。

龙生   22 Mar 2026
View Details

Django

Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。

使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务。

Django 提供了全栈开发所需的工具,包括数据库 ORM、模板引擎、路由系统、用户认证等,大幅减少重复代码。

龙生   22 Mar 2026
View Details

FastAPI

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于使用基于标准 Python 类型提示的 Python 构建 API。

主要特点是
快速:性能非常高,与 NodeJS 和 Go 相当(得益于 Starlette 和 Pydantic)。是最快的 Python 框架之一。
快速开发:将开发功能的速度提高约 200% 到 300%。*
更少的错误:减少约 40% 的人为(开发人员)错误。*
直观:出色的编辑器支持。补全无处不在。减少调试时间。
简单:设计易于使用和学习。减少阅读文档的时间。
简洁:最小化代码重复。每次参数声明都具有多种功能。减少错误。
健壮:获得生产就绪的代码。带有自动交互式文档。
基于标准:基于(并完全兼容)API 的开放标准:OpenAPI(以前称为 Swagger)和JSON Schema。

龙生   22 Mar 2026
View Details

从 0 到 1 快速实现海外地图接入(Leaflet + OpenStreetMap)

相关文章: 从 0 到 1 快速实现海外地图接入(Leaflet + OpenStreetMap) 10000+ 点位轻松展示,使用 Leaflet 实现地图海量标记点聚类 解决 Leaflet 高频交互下报错问题,社区、AI、源码三重排查 一. 背景 随着全球化业务发展,我们需要为海外用户提供地图服务。经过技术调研发现: Google 地图成本问题:Google Maps API 采用按量计费模式,随着用户量增长会产生高昂费用 国内地图国际化不足:百度、高德等国内地图服务对英文支持有限,海外覆盖不全面,英文展示效果不佳 OpenStreetMap 优势: 完全免费的开源地图数据 全球覆盖且支持多语言 活跃的社区持续更新数据 基于以上考量,我们选择leaflet + OpenStreetMap技术方案: leaflet 提供轻量级、高性能的地图展示能力 OpenStreetMap 提供免费可靠的全球地图数据 两者结合既能满足功能需求,又能有效控制成本 二. 介绍 1. Leaflet leaflet 是一个开源的 JavaScript 库,用于创建交互式、移动友好的网络地图。它轻量级(约 39KB 的 JS 代码),但功能强大,支持大多数桌面和移动平台。 英文文档 中文文档 2. OpenStreetMap(OSM) OpenStreetMap(OSM) 是一个由用户社区创建和维护的免费可编辑的世界地图,常被称为"地理维基百科"。 说到 OpenStreetMap,就不得不说一下地图瓦片。 3. 地图瓦片(Tiles) 地图瓦片是将地图分割成小的正方形图片(通常是 256×256 或 512×512 像素),按不同缩放级别组织起来的系统。这种技术允许: 高效加载:只加载当前视图需要的部分地图 快速渲染:预渲染的图片比动态渲染快 缓存友好:瓦片可以被浏览器和 CDN 缓存 并行加载:可以同时加载多个瓦片 瓦片坐标系统 瓦片通常使用(x,y,z)坐标标识: z:缩放级别(0 是最小缩放,整个世界显示在一个瓦片中) x 和 y:在该缩放级别下的行列位置 瓦片使用流程 请求瓦片:当用户查看地图时,Leaflet 根据当前视图的中心和缩放级别计算需要的瓦片坐标 获取瓦片:从瓦片服务器(如 OpenStreetMap 的服务器)请求这些瓦片 拼接显示:将获取的瓦片拼接成无缝的地图视图 预加载:通常还会预加载周边瓦片,以便用户平移地图时流畅显示 4. 二者关系 leaflet […]

龙生   09 Mar 2026
View Details

Tailwind CSS 简介

Tailwind CSS 是一个实用优先的 CSS 框架,与传统的框架(如 Bootstrap、Foundation)不同,它没有预定义的组件,而是提供了一系列原子化的 CSS 类,允许你直接在 HTML 中应用样式。

Tailwind CSS 是一个工具优先的框架,意味着它提供了大量的预定义类,而不是预设的组件,这使得开发者可以构建几乎任何设计,而不需要编写 CSS。

Tailwind CSS 适合那些喜欢直接在 HTML 中使用类来控制样式的开发者,它使得快速原型制作和开发定制设计变得简单快捷。然而,它的这种"无预设"的方法也意味着需要更多的类名记忆和可能的陡峭学习曲线。

龙生   05 Mar 2026
View Details

FastText:高效的文本分类工具

随着大数据时代的到来,文本分类成为了自然语言处理领域中最重要的任务之一。文本分类可以帮助我们自动将大量文本分为不同的类别,从而加快信息的处理和理解。FastText是Facebook AI Research团队开发的一个高效的文本分类工具,它能够在处理大规模文本数据时快速训练模型。在本篇博客中,我们将介绍FastText模型的原理、优缺点以及如何使用FastText模型来进行文本分类任务。

龙生   03 Mar 2026
View Details

通俗易懂的TextCNN

TextCNN是什么
我们之前提到CNN时,通常会认为属于CV领域,是用于解决计算机视觉方向问题的模型,但是在2014年,Yoon Kim针对CNN的输入层做了一些变形,提出了文本分类模型TextCNN。与传统图像的CNN网络相比,TextCNN 在网络结构上没有任何变化(甚至更加简单了),从图1可以看出TextCNN 其实只有一层卷积,一层max-pooling,最后将输出外接softmax来n分类。

龙生   03 Mar 2026
View Details

搜索 会员中心 创作中心 java: java.lang.nosuchfielderror: class com.sun.tools.javac.tree.jctree$jcim

解决方案:升级 Lombok 版本
如果不想降低 JDK 版本(对于JDK 17 及以上的版本),可以选择升级 Lombok 版本,使其与新的 JDK 兼容。例如,可以将 Lombok 版本升级到 `1.18.32` 及以上。

龙生   03 Mar 2026
View Details

Java面试准备

基础 Java相关 Java创建对象有几种方式? 有6种方式:使用new创建、使用反射机制、使用clone方法、使用反序列化、使用方法句柄、使用Unsafe分配内存。 使用new创建

使用反射机制 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 (1)使用Class类的newInstance方法可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。

(2)使用Constructor类的newInstance方法 和Class类的newInstance方法很像,java.lang.reflect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。

这两种newInstance方法就是大家所说的反射。实际上Class的newInstance方法内部调用Constructor的newInstance方法。 使用clone方法 无论何时我们调用一个对象的clone方法,jvm就会创建一个新的对象,将签名的对象的内容全部拷贝进去。用clone方法创建对象并不会调用任何构造函数。 要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。如果只实现了Cloneable接口,并没有重写clone方法的话,会默认使用Object类中的clone方法,这是一个native的方法。

  使用反序列化 当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。其实反序列化也是基于反射实现的。

  使用方法句柄 通过使用方法句柄,可以间接地调用构造函数来创建对象

使用了MethodHandles.lookup().findConstructor()方法获取构造函数的方法句柄,然后通过invoke()方法调用构造函数来创建对象。 使用Unsafe分配内存 在Java中,可以使用sun.misc.Unsafe类来进行直接的内存操作,包括内存分配和对象实例化。然而,需要注意的是,sun.misc.Unsafe类是Java的内部API,它并不是Java标准库的一部分,也不建议在生产环境中使用。

这种方式有以下几个缺点: 不可移植性:Unsafe类的行为在不同的Java版本和不同的JVM实现中可能会有差异,因此代码在不同的环境下可能会出现不可移植的问题。 安全性问题:Unsafe类的功能是非常强大和危险的,可以绕过Java的安全机制,可能会导致内存泄漏、非法访问、数据损坏等安全问题。 不符合面向对象的原则:Java是一门面向对象的语言,鼓励使用构造函数和工厂方法来创建对象,以确保对象的正确初始化和维护对象的不变性。 Spring MVC相关 什么是SpringMVC? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。 Spring MVC 的优点 1.它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java 组件.并且和Spring提供的其他基础结构紧密集成 2.不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的 3.可以任意使用各种视图技术,而不仅仅局限于JSP 4.支持各种请求资源的映射策略 5.它应是易于扩展的,支持 RESTful 风格 SpringMVC 工作原理? 1.用户发送请求给到前端控制器 DispatchServlet 2.DispatchServlet 收到请求后,调用HandlerMapping处理器映射器查找对应负责处理请求的 Handler 3.HandlerMapping 将找到的具体的处理器 Handler 生成处理器对象以及处理器拦截器(如果有则生成),一起返回给 DispatchServlet 4.DispatchServlet调用HandlerAdapter 处理器适配器,请求执行具体的 Handler 5.HandlerAdapter 将具体 Handler 执行返回的模型和视图返回给到 DispatchServlet 6.此时 DispatchServlet 已经得到具体的 视图名称了,然后向 ViewResolver 发起请求,请求解析视图,返回已经解析好的视图对象 7.DispatchServlet 对视图进行渲染,将 model 与view 进行渲染 8.DispatchServlet 返回响应给到用户浏览器 Spring MVC的主要组件: 前端控制器 DispatcherServlet:接收请求、响应结果,相当于转发器,有了DispatcherServlet能够减少了其它组件之间的耦合度。 处理器映射器 HandlerMapping:根据请求的URL来查找Handler 处理器适配器 HandlerAdapter:负责执行Handler 处理器 Handler:处理器,需要程序员开发 视图解析器 ViewResolver:进行视图的解析,根据视图逻辑名将ModelAndView解析成真正的视图(view) 视图View:View是一个接口, 它的实现类支持不同的视图类型,如jsp,freemarker,pdf等等 MVC是什么?MVC设计模式的好处有哪些? mvc是一种设计模式(设计模式就是日常开发中编写代码的一种好的方法和经验的总结)。模型(model)-视图(view)-控制器(controller),三层架构的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。mvc设计模式的好处: 1.分层设计,实现了业务系统各个组件之间的解耦,有利于业务系统的可扩展性,可维护性。 2.有利于系统的并行开发,提升开发效率。 SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决? 是单例模式,在多线程访问的时候有线程安全问题,解决方案是在控制器里面不能写可变状态量,如果需要使用这些可变状态,可以使用ThreadLocal机制解决,为每个线程单独生成一份变量副本,独立操作,互不影响。 如何解决 […]

龙生   17 Dec 2025
View Details

发现个有意思的debuger代码

无意中看到一个页面加了个防止别人用开发者工具调试自己网页的代码~

 

龙生   11 Dec 2025
View Details
1 2 416