随笔博文

  • 写业务不用架构会怎么样?(二)

    复杂度软件的首要技术使命是“管理复杂度” —— 《代码大全》因为低复杂度才能降低理解成本和沟通难度,提升应对变更的灵活性,减少重复劳动,最终提高代码质量。架构的目的在于“将复杂度分层”复杂度为什么要被分层?若不分层,复杂度会在同一层次展开,这样就太 ... 复杂了。举一个复杂度不分层的例子:小李:“你会做什么菜?”小明:“我会做用土鸡生的土鸡蛋配上切片的番茄,放点油盐,开火翻炒的番茄炒蛋。”听了小

    2022-12-14 michael007js 87

  • Chrome, Firefox(火狐), Edge 官方离线安装包下载

    Chrome, Firefox(火狐), Edge 官方离线安装包下载Google Chrome 离线安装包正式版 https://www.google.cn/chrome/?hl=zh-CN&standalone=1测试版https://www.google.cn/intl/zh-CN/chrome/beta/?hl=zh-CN&standalone=1开发者版:https://

    2024-01-26 michael007js 84

  • synchronized实现原理

    synchronized作为java语言中的并发关键词,其在代码中出现的频率相当高频,大多数开发者在涉及到并发场景时,一般都会下意识得选取synchronized。synchronized在代码中主要有三类用法,根据其用法不同,所获取的锁对象也不同,如下所示:修饰代码块:这种用法通常叫做同步代码块,获取的锁对象是在synchronized中显式指定的修饰实例方法:这种用法通常叫做同步方法,获取的锁

    2022-12-13 michael007js 84

  • linux开启端口失败

    linux添加开放端口后重启防火墙却却无法访问开放端口,重新输入开放端口命令却提示 Warning: ALREADY_ENABLED: 9004:tcp,先删除端口再重新添加解决删除指定端口firewall-cmd --zone=public --remove-port=9004/tcp --permanent开启指定端口firewall-cmd --zone=public --add-port=

    2024-10-11 michael007js 60

  • execute和submit的区别

    execute和submit的区别execute和submit都属于线程池的方法,execute只能提交Runnable类型的任务,无返回值。而submit既能提交Runable类型的任务,返回值为null,也能提交Callable类型的任务,返回值为Future。execute会直接抛出任务执行时异常,submit则不会抛出异常,但可以通过Future的get方法将任务执行时的异常重新抛出。

    2024-10-26 michael007js 49

  • 解决Android原生回声消除某些机型无效的正确姿势

    项目场景:Android回声消除可以使用原生和第三方,第三方比如:speex、webrtc aecm,但是个人觉得使用原生最简单,效果也好。问题描述使用Android原生消除回声时,如果使用不当会造成某些机型是无效的。以下代码在三星s20、vivo的某些机型就会出现无效的现象。minBufferSize = android.media.AudioRecord.getMinBufferSize(sa

    2024-11-20 michael007js 47

上一页1...18192021222324下一页 转至第
首页
关于博主
我的博客
搜索