转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn]目录代码设置效果演示代码设置先导入包:\usepackage{caption}然后在需要调整的图或表中添加\captionsetup。...ht] \centering \includegraphics[width=0.9\linewidth]{images/overall_architecture_2} % 左对齐...\captionsetup{justification=raggedright, singlelinecheck=false} % 居中对齐 \captionsetup{justification...=centering} % 右对齐 \captionsetup{justification=raggedleft,singlelinecheck=false} % 两端对齐...:居中对齐效果:右对齐效果:两端对齐效果:
其实对于提交 bug 的标准,我一直都有在团队进行强调,并且以身作则,但是大部分都是针对可以联系到开发的情况,至少说是有一个可以沟通的环境的(可以当面沟通,或者拿代码说话),不像是这次,就算怀疑是被偷偷修复了...所以我顺手把之前的标准做了下改进,把本次问题的情况也可以涵盖进去,自己踩过的坑,就算给其他人垫背了。...; 3.进行关联场景的验证,尽可能确定出现问题的关键要素,可以把验证过的场景都补充到 bug 说明中; 4.确定关键要素后,尽可能的去定位问题出现的技术原因,避免只是简单的现象描述; 5.就算问题很明显...,我其实是点击「从本公众号已群发的消息中进行选择」链接来获取我的公众号文章列表的,但是为了方便第三方重现,我特意改成用公众号名称搜索的方式,因为我确认过,两个路径操作的结果相同,当然,也可能因此被怀疑是做宣传用的...,那就只能加个括号备注了,很无奈; 3.公众号文章内添加链接一共有三个路径,一个是直接贴链接,一个是搜索公众号再搜文章,还有一个是从自己公众号文章列表选取,后面两个方式就是出问题的情况,我在重现步骤中已经描述了
其实最近看代码,发现好多地方实体以及数据库DDL语句关于空值和默认值不是很统一,有时候排查问题会让你很日了狗,在最佳实践和标准的选择上,归根接地是一场小的生产力的革命,只有生产力的革命才能真正的达到降本增效...POJO类不要使用基础类型,使用包装类型 至于基础类型和包装类型有什么区别这里不说了。如果使用基础类型,byte和boolean等,实例化的对象也是不为空的,这给下游判断增加很大负担。...前两个看到关于重构系统的十六字心法,非常形象和贴切。旧的不变,新的创建。一步切换,旧的再见。...“旧的不变”是指先不动旧方法;“新的创建”是指创建一个跟原来方法功能相同的新方法,你可以通过先复制再重构的方式,来得到这个新方法,也就是整个系统的一个增量;“一步切换”是指,在充分测试之后,新的方法可以完全替代旧方法了...而增量演进原则可以有效解决这个问题。
类BigDecimal,用来对超过16位有效位的数进行精确的运算。...双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。...对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。...首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比...和float差,在处理庞大,复杂的运算时尤为明显。
在设计交互时,为了让拖拽的体验更真实,需要给用户提供很多反馈效果和提示。 大部分产品都只做了一部分反馈效果,用起来也够了,但更充足的反馈能够带来更好的体验。...下图就是一个常见的反例: 为了视觉效果的简洁,可以默认状态可以不展示拖拽隐喻,但悬停时一定要有拖拽隐喻。 点阵图标是现在最主流方式,不论移动端还是桌面端都通用。...下图是优化后正确的效果: 通过图标和指针,也能暗示拖动的方向,减少学习成本。 2. 拖拽状态 拖拽过程中,主要有两方面问题需要解决:拖拽对象不突出和拖拽对象遮挡背景,以下反例中都能体现。...下图是优化后正确的效果: 6. 选中状态 不知道大家有没有过这样的经历,把一个东西拖拽到另一个地方,拖完后就忘记刚刚拖的是什么了。 尤其是在这过程中页面还跳动一下,就完全找不着北了。...如果拖动操作较为复杂,涉及的对象多,就建议增加这个选中态,方便查找。 下图是优化后正确的效果: 选中状态不太适合用在移动端,但移动端本身也不适合复杂的拖拽操作。
但在演进过程中,开发者需要特别小心,以避免破坏现有用户或系统的功能。正确的 API 演进方式以下是一些在 API 演进过程中应该遵循的最佳实践和原则:1....版本控制:明确版本策略API 版本控制是确保 API 演进不破坏现有客户端的一种方式。通过版本控制,API 可以随着时间的推移逐步添加新功能或更改,同时保持兼容性。...这是最常见的方式,便于在 URL 中明确标识版本号。...API 文档和版本管理的同步API 文档是程序员和开发团队之间的重要桥梁。版本更新时,API 文档也需要随之更新,并清晰标识不同版本的差异。...清晰的错误处理和反馈随着 API 的变化,错误处理和反馈也要随着更新,以便开发者能迅速定位问题并解决。清晰的错误码和描述:每次 API 更新时,确保新的错误码和响应格式清晰明确,便于开发者理解。
缘起 架构分层 开发分布式的项目时,DO持久化对象和DTO传输对象的转换是不可避免的。...其二,远程调用需要额外注意网络传输的开销,如果生产者方从数据库加载出了一个一对多的依赖,而消费者只需要一这个实体的某个属性,多的实体会使得性能产生下降,并没有很好的方式对其进行控制(忽略手动set)。...可能有更多痛点,由此可见,共享持久层,缺少DTO层时,我们的系统灵活性和性能都受到了制约。...可以看到几乎每个方法都传入了一个Type,用于获取拷贝类的真实类型,而不是传入.class字节码,下面介绍正确的打开姿势: @Testpublic void genericTest1() { MapperFactory...,不用担心原始类和克隆类指向同一个对象的问题。
shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。...现成的工具类简单又安全,自己写的万一哪天出了问题呢。 这里的beanUtil 我首推hutool,它的工具类的真的太丰富了,真的感觉它太懂中国的程序员了。...这个在实际的开发中还是很实用的,具体场景具体的分析。 和之前一样,代码案例在shigen的gitee上,感兴趣的伙伴可以自行去查看。...以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注支持一下哈,您的鼓励和支持将是shigen坚持日更的动力。...同时,shigen在多个平台都有文章的同步,也可以同步的浏览和订阅: 平台 账号 链接
按钮样式的正确方式 如果你正在建立一个网站或一个web应用,你可能会用到按钮,也许看起来像按钮的链接。不管怎样,让这些正常展示是很重要的。...使用正确的元素有几个优点:它对搜索引擎友好(尤其是链接!),它适用于键盘导航,它提高了所有用户的可访问性。 尽管如此,开发人员很少使用元素。...在整个Web上,我们可以看到很多触发JavaScript操作的按钮,仔细检查后发现它们是用,或编码的。 为什么元素如此不受待见?...Safari(11.1)似乎更聪明并避免了这个问题。 我们可以使用新的: :focus-visible伪类(草稿规范)来解决此问题。....btn:focus:not(.focus-visible) { box-shadow: none; } 一个更简单的解决方案是只为focus-visible类声明焦点样式,但如果polyfill
点击上方的蓝字关注我吧 程序那些事 ? 简介 在java多线程环境中,lock和同步是我们一定会使用到的功能。那么在java中编写lock和同步相关的代码之后,需要注意哪些问题呢?一起来看看吧。...使用private final object来作为lock对象 一般来说我们在做多线程共享对象的时候就需要进行同步。java中有两种同步方式,第一种就是方法同步,第二种是同步块。...类变量是和class相关的,而实例变量是和class的实例对象相关的。 那么我们在保护类变量的时候,一定要注意sync的也必须是类变量,如果sync的是实例变量,就无法达到保护的目的。...正确释放锁 在持有锁之后,一定要注意正确的释放锁,即使遇到了异常也不应该打断锁的释放。 一般来说锁放在finally{}中释放最好。...:方法编写指南 2 ECMAScript 6新特性简介 3 java安全编码指南之:死锁dead lock ?
2017.6.16 修改文章中的一些错误 ##一、前言 急着解决问题的直接看博文的最后面吧,或者点这里跳转过去,正确的解决方式就在那。...SwipeRefreshLayout需要套在ScrollView和ListView上的时候才表现的比较友好,在其他ViewGroup上有点问题,不知道为什么,到时候去看下源码。...二、目前网上流传的解决方式 我网上找解决方法的时候,发现无非都是两种方式。...有目的性的分析,我们只需要分析和事件冲突相关的源码,所以只注释的关键部分。...重写SwipeRefreshLayout的onIntercept方法就可以很简单的解决了。 思路: 因为下拉刷新,只有纵向滑动的时候才有效,那么我们就判断此时是纵向滑动还是横向滑动就可以了。
1、简介 空格目前有两种不同的编码方式,一种是在HTML4中定义的,而另一种是在RFC-3986中定义的。...本文将简要介绍这两种编码方式,以及会给我们的开发工作带来什么样的问题,最后给出一些编码建议。...1.2 RFC-3986编码方式 RFC-3986中采用统一的编码方式,字符的编码格式为:%HH(H为十六进制字符), 并没有对空格做特殊处理。...编码建议 其实避免上面错误的方法很简单,就是在开发中我们要统一客户端和服务端的编码方式,而不能两者混用。建议客户端和服务端同时使用RFC-3986编码方式,将请求参数全部编码成%HH格式。...当然为了保证正确的编码解码,统一的字符集也不可缺少,最好都使用UTF-8。 3.
1、非递归(迭代)方式 迭代的方式是从链头开始处理,如下图给定一个存放5个数的链表。...最后一步: 2、递归方式 我们再来看看递归实现链表翻转的实现,前面非递归方式是从前面数1开始往后依次处理,而递归方式则恰恰相反,它先循环找到最后面指向的数5,然后从5开始处理依次翻转整个链表。...){ this.value = value; } } (1)迭代方式 public ListNode reverseList(ListNode head) { if(head ==...null || head.next == null){ return head; } // 记录前一个节点和当前节点 ListNode newHead = null...newHead = current; // 向后移动一位 current = temp; } return newHead; } (2)非迭代方式
项目场景: 线程池的地方用的还是挺多的,一般来说用的多的还是execute方法,submit方法还是用的挺少的,一般ThreadPoolExecutor 的 submit 方法通常用于将一个任务提交到线程池中执行...).append(queue.size()); } return info.toString(); } ---- 原因分析: 提示:跑了一次看到日志按照单线程的方式执行...:34 INFO UtilsTest :123 - thread name start:command-thread-4======== 原来submit的方式用错了...最后只能修改业务逻辑,因为对执行结果不是特别需求,所有可以改成execute方式,当然如果逻辑对返回值的需求特别的可以解耦,使用生产者消费者模式,一边计算一边处理,实现逻辑可以这样,在submit...总结 习惯了用execute就忘记了submit的正确使用方式,惯性是很恐怖的,还是得多多跑跑单元测试。
我们在使用条码软件制作条形码的时候,条码的数据默认是在条形码下方居中显示的。有一些用户因为需要可能会将数据位置做一个调整,比如条码数据居左显示、居右显示、两端分散对齐等。...点击“条码”按钮,在软件中绘制一个条形码,可以看到条码数据默认是在条码下方居中显示的,点击软件右侧的左对齐按钮,数据就显示在条码的左侧了。...01.png 如果点击右对齐,条码数据就显示在条形码的右侧。 02.png 点击两端对齐,条码数据会均匀地分散在条形码的两端。...03.png 以上就是条码打印软件中条码数据在条码下面居左、居右以及两端分散显示的具体实现方法,想要了解更多有关制作标签的操作方法,可以持续关注我们。
博客: http://www.cnblogs.com/webRobot ❈—— ——此文以纪念南京大屠杀79周年 今天Toby教你如何用python的basemap包绘制轰炸东京的地图。...在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来。比如说我们会想要在地图上画出城市,飞机的航线,乃至于军事基地等等。通常来说,一个地理信息系统都会带有这样的功能。...今天我们讨论如何在Python上实现,并且使用免费的工具包。 matplotlib是Python常用的数据绘制包。它基于numpy的数组运算功能。...matplotlib绘图功能强大,可以轻易的画出各种统计图形,比如散点图,条行图,饼图等。matplotlib常与numpy和scipy相配合,用于许多研究领域。...这样的地理绘图有助于读者理解空间相关的信息。
youtube这个不存在的网站上有很多有用的资料,一般来说我们是可以下载所有视频到本地以供离线的情况下的研究学习,网上有很多工具提供了下载功能,但是在试用了很多标称很好用的软件后,老高发现,真的没有一个能和...youtube-dl相提并论,所以老高还是记录一下如何使用正确使用youtube-dl!
Shapefile文件简介 Shapefile文件是美国ESRI公司发布的文件格式,因其ArcGIS软件的推广而得到了普遍的使用,是现在GIS领域使用最为广泛的矢量数据格式。...官方称Shapefile是一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式。 一般地,Shapefile文件是多个文件的集合,至少包括一个shp,shx以及dbf文件。...shx索引文件用于存储几何数据的索引信息,包含对主文件中每个记录长度的描述(注意不是空间索引) dbf表文件是使用dBase数据库表文件进行空间属性数据存储的文件 所以,我们如果要自己完全从底层写代码解析...Shapefile文件的话,需要根据shx文件中的信息读取shp中的二进制数据并转化为几何对象,然后再读取dbf表格,将属性添加到几何对象上就完成了对一个Shapefile文件的解析....GDAL中的空间要素模型是按照OGC的Simple Feature规范实现的,有兴趣的童鞋可以参考官方文档:Simple Feature Access 使用GDAL打开Shapefile文件 下面的例子演示了如何打开
1.插入节点,在已知节点 b 的前面插入 x ? 接口定义 首先我们定义链表的基本接口,为了显示出 B 格,我们模仿我们 Java 中的 List 接口定义。...,一个用于保存当前节点的数据 item,另外一个则是 指向下一个节点的 next 指针。...,否则需要找到当前链表指定位置的节点元素,并在该元素前面插入新的节点数据,重新组织两者节点的 next指针。...Override public E get(int index) { return node(index).item; } 删除节点 删除有两种情况,分别是删除指定位置的节点和根据数据找到对应的节点删除...,我们一定要多写才能掌握指针打断的正确操作,尤其是在删除操作最复杂。
前言 需求就是想把wgs84的地理坐标转换成2000的投影坐标,在网上看的方法但是会报错,说是ArcGIS10.5的问题,今天试了下10.2的版本可以了,所以记录下过程,免得以后忘记了。
领取专属 10元无门槛券
手把手带您无忧上云