背景 大家好,我是栈长。 前些天,栈长给大家分享了两篇有意思的文章: 带了一个 3 年的开发,不会循环删除 List 中的元素,我简直崩溃!! 面试官:怎么去除 List 中的重复元素?...我一行代码搞定,赶紧拿去用! 这两篇文章确实能帮助一大部分人,其中分享的一些实现技巧,编程很多年的高手也不一定用过,不管自己水平多牛,还是多谦虚好学一些,掌握多一点总不是什么坏事。...在之前的文章中知道,增强的 for 循环底层使用的迭代器 Iterator,而 HashMap 是 fail-fast 类型的错误机制,所以遍历时删除元素会出现 java.util.ConcurrentModificationException...需要注意的是: 这种方法虽然不会发生并发修改异常,但 HashMap 并不是线程安全的,在迭代删除元素时,另一个线程可能会删除 HashMap 中的数据, 这时使用迭代器删除同样会导致并发修改异常。...需要注意的是: removeIf 虽然更方便了,但它仍然不是线程安全的,多线程场景参考方案同方法 3。
但是DELETE是具有幂等性的,这个你可能会有疑问,我执行多次DELETE后返回的状态码不一样为什么还具有幂等性。...body里面带回去 为EFCore的Model添加约束 我之前还没有为EFCore的model添加约束,这里我添加上(由于我使用的是内存数据库,所以下面的约束是不起作用的,这些约束只有在关系型数据库才起作用...因为如果是500错误的话,就意味着是服务器出现了错误,而这实际上是API消费者(客户端)提交的数据有问题,是客户端的错误。所以返回的状态码应该是 4xx 系列。...看我们之前写的捕获异常的代码,在Startup的Configure方法里: ? 现在的代码是为API的消费者返回了500状态码,并返回了一些错误信息。...使用Serilog 在实际应用中只把日志记录到控制台或Debug窗口是没用的,最好的办法还是记录到文件或者数据库等。
刚看到错误的时候直接懵逼,因为错误完全看不出来,属于框架内部报错,在犹豫是不是直接睡觉得了,毕竟也快12点了。最后还是给我一点点找到问题所在了。...在这里,我还是重现一下: 数据库死锁是事务性数据库 (如SQL Server, MySql等)经常遇到的问题。除非数据库死锁问题频繁出现导致用户无法操作,一般情况下数据库死锁问题不严重。...所以删除事务被放到锁请求队列中,客户B阻塞。...这时候客户端A也想要删除12: mysql> DELETE FROM blog WHERE id = 12; Query OK, 1 row affected (0.00 sec) 和参考文章不同的是,...我的mybatis测试代码中,因为上一个测试没有commit导致死锁,commit后就ok了。在这里,我想说,数据库的东西全还给老师了,关于锁以及事务需要重新温习一下了。
指针类一般使用new创建或delete删除,但使用malloc和free有点C语言风格的味道了。看起来怪怪的,但是找不到问题所在,有点气啊。 代码评审有时候挺好的,遇到不懂的问题又可以学习了。...既然一般指针类的创建和销毁是使用new或delete,而代码中使用了malloc和free,那就看看它的定义,看看有什么区别。 ...C++ 中偏好的内存分配方法是用 RAII 预备函数 std::make_unique 、 std::make_shared 、容器构造函数等,而在低层代码中为 new 表达式。...若初始化器 是花括号包围的实参列表,则对象被列表初始化。 从上面的帮助说明中得出:malloc创建的类是不能调用类的构造函数的,而new则会调用类的构造函数。...问下当事人说:我这是故意的,因为malloc创建的类不会调用构造函数,这样就可以让程序执行少一些代码,从而提高运行效率。 看着他得意地说得头头是道。
二、Mybaits缓存作用 为了提高数据库查询性能,缓解数据查询压力,后面会具体看到一级是在sqlsession级别缓存了查询结果和二级缓存则是在namespace级别缓存了查询结果。...rpc请求去查看任务状态,这个rpc的bo层是个循环,循环查询任务状态。...结果发现定时钟线程已经修改了任务状态,但是rpc的bo层循环查找的状态还是修改前面的,但是明明数据库里面状态已经修改了啊。...经过断点发现,rpc的bo层循环查找的结果一直和第一次查找结果一样,好奇怪,为啥类,第一想法是不是事务隔离性问题啊,毕竟mysql默认配置的隔离水平是Repeated read,但是查看配置我用的mysql...SimpleExecutor查找,而它则会先从一级缓存中查找,查找不到则从数据库查找。
1、介绍 在生产环境中,我们经常使用MySQL作为应用的数据库。但是随着用户的增多数据量的增大,我们将会自然而然的选择Memcached作为缓存数据库,从而减小MySQL的压力。...它需要到MySQL中删除,之后还须要设计一个程序将Memcached与之对应的数据也删除掉。 ...假若我们能够做到在MySQL中增删改时都能够自动触发删除memcached中相应的数据,那岂不美滋滋呀。...因为之前我在安装PHP中memcached扩展模块需要依赖这个软件库,所以安装了一个最新版本libmemcached-1.0.18,因而能够使用PHP的memcached扩展模块中的所有功能。...4、在MySQL中使用这个功能时,不要一味地将所有表的数据都布置成这种形式,避免MySQL中使用过多的函数、以及触发器而影响性能。
举个例子,如果我给你下面两个 url 你是不是立马能知道它们是干什么的!这就是 RestFul API 的强大之处!...GET /classs:列出所有班级 POST /classs:新建一个班级 下面的内容只是介绍了我觉得关于 RestFul API 比较重要的一些东西,欢迎补充。...举个例子:DELETE /classs/12(删除编号为 12 的班级) PATCH :更新服务器上的资源(客户端提供更改的属性,可以看做作是部分更新),使用的比较少,这里就不举例子了。...因为 REST 中的资源往往和数据库中的表对应,而数据库中的表都是同种记录的"集合"(collection)。如果 API 调用并不涉及资源(如计算,翻译等操作)的话,可以用动词。...param1=11¶m2=33 不用大写字母,建议不用中杠 - 不用下杠 _ 比如邀请码写成 invitation-code而不是 invitation_code Talk is cheap!
给DataGrid添加确定删除的功能 DataGrid的功能我想大家是知道的,我在实际的应用中遇到如下的问题,客户要求在删除之前做一次提示。类 似于windows。...首先我们都知道DataGrid支持删除的功能,我们可以向DataGrid里面添加删除列就可以实现, 下面我想用模板列来实现带提示的删除按钮。...可以看出这个模板列很像删除列但是又不是删除列,我们给一个普通的Button添加了一个CommandName ="Delete"的属性。这是用来响应DataGrid的ItemCommand事件的!...在删除列里面就是这样的!...我想大家都应改知道Attributes属 性吧!可以通过他向客户端输出客户端控件的属性比如:长度、颜色等等。但是通常情况我们使用它添加客户 端事件。
(response); }); } 我们在 API 客户端调用 delete() 方法 ,然后绑定一个回调函数来注销控制台中的响应对象。...如何对成功删除用户作出相应的反馈 与更新一个用户不同的一点是,一旦我们成功删除了一个用户记录,那么数据库中就没有这个用户的记录了。在传统的网页应用中,我们会删除那条用户记录,然后重定向返回用户列表。...API客户端选项 尽管我们奉献的 users.js 在小型应用程序中,HTTP 客户端可能被认为是有点小题大做了,我认为分离已经为我们提供了很好的服务,因为我们在多个组件中使用了 API 模块。...如果你想了解灵活客户端提供的所有细节,我在我的文章构建灵活的Axios客户端中详细讨论了这个想法。 在不改变客户机的外部 API 的情况下,我们可以改变客户机在后台的工作方式。...(id) { return client.delete(`users/${id}`); }, }; 现在,如果我想定制整个模块的工作方式而不影响方法,我可以在以后用一些配置替换掉 baseURL
“delete from table 呀” “怪不得,其实要删除MySQL数据是有好几种方式的,有些场景下是不应该用DELETE的,比如你这种情况。好了,让我来给你讲一下吧。”...DML操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger; 2、在 InnoDB 中,DELETE其实并不会真的把数据删除,mysql 实际上只是给删除的数据打了个标记为已删除,因此...delete 删除表中的数据时,表文件在磁盘上所占空间不会变小,存储空间不会被释放,只是把删除的数据行设置为不可见。...但对于不同的类型存储引擎需要注意的地方是: 对于MyISAM,truncate会重置auto_increment(自增序列)的值为1。而delete后表仍然保持auto_increment。...订票电话:400-806-9553 可以这么理解,一本书,delete是把目录撕了,truncate是把书的内容撕下来烧了,drop是把书烧了 ?
只要将wins的数目以文本格式返回即可,所有客户端都可以轻松地使用该结果,而不管它们是否可以解析JSON。...例如,假设客户端发出RESTful DELETE请求删除编号为271的记录。这个调用可进行一次,也可能进行100次。无论如何,最终的结果必须是一样的,即编号271的寿终正寝。下面的场景就是幂等的。...oldRecordsToDelete=10 #Bad RESTful Java design 在反例中,RESTful URL将使数据库在每次新调用时处于不同的状态,直至删除数据库中的每条记录。...保守的使用RESTful API设计的瑞士军刀:POST方法 我们已经知道,从数据库中删除10条最老的记录是对DELETE方法的错误使用,而简单的数字增量则是PUT方法的糟糕应用,这是否意味着我们不能用...当然不是。 目前为止,我们建立了两个非常重要的规则: GET调用不能更改资源的状态。 PUT和DELETE方法必须是幂等的。 但是请注意,我们还没有提到POST方法。
然而,在我研究了其他的API实现之后发现,我喜欢上了这种较短的URL样式,它把api作为是子域名的一部分,并从路由中删除了/api,这样更短、更简洁。 ?...访问令牌用于认证所有未来的API请求,生命期短,不会被取消。 刷新令牌在初始登录的响应中返回,然后跟过期时间戳和与使用者的关系一起进行散列计算后存储到数据库中。...终止会话 由于刷新令牌存储在数据库中,因此可以将其删除来“终止会话”。...attachments.js 助手函数的代码如下: ? MyComponent.js 如果你把获取附件属性这个功能委派给服务器来实现,并且只使用根级别的URL,这样不是更好吗? ?...然后,服务器在新的请求中接收到这个令牌后,就会返回更多的结果,并附带新的next_page_token,直到所有的结果全部都返回给客户端。
, false } // 如果是真正的数据地址,那就返回真正的数据(就是拿到大账本的某一页纸上的内容) return *(*interface{})(p), true}到这里已经讲完数据读取这部分的代码了...由于 ptr 是一个指针,在 64 位的处理器中,一个指针的占 8 个字节,所以第二个参数 old+8(FP),偏移量 offset 等于 8,而第三个参数 new+12(FP),偏移量再加 4 的原因是...m.missLocked() } m.mu.Unlock() } // key 存在的时候,把 key 置为 nil,注意这里不是 expunged, // 这也是我为什么要先讲 Delete...而不是 expunged!...// Delete 操作会把有值的状态,转移为 nil, // 并不会把 expunged 状态转移为 nil, // 由于 for 循环的存在,p 也不会等于 nil, // 也就是说
前提是要有健壮的数据库和底层代码,这样才能使前期准备不再是花架子。...即使 mysql 服务器和客户端是在同一台机器上,使用的协议还是 tcp,通信也是需要额外的时间。 2....,而分表是解决单张表数据过大以后查询的瓶颈问题,坦白说,这些问题也是所有关系型数据库的“硬伤”。...from TABLE_NAME where xxx DELETE属于数据库DML操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger; 在 InnoDB 中,DELETE其实并不会真的把数据删除...,mysql 实际上只是给删除的数据打了个标记为已删除,因此 delete 删除表中的数据时,表文件在磁盘上所占空间不会变小,存储空间不会被释放,只是把删除的数据行设置为不可见。
PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。 PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。 DELETE(DELETE):从服务器删除资源。...无状态:服务器不能保存客户端的信息, 每一次从客户端发送的请求中,要包含所有必须的状态信息,会话信息由客户端保存, 服务器端根据这些状态信息来处理请求。...从请求方式上无法知道API具体是干嘛的,所有在URL上都会有操作的动词来表示API进行的动作,例如:query,add,update,delete等等。...预备 在本案例的实战中,我们访问的RESTful接口都是对数据库真实的操作,新建数据库,创建一个数据库和表(根据自己喜好)。...DELETE 请求用来删除资源,DELETE请求用途和它字面意思一致,用来删除资源。和数据库中delete相对应。 在本案例中,我们设计以下DELETE请求的API。
那时用来盛放所有那些我不知道该放到哪里的的烂代码的。它包罗万象。如果我将一个变量命名为LayoutComponent,未来我会知道,它所做的只是规划布局,而不涉及任何状态。...最终,我们是用团队名称来命名的。 对于函数来说也是一样。doEverything()是一个可怕的名字,这会产生很多后果。如果这个函数可以完成所有操作,那么测试这个函数的特定部分就会变得特别难。...例如,在SQLAlchemy中调用session.close()时,closing sessions不会关闭基础数据库连接。...在删除烂代码的时候有自信 删除烂代码或过时的代码会使我感到非常不舒服。我认为多年之前被写下的代码是神圣的。我的想法是“当他们写下这些东西时,他们肯定是考虑到一些事情的。”...这是传统和文化与第一原则思维方式之间的较量。删除一年一次的终端也是如此。我在这方面得到了太多具体的教训。 我会试着从周围解决代码,而高级工程师则会试着从中间解决。删除所有内容。
XSS是一种常见的web安全漏洞,它允许攻击者将恶意代码植入到提供给其它用户使用的页面中。不同于大多数攻击(一般只涉及攻击者和受害者),XSS涉及到三方,即攻击者、客户端与Web应用。...应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。...比如说我写了一个网站,然后攻击者在上面发布了一个文章,内容是这样的 alert(document.cookie),如果我没有对他的内容进行处理,直接存储到数据库,那么下一次当其他用户访问他的这篇文章的时候...当收到 ACK 后,服务器才能转入 ESTABLISHED 状态. SYN攻击指的是,攻击客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认。...在不登出A的情况下,访问危险网站B。 看到这里,你也许会说:“如果我不满足以上两个条件中的一个,我就不会受到CSRF的攻击”。
向后兼容(非破坏性)的修改 新增 API 接口 新增请求字段 新增响应字段 在不改变其他响应字段的行为的前提下,非资源(例如,ListBooksResponse)的响应消息可以扩展而不必破坏客户端的兼容性...向后不兼容(破坏性)的修改 删除或重命名服务,字段,方法或枚举值 从根本上说,如果客户端代码可以引用某些东西,那么删除或重命名它都是不兼容的变化,这时必须修改 major 版本号。...在V2中,如果是optional修饰的字段,可通过pb生成的hasXXX()函数判断是否传了这个字段。...错误代码并告诉客户端找不到哪个特定资源。...除非业务需要(例如客户端需要判断是否为联系人找不到,还是其他资源找不到),才在接口层面定义具体某个资源找不到的错误。
SQL语句大全 –语 句 功 能 –数据操作 SELECT –从 数据库 表中检索数据行和列 INSERT –向数据库表添加新数据行 DELETE –从数据库表中删除数据行 UPDATE –更新数据库表中的数据...例如:配合微软的BackOffice中的其他服务器产品,即可建立多层主从运算模式。 了解了基本的数据流程,那是不是要问是什么实现客户端与服务器之间的沟通哪?这个是个比较有意义的问题。...如果存储过程中未指明对象的所有者(例如存储过程中的语句select * from sample,这句中的sample没有指明所有者),在执行的过程中默认的所有者查找顺序是:相应的存储过程的建立者->相应数据库的所有者...(这里我额外插一句:如果需要严密的数据操作,在任何操作中尽量加上所有者,例如leijun.sample) 3.在存储过程名称前边添加#或者##,所建立的存储过程则是“临时存储过程“(#是局部临时存储过程...可是我设置完这样,重启apache却出现找不到libmySQL.dll动态链接库的提示,几经折磨才发现,必须把php中的libmysql.dll复制到apache中的bin目录中才ok(网上教材可没有)
有状态和无状态全部混在一起。特别是在购物车或者是登录的应用中,经常刷新就丢失带来的用户体验简直棒棒哒。每一个请求并不能单独的响应一些功能,很多的功能混杂在一起里。...返回的结果往往是很随意,各种错误信息本来就是用Http的状态码构成的,可是很多人还是喜欢把错误信息返回在返回值中。...无状态(Stateless),来自客户的每一个请求必须包含服务器处理该请求所需的所有信息。换句话说,服务器端不能存储来自某个客户的某个请求中的信息,并在该客户的其他请求中使用。 3....支持按需代码(Code-On-Demand,可选),服务器可以提供一些代码或者脚本(Ross:Javascrpt,flash,etc)并在客户的运行环境中执行。...PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。 DELETE(DELETE):从服务器删除资源。
领取专属 10元无门槛券
手把手带您无忧上云