java
文章平均质量分 58
夜里慢慢行456
菜鸡
展开
-
hibernate源码(1)--- schema创建
配置项:hibernate的核心是sessionFactory,那我们看看如何构建session Factory。可以通过Configuration来进行创建,参数配置在property中,buildSessionFactory() 创建出sf。有了sf,即可以连接数据库处理。原创 2023-10-26 22:54:38 · 564 阅读 · 0 评论 -
logging java日志选择
已有门面存在问题log对象创建比较复杂很多时候我们为了在类中加日志不得不写一行,而且还要去手动改XXX这个类名对于附带Exception参数的方法,并不支持变量。Slf4j中我最喜欢的形式,这样既省去了麻烦的isInfoEnabled()的判断,还避免了拼接字符串:但是这种情况下就无法使用变量模式:Hutool-log采用动态自动适配模式,它会自动检测引入的日志框架包从而将日志输出到此框架。 比如我们在项目中引入Log4j的包,Hutool-log会自动检测到此包的存在,并将日志输出到log4j原创 2022-12-04 00:20:31 · 586 阅读 · 0 评论 -
javacc之路6---扫描技巧
最长匹配原则和它的问题下列模式是无法正确地扫描块注释的。注释的终结符为止都和模式“(~[])”匹配原因在于“~[]”和任意一个字符匹配,所以和“”“/”也是匹配的。并且“”模式会尽可能和最长的字符串进行匹配,因此结果就是和最后(第2处)出现的“/”之前的部分都匹配了。这里的“尽可能和最长的字符串匹配”的方针称为最长匹配原则。原创 2022-11-27 16:22:50 · 380 阅读 · 0 评论 -
javacc之路5---词法分析器技巧
为语法编写词法规范的方法有很多种,但生成的令牌管理器的性能可能会因您的操作方式而有很大差异。使用它们时,尝试将所有复杂的正则表达式移动到一个词法状态,让其他人只识别简单的字符串文字。这将使识别速度更快。请注意,如果选择是在两个复杂的正则表达式之间进行,那么可以选择。当然,如果你的语法规定其中之一不能使用,那么你别无选择,只能尽量使用< ~[] >。按长度增加的顺序指定所有字符串文字,即所有较短的字符串文字在较长的字符串文字之前。相反,为此有两种不同的令牌类型,并使用非终端,这是这些选择之间的选择。原创 2022-11-26 17:11:32 · 598 阅读 · 0 评论 -
javacc之路4---错误恢复
请注意,在示例的第二个版本中,我们基本上将代码从error_skipto. 但是我们省略了第一条语句——调用generateParseException(). 在这种情况下,该catch块已经为我们提供了异常。这就是浅层错误恢复。在 JavaCC 的未来版本中,我们将支持语法的模块化组合。如果当前的选择都没有成功被选中,那么浅恢复将恢复,而深度恢复是选择选择的时候,但是在此选择的解析期间某个时候发生错误。在这种情况下,我们希望以相同的方式恢复,但是我们希望即使在解析更深层次上存在错误时也能恢复。原创 2022-11-26 17:10:06 · 605 阅读 · 0 评论 -
javacc之路3---CharStream
ASCII_UCodeESC_CharStream JAVA_UNICODE_ESCAPE在设置选项和UNICODE_INPUT未设置选项时生成。但是,特殊转义序列(“\\”)* “\” (“u”)+被视为一个标记,指示标记后面的接下来的 4 个字节将是十六进制数字,形成一个 4 位十六进制数,其值将被视为第一个反斜杠指示的位置处的字符值. 请注意,此值可以是0x0-范围内的任何值0xffff。NB 以上类都不能用于以混合模式读取字符,即一些字符以 1 字节字符给出,而另一些字符为 2 字节字符。原创 2022-11-26 17:07:07 · 831 阅读 · 0 评论 -
javacc之路2--- LOOCAHEAD
解析器的工作是读取输入流并确定输入流是否符合语法。这种最一般形式的确定可能非常耗时。示例 1{}{}{}{}在这个简单的例子中,很明显恰好有两个字符串符合上面的语法,即:abcabcc这里只有一个选择——第一个输入字符必须是a,既然确实如此,我们就可以了。我们现在继续处理非终结符 BC。同样,下一个输入字符只有一个选择——它必须是b。输入也匹配这个,所以我们仍然可以。我们现在来到语法中的一个选择点。我们可以进入[…]并匹配它,也可以完全忽略它。我们决定进去。原创 2022-11-26 17:05:27 · 841 阅读 · 0 评论 -
javacc之路1--- Token Manager
本教程描述了 JavaCC Token Manager。它涵盖了词法状态、词法操作和 SPECIAL_TOKEN 的使用。内容。原创 2022-11-26 16:41:20 · 590 阅读 · 0 评论 -
微服务修炼之-nacos pom拆解
jar包一多的时候,我们很难确认哪些jar是我们需要的,哪些jar是冲突的。此时会出现很多莫名其妙的问题,什么类找不到啦,方法找不到啦,这种可能的原因就是jar的版本不是我们所设想的版本,但是我们也不知道低版本的jar是从哪个maven里面引用的。maven 的默认编译使用的 jdk 版本有时候不通用,使用 maven-compiler-plugin 插件可以指定项目源码的 jdk 版本,编译后的 jdk 版本,以及编码。如果你自己声明了,那么可以指定自己的版本,并且可以配置自定义的参数。原创 2022-09-22 15:35:02 · 614 阅读 · 0 评论 -
springboot hibernate显示 sql 打印不生效源码排查
但是,如果进行了上述的错误配置,formatSQL 变量本应是 true false 的 bool值,在这里变成字符串了。sql打印调用的SqlStatementLogger 的方法,由 logToStdout 控制。导致sql打印失效,无法获得想要的结果。原创 2022-09-14 15:51:06 · 2097 阅读 · 2 评论 -
Spring学习之路--- spring cache
springcache原创 2022-07-08 11:26:05 · 567 阅读 · 0 评论 -
jdk的tools.jar能干点啥?
文章目录OpenJDK1.8包格式轻解这几天在看jdk的包结构,发现一个有意思的包:tools.jar熟悉arthas的朋友可能会比较了解,arthas是如何attach到某个jvm并进行处理的?下面我们attach到jvm看看:public class VirtualMachineTools { public static List<VirtualMachineDescriptor> getVirtualMachineList() { List<Vi原创 2022-04-21 08:42:02 · 891 阅读 · 0 评论 -
OpenJDK1.8包格式轻解
文章目录jabcharsetscldrdatadnsnsjaccessjcejsselocaledatamanagementagentnashornresourcessunecsunjce_providersunmscapisunpkcs11zipfsrt (runtime)jabhttps://blog.csdn.net/fuhanghang/article/details/121280504Java Access bridge是提供给window平台访问java vm的一系列API.通过java原创 2022-04-20 15:08:19 · 2027 阅读 · 0 评论 -
java11中的基础命令
工具名称描述jabswitch.exeJava访问桥开关(Java Access Bridge switch),用于启用/禁用Java访问桥。Java访问桥内置于Java 7 Update 6及以上版本,主要为Windows系统平台提供一套访问Java应用的API。jaccessinspector.exejaccessinspector工具允许您选择不同的方法来检查对象可访问性信息:发生事件时,例如焦点改变、鼠标移动、属性更改、菜单选择和弹出菜单的显示.当鼠标位于对象上方时...原创 2022-03-16 22:27:17 · 180 阅读 · 0 评论 -
jdbc中oracle数据库的特殊字符
经测试oracle10g数据库中的特殊字符可经escape进行转义的只有_ 和 % select * from ( select distinct daamunifor0_.ID as ID1_35_, daamunifor0_.CAPTION as CAPTION2_35_, daamunifor0_.CODE as CODE3_35_, daamunifor0_.CREATETIME as CREATETIME4_35_, daamunifor0_.CREATOR as CREATOR5_35_, d原创 2022-03-16 11:07:04 · 1197 阅读 · 0 评论 -
hibernate校验验证方法
文档简单使用首先,在pojo添加注解,hibernate-validator提供了很多内置的注解public class Car { @NotNull private String manufacturer; @NotNull @Size(min = 2, max = 14) private String licensePlate; @Min(2) private int seatCount; public Car(Strin原创 2022-03-14 16:07:19 · 1310 阅读 · 0 评论 -
达梦数据库表空间创建
安装最简单的用docker安装https://eco.dameng.com/docs/zh-cn/start/dm-install-docker.html安装完成后进入容器执行disql命令默认的管理员用户密码:SYSDAB/SYSDBA创建表空间: create tablespace DMP datafile 'DMP.dbf' size 256;创建用户使用创建的表空间:...原创 2022-02-08 16:56:19 · 2381 阅读 · 0 评论 -
Kingbase设置hibernate,Spring-data-jpa auto-ddl 小写表名添加字段失效
使用驱动:kingbase8-8.2.jar在Kingbase中创建table 表名有大小写区别,通过hibernate自动创建表后,数据库中存在大小写的表。尤其是使用hibernate添加新字段时不生效每次查看代码,org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder#applyIdentifierCasing此处有元数据的判断。从dialect中可以看到,kingbase语法上和postgresql数据库类似,而pg建表主要是原创 2021-12-06 14:58:56 · 2239 阅读 · 0 评论 -
quartz的triggerState值为1(normal)问题的排查求解
项目上有个功能是通过quartz添加的定时任务,在执行时有通过TriggerState来判断方法是否处于运行状态,但是在触发的job里context.getScheduler().getTriggerState(((SimpleTriggerImpl) ((JobExecutionContextImpl) context).trigger).key)获得的triggerState一直是1,无法来判断Job的状态。跟踪quartz源码:触发器发生状态改变的地方主要是在JobStore中的trigg原创 2021-10-23 14:45:36 · 702 阅读 · 0 评论 -
UML常见关系:泛化,实现,依赖,关联
助记泛化与实现有相同的中空三角,可以助记:蛋生鸡;泛化实线,实现虚线关联,聚合,组合 都用实线箭头,不同在于起始点分别为无,中空菱形,实心菱形,关联强度理解。泛化指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;实现指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关原创 2021-10-08 09:54:10 · 1524 阅读 · 0 评论 -
jar命令补丁更新
这里写自定义目录标题jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 …其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示:-c 创建新的 JAR 文件包 -t 列出 JAR 文件包的内容列表 -x 展开 JAR 文件包的指定文件或者所有文件 -u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中) [vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命原创 2021-09-30 13:24:31 · 412 阅读 · 0 评论 -
微服务修炼之服务调用待完善
文章目录HTTPfeign三级目录RPC微服务领域框架比较流行的是springcloud和dubbo。HTTP以springcloud为例,加入dependencyManagement<!--父级依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</原创 2021-08-11 14:31:10 · 62 阅读 · 0 评论 -
微服务修炼之一致性协议
文章目录ZABraftpaxos在分布式系统中一致性协议有二阶段提交(2PC)1、三阶段提交(3PC)、Paxos、Raft等算法2ZABhttps://www.cnblogs.com/frankltf/p/10392151.html论文:http://www.tcs.hut.fi/Studies/T-79.5001/reports/2012-deSouzaMedeiros.pdfraftpaxoshttps://blog.csdn.net/demon7552003/article/de原创 2021-08-11 14:11:17 · 80 阅读 · 0 评论 -
微服务修炼之服务发现--nacos naming
文章目录概述服务注册概述nacos的服务发现是一个service --> cluster --> instance模型。服务存储集群列表。一致性协议通过ConsistencyService来操作。ConsistencyService是个解耦层,使用户不用关系实现的协议(如最新的代码raft组件已标记废弃,改用Distro)。添加服务:查看是否已添加—ConsistencyService存储(key:服务metakey前缀+命名空间id+命名空间key连接符(##)+服务名服务注册原创 2021-08-11 14:07:36 · 834 阅读 · 0 评论 -
微服务修炼之日志体系(slf4j 如何选择日志框架)
性能比较:https://my.oschina.net/u/1584802/blog/4644032java的日志体系算是比较Logging,log4j, logback, log4j2还有适配器slf4j。log4jlogbacklog4j2http://logging.apache.org/log4j/2.x/Log4j2是log4j的升级版本并且修复了logback的一些问题...原创 2021-08-11 14:00:05 · 143 阅读 · 0 评论 -
编程修炼之性能指标
衡量指标IOPS带宽性能关键点顺序读写,随机读写目录操作:文件创建/删除/查找/更新大量小文件读写大文件读写其他指标CPU占用率IOWAIT基准测试压力测试lozone postman进行自动化测试,top,iostat,sar等进行系统监控。性能测试:系统再不通负载情况下的性能lozone,postman,fio数据一致性MD5加密diff编译内核等POSIX语义兼容性测试PCTS,LTP...原创 2021-08-11 13:59:15 · 113 阅读 · 0 评论 -
编程修炼之数据库优化浅谈
文章目录逻辑查询优化子句优化子查询优化等价谓词条件化简外连接消除物理查询优化查询优化就是找出代价最小的二叉树,即最优的查询路径。每条路径的生成,包括了单表扫描、两表连接、多表连接顺序、多表连接搜索空间等技术。优化可以减少中间生成物的大小和数量,节约IO、内存等,从而提高了执行速度。但优化的前提是:优化前和优化后的语义必须等价逻辑查询优化查询重写技术优化思路主要包括:❏将过程性查询转换为描述性的查询,如视图重写。❏将复杂的查询(如嵌套子查询、外连接、嵌套连接)尽可能转换为多表连接查询。❏将效率低原创 2021-08-11 13:57:09 · 80 阅读 · 0 评论 -
guava eventbus 异步化 一次post发送多次事件
static final EventBus EVENTBUS = new AsyncEventBus(new ThreadPoolExecutor(1, 10, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()));2021-07-14 10:33:37.984 INFO 21384 --- [nio-8085-exec-2] c.i.dmp.api.daam.ResInfol.原创 2021-07-14 11:03:22 · 329 阅读 · 0 评论 -
oracle:jdbc6:12.1.0.1-atlassion-hosted.jar 字段为iorder时,报错无效的列索引
oracle报错无效的列索引多为sql语句中的参数占位符的个数与参数的个数不匹配导致的。更新驱动解决: <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</version>原创 2021-07-09 11:17:54 · 317 阅读 · 0 评论 -
sqlserver count死锁问题排查
简单的count语句,锁死表sql server在执行查询语句时会锁表。在锁表期间禁止增删改操作。如果不想锁表,那就再表名或别名后面加上WITH(NOLOCK)SELECT Id FROM dbo.T_Table WITH(NOLOCK) WHERE Id = 1查询死锁进程:WITH CTE_SID ( BSID, SID, sql_handle ) AS ( SELECT blocking_session_id ,原创 2021-06-25 15:46:41 · 798 阅读 · 0 评论 -
EA修炼之连接到数据库
https://sparxsystems.com/resources/user-guides/15.0/repository/server-based-repositories.pdf在start page或者ctrl+o原创 2021-06-18 23:21:43 · 421 阅读 · 0 评论 -
hibernate 注解uniqueConstraints失效的情况
在JPA工程中使用注解添加唯一索引:@Entity@Table(name = "DAAM_PUBLICDATACOLUMN", uniqueConstraints = { @UniqueConstraint(name = "uk_code",columnNames = {"code"}), @UniqueConstraint(name = "uk_caption", columnNames = {"caption"})}, indexes原创 2021-06-16 16:31:17 · 349 阅读 · 0 评论 -
编程修炼之maven属性
内置属性内置属性(Maven预定义,用户可以直接使用)${basedir}表示项目根目录,即包含pom.xml文件的目录;${version}表示项目版本;${project.basedir}同${basedir};${project.baseUri}表示项目文件地址;${maven.build.timestamp}表示项目构件开始时间;${maven.build.timestamp.format}表示属性${maven.build.timestamp}的展示格式,默认值为yyyyMMdd-H原创 2021-05-21 14:50:06 · 270 阅读 · 0 评论 -
编程修炼之maven scope
依赖依赖配置在pom文件中,通过基本坐标定位。groupId,artifactId,versiontype 默认是jarscope 依赖的范围optional 标记依赖是否可选exclusions 排除传递性依赖Maven 在编译项目主代码的时候,使用的是一套 classpath ,主代码编译时需要的依 赖就添加到这个 classpath 中去; Maven 在编译和执行测试代码的时候,又会使用一套 classpath,这个动作需要的依赖就添加到这个 classpath 中去; Mave原创 2021-05-21 13:55:23 · 139 阅读 · 0 评论 -
编程修炼之maven与maven插件
文章目录概述实战创建工程调用maven项目的版本插件插件查看插件生命周期的绑定官网maven仓库概述Maven是一个项目管理工具,它包含了一个项 目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在 生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 当你使用Maven的时候,你 用一个明确定义的项目对象模型来原创 2021-05-21 13:55:17 · 357 阅读 · 1 评论 -
微服务修炼之nacos一致性协议raft
文章目录论文:https://raft.github.io/raft.pdfhttps://raft.github.io/知乎大佬的中文翻译:https://docs.qq.com/doc/DY0VxSkVGWHFYSlZJhttps://zhuanlan.zhihu.com/p/91288179redis-sentinel,etcd等都使用raft协议解决分布式一致性的问题。在raft的一致性算法里,leader与其他服务器的日志同步是通过将命令作为日志条目复制给其他服务器,在确认安全的时原创 2021-05-17 15:10:53 · 428 阅读 · 0 评论 -
flowable实战(3)--- 开始
文章目录开始部署流程定义配置apispring集成springboot集成部署开始新建maven工程<dependencies> <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-engine</artifactId> <version>6.6.0</version> </dependen原创 2021-08-11 14:10:31 · 256 阅读 · 0 评论 -
flowable实战(2)----flowable-ui从0开始部署流程
文章目录安装流程定义安装最简单的体验方式:docker run -p8080:8080 flowable/flowable-ui流程定义Flowable UI app; http://localhost:8080/flowable-ui(login/password: admin/test)点击模型设计器以执行一个脚本任务为例,执行groovy脚本:println(“hello”)选择模型并保存发布。查看日志,我们就可以看到执行的脚本任务了。...原创 2021-05-13 14:40:26 · 1232 阅读 · 0 评论 -
Groovy脚本引擎加载类爆炸问题探索
引入pom <dependency> <groupId>org.apache.groovy</groupId> <artifactId>groovy-all</artifactId> <version>4.0.0-alpha-3</version> <type>pom</type> &l原创 2021-05-12 09:23:05 · 797 阅读 · 2 评论 -
微服务修炼之服务发现--nacos 客户端代码结构
client客户端的功能也是和server相对应:使用配置功能<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${latest.version}</version></dependen原创 2021-05-10 17:51:07 · 150 阅读 · 0 评论