首页 文章 精选 留言 我的

精选列表

搜索[首次公开募股],共10002篇文章
优秀的个人博客,低调大师

Wood,微型 Java ORM 框架(首次发版)

Wood,微型 Java ORM 框架(支持:java sql,xml sql,annotation sql;事务;缓存;监控;等...),零依赖! 特点和理念: 跨平台:可以嵌入到JVM脚本引擎(js, groovy, lua, python, ruby)及GraalVM支持的部分语言。 很小巧:0.2Mb(且是功能完整,方案丰富;可极大简化数据库开发)。 有个性:不喜欢反射(主打弱类型)、不喜欢配置(除了连接,不需要任何配置)。 其它的:支持缓存控制和跨数据库事务。 核心对象和功能: 上下文:DbContext db 四个接口:db.mapper(), db.table(), db.call(), db.sql() /** BaseMapper 用法 */ //BaseMapper 接口 db.mapperBase(User.class).selectById(1); //BaseMapper 接口,lambda 条件查询 db.mapperBase(User.class).selectList(mq->mq .whereLt(User::getGroup,1) .andEq(User::getLabel,"T")); /** Table用法 */ //增:: db.table("user").setEntity(user).insert(); db.table("user").setMap(map).insert(); db.table("user").setMap(map).insertAsCmd(); //构建查询命令(即查询语句) //删:: db.table("user").whereEq("id",2).delete(); //改:: db.table("user").set("sex",1).whereEq("id",2).update(); db.table("user").setInc("level",1).whereEq("id",2).update(); //字段自+1 //查:: db.table("user u") .innerJoin("user_ext e").onEq("u.id","e.user_id") .whereEq("u.id",1001) .selectItem("u.*,e.sex,e.label", User.class); db.table("user u") .innerJoin("user_ext e").onEq("u.id","e.user_id") .whereEq("u.id",1001) .selectAsCmd("u.*,e.sex,e.label"); //构建查询命令(即查询语句) <!-- Xml 用法 --> <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE mapper PUBLIC "-//noear.org//DTD Mapper 3.0//EN" "http://noear.org/dtd/wood-mapper.dtd"> <mapper namespace="wood_demo.xmlsql2" import="demo.model.*" baseMapper="UserModel"> <sql id="getUser" return="UserModel" remarks="获取用户信息"> SELECT * FROM user WHERE id = @{id:int} </sql> </mapper> 项目地址: https://gitee.com/noear/wood https://github.com/noear/wood

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

DevUI 11.3.0 发布:首次开放 DevUI 动效

DevUI 是一款面向企业中后台产品的开源前端解决方案,它倡导沉浸、灵活、至简的设计价值观,提倡设计者为真实的需求服务,为多数人的设计,拒绝哗众取宠、取悦眼球的设计。如果你正在开发 ToB 的工具类产品,DevUI 将是一个很不错的选择! 新增特性 新版本主要包含以下特性: 开放DevUI动效,参考扩展服务/Animations动效 time-axis组件新增交替排布、设置内容位置、自定义轴点图标、轴线样式等特性 toggle支持开关内容展示 category-search分类搜索tree类型支持单选,textInput类型模板支持dValidateRules校验, 分类搜索中保存过滤器名称输入框增加清空按钮 drawer新增直接关闭方法 quadrant-diagram象限图适配暗黑模式,象限图增加是否展示工具栏 pagination新增自动隐藏特性 Bug修复 修复了以下缺陷,包含社区提的issue和内部发现的问题。 radio修复传入对象导致id重复报错的问题 tooltip修复input变化时未刷新问题 button修复width处理异常,以及异步icon未刷新问题 category-search修复自定义模板必选为可选,修复cache未初始化导致比较重置时覆盖了value值 tree修复disableSelect设置后不应触发SelectNode treeSelect修复单选模式下的清空所有按钮未触发绑定值的变更 dataTable修复fixHead下实际高度不对,修复扩展区域初始值问题和demo展示问题,及timePicker报错问题 datePicker修复分类搜索中年份选择出错问题, 修复最下行日期在选择年月时露出的问题 nav-sprite修复样式问题和延时设置问题,解决初始化不同步的问题 timePicker修复输入长度超过2时的报错 search修复输入文字过长与清除图标显示重叠 upload修改多文件上传时自动清空文件的问题,修复oneTimeUpload的文件状态显示不正确的问题 API变更 无 感谢 @xiejay97 @yangtuantuan 的贡献。 欢迎您一起参与DevUI的开源,我们任何形式的贡献! 欢迎加DevUI小助手微信:devui-official,一起讨论组件技术和前端技术。 欢迎关注我们DevUI组件库,点亮我们的小星星: https://github.com/devcloudfe/ng-devui 也欢迎使用DevUI新发布的DevUI Admin系统,开箱即用,10分钟搭建一个美观大气的后台管理系统! 详细的 Release Notes,请参考: https://github.com/DevCloudFE/ng-devui/releases/tag/11.3.0

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

