Monday, July 26, 2021

V2EX - 技术

V2EX - 技术


SSD 掉电 DDR 缓存中的数据丢失的情况下,文件系统可以保证元数据 (inode) 不损坏吗?

Posted: 26 Jul 2021 04:11 AM PDT

SSD 掉电 DDR 缓存中的数据丢失的情况下,文件系统可以保证元数据 (inode) 不损坏吗?

元数据损坏可能会导致文件系统以只读方式重新挂载,影响一些应用的运行

大型老旧的前端项目,如何动手优化?

Posted: 26 Jul 2021 04:09 AM PDT

公司目前有一老旧的前端项目( 5 年前开发)
采用的是 webpack2 + vue2 构建的,而且还是个多页应用(历史原因 不知道为什么,其实是一个平台项目,一个团队维护)
每个 pages 都是一个 spa,导致 build 会全量 build,随着几年的埋坑和堆屎。项目越来越大。
预计有 45 个 pages 目录,每个目录下有 10 个路由页面。
现在每次更改项目 热更新 都要几十秒才生效,构建不用说要 15 分钟左右(相当于 45 个项目 build )

我的想法:
1. 升级构建工具
2. 分析 build 慢的原因(webpack 分析工具),逐步解决,抽离 dll 什么的。
3. 按照目录结构(45 个 pages),一个一个目录优化代码,去掉无效的引用,冗余代码等等……
4. 改成 dev 和 build 都只启动和编译修改的 pages 。

其中关于 4,我有点尴尬。因为这些 pages 内部的组件有都交叉引用的。在不重构的方式下,我修改一个组件。不知道哪些 pages 引用了。。。这样重新 build 不知道 build 哪些 pages 。。。

还有个想法是,改成 spa,一个目录一个目录的慢慢整理,就是相当于重构了。时间成本比较大。


不知道我的思路是否正确。特来请教前端大佬们~~~~感谢~~~~


打算搞成 kpi 项目。如果大佬们的意见采纳,最后拿到奖金了,绝对来发红包。。。\(^o^)/~


---
补充:前后端分离项目。想搞成 spa 的原因是我们的用户访问量并不是很大(日均 2000 ip ),体验想搞好点。

如何确保外包的代码质量?

Posted: 26 Jul 2021 04:09 AM PDT

希望各位彦祖能够推荐一些实操书籍,方向或者相关点子也行。

问题背景是这样的,我们团队是基于云上的数据分析产品的,功能和代码已经基本开发完成,并且已经上线,效果还凑合。为了通用和降低维护成本,现在计划把公司用到分析的模块都替换成这个产品。这就太多了,需要支持非云部署的,lib 形式,基于内存的数据分析等等乱七八糟各种适配开发。
我不打算让我们团队自己去做,因为有其它更重要的事情要做,而且适配这部分难度并不大,而且一圈问下来大家伙意愿也都不高。所以我想找一些外包同学来完成,但是我又担心是否能确保完成的代码质量。
总得说来,我不需要开发完整功能,计划让外部同学开发的实际上类似定制一个数据库 jdbc 的实现的感觉,因此我并不想花费太多时间在这个上面。结构和功能设计,我能够提供,剩下的代码实现又外包同学来完成,问题就是如何确保代码实现的质量。

因为我从来没有和外包同学合作过,目前我的不成熟想法是:
1. 找个有经验的测试同学,提供充足的测试用例。
2. 抽出一个同学,持续跟进开发和 review 实现结构和代码。
3. 规范开发流程

我总是觉得,这样后续维护是个大问题。
各位彦祖怎么看?

看到有个帖子在讨论 Java 异步 技术栈的问题... 由于今天台风不能送外卖,所以我也来分析分析..

Posted: 26 Jul 2021 04:06 AM PDT

看到有个帖子讨论 Java 目前实现全链路异步的帖子

目前全异步的技术栈大概有

1.SpringWebFlux+Reactor+R2DBC(很久没有了解过了,不知道 Spring 还有没有支持其他服务的一些 Client)

2.Vertx+Future/Vertx+RxJava/Vertx+Mutiny/Vertx+Coroutines

3.Micronaut

4.Quarkus

Vert.x 的 Future 以及 RxJava/Mutiny/Reactor 其实这几个都差不多,基本上在异步技术栈里都是为了解决 CallBack 的问题

主要还是 Jdk 本身的 Future 太拉稀,结果现在每家都自己搞了一套...也是挺蛋疼的

SpringWebFlux/Micronaut/Quarkus 算是比较上层的大杂烩框架了。三家写起来其实都差不多。差别在于 Micronaut/Quarkus 主打的无反射 /云原生。总体打包镜像与内存占用都是比较小的

