首页 文章 精选 留言 我的

精选列表

搜索[数据库相关],共10000篇文章
优秀的个人博客,低调大师

云办公系统 skyeye v3.6.8 发布,工作流相关

项目介绍 智能办公 OA 系统[SpringBoot2-快速开发平台],适用于医院,学校,中小型企业等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模块、动态表单、知识库、公告模块、企业论坛、云售后模块、生产模块、系统模块化同步模块等多种复杂业务功能。 云办公系统 skyeye v3.6.8发布,更新内容: US: ERP模块工作流选择审批人整改 行政模块工作流选择审批人整改 项目模块工作流选择审批人整改 FIX: 修复log4j高危漏洞 解决ueEditor编辑器跨域上传图片不加载的问题 解决ueEditor编辑器粘贴图片显示过宽的问题 企业版改进计划,改进计划优惠多多哦。详情 erp:https://gitee.com/doc_wei01/erp-pro OA:https://gitee.com/doc_wei01/skyeye 报表:https://gitee.com/doc_wei01/skyeye-report 企业版信息:https://docs.qq.com/doc/DQlRxcVRMWWVjbU1i?_from=1&disableReturnList=1,有问题可以联系作者,详情请看开发计划。 效果图 效果图 效果图

优秀的个人博客,低调大师

PHPMQTT v1.3.2 版本发布,优化 MQTT5 相关支持

