首页 文章 精选 留言 我的

精选列表

搜索[国产神器],共5588篇文章
优秀的个人博客,低调大师

AI 编程神器

据彭博社报道,Cursor母公司Anysphere正在与投资者洽谈新一轮融资,估值可能高达100亿美元。这一数字是其三个月前估值的四倍(2024年12月估值为25亿美元)。若融资成功,Cursor将成为继OpenAI、Anthropic之后,AI应用层又一家“百亿美元独角兽”。 Anysphere(Cursor的母公司)并不开发自己的生成式AI模型,而是依赖Anthropic和OpenAI的模型来驱动Cursor。尽管如此,Cursor凭借其易用性、速度以及对用户代码库的深入理解,赢得了开发者的广泛好评。 《The Information》报道指出,包括卡片初创公司Ramp和AI搜索引擎Perplexity在内的众多公司,都在使用Cursor来提升开发效率。 Cursor提供免费、20美元/月和40美元/月三种订阅模式,相较于竞争对手Devin每月500美元的定价,Cursor在价格上具有明显优势。 《The Information》指出,Cursor的收入增速已经超过了上一代软件初创公司。以100亿美元估值计算,Cursor的市销率(估值/年化经常性收入)约为66倍。 Cursor的快速发展,也加剧了AI编程助手市场的竞争。OpenAI和Anthropic都在积极推出自己的代码编辑工具。 《The Information》报道称,Cursor最初使用OpenAI的模型,但在7月将默认模型更改为Anthropic。 几个月后,OpenAI在ChatGPT中推出了名为Canvas的代码编辑工具。上周,Anthropic也推出了自己的代码编辑器Claude Code。此外,OpenAI还在开发一款更高级的编码助手产品,旨在复制高级软件工程师的工作。 除了OpenAI和Anthropic,其他初创公司也在积极布局。上个月,Kleiner Perkins领投了Codeium,估值接近30亿美元。Codeium与Cursor类似,也在几个月前以12.5亿美元的估值融资1.5亿美元。Poolside也在开发编码助手应用和模型,尽管去年收入不足1000万美元,但该公司可能在未来的融资中寻求50亿美元的估值。 相关阅读 使用 Cursor 编程的 15 条经验建议 Cursor 的开源替代来了:Roo-Cline Cursor 母公司 Anysphere 收购 AI 编码助手 Supermaven

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

异步神器CompletableFuture

