聊聊这个倾注10年的开源CRM项目,如何一步步火爆GitHub!
近几年悟空CRM开源项目在GitHub和Gitee上迅速蹿红,并获得了上千用户的关注。目前累计2,000,000下载量。社区人数达到30,000多人。在国内浩瀚的开源市场,悟空CRM在开源道路上倾注10多年的心血。
2010年的一个灵感
2010年初,受国外salesforce、zoho等saas供应商的影响,越来越多的企业开始投入crm的研发。为找到属于自己的品牌方向,悟空团队以openerp(odoo)为标杆,开始准备在开源道路上探索,并为之进行了近十年的投入。
2014年第一个版本发布
悟空CRM项目在2010开始启动,对于初创团队来讲,产品的研发迭代以及投入精力有限,直到2014年悟空CRM推出第一个开源CRM版本V0.0.1,当时的国内企业管理软件的开源市场并未完全成熟,再加上V0.0.1版本存在功能和技术的限制,产品发布后并没有获得大量的用户群体。
2016年继续迭代
悟空CRM在版本迭代上并没有想想的那么快,一部分研发投入开源、一部分研发投入二次开发项目,毕竟对于一个企业来讲,生存是第一要素。经过两年的12次迭代代,2016年悟空CRM版本迭代至V0.4.5,并在码云和Github上发布后,获得了上千家用户的下载和体验。
V0.4.5该版本在原有的基础上做了全面升级和改造,是目前市场上使用较为稳定一个版本。但是在这个技术日新月异的时代。node、vue、微服务、Python、AI各种技术不断兴起,悟空CRM开源提供的技术已经很难满足现有技术爱好者的需求,开源道路在国内再一次受到阻力,开源项目暂且搁置。
2019年一次新的挑战
是否继续开源?是一个很艰难的决定。毕竟开源项目要投入大量的精力。对企业的成本是不小的挑战。但是悟空CRM毕竟在开源道路上已经倾注多年的心血,开源是必将继续!
重整旗鼓!这一次在技术方面面临一个重大的调整,悟空CRM决定推出目前流行的前后端分离技术,后端采用PHP和JAVA 两种开发语言,前端采用最火爆的vue架构。
两种后台开发语言架构是国内唯一尝试的,无论是PHP或者JAVA任一技术栈的开发人员都可尝试学习。
2019年做极致的开源产品
2019年4月PHP版发布了:基于TP5.0+vue+ElementUI的前后端分离CRM系统
2019年6月JAVA版发布了:基于jfinal+vue+ElementUI的前后端分离CRM系统
项目下载地址:https://gitee.com/wukongcrm
两个产品同年发布,发布后便获得的大量开源爱好者的关注和亲睐。高质量的源码、高标准的UI设计,这一次不仅仅在技术上悟空CRM投入的大量的时间和精力,在用户体验和UI上也进行了全面的升级的改造。
10年磨一剑,悟空CRM的开源道路还需继续前进,也会不断面临更大的挑战,相信这个开源方向已经嵌入悟空CRM的骨髓,悟空的金箍棒总有一天会变得更强大。
悟空CRM官方网站:https://www.5kcrm.com
技术干货
聊聊开源悟空CRM的技术干货
悟空CRM开源项目主要功能:
客户管理 | 线索(线索转移,线索转客户) |
客户(客户分配,客户领取,客户编辑、客户添加、客户跟进) | |
附近的客户(定位信息。地图展示) | |
联系人管理(联系人添加、联系人转移) | |
商机管理(商机添加、商机推进、商机组设置) | |
合同(合同审核、合同录入、合同转移) | |
回款(回款添加、回款审核) | |
产品(产品规格配置、产品添加、产品上下架) | |
回款计划(回款计划设定、定时提醒) | |
自定义字段(所有模块字段均可以自定义配置) |
OA审批 | 工作日志(日报、周报、月报) |
OA审批流(请假、报销、差旅、费用、自定义设置审批) | |
自定义审批流(配置审核节点和规则) | |
项目管理(项目添加、项目统计、项目归档、项目权限) | |
任务管理(任务分配、任务提醒、任务评论、任务完成) | |
企业通讯录(员工管理、员工基本信息录入) |
BI商业智能 | 客户分析(客户增量、跟进次数、客户转化率、成交周期、跟进方式) |
销售漏斗(新增商机分析、商机转化率分析) | |
客户画像分析(地区分部、行业分部、年龄分部、) | |
产品分析(产品销量、产品分类销量) | |
销售排行榜(合同排行榜、回款排行榜、客户总量排行榜、客户增量排行榜) | |
财务分析(回款分析、合同金额分析) | |
审批分析(日志完成情况分析、请假、报销等审批分析) | |
业绩分析(业绩目标、合同总量、回款总量) |
悟空CRM开源版一共包含了100多种模块应用
前端VUE
动态的权限路由
axios封装,统一处理请求核心信息
组件的封装和复用
登录信息的缓存
常用指令和过滤器的封装
iconfont图标的使用
VUE项目结构
├── LICENSE
├── README.md
├── build // 配置
│ ├── build.js
│ ├── check-versions.js
│ ├── logo.png
│ ├── utils.js
│ ├── vue-loader.conf.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
├── config
│ ├── dev.env.js
│ ├── index.js
│ └── prod.env.js
├── favicon.ico
├── index.html // 入口html文件
├── package-lock.json
├── package.json // 定义项目所需要的各种模块,以及配置信息
├── src
│ ├── App.vue // 页面入口
│ ├── api // api接口
│ │ ├── businessIntelligence // 商业智能
│ │ ├── common.js // 公共
│ │ ├── customermanagement // 客户管理
│ │ ├── login.js // 登录
│ │ ├── oamanagement //办公
│ │ ├── personCenter
│ │ └── systemManagement
│ ├── assets // 图片和图标
│ │ ├── 401_images
│ │ ├── 404_images
│ │ ├── iconfont
│ │ └── img
│ ├── components // 自定义组件
│ │ ├── CreateCom // 新建
│ │ │ ├── CrmRelative.vue // 关联客户管理列表
│ │ │ ├── CrmRelativeCell.vue
│ │ │ ├── CrmRelativeTable.vue
│ │ │ ├── XhBusinessStatus.vue // 商机状态
│ │ │ ├── XhCustomerAddress.vue // 新建客户下的地图位置
│ │ │ ├── XhDate.vue // 时间选择
│ │ │ ├── XhDateTime.vue
│ │ │ ├── XhFiles.vue // 附件
│ │ │ ├── XhInput.vue // 单行输入框
│ │ │ ├── XhMultipleSelect.vue // 多选
│ │ │ ├── XhProduct.vue // 产品关联
│ │ │ ├── XhProuctCate.vue // 产品类别
│ │ │ ├── XhReceivablesPlan.vue // 回款计划
│ │ │ ├── XhSelect.vue // 单选
│ │ │ ├── XhStrucUserCell.vue // 员工部门选择框
│ │ │ ├── XhStructure.vue // 部门选择
│ │ │ ├── XhStructureCell.vue
│ │ │ ├── XhTextarea.vue // 多行输入框
│ │ │ ├── XhUser.vue // 员工选择
│ │ │ ├── XhUserCell.vue
│ │ │ ├── arrayMixin.js // 公共逻辑
│ │ │ ├── index.js
│ │ │ ├── objMixin.js
│ │ │ └── stringMixin.js
│ │ ├── CreateSections.vue // 容器布局
│ │ ├── CreateView.vue
│ │ ├── DetailCell.vue
│ │ ├── EditImage.vue // 编辑图片
│ │ ├── Examine // 审批展示和操作
│ │ ├── MapView.vue // 地图预览位置
│ │ ├── SlideView.vue
│ │ ├── emoji.vue // 表情
│ │ ├── flexbox // flex
│ │ │ ├── flexbox-item.vue
│ │ │ ├── flexbox.vue
│ │ │ └── index.js
│ │ ├── relatedBusiness.vue // 关联客户内容
│ │ ├── reminder.vue
│ │ ├── selectEmployee // 选择员工
│ │ └── vuePictureViewer // 文件预览
│ ├── directives // 自定义指令
│ │ ├── empty
│ │ ├── photo
│ ├── filters // 过滤器
│ ├── main.js // 程序入口
│ ├── permission.js // 路由处理
│ ├── router // 路由
│ │ ├── index.js
│ │ └── modules
│ │ ├── business.js
│ │ ├── customer.js
│ │ ├── manager.js
│ │ ├── person.js
│ │ └── workbench.js
│ ├── store // vuex
│ │ ├── getters.js
│ │ ├── index.js
│ │ └── modules
│ │ ├── app.js
│ │ ├── permission.js
│ │ └── user.js
│ ├── styles // 样式
│ ├── utils // 工具类
│ │ ├── auth.js
│ │ ├── cache.js
│ │ ├── emoji-data.js
│ │ ├── emoji.js
│ │ ├── index.js
│ │ ├── request.js // 请求
│ │ └── validate.js
│ └── views // 页面
│ ├── 401.vue
│ ├── 404.vue
│ ├── OAManagement // 办公
│ │ ├── addressBook // 通讯录
│ │ ├── components
│ │ ├── examine // 审批
│ │ ├── journal // 日志
│ │ ├── notice // 公告
│ │ ├── schedule // 日程
│ │ ├── styles
│ │ ├── task // 任务
│ │ └── workbench // 工作台
│ ├── PersonCenter // 个人中心
│ ├── SystemManagement // 系统管理
│ │ ├── RoleAuthorization.vue // 角色权限
│ │ ├── SystemConfig // 系统配置
│ │ ├── SystemCustomer // 客户管理
│ │ ├── SystemEmployee // 员工部门
│ │ ├── SystemExamine // 审批流管理
│ │ ├── SystemWorkbench // 工作台
│ │ ├── components
│ │ └── styles
│ ├── businessIntelligence // 商业智能
│ │ ├── customer // 员工客户分析
│ │ ├── business // 销售漏斗分析
│ │ ├── achievement // 员工业绩分析
│ │ ├── product // 产品分析
│ │ ├── TaskCompleteStatistics.vue // 业绩目标完成情况
│ │ ├── customerPortrayal // 客户画像分析
│ │ └── ranking // 排行榜
│ ├── customermanagement // 客户管理
│ │ ├── business // 商机
│ │ ├── clue // 线索
│ │ ├── components
│ │ ├── contacts // 联系人
│ │ ├── contract // 合同
│ │ ├── customer // 客户
│ │ ├── mixins
│ │ ├── model
│ │ ├── money // 回款
│ │ ├── product // 产品
│ │ ├── seas // 公海
│ │ ├── styles
│ │ └── workbench // 工作台
│ ├── layout // 框架
│ │ ├── businessLayout.vue // 框架
│ │ ├── components
│ │ ├── customerLayout.vue
│ │ ├── managerLayout.vue
│ │ ├── personCenterLayout.vue
│ │ ├── styles
│ │ └── workbenchLayout.vue
│ └── login // 登录
│ └── index.vue
└── static // 静态文件
├── client.js // 判断浏览器
├── client.min.js
├── img
│ ├── emoji // 表情图片
├── index.css
└── index.html // 提示页面
JAVA后台版本
核心框架 | jfinal3.8 |
缓存 | redis caffeine |
数据库连接池 | Druid |
工具类 | hutool,fastjson,poi-ooxml |
定时任务 | jfinal-cron |
项目构建工具 | maven |
Web容器 | tomcat,undertow(默认) |
前端MVVM框架 | Vue.JS 2.5.x |
路由 | Vue-Router 3.x |
数据交互 | Axios |
UI框架 | Element-UI 2.6.3 |
JAVA后台目录结构
通过权限注解在拦截器判断用户是否拥有访问权限
@Override
public void intercept(Invocation invocation) {
//TODO 权限功能后台拦截
Permissions permissions=invocation.getMethod().getAnnotation(Permissions.class);
if(permissions!=null&&permissions.value().length>0){
JSONObject jsonObject= Aop.get(AdminRoleService.class).auth(BaseUtil.getUserId());
//组装应有权限列表
List<String> arr=queryAuth(jsonObject, "");
boolean isRelease=false;
for (String key : permissions.value()) {
if(!isRelease){
if(arr.contains(key)){
isRelease=true;
}
}
}
if(!isRelease){
invocation.getController().renderJson(R.error("无权访问"));
return;
}
}
invocation.invoke();
}
通过AOP和注解对数据进行非空校验,无需一个个判断参数是否为空,数据为空直接返回 自定义分页数据接收,自动处理分页参数和数据对象,给controller方法加上参数 BasePageRequest,T为对象类型,然后参数就会自动组装成分页参数和定义的对象类,以下为实现代码:
public class PageParaGetter extends ParaGetter<BasePageRequest> {
public PageParaGetter(String parameterName, String defaultValue) {
super(parameterName, defaultValue);
}
@Override
protected BasePageRequest to(String s) {
return null;
}
@Override
@SuppressWarnings("unchecked")
public BasePageRequest get(Action action, Controller controller) {
Parameter[] parameters=action.getMethod().getParameters();
Class clazz=null;
for (Parameter parameter:parameters){
if(BasePageRequest.class.isAssignableFrom(parameter.getType())){
Type parameterizedType=parameter.getParameterizedType();
if (parameterizedType instanceof ParameterizedType) {
Type[] params = ((ParameterizedType) parameterizedType).getActualTypeArguments();
clazz= TypeUtils.getClass(params[0]);
}
break;
}
}
boolean isJson=controller.getHeader("Content-Type")!=null&&controller.getHeader("Content-Type").toLowerCase().contains("application/json");
return isJson?new BasePageRequest(controller.getRawData(),clazz):new BasePageRequest(controller.getKv(),clazz);
}
}
自定义json工厂,实现对数据的个性化解析返回,如实现将数据返回时将数据转成驼峰规则,自定义某种类型的对象的返回格式等。
可以自定义错误处理模板,在出现错误或者其他异常的情况下,可以给予用户一个清晰的提示,避免用户看到一些无用的错误信息等功能
文件可以上传到项目目录之外,避免了重新打包项目后文件的丢失
@Override
public void configConstant(Constants me) {
me.setDevMode(prop.getBoolean("jfinal.devMode", true));
me.setInjectDependency(true);
//设置上传文件到哪个目录
me.setBaseUploadPath(BaseConstant.UPLOAD_PATH);
me.setBaseDownloadPath(BaseConstant.UPLOAD_PATH);
//自定义json工厂
me.setJsonFactory(new ErpJsonFactory());
//限制上传100M
me.setMaxPostSize(104857600);
}
采用项目分层化的设计,职责分工明确,降低代码的耦合性Hander->对指定规则的url进行捕获或者放心Interceptor->环绕式AOP拦截,对访问权限,数据权限,参数等进行校验,可以配置在全局,单个路由,单个controller,单个方法等上面,可进行自定义实现,对数据进行处理
Router->对不同规则的数据进行分发,不同url进入不同路由和controller
Controller->对参数进行组装,将数据传入到service处理后进行render返回
Service->对业务代码进行处理,并将数据转入Db处理或缓存 Db->对数据库进行操作 Render->将service返回的数据在controller进行返回,以及出错后通过
SQL模板功能,将sql写入到xx.sql文件中,如果sql文件有变动,无需重新编译打包,直接改动sql文件中的sql即可,以下为自动扫描指定路径下sql文件的代码:
private void getSqlTemplate(String path, ActiveRecordPlugin arp) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (files != null && files.length > 0) {
for (File childFile : files) {
if (childFile.isDirectory()) {
getSqlTemplate(childFile.getAbsolutePath(), arp);
} else {
if (childFile.getName().toLowerCase().endsWith(".sql")) {
arp.addSqlTemplate(childFile.getAbsolutePath().replace(PathKit.getRootClassPath(), "").replace("\\", "/"));
}
}
}
}
}
}
PHP后台版本
后端框架 | ThinkPHP 5.0.2 |
前端MVVM框架 | Vue.JS 2.5.x |
路由 | Vue-Router 3.x |
数据交互 | Axios |
UI框架 | Element-UI 2.6.3 |
悟空crm9.0的运行环境要求PHP5.6以上 |
悟空CRM9.0(PHP)版本应用部署目录结构
├─application 应用目录(可设置)
│ ├─admin 系统设置目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─validate 验证器目录
│ │ ├─view 视图目录
│ │ └─lang 语言包
│ ├─bi 商业智能模块目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─validate 验证器目录
│ │ ├─view 视图目录
│ │ └─lang 语言包
│ ├─common 公共模块目录
│ │ ├─adapter 认证权限类目录
│ │ ├─behavior 行为(钩子)目录
│ │ ├─controller 公共控制器目录
│ │ └─lang 语言包
│ ├─crm 客户管理目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─validate 验证器目录
│ │ ├─view 视图目录
│ │ └─lang 语言包
│ ├─lang 语言包
│ ├─oa 办公目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─validate 验证器目录
│ │ ├─view 视图目录
│ │ └─lang 语言包
│ ├─work 项目管理目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─validate 验证器目录
│ │ ├─view 视图目录
│ │ └─lang 语言包
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─tags.php 应用行为扩展定义文件
├─config 配置目录(可定义)
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件
│ ├─route_admin.php 系统设置路由文件
│ ├─route_bi.php 商业智能路由文件
│ ├─route_crm.php 客户管理路由文件
│ ├─route_oa.php 办公路由文件
│ ├─route_work.php 项目管理路由文件
│ └─version.php 版本信息文件
├─extend 扩展类库目录(可定义)
├─public WEB 部署目录(对外访问目录)
│ ├─sql 安装及更新sql目录
│ ├─static 静态资源存放目录(css,js,image)
│ └─.uploads 上传文件目录
├─runtime 应用的运行时目录(可写,可设置)
├─static 前端VUE打包目录=
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架系统目录
│ ├─lang 语言包目录
│ ├─library 框架核心类库目录
│ │ ├─think Think 类库包目录
│ │ └─traits 系统 Traits 目录
│ ├─tpl 系统模板目录
│ ├─.htaccess 用于 apache 的重写
│ ├─.travis.yml CI 定义文件
│ ├─base.php 基础定义文件
│ ├─composer.json composer 定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 惯例配置文件
│ ├─helper.php 助手函数文件(可选)
│ ├─LICENSE.txt 授权说明文件
│ ├─phpunit.xml 单元测试配置文件
│ ├─README.md README 文件
│ └─start.php 框架引导文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
├─index.php 应用入口文件
├─index.html 前端展示入口文件
产品图片部分展示
仪表盘:
商机页面:
客户详情页面:
任务列表页面:
任务详情页面:
审批流页面:
用户权限页面:
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 线程安全问题
1.2.1 线程安全之可见性 1、只有共享变量、并且是多线程,至少有一个线程是写操作,才会出现可见性问题 2、jmm:java内存模型 3、局部变量:方法内定义的变量 成员变量:类的字段(属性) 4、java内存模型是制定规则的,jvm是负责实现规则的 5、java内存模型【java语言规范】:…...
2024/4/23 15:52:45 - 再见Flash,flv.js不像吗?
前言 如果HTML5能支持flash的协议,这个开源项目可能不存在! 然而HTML5并不原生支持flash协议。flv.js这个项目解决了HTML5支持flash协议的问题,这就是flv.js应运而生短期爆红的历史背景 ash技术是过去10多年的互联网视频基础技术,大量相关基础设施都是围绕Flash构建的,比如…...
2024/4/23 15:52:44 - 百度直播:未来的“知识快的”
5 月 13 日,百度披露了直播业务的战略方向:做知识直播。同时,百度还推出了直播“聚能计划”,该计划将拿出 5 亿补贴 打造 1000 位明星主播,助力主播实现商业变现,增加流量曝光和粉丝沉淀,打造主播影响力。百度直播选定知识赛道2020年,直播成为各行业各触达用户的有效途…...
2024/5/9 19:34:05 - 从校招到自己投简历找公司的一名大学应届生
应届生校招过程在写这篇文章之前,我想先好好的做个自我介绍:我的老家在湖南,现在工作地点在上海,大学读的是软件专业,学校不是很好,这里就不做介绍了,现在是一个还没拿到大学毕业证的一个应届生,在现在的公司也只是个实习生,实习时间从19年的9月1日到现在,当然职业就…...
2024/5/10 0:22:43 - 快速搭建博客:美化主题
文章目录其他搭建1. 添加博客图标2. 鼠标点击特效(二选一)2.1 红心特效2.2 爆炸烟花3. 设置头像4. 侧边栏社交小图标设置5. 文章末尾的标签图标修改6. 访问量统计7. 添加站内搜索8. 启动阅读更多按钮9. 文章顶置(二选一,看看哪种简单)9.1 方法一9.2 方法二10. 在文章底部…...
2024/5/9 12:30:31 - 【云效流水线入门】解放运维,一键部署
本文只涉及到云效流水线的配置及部署,前提是linux服务器已经装好java环境。 云效提供任务、日程、统计、流水线等功能,丰富多样。由于文章篇幅有限,本文只涉及到流水线功能。 准备项目 小白写一个简单的springboot项目,功能是打印请求IP,写好后上传到github远程仓库(也可…...
2024/4/23 15:52:39 - springboot整合jsp访问404
操作下面几步一、二、三、配置项目结构当你把上面都试了一遍还不行,不妨试试下面,用maven的springboot run方式启动,之后在浏览器访问一下。...
2024/5/9 18:49:06 - 语音处理前端算法流程
1、从语言数据到提取特征值整个过程的主要算法模块图示: 2、算法详细流程图示3、难点算法详解3.1、关于FFT使用cmsis的arm_rfft_fast_f32接口做快速傅里叶变换,返回的结果是N个float(N是输入数据的维度)。N个float表示的是N/2+1个复数。表示规则如下:Out_data[0]…...
2024/4/23 15:52:44 - android项目迁移到androidX:类映射(android.arch.*)
android.arch.core支持库类AndroidX 类core.executor.AppToolkitTaskExecutorandroidx.arch.core.executor.AppToolkitTaskExecutorcore.executor.ArchTaskExecutorandroidx.arch.core.executor.ArchTaskExecutorcore.executor.DefaultTaskExecutorandroidx.arch.core.executor…...
2024/4/23 15:52:39 - Android四大组件之Service
1.简介与定义 简介 Service是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。Service可由其他应用组件启动,而且即使用户切换到其他应用,Service仍将在后台继续运行。 此外,组件可以绑定到Service,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,Serv…...
2024/4/23 15:52:38 - LeetCode # 538 把二叉查找树每个节点的值都加上比它大的节点的值
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树:5/ \2 13输出: 转换为累加树:18/ \20 13解题思路: 每个节点累加,根据二叉搜索树的性质…...
2024/4/17 0:49:40 - PTA Basic level 1012 数字分类 (20分)
** 1012 数字分类 (20分) ** 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1= 能被 5 整除的数字中所有偶数的和; A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4⋯; A3= 被 5 除后余 2 的数字的个数; A4= 被 5 除后余 3…...
2024/4/19 14:30:13 - springboot Redistemplate 之 EOFException: null and not found key
EOFException jdk1.8 描述 今天 想着 使用 redis 实现一把 分布式 锁,健了一个 springboot 项目,引入 redis 依赖,写个前端控制器,再往控制器里面写个模拟减库存的 的逻辑,OK 启动项目单机测试一下,一切都是那么顺滑。一气呵成 哈哈哈。。。等待浏览器 返回那 OK 一文。 …...
2024/4/17 0:50:10 - 遭遇520与521后的俩连狗粮,你是如何渡过的?
如题,遭遇520与521的俩连狗粮,你是否感到不适; 如果趁热这个期间去参加一个相亲会,碰到一个漂亮MM; 然后你问到MM:"MM,有没看李连杰主演的张无忌,他母亲临终前嘱托他’这世上越是漂亮的女人,她的话就越不能相信!,你看我能相信你吗? 如果你是那位美女,你会如何作答或者作…...
2024/4/17 23:36:46 - Django简单博客实战(六)---搜索功能
Django-haystack插件实现项目地址:https://github.com/ylpxzx/lifeblog步骤安装依赖包pip install whoosh,jieba,django-haystack# 尽量采用其他源的pip进行安装,比如 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django-haystack将haystack加入INSTALLED_APPS…...
2024/4/26 8:49:44 - Mybatis介绍
前言 JDBC存在问题 1、在使用JDBC操作数据库前进行连接、操作完成之后关闭连接、并发性能有大的影响 解决:为了达到连接复用,采用连接池 2、SQL语句硬编码在Java代码中,需求改变需要改变Java代码本身 3、返回的结果集也存在硬编码的问题。 目录前言JDBC存在问题Mybatis的介绍…...
2024/5/5 23:05:37 - TPS63070的升压降压转换器
TPS63070工作原理原理图画图演示PCB板的绘制 工作原理 首先我们在TI网站上查找我们需要的芯片的芯片手册,对TPS63070该芯片进行一个大致的了解。 链接: link. TPS6307x 是一款具有低静态电流的高效降压-升压转 换器,适用于 那些 输入电压可能高于或低于输出电压 的应用。在升…...
2024/5/6 3:44:01 - 阿拉伯数字转大写函数
阿拉伯数字转大写 var digitUppercase = function (n) {var fraction = [角, 分];var digit = [零, 壹, 贰, 叁, 肆,伍, 陆, 柒, 捌, 玖];var unit = [[元, 万, 亿],[, 拾, 佰, 仟]];var head = n < 0 ? 欠 : ;n = Math.abs(n);var s = ;for (var i = 0; i < fraction.l…...
2024/5/5 20:27:01 - Linux获取本机外网ip
以下命令可以获取linux系统下的外网ip curl cip.cc curl tnx.nl/ip curl icanhazip.com curl ident.me curl whatismyip.akamai.com curl myip.dnsomatic.com...
2024/5/5 22:50:57 - Activemq教程
消息中间件的引用场景异步处理、应用解耦、流量削峰JMS消息模型:点对点模型(point to point):即生产者和消费者之间的消息来往;发布/订阅模型(Pub/Sub):包含三个角色:主题(Topic),发布者(publisher),订阅者(subscriber),多个发布者将消息发送到topic,系统将…...
2024/5/5 17:35:20
最新文章
- STM32理论 —— μCOS-Ⅲ(新)
文章目录 1. 任务调度器1.1 抢占式调度 μCos-Ⅲ全称是Micro C OS Ⅲ,由Micriμm 公司发布的一个基于C 语言编写的第三代小型实时操作系统(RTOS); RTOS 与裸机相比最大的优势在于多任务管理与实时性,它提供了多任务管理和任务间通信的功能&a…...
2024/5/10 0:45:47 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/9 21:23:04 - 【数据结构与算法】搜索算法(深度优先搜索 DFS和广度优先搜索 BFS)以及典型算法例题
目录 搜索算法(深度优先搜索DFS和广度优先搜索BFS)以及典型算法例题深度优先搜索 (Depth First Search 简称 DFS)DFS 的设计步骤深度优先搜索(DFS)算法例题例题一:N皇后问题例题二:路…...
2024/5/4 13:57:14 - 论文阅读AI工具链
文献检索 可以利用智谱清言来生成合适的文献检索式,并根据需要不断调整。 谷歌学术 在Google Scholar中进行检索时,您可以使用类似的逻辑来构建您的搜索式,但是语法会有所不同。Google Scholar的搜索框接受普通的文本搜索,但是…...
2024/5/10 0:16:27 - 招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本
功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…...
2024/5/10 0:13:57 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/9 15:10:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/9 7:32:17 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/9 17:11:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57