项目中首次使用DBUnit拾遗

文章目录 测试准备 测试类配置 - BusDeviceTestApp 测试类 - DeviceLogServiceTest Excel数据准备注意点 测试数据准备 Maven 包导入 Unitils额外配置(数据库连接) 参考 正文 参考 测试整合之王Unitils(单元测试系列) 正文 测试准备 测试数据准备 dev_equipment_info.xlsx - 测试数据 expected_dev_equipment_info.xlsx - 测试后数据 Excel数据准备注意点 日期/时间格式 使用 'yyyy-mm-dd hh:mm:ss’格式 每个sheet表的首行为数据表字段名称 sheet名称需要与表名完全相同,也可以使用database.tableName格式的sheet名 一个excel数据表可以同时有多个数据表 Excel最后一行数据之后,不能只是清除内容,导入时无法识别 Maven 包导入 在pom.xml的dependencies中,增加 com.github.yangjianzhouspring-boot-unitils-starter1.3.0.RELEASE Unitils额外配置(数据库连接) application-ut.properties 存放于resources下,其内容可参考 database.driverClassName=com.mysql.jdbc.Driver #此数据库连接信息 database.url=jdbc:mysql://127.0.0.1/septictank_device #此数据库连接用户名 database.userName=root #此数据库连接用户密码 database.password=123456 #此数据库连接的schema database.schemaNames=septictank_device #此数据库数据库类型:oracle/mysql/postgres等 database.dialect=mysql dataSource.beanName=druidDataSource 测试类配置 - BusDeviceTestApp packagecom.citylink.device; importcom.unitils.boot.autoconfigure.ConfigurableApplicationContextAware; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; importorg.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(basePackages={"com.citylink.device"},basePackageClasses= {ConfigurableApplicationContextAware.class,DataSourcePostProcessorExt.class}) publicclassBusDeviceTestApp{ publicstaticvoidmain(String[]args){ SpringApplication.run(BusDeviceTestApp.class,args); } } 主要实现以下功能: basePackages = {“com.citylink.device”},扫描需要注入上下文的业务bean ConfigurableApplicationContextAware.class,为测试提供上下文,以便@SpringBean,@SpringBeanByName,@SpringBeanByType等从上下文中注入bean DataSourcePostProcessorExt.class,为替换系统中原有的dataSource bean的类,如测试时一直使用系统原数据库,很有可能是相应的dataSource未被正常替换 packagecom.citylink.device; importorg.springframework.beans.BeansException; importorg.springframework.beans.factory.config.BeanPostProcessor; importorg.springframework.stereotype.Component; importorg.unitils.database.UnitilsDataSourceFactoryBean; importjavax.sql.DataSource; @Component publicclassDataSourcePostProcessorExtimplementsBeanPostProcessor{ publicDataSourcePostProcessorExt(){ } publicObjectpostProcessBeforeInitialization(Objectbean,StringbeanName)throwsBeansException{ returnbean; } publicObjectpostProcessAfterInitialization(Objectbean,StringbeanName)throwsBeansException{ if(beaninstanceofDataSource){ try{ return(newUnitilsDataSourceFactoryBean()).getObject(); }catch(Exceptionvar4){ thrownewRuntimeException("replacedatabasethrowexception,cannotcontinuetoprocess",var4); } }else{ returnbean; } } } 测试类 - DeviceLogServiceTest packagecom.citylink.device; importcom.citylink.device.pojo.Device; importcom.citylink.device.service.IDeviceService; importcom.citylink.security.common.msg.ObjectRestResponse; importcom.unitils.boot.util.UnitilsBootBlockJUnit4Cla***unner; importorg.junit.Assert; importorg.junit.Test; importorg.junit.runner.RunWith; importorg.springframework.boot.test.context.SpringBootTest; importorg.unitils.dbunit.annotation.DataSet; importorg.unitils.dbunit.annotation.ExpectedDataSet; importorg.unitils.spring.annotation.SpringBeanByType; importjava.util.List; @RunWith(UnitilsBootBlockJUnit4Cla***unner.class) @SpringBootTest(classes=BusDeviceTestApp.class) @DataSet("dev_equipment_info.xlsx") publicclassDeviceLogServiceTest{ @SpringBeanByType privateIDeviceServicedeviceService; @Test @ExpectedDataSet("expected_dev_equipment_info.xlsx") publicvoidtestSelectAll(){ ObjectRestResponseorr=deviceService.selectAll(); Assert.assertTrue(orr.isRel()); ListdeviceList=(List)orr.getData(); System.out.println("deviceList.size()="+deviceList.size()); } }

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

