首页 文章 精选 留言 我的

精选列表

搜索[快速],共10000篇文章
优秀的个人博客,低调大师

ulthon_admin v2.0.19 发布,PHP 后台快速开发框架

本次发行版中,优化了底层建设的代码,并实现了一个强大的特性(对我来说如此): 从数据库生成数据库迁移代码 用法 什么是数据库迁移工具 ulthon_admin标准的安装流程是使用数据库迁移工具进行安装,他不仅可以安装到mysql数据库,也支持sqlite,sqlserver等其它数据库。 具体用法参考文档: https://www.kancloud.cn/manual/thinkphp6_0/1118028 但一般而言,我们开发中不会从写迁移代码开始,而是直接使用顺手的数据库工具(Dbeaver、Navcat等)设计数据库,然后在开发中修修补补。 这并没有什么不妥,但是如果你做的是一个标准产品,需要经常执行安装和更新,需要给多个客户部署时,就会感到吃力。 遇到这种情况,你只能从一个数据库导出,再导入到另一个数据库,反反复复的操作。还有可能不知道哪个是最新的,哪个需要更新,哪个更新到哪个版本了。 另一方面,如果数据库丢失了,而你手里又没有及时备份,那么也是很头疼的事。 数据库迁移工具就是为了解决以上种种问题的,比如我们需要新建一张test_goods数据表,我们可以使用数据库迁移工具,写出这样的代码: <?php use think\migration\Migrator; use think\migration\db\Column; class TestGoods extends Migrator { public function change() { $table = $this->table('test_goods') ->setComment('商品列表') ->addColumn('cate_id', 'biginteger', ['limit' => '20', 'signed' => '0', 'null' => '0', 'default' => '0', 'comment' => '分类ID {relation} (table:mall_cate,relationBindSelect:title)',]) ->addColumn('title', 'char', ['limit' => '20', 'null' => '0', 'default' => '', 'comment' => '商品名称',]) ....... ->addColumn('detail', 'text', ['null' => '1', 'comment' => '详情',]) ->addIndex('uid', ['unique' => true]) ->addIndex('detail', ['type' => 'fulltext']) ->addIndex('cate_id') ->create(); } } 然后运行命令: php think migrate:run 此时这张表就出现在我们的数据库了,至于其他的表,并不会覆盖或丢失。 这样有很多好处: 数据库跟随版本库存储不会丢失 没有反复多余的导出数据库 可以安装到“任何数据库” 任何标准产品都可以任意运行该命令用于升级数据库 但是我们开发的时候,不会直接写数据迁移工具,而是从设计表开始。如果我们需要数据库迁移工具,就只能照着现在的数据表写迁移工具,这是以前的做法,也只能这样做。但是现在不一样了,通过一行命令可以一键生成数据库迁移的代码。就像生成curd那样。 现在按照我们的介绍看看怎么用吧。 使用 我们先用自己喜欢的方式设计出一张表。 -- admin_demo_ultho.ul_test_goods definition CREATE TABLE `ul_test_goods` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cate_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID {relation} (table:mall_cate,relationBindSelect:title)', `title` char(20) NOT NULL DEFAULT '' COMMENT '商品名称', `logo` char(255) NOT NULL COMMENT '商品logo {image}', `images` text NOT NULL COMMENT '商品图片 {images}', `describe` text NOT NULL COMMENT '商品描述 {editor}', `total_stock` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '总库存', `sort` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '排序', `status` int(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态 {radio} (0:正常,1:禁用)', `cert_file` varchar(100) NOT NULL COMMENT '合格证 {file}', `verfiy_file` text NOT NULL COMMENT '检测报告 {files}', `remark` char(255) NOT NULL DEFAULT '' COMMENT '备注说明', `create_time` int(11) unsigned NOT NULL DEFAULT '0', `update_time` int(11) unsigned NOT NULL DEFAULT '0', `delete_time` int(11) unsigned NOT NULL DEFAULT '0', `publish_time` int(10) unsigned NOT NULL COMMENT '发布日期 {date} (date)', `sale_time` bigint(20) unsigned NOT NULL COMMENT '售卖日期 {date} (datetime)', `intro` varchar(100) NOT NULL COMMENT '简介 {textarea}', `time_status` smallint(5) unsigned NOT NULL COMMENT '秒杀状态 {select} (0:未参加,1:已开始,3:已结束)', `is_recommend` tinyint(4) NOT NULL COMMENT '是否推荐 {switch} (0:不推荐,1:推荐)', `shop_type` varchar(100) NOT NULL COMMENT '商品类型 {checkbox} (taobao:淘宝,jd:京东)', `tag` varchar(100) NOT NULL COMMENT '商品标签 {table} (table:mall_tag,type:checkbox,valueField:id,fieldName:title)', `tag_backup` varchar(100) DEFAULT NULL COMMENT '商品标签(单选) {table} (table:mall_tag,type:radio,valueField:id,fieldName:title)', `from_area` varchar(100) NOT NULL COMMENT '产地 {city} (name-province:0,code:0)', `store_city` varchar(100) NOT NULL DEFAULT '山东省/临沂市' COMMENT '仓库 {city} (level:city)', `tag_input` varchar(100) NOT NULL COMMENT '商品标签 (输入) {tag}', `uid` varchar(100) NOT NULL COMMENT '唯一id', `price` decimal(10,2) DEFAULT NULL COMMENT '价格', `detail` longtext COMMENT '详情', PRIMARY KEY (`id`), UNIQUE KEY `ul_test_goods_uid_IDX` (`uid`) USING BTREE, KEY `cate_id` (`cate_id`) USING BTREE, FULLTEXT KEY `ul_test_goods_detail_IDX` (`detail`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='商品列表'; 面对这样一张数据表,如果我们要对照写出数据库迁移工具的代码,会很费事,而且很容易就写错了。 但现在时代变了,只需要一行命令 php think curd:migrate -t test_goods 此时会在数据库迁移工具的工作目录下生成一个文件: database\migrations\20220905222557_test_goods.php 这跟使用官方的生成方式一致 此时会直接生成开头那样的数据库迁移代码。 结尾 可能你没用过数据库迁移工具,那么目前可能无法引起你的兴趣,(建议使用),如果你正在使用,那么这个命令绝对能给你带来极大的便利。甚至可以让那些拥有几十个数据表的项目,也能轻松地使用数据库迁移工具来安装了。 ulthon_admin正在积极维护,拥有极高的定制性,支持依赖裁剪,精简代码,欢迎使用。

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

