around

手把手教你做一个缓存工具

假如想象 提交于 2020-08-10 13:28:53
日常开发中,某些数据接口即使优化到极致,都难免还会存在计算量巨大导致响应过慢,多数情况单独做一个统计表用于存放这些处理后的数据用于读取,或者接入redis/memcache存数据,就是说单次响应本身是可以接受较慢一些的,实时性并非特别高,则可以考虑引入缓存机制,提升使用体验。说到用缓存,那就会有人提出用redis,但是项目组认为项目紧急,不希望浪费时间到新的工具研究上,或虽然熟悉,但维护工作有成本,为了有限的效果付出太多不划算。那么怎么办,没得搞了,只能手把手给项目做一个缓存工具了!吃掉JVM!也和spring cache很类似的。 这样的缓存机制,无非就是key-value模型的体现,所以首先想到了map。 Map<String, Object> cache = new HashMap<>(); 一个缓存工具就完成了,快吧。怎么用的话,就类似这样嘛: @GetMapping("/{id}" ) public Object get(@PathVariable("id" ) String id) { if (cache.containKey(id)) { return cache.get(id); } // 调取服务获取对象 Object obj = service.get(id); // 塞进缓存中 cache.put(id, obj); return obj; } 挺好用的

SQL注入绕过mysql_real_escape_string()

半腔热情 提交于 2020-08-09 19:39:43
问题: Is there an SQL injection possibility even when using mysql_real_escape_string() function? 即使使用 mysql_real_escape_string() 函数,也有可能进行SQL注入吗? Consider this sample situation. 考虑此示例情况。 SQL is constructed in PHP like this: SQL是用PHP构造的,如下所示: $login = mysql_real_escape_string(GetFromPost('login')); $password = mysql_real_escape_string(GetFromPost('password')); $sql = "SELECT * FROM table WHERE login='$login' AND password='$password'"; I have heard numerous people say to me that code like that is still dangerous and possible to hack even with mysql_real_escape_string() function used. 我听过很多人对我说

何时使用.First以及何时将.FirstOrDefault与LINQ结合使用?

送分小仙女□ 提交于 2020-08-09 18:57:03
问题: I've searched around and haven't really found a clear answer as to when you'd want to use .First and when you'd want to use .FirstOrDefault with LINQ. 我到处搜索,还没有真正找到关于何时使用 .First 以及何时将 .FirstOrDefault 与LINQ结合使用的明确答案。 When would you want to use .First ? 您什么时候要使用 .First ? Only when you'd want to catch the exception if no results where returned? 仅当您希望在没有返回结果的情况下捕获异常时? var result = List.Where(x => x == "foo").First(); And when would you want to use .FirstOrDefault ? 以及何时要使用 .FirstOrDefault ? When you'd always want the default type if no result? 如果没有结果,何时总是需要默认类型? var result = List.Where(x => x

JAVAEE框架之Spring AOP

╄→гoц情女王★ 提交于 2020-08-09 18:54:26
JAVAEE框架之Spring 六.AOP AOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。 当我们系统已经设计好了之后,要去增加功能的时候,尽量少的去之前的代码。 JAVA:面向接口编程,可以定义若干接口,使用实现类实现后续需要增加的功能。 从该图可以很形象地看出,所谓切面,相当于应用对象间的横切点,我们可以将其单独抽象为单独的模块。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9V7qAs0-1592820088793)(E:\政通路\课堂笔记\S2\Spring\assets\image-20200622145019078.png)] ​ 再举一个案例: ​ 现实生活的案例,之前的老的居民楼,家里都有水表、电表,每到月末的时候,都有水利公司、电力公司的员工去抄表,电力公司的员工,挨家挨户的去抄表,有问题:太累、可能用户不在家,需要再次上门。这时候电力公司,就想到了AOP,面向切面编程,把各个各户的电表统一放到一个电表箱,由电力公司员工(宋光明)来抄表,大家看下,这时候,抄表员的效率是不是就大幅度提高了。 6.1 为什么需要 AOP ​ 想象下面的场景,开发中在

我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?|附视频讲解

拟墨画扇 提交于 2020-08-09 11:00:05
关于String有没有长度限制的问题,我之前单独写过一篇文章分析过,最近我又抽空回顾了一下这个问题,发现又有了一些新的认识。于是准备重新整理下这个内容。 这次在之前那篇文章的基础上除了增加了一些验证过程外,还有些错误内容的修正。我这次在分析过程中会尝试对Jdk的编译过程进行debug,并且会参考一些JVM规范等全方面的介绍下这个知识点。 因为这个问题涉及到Java的编译原理相关的知识,所以通过视频的方式讲解会更加容易理解一些,视频我上传到了B站: https://www.bilibili.com/video/BV1uK4y1t7H1/。 String的长度限制 想要搞清楚这个问题,首先我们需要翻阅一下String的源码,看下其中是否有关于长度的限制或者定义。 String类中有很多重载的构造函数,其中有几个是支持用户传入length来执行长度的: public String(byte bytes[], int offset, int length) 可以看到,这里面的参数length是使用int类型定义的,那么也就是说,String定义的时候,最大支持的长度就是int的最大范围值。 根据Integer类的定义, java.lang.Integer#MAX_VALUE 的最大值是2^31 - 1; 那么,我们是不是就可以认为String能支持的最大长度就是这个值了呢? 其实并不是

