首页 文章 精选 留言 我的

精选列表

搜索[高度可定制],共10014篇文章
优秀的个人博客,低调大师

dbVisitor 5.4.0 发布,高度兼容 MyBatis 的轻量 ORM 框架

介绍 dbVisitor 是一个全功能数据库访问 ORM 工具,提供对象映射、丰富的类型处理、动态 SQL、存储过程、 内置分页方言 20+、 支持嵌套事务、多数据源、条件构造器、INSERT 策略、多语句 / 多结果。并兼容 Spring 及 MyBatis 用法。 它不依赖任何其它框架,因此可以很方便的和任意一个框架整合在一起使用。 依赖 <dependency> <groupId>net.hasor</groupId> <artifactId>dbvisitor</artifactId> <version>5.4.0</version> </dependency> 不兼容更新​ 新增:SelectKeyHandler 类新增参数标识是 before 调用还是 after 调用 新增:KeySeqHolder 增加 onBefore/onAfter 方法用于标识调用阶段 优化:LambdaTemplate Map 模式下不在依赖任何数据库元信息, 至此 dbVisitor 不会查询任何数据库元信息数据 优化:重写 InsertLambda 的逻辑可以有效处理 Entity 和 Map 两个模式下的差异点 移除:PhoenixDialect 方言 新增​ 新增:@BindTypeHandler 注解方便使用自定义 TypeHandler 新增:URITypeHandler、URLTypeHandler 两个 TypeHandler 及Types.DATALINK 和 Types.ROWID JDBC Type 支持 新增:h2/db2/derby/hive/hsql/impala/informix/sqllite/sqlserver/达梦/虚谷数据的关键字字典文件 新增:mapper 文件级可以配置 useDelimited 属性 新增:lambdaUpdate UpdateExecute 接口中增加一组 Condition 方法 新增:DalRegistry 增加两个 hasScope 方法,用于判断某个 scope 是否存在 新增:Lambda Delete/Insert/Select/Update for Map 支持 MappingOptions选项 优化​ 移除 dbVisitor generate 相关未完成的功能和代码 优化:升级 cobble 包版本为 4.5.4 优化:IncludeRule 逻辑使其拼出的 SQL 不在出现多余的空格 优化:lambdaUpdate/Delete/Query 兼容 tableMapping 没有匹配到任何列的极端情形 优化:Mapping 逻辑减少 TableDefaultInfo 的构建次数 优化:dtd/xsd 验证逻辑调整,entity 的 table 属性是可选的,如果省略 table 配置则实体类必须标有 @Table 注解 优化:针对 H2 2.2.220 版本的兼容性问题 优化:单元测试代码,提升覆盖率/修复测试Case问题,目前 834 个单元测试全部正常,行覆盖率提升到 77%,类覆盖率提升到 92% 优化:DalSession 在调用 createMapper 时候不必强制要求 Mapper 接口必须标记 @xxMapper 注解,它会自动探测 DalRegistry 优化:ExecuteInvocationHandler 逻辑针对接口 default 调用实现参考 mybatis 兼容 java8 和 java9 修复​ 修复:报错内容不正确,始终是空指针异常的问题(社区用户 aqnghu 贡献) 修复:lambdaInsert 当自增列配置为不参与 insert 时自增数据不回填的问题 修复:mapper 文件级 MappingOptions 不生效的问题(优先级顺序为:table -> mapper 文件级 -> 全局) 修复:Oracle 使用 InsertLambda 批量 insert 失败的问题 修复:SqlXmlForReaderTypeHandler 类无法正常工作的问题 修复:BaseMapper 接口中 updateById 会强制把 id 也带上的问题

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

Aliware直播培训新高度,赋能阿里专有云