JeeSite 4.4.1 发布,无用户限制,Spring Boot 快速开发平台

被封闭的这段时间深感从业不易,为支持小微企业发展,今后发布的所有社区版将全线解除用户数限制。 愿疫情早日散去,山河无恙,人间皆安。🌞🌞 升级内容 升级 Spring Boot 2.5.13、Shiro 1.9.0、其它工具等等 新增 Spring configuration metadata yml 配置信息友好提示 新增 是否启用默认 Servlet 映射(启用后可访问 webapp 下的静态资源访问) 新增 支持Spring Boot带减号的 key 写法,自动转换为驼峰格式 新增 BPM 查询全部待办、已办流程数据接口 新增 OAuth2 state 缓存集群共享 新增 CacheUtils exists 方法 优化 便捷脚本、Docker脚本优化、Maven配置优化 优化 CacheUtils 不存储当前用户信息,防止流程标题生成串用户 优化 多线程,Redis 消息监听线程池、用户缓存清理线程池、消息推送线程池,避免高并发情况下太多的线程问题。 优化 服务器监控磁盘列表,隐藏一些不必要的盘符 优化 访问日志的控制台日志信息输出 优化 Cloud网关路由简化配置 修正 ie10下用户缓存问题修改头像未刷新 修正 sqlserver下流程名称排序错误 可视化数据大屏升级 Avue-data v2.3 无用户数限制,无在线人数限制 升级方法 修改pom.xml文件中的jeesite-parent版本号为4.4.1-SNAPSHOT 如果你导入了jeesite-common源码项目,请与git上的代码进行同步 如果你导入了jeesite-module-core源码项目,请与git上的代码进行同步 如果你是跨版本升级,请注意每一个版本的升级方法,业务上有调整的地方进行修改 Shiro 升级到 1.9.0 shiroFilter 方法 getInstance() 替换为 getObject() 执行root/package.bat(sh)打包脚本,强制更新依赖即可 了解更多 JeeSite 官网地址:http://jeesite.com JeeSite 在线文档:http://docs.jeesite.com JeeSite 演示地址:http://demo.jeesite.com JeeSiteVue演示地址:http://vue.jeesite.com

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