添加 toArray 方法 在上个版本中为 getContents 方法增加了一个 getArray 参数来用于客户端回复对端 ACK,此版本中增加了 toArray 方法进行获取: use Simps\MQTT\Message; use Simps\MQTT\Protocol\ProtocolInterface; $message = new Message\Publish(); $message->setProtocolLevel(ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0) ->setTopic('simps/mqtt/message') ->setQos(ProtocolInterface::MQTT_QOS_1) ->setDup(ProtocolInterface::MQTT_DUP_0) ->setRetain(ProtocolInterface::MQTT_RETAIN_0) ->setMessage('this is content') ->setMessageId(1) ->setProperties(['message_expiry_interval' => 100]); $array1 = $message->getContents(true); $array2 = $message->toArray(); assert($array1 === $array2); 两者的结果相同。 优化 getProtocolLevel MQTT5 协议中增加了一个Properties属性,而 MQTT3.x 中是没有的,之前的版本如果是 MQTT5 协议的话需要手动调用setProtocolLevel来设置协议等级,此版本中就增加优化:判断是否设置了Properties属性,如果设置了但协议等级不是 MQTT5 则自动设置为 MQTT5 Message use Simps\MQTT\Message; use Simps\MQTT\Protocol\ProtocolInterface; $message = new Message\Publish(); $message->setTopic('simps/mqtt/message') ->setQos(ProtocolInterface::MQTT_QOS_1) ->setDup(ProtocolInterface::MQTT_DUP_0) ->setRetain(ProtocolInterface::MQTT_RETAIN_0) ->setMessage('this is content') ->setMessageId(1); assert($message->isMQTT5() === false); assert($message->getProtocolLevel() === ProtocolInterface::MQTT_PROTOCOL_LEVEL_3_1_1); $message->setProperties(['message_expiry_interval' => 100]); assert($message->isMQTT5() === true); assert($message->getProtocolLevel() === ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0); $message->setProtocolLevel(ProtocolInterface::MQTT_PROTOCOL_LEVEL_3_1); assert($message->isMQTT5() === true); assert($message->getProtocolLevel() === ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0); Config use Simps\MQTT\Client; use Simps\MQTT\Config\ClientConfig; use Simps\MQTT\Protocol\ProtocolInterface; $config = new ClientConfig(); $config->setClientId(Client::genClientID()) ->setKeepAlive(10) ->setDelay(3000) ->setMaxAttempts(5) ->setProperties([ 'session_expiry_interval' => 100, ]) ->setSwooleConfig([ 'open_mqtt_protocol' => true, 'package_max_length' => 2 * 1024 * 1024, ]); assert($config->isMQTT5() === true); assert($config->getProtocolLevel() === ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0); 更新日志 增强 添加 toArray 方法 (b3fd28a) 更新属性默认值 (9c63510) 添加遗嘱消息 Message 类 (#45) 添加 Auth Message 类 (36f6a9d) 增加 DUP、SESSION_PRESENT 和 RETAIN 的常量 (fe5c418) 优化 getProtocolLevel (a329202) 增加 isMQTT5 测试和使用常量代替硬编码(b9d4365) 修复 修正 ReasonCode 中错字 (481994f5) 关于 PHPMQTT 适用于 PHP 的 MQTT 协议解析和协程客户端 支持 MQTT 协议 3.1、3.1.1 和 5.0 版本,支持 QoS 0、QoS 1、QoS 2 首个支持 MQTT v5.0 协议的 PHP library 文档:https://mqtt.simps.io GitHub:https://github.com/simps/mqtt Gitee:https://gitee.com/phpiot/mqtt 支持记得点个 Star~

优秀的个人博客,低调大师

员工业余时间搞开源,相关法律怎么界定?

抛砖引玉一下: 建议问问公司法务,比如劳动法务和知产法务法务并结合公司的政策。 仅供参考如下:“一、满足下列情形之一的,在职期间创作的代码知识产权等权属属于公司的情况: 1. 工作时间完成的代码。 2. 执行工作任务完成的代码,包括但不限于:针对工作中明确指定的开发目标所开发的软件;开发的软件是从事本职工作活动所预见的结果或者自然的结果。 3. 主要使用公司的物质条件完成的代码,比如公司的资金、专用设备以及未公开的专门信息。 二、个人项目,需要注意: 1. 不要在工作时间编写自身项目的代码。 2. 为避免争议,不要利用公司电脑和WIFI。”

优秀的个人博客,低调大师

容器服务及相关云环境几次故障和问题排查记录

1. 镜像仓库被设置为公有,导致镜像泄露风险: 错误现象: 公有镜像仓库可能会被云上其它用户拉取,导致泄露镜像安全风险;部分运维或者开发同学,因为没有设置准确的 secret 到 Deployment,为了解决无法拉取镜像问题,直接开放镜像仓库为公有。 解决方法: 镜像仓库的命名空间一定要设置为私有,准确设置绑定云效中docker 镜像账号,通过云效发布应用; 严格设定容器镜像仓库的维护权限; 2. 镜像拉取失败: 错误现象: ## 查看 pod 部署日志 kubectl logs {pod} ## 错误信息 Failed to pull image "registry-vpc.{region_id}.aliyuncs.com/{app_name}-daily/{app_n

优秀的个人博客,低调大师

spring-boot-plus V1.2.3 发布,新增 CentOS 相关脚本

[V1.2.3-RELEASE] 2019.09.09💻 spring-boot-plusV1.2.3发布,CentOS快速安装环境/构建/部署/启动项目 ⭐️New Features 项目运行环境安装脚本 CentOS快速构建/部署/启动项目脚本 ⚡️Optimization 优化maven-assembly-plugin项目打包插件 📝Added/Modified Addinstall-jdk.shyum安装jdk8脚本 Addinstall-git.shyum安装git脚本 Addinstall-maven.shyum安装maven脚本 Addinstall-redis.shyum安装redis脚本 Addinstall-mysql.shyum安装mysql脚本 Addinstall-all.sh安装所有环境脚本 Adddownload-install-all.sh下载并安装所有环境脚本 Adddeploy.sh下载项目/构建/部署/启动项目脚本 Addmaven-javadoc-pluginjava api docs 📔Documentation CentOS Quick Installation Environment / Build / Deploy / Launch Spring-boot-plus Project spring-boot-plus java docs 🔨Dependency Upgrades Upgrade tospringboot2.1.8.RELEASE Upgrade toMybatis3.5.2 Upgrade toMybatis Plus3.2.0 Upgrade toAlibaba Druid1.1.20 Upgrade toFastjson1.2.60 Upgrade tocommons-codec1.13 Upgrade tocommons-collections4.4 Upgrade tohutool-all4.6.4 CentOS Quick Installation Environment / Build / Deploy / Launch Spring-boot-plus Project 1. Download the installation script Installjdk,git,maven,redis,mysql wget -O download-install-all.sh https://raw.githubusercontent.com/geekidea/spring-boot-plus/master/docs/bin/install/download-install-all.sh 2. Run the installation script sh download-install-all.sh 3. Modify MySQL password ALTER USER 'root'@'localhost' IDENTIFIED BY 'Springbootplus666!'; exit mysql -uroot -pSpringbootplus666! 4. Import MySQL scripts create database if not exists spring_boot_plus character set utf8mb4; use spring_boot_plus; source /root/mysql_spring_boot_plus.sql; show tables; exit 5. Download deployment scriptdeploy.sh wget -O deploy.sh https://raw.githubusercontent.com/geekidea/spring-boot-plus/master/deploy/deploy.sh 6. Execution script sh deploy.sh 7.Access project SpringBootAdmin Management page http://47.105.159.10:8888 spring-boot-plus Swagger Document page http://47.105.159.10:8888/docs 8. View project run log tail -f -n 1000 /root/spring-boot-plus-server/logs/spring-boot-plus.log

优秀的个人博客,低调大师

安卓日常开发记录-键盘的相关处理方式

点击EditText之外隐藏键盘的实现方式 重写事件分发dispatchTouchEvent,注意不要在onTouchEvent中操作,因为onTouchEvent并非任何情况下都会被调用。通过计算EditText在布局中的位置,进行键盘的显示和隐藏处理 /** * 点击区域在输入框之外都隐藏掉键盘 * @param ev * @return */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); if (isShouldHideInput(v, ev)) { hideSoftKeyboard(v); } return super.dispatchTouchEvent(ev); } // 必不可少,否则所有的组件都不会有TouchEvent了 if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); } public boolean isShouldHideInput(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] leftTop = { 0, 0 }; //获取输入框当前的location位置 v.getLocationInWindow(leftTop); int left = leftTop[0]; int top = leftTop[1]; int bottom = top + v.getHeight(); int right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 点击的是输入框区域,保留点击EditText的事件 return false; } else { return true; } } return false; } 监听键盘弹起和隐藏的方式 自定义一个view,因为项目中用的LinearLayout,所以以这个布局为例,将其作为根布局,通过布局的高度判断键盘的隐藏和显示,通过接口将结果回调出去 需要在AndroidManifest中配置键盘属性 android:windowSoftInputMode="adjustUnspecified|stateHidden" android:windowSoftInputMode="adjustResize|stateHidden" 经过测试上边两种配置都可以实现,但是下边这种不行,具体原因,你可以去看看 adjustUnspecified adjustResize adjustPan的区别 android:windowSoftInputMode="adjustPan|stateHidden" package com.anjuke.library.uicomponent.view; import android.content.Context; import android.util.AttributeSet; import android.widget.LinearLayout; /** * Author: renzhenming * Time: 2018/8/11 16:58 * Email: renzhenming@58ganji.com * Version:12.3 * Description: 用于监听键盘的隐藏和出现 */ public class AjkAdjustSizeLinearLayout extends LinearLayout { public AjkAdjustSizeLinearLayout(Context context) { super(context); } public AjkAdjustSizeLinearLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public AjkAdjustSizeLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } private int mChangeSize = 200; /** * 键盘弹起时,布局的高度因为受到挤压,会变小,所以新的高度h减去旧的高度oldh会得到一个负数 * 这个负数的绝对值等于键盘的高度,而且基本可以确定的是键盘的高度一定是大于200的,所以满足 * (oldw != 0 && h - oldh < -mChangeSize)就可以当做键盘弹起 * * 键盘收起时,布局高度恢复到最初,新的高度h减去oldh得到一个正数,这个数值正好就是键盘的高度 * 所以满足(oldw != 0 && h - oldh > mChangeSize)时,可以看做是键盘收起 * @param w * @param h * @param oldw * @param oldh */ @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if (oldw == 0 || oldh == 0) return; if (boardListener != null) { if (oldw != 0 && h - oldh < -mChangeSize) { boardListener.keyBoardVisible(Math.abs(h - oldh)); } if (oldw != 0 && h - oldh > mChangeSize) { boardListener.keyBoardInvisible(Math.abs(h - oldh)); } } } public interface SoftKeyBoardListener { void keyBoardVisible(int move); void keyBoardInvisible(int move); } SoftKeyBoardListener boardListener; public void setSoftKeyBoardListener(SoftKeyBoardListener boardListener) { this.boardListener = boardListener; } }