Windows 10 市场份额首次超过 50%

调研机构 NetMarketShare 发布了 2019 年 8 月的数据,可以看到,在微软不遗余力地推广 Windows 10 的情况下,Windows 10 终于迎来了自己的高光时刻 —— 其全球市场份额已经超过 50%。 目前 Windows 10 的市场份额为50.99%,而 Windows 7 则降至 30.44%。排在第三位的是 macOS 10.14,市场份额为 5.95%。虽然操作系统部分为微软带来了好消息,但随着 Windows 7 生命周期的结束,该公司仍需要将近 30% 的用户转化到 Windows 10。 浏览器市场方面,Microsoft Edge 和 Internet Explorer 本月的市场份额均有小幅度的上升,Microsoft Edge 由 7 月的 5.80% 上升至现在的 6.34%,Internet Explorer 则由 7.44% 上升至 7.50%。另一边,Chrome 的市场份额出现了微小的下滑,由 68.60% 下降至 67.22%。Firefox 由 8.34% 上升至 8.43%。 推荐阅读:为什么要从 Windows 7 升级到 Windows 10?

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

Spring Boot应用首次启动慢的问题

最近一个项目中,遇到了一个奇怪的现象,spring boot应用启动后,第一次访问页面总是会有大量的ajax请求pedding,然后刷新页面,大量的IOException错误: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:356) at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:815) at o

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

开源Linux 3.3内核首次融合Android代码

最新3.3版本的 Linux 内核中包括一些 Google Android 代码。这对两个开源项目都有所帮助。 Linux 内核项目主管李纳斯·托沃兹(Linus Torvalds)昨天公布最新版内核,它将两个开源世界相连。Linux 3.3 版本的内核结束了两个项目孤立的时代。 在表面之下,每一台 Andorid 手机也将成为 Linux 手机。在开发 Android 程序时,程序员一般用的是 Java 式的界面,但在一些细节方面用的是 Google 定制版 Linux,比如键盘输入、多任务等。 在将二者融合之后,如果一切顺利,将使得编程更为容易,让参与开发的各方进程更快。Google 也会受益,它可更快使用 Linux 新功能,在与主 Linux 内核同步时也更容易。 两大开源项目融合也带来一种可能:将本地 Android 程序在 Linux PC 桌面上运行。 Linux 3.3 内核是 Linux 的心脏,它被用在许多系统上,如 Debian、Red Hat、SUSE、Ubuntu 等。就在 3 个月时,Linux 3.2 才刚刚推出。 Android 使用的是高度修改的 Linux 内核,尽管如此,二者在今天之前仍是独立的 本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/811883,如需转载请自行联系原作者

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

微软开源 Soundscape,源代码 1 月公开