零代码快速集成AGC崩溃服务-xamarin框架-iOS

华为AGC的崩溃服务支持跨平台,按照文档整理了个Xamarin插件集成的文档,有需要的开发者可以参考。 环境配置和项目设置 1.安装Xamarin环境 主要是先安装visual studio for MAC,然后安装Mobile development with .NET,具体可以参考Xamarin环境搭建。 2.AGC创建项目工程,并且开通华为分析服务。 这部分是基本操作,可以参见创建项目和开通华为分析 3.集成AGC Xamarin NuGet包 点击创建的项目工程,右键选择”Manage NuGet Packages” 选择对应的包后安装: 继续添加HA包,注意需要选择1.2.0.300版本: 4.添加Json文件到项目目录下 5.将“Build Action”设置为“BundleResource”。 6.设置应用包名。 7.配置免费预配证书 如果没有申请付费证书,可以使用免费证书,具体参见: https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-get-started-xamarin#h2-1617333170516-2 集成实现 1.布局界面设计 双击main.storyboard拉起Xcode创建3个按键“MakeCrash”,” CatchException”,” CustomReport”。 2.代码调用 编辑 ViewController.cs 文件, 调用 AGCCrash.GetSharedInstance.TestIt 制造一次崩溃事件,调用 AGCCrash.GetSharedInstance.SetUserId 自定义用户标识,调用 AGCCrash.GetSharedInstance.SetCustomKey 自定义键值对,调用 AGCCrash.GetSharedInstance.Log 自定义日志级别,调用 AGCCrash.GetSharedInstance. RecordException 产生并记录一次非严重异常。 usingSystem; usingUIKit; usingHuawei.Agconnect.Crash; usingFoundation; namespacecrashios0512 { publicpartialclassViewController:UIViewController { publicViewController(IntPtrhandle):base(handle) { } publicoverridevoidViewDidLoad() { base.ViewDidLoad(); //Performanyadditionalsetupafterloadingtheview,typicallyfromanib. } publicoverridevoidDidReceiveMemoryWarning() { base.DidReceiveMemoryWarning(); //Releaseanycacheddata,images,etcthataren'tinuse. } partialvoidMakeCrash(UIKit.UIButtonsender) { AGCCrash.GetSharedInstance().TestIt(); } partialvoidCatchException(UIKit.UIButtonsender) { AGCCrash.GetSharedInstance().RecordError(newFoundation.NSError()); } partialvoidCustomReport(UIKit.UIButtonsender) { AGCCrash.GetSharedInstance().SetUserId("testuser"); AGCCrash.GetSharedInstance().Log("defaultinfolevel"); AGCCrash.GetSharedInstance().SetCustomValue(newNSString("test"),"thisisstringvalue"); AGCCrash.GetSharedInstance().LogWithLevel(AGCCrashLogLevel.Warning,"thisiswarningloglevel"); AGCCrash.GetSharedInstance().SetCustomValue(newNSNumber(123),"thisisnumber"); } } } 崩溃报告查看 集成完后点击按键制造崩溃和非严重异常,并产生自定义报告,可以在AGC页面查看 1.崩溃概览 2.问题概览 3.查看崩溃详情堆栈 4.查看自定义键值对 5.查看自定义日志级别 6.查看自定义用户标识 欲了解更多详情,请参见: 1、华为AGC 崩溃服务文档:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-crash-introduction 2、华为AGC-崩溃服务codelab:https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/CrashService-iOS 更多精彩内容,请见华为开发者官方论坛→https://developer.huawei.com/consumer/cn/forum/home?ha_source=sanfang

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

