IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    love 0
    1900
    发表于
    2023-09-25 15:28:33

    自省[13]

    目标🏋️‍♂️每周锻炼:0/5上两周出差在外地,所以记录的时间都有异常了。自省9月回了一趟老家。这次回去了呆了大概两个星期,很多之前定的习惯都乱了套,生活作息也混乱起来。虽然带了电脑回去,但是只有中间18-20号腾了3天出来专门工作,其他时候都是处于复杂环境,基本只能开电脑处理一下紧急事务。这种环境下我也没法安心工作,写文章就更不行了,所以自省系列的文章自然就断更了两周。这次回老家主要是看一下家里房子的装修。前几年因为政策原因,宅基地的审核缩紧了,所以我爸趁着缩紧前把老房子推了重建,他们本来划了一个区域做麻将、娱乐、KTV之类的,被我看上了,让他们给我留了下来了。期间自己做了一下布局设计,改成了一个三室一厅一卫的小套间,装修准备搞奶油原木风。其他的房间去年基本上就搞的差不多了,就我那个地方还是毛胚,我妈今年督促着工人把基础工作,如:拉呸、刮乳胶漆、门窗等工作都做好了,现在只需要买家具就可以了。回去那几天基本上都是在跟着我妈、老婆出去逛家具城,不过考虑到其实我们每年也就回去一次,每次基本上也就知识过年期间住上一个月,而且以后有小孩回家不方便后可能回去的时间就更少了,也就不准备购置太好的家具。但是选购过程中我妈看上的那一套东西我其实不太满意,当时也不同意他们的一件,但是我和老婆一直妥协我妈的想法,想着便宜、质量也还行等,加上我隔天就要回四川了,就想着草草买完了事,导致买下来的家具和我当 ...继续阅读 (138)


    love 0
    CFC4N
    发表于
    2023-09-25 14:42:31

    eCapture支持流量转发的进展同步

    eCapture支持流量转发的进展同步大家好,eCapture项目距上次新版发布也已经过去2-3个月了,在这期间,社区论坛里很多网友提了一些问题以及需求,等我来解决。这几个月博主工作特别忙,一直没时间更新eCapture。这个周末特地抽时间解决了社区中反应的一些bug、优化点等。至于新功能,主要的就是流量转发功能,这个功能还是比较复杂的。今天,博主先把发布一个修复bug的版本,等过段时间博主不是那么忙了,再构思流量转发功能,分享给大家。新版发布功能介绍增加了Linux 5.2一下内核的异常提示移除了curl/wget等参数路径指定恢复了关联数据包目标IP功能。修复了Openssl FD总是为0的错误。其中,第二条可能会有影响,移除curl\wget路径参数,也顺带移除了自动搜索这两个软件所使用的Openssl动态链接库版本,以及所属路径问题。意味着大家需要自己检查期望被捕获的程序所用的SSL类库版本,并手动使用--libssl参数指定。下载下载地址:eCapture v0.6.2流量转发流量转发功能有很多使用场景,包括测试、渗透、研发、运维等,国内外都有用户提到过这个需求。流量转发功能,必不可少的数据就是IP五元组,而这个问题,是eCapture最头疼的问题,拿不到远程地址的IP、端口数据。eCapture实现介绍基于TC的流量包获取,使用Uprob eBPF来完成捕获捕获。借助于 ...继续阅读 (159)


    love 0
    broadview2006
    发表于
    2023-09-25 14:06:41

    AI时代的中国困境: ChatGPT为什么难以复制

    美团联合创始人、被尊称为“老王”的王慧文,此前一直在寻找Web 3.0赛道的创业机会,在ChatGPT火起来之后,他迫不及待地宣布愿意立即带5000万美元加入AI创业,由此还引发了一些人的嘲讽——5000万美元对于AI研发而言,实在是太少了。如果有可能,还应加上第三个条件:负责“疯狂的想法”的部门(往往是基础研发或创新业务部门)与负责赚钱的部门分开管理,遵从不同的KPI,并且受到同等的重视。可是相对于发达国家,中国的劳动力,尤其是受过教育的劳动力,薪酬水平还是相对较低的。 ...继续阅读 (195)


    love 0
    静かな森
    发表于
    2023-09-25 13:39:21

    超级组合!NestJS + tRPC 与CSR绝佳搭档React Query,开启全新开发时代!

    该渲染由 Shiro API 生成,可能存在排版问题,最佳体验请前往:https://innei.in/posts/programming/nestjs-with-trpc-and-dependency-injection最近在重写一个 NestJS 的项目,想着这么集成下 tRPC 供管理面板前端使用。原本在管理面板都是裸写的 API 接口,也没有任何响应类型。如果使用 tRPC 的话,不仅不用手写 API 还能做到 End-to-End Type-safe.tRPC 是什么RPC 是指远程过程调用 (Remote procedure call),tRPC 的t强调了 TypeScript 的实现,利用了 TypeScript 的类型系统实现了在客户端与服务端之间的通信过程并提供高效的类型安全。tRPC 一般在全栈框架中用的比较多,比如 Next.js。况且在 Next.js 推广 App Router 之后,类似 RPC 的方式也会变得比较流行,可以省去很多麻烦。NestJS 接入 tRPCNestJS 接入 tRPC 的方式非常简单。和普通服务端接入类似。下面都以fastify作为 NestJS 应用的适配器实现。NestJS 本身是一个抽象层,我们可以获取到源服务器的实例,这里是fastify。按照 tRPC 的文档,我们对fastify实例注入插件的形式来完成 tRPC ...继续阅读 (168)


    love 0
    admin
    发表于
    2023-09-25 13:18:10

    OEDB (OpenEASM BannerDB) first version is comming!

    OEDB是我独立开发的一个网络空间测绘平台。OEDB由分布式消息队列NATS + 无状态扫描器ZMAP + 端口指纹识别器PunkMap+ 基于LMDB的全文搜索引擎MeiliSearch+ 一些Python脚本构建而成 + Nuxt.JS构建而成。当前可以识别包括HTTP/HTTPS/SSH/RDP/MYSQL等在内的常见协议,平台的数据量级大概在百万的水平,但是看官可以先访问https://oedb.imfht.com/进行体验 ^_^虽然OEDB是一个让我自豪的业余项目,但是一些问题需要解决,例如:PunkMap 的端口服务识别数量还有待加强(后续兼容Nmap的probefile?)MeiliSearch 在数据量大了之后,性能是一个很大的问题,基于LMDB、不支持分布式处理、甚至做索引的时候不支持多线程写,这将成为项目的短板。将MeiliSearch迁移到ElasticSearch是一个好主意,但是我需要更多的硬件来运行ES,硬件成本对我来说会是一个比较大的问题。OEDB (OpenEASM BannerDB) first version is comming!最先出现在帅核桃说。 ...继续阅读 (160)


    love 0
    whrss (whrss9527@gmail.com)
    发表于
    2023-09-25 11:14:27

    GORM 中 SQL、慢 SQL 打印日志传递 trace ID

    实现gorm.io/gorm/logger下的函数⬇️// gorm 源码 type Interface interface { LogMode(LogLevel) Interface Info(context.Context, string, ...interface{}) Warn(context.Context, string, ...interface{}) Error(context.Context, string, ...interface{}) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) }以下为自定义的重写实现,主要函数是Tracepackage log import ( "context" "time" "github.com/go-kratos/kratos/v2/log" "gorm.io/gorm/logger" ) type GormLogger struct { SlowThreshold time.Duration } func ...继续阅读 (41)


    love 0
    bluishglc
    发表于
    2023-09-25 11:06:43

    在 EMR 上使用 Delta Lake

    Amazon EMR 在 6.9.0 版本开始引入 Delta Lake,测试下来,启用的方式和 Apache Hudi 是非常像的。本文简单记录一下操作环节。此外,在 EMR 上使用 Delta Lake 也是可以使用 Glue Data Catalog 的。 ...继续阅读 (166)


    love 0
    XboxYan
    发表于
    2023-09-25 10:57:35

    CSS mask 与 切图艺术

    欢迎关注我的公众号:前端侦探作为一名 CSSer,我并不反对“切图”。相反,有些地方还是更推荐的,特别是那些奇形怪状的 UI,合理的“切图”可以极大地提高布局效率,当然,这里需要一点点技巧,将“切图”和 CSS 现有能力结合起来,一起学习一下吧一、“切图”的局限性传统的“切图”简单暴力,但往往缺少适应性。适应性一般有两种,一是尺寸自适应,二是颜色可以自定义。举个例子,有这样一个优惠券样式关于这类样式实现技巧,之前在这篇文章中有详细介绍:CSS 实现优惠券的技巧不过这里略微不一样的地方是,两个凹陷处都是平滑处理的单纯实现内凹圆角已经很费劲了,现在还来个平滑圆角?是时候祭出最后大招了--切图。但是,切图真的能解决吗?假设已经得到了这样一张图片div{ background: url(a.png) 0/100% 100%; }下面是这张图片在不同尺寸下的表现除非整个布局的尺寸是完全固定的,否则都会有不同程度的拉伸情况,这是视觉最为忌讳的。另外,整张图是固定的,也无法直接修改背景色,如果有多种状态,还需要保存多份.div1{ background: url(a.png) 0/100% 100%; } .div2{ background: url(b.png) 0/100% 100%; }有没有更为灵活的切图方式呢?二、图形运算与CSS MASK经常会和设计稿打交道,对设计软件( ...继续阅读 (121)


    love 0
    emanjusaka
    发表于
    2023-09-25 09:28:23

    探索抽象同步队列 AQS

    by emanjusaka fromhttps://www.emanjusaka.top/archives/8彼岸花开可奈何本文欢迎分享与聚合,全文转载请留下原文地址。前言AbstractQueuedSynchronizer抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。大多数开发者可能永远不会直接使用AQS,但是知道其原理对于架构设计还是很有帮助的。AQS是Java中的一个抽象类,全称是AbstractQueuedSynchronizer,即抽象队列同步器。它定义了两种资源共享模式:独占式和共享式。独占式每次只能有一个线程持有锁,例如ReentrantLock实现的就是独占式的锁资源;共享式允许多个线程同时获取锁,并发访问共享资源,ReentrantReadWriteLock和CountDownLatch等就是实现的这种模式。AQS维护了一个volatile的state变量和一个FIFO(先进先出)的队列。其中state变量代表的是竞争资源标识,而队列代表的是竞争资源失败的线程排队时存放的容器 。一、原理AQS的核心思想是通过一个FIFO的队列来管理线程的等待和唤醒,同时维护了一个state变量来表示同步状态,可以通过getState、setState、compareAndSetState函数修改其值。当一个线程想要获取锁时,如果state ...继续阅读 (131)


    love 0
    ChenSoul
    发表于
    2023-09-25 09:00:00

    Java设计模式:Caching

    本文主要介绍 Caching 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 介绍 缓存模式(Caching Pattern)是一种设计模式,旨在通过在资源使用后将其保留在某个快速访问的存储中,并在需要时重新使用资源,以避免昂贵的资源重新获取。 缓存模式的目的是减少重复获取、初始化和释放同一资源所带来的不 … ...继续阅读 (140)


    love 0
    crossoverJie
    发表于
    2023-09-25 08:10:00

    Go 语言史诗级更新-循环Bug修复

    背景前两天Golang的官方博客更新了一篇文章:Fixing For Loops in Go 1.22看这个标题的就是修复了 Go 循环的 bug,这真的是史诗级的更新;我身边接触到的大部分 Go 开发者都犯过这样的错误,包括我自己,所以前两年我也写过类似的博客:简单的 for 循环也会踩的坑先来简单回顾下使用使用 for 循环会碰到的问题:list := []*Demo{{"a"}, {"b"}} for _, v := range list { go func() { fmt.Println("name="+v.Name) }() } type Demo struct { Name string }预期的结果应该是打印a,b,但实际打印的却是b,b。Let's Encrypt: CAA Rechecking bug类似的问题连mozilla团队也没能幸免,所以也确实是一个非常常见的问题,这样的写法符合大部分的开发者的直觉,毕竟其他语言这么使用也没有问题。当然在现阶段要解决也很简单,要么就是在使用之前先复制一次,或者使用闭包传参:// 复制  list := []*Demo{{"a"}, {"b"}}  for _, v := range list {   temp:=v   go func ...继续阅读 (640)


    love 0
    MaskRay
    发表于
    2023-09-25 07:30:02

    A deep dive into Clang\'s source file compilation

    Clang is a C/C++ compiler that generates LLVM IR and utilitizes LLVMto generate relocatable object files. Using the classic three-stagecompiler structure, the stages can be described as follows:1C/C++ =(front end)=> LLVM IR =(middle end)=> LLVM IR (optimized) =(back end)=> relocatable object fileIf we follow the representation of functions and instructions, a moredetailed diagram looks like this:1C/C++ =(front end)=> LLVM IR =(middle end)=> LLVM IR (optimized) =(instruction selector)=> MachineInstr =(AsmPrinter)=> MCInst =(assembler)=> relocatable object fileLLVM and Clang are designed as a co ...继续阅读 (159)


    love 0
    询盘云-贾定强
    发表于
    2023-09-25 07:22:59

    如何批量抓取Facebook群组成员的邮箱和WhatsApp号码?【免费】

    每个外贸人Facebook上都有加入很多行业群组,但是如何跟群组内的成员互动,是个非常头疼的事。如果直接在Facebook上私聊群组成员,发不了几个,消息就会进入Messenger的陌生消息列表,严重的话自己的Facebook账号也会被封。今天为大家分享一种更为高效的自动化方法,帮大家提升收集Facebook群组成员的Email或WhatsApp的效率。首先,登录您的Facebook账号,找到自己希望提取联系方式的群组,打开群成员界面。接下来,使用“Page Auto Scroll”浏览器插件,点击向下箭头,启动页面自动滚动功能,这样就能拉取到Facebook群组内所有的群成员。点击下载插件。当滚动完成后,打开“Instant Data Scraper”插件。这款工具可以帮助您提取出所有显示的群成员的URL地址。点击下载插件。将这些群成员URL地址修改为Facebook个人页面Profile地址后,复制到“URL Bulk Opener”插件中。点击开始后,该插件会为您批量打开所有的链接,每个页面会按照设定的时间间隔依次加载。下载地址https://chromewebstore.google.com/detail/url-bulk-opener/bfpjpogelohiabpbagagdbjnphkklgim。URL转化如下图所示(不会的话可以微信联系我):此时,“Email & ...继续阅读 (156)


    love 0
    一线码农
    发表于
    2023-09-25 02:43:00

    记一次 .NET某新能源MES系统 非托管泄露 - 一线码农

    【摘要】一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序有内存泄露,跟着我的错题集也没找出是什么原因,刚好手头上有一个 7G+ 的 dump,让我帮忙看下是怎么回事,既然找到我了那就给他看看吧,不过他的微信头像有点像 二道贩子,不管到我这里是不是 三道,该分析的还得要分析呀。😄😄😄 二:Wi阅读全文 ...继续阅读 (188)


    love 0
    mephisto.cc
    发表于
    2023-09-25 00:00:00

    Hugo文末添加最后修改时间

    本站的内容一直在更新,比如修复拼写错误、追加内容等。很多文章随着时间流逝,需要进行变更,展示修改时间可以给读者一些心理安慰,最起码表明作者还在用心维护。阅读更多 ...继续阅读 (130)


    love 0
    mephisto.cc
    发表于
    2023-09-25 00:00:00

    Hugo文末添加最后修改时间

    本站的内容一直在更新,比如修复拼写错误、追加内容等。很多文章随着时间流逝,需要进行变更,展示修改时间可以给读者一些心理安慰,最起码表明作者还在用心维护。阅读更多 ...继续阅读 (17)


    love 0
    jump__jump
    发表于
    2023-09-24 23:14:52

    前端持久化缓存优化

    缓存是提升 web 应用程序有效方法之一,尤其是用户受限于网速的情况下。提升系统的响应能力,降低网络的消耗。当然,内容越接近于用户,则缓存的速度就会越快,缓存的有效性则会越高。之前个人写过前端 api 请求缓存方案。介绍的了内存中的缓存以及过期逻辑。后续也写过手写一个前端存储工具库,该工具利用了适配器处理了不同的存储介质(内存,IndexedDB, localStorage 等)。不过,在某些特定场景下缓存还需要优化,例如:用户需要在登录或者填写表单时需要通过某些接口获取必要数据,而这些接口是由第三方平台提供的。这些接口可能会出现错误或超时的情况。如果当前数据有很强实时性,开发者就必须重试或者联系第三方平台来处理对应的错误。如果数据的实时性不强,当前就可以使用本地缓存。一般来说,当获取时效性缓存时候,我们会检查并删除当前数据。代码简写如下所示:// 缓存对应的的模块以及功能 const EXTRA_INFO_CACHE_KEY = 'xxx.xxx.xxx'; // 缓存时长为 7 天 const CACHE_TIME = 7 * 24 * 60 * 60 * 1000; const getCachedExtraInfo = () => { const cacheStr = localStorage.getItem(`${EXTRA_INFO_CACHE_KEY}.${us ...继续阅读 (146)


    love 0
    南玖
    发表于
    2023-09-24 21:28:26

    国庆微信头像DIY:轻松打造个性化头像

    前言国庆节马上要到了,今天就教你如何从0到1使用canvas生成国庆风微信头像。本文包含以下内容:vue3项目搭建,需求分析canvas合成图片原理github自动化部署开发过程遇到的问题及解决方案文末附源码及在线体验地址~搭建项目,分析需求项目的话就直接使用脚手架生成一个Vue3 + TS项目npm create vue@latest为了方便,使用了Element PlusUI库npm install element-plus --save配置的话,可以查看文档,全局导入、按需导入都可以看自己的需求项目搭建完后,就可以来分析一下本次需求大概会涉及哪些功能了上传头像这是一个合成微信头像的工具,那就必须得让用户上传自己的微信头像了合成模版为了方便,我们当然还需要提供多种模版供用户自己选择用户自定义内容为了让生成的头像更具独一无二性,我们还需要提供用户自定义内容的功能,比如:用户输入文字、选择文字颜色等合成头像本次需求的重点当然是合成头像了下载合成后的头像用户合成完当然还得支持让他下载功能开发上传头像// 用户头像 const user_img = ref(""); const change = (file: any, fileList: any) => { console.log(file, fileList); const fileReader = new FileRead ...继续阅读 (123)


    love 0
    wireless_com
    发表于
    2023-09-24 20:23:06

    如何构建基于大模型的App

    ChatGPT 的出现让大模型再一次成为业界的关注热点,然而,并不是每个组织都要去训练及生成大模型的,而且各个组织的技术积累和计算资源也不太允许这样去做。更多的时候, 我们还是基于大模型开发业务应用。所谓智能原生(AI Native),往往是指那些没有大模型就无法成立的应用,那是一些新的业务机会和挑战。很多时候, 我们还只是Applied AI, 即通过AI 尤其是大模型为应用赋能。不论是AI 原... ...继续阅读 (174)


    love 0
    菜菜的后端私房菜
    发表于
    2023-09-24 16:58:50

    12张图一次性搞懂高性能并发容器ConcurrentLinkedQueue

    12张图一次性搞懂高性能并发容器ConcurrentLinkedQueue前言上篇文章聊到并发集合CopyOnWeiteArrayList的实现与特点,其不足之处是不适合写多的场景也不适合并发量大的场景本篇文章来聊聊并发场景下高性能的ConcurrentLinkedQueue阅读本文大概需要10分钟在阅读本文前,需要理解CAS、volatile等知识如果不理解CAS可以查看这篇文章15000字、6个代码案例、5个原理图让你彻底搞懂Synchronized的第二小节如果不理解volatile可以查看这篇文章5个案例和流程图让你从0到1搞懂volatile关键字数据结构ConcurrentLinkedQueue从名称上来看就能够知道,它支持并发、由链表实现的队列通过源码,我们可以看到ConcurrentLinkedQueue使用字段记录首尾节点、并且节点的实现是单向链表并且这些关键字段都被volatile修饰,在读场景下使用volatile保证可见性,不用“加锁”还有一些其他字段,比如使用CAS的Unsafe和一些偏移量信息等,这里就不一一列举public class ConcurrentLinkedQueueextends AbstractQueueimplements Queue, java.io.Serializable { private static ...继续阅读 (117)


    love 0
    Allen Hua
    发表于
    2023-09-24 15:08:00

    【Allen Hua 翻唱】山阴路的夏天和一个人的北京

    李志 山阴路的夏天 录音室版本 cover 李志:https://www.bilibili.com/audio/au4096332好妹妹乐队 一个人的北京 cover 好妹妹:https://www.bilibili.com/audio/au4096384 ...继续阅读 (126)


    love 0
    smallnest
    发表于
    2023-09-24 14:44:08

    从头再读取 io.Reader: 覆水难收?

    前几天,我们百度的同学分享了Go标准库中一段好玩的好玩的代码,net/http/response.go中一段检查HTTP的headser中Content-Length未设置的情况下,对http.Body的有趣的处理。我们知道io.Reader提供了Read方法,并没有将读取的数据再塞回去的方法,而且对于流式的Reader,也绝无可能将数据塞回去。就像覆水难收一样,泼出去的水,没办法收回来了。如果我们想从Reader读取一部分字节,做一些处理(一般是做一些检查),然后想再让调用者从头开始读取咋办?net/http/response.go中就有这么一段代码12345678910111213141516171819202122232425// Clone it, so we can modify r1 as needed.r1 :=new(Response)*r1 = *rifr1.ContentLength ==0&& r1.Body !=nil{// Is it actually 0 length? Or just unknown?varbuf[1]byten, err := r1.Body.Read(buf[:])iferr !=nil&& err != io.EOF {returnerr}ifn ==0{// Reset it to a known zero reader, in ...继续阅读 (161)


    love 0
    smallnest
    发表于
    2023-09-24 13:15:54

    更精准的时延:使用软件时间戳和硬件时间戳

    在我上一篇文章mping: 使用新的icmp库实现探测和压测工具文章中,介绍了使用新的第三方库icmpx使用ping的功能,实现了mping这样一个高性能的探测和压测工具,并且还计算了往返时延指标(RTT, Round Trip Time)。有时候,我们在做应用开发的时候,比如微服务调用的时候,也常常会计算程序的延时(latency)。网络时延一般情况下,我们通过在应用层读取时间戳,计算两个时间戳的延时($t1 - t0$),就可以得到时延,就足够了。通过观察这个数据,我们可以看到网络的时延情况(latency)和抖动(jitter)。但是有时候,我们想知道物理网络传输网络的时延是多少,比如北京A机房到B机房的时延,如果通过应用层的时间戳来计算,误差就太大了。为什么呢?我们知道,当你的服务器和另外一个服务器通讯的时候,包(packet)其实经过了很漫长的链路,从你的应用程序写入本机的buffer,到本机协议栈的处理,网卡处理、网线、机房的各种网络设备、骨干网、再到对端机房、网卡、协议栈、应用程序,经过了很多很多的环节,如果还经过了云网络的话,会更复杂。其中应用层到网卡处理这一段时间,可能会因为CPU的处理能力、服务器负载、网络处理的能力,导致有比较大的耗时,如果在应用层计算网络两点之间的网络时延的话,不能正确得到两点之间的时延或者RTT。一般来说,光信号在光纤中的传输速度大约为20 ...继续阅读 (120)


    love 0
    smallnest
    发表于
    2023-09-24 13:15:54

    PGO: 为你的Go程序提效5%

    PGO (基于profile指导的优化) 在Go 1.20 中还属于预览状态, 在Go 1.21中已经生产可用了, 未来 PGO 还有很宏伟的目标,但是现在已经可以很好的帮助我们提高程序的性能呢,根据程序的不同,可能会带来2% ~ 7%的提升,不要小看这个提升,如果你是在大厂做优化的专家,可以这样计算: “我厂大概有 10万Go实例,每个实例平均占用16个核,通过我们的优化,程序性能平均提升5%, 大约节省9万个核,每年为公司节省数亿元的成本”。最近看到两篇关于PGO的文章:Profile Guided Optimizations in Go和 Go官方的博客Profile-guided optimization in Go 1.21。相比较而言, Go官方这篇文章简单明了,而且把·细节也交代的明明白白,所以我就把这篇文章翻译过来,我感觉我自己写也没有官方这篇写的明白,翻译过来就好了。以下是译文:2023年初,Go 1.20发布了基于profile指导的优化(PGO)的预览版本,供用户进行测试。在解决了预览版本中已知的限制,并借助社区反馈和贡献进行了进一步锤炼后,Go 1.21中的PGO功能已准备好用于广泛的生产环境!有关完整文档,请参阅用户指南。下面我们将通过一个示例来演示如何使用PGO提高应用程序的性能。在深入示例之前,什么是“基于profile指导的优化”?当你构建一个Go二 ...继续阅读 (154)


    love 0
    Hacper\'s Blog
    发表于
    2023-09-24 13:10:37

    登山小队-梧桐山溯溪玩水

    没想到距离上次户外活动去梅沙尖已经五个月过去,叨叨念念了几个月的大南山和溯溪活动终于有时间了,真是计划赶不上变化。上午坐车来到老虎涧,买好零食水果,到了入口却被一群保安拦下,原因是之前台风导致里面的设施损坏需要维修,现在不对外开放,白来一趟,失望还有后面来的人。后面决定去另外一个地方,梧桐驿站。坐车绕了一圈,大概40分钟到了梧桐驿站,令人失望的是这里也由于台风的原因暂不开放,一天两次碰壁。我们还是不甘心,这次没有保安,跟随同行路人翻越护栏,走野路进入。见到水大家都兴奋了,拿出零食水果,小酒喝起,玩水摸鱼,打卡拍照。今天来这里的人不多,有些人也是来这溯溪玩水,有的只是爬山路过,沿着小溪往上游走几步,还有几个妹子与摄影师在拍照,挺养眼。惊喜地发现,这里还有一个小水潭可以游泳。今天算是尽兴了,欢呼一下周末愉快! ...继续阅读 (139)


    love 0
    eryar
    发表于
    2023-09-24 11:33:00

    [开源]-OpenCASCADE-IMGUI

    [开源]-OpenCASCADE-IMGUI1 IMGUIImGui 是一个用于C++的用户界面库,跨平台、无依赖,支持OpenGL、DirectX等多种渲染API,是一种即时UI(Immediate Mode User Interface)库,保留模式与即时模式的区别参考保留模式与即时模式。ImGui渲染非常快,但界面上有大量的数据集需要渲染可能会有一些问题,需要使用一些缓存技巧。缓存只是避免数据的更新逻辑耗时太久影响渲染,实际渲染过程不存在瓶颈。IMGUI很轻量,还支持跨平台,对于小的测试程序IMGUI是理想的GUI。2 OcctImgui基于opencascade的glfw sample加入IMGUI,这样就可以开发一些带有GUI的程序。这些程序小巧且能方便跨平台,看上去效果也不错。现在将OcctImgui开源,开源地址:https://github.com/eryar/OcctImgui使用Premake来生成解决方案,只需要将premake5.lua中的相关第三方库的路径修改一下,即可以直接编译运行。3 Next目前occt的视图作为整个背景,下一步可以做成像CADRays中那样,将occt的视图作为视图的一部分,这样就可以使用IMGUI的Docking功能。使用IMGUI也可以开发出很Cool的界面,最后放两个基于IMGUI开发的图形界面:https://github. ...继续阅读 (112)


    love 0
    TimLiu
    发表于
    2023-09-24 10:59:29

    掌握 Go 的计时器

    简介定时器是任何编程语言的重要工具,它允许开发人员在特定时间间隔安排任务或执行代码。在 Go 中,定时器是通过time包实现的,该包提供了一系列功能来创建、启动、停止和有效处理定时器。我们将探索 Go 中定时器的强大功能,并通过代码示例演示如何在应用程序中使用定时器。创建计时器要在 Go 中创建一个定时器,我们可以使用time.NewTimer()函数,该函数将持续时间作为参数。下面是一个示例:func CreateTimer() { timer := time.NewTimer(2 * time.Second) fmt.Println("Timer created.") <-timer.C // 阻塞 fmt.Println("Timer expired.") }在上述代码片段中,我们使用time.NewTimer()创建了一个持续时间为 2 秒的新定时器。<-timer.C语句会阻塞执行,直到定时器过期。定时器到期后,"Timer expired."(定时器已过期)信息将打印到控制台。停止计时器在某些情况下,您可能想在定时器到期前停止它。为此,您可以使用定时器对象的Stop()方法。让我们修改之前的示例,加入定时器停止功能:func StopTimer() { timer := time.NewTimer(2 * time.Second ...继续阅读 (128)


    love 0
    蝼蚁之行
    发表于
    2023-09-24 08:34:20

    实现一个响应式的瀑布流组件

    在图片网站中,通常是使用瀑布流的方式来显示图片,等宽度不等高,这样显得错落有致今天 使用Vue3实现一个瀑布流组件,并发布为一个npm包grid布局支持响应式参考自react-plock1、window.matchMediawindow.matchMedia(mediaQueryString)方法返回一个MediaQueryList对象,表示指定css媒体查询字符串的结果其中参数mediaQueryString表示CSS @media规则的任何媒体查询选项,比如:min-width、min-height、orientation等const media = window.matchMedia("(max-width: 850px)")在MediaQueryList对象中有两个属性:matches:返回查询结果,是一个布尔值media:媒体查询的字符串所以,根据matches我们就可以知道是否命中当前的媒体查询选项并且,我们还可以通过addEventListener监听mediaQuery查询结果的变化media.removeEventListener('change', () => { console.log(media.matches) });2、瀑布流组件响应式控制根据屏幕大小确定图片的列数export interface PropConfigType { gap: nu ...继续阅读 (111)


    love 0
    krimeshu
    发表于
    2023-09-24 03:03:44

    Promise 推荐实践 - 进阶篇:并发控制

    相关文章:《基础篇》:https://blog.krimeshu.com/2021/07/04/promise-practice/上一篇的最后,我们列举了两个简单的逐个串行与并发执行的例子。不过日常实际开发中,我们还会遇到更复杂的场景——比如下载 300 张图片,上一篇中简单的写法就无法应对了。这次我们来说说如何更恰当地处理这类批量异步任务。[TOC]1. 批量异步任务如果我们需要下载 300 张图片,该怎么处理呢?(1) 同步编程思路下载 300 张图片之前,我们应该会有它们的 URL,存在一个数组内。按照传统的同步编程思路,我们首先想到的大概是这个样子:12345678910111213141516171819consturlList = [/* 这是300张图片的 URL... */];functiondownloadImage(url) {/* 这是一个同步下载图片的函数 */}urlList.forEach((url) =>{console.log('开始下载:', url);downloadImage(url);console.log('下载完成:', url);});// 或者使用 for 循环for(leti =0, total = urlList.length; i < total; ...继续阅读 (60)


    love 0
    krimeshu
    发表于
    2023-09-24 03:02:00

    Promise + async/await 推荐实践

    异步任务是我们日常开发中离不开的一环,例如用户操作后的网络请求、动画延时回调、node.js 中各种异步 IO/进程操作等等。过去通常是通过传递回调函数的形式使用,如今我们通常使用Promise,配合async/await,让日常这些异步处理方便了很多。不过对于刚接触Promise的新同学来说,日常可能只接触和使用过其中比较基础的使用形式,又没有花时间去了解其中的实现原理,这就可能会导致一些错误理解和反模式实践。这里将平时遇见过的问题列举出来,结合自己的理解,希望能帮新同学们绕开一些可以避免的坑。[TOC]1. 简要介绍(1) 什么是 Promise个人认为,Promise是一种可链式触发的单向异步任务单元。它基于异步任务进行封装,内部维护一个任务进行状态:进行中、已完成、已拒绝。初始状态为进行中,可单向流转:进行中→已完成/已拒绝;不可以逆向流转。一个Promise实例在进行中状态下,可以通过它的then(onResolved?, onRejected?)函数指定完成/拒绝状态回调函数。异步任务执行完毕时,可以执行以下A/B操作之一:(A) 给完成状态回调函数传递一个结果值,进入已完成状态;(B) 给拒绝状态回调函数传递一个理由,进入已拒绝状态。上面是Promise基本概念,看起来似乎“平平无奇”。然而它又通过以下机制实现了链式触 ...继续阅读 (74)

上一页 513/4404 下一页
沪ICP备19023445号-2号
友情链接