目前 SpringWebFlux 与 Micronaut 都比较依赖于第三方的 Client 实现,如果第三方的 Client 实现是阻塞的,那么对于 Micronaut 与 WebFlux 来说实际上并不能提高多少吞吐的。

对于 Quarkus 来说,由于 Quarkus 算是在 Vert.x 上面在来了一层,所以 Vert.x 自己实现的各种 Client 在 Quarkus 中也是能用的。比 Micronaut 与 WebFlux 要稍微好那么一丢丢

不过 Micronaut 其实也能用 Vert.x 的 Client,但是效果貌似一般。主要我觉得可能还是 2 套 EventLoop 的问题,不能自上而下的用一套。

理论上 WebFlux 也能用 Vert.x 的各种 Client,但是我觉得效果应该和 Micronaut 差不多。我也不太确定到底麻烦不麻烦。

Micronaut 的 SqlClient 是支持 Vert.x 这边的(之前是我提交的)

另外 Vert.x 这边基本上所有的 Client 都是自己根据协议写的,所以基本上是可以做到全链路异步的。但是碰到官方没有支持到的 Client 那么做法其实与上面的一些东西差不多了

如果你是频次较高的去操作这些没有异步支持的 Client,那么吞吐量还是同样的不尽人意的。所以这也是在做技术选型的时候需要考虑的一点。

如果你对性能的要求没那么高,但是希望内存占用小那么可以选择 Quarkus/Micronaut 两位都支持同步的写法。

如果你对性能要求高,不排除异步的写法那么你可以选择 Vert.x

不管怎么来说或者你用那个,用 Java 写异步的代码都是有点蛋疼的。

相对来说 Vertx+Kotlin Coroutines 要舒服很多,切换到 Kt 的成本也相对的没那么大。

另外目前我是不推荐使用 SpringWebFlux 或者 Micronaut 的异步写法的。

在 TechempoerBenchmarks 最新一轮的性能测试中,这两位的表现并不出色

https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=db

如果你用了异步这种麻烦的写法,但是实际上并没有性能的提升,这是划不来的。

引入了异步写法的唯一目的就是希望在同样的服务器上能承受更大的吞吐。

如果引入了异步 /提高了代码的复杂性以及可维护性并没有换回来性能的提升,这是得不偿失的。

另外,异步所能解决的问题,同步同样能解决(只不过是加多少机器的问题...)

GItHub 利用各位存放在上面的代码,进行 AI 训练搞出一个自动代码生成工具,根据注释自动生成对应代码,各位什么看法

Posted: 26 Jul 2021 04:04 AM PDT

原理是,AI 根据注释描述,直降将相近的代码直接从莫个人的仓库中照搬过来,无视他人的协议。

https://www.bilibili.com/video/BV16P4y147Ub?p=1&share_medium=iphone&share_plat=ios&share_source=WEIXIN&share_tag=s_i&timestamp=1627280615&unique_k=CMBJAH

nodejs 怎样优雅的依赖同个模块的俩个版本?

Posted: 26 Jul 2021 04:01 AM PDT

##起因##

用的 vue.js +elementui, 然后想用新版本的 datepicker 组件,其他的用旧版本。新版本已经有已知的 bug 了,不适合全局用。

##问题## 所以想问下如何同时引用俩个版本的模块?其中一个版本其实只要一个组件。

##已经尝试的方案## 用 npm i element-ui-latest@npm:element-ui 这个命令可以让新旧版本同时存在,并且引用,但是引用的时候出错。原因是 datepicker 这组件的引用有用到 element-ui这个模块前缀,而不是全用相对位置。

Anker 新的 GaN2 充电头与他家的普通快充电头有什么区别?

Posted: 26 Jul 2021 03:53 AM PDT

比如同是 65W 的,发现两者参数差不多,

且 GaN2 的居然重量体积还有增加,价钱还贵了一倍。

想知道这两个区别是什么?

我该不该去选择更贵的 GaN2 ?

Linux 上的 chrome 92 好坑,输入法输错退格会把已经输入的内容删除

Posted: 26 Jul 2021 03:50 AM PDT

91 正常的,我退回来了,
chromium 那边有人提 bug 了,还是 Unconfirmed,
有遇到同样问题的麻烦都去点个 star 意思一下希望他们能重视一点,

https://bugs.chromium.org/p/chromium/issues/detail?id=1232283

台式机多盘位机箱有啥推荐的

Posted: 26 Jul 2021 03:45 AM PDT

台式机多盘位机箱有啥推荐的,8 个盘位以上,散热好一点的
价格不贵的。