数字化已成为政府、传统企业所公认的企业转型升级的关键,也是经济转型升级的重要内容,借助数字化可以优化企业业务流程、提高自动化水平、提升运营效率。构建企业级互联网架构正是帮助企业实现数字化的不二选择。 近日,阿里巴巴中间件事业部成功举办了主题为“Aliware赋能阿里专有云”的线上培训活动,本次活动主要面向阿里专有云的技术支持团队,就同学们密切关心的企业级互联网架构产品的运维问题进行了多维度的赋能和交流。 来自专有云的TAM、AE、TSG、新方舟、交付部署、二线支持,以及中间件文档、合作伙伴讲师等多个团队参加了培训,线上参与人数121人,点赞数高达7000多个,现场也有近10名同学参与。 本次培训由阿里云TAM法喜组织,邀请到了阿里巴巴中间件技术架构师宇升,主讲《EDAS运维赋能》,并邀请了中间件技术架构师宁辉和中间件EDAS高级技术专家

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

Magisk 24.3 发布,定制 Android 的开源软件

Magisk 是一套开放源代码的 Android(5.0 以上版本)自定义工具套组,内置了 Magisk Manager(图形化管理界面)、Root、启动脚本、SElinux 补丁和启动时认证 /dm-verity/ 强制加密移除功能。Magisk 同时提供了在无需修改系统文件的情况下更改 /system 或 /vendor 分区内容的接口,利用与 Xposed 类似的模块系统,开发者可以对系统进行修改或对所安装的软件功能进行修改等。 Magisk 24.3 发布,更新内容如下: [General] 停止使用 getrandom 系统调用 [Zygisk] 更新 API 至 v3,为 AppSpecializeArgs 添加新字段 [App] 改进应用重新打包的安装工作流程 [MagiskSU] 修复缓冲区溢出问题 [MagiskSU] 修正所有者管理的多用户超级用户设置 [MagiskSU] 修正使用 su -c <cmd> 时的命令记录 [MagiskSU] 防止 su 请求无限期阻塞 [MagiskBoot] 修复 lz4_lg 压缩 [DenyList] 允许定位以系统 UID 身份运行的进程 [Zygisk] 改进 Zygisk 加载机制 [Zygisk] 修复应用程序 UID 跟踪 [Zygisk] 修复在 zygote 中设置的不正确的 umask [App] 修复 BusyBox 执行测试 [App] 改进存根加载机制 [App] 主要的应用升级流程改进 [General] 改进命令行错误处理和信息传递 更多详情可查看:https://github.com/topjohnwu/Magisk/releases

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

vlayout 1.2.31 发布,阿里 LayoutManager 定制化布局

vlayout 1.2.31 发布了,vlayout(VirtualLayout)是阿里开源的一个针对 RecyclerView 的 LayoutManager 扩展,主要提供一整套布局方案和布局间的组件复用。 此版本更新内容如下: 修复粘性监听器(sticky listener)在无效状态下传递 null 的问题 项目更改不应清除布局信息,已修复 修复粘性监听器回调不正确的问题 避免使用可能导致类强制转换异常的 arrayMap 更新说明及下载地址

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

Java内存缓存-通过Map定制简单缓存