Soundscape 是微软于 2017 年创建的一个研究项目,其本质上是一个导航应用(iOS 平台),但与传统的导航应用程序不同,Soundscape 使用了 3D 音频提示来丰富用户对环境的认识,让用户可以以身临其境的方式感受周围环境,无需查看手机小屏幕上的指示。 例如当你行走时,Soundscape 会自动提示所经过的道路、交叉口、地标,以及用户手动标记的关键兴趣点等。 因此也能够看出,该项目是以视障人士为目标,通过这个项目,微软将探索使用基于音频的创新技术,使这些人士能够建立对周围环境更丰富的认识,让他们可以从容自在地出门游玩。 近日微软宣布,从研究角度来看 Soundscape 项目已经完成了使命,该项目将于 2023 年 1 月 3 日以开源软件的形式提供,该应用程序的源代码同样将于上述日期在 GitHub 上发布,并会附有关于如何构建和使用它的文档。 同样在 2023 年 1 月 3 日这一天,Soundscape 应用程序将无法从 App Store 下载,已经安装了它的用户将能够继续使用到 2023 年 6 月。为该应用程序提供支持的 Azure 服务也会在 2023 年 6 月停止服务。值得注意的是,由于 Soundscape 仅支持 iOS,这个开源版本也将只支持 iOS。 至于微软为什么决定将 Soundscape 作为开源项目发布呢?微软则是解释道: 随着我们研究组合的发展,结束或转移一些项目是很自然的。我们觉得社区可以从我们为 Soundscape 研究项目开发的新颖体验中受益,这就是我们将代码作为开源软件发布的原因。现在是时候将 Soundscape 研究项目转移到下一个阶段了。

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

【公开课】Kubernetes工作原理及使用

