赵工

赵工 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑

从事开源系统开发和升级优化,我们的案例:http://github.crmeb.net/u/crmeb,有什么问题可以咨询QQ:609147212

个人动态

赵工 发布了文章 · 4月14日

浅谈redis的set get[布隆过滤器]

布隆过滤器是什么

在做JAVA项目时候用到这个(参考地址),今天咱们就讲一讲

名字就跟每个定律一样,你问为什么叫牛顿定律,因为是牛顿发明或者发现的。

他能做什么?它是将一个二进制向量和函数映射,布隆过滤器可以用在检测元素是否存在某个集合或者用于快速检索中。

缺点: 有一定的删除问题和错误识别率

优点:查询时间和空间都远远超过普通算法

布隆过滤器Bloom Filter 是怎么实现的

添加Item或者元素时,创建一个散列函数和一个KEY形成映射,设置的数据=1,只要检索时判断 =1就知道这个数据存不存在,有了此方法,查询时发现有0的则证明一定不存在,那么反过来讲如果是1证明元素很可能存在,

注意这里为什么说很可能存在,因为他有一定的识别错误,但这个错误在实际生产过程中可以忽略,毕竟利大于弊么。

看文字晕晕乎乎,不动就画图,来看看应该就会明白许多。

image.png

说人话

布隆过滤器到底能干啥?

特殊的id暂且不提哈,数据库id基本都是自增的对吧!我们传递id后端去DB查询,这个非常合理。

但是如果我们用负数查询呢?一两条无所谓,如果成千上万呢?基本上数据库都会很大压力扛不住,服务器配置暂且不说,拖慢系统运行速度甚至宕机都是有可能的,这样是不是布隆过滤器的有点有展现的淋漓尽致。【狗头】

这么吊,也是有代价的,因为它也拿不准,存在一定程度的判断失误!

问:为什么会误判?

答:搜索的key没在容器中,但是hash后得到的key都是1 。假如布隆过滤器中有黑名单,那么直接创建一个白名单就搞定了。

问:为什么不容易删除?

答:我们提到正确的数据Key值=1,但不能因为=0就删掉他,这可能会影响其他元素的判断 不过可以了解下Counting Bloom Filter 「下一篇文章」

说了这么多咋实现

1:预估数量n以及期望的误判率FPP

2: hash函数和bit集合的size大小

Bit集合Size大小

函数 哈希选择,预估值n和bit数组长度m获取hash函数Key

怎么用?maven项目中添加

 <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.0</version>
 </dependency>    

一段我写的测试代码

