首页 文章 精选 留言 我的

精选列表

搜索[通用人工智能],共10006篇文章
优秀的个人博客,低调大师

Solon Flow Helloworld(通用流编排框架)

探索视频: 1、新建项目 可以用Solon Initializr生成一个模板项目。新建项目之后,添加依赖 <dependency> <groupId>org.noear</groupId> <artifactId>solon-flow</artifactId> </dependency> 2、添加配置 添加应用配置: solon.flow: - "classpath:flow/*.yml" 添加流处理配置(支持 json 或 yml 格式),例:flow/demo1.chain.yml id: "c1" layout: - { id: "n1", type: "start", link: "n2"} - { id: "n2", type: "activity", link: "n3", task: "System.out.println(\"hello world!\");"} - { id: "n3", type: "end"} 示意图: 3、代码应用 注解模式 import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; import org.noear.solon.core.bean.LifecycleBean; import org.noear.solon.flow.FlowEngine; @Component public class DemoCom implements LifecycleBean { @Inject private FlowEngine flowEngine; @Override public void start() throws Throwable { flowEngine.eval("c1"); } } 原生 Java 模式 import org.noear.solon.flow.FlowEngine; FlowEngine engine = FlowEngine.newInstance(); //加载链配置 engine.load("classpath:flow/*"); //执行 engine.eval("c1");

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

loginsight 2.0.0 发布,通用日志分析工具

看日志不方便、思路混乱,让我开始了创作loginsight的旅程。截止v1.5.0累积获得¥200余的赞助,让我看到了这款工具继续前行的意义。 时隔数月,经两稿的代码架构设计,v2.0.0终于完成。 更新日志 多标签页支持:可以在一个窗口内同时查看多个日志了。 多个过滤窗支持:可以同时查看多个过滤词的过滤结果 嵌套过滤支持:可以对过滤窗的内容再次指定关键词过滤 全新解析机制:为了修复一些莫名其妙的问题,彻底重写了底层的文件解析机制 多线程加速:充分发挥机器性能,走出“单核”困境 上线了官网:www.loginsight.top 开发计划 这次重构,为将来扩展新功能带来了便捷。一些大的开发计划如下: 支持更多的日志源:如直接打开服务器上日志、打开adb日志、显示后台进程日志等待 时间线功能增强:分组、增强和日志窗口的融合、导出前可调序、涂鸦等 日志格式化高亮 智能分析、领域分析 开源困境是个人开发者之殇。想法很多,时间很少;喝彩很多,支持很少。 为了能更好的发展这个开源项目,我决定开启商业版计划,新功能将在商业版上优先支持,并延后一段时间同步到开源版本上。视具体情况,可能会保留一些商业版的专属功能。感谢支持🙏🏻

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

MyBatis-Plus 通用查询工具类