【百度云原生导读】在上一节课我们学习了 Docker 的相关基础知识,解决了应用之间的隔离机制。但是在架构上,Docker仍然是一个单机的引擎,在真实的生产环境中我们可能拥有着海量的机器,那么如何管理、调度、编排这些分布在不同机器上的容器就成为了新的问题。因此,Kubernetes 就应运而生了。 本文是基于『云原生基础知识概述及实践』系列视频课程——『Kubernetes 入门—Kubernetes工作原理及使用』进行的文字梳理,视频课程可点击【阅读原文】进行学习。 Kubernetes 的前身其实是 Google 的 Ball,2013年开源之后发展至今,已成为了开源事件部署引擎的事实标准。 本节课主要分为以下三大部分: 第一部分:Kubernetes 架构剖析 对 Kubernetes 核心组件分析。 第二部分:快速搭建 Kubernetes 集群 使用 Kubeadm 搭建 Kubernetes 环境。 第三部分:Demo 演示如何操作一个 Pod。 1. Kubernetes核心组件分析 1.1 核心概念:Pod Pod 是 Kubernetes 中最小的可部署的计算单元 这样的一组容器被“打包”到一起组成了一个Pod 并接受 Kubernetes 的调度,编排等控制逻辑。 为了让大家更好的理解“一组容器“的概念,接下来为大家详细剖析 Pod 的内部架构。 Pod 的内部架构 蓝色部分代表的是整个 Pod。其中右上角的net namespace 是 Pod 级别的 namespace,它代表了 Pod 中的所有容器。 图中有4个 Container(即:PauseContainer/Container A/Container B/Container C/),他们在创建的时候都被加入到了 namespace 当中。 那么,Pod 级别的 Container 是从哪里来的呢?从图中可以看到,真正工作的 Container 我们把它标注为 A,B,C。Pause Container 的作用相当于一个占位符。当我们创建 Pod 的时候,会首先创建一个 Pause Container。该容器创建出来的namespace,就相当于整个 Pod 的 namespace。然后后面的容器再创建出来(比如说Container A/B/C)这些容器在创建出来的时候,就都会选择加入到 Pause Container 创建出来的 net namespace 当中。 当然,也不是所有的 namespace 都是不隔离的。Container 左侧是一个 image,每一个 container 都有一个镜像,每一个镜像又相当于一个容器的 Root ffs。既然每个容器的 Root ffs 是不相同的,那么显而易见,mnt namespace 就是隔离的。 这样我们就可以清楚地看到,哪些 namespce 在 Pod 当中是互相隔离的,而哪些是在 Pod 级别当中共享的。 Pod 在 Kubernetes 中的展现形式 通常,我们习惯用 Yaml 来描述 Kubernetes 里的资源。Yaml 中的内容其实就是我们对资源参数的描述。 我们先看 Pod 在 Yaml 中的前四行。这四行是资源在 Yaml 中的通用字段。ApiVersion/kind 用于表示 Kubernetes 的资源类型是什么。通过 metadata 来声明资源的源数据。Spec 字段和资源类型是强相关的了。不同的资源会有不同的 spec 定义。那在 Pod 资源当中,最核心的是关于容器的定义了。 下面几行,关于容器的定义,是一个数组类型的,这也符合我们对 Pod 的定义:即它是由一组容器形成的。这些字段包含:声明容器镜像,启动容器的命令,容器镜像的拉取方式,以及容器的名称。 1.2 核心概念 Kubelet Kubelet 是 Kubernetes 集群的“节点代理”。也可以说是 Kubernetes 部署在每个节点的agent。 Kubelet 启动后会向 Kubernetes 集群注册自己,并上报节点的相关信息。此时在 Kubernetes 集群中就增加了一台新的可用的 Node 节点(可能是一个物理机,也可能是一个虚拟机,甚至是一个容器)。 Kubelet 发现有属于自己节点的 Pod 符合创建条件后,会按照Pod声明的配置去启动容器。 1.3Kubernetes 控制面的相关组件 上面这张图分为3个部分作介绍: 1. 下半部分:也就是之前介绍过的Kubelet/Pod。 2. 左上角:Kubectl。也就是Kubernetes 的命令行工具。可以通过Kubectl来提交资源的Yaml 给Kubernetes 集群。也可以进行一系列的运维操作。 3. 右面:Master 节点。也就是Kubernetes 控制面的相关组件了。其中,API Sever是Kubernetes 中所有源数据的集成入口。也是整个Kubernetes 集群的中枢组件。其他组件(包括Controller, Scheduler等)在获取数据都需要和API Sever 打交道。API Sever 也会接受这些组件的协入请求,并最终将数据写入ETCD 当中。同时,API Sever 也会缓存所有的源数据。当其他组件发起“读”请求时,就会将数据直接从内存中发给对方。尽量避免ETCD 成为系统的瓶颈。除了源数据存储功能,API Server 还提供了一个Watch 机制。能够主动推送某种资源的变化。而Scheduler会向API Sever 注册并且监听Pod 的资源变更事件。Scheduler 整体的调度逻辑可以简化并概括为两个:过滤、打分。 每次对Pod进行调度的时候,首先将不符合条件的Node(如:机器上已经没有资源了,不符合某些标签,选择器的要求等)过滤掉。过滤完成后我们得到一个符合要求的Node列表,Scheduler 会通过打分算法,来计算每一个Node 的分数。最终选择一个得分最高的节点做为Pod 需要绑定的节点。最终Scheduler 会将结果回写到API Sever 当中。 编排组件:Controller。Controller 通过几种固定的workload。通过控制器的方式,来完成运行时服务器的编排工作。 2. 快速搭建 Kubernetes 集群 2.1 搭建工具:Kubeadm 简介 Kubeadm 是 Kubernetes 官方提供的用于快速安装 Kubernetes 集群的工具。 下图是 Kubeadm 的配置文件 在配置文件当中,我们指定了 dns 的类型,ETCD 存储目录以及要创建的 Kubernetes 的版本以及相关的参数。 2.2 搭建环境 初始 Master 节点 Kubeadm init—config kubeadm.conf 安装 flannel cni https://raw.githusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 3. Demo:演示如何操作一个 Pod 创建一个 Namespace Kubectlcreatenamespacedemo 创建 Pod Kubectl apply –f pod.yaml 查看 Pod 运行状态 Kubectldescribepodsdemo-pod–ndemo 查看 Pod 输出日志 Kubectl logs demo-pod –n demo 查看 Pods 列表 Kubectl get pods-n demo 删除 Pod Kubectl delete-f pod.yaml (创建Deomo的详细过程欢迎大家观看课程的视频回放。) MoreCommand Basic Commands: create,expose, run, setBasic Commands: explain, get,edit,deleteDeploy Commands: rollout,scale,autoscale 4. 总结 本节课作为云原生入门系列课程第二节。重点介绍了 Kubernetes 出现的背景和作用、Kubernetes 的特点和核心架构、Kubernetes 每一个模块承担的作用以及实现的功能。并演示了如何搭建一个单节点的 Kubernetes 环境以及如何使用来操作相关的资源,希望对大家有所帮助。 视频课程:https://www.bilibili.com/video/BV17o4y1R77k 免费领小度智能屏!暖春福利进行ing

资源下载

更多资源
Mario

Mario

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

Nacos

Nacos

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

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

用户登录
用户注册