首页 文章 精选 留言 我的

精选列表

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

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

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

.NET应用架构设计:原则、模式与实践 目录预览

新书目录: 前言 第一部分 架构与设计的原则和模式 第1章 架构与设计的流程和核心概念/2 1.1 正确认识软件架构/2 1.1.1 什么是架构/2 1.1.2 架构师的职责/3 1.1.3 架构设计/6 1.1.4 架构设计的优点/8 1.2 正确理解设计的含义/11 1.2.1 设计的重要性/12 1.2.2 架构和设计的关系/12 1.3 架构设计中的重要概念/14 1.3.1 Tier和Layer/14 1.3.2 架构与框架/15 1.3.3 架构与模式/15 1.4 本章小结/16 第2章 模式、设计原则和方法/17 2.1 设计原则与软件设计/17 2.1.1 设计原则简述/17 2.1.2 设计原则实战/18 2.2 设计模式/23 2.2.1 设计模式简介/23 2.2.2 正确使用设计模式/25 2.2.3 设计模式实战/26 2.3 企业应用架构模式/31 2.3.1 什么是企业架构/31 2.3.2 什么是企业级开发/31 2.3.3 再议架构设计和模式/32 2.3.4 企业架构模式介绍/33 2.4 企业架构模式实战/34 2.5 设计方法/38 2.5.1 测试驱动开发/38 2.5.2 领域驱动开发/39 2.5.3 行为驱动开发/39 2.6 本章小结/39 第二部分 架构与设计的方法和最佳实践 第3章 架构分层/42 3.1 反模式项目实例/42 3.2 分层设计/45 3.2.1 正确理解分层/45 3.2.2 常见的分层架构设计/46 3.2.3 N-Tier架构/52 3.2.4 N-Tier架构需要考虑的因素/52 3.3 从重构到分层/56 3.3.1 业务层设计实战/58 3.3.2 数据访问层设计实战/62 3.3.3 服务层设计实战/63 3.3.4 显示层设计实战/66 3.4 本章小结/69 第4章 业务层设计/70 4.1 业务层组织模式剖析/70 4.1.1 Transaction Script模式与实战/70 4.1.2 Active Record模式与实战/72 4.1.3 Domain Model模式与实战/78 4.1.4 Anemic Domain Model模式与实战/90 4.1.5 业务层组织模式比较/91 4.2 业务层常用设计模式解析及实战/92 4.2.1 工厂方法模式/92 4.2.2 装饰者模式/95 4.2.3 模板方法模式/102 4.2.4 状态模式/104 4.2.5 策略模式/109 4.2.6 模板方法模式、状态模式、策略模式的比较/109 4.3 业务层常用的企业架构模式及实战/113 4.4 模式联合实战/115 4.4.1 需求规格模式/115 4.4.2 组合模式/116 4.5 业务层常用的设计原则及实战/123 4.6 本章小结/126 第5章 服务层设计/127 5.1 服务层详解/127 5.1.1 服务层的由来/127 5.1.2 服务层的职责是什么/130 5.1.3 服务层的必要性/130 5.2 服务层常用设计模式解析/131 5.2.1 外观模式/131 5.2.2 远程外观模式/133 5.2.3 数据传输对象模式/135 5.3 SOA介绍/136 5.3.1 SOA用途/136 5.3.2 SOA原则/139 5.3.3 服务设计原则/140 5.3.4 服务解惑/142 5.3.5 服务操作设计原则/143 5.3.6 服务粒度介绍/144 5.4 服务层常用消息模式解析/146 5.4.1 文档消息模式与请求-响应模式/146 5.4.2 预约保留模式/147 5.4.3 等幂模式/148 5.5 SOA实战——WCF实现/149 5.5.1 系统分析/149 5.5.2 业务层实战/151 5.5.3 数据层实战/152 5.5.4 服务层实战/155 5.5.5 代理层实战/160 5.5.6 显示层实战/162 5.6 本章小结/163 第6章 数据访问层设计/164 6.1 数据访问层简述/164 6.2 数据访问层的设计策略/165 6.2.1 仓储模式/165 6.2.2 数据访问对象模式/166 6.3 数据访问层常用模式与原则解析/166 6.3.1 工作单元/167 6.3.2 标识映射/175 6.3.3 延迟加载/178 6.3.4 数据并发控制/182 6.3.5 查询对象/184 6.4 ORM对象关系映射/190 6.4.1 NHibernate介绍/191 6.4.2 Entity Framework介绍/191 6.5 企业级领域驱动设计项目实战/192 6.5.1 业务层的实现/192 6.5.2 服务层的实现/197 6.5.3 数据访问层的实现/203 6.5.4 显示层的实现/221 6.6 本章小结/223 第7章 数据存储层设计/224 7.1 合理选择数据存储方案/224 7.1.1 数据存储的三种方式/224 7.1.2 选择合理的数据存储方案/227 7.2 数据库架构设计/228 7.2.1 分布数据/229 7.2.2 数据拆分/229 7.2.3 读写分离/233 7.2.4 数据缓存/234 7.3 数据库设计/236 7.3.1 数据库计划/236 7.3.2 逻辑数据库设计/236 7.3.3 物理数据库设计/238 7.4 SQL Server数据库性能瓶颈分析与解决方案/240 7.4.1 缺失索引的瓶颈分析与解决方案/240 7.4.2 昂贵查询的瓶颈分析与解决方案/255 7.4.3 数据库碎片的瓶颈分析与解决方案/259 7.5 本章小结/261 第8章 显示层设计/262 8.1 MVP模式的原理与实战/262 8.1.1 MVP模式实战(ASP.NET实现)/263 8.1.2 MVP模式经验谈/269 8.1.3 MVP模式之高级话题/276 8.2 前端控制器模式的原理与实战/283 8.2.1 前端控制器模式介绍/283 8.2.2 深入浅出命令模式/284 8.2.3 前端控制器模式实战/287 8.3 MVC模式的原理与实战/289 8.3.1 深入浅出MVC模式/290 8.3.2 MVC模式之高级话题/297 8.3.3 MVC模式实战——对ASP.NET MVC源码进行分析/298 8.4 PM模式的原理与实战/313 8.4.1 PM模式的解析/313 8.4.2 PM模式实战/316 8.5 MVVM模式的原理与实战/324 8.5.1 MVVM模式介绍/324 8.5.2 MVVM模式深度剖析/325 8.5.3 MVVM模式高级话题/337 8.6 本章小结/342 第三部分 .NET应用的架构与设计实战 第9章 IT创业产品互推平台的项目背景与功能介绍/344 9.1 IT创业产品互推平台背景/344 9.2 SNS功能介绍/344 9.2.1 用户管理/345 9.2.2 个人信息管理/346 9.2.3 软件展示功能/347 9.2.4 好友功能/348 9.2.5 站内信息功能/349 9.2.6 多媒体文件管理/350 9.2.7 博客/351 9.2.8 用户群/353 9.2.9 微博/354 9.2.10 共享功能/355 9.2.11 论坛/355 9.2.12 活动/356 9.2.13 投票/358 9.2.14 页面布局定制/359 9.2.15 评级/359 9.3 本章小结/360 第10章 IT创业产品互推平台架构设计/361 10.1 分层设计/361 10.1.1 逻辑分层的总体设计/361 10.1.2 通用功能设计/362 10.1.3 业务层设计/363 10.1.4 数据持久层设计/364 10.1.5 显示层设计/364 10.2 部署设计/365 10.2.1 单服务器部署/365 10.2.2 多服务器部署/365 10.3 文件存储的设计/367 10.4 基础类库的设计/369 10.4.1 缓存/369 10.4.2 配置读取/375 10.4.3 邮件发送/376 10.4.4 日志记录/378 10.4.5 辅助类的实现/382 10.5 本章小结/383 第11章 IT创业产品互推平台用户管理/384 11.1 用户管理功能分析/384 11.1.1 用户注册/384 11.1.2 用户登录/384 11.1.3 找回密码/386 11.1.4 激活账户/386 11.1.5 删除用户/386 11.1.6 更新用户/387 11.1.7 查询用户/387 11.2 用户管理接口的定义/390 11.2.1 服务层实现定义/390 11.2.2 业务模型定义/392 11.2.3 数据访问层的接口定义/393 11.3 用户管理的实现/393 11.3.1 服务层实现/393 11.3.2 业务层实现/400 11.3.3 数据访问层实现/403 11.3.4 显示层实现/404 11.4 本章小结/406 当当网: http://product.dangdang.com/product.aspx?product_id=22574513 京东地址: http://book.360buy.com/10893935.html 卓越地址: http://www.amazon.cn/mn/dp/B006NS2N0S 本文转自yanyangtian51CTO博客,原文链接:http://blog.51cto.com/yanyangtian/742414,如需转载请自行联系原作者

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