mybatis-plus简称MP是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网 。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。 下面是在MP为基础封装了一个查询类,实现了如果需要增加查询条件只需在前端修改即可。 查询工具 SearchModel public class SearchModel<T> { private Integer pageIndex; private Integer pageSize; private List<Field> fields; private String orderField; private boolean isAsc; public IPage<T> getPage() { IPage<T> page = new Page<>(pageIndex, pageSize); if (!StringUtil.isEmptyOrNull(orderField)) { OrderItem orderItem = new OrderItem(); orderItem.setAsc(isAsc); orderItem.setColumn(orderField); page.orders().add(orderItem); } return page; } public QueryWrapper<T> getQueryModel() { QueryWrapper<T> queryWrapper = new QueryWrapper<>(); for (Iterator iter = this.fields.iterator(); iter.hasNext(); ) { Field field = (Field) iter.next(); switch (field.getQueryMethod()) { case eq: queryWrapper.eq(true, field.getName(), field.getValue()); break; case like: queryWrapper.like(true, field.getName(), field.getValue()); } } if (!StringUtil.isEmptyOrNull(orderField)) { queryWrapper.orderBy(true, isAsc, orderField); } return queryWrapper; } } Field public class Field { public Field(String name, Object value) { this.name = name; this.value = value; this.queryMethod = QueryMethod.eq; } public Field(String name, Object value, QueryMethod queryMethod) { this.name = name; this.value = value; this.queryMethod = queryMethod; } private String name; private Object value; private QueryMethod queryMethod; } QueryMethod public enum QueryMethod { eq, like } 调用示例 { "fields": [ { "value": "v", "name": "project_code", "queryMethod": "eq" }, { "name": "type", "queryMethod": "like", "value": "b" }, { "name": "id", "queryMethod": "like", "value": "a" } ], "pageIndex": 1, "pageSize": 8, "orderField": "type", "isAsc": "false" } 在api中传入上面的json对象即可完成一个查询服务,查询条件通过前端传入的字段控制 BaseService IBaseService public interface IBaseService<T> { T save(T entity) throws Exception; boolean saveBatch(Collection<T> entityList); // TableId 注解存在更新记录,否插入一条记录 boolean saveOrUpdate(T entity); // 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法 boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper); // 批量修改插入 boolean saveOrUpdateBatch(Collection<T> entityList); // 根据 entity 条件,删除记录 boolean remove(Wrapper<T> queryWrapper); // 根据 ID 删除 boolean removeById(Serializable id); // 根据 columnMap 条件,删除记录 boolean removeByMap(Map<String, Object> columnMap); // 删除(根据ID 批量删除) boolean removeByIds(Collection<? extends Serializable> idList); List<T> list(); // 查询列表 List<T> list(SearchModel<T> searchModel); // 查询(根据ID 批量查询) Collection<T> listByIds(Collection<? extends Serializable> idList); // 查询(根据 columnMap 条件) Collection<T> listByMap(Map<String, Object> columnMap); // 翻页查询 IPage<T> page(SearchModel<T> searchModel); T selectById(Serializable id); T selectOne(Wrapper<T> queryWrapper); } BaseServiceImpl public class BaseServiceImpl<M extends BaseMapper<T>, T> implements IBaseService<T> { @Autowired private M baseMapper; @Override public T save(T entity) throws Exception { baseMapper.insert(entity); return entity; } @Transactional(rollbackFor = RuntimeException.class) @Override public boolean saveBatch(Collection<T> entityList) { Integer size = entityList.size(); for (T entity : entityList) { baseMapper.insert(entity); size++; } return size == entityList.size(); } @Override public boolean saveOrUpdate(T entity) { int rs = baseMapper.updateById(entity); if (rs > 0) return true; return baseMapper.insert(entity) > 0; } @Override public boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper) { return false; } @Transactional(rollbackFor = RuntimeException.class) @Override public boolean saveOrUpdateBatch(Collection<T> entityList) { for (T entity : entityList) { saveOrUpdate(entity); } return true; } @Override public boolean remove(Wrapper<T> queryWrapper) { return baseMapper.delete(queryWrapper) > 0; } @Override public boolean removeById(Serializable id) { return baseMapper.deleteById(id) > 0; } @Override public boolean removeByMap(Map<String, Object> columnMap) { return baseMapper.deleteByMap(columnMap) > 0; } @Override public boolean removeByIds(Collection<? extends Serializable> idList) { return baseMapper.deleteBatchIds(idList) > 0; } @Override public List<T> list() { return baseMapper.selectList(new QueryWrapper<T>()); } @Override public List<T> list(SearchModel<T> searchModel) { return baseMapper.selectList(searchModel.getQueryModel()); } @Override public Collection<T> listByIds(Collection<? extends Serializable> idList) { return baseMapper.selectBatchIds(idList); } @Override public Collection<T> listByMap(Map<String, Object> columnMap) { return baseMapper.selectByMap(columnMap); } @Override public IPage<T> page(SearchModel<T> searchModel) { return baseMapper.selectPage(searchModel.getPage(), searchModel.getQueryModel()); } @Override public T selectById(Serializable id) { return baseMapper.selectById(id); } @Override public T selectOne(Wrapper<T> queryWrapper) { return baseMapper.selectOne(queryWrapper); } } MP实现了mapper层基础的CRUD方法,这里把一些常用的service层的方法整理了一下,又减少了一些代码量 代码地址 使用示例

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

Android通用标题栏组合控件

由于项目中经常用到此种组合控件,就封装了下,具体效果看下图,老司机可以绕道哈! 一、主要功能 支持左右图标动态设置 支持左右、中间文字动态修改 支持字体大小、颜色修改 支持左右图标,左中右文字隐藏显示 支持左右图标和文案的点击监听 二、基本使用方式 <com.example.android.customvView.CustomNavigatorBar android:id="@+id/customView" android:layout_width="match_parent" android:layout_height="wrap_content" app:leftImage="@drawable/leftarrow" app:rightImage="@drawable/rightarrow" app:leftImageVisiable="true" app:rightImageVisible="true" app:leftText="左边" app:rightText="右边" app:midText="标题" app:midTextFontColor="#ffffff" app:leftTextColor="#ffffff" app:rightTextColor="@color/colorAccent" app:titleBarBackground="@color/colorPrimary" app:midTextFontSize="18px" app:leftTextVisibale="true" app:rightTextVisible="true" app:leftTextFontSize="16px" app:rightTextFontSize="16px" /> 三、基本属性介绍 属性名 属性说明 属性值 titleBarBackground 标题栏背景色 color,reference,默认为white leftImage 左边图片 reference leftImageVisiable 左边图片是否可见 boolean,默认为true,显示控件 leftText 左边文案 string,reference leftTextVisibale 左边文案是否可见 boolean,默认为true,显示控件 leftTextFontSize 左边文案字体大小 dimension,reference,默认为16sp leftTextColor 左边文案字体颜色 color,reference midText 中间文案 string,reference midTextVisiable 中间文案是否可见 boolean,默认为true,显示控件 midTextFontSize 中间文案字体大小 dimension,reference,默认为18sp midTextFontColor 中间文案字体颜色 color,reference rightText 右边文案 color,reference rightTextVisible 右边文案是否可见 boolean,默认为true,显示控件 rightTextFontSize 右边文案字体大小 dimension,reference,默认为16sp rightTextColor 右边文案字体颜色 color,reference rightImage 右边图片 reference rightImageVisible 右边图片是否可见 boolean,默认为true,显示控件 四、组合控件类 五、attrs.xml <?xmlversion="1.0"encoding="utf-8"?> <resources> <declare-styleablename="CustomNavigatorBar"> <attrname="titleBarBackground"format="reference|color"/> <attrname="leftImage"format="reference"/> <attrname="leftImageVisiable"format="boolean"/> <attrname="leftText"format="string|reference"/> <attrname="leftTextVisibale"format="boolean"/> <attrname="leftTextFontSize"format="dimension|reference"/> <attrname="leftTextColor"format="color|reference"/> <attrname="midText"format="string|reference"/> <attrname="midTextVisiable"format="boolean"/> <attrname="midTextFontSize"format="dimension|reference"/> <attrname="midTextFontColor"format="color|reference"/> <attrname="rightText"format="string|reference"/> <attrname="rightTextVisible"format="boolean"/> <attrname="rightTextFontSize"format="dimension|reference"/> <attrname="rightTextColor"format="color|reference"/> <attrname="rightImage"format="reference"/> <attrname="rightImageVisible"format="boolean"/> </declare-styleable> </resources> 六、组合控件布局(custom_title_bar.xml) 为什么使用merge,因为组合控件已经extends RelativeLayout,如果根布局还是用viewGroup的话,会使布局重复嵌套,影响View的绘制性能; 七、具体使用 CustomNavigatorBarcustomNavigatorBar=(CustomNavigatorBar)findViewById(R.id.customView); /** *第一种监听的具体实现 */ customNavigatorBar.setLeftImageOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewview){ Toast.makeText(MainActivity.this,"left",Toast.LENGTH_SHORT).show(); } }); /** *第二种监听的具体实现 */ customNavigatorBar.addViewClickListener(newCustomNavigatorBar.OnCustomClickListener(){ @Override publicvoidonClickListener(ViewrootView){ switch(rootView.getId()){ caseR.id.right_image: Toast.makeText(MainActivity.this,"right_imageisclicked",Toast.LENGTH_SHORT).show(); break; caseR.id.left_image: Toast.makeText(MainActivity.this,"left_imageisclicked",Toast.LENGTH_SHORT).show(); break; } } }); 作者:王露 来源:51CTO

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