优秀的个人博客,低调大师

区块链小知识:跨链协议的相关定义介绍

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 1、跨链技术/ Cross-Chain 跨链技术是实现区块链之间互联互通的技术,若对标互联网则可理解为“去中心化网络 的结合”,区块链技术的特性使得跨链技术的落地,以及对于链外信息的获取都非常困 难,早期跨链技术包括以 Interledger Protocal 和 BTC Relay 为代表,更多是关注资产 的转移;现有跨链技术以 Aion、Kyber Network、Bletchley、Polkadot、Cosmos 主要 着重的是跨链基础设施。“如果说共识机制是区块链的灵魂核心,那么对于区块链特别是联盟链及私链来看,跨链技术就是实现价值网络的关键,它是把联盟链从分散单独的 孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁。 2、原子互换/ Atomic Swap 原子互换是一种正在开发中的去中心化、无需第三方的新技术,允许在不同类型的数字 资产之间实现无需信任的点对点交易,任何一方在瞬间完成的点对点交易中都遵守协 议,且之后若有一方退出,资金会在规定的时间返回各方账户。 3、见证人机制/ Notary Schemes 见证人模式是一种中心化的结构,通过选定一批见证人并在见证人之间采用拜占庭容 错结构,监听目标链上的事件和状态并签名进行资产的转移,如 Ripple 的 Interledger Protocal 的早期版本。 4、侧链协议/ Sidechain Protocol 侧链协议是一种实现双向锚定(Two-way Peg)的协议,通过侧链协议实现资产在主链 和其它链之间互相转换,或是以独立的、隔离系统的形式,降低核心区块链上发生交易 的次数。 5、楔入式侧链技术/ Pegged Sidechain 它将实现比特币和其他数字资产在多个区块链间的转移,这就意味着用户们在使用他们 已有资产的情况下,可以访问新的加密货币系统。 6、中继技术/ Relays 中继技术是通过在两个链中加入一个数据结构,使得两个链可以通过该数据结构进行数 据交互,并通过在一个链上调用数据结构的 API,实现监听并验证另一个链上的交易, 而若该数据结构是一个链式结构,则具备侧链的形式并称作中继链。 7、哈希时间锁定合约/ Hashed TimeLock Contract / HTLC 哈希时间锁定合约包含哈希锁定(Hashlock)以及时间锁定(Timelock)两个部分,哈 希时间锁定合约最典型的代表就是比特币的闪电网络,闪电网络提供一个可扩展的微支 付通,用以提升链外的交易处理能力,使用哈希锁定将发起方的交易代币进行锁定,并 通过时间锁定让接收方在某个约定的时刻前生成支付的密码学证明,并与先前约定的哈 希值一致,则可完成交易。