请问 iAP 抽取的 30%抽成费用,苹果会给开发票吗?

Posted: 26 Jul 2021 03:45 AM PDT

最近公司的 app 在对接付费服务,财务有一些疑问要搞清楚

项目中引入 maven 包时偶尔发现的小技巧

Posted: 26 Jul 2021 03:42 AM PDT

今天调试 apollo 的实时更新功能,想着 debug 下源码,从而学习下原理,当前项目中使用的是 apollo-client:1.2.1 。我怎么都找不到源码,然后我去 https://mvnrepository.com/看了下版本记录,随之改成了 1.2.0,源码就可以下载下来了,随时我又改成了如下的版本,都可以下载到源码;如果换成 mvnrepository 没有的 jar 版本,就下载不到源码。所以,程序员们平时引入 jar 时,注意下 https://mvnrepository.com/ ,有源码,很舒服

mvnrepository:apollo-client:版本如下 1.8.0 1.7.0 1.6.2 1.6.0 1.5.1 1.5.0 1.4.0 1.3.0 1.2.0

开发的一个 App,在华为(HMOS)手机上被华为风险管控中心检测出病毒,大家有遇到过么?如何处理?

Posted: 26 Jul 2021 03:40 AM PDT

安装到华为手机上后,在风险管控中心报出风险应用,提示:

感染病毒:Risk/Android.E_Ads.Rogue
危险等级:中
详情:[流氓广告]应用包含影响功能正常使用或者难以关闭的流氓广告,请谨慎使用。

我们的应用非常正规,只接了几家大厂的广告 SDK,如穿山甲、百度、广点通等,无其它小厂或者不明来路的广告 SDK 。

测试也给出一个奇怪的情况:同一批打出来的渠道包,只有 sc_vivio 渠道安装后会报这个,其它渠道未有发现。

谢谢各位 V 友大神们的响应。

安卓上有什么简简单单看股票的软件吗

Posted: 26 Jul 2021 03:13 AM PDT

就像 ios 的股市一样,简单看个历史价,不要复杂的曲线图

在阿里干了 1 年多的外包是什么体验?

Posted: 26 Jul 2021 02:29 AM PDT

之前有写好几篇文章是关于阿里外包的,比如《谈一谈阿里外包工作》 等等,感兴趣的可以翻一下我之前写的。

不知不觉,在阿里干外包已经干了 1 年半了,不长也不短,渐渐的感觉自己已经非常适应这样的生活,不太愿意去尝试新的工作,一直也没静下心来思考这些问题,今天刚好决定静下心来写点东西,分享一下这 1 年多的经历。

1.日复一日

这 1 年多说起来也惭愧,并没有做什么值得一说的东西,基本上都是一些重复性工作,比如数据白屏化、数据处理、后端 CURD 接口等等,另外还写了很多基于 antd 库的前端页面。

同部门和我坐在一起的外包同事大概有 7-8 个,但是归属不同的主管,干的工作内容也有所差异,不过平时也和他们聊天交流,大多都是在做一些相对杂碎的活,简单说就是哪里需要干哪里,并没有一个完整的项目去给你做。

我所在的部门是属于阿里云的内部平台,他们正式工做的工作,大概就是收集各个服务节点上报的数据、处理这些数据,然后基于数据构建策略模型,得到一定的结果,再去验证结果是否符合预期。

对于外包来说,能做的东西不多,也就是接手一些不重要、边缘化的项目,此外就是给正式工打杂,做一些辅助性的工作,听上去挺无聊,实际上确实是这样,技术难度并不高。

说到学东西,其实别说外包,就是正式员工也不一定能够接触到项目最核心的代码,每个人都有自己负责的一块,有一个方向,大大小小的项目数不胜数,但是最核心的那些不是一般人接触不到。

2.朝九晚五

正因为上面所说的,部门对外包的定位就是干一些辅助性、偏前端的工作,所以工作自然也很轻松,再加上弹性打卡,每天其实可以早上 10 点钟到公司,晚上 6 点钟准备收拾走人。

实际工作中,阿里对外包的管理非常松散,夸张的说,只要你能把钉钉打卡搞定,你人在不在办公场地没人管,因为外包是一个集中的办公场地,和正式工不在一起,自然也没人去监督你,这样的工作生活估计是很多 IT 人羡慕不已的,但确实大多数外包的真实写照。

大多数时候他们的需求都比较简单、时间也很充裕,每天正常的工作时间完全可以搞定,根本用不到加班,更别说周末了,周末不会有人找你的。。。

对我来说,这就是外包唯一值得留恋的地方,唯一的好处。

3.普通工资