缓存 在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。 为什么要用缓存 场景 在Java应用中,对于访问频率高,更新少的数据,通常的方案是将这类数据加入缓存中,相对从数据库中读取,读缓存效率会有很大提升。 在集群环境下,常用的分布式缓存有Redis、Memcached等。但在某些业务场景上,可能不需要去搭建一套复杂的分布式缓存系统,在单机环境下,通常是会希望使用内部的缓存(LocalCache)。 方案 基于JSR107规范自研 基于ConcurrentHashMap实现数据缓存 JSR107规范目标 为应用程序提供缓存Java对象的功能。 定义了一套通用的缓存概念和工具。 最小化开发人员使用缓存的学习成本。 最大化应用程序在使用不同缓存实现之间的可移植性。 支持进程内和分布式的缓存实现。 JSR107规范核心概念 Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。 CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。 CacheManager定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于- CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有。 Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个Cache仅被一个CacheManager所拥有。 Entry是一个存储在Cache中的key-value对。 每一个存储在Cache中的条目有一个定义的有效期,即Expiry Duration。一旦超过这个时间,条目为过期的状态。一旦过期,条目将不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy设置。 小例子 使用Map来实现一个简单的缓存功能 MapCacheDemo.java package me.xueyao.cache.java; import java.lang.ref.SoftReference; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; /** * @author simon * 用map实现一个简单的缓存功能 */ public class MapCacheDemo { /** * 使用 ConcurrentHashMap,线程安全的要求。 * 我使用SoftReference <Object> 作为映射值,因为软引用可以保证在抛出OutOfMemory之前,如果缺少内存,将删除引用的对象。 * 在构造函数中,我创建了一个守护程序线程,每5秒扫描一次并清理过期的对象。 */ private static final int CLEAN_UP_PERIOD_IN_SEC = 5; private final ConcurrentHashMap<String, SoftReference<CacheObject>> cache = new ConcurrentHashMap<>(); public MapCacheDemo() { Thread cleanerThread = new Thread(() -> { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(CLEAN_UP_PERIOD_IN_SEC * 1000); cache.entrySet().removeIf(entry -> Optional.ofNullable(entry.getValue()) .map(SoftReference::get) .map(CacheObject::isExpired) .orElse(false)); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }); cleanerThread.setDaemon(true); cleanerThread.start(); } public void add(String key, Object value, long periodInMillis) { if (key == null) { return; } if (value == null) { cache.remove(key); } else { long expiryTime = System.currentTimeMillis() + periodInMillis; cache.put(key, new SoftReference<>(new CacheObject(value, expiryTime))); } } public void remove(String key) { cache.remove(key); } public Object get(String key) { return Optional.ofNullable(cache.get(key)).map(SoftReference::get).filter(cacheObject -> !cacheObject.isExpired()).map(CacheObject::getValue).orElse(null); } public void clear() { cache.clear(); } public long size() { return cache.entrySet().stream().filter(entry -> Optional.ofNullable(entry.getValue()).map(SoftReference::get).map(cacheObject -> !cacheObject.isExpired()).orElse(false)).count(); } /** * 缓存对象value */ private static class CacheObject { private Object value; private long expiryTime; private CacheObject(Object value, long expiryTime) { this.value = value; this.expiryTime = expiryTime; } boolean isExpired() { return System.currentTimeMillis() > expiryTime; } public Object getValue() { return value; } public void setValue(Object value) { this.value = value; } } } 代码测试类MapCacheDemoTests.java package me.xueyao.cache.java; public class MapCacheDemoTests { public static void main(String[] args) throws InterruptedException { MapCacheDemo mapCacheDemo = new MapCacheDemo(); mapCacheDemo.add("uid_10001", "{1}", 5 * 1000); mapCacheDemo.add("uid_10002", "{2}", 5 * 1000); mapCacheDemo.add("uid_10003", "{3}", 5 * 1000); System.out.println("从缓存中取出值:" + mapCacheDemo.get("uid_10001")); Thread.sleep(5000L); System.out.println("5秒钟过后"); System.out.println("从缓存中取出值:" + mapCacheDemo.get("uid_10001")); // 5秒后数据自动清除了~ } }

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

电商APP定制开发要注意什么?

开发一款电商App软件有什么需要注意的?首先我们得明白二个问题 第一个问题:App为什么这么热,App开发工程师大概的薪资又是多少? 【小编】:APP的创富神话远远超越当年的网站,不少APP一夜成名。中国市场有个特色,什么生意好做,大家就开始扎堆。 应该说,国内APP最火的时候应该是在2011年底到2013年初。那个时候,不少「土豪」们争相投资各种APP或APP开发团队,那个时候,好几个大老板都有意向投资入股甚至收买我们公司,也有投资项目的,我们也就是在那个时候,加入了一个游戏化社交软件的合作。 这是资本市场的背景,另外,那段时间也是苹果手机风靡全球的时候,因此开发苹果版APP是最热门的需求,因此也催生了一批IOS开发工程师。大学裡基本没有教授这门技能,也鲜有相关的训练机构,大部分的工程师都是靠自学成长。但是苹果体系的封闭性致使了学习IOS开发的本钱比安卓的要高许多,至少手头要有一台能装有苹果体系的电脑,还要有一个苹果手机或平板做测试,申请一个开发者账号也需要好几百块,这些加起来都将近一万多,不是一般人能接受得起的,因此,懂IOS开发的人也就少了。 在这种求大于供的情况下,IOS开发工程师的薪酬像泡泡一样越吹越大,最疯狂的时候,一个稍微懂点IOS的程序员就能要个7、8千的月薪,编出来的软件基本用不了,由于经验完全不足。一方面资本的推高,另一方开发本钱的高企,直接致使了APP开发的费用水涨船高。安卓APP由于本身採用的是JAVA语言,又是开放体系,许多学校和训练机构都相继开设了课程,大量的流水线式的产出安卓开发工程师,但这并不致使开发本钱的降低,反而,由于三星等国内外手机厂家对安卓体系的大力改造和开展,安卓体系的使用场景越来越广泛,市场需求旺盛,所以工程师的薪酬并不比IOS的低许多。 也就是说,1是中国人做事喜欢扎堆,见什么火就跟什么,催生市场需求量很大;2是App开发基本无材料本钱,主要还是来自人力本钱,那第二个问题随之而来:实际开发一个App大概要多少钱呢? 【小编】:假如真正想做一款好的APP,那就得考虑IOS和Android两个平台各做一个APP,同时挑选一个好的开发团队,这个很重要,由于差的团队做出来的产品基本会有许多疑问。一个好的APP项目至少需要一个项目经理、一个UI设计师,一个IOS开发工程师和一个安卓开发工程师,另外假如需要后台数据交互的,还需要一个后台开发工程师,规范的话还需要一个测试工程师。这些人员的月薪加上来已经超越4、5万人民币了,对于简单的APP,设计、开发加上测试的时间大概需要6到8周,複杂一些的需要8到12周。这么算下来,一个简单APP的开发费用就需要10~15万,稍微複杂些的需要15~20万,这裡包括两个版本的APP。当然这个规模不是很确切的,有些难度较大的或者前后台複杂程度高的体系,价格也会更高。特别是做游戏的,本钱也许会是这个预算的好几倍。 有没有人觉得你们开发的价格实在太高了,就手机里一个破软件,需要这么多钱吗? 不少行外人不理解,不就是在手机上做个相似网站的东西,怎么也许需要十几万呢。对这些有疑问的人,我都会把上面的背景通知他,这是市场的结果,不是忽悠,也不是垄断。我们也碰到过这么的人,愣是不相信,后来他们自个组建团队开发,结果费用比当初的报价还多出两三倍。 Q:对于一个企业来说,是否有必要开发App呢? A:答案是肯定的,由于移动互联网的开展已经进入普及期。但做哪一类的APP呢?以小编多年的经验,原生态的APP,是工具类和平台类的首选;而对于普通的展示类或服务类,则能够挑选Web APP来实现。原生态APP的好处是能够实现更多的基于手机的功能,比如GPS定位,手机拍照,手机的重力感应等,并且他能够自个掌握数据和用户;但缺点是这类APP开发后推行是一个难点。因此用原生态APP作为展示推行品牌或产品的目的就变得不现实了。它只能作为工具类或平台类的挑选。 举个例子,假如企业想开发一套简单的销售管理体系,方便业务人员和管理人员对销售工作进行管理,这归于工具类,主张开发原生态APP。假如企业只是想把自个的产品展示出来或实现网上下单,那么主张用Web APP来实现就够了。 说了这么多,相信大家也对APP开发有了一定的了解。做APP已经是一个趋势,主要在于做这个APP的出发点是什么,想好了再挑选一个合适的方式,这么才能做到事半功倍。 想开发一个好的App本钱确实不低,不是一切企业都能够接受得起的。相对于App开发的本钱来说,其推行和运营本钱会更高,也有花费千万的推行费,依然砸不出可观的装置量的。也会有装置量还能够,但是活跃用户很低的,这就是产品运营上的缺失。 还有一个是App的盈利疑问,目前市面上绝大多数的App都没有很好的盈利模式,连之前资本热捧的App市场现在也很萧条。所以,在决定开发App之前一定要想好是否真的需要,还是说用来装B之用。并不是说别人有的你也一定要有,别人有癌症,你也要有吗?也并不是说别人能够做到的,你或你的团队一定也能做到,别人能够把公司带上纳斯达克,你能够吗?跟风也要适度,先要想好自个真正的核心竞争力是什么,是否真的需要这么个东西。以上就是开发一款电商App所需要注意的问题,开发一款APP真正目的是为了体现他的价值。 编辑:飞进科技-super 丹

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

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

用户登录
用户注册