Sunday, May 30, 2021

V2EX - 技术

V2EX - 技术


为什么现在的 Java 面试越来越八股文,这样真的能招到优秀的开发么,而不是只会背书的

Posted: 30 May 2021 04:31 AM PDT

我模拟参加了一个 java 面试,我感觉问的问题都好八股

随便举几道题

  • hashmap 扩容,以及为什么 0.75 ?
  • java 动态代理的两种方式?区别?
  • 类加载机制,双亲委派,破坏双亲委派

以我浅薄的知识点来说,第一题如果说考察一个人看没看过源码,应该可以开门见山的问,就算看过源码,也不一定所有细节都记得住。再说这傻逼的 0.75 ,人家一大坨数学证明过程也没在源码里面写啊,鬼知道为啥 0.75 。不背书谁能答出来

再看第二题 背书的答案应该不涉及到字节码增强,理论上这个要答好,肯定是要好好去看字节码增强的底层实现原理。但是标准答案就是什么 JDK 代理 cglib 。区别就是一个是接口动态代理,还有什么 final 修饰的不能使用,巴拉巴拉一堆。但是我感觉没问到点子上啊

第三题我就不懂了,但是我感觉这个也是背书的题

以上三题,我没背过书,基本答不上来。然后面试官说你基础太差 呵呵哈哈哈

一加手机的官方消息推送好用吗?

Posted: 30 May 2021 04:26 AM PDT

微信之类的可以不后台运行而收到消息吗?
一加 9 系列现在系统都是自带 color os 。但是不想使用 color os,所以准备买 8 系列的,8 系列现在还是自带氢 os (接近 Android 原生)。

如果消息推送好用的话就使用自带的氢 os,不好用的话就打算刷成氧 os 。不过如果一开始就打算刷成氧 os 的话,似乎也没必要买 8 系列了,还不如直接买 9 系列。

Win10 推荐分辨率缩放规则是怎样的?

Posted: 30 May 2021 04:17 AM PDT

系统能获取到显示器的屏幕尺寸和最大分辨率吗,然后根据什么规则计算推荐缩放比例?

Python crc32 查表法制表,多项式使用 0x104c11db7,为什么 hash 表前两位没有碰撞?

Posted: 30 May 2021 04:16 AM PDT

python crc32 查表法制表,生成的表没有碰撞我可以理解,毕竟只要多项式开头和结尾是 1,那么不同的原始数据得到的 hash 是不同的,但是为什么 hash 表前两位没有碰撞?多项式的前四位是 04c1,04 结尾不是 1,按理说 hash 表前两位应该有碰撞啊,以下是 python crc32 查表法制表源代码

import copy

poly_crc32_normal=0x104c11db7
crc32_table_normal=[]
for byte in range(256):
operator=copy.copy(byte)
operator<<=24
for bit in range(8):
if (operator & 0x80000000) != 0:
operator <<= 1
operator ^= poly_crc32_normal
else:
operator <<= 1
crc32_table_normal.append(operator)
to_print_normal=list(map(hex,crc32_table_normal))
print(to_print_normal)
def crc32_normal(line):
var=0xffffffff
for ch in line:
operator=ord(ch)
operator=int('{:08b}'.format(operator)[::-1],2)
operator=operator^(var>>24)
var=(crc32_table_normal[operator])^(var<<8)&0xffffffff
var=int('{:032b}'.format(var)[::-1],2)
return var^0xffffffff

print(hex(crc32_normal('123456789')))

有没有二进制的版本管理软件推荐

Posted: 30 May 2021 04:04 AM PDT

Mac 下管理 MS Office 家的 pptx,xlsx 文件, 还有 jpg/png 等二进制文件。

这方面 git 不适用

Gitlab 社区版,邮件通知的网站地址怎么改成自定义的?

Posted: 30 May 2021 02:34 AM PDT

我是用 k8s 部署的 gitlab,gitlab 自带的 nginx 是关闭的

clone 地址已经修改( Admin Area > General > Custom Git clone URL for HTTP(S))

--- apiVersion: v1 kind: Service metadata:   name: gitlab   namespace: default spec:   clusterIP: None   selector:     app: gitlab   ports:     - protocol: TCP       port: 80       targetPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:   name: gitlab annotations:  nginx.ingress.kubernetes.io/proxy-body-size: "50m" spec:   tls:   - hosts:       - gitlab.******.com     secretName: gitlab   rules:   - host: gitlab.******.com     http:       paths:       - path: /         pathType: Prefix         backend:           service:             name: gitlab             port:               number: 80  

2VoY3q.png

新蜂商城增强版 2.1.2 版本发布,优化了支付宝沙箱支付,替换了后台编辑器为 froala editor,添加了站点演示模式

Posted: 30 May 2021 01:03 AM PDT

这里推荐题主开发的另一套 H5 商城项目, waynboot-mall 是一套全部开源的微商城项目,包含一个运营后台、h5 商城和后台接口。 实现了一个商城所需的首页展示、商品分类、商品详情、sku 详情、商品搜索、加入购物车、结算下单、订单状态流转、商品评论等一系列功能。 技术上基于 Springboot2.0,整合了 Redis 、RabbitMQ 、ElasticSearch 等常用中间件, 贴近生产环境实际经验开发而来不断完善、优化、改进中。
在线地址: http://www.wayn.ltd

2021 年 5 月 30 日更新日志