优秀的个人博客,低调大师

用Python做爬虫时相关tips的参考文章集锦(refreshing)

1.Python 3.x中的urllib的改动 2.Python的hasattr() getattr() setattr() 函数使用方法详解 3.正则表达式 re.findall 用法 注意: 用$符号表示以html结尾的字符串返回,判断是否字符串结束的字符串 只有字符串能匹配模板定义,才会返回模板,否则返回空list(多少一个字母也不行) 符号^表示匹配以https开头的的字符串返回, 道理相似,注意more0例子跟more的区别 4.'module' object is not callable 模块名和函数名一样了,负责调用的代码解析的是模块名,不是函数名,因而发生错误。 5.cannot use a string pattern on a bytes-like object 加上object=object.decode('utf-8')#python3这句代码 6.itertools无限迭代器

优秀的个人博客,低调大师

Android:UI设置-横竖屏转换、输入法键盘相关设置

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 public class MainActivity extends Activity { /** * 配置xml:横竖屏转换 * android:screenOrientation="portrait" //竖屏 * android:configChanges="keyboardHidden|orientation" //复用,避免销毁activity * * 输入法配置: * android:windowSoftInputMode="adjustPan" * android:windowSoftInputMode="adjustResize" */ @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e( "onCreate" , "onCreate" ); } @Override protected void onDestroy() { super .onDestroy(); Log.e( "onDestroy" , "onDestroy" ); } @Override //换屏保存的方法 protected void onSaveInstanceState(Bundle outState) { super .onSaveInstanceState(outState); Log.e( "onSaveInstanceState" , "onSaveInstanceState" ); } @Override //换屏保存的方法 protected void onRestoreInstanceState(Bundle savedInstanceState) { super .onRestoreInstanceState(savedInstanceState); Log.e( "onRestoreInstanceState" , "onRestoreInstanceState" ); } @Override //监测屏幕转换 public void onConfigurationChanged(Configuration newConfig) { super .onConfigurationChanged(newConfig); Log.e( "onConfigurationChanged" , "onConfigurationChanged:" +newConfig.orientation); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true ; } } 其他: 1.如果是popwindow中的输入框,要如下设置才有效 "android:windowSoftInputMode="stateVisible|adjustResize|stateAlwaysHidden" 本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1217555,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册