问题导读 1.你认为我们已经将那些事情委托给人工智能? 2.你认为人工智能是否可以做更多的事情? 3.你认为人工智能未来可以做那些事情? 你会让人工智能为你做决定吗?...你可能会争辩说,这不是AI,但有几个新的模型以聪明的方式控制交通流量,使用各种检测车辆等待的方法等等。 今天的飞机驾驶员负责起飞和降落,并且在计算机控制飞机轨迹的同时,将剩下的时间用于监视飞行。...如果你阅读新闻,你可能会碰到有关讨论自动驾驶汽车的文章,讨论各种假设的情景,说明汽车是否应该能够解决道路困境,决定刹车失败时谁会跑过去。...我们可以把病人的监督留给机器吗?看起来人类的工作不够好,而且美国FDA刚刚批准了一个系统,该系统可以实时监测患者,分析并实时交付医院工作人员,以帮助预防医院意外死亡。临床试验看起来非常有前景。...如果你聘请了一个可怜的律师,你直到后来才知道该协议在法庭上被视为无法执行。
——《认知破局》 想必大家开发过程中都会用到多线程,用到多线程基本上都会用到条件变量,你理解的条件变量只是简单的wait和notify吗,最近工作中看同事也都只是简单的使用wait和notify,导致项目出现...本文内容简介: 什么是条件变量? 条件变量如何使用? 如何解决条件变量的信号丢失问题? 如何解决条件变量的虚假唤醒问题? 条件变量为什么一定要和锁配合使用? 1 什么是条件变量?...produce \n"; } int main() { std::thread t(Consumer); t.detach(); Produce(); return 0; } 看到这里相信你已经明白条件变量的使用啦...3 有没有更简单的“避坑”方式 难道我们每次都必须要使用while循环和附加条件来操作条件变量吗?这岂不是很麻烦? NO!...关于条件变量就介绍到这里,希望大家能有所收获,平时使用过程中可以避掉条件变量的坑。
面向接口编程,从另外一个角度理解,就是不要面向实现编程,因为接口是稳定的,而实现易变。虽然在大多数人的理解里,这个原则是针对类型的,但在命名上,我们也应该遵循同样的原则。为什么?...我举个例子你就知道了。 比如,如果我发现,我现在需要的是一个不重复的作品集合,也就是说,我需要把这个变量的类型从 List 改成 Set。变量类型你一定会改,但变量名你会改吗?...这还真不一定,一旦出现遗忘,就会出现一个奇特的现象,一个叫 bookList 的变量,它的类型是一个 Set。这样,一个新的混淆产生了。 有什么更好的名字吗?我们需要一个更面向意图的名字。...这样在写代码的时候,你就可以参考这个词汇表给变量和函数命名。...几个英语使用不当造成的坏味道: 违反语法规则的命名 不准确的英语词汇 英语单词的拼写错误 还有一些常见的与语言相关的坏味道: 使用拼音进行命名 使用不恰当的单词简写(比如,多个单词的首字母,或者写单词其中的一部分
Computed 在 Vue 中常用,是一种计算属性,里面的值是响应式的,但你知道 getComputedStyle 这个 CSS 属性吗?...从 Window.getComputedStyle() - Web API 接口参考 | MDN MDN 这里可以得知: let style = window.getComputedStyle(element...这个时候我们可以利用 getComputedStyle 拿 CSS 的伪元素信息,再搭配 CSS 原生支持的 any-hover 属性,就能在 CSS 和 JS 两处地方,准确地知道:当前是 PC 还是...黑暗模式 我们经常用到黑暗模式:自从有了 CSS 自定义属性,黑暗模式写起来也变得方便: JS 如何共享自定义属性 --mode 的内容? 如何用 JS 判断当前是处于黑暗模式,还是浅色主题?...小结 getComputedStyle 属性和 CSS 伪类搭配有妙用!
例如,现在的 app 登陆或者重置密码接口都需要发送短信验证码,如果我们的发送接口被他人利用,不仅容易出现短信盗刷,还有可能影响我们正常的服务使用。...签名校验 生成 appId 和 appKey 首先,我们可以为每个请求调用方生成固定长度的随机字符串 appId 和 appKey,可以使用 RandomUtil 方法。...ze>zuq%8ba#dqmr8dwx1jy 生成 appId 和 appKey 之后可以将其放在配置文件或者配置中心,通过 @Value 注解获取变量值,在接口调用时进行校验。...接口校验是每个接口都需要验证的,所以我们可以定义公共切面方法 对所有接口进行拦截并校验。...) { throw new Exception("签名校验失败"); } 基于时间戳+随机数 以上时间限制还是给攻击者留了 30s 的伪造时间,为了绝对安全,常用的防止重放的机制是使用 timestamp
代码@3:获取该线程对象的threadLocals属性。 代码@4:如果不为空,则将threadLocal:value存入线程对象的threadLocals属性中。...代码@2:如果父线程的inheritableThreadLocals不为空并且inheritThreadLocals为true(该值默认为true),则使用父线程的inherit本地变量的值来创建子线程的...>, Object>(parentValue); 11 } 12 }; 从中可以看出,使用了线程本地变量,内部存放的结构为Map, ?...下面一一来介绍其核心属性: AtomicReference capturedRef “捕获”的引用,根据下文的解读,该引用指向的数据结构包含了父线程在执行过程中,通过使用TransmittableThreadLocal...,即使用从父线程中捕获过来的上下文环境,在子线程中重新执行一遍,并返回原先存在与子线程中的上下文环境变量。
Cookie 的 SaimeSite 属性用于控制跨站点 Cookie 的发送权限,可用于它防止 CSRF 攻击。...受害者登录支付某宝,在支付某宝网站留存了 Cookie 引导用户进入黑客网站 在黑客网站,构造表单,使用户点击提交后,「向支付某宝发送请求,该请求用于转账」 在黑客网站,向支付某宝发送请求时,因支付某宝存在...「而在当下时间(2022年),由于 SameSite 属性的存在,跨域请求很难携带 Cookie。」 因此 CSRF 攻击变得非常困难。...如果在跨域情况下需要发送 Cookie,则 SameSite 为 None,需要指定 Cookie 属性 Secure 在 HTTPS 下发送。...作业 SameSite 有哪些属性 什么是 CSRF 攻击,如何通过 SameSite 避免 CSRF 攻击
最近想到了一个问题,Java的属性能够被Override吗?首先让我们看一下下面这个继承的例子。...System.out.println(c1.s); Super c2 = new Sub(); System.out.println(c2.s); } } 你觉得输出的结果会是什么...答案跟我们预料的一样,输出结果如下: Sub Super 不觉得奇怪吗?我们确实创建了两个Sub对象,但是为什么第二个输出的结果却是Super。Override在你心目中是不是一个惊叹号?...你脑袋里是不是充满了问号上面的例子中定义了一个隐藏字段。在类中,与父类中的字段具有相同名称的字段为隐藏字段,即使它们的类型不同。在子类中,父类中的字段不能通过其简单名称引用。
最近想到了一个问题,Java的属性能够被Override吗?首先让我们看一下下面这个继承的例子。...System.out.println(c1.s); Super c2 = new Sub(); System.out.println(c2.s); } } 你觉得输出的结果会是什么...答案跟我们预料的一样,输出结果如下: Sub Super 不觉得奇怪吗?我们确实创建了两个Sub对象,但是为什么第二个输出的结果却是Super。Override在你心目中是不是一个惊叹号?...你脑袋里是不是充满了问号? 上面的例子中定义了一个隐藏字段。在类中,与父类中的字段具有相同名称的字段为隐藏字段,即使它们的类型不同。在子类中,父类中的字段不能通过其简单名称引用。
这篇文章主要是和大家聊一聊,在设计一个登录接口时,不仅仅是功能上的实现,在安全方面,我们还需要考虑哪些地方。 安全风险 暴力破解!...我们可以设定某个 IP 下调用登录接口错误次数达到一定时,则禁止该 IP 进行登录操作。...那难道就没有一个比较好的方式来防范吗? ...当用户输入密码次数大于 3 次时,要求用户输入验证码(最好使用滑动验证) 当用户输入密码次数大于 10 次时,弹出手机验证,需要用户使用手机验证码和密码双重认证进行登录 手机验证码防刷就是另一个问题了,...这样会存在网站的所有用户名被泄露的风险(遍历该接口即可),需要在交互或逻辑上做限制 ... 后记 现在国家不断的出台各种法律,对用户的数据越来越看重。
在设计接口时,有很多因素要考虑: 接口的业务定位 接口的安全性 接口的可扩展性 接口的稳定性 接口的跨域性 接口的协议规则 接口的路径规则 接口单一原则 接口过滤及接口组合 本篇文章将简要分析这些因素。...一 规范性建议 ---- 1.职责原则 在设计接口时,必须明确接口的职责,即接口类型,接口应解决什么业务问题等 2.单一性原则 在明确接口职责的条件下,尽量做到接口单一,即一个接口只做一件事,而非两件以上...很多非资深接口设计者,在设计接口时,总认为接口所做的事越多,越牛叉,这是非常严重的错误认识。...,接口并发量的考虑,接口防攻击的考虑,接口跨域的考虑等。...(二)定义接口授权类别 如下为定义接口授权类别 ? (三)用户接口 1.用户注册 ? 2.Request ? 3.Responce ?
Jeff Atwood 曾说:“想出好的命名的确很难,但是有难的道理,因为好的命名需要只用一两个单词出表达你的根本意思。”...就算人家有注释,说不定你得把注释当成关键字,好好地Bing一把,学他个三五个月,你才能理解作者的意图。...准确的命名可以提高代码的可读性,让人容易理解,方便调试,也给以后修 改和维护你的代码的人带来方便。一旦开始做了,很快你会发现要想出一个简洁又准确的名字没那么容易。随身带着一本词典?
一般情况下,在JS中定义变量,是使用var、let、const。比如:var abc =1;但如果你不希望别人看到你定义了一个变量abc,该怎么办呢?...可以这样写:this["abc"]=1;这样便也定义了一个变量abc。啊?能这么写吗?能!不信?测试运行一下就知道了。但这还是看到了abc字符串,也看到了赋值的内容是数字1。有没有办法更隐藏一些呢?..."abc"]=1;会变成:this["\u0061\u0062\u0063\u0064"]=0x3ba17^0x3ba16;这时,如果进行console.log(abc)或alert(abc),会看到变量...但在这行代码中,一眼看去,即不存在变量abc,也没有数值1。是不是很有意思呢?这样的JS编程技巧,你学会了吗?
面试官:你了解接口测试吗? 一、前端和后端 在谈论接口测试之前,让我们先明确前端和后端这两个概念。在互联网开发中,前端和后端经常一起工作以完成一个任务。...虽然这些概念可能有点抽象,但你只需要记住: 前端负责让页面看起来漂亮,后端负责实现网页的功能。 二、接口 “接口”在计算机科学中是一个非常重要的概念。...比如,你拿到了微信的注册接口,用 工具直接模拟客户端访问,发送一个注册请求。...而对于登录功能,如果没有进行完善的接口测试,也许会出现可以使用 SQL 注入的方式登录的漏洞,甚至获得管理员权限。这不是很可怕吗?...因此,你可能需要使用像unittest或pytest的Python测试框架来组织你的测试代码。 如果你还有什么疑问,请从下方留言吧~
所以,如果走在路上忽然看到墙上探出半个头的USB接口,无须惊慌,可以欢呼:恭喜你找到了组织。...纽约大桥脚下的USB接口 ? 巴黎艺术桥上伪装成爱情锁的USB接口 “Dead Drops”项目运作4年多,覆盖的城市从英国伦敦到越南河内,甚至是南非的约翰内斯堡。...当然你猜得没错,人们也会往“Dead Drops”U盘里上传色情影片或病毒,内容五花八门。Bartholl提醒说,“公共场合的开放无遮挡会增加这些风险。...所以,在接入这些任意一个USB接口前,你要先做好心理准备,要保护好你的电脑。” ? 由于在公共场合,很多USB接口可能在风吹雨打中损坏。...除了鼓励大家安装,Bartholl也呼吁人们随时在项目网站上更新它们的使用状况。而根据网站的数据,中国也有两个“Dead Drops”的USB接口,一个在北京,另一个在广州。
不是first占比是1/3吗?second占比是2/3吗?还有不是应该layout_width不是应该设置为0dp吗? 这现象怎么回事??...的确应该设置为0dp,下面就来解释一下为什么会出现这个奇怪的现象 被设置的weight值的控件,宽度应该为该控件的宽度+父控件的剩余空间*比例 水平方向的线性布局中:使用weight时,需注意将宽度设置为...0dp 垂直方向的线性布局中:使用weight时,需注意将高度设置为0dp 这里以水平方向为例: 该控件所占的宽度=该控件原宽度+(父控件总宽度-已有控件总宽度)*比例 即 该控件原宽度+剩余宽度*比例...这个“权重”属性仅仅在LinearLayout使用,在RelativeLayout没有这个属性。...容易出现的考题如下: 如这张图所示: 左边的代码会出现右上角的现象,文本的基线对齐导致出现了我们不想要的结果,那么就在LinearLayout中加上属性android:baselineAligned=
我们强调面向接口编程,想实现OCP或DIP,都要依赖于接口实现。 接口不就是一个语法吗?把需要的方法都放到接口里面,接口不就出来了吗? 这种对于接口的理解,还只停留在语法层面。...在接口中,不要放置使用者用不到的方法: 站在使用度,这太合理了,我怎么可能爱上我不需要的方法呢? 作为设计者,你肯定也同意 但实际设计时,却不见得都能记得了。...这有什么问题吗? 问题就在于,一个“胖”接口常常是不稳定的。...用这种角度去评估,你就会发现,不稳定的“胖”接口影响面太广。 怎样修改这段代码呢?既然这个接口是由于“胖”造成的,给它减肥就好了。根据ISP,只给每个使用者提供它们关心的方法。...你的角色 回顾设计改进过程,重点在于,原本那个大的TransactionRequest被拆成若干小接口,每个小接口就只为特定的使用者服务。
首先这里先普及一下,在Java中,我们一般开启事务就有三种方式 XML中根据service及方法名配置切面,来开启事务(前几年用的频率较高,现在基本很少用) @Transactional注解开启事务(使用频率最高...) 采用spring的事务模板(截图中的方式,几乎没什么人用) 我们先不纠结为什么使用第三种,后面在讲事务传播机制的时候我会专门介绍,我们聚焦一下主题,你现在只要知道,那个是开启事务的意思就行了.我特意用红色和蓝色把日志代码圈起来...其中这个校验的代码是RPC调用,该接口的同事并没有像肥朝一样值得托付终身般的高度可靠,导致耗时时间较长,从而导致后续线程获取数据库连接等待的时间过长.你再根据前面说的小学数学来算一下就很容易明白该压测问题出现的原因...其实这个和我们这个压测问题是一样的.首先你本地事务中调用RPC既不能起到事务作用(RPC需要分布式事务保证),但是又会因为RPC不可控因素导致数据库连接占用时间过长.从而引起接口超时.当然我们也可以通过...APM工具来梳理接口的耗时拓扑,将此类问题在压测前就暴露.
同时OLED屏幕的功耗更低,因此很多高端机器倾向于使用OLED屏幕,追求极致的体验。 今天以OLED为主,介绍下屏幕接口的组成,屏幕接口电路部分主要包括电源、IO和通信引脚3大类。...对于OLED屏幕而言,AVDD是提供给屏幕内部模拟电路部分供电,电压通常在5.6~7.9V,使用boost升压架构,通过ASWIRE引脚来控制电源模块改变电压。...VCI是给屏幕核心电路供电,IOVDD是给除MIPI外的接口供电。对于LCD屏幕还需要高压背光,常达到二十几伏。...所以有的人屏幕不小心摔碎了,但是却依然可以正常使用,这就是外面的玻璃盖板碎了,内部触控和显示部分并没有收到损伤。...现在市场上使用的折叠手机,由于需要折叠,表面不能有坚硬的玻璃盖板,因此在折叠位置容易出现折痕。
然而,对于这样一个极具价值的平台,你真的会使用吗?...一、如何使用github进行项目管理 1.首先,你得明确需要上传github的项目内容。这里我要特别提醒,你可别提交与公司相关的内容,你可是签过保密协议的,提交的内容要慎重,尽量避开与公司相关的内容。...搜寻好的github开源项目有两种途径: github的搜索功能:如果你对学习的内容有明确的方法,使用这种。 github的每日趋势:如果你对最新的技术热点感兴趣的话,使用这种。...首先你要有明确的项目实现目标和设计思路,其次你需要将之前模仿过程中汲取到的精华与自身的项目经验结合以及设计思路结合起来,最终设计和实现一个有使用价值的开源项目,并运用到实际的开发工作中去不断检验项目的价值...当然,如果你不怕骚扰的话,也可以放上你的qq号和邮箱。 5.丰富的使用案例。这点要求可能比较高了,一般个人开源者很少会去收集项目的使用案例。
领取专属 10元无门槛券
手把手带您无忧上云