介绍 上个礼拜我们线上有个接口比较慢,这个接口在刚开始响应时间是正常的。但随着数据量的增多,响应时间变慢了。 这个接口里面顺序调用了2个服务,且2个服务之间没有数据依赖。我就用CompletableFuture把调用2个服务的过程异步化了一下,响应时间也基本上缩短为原来的一半,问题解决。 正好上次分享了函数式接口和Stream的使用,这次就分享一下CompletableFuture,里面也用到了大量的函数式接口 想方便的异步执行任务,就必须放到单独的线程中。继承Thread类,实现Runnable都不能拿到任务的执行结果,这时就不得不提创建线程的另一种方式了,实现Callable接口。 @FunctionalInterfacepublicinterfaceCallable<V>{Vcall()throwsException;} Callable接口一般配合ExecutorService来使用 //ExecutorService.java<T>Future<T>submit(Callable<T>task); ExecutorServiceexecutor=Executors.newCachedThreadPool();Future<Integer>result=executor.submit(()->{intsum=0;for(inti=0;i<100;i++){sum+=i;}returnsum;});//4950System.out.println(result.get()); 我们从Future中获取结果 publicinterfaceFuture<V>{//取消任务的执行booleancancel(booleanmayInterruptIfRunning);//任务是否已经取消booleanisCancelled();//任务是否已经完成booleanisDone();//获取任务执行结果,会阻塞线程Vget()throwsInterruptedException,ExecutionException;//超时获取任务执行结果,会阻塞线程Vget(longtimeout,TimeUnitunit)throwsInterruptedException,ExecutionException,TimeoutException;} 对于简单的场景使用Future并没有什么不方便。但是一些复杂的场景就很麻烦, 如2个异步任务,其中一个有结果就直接返回。Future用起来就不方便,因为想获取结果时,要么执行future.get()方法,但是这样会阻塞线程,变成同步操作,要么轮询isDone()方法,但是比较耗费CPU资源。 Netty和Google guava为了解决这个问题,在Future的基础上引入了观察者模式(即在Future上addListener),当计算结果完成时通知监听者。 Java8新增的CompletableFuture则借鉴了Netty等对Future的改造,简化了异步编程的复杂性,并且提供了函数式编程的能力 创建CompletableFuture对象 方法名 描述 completedFuture(U value) 返回一个已经计算好的CompletableFuture runAsync(Runnable runnable) 使用ForkJoinPool.commonPool()作为线程池执行任务,没有返回值 runAsync(Runnable runnable, Executor executor) 使用指定的线程池执行任务,没有返回值 supplyAsync(Supplier<U> supplier) 使用ForkJoinPool.commonPool()作为线程池执行任务,有返回值 supplyAsync(Supplier<U> supplier, Executor executor) 使用指定的线程池执行任务,有返回值 @FunctionalInterfacepublicinterfaceSupplier<T>{Tget();} Supplier在《用好强大的Stream》中已经介绍过了,是一个能获取返回值的函数式接口 CompletableFuture<Integer>intFuture=CompletableFuture.completedFuture(100);//100System.out.println(intFuture.get());CompletableFuture<Void>voidFuture=CompletableFuture.runAsync(()->System.out.println("hello"));//nullSystem.out.println(voidFuture.get());CompletableFuture<String>stringFuture=CompletableFuture.supplyAsync(()->"hello");//helloSystem.out.println(stringFuture.get()); 计算结果完成时 方法名 whenComplete(BiConsumer<? super T,? super Throwable> action) whenCompleteAsync(BiConsumer<? super T,? super Throwable> action) whenCompleteAsync(BiConsumer<? super T,? super Throwable> action, Executor executor) 因为入参是BiConsumer<? super T,? super Throwable>函数式接口,所以可以处理正常和异常的计算结果 whenComplete和whenCompleteAsync的区别如下 whenComplete:执行完当前任务的线程继续执行whenComplete的任务 whenCompleteAsync:把whenCompleteAsync这个任务提交给线程池来执行 CompletableFuture的所有方法的定义和whenComplete都很类似 方法不以Async结尾意味着使用相同的线程执行 方法以Async结尾意味着将任务提交到线程池来执行 方法以Async结尾时可以用ForkJoinPool.commonPool()作为线程池,也可以使用自己的线程池 后续介绍的所有方法都只写一种case CompletableFuturefuture=CompletableFuture.supplyAsync(()->{return"hello";}).whenComplete((v,e)->{//helloSystem.out.println(v);});//helloSystem.out.println(future.get()); 转换,消费,执行 方法名 描述 thenApply 获取上一个任务的返回,并返回当前任务的值 thenAccept 获取上一个任务的返回,单纯消费,没有返回值 thenRun 上一个任务执行完成后,开始执行thenRun中的任务 CompletableFuture.supplyAsync(()->{return"hello";}).thenAccept(str->{//helloworldSystem.out.println(str+"world");}).thenRun(()->{//taskfinishSystem.out.println("taskfinish");}); 组合(两个任务都完成) 方法名 描述 thenCombine 组合两个future,获取两个future的返回结果,并返回当前任务的返回值 thenAcceptBoth 组合两个future,获取两个future任务的返回结果,然后处理任务,没有返回值 runAfterBoth 组合两个future,不需要获取future的结果,只需两个future处理完任务后,处理该任务 CompletableFuturefuture=CompletableFuture.supplyAsync(()->{return"欢迎关注";}).thenApply(t->{returnt+"微信公众号";}).thenCombine(CompletableFuture.completedFuture("Java识堂"),(t,u)->{returnt+u;}).whenComplete((t,e)->{//欢迎关注微信公众号Java识堂System.out.println(t);}); 组合(只需要一个任务完成) 方法名 描述 applyToEither 两个任务有一个执行完成,获取它的返回值,处理任务并返回当前任务的返回值 acceptEither 两个任务有一个执行完成,获取它的返回值,处理任务,没有返回值 runAfterEither 两个任务有一个执行完成,不需要获取future的结果,处理任务,也没有返回值 CompletableFuture<String>future1=CompletableFuture.supplyAsync(()->{sleepRandom();return"欢迎关注微信公众号";});CompletableFuturefuture2=CompletableFuture.supplyAsync(()->{sleepRandom();return"Java识堂";});CompletableFuturefuture=future1.applyToEither(future2,str->str);//欢迎关注微信公众号Java识堂随机输出System.out.println(future.get()); sleepRandom()为我写的一个随机暂停的函数 多任务组合 方法名 描述 allOf 当所有的CompletableFuture完成后执行计算 anyOf 任意一个CompletableFuture完成后执行计算 allOf的使用 CompletableFuture<String>future1=CompletableFuture.supplyAsync(()->{sleepRandom();return"欢迎关注";});CompletableFuture<String>future2=CompletableFuture.supplyAsync(()->{sleepRandom();return"微信公众号";});CompletableFuture<String>future3=CompletableFuture.supplyAsync(()->{sleepRandom();return"Java识堂";});//欢迎关注微信公众号Java识堂CompletableFuture.allOf(future1,future2,future3).thenApply(v->Stream.of(future1,future2,future3).map(CompletableFuture::join).collect(Collectors.joining(""))).thenAccept(System.out::print); anyOf的使用 CompletableFuture<String>future1=CompletableFuture.supplyAsync(()->{sleepRandom();return"欢迎关注";});CompletableFuture<String>future2=CompletableFuture.supplyAsync(()->{sleepRandom();return"微信公众号";});CompletableFuture<String>future3=CompletableFuture.supplyAsync(()->{sleepRandom();return"Java识堂";});CompletableFuture<Object>resultFuture=CompletableFuture.anyOf(future1,future2,future3);//欢迎关注微信公众号Java识堂随机输出System.out.println(resultFuture.get()); 异常处理 方法名 描述 exceptionally 捕获异常,进行处理 CompletableFuture<Integer>future=CompletableFuture.supplyAsync(()->{return100/0;}).thenApply(num->{returnnum+10;}).exceptionally(throwable->{return0;});//0System.out.println(future.get()); 当然有一些接口能捕获异常 CompletableFuturefuture=CompletableFuture.supplyAsync(()->{Stringstr=null;returnstr.length();}).whenComplete((v,e)->{if(e==null){System.out.println("正常结果为"+v);}else{//发生异常了java.util.concurrent.CompletionException:java.lang.NullPointerExceptionSystem.out.println("发生异常了"+e.toString());}}); 欢迎关注 本文分享自微信公众号 - Java识堂(erlieStar)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

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