在docker中快速使用各个版本的PostgreSQL数据库

安装概述 PG安装方法很多,和MySQL类似,给用户提供很大的选择空间。如:RPM包安装(在线、离线)、源码编译安装、系统自带、二进制、NDB安装等。 https://www.postgresql.org/ https://yum.postgresql.org/rpmchart.php https://yum.postgresql.org/11/redhat/rhel-6-x86_64/repoview/postgresqldbserver11.group.html https://www.postgresql.org/ftp/source/ 打开 PostgreSQL 官网 https://www.postgresql.org/,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux、Windows、Mac OS等 。 各个安装包:https://www.postgresql.org/ftp/source/ Linux 我们可以看到支持 Ubuntu 和 Red Hat 等各个平台,点击具体的平台链接,即可查看安装方法: 点击上图中的 file browser,我们还能下载 PostgreSQL 最新的源码。 Docker直接使用 Docker Hub的官网地址:https://hub.docker.com/_/postgres GitHub的地址:https://github.com/docker-library/postgres -- 拉取所有镜像 docker pull postgres:9.4 docker pull postgres:9.6 docker pull postgres:10 docker pull postgres:11 docker pull postgres:12 docker pull postgres:13 docker pull postgres:13.3 -- 创建各个版本的Docker容器 docker rm -f lhrpg94 lhrpg96 lhrpg10 lhrpg11 lhrpg12 lhrpg13 docker run --name lhrpg94 -h lhrpg94 -d -p 54321:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:9.4 docker run --name lhrpg96 -h lhrpg96 -d -p 54322:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:9.6 docker run --name lhrpg10 -h lhrpg10 -d -p 54323:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:10 docker run --name lhrpg11 -h lhrpg11 -d -p 54324:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:11 docker run --name lhrpg12 -h lhrpg12 -d -p 54325:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:12 docker run --name lhrpg13 -h lhrpg13 -d -p 54326:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:13 docker run --name lhrpg133 -h lhrpg133 -d -p 54327:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:13.3 -- docker直接登陆 docker exec -it lhrpg133 psql -U postgres -d postgres -- 本地登陆 docker exec -it lhrpg133 bash su - postgres psql -- 远程登陆 psql -U postgres -h 192.168.66.35 -d postgres -p54327 -- 从Postgresql 9.2开始,还可以使用URI格式进行远程连接:psql postgresql://myuser:mypasswd@myhost:5432/mydb psql postgresql://postgres:lhr@192.168.66.35:54327/postgres 其中-h参数指定服务器地址,默认为127.0.0.1,默认不指定即可,-d指定连接之后选中的数据库,默认也是postgres,-U指定用户,默认是当前用户,-p 指定端口号,默认是’5432’,其它更多的参数选项可以执行: ./bin/psql —help 查看。 C:\Users\lhrxxt>psql -U postgres -h 192.168.66.35 -d postgres -p54327 Password for user postgres: psql (13.3) Type 'help' for help. postgres=# select version(); version ------------------------------------------------------------------------------------------------------------------ PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit (1 row) postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------------+-------------------+----------------------- postgres | postgres | UTF8 | Chinese_China.936 | Chinese_China.936 | template0 | postgres | UTF8 | Chinese_China.936 | Chinese_China.936 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | Chinese_China.936 | Chinese_China.936 | =c/postgres + | | | | | postgres=CTc/postgres (3 rows) postgres=# CREATE DATABASE lhrdb WITH OWNER=postgres ENCODING='UTF-8'; CREATE DATABASE postgres=# \c lhrdb You are now connected to database 'lhrdb' as user 'postgres'. lhrdb=# lhrdb=# create table student ( lhrdb(# id integer not null, lhrdb(# name character(32), lhrdb(# number char(5), lhrdb(# constraint student_pkey primary key (id) lhrdb(# ); CREATE TABLE lhrdb=# lhrdb=# \d student Table 'public.student' Column | Type | Collation | Nullable | Default --------+---------------+-----------+----------+--------- id | integer | | not null | name | character(32) | | | number | character(5) | | | Indexes: 'student_pkey' PRIMARY KEY, btree (id) lhrdb=# lhrdb=# INSERT INTO student (id, name, number) VALUES (1, '张三', '1023'); INSERT 0 1 lhrdb=# SELECT * FROM student WHERE id=1; id | name | number ----+------------------------------------+-------- 1 | 张三 | 1023 (1 row) 是不是很方便呢。 安装配置完成。

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