2015年RSA大会预览:过度关心物联网合理吗?

IT安全专业人士的最大年度盛典即将举行,虽然今年最受关注的话题仍可能是物联网安全,但专家认为企业更应该专注其他话题。 2015年RSA大会将于4月20日到24日在旧金山的Moscone中心举行,其中将有近十几个研讨会以物联网(IoT)为重点。由于物联网涵盖了传统上没有被赋予互联网连接的各种设备,很多人认为保护IoT是企业面临的越来越迫切的问题。 然而,451研究所安全研究主管Wendy Nather表示,现在而言,IoT可能只不过是没有参与IoT设备实际制造的信息安全专业人员好奇的事物,并指出,威胁情况将可能成为更重要的话题。 “RSA收到很多围绕威胁情报主题提交的文件,”Nather称,“所以我们预计会在研讨会和展览会中看到相关内容,特别是因为现在几乎所有供应商都声称自己有一定的威胁情报技术。” 专家发现,优质的威胁情报可以提高企业SIEM中的事件监测、警告分流和威胁追踪。2015年RSA大会将会有涵盖共享威胁情报(TI)的价值、使用现成工具提高TI以及如何快速改进你的威胁情报功能的研讨会。 Resilient Systems公司首席技术官Bruce Schneier认为,另一个与威胁情报相关且值得关注的话题是事件响应,这被认为是企业的一个通病。很多专家认为企业安全范式必须从预防(即接受泄漏事故是不可避免的)转向快速的威胁检测和响应功能。 Schneier还认为索尼影业遭受攻击等热门新闻会让今年RSA大会的与会者开始关注民族国家攻击和攻击属性,同时Nather称,企业应该更好地专注检测内部威胁。 “用户监控和内部欺诈检测也是首要考虑因素,”Nather称,“这是作为在外部检测泄漏事故的所有工作的补充。” 议程亮点 2015年RSA大会的与会者数量可能无法超过去年创造的历史新高。2014年RSA大会共有超过28500名与会者、410个研讨会以及总共604位演讲者。在会议方面,2015年RSA的规模会略小于2014年,只有350个研讨会;然而,总共列出有667位演讲者。 揭开本次会议序幕的将是Amit Yoran,他于2014年10月成为EMC安全子公司RSA的总裁。Yoran的主题演讲也将标志着RSA高管的重大变化,因为这将是十年来第一次由Art Coviello以外的人来揭开会议序幕。 RSA前执行主席兼EMC执行副总裁Coviello在2月因为健康原因出人意料地退休了,Coviello在1995年加入RSA,在2006年EMC收购RSA之前都由他担任首席执行官。Coviello的第一次RSA大会主题演讲是在2004年,并且早在1996年他就曾参与该会议。 Coviello是业界最知名最受尊敬的高管之一,在其2014年RSA大会主题演讲中,他几乎凭借一己之力扭转了公众对RSA的不好印象,他驳斥了称其公司与美国国家安全局秘密合作来削弱RSA的加密产品的指控。 其他公司高管也将进行主题演讲,这包括微软可信赖计算副总裁Scott Charney;英特尔安全事业部总经理兼高级副总裁Christopher Young;惠普公司企业安全产品总经理兼高级副总裁Art Gilliland;赛门铁克公司首席技术官兼新兴终端高级副总裁Amit Mital;以及思科公司安全业务部首席架构师兼副总裁Martin Roesch。 除了安全专业人员,还有来自以下人员的主题演讲:美国国土安全局部长Jeh Johnson;传奇游泳运动员Diana Nyad;作家Zak Ebrahim以及普利策奖获奖作家Doris Kearns Goodwin。另外,还有RSA程序委员会主席兼Blue Coat公司首席技术官Hugh Thompson对演员Alec Baldwin的采访。 特别活动 除了主题演讲、研讨会和讲座外,2015年RSA大会还让与会者可以通过参加专业会议和主体演讲来获得法律继续教育或专业继续教育学分,并且还将举办一些特别活动,包括创新沙盒大赛(Innovation Sandbox Contest)。 RSA大会Sandbox空间将会有为促进“动态学习和交流机会的” 展览。该空间将包括CSI数字犯罪实验室、现场工业控制系统演示和SANS NetWars,以测试安全专业人员的技能。 今年是创新沙盒大赛10周年纪念,该大赛的目的旨在探索“有潜力改造信息安全行业的新技术”。10位入围者将全天展示他们的技术,并在4月20日下午5点15分公布冠军,以及新增的“观众最喜爱奖”。 2015年RSA大会还将有四个学习实验室,这将针对拥有超过10年深入模拟和角色扮演经验的安全专家。这将是一场网络直播演练,其中将模拟民族国家发起的攻击、企业网络泄露事故角色扮演、网络响应战争游戏,以及实际操作培训来学习部署云计算和DevOps来提高安全性的技能。 作者:Michael Heller 来源:51CTO

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

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部分的功能。

用户登录
用户注册