既然工作轻松,那工资自然也不多,大部分外包工资水平都属于很普通的水平,肯定是没法和正式工比,据我了解,低的是上限,下限还行。


...

...

...

全文请点击在阿里干了 1 年多的外包是什么体验?

[向大佬们请教] Java 想转前端,请问该从哪入手?

Posted: 26 Jul 2021 02:22 AM PDT

小弟目前任职于旅游方面的小公司,开发小组四五个人。毕业后一直在这,快三年了。以 Java 开发进来的,工作中负责的模块,后端代码、前端界面都要自己做。

第一年来的时候,整个系统的后端代码基本都写完了,我写的也就是简单的 CURD,写写简单的后台管理页面。 第二年基本都在做微信小程序。 第三年也是微信小程序、saas 系统的一些模块,基于 VUE 、elementui 等。

中间接了些微信小程序(如 RCI 会员)、企业官网的活。

开发中发现,自己更喜欢前端,所以想转前端。 我的前端现在属于现用现学,不够系统。

目前自己在看 w3school 的 html+CSS+jQuery 基础 所以想向各位大佬请教一下,(vue)前端学习应该从哪开始? 提前谢谢了🙇‍

MixPHP V3 发布前的感想, 有哪些变化和特点

Posted: 26 Jul 2021 01:33 AM PDT

最近把 MixPHP 逐步重构到了 V3 版本,之前停更了很长时间,是因为一直在开发 MixGo ,回想起 V2~V2.2 版本中我做了很多尝试,其中特别是 V2.2 我非常激进的直接 all in 单线程协程,当时我是这样想的:MixPHP V2.1 为何从 Reactor+Manager+Worker 多进程改为单线程协程,但是切换后实际上带来了一些问题:

  • 很多用户用了一些奇奇怪怪的第 3 方库,都是依赖 guzzle 和 curl 的,不管是 swoole hook curl 还是 mix/guzzle hook,总是偶尔出现请求失败,不稳定的情况,最后无奈只能用同步执行器处理。
  • 处理复杂一些的 cli 后台计算的时候,通道死锁问题比较严重,问题应该是 db pool 抛出的连接被用户一直持有,导致死锁,这个是我 db 封装的设计没有考虑好这种情况。

当然上面也都不是解决不了的问题,后面大家也都解决了,只是带来了一些本不必要的麻烦,总体感受是其实多进程还是有多进程的意义,少了很多不必要的烦恼,很多人表示怀念以前的 v1.1 的多进程同步模式,比如:关闭协程用同步模式的话,就兼容 composer 的全部生态,以上烦恼都没有,性能其实也不差。

太过理想化

在最初开始设计 V2.2 时,其实我太理想主义了,我内心真的是想复制一个 php 版 golang 的,我自己开发了 mix/runtime 里面包含 Select 用来处理多通道,风格完全与 Go 类似的 Context,Signal 、Time 等基础库,但是实际使用时,由于 Swoole 和 Golang 的协程切换机制不同,导致死锁的问题非常容易出现,最后无奈放弃了,当然我是做非常复杂的那种后台计算类的需求,如果只是 http 开发 CURD 基本不会遇到。Swoole 还是在 API 、WebSocket 等领域比较合适。

微服务

在 V2.2 后期,我做了很多微服务的尝试,我开发了一个非常好用的 PHP gPRC 服务器开发库,我还把整个框架都接入到了 go-micro v1,v2 的生态中,几乎能使用 micro 全部的工具链,尴尬的是后来他们表示 v3 版本将全面 all in 云微服务。

再到后面我接触 APISIX 等网关产品后,我感觉其实我们程序员就直接写 gRPC 和 http 这些接口就可以了,服务少的时候用 ALI 的内网 SLB 简单手动的注册一下负载均衡,多的时候就直接启动一个 APISIX 这种网关,然后把 host 切换到网关地址就可以了,其他的服务发现、熔断、链路啥的都不用去硬编码到框架里了,反而简单高效,当然发现其实还是要去调用网关接口的,但是相比之前我全部用代码+etcd 去处理要单纯很多。

完全独立的模块

以前我开发框架是先构建整体,然后根据框架的需要拆分模块,这导致了模块太多了,有些代码老是感觉放哪里都不太对非常的纠结,各个库之间总是有千丝万缕的联系,独立使用的时候老是连带下载一堆的库。