Strategy Analytics:尽管组件短缺,5G仍在快速增长

6月2日消息,根据市场调研机构Strategy Analytics发布的最新报告显示,2020年,尽管发生了新冠肺炎疫情,但用于蜂窝用户设备的无线电组件市场仍在增长,并将持续增长到2025年。 据报告作者、射频和无线组件主管Christopher Taylor称:“尽管出现了疫情,射频组件收入,包括基带处理器和射频前端(RFFE)在2020年达到历史高点。我们预测,到2025年,蜂窝无线电组件市场将以每年8%的速度增长。在设备发货量增长停滞之后,为了帮助应对5G日益增加的无线电复杂性,RFFE组件供应商继续开发具有更多功能的封装模块系统,允许公司在每次设计胜利中捕获更多RFFE内容,同时使原始设备制造商更容易设计和组装手机。” 手机组件技术副总监Sravan Kundojjala补充道:“持续的半导体短缺可能会持续到2022年,这证实了强劲的潜在需求。不过,手机厂商面临供应限制,可能无法在今年充分发挥手机销售潜力。包括台积电、联华电子、GlobalFoundries、中芯国际、三星代工厂和复合半导体代工厂在内的半导体代工厂都在尽快提高产能。” Strategy Analytics预测,对sub-6和mmWave 5G射频组件的强劲需求,以及智能手机以外新的5G机遇,将推动未来几年蜂窝无线组件的显著增长。

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

Microsoft Edge 浏览器将支持快速启动和标签睡眠

在今天的 Microsoft 年度 Build 大会上,微软宣布了其 Edge 浏览器即将发布的 91 版本的一些新功能。这些功能都不是大改动,但对其用户来说可以充分提高使用体验。 一个新功能是 "启动加速",它允许 Edge 几乎立即启动。Microsoft 实现该功能的方式很直接。当用户启动Windows 设备时,会简单地加载一些核心的 Edge 进程,所以当 Edge 真正启动时可以迅速完成。而且据 Microsoft 表示,这并不会对用户的 Windows 10 启动时间有太大的影响。 另一个新功能是 "睡眠标签",它可以让用户的 edge 标签页进入睡眠状态,这样它们就不会占用不必要的内存和 CPU 周期。Microsoft 在12月首次宣布它正在测试这项功能。据当时的 Edge 开发者表示,睡眠标签与不睡眠的标签相比,平均仅使用 37% 的CPU,且可以减少 32% 的内存使用,并有助于改善电池寿命。值得注意的是,Google 的 Chrome 浏览器,与 Edge 共享大部分底层技术,也具有限制资源使用的工具,包括所谓的 "标签冻结"。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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等操作系统。

用户登录
用户注册