升级版本号至 2.1.2,优化代码,修复了常见 bug,这是本项目的长期稳定版本,后续新功能优先往 waynboot-mall 项目添加

  1. 秒杀专区购物车数量显示错误 bug 修复
  2. 支付宝沙箱支付 bug 修复,显示沙箱账号 $K%_1@7UM)9$)Q{CWC{Z3DO.png
  3. 将默认编辑器替换为froala editor与 tinyMCE 比较 froala 编辑器.png
  4. 添加站点演示模式,通过拦截器对不允许操作的后台路径进行错误提示处理 QQ 截图 20210530155159.png
  5. 升级 pom 文件部分依赖
  6. 本项目源码
  7. 在线地址

备注

新蜂商城增强版项目详情

Vue 回复组件提问

Posted: 30 May 2021 12:00 AM PDT

我有一个留言列表,每条评论(子评论)下面都有一个回复按钮,有一个简单的做法是,把这个回复的组件和列表项一起循环。现在的问题是怎么同时只显示 一个回复的组件。
我的想法是从接口拿到列表,为每个回复新增一个 showReply 的属性,控制当前组件显示,监听评论 id 的变化,然后点击其他地方的回复,去隐藏旧的,打开新的。还有没有其他的方法简单点

[开源] BlackDex,无需环境, Android 新姿势脱壳工具

Posted: 29 May 2021 11:57 PM PDT

BlackDex

BlackDex 是一个运行在 Android 手机上的脱壳工具,支持 5.0 ~ 12,无需依赖任何环境任何手机都可以使用,包括模拟器。只需几秒,即可对已安装包括未安装的 APK 进行脱壳。

地址

https://github.com/CodingGay/BlackDex 成品见 release,可留 star 关注一下本项目。

脱壳说明

本项目针对一代壳,摆脱对以往脱壳环境的困扰,几乎支持 5.0 以上的任何系统。并且拥有 快速方便成功率高 的优点。一般只需要几秒钟即可完成对已安装包括未安装应用脱壳。未安装应用脱壳时间主要花费在复制文件 IO 消耗上,由应用大小决定速度。已安装应用一般在数秒内即可完成脱壳。

脱壳原理

通过 DexFile cookie 进行脱壳,理论兼容 art 开始的所有版本。可能少数因设备而异,绝大部分是支持的。资源有限无法大量测试,遇到问题请提 issues.

环境要求

  • 一台普通手机
  • 无需 Xposed
  • 无需 Frida
  • 无需 Magisk
  • 无需 Root
  • 无需定制系统

演示

无法上传图片,见 github

go-admin 发布一年多了

Posted: 29 May 2021 01:40 PM PDT

go-admin 从第一版上线到现在已经有超过一年的时间了。

随着不停对功能以及代码的改造升级,目前 go-admin 已经是 1.3.7 的版本了。

在每一个版本中都经历了不同用户的亲身体验,有好评也有差评,但是我们一直坚持着,也希望 go-admin 能够让热心的朋友们节约自己时间,coding 中能够释放一些时间出来学习或者摸鱼😁,但我们的路还很长...

还不知道或者想了解的朋友可以尝试看一眼 https://github.com/go-admin-team/go-admin

这一年多里离不开各位 v 友的支持,和批评,谢谢🙏!

不前后端分离写 VUE,页面是不是会有多个 createApp 行为?

Posted: 29 May 2021 01:37 PM PDT

最近在尝试写 VUE,因为旧项目无法做到前后端分离,依旧是基于后端渲染模板模式。

一般项目,会分 页眉、侧栏,内容和页脚。在后端来说,这几块拆分好,然后用 JQ 去写一套逻辑即可。

我尝试用 VUE 去编写,VUE 要求在 createApp({...数据逻辑..}) 中就要声明好了。如果我用到 element UI 的布局划分,

//先注册页眉 header = Vue.createApp({..逻辑和组件..}).use('ElementPlus').mount('#header');  //在注册侧栏 sidebar = Vue.createApp({..逻辑和组件..}).use('ElementPlus').mount('#sidebar');  //最后注册布局 app = Vue.createApp({..逻辑和组件..}).use('ElementPlus').mount('#app');  

这是其中一个解决办法,还有另外一种,组件

//在页眉文件 header.php 声明 <script>    const app = Vue.createApp({});        app.use(ElementPlus);        app.component('header', {}) </script>  //sidebar.php 侧栏 <script>    app.component('sidebar', {}) </script>  //content.php 内容 <script>    app.component('sidebar', {}) </script>  //footer.php 页脚 <script>    app.mount("#app"); </script>  

感觉很别扭,因为我要将后端的模板变量,转换为 Javascript 的标量,数组或对象。

不知道有没有后端有其他更优雅的解决办法呢?

pandas 合并两个表,如何保留第一个表的索引?

Posted: 29 May 2021 07:18 AM PDT

df1 数据

      tickerBond  closePriceBond  bondPremRatio secShortNameBond tickerEqu  \ secID                                                                          110066     110066          199.94        -1.2442             盛屯转债    600711    110067     110067          119.53        25.9204             华安转债    600909    113021     113021          105.81        45.0989             中信转债    601998    113024     113024          101.94        36.6668             核建转债    601611    113025     113025          129.16         0.0409             明泰转债    601677 

df2 数据

        ROE tickerEqu 0  2.642931    600711 1  4.425438    600909 2  6.259092    601998 3  4.432315    601611 4  6.454054    601677 

如果按照 pd.merge(df1,df2,on='tickerEqu') ,按照列 tickerEqu 进行合并,这样会导致最后合成的新的列的索性重构,变成 0,1,2,3 这种的。

有什么办法可以保留 df1 的索引? 用 join 的话会报错,因为 df2 的索引和 df1 匹配不上。

No comments:

Post a Comment