V3 开始我采用了完全 golang 的那种可插拔的封装思想,我先开发很多个独立的库,这些库的代码尽量的内聚,然后我编写一个骨架,将这些库组合起来使用,我逐步的重构了这些最重要的库。

  • mix/vega PHP 编写的 CLI 模式 HTTP 网络框架,支持 Swoole 、WorkerMan,与 Go 生态的 gin 定位一致
  • mix/database 可在各种环境中使用的轻量数据库,支持 FPM 、CLI 、Swoole 、WorkerMan,可选的连接池 (协程)
  • mix/redis 可在各种环境中使用的 PHP Redis,支持 FPM 、CLI 、Swoole 、WorkerMan,可选的连接池 (协程)
  • mix/redis-subscribe 基于 Swoole 协程的 Redis 原生协议订阅库
  • mix/grpc 基于 Swoole 协程的 PHP gRPC 库,包含 protoc 代码生成器、服务器、客户端
  • mix/websocket 基于 Swoole 协程的 PHP WebSocket 服务器与客户端
  • mix/validate 基于 PSR-7 的验证库
  • mix/worker-pool 基于 Swoole 的协程池、工作池库
  • mix/event 基于 PSR-14 标准的事件调度库
  • mix/cli PHP 命令行交互指挥官 重构中

每个库都是独立可执行的,你可以只使用 mix/vega 来搭配 laravel orm 使用;可以在任意环境中使用 mix/database 和 mix/redis ;可以使用 mix/grpc 原生代码编写 gRPC ;所有的模块你可以像搭积木一样随意组合。

更多的使用场景,暴露原生接口

在 V1,V2 的时候,我们总是只能在一种固定的进程模式下使用,因为我们这些框架把 swoole 底层封装起来了,因为封装导致原生接口其实是无法暴露出来的,因此都是通过配置的方式来做一些有限的模式切换。

V3 我做的比较彻底,我通过封装的 mix/vega 只在请求事件那里引入框架,完全把原生代码暴露出来,带来了非常灵活的启动方式,可以同时支持:Swoole 多进程同步,多进程协程,单进程协程,WorkerMan 多进程同步。包含了 CLI 下两大生态的全部执行模式,并且代码完全一致,可以随意切换,这带来了巨大的可选择性,对协程兼容性困扰的用户可以选择同步模式,在 windows 下无法开发的用户可以选择 workerman 驱动,甚至如果需要 Swow 、FPM 我都可以接入进来。

数据库组件

这次数据库解决了之前的持有连接导致死锁的问题,同时优化了池的实现,同时废弃了之前复杂的 where 设计,采用的更加简单的 ? 绑定方式,这种方式在 golang 中普通采用。这些改变带来了稳定性和性能的提升,同时更加雅观了,当然还增加了 FPM 的支持,我看到有些用户喜欢单独使用他们。

数据库不管在协程、同步、FPM 执行,代码无需修改,只有在协程时单独调用一下 startPool() 即可。

独立、灵活、性能好

以上,MixPHP V3 带来了很多显著的变化,但依然是一个轻量的高性能框架,现在你可以像使用 symfony 一样独立使用我们的模块了。

mac chrome 如何修改快捷键

Posted: 26 Jul 2021 01:05 AM PDT

MacBook, Chrome 版本 92.0.4515.107 (正式版本) (x86_64)

想修改: [搜索标签页] 的快捷键(右上角倒三角那个功能),默认是 shift + command + A, 使用 mac 自带键盘的添加快捷键功能修改,但无效,不知道是不支持还是菜单名称不匹配?

image.png

image.png

安卓新手,内存泄漏问题

Posted: 26 Jul 2021 12:00 AM PDT

问题描述

  • A = 主页面 fragment
  • B = 输入内容页 fragment
  • C = 检索结果页 fragment 我在 A 中进行 replace 跳转到一个 B,完成输入后 replace 跳转到 C,此时使用 home 键进入后台运行,发生内存泄漏问题

报错情况