使用钢琴键盘作为电脑键盘[关闭]

扶醉桌前 提交于 2020-08-09 06:17:20
问题: I have RSI problems and have tried 30 different computer keyboards which all caused me pain. 我有 RSI 问题,并尝试了30种不同的电脑键盘,这些都给我带来了痛苦。 Playing piano does not cause me pain. 弹钢琴不会让我感到痛苦。 I have played piano for around 20 years without any pain issues. 我已经弹钢琴大约20年没有任何疼痛问题。 I would like to know if there is a way to capture MIDI from a MIDI keyboard and output keyboard strokes. 我想知道是否有办法从MIDI键盘捕捉MIDI并输出键盘敲击。 I know nothing at all about MIDI but I would like some guidance on how to convert this signal into a keystroke. 我对MIDI一无所知,但我想要一些关于如何将这个信号转换成击键的指导。 解决方案: 参考一: https://stackoom.com/question/Os9t

如何有效地计算JavaScript中对象的键/属性数量?

旧巷老猫 提交于 2020-08-09 05:45:34
问题: What's the fastest way to count the number of keys/properties of an object? 计算对象的键/属性数的最快方法是什么? It it possible to do this without iterating over the object? 是否可以在不迭代对象的情况下执行此操作? ie without doing 即不做 var count = 0; for (k in myobj) if (myobj.hasOwnProperty(k)) count++; (Firefox did provide a magic __count__ property, but this was removed somewhere around version 4.) (Firefox确实提供了一个神奇的 __count__ 属性,但此属性已在版本4的某个位置删除。) 解决方案: 参考一: https://stackoom.com/question/Wns/如何有效地计算JavaScript中对象的键-属性数量 参考二: https://oldbug.net/q/Wns/How-to-efficiently-count-the-number-of-keys-properties-of-an-object-in

Flash CS4拒绝放手

孤街醉人 提交于 2020-08-09 02:35:41
问题: I have a Flash project, and it has many source files. 我有一个Flash项目,它有很多源文件。 I have a fairly heavily-used class, call it Jenine. 我有一个相当频繁使用的课程,称之为Jenine。 I recently (and, perhaps, callously) relocated Jenine from one namespace to another. 我最近(也许,无情地)将Jenine从一个名称空间重新定位到另一个名称空间。 I thought we were ready - I thought it was time. 我以为我们已经准备好了 - 我以为是时候了。 The new Jenine was better in every way - she had lost some code bloat, she had decoupled herself from a few vestigial class relationships, and she had finally come home to the namespace that she had always secretly known in her heart was the one

地图开发中WebGL着色器32位浮点数精度损失问题

若如初见. 提交于 2020-08-08 16:48:42
以下内容转载自木的树的文章《WebGL着色器32位浮点数精度损失问题》 作者:木的树 链接: https://www.cnblogs.com/dojo-lzz/p/11250327.html 来源:博客园 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 前言 Javascript API GL 是基于WebGL技术打造的3D版地图API,3D化的视野更为自由,交互更加流畅。 提供丰富的功能接口,包括点、线、面绘制,自定义图层、个性化样式及绘图、测距工具等,使开发者更加容易的实现产品构思。 充分发挥GPU的并行计算能力,同时结合WebWorker多线程技术,大幅度提升了大数据量的渲染性能。最高支持百万级点、线、面绘制,同时可以保持高帧率运行。 同步推出基于Javascript API GL的 位置数据可视化API库 ,欢迎体验。 问题 WebGL浮点数精度最大的问题是就是因为js是64位精度的,js往着色器里面穿的时候只能是32位浮点数,有效数是8位,精度丢失比较严重。 分析 在基础底图中,所有的要素拿到的都是瓦片里面的相对坐标,坐标范围在0-256之间。在每次渲染时都会重新实时计算瓦片相对中心点的一个偏移来计算瓦片自己的矩阵,这种情况下精度损失比较小,而且每个zoom级别都会加载新的瓦片,不会出现精度损失过大问题。 但是对于一些覆盖物,比如marker

css中的flex布局

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-08 12:36:43
flex布局 任何一个容器都可以指定为flex布局 当父盒子设为flex布局后,子元素的float、clear、vertical-align属性将失效 伸缩布局=弹性布局=伸缩盒布局=弹性盒布局=flex布局 采用flex的元素,称为Flex容器(flex container)简称”容器“。 它的所有子元素自动成为容器成员,成为Flex项目(flex item)简称“项目” 启用flex布局:给标签加上样式:display:flex; 如果没有设置,是没有flex布局的!!!!! 常见的父项属性: 1、flex-direction设置主轴方向 flex布局,分为主轴和侧轴方向也称行和列、x轴和y轴 默认主轴方向就是x方向,水平向右 默认侧轴方向就是y方向,水平向下 元素跟着主轴排列 属性值:row:默认,为水平方向,相当于float:left row-reverse:水平反方向,相当于float:right,即从右到左 column:垂直方向,即从上到下 column-reverse:垂直反方向,即从下到上 2、justify-content 设置主轴上的子元素排列方式 使用该属性之前一定要确定好主轴方向 属性值:flex-start:默认值,从头部开始,如果主轴是x轴,则从左到右;如果主轴是Y轴,则从上到下 flex-end:从尾部开始排列,如果主轴是x轴,则子元素贴着右边