本章目标 完成数据访问层的基本设计 实现Sticker微服务的RESTfulAPI 引言:应该使用ORM框架吗? 毋庸置疑,Sticker微服务需要访问数据库来管理“贴纸”(也就是“Sticker”),因此,以什么方式来存储数据,就是一个无法绕开的话题。如果你遵循领域驱动设计的思想,那么你可以说,保存到数据库的数据,就是“贴纸”聚合在持久化到仓储后的一种对象状态。那现在的问题是,我们需要遵循领域驱动设计的思想吗? 在目前的Sticker微服务的设计与实现中,我想暂时应该是不需要的,主要原因是,这里的业务并不复杂,至少在Sticker微服务的BoundedContext中,它主要关注Stic...
众所周知,WAS(WindowsAppSDK,俗称WinUI3)在刚开始是支持UWP的,甚至最早只支持UWP,但是微软在正式版发布前删除了对UWP的支持,不过真的删除了吗?初生之鸟在2023年10月发现在VS调试下无视报错继续运行可以正常在UWP加载WAS。随着WAS的开源,WAS阻止在UWP上运行的原因也被找到,至此大家终于找到在UWP上使用WAS的方法了。 WAS阻止在UWP上运行的方法很简单,就是检查注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WinUI\Xaml\EnableUWPWindow是否为00000001,如果不是就直接报错。 Wind...
要想自己的dll或程序禁止被反编译成功,可以使用ConfuserEx混淆代码 1.正常反编译 1.1创建一个demo控制台 新建Test类,写个fun 1.2正常编译看的效果 目前有很多.NET的反编译工具,例如ILSpy,JustDecompile,dnSpy.下面使用dnSpy对ConsoleApp进行反编译。 2.混淆编译dll流程 使用ConfuserEx工具编译dll,可以通过https://github.com/yck1509/ConfuserEx/releases获取编译程序 2.1获取ConfuserEx工具,启动程序 启动程序如下 将需要混淆的DLLs或者Exe拖拽到...
前言 随着制造业的不断发展,企业对于生产效率和管理水平的要求越来越高。 EasyMES是一款基于.NET6开发的零部件离散型MES(ManufacturingExecutionSystem)+WMS(WarehouseManagementSystem)系统,可以帮助企业提升生产效率和管理水平。 本文将详细介绍EasyMES的功能、部署方式以及使用说明。 系统介绍 EasyMES是一款专为零部件离散型生产设计的综合管理系统,涵盖了从生产到仓储的各个环节。系统集成了钉钉消息推送功能,支持MySQL和SQLServer数据库,并采用MIT协议开源。 系统功能 1、MES功能 离散型零部件制造管理:实...
前言 源生成器的好处很多,通过在编译时生成代码,可以减少运行时的反射和动态代码生成,从而提高应用程序的性能,有时候需要对程序AOT以及裁剪编译的dll也是需要用SG来处理的。 我们开发程序应该都绕不过Mapper对象映射,用的比较多的库可能就是AutoMapper,Maspter之内的三方库吧;这些库很强大但是因为内部实现存在反射,因此开发的程序就没办法AOT了,因此如果程序不是很复杂但是又有很特殊的需求,建议使用SG来实现Mapper 功能演示 这里我演示下自己开发的AutoDto生成DTO功能: 比如我们有一个User的类,需要生成UserDto publicclassUser { pu...
一、概述 上篇文章介绍了木舟通过HTTP网络组件接入设备,那么此篇文章将介绍如何利用Tcp或者UDP网络组件接入设备. 木舟(Kayak)是什么? 木舟(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行开发的,平台包含了微服务和物联网平台。支持异步和响应式编程开发,功能包含了物模型,设备,产品,网络组件的统一管理和微服务平台下的注册中心,服务路由,模块,中间服务等管理。还有多协议适...
前后端分离的开发中,在部署项目时通常会分开进行部署,而这样又很麻烦,需要配置跨域,域名配置等等有一些情景下,我们需要采用更为方便的方式去部署,可以参考下方方法进行调整 准备 WebApi项目 一个打包好的前端项目React或VUE都可以 调整 为WebApi项目新增wwwroot文件夹,用于放置前端静态文件在Program.cs中增加如下改动 //默认文件 app.UseDefaultFiles();//Default.html、Default.htm、index.html、index.htm //静态文件 app.UseStaticFiles();//可访问wwwroot下的静态文件 ...
三,MyBatis-Plus的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...) @ 目录 三,MyBatis-Plus的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...) 1.条件构造器介绍 2.准备工作: 3.等值查询 3.1eq(条件筛选属性=?) 3.2allEq(满足多个条件字段的值的筛选) 3.3ne(不等于) 4.范围查询 4.1gt(>大于的范围) 4.2ge(>=大于等于的范围) 4.3lt(<小于的范围) 4.4le(小于等于的范围) 4.5between(在该区间的范围) 4.6notBetween(不在...
Java中的中间件配置体现在springboot的yml配置文件中。Springboot框架支持微服务和中间件和restfulapi远程服务的调用。中间件是Javaweb系统的中间层的服务系统的调用接口。Springboot的自动装配和约定大于配置机制初始化springcontext的容器空间和注册组件。使用容器管理服务注册对象和JavaBean对象灵活性和配置解耦实现服务动态调整参数。 Springboot的自动装配过程首先在自动的配置本地基础javaSE和JavaEE的jar包。现在的接口服务配置远程仓库使用Maven动态配置。Maven的打包过程自动的加载ja...
五,MyBatis-Plus当中的“ActiveRecord模式”和“SimpleQuery工具类”(详细实操) @ 目录 五,MyBatis-Plus当中的“ActiveRecord模式”和“SimpleQuery工具类”(详细实操) 1.ActiveRecord模式 2.ActiveRecord介绍 2.1ActiveRecord实现 3.SimpleQuery工具类 3.1SimpleQuery介绍 3.2list 3.3map 3.4Group 4.最后: 1.ActiveRecord模式 2.ActiveRecord介绍 ActiveRecord(活动记录,简...
前言 最近多个项目需要接入人脸识别功能,之前的方案是使用百度云api集成,但是后续部分项目是内网部署及使用,考虑到接入复杂程度及收费等多种因素,决定参考开源方案自己搭建,保证服务的稳定性与可靠性 项目地址:https://gitee.com/code2roc/fastface 设计 经过检索对别多个方案后,使用了基于seetaface6+springboot的方式进行搭建,能够无缝接入应用 seetaface6是中科视拓最新开源的商业正式版本,包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计 官网地址:https://github.com/Se...
在idea中配置maven需注意maven版本和idea版本相匹配。本人使用idea版本为2020.3,jdk1.8,maven3.6.3可以与之相匹配。 一、下载mavenmaven下载官网地址:https://maven.apache.org/download.cgi本人使用的maven3.6.3网盘链接:https://pan.baidu.com/s/1TdY9dc-cjI1za_5LRA6Y3A?pwd=1d5emaven为绿色软件解压缩后即可 这里记住maven文件存放的地址(存放地址不要出现中文字符) 二、配置环境变量1.打开电脑高级系统设置 设置环境变量 在系统变量中设置:新...
大家好,我是Java陈序员。 之前,给大家推荐过几款开源的商城系统。 一个5.2k+Star的微服务商城系统 一个基于Vue+Vuex+iView的电子商城网站 今天,再给大家介绍一款开源轻量的小商城系统,包含后台管理、H5和微信小程序! 关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。 项目介绍 litemall——一个小商场系统,基于SpringBoot+Vue+微信小程序实现,包含管理员端、H5端和微信小程序端! 项目架构: 功能特色: 小商城功能 首页 专题列表、专题详情 分类列表、分类详情 品牌列表、品牌详情 新品首发、人气...
面试题:有3个独立的线程,一个只会输出A,一个只会输出B,一个只会输出C,在三个线程启动的情况下,请用合理的方式让他们按顺序打印ABC。 使用lock,Condition importjava.util.concurrent.locks.Condition; importjava.util.concurrent.locks.Lock; importjava.util.concurrent.locks.ReentrantLock; publicclassABC{ //可重入锁 privatefinalstaticLocklock=newReentrantLock(); //判断是否执行:1表...
CountDownLatch的使用方式 CountDownLatch用于某个线程等待其他线程执行完任务再执行,与thread.join()功能类似。常见的应用场景是开启多个线程同时执行某个任务,等到所有任务执行完再执行特定操作,如汇总统计结果。 面试题:如何能够保证T2在T1执行完后执行,T3在T2执行完后执行? join方法 可以使用join方法解决这个问题。比如在线程A中,调用线程B的join方法表示的意思就是:A等待B线程执行完毕后(释放CPU执行权),在继续执行。 publicclassRunnableJob{ publicstaticvoidmain(String[]args)thr...
前言 我们在使用IDEA开发Java应用时,经常会打开不同的窗口,有时候,可能为了一时方便,把窗口拖动了一下,窗口就改变了布局,或者我们不小心点击拖拽了某一个窗口,这时候,我们想要还原默认布局,该怎么操作呢? 如何还原IDEA默认布局 首先,我们点击上方的【Window】。 然后,我们点击下拉里面的【RestoreDefaultLayout】。 最后,就可以还原我们默认的布局了。 总结 以上就是我们还原IDEA默认的布局了。 如果有对Java入门开发相关的问题,可以关注我的公众号【Java入门学习】,加我好友,我会持续更新Jav...
spring_boot ⼀个使⽤了SpringBoot的项⽬⼯程,本质上来说和只使⽤SpringFramework的⼯程是⼀样的,如果使⽤Maven来管理,那它就是个标准的Maven⼯程,⼤概的结构就像下⾯这样。 |-pom.xml |-src |-main |-java |-resources |-test |-java |-resources pom.xml中管理了整个项⽬的依赖和构建相关的信 src/main中是⽣产的Java代码和相关资源⽂件; src/test中是测试的Java代码和相关资源⽂件。 POM文件分为以下几个部分: ⼯程⾃⾝的GroupId、ArtifactId...
首先引入一个概念,什么是Java类加载器? 一句话总结:类加载器(classloader)用来加载Java类到Java虚拟机中。 官方总结:Java类加载器(英语:JavaClassloader)是Java运行时环境(JavaRuntimeEnvironment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。 类与类加载器 先来看一下JVM中默认的类加载器 分类 实现通过类的全限定名获取该类的二进制字节流的代码块叫做类加载器。 类加载器虽然只用于实现类的加载动作,但它在Ja...
大家好,我是V哥。在日常写代码的过程中,通过AI工具辅助开发已是当下程序员惯用的方式,V哥在使用了众多的AI工具后,多数情况下,选择通义灵码来辅助开发,尤其是解释代码和生成单元测试功能甚是好用,听V哥来详细聊聊。 通义灵码安装 打开你的IDEA开发工具,在菜单栏中选择Settings,打开设置窗口,在左侧栏中选择Plugins,在Marketplace的搜索栏中输入“通义灵码”,搜索结果的第一个就是通义灵码AI插件了,点击Install安装插件后,重启IDE即可安装成功。 重启IDEA后,在右侧会出现通义灵码选项,此时,就可以使用通义灵码来辅助编程啦。 使用前,请先使用阿里账号进行登录,V...
一、关于Mybatis-Plus插件 1.1简介 Mybatis-Plus提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展Mybatis的功能,提升开发效率、优化性能和实现一些常用的功能。 1.2实现原理 Mybatis-Plus的插件实现是基于MyBatis的拦截器机制,这些插件通过MybatisPlusInterceptor来实现对MyBatis执行过程的拦截和增强。 MyBatis插件本质上是对SQL执行过程的拦截和扩展,Mybatis-Plus插件通过在MyBatis的执行生命周期中插入拦截器来实现一些增强功能。通过这种方式,Mybatis-Plus可以实现分页、性...