D/HomePageFragment: BaseFragment-->onPause() D/DiscoveryFragment: BaseFragment-->onPause() D/TvItemsFragment: BaseFragment-->onPause() D/MainActivity: BaseActivity-->onPause() D/LeakCanary: Scheduling check for retained objects in 5000ms because app became invisible D/HomePageFragment: BaseFragment-->onStop() D/DiscoveryFragment: BaseFragment-->onStop() D/CommendFragment: BaseFragment-->onStop() D/TvItemsFragment: BaseFragment-->onStop() D/MainActivity: BaseActivity-->onStop() D/MainActivity: BaseActivity-->onSaveInstanceState()  D/LeakCanary: ====================================     HEAP ANALYSIS RESULT     ====================================     1 APPLICATION LEAKS          References underlined with "~~~" are likely causes.     Learn more at https://squ.re/leaks.          53078 bytes retained by leaking objects     Signature: b01ba777d9ce636d68e71237f54fafe95ee827f8     ┬───     │ GC Root: System class     │     ├─ android.view.inputmethod.InputMethodManager class     │    Leaking: NO (InputMethodManager↓ is not leaking and a class is never leaking)     │    ↓ static InputMethodManager.sInstance     ├─ android.view.inputmethod.InputMethodManager instance     │    Leaking: NO (ViewRootImpl↓ is not leaking and InputMethodManager is a singleton)     │    ↓ InputMethodManager.mCurRootView     ├─ android.view.ViewRootImpl instance     │    Leaking: NO (ViewPager2$RecyclerViewImpl↓ is not leaking and ViewRootImpl#mView is not null)     │    ↓ ViewRootImpl.mImeFocusController     ├─ android.view.ImeFocusController instance     │    Leaking: NO (ViewPager2$RecyclerViewImpl↓ is not leaking)     │    ↓ ImeFocusController.mNextServedView     ├─ androidx.viewpager2.widget.ViewPager2$RecyclerViewImpl instance     │    Leaking: NO (SearchFragment↓ is not leaking and View attached)     │    mContext instance of com.moviemore.android.ui.MainActivity with mDestroyed = false     │    View.parent androidx.viewpager2.widget.ViewPager2 attached as well     │    View#mParent is set     │    View#mAttachInfo is not null (view attached)     │    View.mID = R.id.null     │    View.mWindowAttachCount = 1     │    ↓ ViewPager2$RecyclerViewImpl.mAdapter     ├─ com.moviemore.android.ui.common.ui.BaseViewPagerFragment$VpAdapter instance     │    Leaking: NO (SearchFragment↓ is not leaking)     │    ↓ BaseViewPagerFragment$VpAdapter.mFragmentManager     ├─ androidx.fragment.app.FragmentManagerImpl instance     │    Leaking: NO (SearchFragment↓ is not leaking)     │    ↓ FragmentManagerImpl.mFragmentStore     ├─ androidx.fragment.app.FragmentStore instance     │    Leaking: NO (SearchFragment↓ is not leaking)     │    ↓ FragmentStore.mActive     ├─ java.util.HashMap instance     │    Leaking: NO (SearchFragment↓ is not leaking)     │    ↓ HashMap.table     ├─ java.util.HashMap$Node[] array     │    Leaking: NO (SearchFragment↓ is not leaking)     │    ↓ HashMap$Node[].[6]     ├─ java.util.HashMap$Node instance     │    Leaking: NO (SearchFragment↓ is not leaking)     │    ↓ HashMap$Node.value     ├─ androidx.fragment.app.FragmentStateManager instance     │    Leaking: NO (SearchFragment↓ is not leaking)     │    ↓ FragmentStateManager.mFragment     ├─ com.moviemore.android.ui.search.SearchFragment instance     │    Leaking: NO (Fragment#mFragmentManager is not null)     │    ↓ SearchFragment.rootView     │                     ~~~~~~~~     ╰→ android.widget.LinearLayout instance     ​     Leaking: YES (ObjectWatcher was watching this because com.moviemore.android.ui.search.SearchFragment received Fragment#onDestroyView() callback (references to its views should be cleared to prevent leaks))     ​     key = 888671cb-ecda-4776-b4dd-b4f2350acb32     ​     watchDurationMillis = 7210     ​     retainedDurationMillis = 2208     ​     mContext instance of com.moviemore.android.ui.MainActivity with mDestroyed = false     ​     View#mParent is null     ​     View#mAttachInfo is null (view detached)     ​     View.mWindowAttachCount = 1     ====================================     0 LIBRARY LEAKS 

关于变量可见性的问题,查找了很久没找到答案,望懂的老哥能够解答下,谢谢

Posted: 25 Jul 2021 11:47 PM PDT

请教一下,除了用锁、volatile 之外,如何保证一个线程的变量能被另外一个线程的变量给实时读取到?

请教各位前端大佬一个网页打印问题

Posted: 25 Jul 2021 11:45 PM PDT

Vue.js 项目

页面上有个弹窗,弹窗的高度是固定的(假定 600px ),弹窗里有个 table,这个 table 有很多内容,600px 的高度肯定显示不下(有个竖向滚动条),假如我现在想要分页打印这个 table 里的内容,是不是得单独做一个 table 把内容全部显示出来打印啊

兼职开发 网站和 python3 应用程序

Posted: 25 Jul 2021 11:31 PM PDT

大家好,

希望找人兼职开发:
1 )网站
2 )使用 python3 开发 Linux 应用程序,网站和这个应用程序通讯

希望你有一定的时间。有意者,请邮件联系: info@tinydebian.com

iOS+Gboard 的界面排版简直灾难..