15 个 Android 通用流行框架大全

缓存 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库 图片处理 Picasso-transformations 一个为Picasso提供多种图片变换的库 Glide-transformations 一个为Glide提供多种图片变换的库 Android-gpuimage 基于OpenGL的Android过滤器 网络请求 Android Async HTTP Android异步HTTP库 AndroidAsync 异步Socket,HTTP(客户端+服务器),WebSocket,和socket.io库。基于NIO而不是线程。 OkHttp 一个Http与Http/2的客户端 Retrofit 类型安全的Http客户端 Volley Google推出的Android异步网络请求框架和图片加载框架 网络解析 Gson 一个Java序列化/反序列化库,可以将JSON和java对象互相转换 Jackson Jackson可以轻松地将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象 Fastjson Java上一个快速的JSON解析器/生成器 HtmlPaser 一种用来解析单个独立html或嵌套html的方式 Jsoup 一个以最好的DOM,CSS和jQuery解析html的库 数据库 OrmLite JDBC和Android的轻量级ORM java包 Sugar 用超级简单的方法处理Android数据库 GreenDAO 一种轻快地将对象映射到SQLite数据库的ORM解决方案 ActiveAndroid 以活动记录方式为Android SQLite提供持久化 SQLBrite SQLiteOpenHelper 和ContentResolver的轻量级包装 Realm 移动数据库:一个SQLite和ORM的替换品 依赖注入 ButterKnife 将Android视图和回调方法绑定到字段和方法上 Dagger2 一个Android和java快速依赖注射器。 AndroidAnotations 快速安卓开发。易于维护 RoboGuice Android平台的Google Guice 图表 WilliamChart 创建图表的Android库 HelloCharts 兼容到API8的Android图表库 MPAndroidChart 一个强大的Android图表视图/图形库 后台处理 Tape 一个轻快的,事务性的,基于文件的FIFO的库 Android Priority Job Queue 一个专门为Android轻松调度任务的工作队列 事件总线 EventBus 安卓优化的事件总线,简化了活动、片段、线程、服务等的通信 Otto 一个基于Guava的增强的事件总线 响应式编程 RxJava JVM上的响应式扩展 RxJavaJoins 为RxJava提供Joins操作 RxAndroid Android上的响应式扩展,在RxJava基础上添加了Android线程调度 RxBinding 提供用RxJava绑定Android UI的API Agera Android上的响应式编程 Log框架 Logger 简单,漂亮,强大的Android日志工具 Hugo 在调试版本上注解的触发方法进行日志记录 Timber 一个小的,可扩展的日志工具 测试框架 Mockito Java编写的Mocking单元测试框架 Robotium Android UI 测试 Robolectric Android单元测试框架 Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等 调试框架 Stetho 调试Android应用的桥梁,使得可以利用Chrome开发者工具进行调试 性能优化 LeakCanary 内存泄漏检测工具 ACRA Android应用程序崩溃报告 文章转载自 开源中国社区[http://www.oschina.net]

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

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

用户登录
用户注册