通过MySQL自带函数st_distance计算两个经纬度点的距离(效率更优)
情况一
数据库:有point类型的location字段实体类:有经纬度字段(double)
1234567891011121314select regionId, provinceName, cityName, districtName, lon, lat, (st_distance (location,point(31.0, 103.0) ) / 0.0111) AS distance FROM t_region WHERE 1=1 AND deleted = 0 order by distance asc
情况二
数据库:有经度纬度字段,但是没有point字段实体类:有经纬度字段(double)
1234567891011121314select regionId, provinceName, cityName, districtName, lon, lat, (st_distance (point(lon, lat),point(31.0, 103.0) ) / 0.0111) AS distance FROM t_region ...
CloudFlare Workers更换(workers.dev)默认域名的解决方案
最近由于CloudFlare Workers的默认域名(workers.dev)不能访问了。这对于使用CloudFlare Workers服务的应用带来了不便。今天这篇教程就和大家一起解决这个问题。
准备材料
一个域名(可不用备案)
一个目前运行正常的Worker
配置步骤1、登录CloudFlare,点击右上角的添加站点,获取域名托管在CloudFlare上的名字服务器。
2、登录域名服务商,不同的服务商配置不一样,我的域名是在 dynadot 上购买的,可以使用我的推荐码:pc7M9F6O8Zh6w,在控制台配置域名名字服务器,指向上一步CloudFlare的名字服务器,配置完成后需要等待一段时间才能生效,生效之后会收到CloudFlare发送的生效通知邮件。
3、进入刚才添加的站点,添加一条A记录的域名,指向IP可以随意填,我这里填的是8.8.8.8,注意代理状态一定要开启(开启小云朵)。
4、点击左侧菜单下的Workers->添加路由->输入自己域名的路由(路由需要提供这种形式:*.xxx.com/*),在下拉框中选择自己的worker服务和环境。 ...
【Go编程基础】02-Go基础知识
Go内置关键字(25个均为小写)
break
default
func
interface
select
case
defer
go
map
struct
chan
else
goto
package
switch
const
fallthrough
if
range
type
continue
for
import
return
var
Go注释方法
// 单行注释
/* */ 多行注释
代码组织结构
Go程序是通过 package 来组织的(与python类似)
只有 package 名称为 main 的包可以包含 main 函数
一个可执行程序 有且仅有 一个 main 包
通过 import 关键字来导入其它非 main 包
通过 const 关键字来进行常量的定义
通过在函数体外部使用 var 关键字来进行全局变量的声明与赋值
通过 type 关键字来进行结构( struct )或接口( interface )的声明
通过 **func 关键字来进行函数的声明
Go导入 packag ...
【Go编程基础】01-Go开发环境搭建
什么是Go?Go是一门并发支持 、垃圾回收的编译型 系统编程语言,旨在创造一门具有在静态编译语言的 高性能 和动态语言的 高效开发 之间拥有良好平衡点的一门编程语言。
Go的主要特点有哪些?
类型安全和内存安全
以非常直观和极低代价的方案实现高并发
高效的垃圾回收机制
快速编译(同时解决C语言中头文件太多的问题)
为多核计算机提供性能提升的方案
UTF-8编码支持
Go存在的价值是什么?Go在谷歌:以软件工程为目的的语言设计
Go是记事本编程吗?包括GoLand,VSCode,LiteIDE等众多知名IDE均已支持
Go目前有多少实际应用和资源?
全球最大视频网站 Youtube(谷歌)
七牛云储存以及旗下网盘服务(Q盘)
爱好者开发的Go论坛及博客
已用Go开发服务端的著名企业:谷歌、盛大、七牛、360
Go发展成熟了吗?作为一门2009年才正式发布的编程语言,Go是非常年轻的,因此不能称为一门成熟的编程语言,但开发社区每天都在不断更新其核心代码,给我们这些爱好者给予了很大的学习和开发动力。
Go的爱好者多吗?以Google Group为主的邮件列表每天都会更新10至20帖,国内 ...
Spring Cloud Gateway实现指定路由跳过全局过滤器
在Spring Cloud Gateway中GlobalFilter可以方便的全局拦截或统计,有时候希望在某些路由中可以跳过GlobalFilter,可以通过GatewayFilter与GlobalFilter组合来实现。
1、全局过滤器GlobalFilter详细代码如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283package com.chanjet.dsf.web.filter;import com.alibaba.fastjson.JSON;import com.chanjet.dsf.cache.RedisUtil;import com.chanjet.dsf.constant.AttrbuteConstant;import com.chanjet.dsf.constant.ResultCodeEnum;i ...
Spring Boot集成Mybatis实现多数据源支持
1、背景在实际项目开发过程中,时不时会遇到多数据源的情况,本文详细介绍下Spring Boot集成Mybatis实现多数据源支持。
2、集成过程工程结构首先代码工程结构如下: org.spring.springboot.config.datasource 包含了多数据源的配置,同样有第三个数据源,按照前几个复制即可;resources/mapper目录下面有两个模块,分别是 Mybatis 不同数据源需要扫描的mapper.xml 目录。
1234567891011121314151617181920212223242526272829303132├── pom.xml└── src └── main ├── java │ └── com │ └── clang │ ├── Application.java │ ├── config │ │ └── datasource │ ...
解决Spring Cloud Gateway网关跨域问题
今天前端突然说接口不支持跨域了,马上排查了一番,原因是之前接口一直提供给App使用的,所以不存在跨域的问题。解决方案就是在网关处新增配置类:
123456789101112131415161718192021222324252627282930313233343536373839404142import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.reactive.CorsWebFilter;import org.springframework.web.util.pattern.PathPatternParser;@Configurationpublic class CorsConfig { /** * 允许跨域请求 ...
多租户SaaS数据库租户模式
本文介绍可用于多租户 SaaS 应用程序的各种租户模型。
在设计多租户 SaaS 应用程序时,必须慎重选择最符合应用程序需要的租户模型。 租户模型确定如何将每个租户的数据映射到存储。 所选的租户模型会影响应用程序设计和管理。 今后改用不同的模型可能需要付出一定的代价。
A. SaaS 概念和术语在软件即服务 (SaaS) 模型中,贵公司不会销售软件的 许可证。 而是,每个客户都会向贵公司支付租金,使每个客户成为贵公司的 租户。
作为支付租金的回报,每个租户都可以访问 SaaS 应用程序组件,并将数据存储在 SaaS 系统中。
术语 租户模型 是指租户存储数据的组织方式:
单租户: 每个数据库仅存储来自一个租户的数据。
多租户: 每个数据库都存储来自多个独立租户的数据(使用保护数据隐私的机制)。
混合租户模式也可用。
B. 如何选择适当的租户模型一般情况下,租户模型不会影响应用程序的功能,但可能会影响总体解决方案的其他方面。 以下条件用于评估每个模型:
可伸缩性:
租户数目。
每个租户的存储量。
总存储量。
工作负荷。
租户隔离:数据隔离和性能(一个租户的工作负荷是否影响 ...
IntelliJ IDEA 2021.1激活步骤
目前Jetbrains系列软件的激活方式为通过插件进行30天试用期重置的方式,其他方式都已经失效
1、关于下载安装包可以直接到官方网站下载 https://www.jetbrains.com/idea/download/ 下载版本2021.1
2、IDE Eval Reset 重置试用期插件安装方法:(1)、运行软件,点击试用,进入到软件创建新项目窗口;(2)、左上角菜单栏点打开软件设置窗口:IntelliJ IDEA/Preferences,然后选择 Plugins,点击设置图标手动添加第三方插件仓库地:https://plugins.zhile.io(3)、添加仓库后,搜索IDE Eval Reset 插件进行安装
3.插件使用方法安装插件后,在Help -> Eval Reset 调出,有 2 个按钮和 1 个勾选项:按钮:Reload 用来刷新界面上的显示信息。按钮:Reset 点击会询问是否重置试用信息并重启 IDE。选择 Yes 则执行重置操作并重启 IDE 生效,选择 No 则什么也不做。(此为手动重置方式)勾选项:Auto reset before pe ...
Go实现文件接收
前段时间遇到一个问题,在只有nginx的情况下,实现文件的上传,突然想着利用Go可以非常简单的来实现。分为两个部分:服务端和客户端。代码如下所示:
服务端:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455package mainimport ( "fmt" "io" "net/http" "os")const ( upload_path string = "/Users/chenhu/Desktop/upload/")func helloHandle(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "hello world!")}//上传func uploadHandle(w http.ResponseWriter, r ...