Posted: 25 Jul 2021 11:27 PM PDT

Gboard.png

四个横条摆在那儿.. 我知道不能全怪谷歌, 毕竟在 iOS 上只能带着镣铐跳舞, 但是这布局也太草了. 谷歌为了给搜索和语音助手引流真的有点过了..

试用了一圈中文输入法, 最后还是用回 iOS 自带的了, 虽然也不是太满意. 是我要求太高了, 还是选择真的太有限了? 🐶

有没有不需要 twitter 的 API 就能爬取话题或者关键词的方法啊

Posted: 25 Jul 2021 08:08 PM PDT

api 申请了没有通过。
不知道除了 API 还有什么怎样爬到啊!

付费解决 centos7 vlan 相关问题。

Posted: 25 Jul 2021 05:43 PM PDT

环境:centos7 经过 1 根网线接交换机 3 口( trunk ),交换机 1 口( vlanid=101 )接路由器,2 口(vlanid=102)接光猫。交换机配置没问题,1 口 2 口做了 access,3 口做了 trunk (已经接 Windows10 机器做过测试,交换机配置没有问题) 需求:centos7 通过 vlan 能获取 1 口路由器连接外网,2 口经过 pppoe 链接外网。最终目的是打算聚合负载均衡这 2 条网络 目前做了很多操作,系统都重装 10 次不止了,没辙了。。。 做过以下测试: macvlan 设置虚拟网卡 enp0s25.101 ,enp0s25.102,然后 enp0s25.101 用 dhclient 获取 ip,enp0s25.102 用 rp-pppoe 包的 pppoe-setup 设置拨号。8021q 正常开启

结果就是网卡一直启动不起来。 绿色软件:aijialefu,个人折腾 费用不会太高,确实折腾的没脾气。。。

不懂就问,我这情况适合买电视盒子么,买哪种

Posted: 25 Jul 2021 03:27 PM PDT

sony2015 的电视 最近折腾好 Nas 装了 Kodi jellyfin 然后看电影的时候 普通的还行 稍微大一点的 就卡顿 蓝光原版更是几秒一卡 查了一下 是上电视盒子就能解决这个问题吗 主要是电视的确很老了,android7.0 内存 2g

有没有非 root 的方式在安卓本机填充数据

Posted: 25 Jul 2021 02:09 PM PDT

想用数据填充安卓手机防止恢复,但是小米 10 的 usb2.0 我真的是受够了,有没有什么方法能在手机上直接填充。

JB 如果想在后端推广 Kotlin,能不能先把 lombok 兼容搞好

Posted: 25 Jul 2021 01:34 PM PDT

The Lombok compiler plugin is Experimental. It may be dropped or changed at any time. Use it only for evaluation purposes. 😅😅😅

从面试中得到的一些思考和自勉-面试官角度

Posted: 25 Jul 2021 12:19 PM PDT

以面试官的角度,在面试过程中的一些思考

出差,临睡觉,发现 airpods 丢了,希望明天可以通过出租车公司找回来吧。
但是还是坚持把高铁上写的文章发了出来-《面试中得到的一些思考和自勉》,希望能够给大家一些帮助和讨论,顺便想要几个关注!

为了避免过度广告嫌疑,把原文发上来, 关注可以点进去链接扫码,谢谢! 以下为正文:


所谓人生,归根到底,就是"一瞬间、一瞬间持续的积累",如此而已。每一秒钟的积累成为今天这一天;每一天的积累成为一周、一月、一年,乃至人的一生。 稻盛和夫《干法》

最近在面试,每天面一个候选人的状态已经持续了两三周,这种状态之前也有过不少,但这次却有很多不一样的感受,很大的原因是这次面试的职位是隔壁部门的负责人,候选人里面绝大多数都是工作十年以上的,甚至不乏工作 15 年以上的,而我这个月刚好工作五年,因此在面试过程中确实有不少感触。其中最重要的一点,希望自己几年后不要 /要成为这样!

一年经验用十年-持续学习和持续思考

​ 『一年』这个词有些夸张,但是不可否认,大部分人的工作都是在用前 3-5 年的工作经历在不断重复,不同的是仅仅经历这不同的项目产品和同事,但是本质却没有改变。

​ 有个比较优秀的候选人,一直围绕着某个方向在金融行业的落地,开始本以为他是更倾向于找这个方向的落地,但他的意向是更想围绕着银行这个行业的深耕。有点出乎意外却又可以理解。不过最终以为硬性标准没有达标还是没过。围绕着某个方向或者行业不断深耕是个很典型的职业路线。

硬实力-核心竞争力

