首页 文章 精选 留言 我的

精选列表

搜索[Mermaid预览],共6184篇文章
优秀的个人博客,低调大师

橙单代码生成工具 3.0 发布,全新预览版

全新橙单 非常感谢帮助和鼓励我们前行的朋友们,经过近乎一年的努力,我们终于让橙单以全新的面貌呈现在大家的面前,正式版本将在一周后发布上线。强烈推荐大家完整阅读,或许橙单可以为您带来更大的收获。 全新网站上线,希望有更多的开发者可以关注橙单,一款具有卓越代码生成能力和全优代码生成质量的免费在线代码生成工具。 全新文档上线,感谢 JPress 作者 @开源海哥和他的前端团队,为橙单新版文档的上线提供了极为专业的技术支持,升级后的文档结构和阅读体验均已得到显著提升。 全新生成器上线,终于让橙单成为颜值与实力并存的开发者效率工具,同时提供了移动端页面 (Uniapp & Vant) 的在线代码生成能力。 全新代码质量,10 几万行代码全部通过 SonarQube 最严格的代码扫描「0」警告。其中包括工作流、在线表单、统计表单、多租户、数据权限等逻辑相对复杂的基础架构代码,以及为开发者用户生成的业务代码。 全新演示工程上线,为了便于大家更加了解我们的代码生成能力,新版 DEMO 提供了完整的功能演示和示例说明,所有功能均为新版橙单一键生成,未经任何修改直接部署。 图和真相

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

Pushup v0.1 预览版发布,Go Web 框架