tomcat日志神器--kibana

最近公司搭了套kibana的日志系统,感受比原来查看日志方便多了。记得以前查看日志是通过ssh到服务器,查看系统日志用vi查看器查看或者下载到本地,用logview查看搜索,可读性很低。自从用了kibana后感觉查看日志是如此方便高效,这里推荐给大家。 大致步骤 1.通过官方网站下载[kibana](https://www.elastic.co/cn/downloads/kibana) 2.tar –zxvf kibana-5.5.2-linux-x86_64.tar.gz–C /run/ 解压并且安装 3.编辑kibana.yml配置文件 4.启动kibana,切换到kibana安装目录到bin,执行./kibana &(&不加服务器关了,kibana也就关了) 5.成功开启kibana,然后访问http:192.168.31.229:5061,可以在config/kibana中配置 6.kibana常用菜单介绍 7.dev,test环境查看,*代表模糊查询,不加*是精确查询 8.kibana相关资料查看 1.tar -zxvf https://artifacts.elastic.co/downloads/kibana/kibana-6.3.1-linux-x86_64.tar.gz 下载并解压kibana 2.进入kibana安装目录的config,vi kibana.yml添加如下配置 配置本机ip server.host: "192.168.31.229" #配置es集群url elasticsearch.url: "http://192.168.31.229:9200" 3.Kibana启动 cd /run/kibana-5.5.2-linux-x86_64/bin ./kibana & &如果不加的话,shell关了后kibana也会被关 4.Kibana启动后,可以访问:http://192.168.31:231:5601 image.png 4.1 Kibana中Discover image.png 关于开发,测试,生产3个环境,也可以通过代码配置文件dev,test,prod来控制。 image.png image.png 4.2 Kibana中Visualize image.png 4.3 Kibana中Dashboard image.png 4.4 Kibana中Timelion image.png 4.4 Kibana中APM image.png 4.5 Kibana中Dev Tools image.png 4.5 Kibana中Monitoring image.png 4.5 Kibana中Management image.png 5.Kibana相关文章推荐 Kibana安装及使用说明Kibana 基础入门Elasticsearch上手——结合Kibana的安装配置

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

GeoGebra 6.0.918.0 发布,绘图神器

Geogebra 是动态数学软件,它将几何、代数、电子表格、绘图、统计和微积分集成在一个易于使用的软件包中。 GeoGebra6.0.918.0版本现已发布,具体更新内容如下: 使用 GWT v2.13.0 编译 通过 <Tab> 选择 3D points 时会出现“光晕”效果 Classic:修复了 CAS 中的代数视图命令 Box Plots 可以垂直拖动 CAS:修复了例如 Numeric(4.5,1) 的问题 改进了有理函数的交点 修复了回归对话框中的相关性问题 详细信息

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

GeoGebra 6.0.892.0 发布,绘图神器

Geogebra 是动态数学软件,它将几何、代数、电子表格、绘图、统计和微积分集成在一个易于使用的软件包中。 GeoGebra6.0.892.0版本现已发布,具体更新内容如下: CAS:修复eg m1=(2 Identity(3)-A)^(2) 的问题 ​​​​​​​ CAS f'(x)=... 被识别为方程而非赋值 PlaySound(false) 现在将停止 .mp3 播放 错误修复:确保显示例如 1/sqrt(2) 的切换按钮 Notes:线条可以一分为二(repeatedly) Notes:新曲线工具 为按钮、输入框、下拉列表和复选框实现了 Corner() 功能 详细信息

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

GeoGebra 6.0.749.0 发布,绘图神器

Geogebra 是动态数学软件,它将几何、代数、电子表格、绘图、统计和微积分集成在一个易于使用的软件包中。 GeoGebra6.0.749.0版本现已发布,具体更新内容如下: 新命令 SetImage( <Object>, <Image> ) 新小程序参数"ScreenReaderMode":"Unicode" or "ScreenReaderMode":"ASCII" 仅在 <Tab> 时突出显示的文本/图像,而不是鼠标点击 用于在精确/近似答案之间切换的新图标 Classic 6:添加了“Open Tool” Absolute Position 现在可以采用变量 修复例如 Slope(Element(NormalQuantilePlot[ {2,3,4}],4))的问题 修复了AV sliders on touch 详细信息

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

GeoGebra 6.0.729.0 发布,绘图神器

Geogebra 是动态数学软件,它将几何、代数、电子表格、绘图、统计和微积分集成在一个易于使用的软件包中。 GeoGebra6.0.729.0版本现已发布,具体更新内容如下: CAS:当参数数量错误时更好的语法错误 保存数值表的错误修复 极坐标网格的错误修复,点固定到网格 3D视图中的"transparent":true Notes:图像和方程式可以从小程序外部拖入 更好的绘制 piecewise If() 详细信息

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

GeoGebra 6.0.718.0 发布,绘图神器

Geogebra 是动态数学软件,它将几何、代数、电子表格、绘图、统计和微积分集成在一个易于使用的软件包中。 GeoGebra 6.0.718.0版本现已发布,具体更新内容如下: 对 ClosestPoint(point, function) 的改进 修复了 Derivative(f,0) 的错误 修正 Sample({2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14}, RandomBetween(2,3), false) 的错误 “Customize Toolbar”对话框中现在提供 Freehand Function 工具 使用 dependent points 时 IntersectPath(line, triangle) 的错误修复 关于 "Play" / "Reset" / "full-screen" 图标位置的错误修复 详细信息

资源下载

更多资源
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部分的功能。

用户登录
用户注册