/**
 * 布隆过滤器 - 用于redis缓存穿透 的情况
public class TestBloomFilterByDZZ {

    private static int total = 19999;
    private static BloomFilter<Integer> bfilter = BloomFilter.create(Funnels.integerFunnel(), total);

  // 初始化数据
    public static void main(String[] args) {
        for (int i = 0; i < total; i++) {
            bfilter.put(i);
        }

        // 是否有匹配不上的
        for (int i = 0; i < total; i++) {
            if (!bfilter.mightContain(i)) {
                System.out.println("有没关注西北大粽子的 溜了。。。");
            }
        }

        // 不再内的有多少匹配出来
        int count = 0;
        for (int i = total; i < total + 10000; i++) {
            if (bfilter.mightContain(i)) {
                count++;
            }
        }
        System.out.println("炮灰陪跑:" + count);
    }

}

可适用的业务场景

1:当一个入库数据量比较大的时候,可以用作名称或者唯一件做检查,存在则跳过不存在则入库

2:过滤垃圾邮件,这是一段计算你可以结合自己的业务了解下。

日常求关注,在被业务折磨的情况下还能留下点什么。

查看原文

赞 0 收藏 0 评论 0

赵工 发布了文章 · 4月8日

一个标准的SpringBoot前后端分离部署手册【内置Tomcat,Vue,Uniapp】

SpringBoot项目怎么部署?参考项目案例:http://github.crmeb.net/u/crmeb

打包前准备工作

一个主域名,3个子域名共计4个域名

主域名用于访问移动端,子域名2用于PC管理后台,子域名3用于访问Java Api,子域名4用于图片资源访问

举例4个域名,下文中会用此来代替

  1. 移动端    --->  https://www.app.com
  2. PC 后台    --->  https://admin.app.com
  3. Java Api    --->  https://api.app.com
  4. 图片资源    --->  https://image.app.com

Java 项目运行和打包

  1. 把Java项目导入idea

选择项目中的 crmeb文件夹,也就是Java Api子项目

等项目自动载入完成

项目配置    根据自己的实际情况配置

shell部署脚本配置  

开源不易,我司统计下安装量,只有首次部署会统计,不会有任何影响,请根据自己的具体情况修改下,版本号不需要修改

打包项目

看见  BUILD SUCCESS  打包完成

WEB PC 管理端 运行和打包

运行以下命令之前请确认npm环境正确运行

如果开发可以使用webStorem或者Vscode

终端使用自己趁手的命令行工具

cd 到clone项目的admin文件夹目录

修改对应环境配置文件

根据自己打包的环境配置Java Api项目请求域名

执行安装所需包文件 npm install

打包命令可根据自身需求修改

执行 npm run build:prod   线上环境              build:prod 线上环境

打包完成之后在 admin下找到 dist目录,把dist目录下的文件夹以及文件上传到 服务器对应的站点目录即可 【此处不包含dist文件夹,是dist文件夹下面的文件】

移动端项目打包,使用Hbuild

移动端暂时仅支持H5和微信小程序

更多关于Uniapp的问题 uniapp官网

下载uniapp开发者工具  ----> Hbuilder X

打包微信小程序则需要下载 微信开发者工具

微信开发者工具可根据自己的电脑系统下载

注意

最外层项目包中有一个 domain.json文件,需要根据自己实际情况修改此文件内容

不可有注释 且json格式正确

Hbuilder X 打包 H5

打开Hbuilder X 点击文件

本地测试点击运行

线上打包点击发行

打包的时候出现下图点 发布 行即可,不需要输入域名

打包成功如下图

查看原文

赞 0 收藏 0 评论 0

赵工 关注了用户 · 4月7日

Crushdada @crushdada

关注 3

赵工 关注了用户 · 4月7日

一身都是月~ @yishendushiyue

关注 1

赵工 关注了用户 · 4月7日

Silently9527 @silently9527

关注 160

赵工 发布了文章 · 4月7日

uniapp 打包 app 填坑指南

最近在做公司CRMEB项目,刚好用到这个就发出来供大家借鉴,欢迎各位大佬指正

App打包(使用Hbuilder进行App打包)

一、修改接口地址

1.打开uni-app下config/app.js修改接口地址,将下图两个地址修改成您的域名

image.png

二、配置参数

1.打开 uni-app 根目录下的 manifest.json 文件, 点击《基础配置》,重新获取 uni-app应用标识,获取之后填写 应用名称,应用描述,应用版本名称,应用版本号

image.png

2.点击《App图标配置》,上传APP的图标文件,点击《自动生成所有图标并替换》

image.png

3.点击《App模块配置》

3-1. 选择《Geolocation》,在《高德定位》和《百度定位》中选择一个,填写appkey_ios 和 appkey_android

3-2. 选择《LivePusher》

3-3. 选择《Maps》,在《高德地图》和《百度地图》中选择一个,填写appkey_ios 和 appkey_android

image.png

3-4. 选择《OAuth(登录授权)》,选择《微信登录》,填写开放平台的 appid 和 appsecret 以及 Universal Links

注:IOS必须同时要选择苹果登录

image.png

3-5. 选择《Payment(支付)》,选择对应的支付方式,微信支付请填写开放平台的 appid 和 Universal Links

3-6. 勾选《Push(消息推送)》

3-7. 勾选《Share(分享)》,选择微信分享,填写开放平台的 appid 和 Universal Links

image.png

3-8. 勾选《VideoPalyer(视频播放)》

image.png

4.点击《App权限配置》,android会自动添加权限,IOS需要配置如下权限

image.png

5.点击《App常用其他配置》,勾选《支持CPU类型》下的armeabi-v7a

image.png

三、打包APP

1.选择发行,点击原生app-云打包

image.png

2.选择android和ios,填写对应的信息

image.png

image.png

3.点击左下方打包,等待进度条完成后点击确定,等待打包完成,下载APP包即可

image.png

image.png

查看原文

赞 0 收藏 0 评论 0

赵工 发布了文章 · 4月4日

Uniapp打包APP后怎么上线 APP Store

好几天没来了,今天我们来讲讲App如何打包上线

一、安卓端

1,点击发行>原生-app云打包

正式包和自定义调试基座的区别看这篇文章

https://ask.dcloud.net.cn/art...

2.生成证书

教程:https://ask.dcloud.net.cn/art...

3.签名生成工具

用于获取安装到手机的第三方应用签名的apk包。点击下载 [签名生成工具]

下载链接:(https://res.wx.qq.com/open/zh...

配置好以后点击打包,打包成功后控制有链接自行下载就可以了

4.在自己需要的平台选择性上架APP

二、苹果端(必须在macOs系统中操作以下流程)

1.申请苹果开发者账号,进入网址注册或者登陆

https://developer.apple.com/

2.在手机Appstore里面搜索 Developer 下载,打开软件点击我的-现在注册,按照格式注册开发者账号

3.注册好以后登陆苹果开发者网站

https://developer.apple.com/

4.生成苹果证书教程和p12文件

教程:https://www.jianshu.com/p/ae1...

5.打包App

微信所有的相关配置需要appid和需要生成ios平台通用链接

ios通用链接配置

https://ask.dcloud.net.cn/art...

ios通用链接生成

教程:https://ask.dcloud.net.cn/art...

填写好所有配置后

发行-原生App云打包-勾选ios包

生成好ipa文件后,在Transporter这个软件上传

6.上传测试版本 登陆开发者中心点击

选择我的App

在TestFlight这个里面可以看到上传的版本,点击进去后可以添加测试人员还有一些别的操作

7.查看测试版本

手机端下载TestFlight软件登录进去,点击兑换,填写邀请码,邀请码是通过添加测试人员的时候发的邮件就有

8.下载测试

9.上架Appstore

在Apple开发者平台点击AppStore,填写里面所有的相关配置再点击右上角的提交就上架审核了,审核通过后在手机Appstore就可以搜到上架的应用

注意上架的时候最好把推广分享功能暂时先关闭了,等各个平台审核通过后在打开 ,这都是爬坑出来的经验啊

厚脸皮求关注!需要你们的鼓励和支持,大家也可以留言进行项目交流。

查看原文

赞 0 收藏 0 评论 0

赵工 关注了用户 · 4月4日

杜尼卜 @dunizb

做工程师不做码农、全栈开发工程师、持续学习者

📬 微信公众号:前端全栈开发者
📘 博客主页:https://zhangbing.site
🎁 混饭小铺:https://store.zhangbing.site
🛎 编程日历小程序:https://creatorsdaily.com/f45...

关注 1104

赵工 发布了文章 · 4月1日

作为前端开发,Uniapp 打包 APP 还不会玩?

App开发调试

一、Windows端

1,安装java 选择 Windows x64

下载地址:https://www.oracle.com/java/t...

2,安装Android Studio (此软件需要翻墙),可以用这个中文网

下载地址:http://www.android-studio.org/

用andriod自己的开发调试工具会出现代码热更新失败,安卓adb冲突,所以推荐第三方模拟器

安装雷电模拟器或者mumu模拟器 我这里选择选择的是mumu模拟器

安装好后在设置中心>高级设置选择

打开Hbuildx 编辑器设置Android模拟器端口配置和ADB路径

双击App.vue文件>点击运行>运行到手机或模拟器>Android模拟器端口配置

mumu模拟器的默认端口是7555,别的模拟器端口需要去官方网站上面去查询,adb路径就是模拟器安装的路径,修改好后保存

然后启动模拟器,重启HbuildX软件,等待一会点击运行>运行带手机或者模拟器 这时候就能看到模拟器的设备了,看不到的话需要关闭HbuildX,先开模拟器再打开HbuoldX编辑器

然后点击运行就可以调试了

二、mac端安装xCode,安装苹果模拟器,在ios模拟器里面选择手机样式

三、真机调试

1,安卓连接数据线之后开启开发者模式,不打开开发者识别不到安卓手机

2,苹果手机下载iTunes 官方说下载低版本的

下载地址:https://mydown.yesky.com/pcso...

然后点击运行-运行带手机或者模拟器就可以看到设备了,点击运行就行了

四、各种问题解决方案

https://ask.dcloud.net.cn/art...

https://ask.dcloud.net.cn/art...

https://ask.dcloud.net.cn/art...

厚脸皮求关注!需要你们的鼓励和支持,学习请戳项目地址,大家也可以留言进行项目交流。

查看原文

赞 0 收藏 0 评论 0

赵工 发布了文章 · 4月1日

【干货】成功打包uniapp ,就这么简单

项目成功打包,比较高兴。需要了解的点传送门

1.模块配置

打开项目点击manifest.json

image.png

模块配置勾选 支付、登录、分享、 ViderPlayer和自己需要用的模块填写相关配置Ctrl+s保存

APP自动生成图标选择一个1024x1024的图片传上去,生成一下就好了

2.权限配置

安卓的已经配置好了,ios的必须开发者填写相关的描述信息,需要用哪些些就填写哪些,ios必须填写详细,不然上架容易被拒

image.png

安卓的权限中文说明地址:www.kjson.com/files/andro…

3.模块配置

1.定位选择高德地图,App端只支持高德地图,所以尽量选择高德地图,key在高德开发平台就可以申请到

2.OAuth 授权登录

一键登录是uni-app官方自带的,详情请看官方文档

地址:uniapp.dcloud.io/univerify

3.自定义第三方登录比如:微信登录

请填写相关的配置就可以了

4.注意:

ios端如果包含了任何第三方登录,那必须也得把苹果登录也带上,不然苹果上架审核不通过

根据苹果审核指南要求,如果 app 使用第三方或社交登录服务 (例如,Facebook 登录、Google 登录、通过 Twitter 登录、通过 LinkedIn 登录、通过 Amazon 登录或微信登录) 来对其进行设置或验证这个 app 的用户主帐户,则该 app 必须同时提供“通过 Apple 登录”作为同等选项。详情参考:App Store 审核指南 - 通过 Apple 登录

说明:ask.dcloud.net.cn/article/366…

  1. 支付、分享填写相关的配置就可以了
  2. 如果有视频,需要勾选VideoPlayer(视频播放)

image.png

4.App常用其它设置

image.png

为了方便测试选择了全部支持,测试的时候由于各种模拟器支持的不一样所以都勾选了,打包上线的时候选择第一个就可以,不然ios容易出现以下问题

厚脸皮求关注!需要你们的鼓励和支持,大家可以留言进行项目技术交流

查看原文

赞 0 收藏 0 评论 0

认证与成就

  • 获得 0 次点赞
  • 获得 1 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 1 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 3月11日
个人主页被 572 人浏览