​ 公司需要一个职位的人一定会有这个职位的硬性前提,之前在大厂做面试官时,虽然都是面技术,不同职位的要求也是不尽相同,举个不恰当的例子:校招生,基础技术、潜力和学习能力;社招更多是基础技术,项目和思考等。 ​ 对于我们这个职位的前提是技术水平最少是及格状态。主要想说明不论是做什么,一定要有自己特色鲜明的硬实力,技术也好,产品设计也好,算法也好,但是一定有代表这个方向唯一性的东西,换句话说就是自己的核心竞争力,要有自己的不可替代性。

软实力-沟通与自信

​ 如果硬实力是个门槛和敲门砖,那么软实力可能是会丢掉 offer 的关键,其中软实力最主要的一点就是沟通能力,展开来说主要是:条理性、清晰性、以及自信。这里推荐一本书《金字塔原理》

成功的项目和平台-与更优秀的人合作

​ 做过一个成功的产品、有大中型公司的工作经验、优秀的学历背景( Top 10 )这几个真的是加分项,尤其是前两个,而且这两个往往也是互相关联的,优秀的平台更容易出优秀的项目。

​ 在这基础上,如果对自己做的项目有深入的思考,有自己职责以外的思考和成长,是非常大的加分项,这个体现了你的主动思考和学习的态度和能力


基于以上几点感受,总结了一些建议和优势:

  • 持续思考,持续学习,持续成长

  • 塑造和完善自己的核心竞争力

  • 去更高的平台与更优秀的人做更优秀的事情,能够更快的成长


正文结束:原文链接:面试中得到的一些思考和自勉, 如果对你有任何的触动,感谢你的关注,争取不定期持续更新。

另外也关于『希望自己几年后不要 /要成为这样!』这个观点讨论

3.5mm 接口麦克风问题

Posted: 25 Jul 2021 11:37 AM PDT

感觉这个接口的麦克风是个玄学,有时可用有时又检测不到麦克风。

耳机是苹果家 Earpods 白色插头国行版,电脑之前是支持这个耳机的麦克风的。

在更新了 Windows 11 之后这个麦克风始终无法被检测到,更新重装驱动都不行。

难道是因为预览版的锅吗?

k12 行业的从业人员 未来的路在哪里?

Posted: 25 Jul 2021 08:38 AM PDT

国家这次政策真的有点史无前例的严

有在用 JavaFx 开发桌面应用吗?

Posted: 25 Jul 2021 08:21 AM PDT

用 JavaFx 开发桌面应用的应该不多。

打算拉个交流群,如果希望交流的回复 1,超过 10 人我来拉群。哈哈。

Python 脚本的优化建议

Posted: 25 Jul 2021 08:12 AM PDT

几个月前为了自动签到和了解一下 Python,所以 fork 了一个仓库改了改,现在回头看过去总感觉写的好乱,希望大家能给出一些修改建议(指出问题和方向就行)

https://github.com/cyb233/mimikkoAutoSignIn

PS:在某些情况下出现的例如 action#768 的问题,有没有好的处理方案?
https://github.com/cyb233/mimikkoAutoSignIn/actions/runs/1046444500

最近在恶补知识,发现成为一名优秀的开发真的太难了

Posted: 25 Jul 2021 07:21 AM PDT

除了要熟练掌握耳熟能详的基础知识:操作系统、网络、数据库等,架构方面的学习、思考、实践也是相当重要。前者还会有系统的资料可供学习,后者干脆就只有网上的零零碎碎了,关键还很难有实践的机会。
再加上层出不穷的新方法论、新实践。刚重温软件架构的发展:单体应用->分层架构->SOA->微服务->云原生(服务网格?),我的天,这些要都能运用自如,想想都头大。。。
程序员的收入,尤其是优秀程序员的收入高简直太应该了。现在只有膜拜的份儿了

Java stream api 的 Collectors.toList toMap 是直接 new ArrayList 和 new HashMap 而没有额外指定容量,这个对数据处理类的应用的性能会有多大影响?

Posted: 25 Jul 2021 06:56 AM PDT

比如从 kafka 读数据然后处理啥的

两个独立的 gitlab 如何进行代码定时同步?

Posted: 25 Jul 2021 05:40 AM PDT

生产环境(阿里云)也部署了一个 gitlab,想用于生产的 jenkins 部署拉取代码然后走内网,这样速度快点。

但是实际工作的 gitlab 仓库在本地的环境,所以两个 gitlab 怎么进行代码同步,不知道有什么好的方案?

我自己想到的一个方案是,写一个定时任务,拉取项目代码然后 push 到阿里云的 gitlab

W2gj61.png

No comments:

Post a Comment