Pushup 发布了首个 Preview 版本:0.1。 Pushup 是一个实验性的新项目,使用 Go 创建现代、面向页面的 Web 应用。Pushup 旨在探索使用 Go 轻松构建面向页面的服务器端 Web 应用程序。 此版本目前初步实现了以下功能: 固定的 project/app 目录结构,支持基于文件的路由(file-based routing) 可替代传统 Web 框架目标的轻量级标记语法(lightweight markup),将用于控制流的 Go 代码和命令式、类似视图控制器的代码与 HTML 标记相结合 解析上述标记语法并生成纯 Go 代码的编译器(compiler),在 Go stdlibnet/http包之上构建独立的 Web 应用程序 示例代码 ^import "time" ^{ title := "Hello, from Pushup!" } <h1>^title</h1> <p>The time is now ^time.Now().String().</p> ^if time.Now().Weekday() == time.Friday { <p>It's Friday! Enjoy the start to your weekend.</p> } ^else { <p>Have a great day, we're glad you're here.</p> } Fileapp/pages/hello.up→/helloURL path Pushup 示例应用的目录结构 /path/to/mypushupapp ├── layouts │ └── default.up ├── pages │ └── index.up ├── pkg │ └── app.go └── static ├── app.css └── htmx.min.js 详情查看 Release Notes。

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

事件领域模型 kaka-core 5.0 预览版发布

kaka-core 是一项服务于 Java 后端的事件领域模型,全局事件通知框架。 kaka-core 已移至 https://gitee.com/zkpursuit/kaka-core , 并支持 maven 直接安装。 本次更新新增与第三方消息队列对接的功能 1、稍加编码就能对接市面上所有第三方消息队列。 2、通过消息队列派发和消费事件可由远程事件处理器处理并返回处理结果。 3、返回处理结果与本地执行事件完全相同(注:SyncResult消费处理远程事件时不可用)。 4、事件保证一次消费处理,不会多次重复处理。 5、稳定性完全由第三方消息队列决定。 原理:每个事件调度中心为消息的发布者亦为消息的订阅者,派发事件即将事件发布到消息队列,订阅者消费到事件后本地化处理事件,处理完成后再次将事件发布到消息队列,根据事件ID在发送方找到缓存在内存的原始事件对象并进行结果赋值或回调。 原理执行流程图(感谢用户 微信名:碧涛 提供此图): 基本范例: Facade facade = FacadeFactory.getFacade(); //以下通过ActiveMQ消息队列消费处理事件,并获得事件处理结果 facade.initRemoteMessageQueue(new ActiveMQ("event_exec_before", "event_exec_after")); //此行全局一次设定 Message message = new Message("20000", "让MyCommand接收执行"); IResult<String> result4 = message.setResult("ResultMsg", new AsynResult<>(5000)); facade.sendMessageByQueue(message); System.out.println("消息队列消费处理事件结果:" + result4.get()); facade.sendMessageByQueue(new Message("40000", "", (IResult<Object> result) -> { String clasz = ((CallbackResult<Object>) result).eventHanderClass; StringBuilder sb = new StringBuilder("消息队列消费处理事件结果异步回调:\t" + clasz + "\t"); Object resultObj = result.get(); if (resultObj instanceof Object[]) { Object[] ps = (Object[]) resultObj; sb.append(Arrays.toString(ps)); } else { sb.append(resultObj); } System.out.println(sb); })); package kaka.test; import com.kaka.notice.RemoteMessageQueue; import kaka.test.util.KryoSerializer; import kaka.test.util.Serializer; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; /** * 本类仅为测试用例,ActiveMQ消息队列的访问实现代码是否为最优不做考虑,在此仅为范例参考 */ public class ActiveMQ extends RemoteMessageQueue { private static class TestLocalMessageCache implements LocalMessageCache { private final Map<String, com.kaka.notice.Message> localMap = new ConcurrentHashMap<>(); @Override public void add(String id, com.kaka.notice.Message message) { localMap.put(id, message); } @Override public com.kaka.notice.Message remove(String id) { return localMap.remove(id); } } private static final String BROKER_URL = "tcp://101.34.22.36:61616"; private final ActiveMQConnectionFactory activeMQConnectionFactory; private final Serializer<MessageWrap> eventSerializer = new KryoSerializer<>(); public ActiveMQ(String beforeTopic, String afterTopic) { super(beforeTopic, afterTopic); this.activeMQConnectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, BROKER_URL); this.init(); } @Override protected LocalMessageCache initLocalMessageCache() { return new TestLocalMessageCache(); } @Override protected void publishEventMessage(MessageWrap msgWrap, String topic) { byte[] bytes = this.eventSerializer.serialize(msgWrap); try { Connection connection = activeMQConnectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(session.createQueue(topic)); producer.setDeliveryMode(DeliveryMode.PERSISTENT); BytesMessage bytesMessage = session.createBytesMessage(); bytesMessage.writeBytes(bytes); producer.send(bytesMessage); producer.close(); connection.close(); session.close(); } catch (JMSException e) { e.printStackTrace(); } } private void init() { new Thread(() -> { try { consume(beforeTopic, (byte[] bytes) -> { MessageWrap remoteMsgWrap = eventSerializer.deserialize(bytes); receivedBeforeEventMessage(remoteMsgWrap); //这里很重要,必须调用 }); } catch (Exception e) { e.printStackTrace(); } }).start(); new Thread(() -> { try { consume(afterTopic, (byte[] bytes) -> { MessageWrap remoteMsgWrap = eventSerializer.deserialize(bytes); receivedAfterEventMessage(remoteMsgWrap); //这里很重要,必须调用 }); } catch (Exception e) { e.printStackTrace(); } }).start(); } private void consume(String topic, Consumer<byte[]> callback) throws Exception { Connection connection = this.activeMQConnectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(topic); MessageConsumer consumer = session.createConsumer(destination); while (true) { Message message = consumer.receive(); if (null == message) break; if (message instanceof BytesMessage) { BytesMessage bytesMessage = (BytesMessage) message; try { int byteSize = (int) bytesMessage.getBodyLength(); byte[] bytes = new byte[byteSize]; bytesMessage.readBytes(bytes); callback.accept(bytes); } catch (JMSException e) { e.printStackTrace(); } } } consumer.close(); session.close(); connection.close(); } } 以上范例完整代码可在源码 test 中查阅, 源码地址:https://gitee.com/zkpursuit/kaka-core/tree/master/src/test/java/kaka/test

资源下载

更多资源
Mario

Mario

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

Spring

Spring

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

Sublime Text

Sublime Text

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册