- 博客(686)
- 收藏
- 关注

转载 概念模型、逻辑模型及物理模型介绍
如销售业务中的 客户 和 定单 , 还有就是 商品 , 业务员 , 用 USE CASE 来描述就是 : 业务员 与 客户 就购买 商品 之事签定下 定单 , 概念模型使用 E-R 图表示 , E-R 图主要是由实体 , 属性和联系三个要素构成的。逻辑模型是将概念模型转化为具体的数据模型的过程 , 即按照概念结构设计阶段建立的基本 E-R 图 , 按选定的管理系统软件支持的数据模型 (层次/网状/关系/面向对象) , 转换成相应的逻辑模型 , 这种转换要符合关系数据模型的原则;备注:画图工具PDMan。
2022-11-15 14:27:24
3575

原创 js递归无限级联
依赖jquery可根据配置参数(方向,样式,标签名称)得到自己想要select.js(function ($) { $.fn.select = function (url, option, callback) { var setting = { el: $("body"), data: null, labels: [], isOpenSearch: true,
2020-11-23 14:30:08
707

原创 shell,python脚本实现docker部署Redis集群
背景:Redis Cluster 在5.0之后取消了ruby脚本 redis-trib.rb的支持(手动命令行添加集群的方式不变),集合到redis-cli里,避免了再安装ruby的相关环境。直接使用redis-clit的参数–cluster 来取代。为方便自己后面查询就说明下如何使用该命令进行Cluster的创建和管理,关于Cluster的相关说明可以查看官网或则Redis Cluster部署、管理和测试。说明:redis-cli --cluster helpredis-cli --cluster
2020-09-08 16:41:41
634
3

原创 前端ES6 实现导出excel 可分页 跨函数 自定义
function Point() {}/* Point.prototype = { x:null, y:null, setX: function(x) { this.x = x; }, getX: function() { return this.x; }, setY: function(y) { this.y = y; },.
2020-07-03 19:08:01
1711

原创 js写的一个Thread函数(更新:添加自定义异常处理)
做项目的时候感觉使用setTimeout()功突发奇想写了一个Thread函数,不过这也是一个简单的函数,之前也写了Stop,和resume等方法由于设计的时候自己感觉代码太长设计有点问题就删掉了,不过后期有时间我还会继续完善,不喜勿喷。代码:var threadCount=0;function Runnable(task){ this.run=task;}functi.........
2019-12-31 00:55:27
1120
1

原创 反编译 i++ ,++i,i=i+1区别(修改)
1.(i++,++i)和i=i+1最大的区别i++和++i使用的时iinc进行自增,i=i+1使用的是iadd操作栈顶和次栈顶元素进行相加iinc操作的时局部变量表中的数据,iadd操作操作数栈中的数据。有疑问?就先带着疑问往下看2.i++和++i的最大区别i++是先把局部变量表的数据iload到栈顶,然后再进行iinc(操作数栈i=0,局部变量表i=1),++i是先对局部变量表...
2019-12-04 16:49:14
796
1

原创 聊聊线程之run方法
话不多说参考书籍 汪文君补充知识:start是异步,run是同步,start的执行会经过JNI方法然后被任务执行调度器告知给系统内核分配时间片进行创建线程并执行,而直接调用run不经过本地方法就是普通对象执行实例方法。什么是线程?1.现在几乎百分之百的操作系统都支持多任务的执行,对计算机来说每一个人物就是一个进程(Process),在每一个进程内部至少要有一个线程实在运行中,有时线...
2018-11-07 22:28:48
2570

原创 运行时异常和受检查异常的区别
java程序设计语言提供了三种可抛出结构:受检查时异常(checked exception),运行时(run-time exception)和错误 (error)java异常:受检查时异常和运行时异常(非编译时异常)首先介绍一下我们常见的集中描述:受检查时异常,编译异常,非运行时异常 描述可以理解为同一个意思,运行时异常,非编译时异常,非受检查时异常 等同 // 非受检查的可...
2018-05-06 14:13:52
14874
5
原创 浅谈高可靠、高可用、容错
✅基本正确。高可靠性(High Reliability) 的确强调的是通过设计、材料、测试等手段来防止故障的发生。它关注的是系统在长时间运行中尽量不出问题,所以你说它是“保证不发生问题的手段”是对的。🔧建议修正可以更准确地说为:“高可靠的目标是防止故障发生,强调通过高质量的设计与组件选择来提升系统的稳定性。概念核心目标实现方式高可靠性 HR尽量避免故障发生高质量设计、组件、测试、维护容错 FT出现故障后系统仍能正常运行冗余、错误检测与屏蔽、隔离机制高可用 HA。
2025-04-30 14:27:41
529
原创 Java 高级技术之Gradle
Gradle 是一款Google 推出的基于JVM、通用灵活的项目构建工具,支持Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的build 脚本文件。学习Gradle 的原因:总之,虽然目前市面上常见的项目构建工具有Ant、Maven、Gradle,主流还是Maven,但是未来趋势Gradle。
2025-04-29 17:58:28
454
原创 个人谈谈有些项目分web、service、dao、bean、utils多模块的看法
模块拆分 ≠ 架构合理把webservicedaobean拆成子模块是典型的“伪模块化”,不是业务驱动的设计,而是技术洁癖的产物。真正的复用是领域层的复用,而不是技术组件的拆分DDD 强调的是以业务能力为核心,通过统一语言(Ubiquitous Language)来组织代码结构,而不是按技术分层来切分模块。这种做法不符合 DDD 的五层架构设计理念应用层不直接依赖数据层,更不会因为“结构清晰”就把dao和bean提出来作为公共依赖。说是为了以后微服务拆分做准备也是站不住脚的微服务拆分是基于业务边界。
2025-04-29 11:56:08
712
原创 gradle-缓存、依赖、初始化脚本、仓库配置目录详解
mavenLocal():指定使用maven本地仓库,而本地仓库在配置maven时settings文件制定的仓库位置。如E:/repositiory,gradle查找jar包顺序如下,USER_HOME/.m2/settings,xml。
2025-04-26 20:41:21
698
原创 Android-KeyStore安全的存储系统
在 Android 中,AndroidKeyStore 是一个安全的存储系统,用于存储加密密钥。它提供了一种安全的方式来生成、存储和管理密钥,而无需将密钥暴露给应用程序本身。以下是如何使用 AndroidKeyStore 的基本步骤和示例代码。通过以上代码和解释,你应该能够理解如何在 Android 应用中使用。来安全地生成密钥、加密和解密数据。如果有进一步的问题,请随时提问!检查 AndroidKeyStore 是否可用。
2025-04-22 09:44:41
507
原创 jvm-获取方法签名的方法
在Java中,获取方法签名的方法可以通过以下几种方式实现,具体取决于你的需求和使用场景。以下是详细的介绍:Java 提供了 类来获取方法的相关信息,包括方法签名。输出示例:2. 使用 ASM 或其他字节码操作库如果你需要直接分析 文件或字节码中的方法签名,可以使用字节码操作工具,例如 ASM 或 Javassist。输出示例:3. 使用 工具 是 JDK 自带的一个反编译工具,可以用来查看 文件中的方法签名。输出示例: 参数显示方法的签名。 参数显示私有成员(可选)。
2025-04-21 12:02:41
517
原创 jvm-描述符与特征签名的区别
因此,在JVM中实际存储和使用的主要是方法签名,它包含了方法的参数类型和返回值类型的信息。虽然有时“描述符”一词可能被用来指代参数部分的描述,但在涉及到JVM的具体实现、字节码操作、反射机制以及JNI交互时,所依赖的是完整的方法签名。这种方法签名的设计保证了JVM可以准确识别和执行方法调用。
2025-04-21 12:00:47
539
原创 经济学-禀赋效应,损失厌恶
上午的“损失”感很强烈,即使下午多了,也难以弥补。根的痛苦,比下午多一根的快乐影响更大。:如果猴子习惯了上午四根,那么上午只给三根,立刻感到失落。假设每天有七根香蕉,该如何礼貌地分配,才能不被猴子吐口水?如果上午给三根,下午给四根,猴子听了,气得想大闹天宫;:虽然下午少了,但上午已经吃饱了,满足感还在。如果上午给四根,下午给三根,猴子们非常开心。这其实是一个很有意思的行为经济学问题!:下午只有三根,比预期少一根。:下午有四根,比上午多一根。:猴子习惯了上午四根香蕉。
2025-04-19 13:06:36
292
原创 android-根据java文件一键生成dex文件脚本
3.解压dex文件从zipz文件中解压出来,运行todex.bat生成dex文件。1.将dex上传到手机或者模拟器上。2.删除中间文件,class文件。4.删除中间文件,zip文件。5.修改dex文件名。
2025-04-14 16:52:41
493
原创 spring在filter中使用Autowired注入 bean为null
这是因为这些组件默认由 Tomcat 容器管理,而不是由 Spring 容器管理,导致无法正确注入 Spring Bean。而 Spring 的依赖注入机制只能作用于它自己管理的 Bean。注入 Spring Bean 时,Spring 容器无法感知到这些对象的存在,从而导致注入失败。,并将其纳入 Spring 容器的管理范围。只是一个普通的 Java 类,可以被 Spring 容器管理。能够正常使用 Spring 容器中的 Bean,我们需要将。通过上述方法,我们将原本由 Tomcat 容器管理的。
2025-04-11 09:20:22
455
原创 数据库-并集(union、union all)、交集intersect、差集except
为了更好地理解数据库中的UNIONUNION ALLINTERSECT和EXCEPT操作,我们将通过具体的例子来说明它们的功能。tableA和tableB。
2025-04-11 09:15:41
537
原创 mysql-锁的算法(记录锁、间隙锁、临键锁)
而对于辅助索引,其加上的是Next-Key Lock,锁定的范围(1,3],特别需要注意的是,InnoDB存储引擎还会对辅助索引下一个键值加上gap Lock,即还有一个辅助索引范围(3,6)的锁。第二个SQL语句,主键插入4,没问题,但是插入的辅助索引值2在锁定的范围(1,3]中,因此执行同样会被阻塞。第三个SQL语句,插入的主键6没有杯锁定,5也不在范围(1,3]之间,但插入的值5在另一个锁定的范围(3,6)中,故同样需要等待。因为在辅助索引列b上插入值为2的记录时,会检测到下一个记录3已经被索引。
2025-04-10 18:46:06
1208
原创 mysql-innodb_autoinc_lock_mode=2 和innodb_autoinc_lock_mode=1可能引发的问题
即使在这样的架构下,由于并发自增导致的ID分配顺序不一致问题确实可能发生,正如您描述的情况。(连续模式),在高并发场景下,由于自增 ID 的分配机制涉及并发竞争,主从数据库之间都可能出现自增 ID 不一致的问题。尽管主从库上的自增ID可能出现暂时性的偏移,但由于从库严格按照主库的binlog顺序重放操作,确保了数据内容的一致性。,由于并发自增导致的主从ID分配顺序不一致问题是可能发生的。因此,虽然主库和从库上的自增ID可能不同,但它们都包含相同的三条记录(A、B、C),并且每条记录的内容是完全一致的。
2025-04-10 13:29:33
1310
原创 mysql-sql查询结构和执行顺序
理解 SQL 查询的执行顺序对于优化查询性能以及解决复杂查询问题非常重要!如果还有其他疑问,请随时告诉我!我们需要统计每个国家的已完成订单数量,并仅显示订单数量大于 5 的国家,最后按订单数量降序排列。在 MySQL 中,SQL 查询的执行顺序是非常重要的。
2025-04-08 15:49:10
934
原创 mysql-INNODB_FT_INDEX_TABLE表中的 first_doc_id 和、last_doc_id 和doc_id
是 InnoDB 存储引擎内部的一个表,用于存储全文索引的倒排索引信息。:如果一张表有10行记录,name字段都是“male”,现在对name建立全文索引。好的,让我们详细分析一下你描述的场景,并解释在这种情况下。如果你想查看更详细的倒排索引信息(例如每个文档的具体。如果还有其他疑问,请随时告诉我!希望这个解释能够帮助你理解。
2025-04-08 14:29:42
1090
原创 AI技术架构包含芯片层、框架层、模型层和应用层
AI技术架构确实可以分为多个层次,从底层的硬件支持到上层的应用实现,每一层都在整个AI生态系统中扮演着重要的角色。
2025-04-08 13:09:04
436
原创 os浅尝-话说虚拟内存
而一个32位的线性地址中,前10位可以从页目录中选择一个页表,次十位可以从页表中锁定一个物理内存页最后1剩下的12位会用来存储一个相对于内存页起始位置的偏移值,12位正好覆盖4K偏移值,也就足够定位到这一页的每一个地址了。但是真正的映射要到进程访问这段内存时才会进行,所以说进程的虚拟地址空间只是它可以申请使用的一个范围,只有真正被映射物理内存才算是能够合法使用的虚拟内存,而没有被映射到物理内存的部分,不属于合法的线性地址,要使用就必须先映射。
2025-04-07 15:38:56
847
原创 mysql-MRR优化技术
它的主要作用是将随机 I/O 转换为顺序 I/O,从而减少磁盘访问的开销。然而,在某些情况下,即使启用了 MRR,它可能并不会生效。如果你使用的存储引擎不支持 MRR(例如 MEMORY 引擎),它自然不会生效。如果数据已经完全加载到缓冲池中,MRR 的效果可能不明显,因为此时随机 I/O 和顺序 I/O 的性能差异不大。MRR 的效果在高延迟的存储设备(如机械硬盘)上更为明显。如果使用的是高性能 SSD,MRR 的收益可能较小。确保表使用的是支持 MRR 的存储引擎(如 InnoDB)。
2025-04-03 13:29:53
849
原创 mysql-sql_mode参数类型
启用严格模式,对事务性存储引擎(如 InnoDB)进行严格的 SQL 检查。如果数据插入或更新违反约束(如超出列长度),MySQL 将报错而不是尝试调整数据。,因此你的查询应该可以正常运行。或者,这些列必须通过聚合函数(如 COUNT()、SUM() 等)进行处理。如果指定的存储引擎不可用,则会抛出错误,而不是自动替换为默认存储引擎。为了避免潜在的问题,建议明确列出需要的列,并合理使用聚合函数。如果没有启用严格模式,这只会生成警告。,但当前会话未更新,可以手动设置当前会话的。,说明当前会话的设置未生效。
2025-04-03 09:42:09
551
原创 mysql-Cardinality值
并不是在所有的查询条件中出现的列都需要添加索引。对于什么时候添加B+树索引,一般的经验是,在访问表中很少一部分时适应B+索引才有意义。按性别进行查询时,可取值的范围一般只有’M’、‘F’。因此上述SQL语句得到的结果是该表50%的数据(假设那女比例1:1),这时添加B+树索引是完全没有必要的。相反,如果某个字段的取值范围很广,几乎没有重复,即属于高选择性,则此时使用B+树索引是最合适的。例如,对姓名字段,基本上在一个应用中不允许重名的出现。怎样查看索引是否是高选择性的呢?可以通过SHOW INDEX。
2025-04-01 10:39:19
972
原创 mysql-删除主键
1.取消递增约束: 修改列定义以移除 AUTO_INCREMENT使用 ALTER TABLE 语句修改列定义,移除 AUTO_INCREMENT 属性。删除递增主键异常信息。
2025-03-31 15:22:25
364
原创 MySQL-复制表的两种常见方式
这两种方式虽然都能用于创建新表,但它们的行为和结果有显著的区别。在 MySQL 中,创建表的方式有很多种,其中。
2025-03-28 15:20:47
619
原创 mysql-分区和性能
发现很多开发团队人为含有1000W行的表是一张非常巨大的表,所以他们往往会选择采用分区,如对主键做10个hash的分区,这样每个分区就只有100W的数据了,因此查询应该变得更快乐,如 SELECT * FROM WHERE PK=@pk 但是有没有考虑过这样一种情况: 100W和1000W行的数据本身构成的B+树的层次都是一样的,可能都是2层。好的,如果1000w的B+树的高度是3,100W的B+树的高度是2,那么上述按主键分区的索引可以避免1次IO,从而提高查询效率。mysql自身只支持表的横向分区。
2025-03-28 14:51:28
497
原创 macbook重做系统三种方式
command+option+shift+r会升到到手动升级前的版本(主版本号.次版本号)的最新修正版本号 手动升级前得主版本号.次版本号.最新修正版本号。command+option+r升级到当前笔记本支持的最新版本 最新主版本号.最新次版本号.最新修正版本号。command+r会升级到你当前系统的主版本号.次版本号.最新版本号。版本分为: 主版本号.次版本号.修正版本号。
2025-03-27 20:37:40
217
原创 java-Cglib和jdk编译生成的类名
在 Java 的动态代理机制中,JDK 动态代理和 CGLIB 是两种常用的实现方式。CGLIB 是基于继承的代理机制,它通过字节码技术生成目标类的子类。希望这些内容对你有所帮助!如果还有其他疑问,请随时提问。如果你想进一步分析生成的代理类,可以将它们保存为。JDK 动态代理是基于接口的代理机制,它通过。生成的代理类会保存在指定路径下。生成的代理类会保存在项目的。
2025-03-27 14:10:25
497
原创 android-enableJetifier作用
是一个在文件中配置的属性,用于自动迁移现有的第三方库以支持 AndroidX。当你设置时,Gradle 构建系统会尝试将所有依赖项从旧的支持库(例如)重写为使用 AndroidX 库。
2025-03-27 10:47:18
580
原创 gradle-api和implementation区别
是用于声明依赖项的两种不同的配置方式,特别是在使用 Android Gradle Plugin 或 Java 库项目时。它们的主要区别在于依赖项的可见性和传递性。,因为它有助于保持项目的清晰度和减少潜在的问题。只有当你确实需要将某个依赖公开给其他模块时,才应考虑使用。主要取决于你希望如何管理你的依赖项以及这些依赖项的使用范围。通常情况下,推荐尽可能使用。在 Gradle 构建系统中,
2025-03-26 15:23:48
607
mingw-x86-64-8.1.0-release-posix-seh-rt-v6-rev0
2022-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人