技术文章

SQL 性能起飞了!

强颜欢笑 提交于 2021-02-18 15:37:51
点击上方 Java后端 , 选择 设为星标 优质文章,及时送达 这篇文章总结了 52 条 SQL 性能优化技巧,用简洁明了的语言介绍给大家,不废话全是干货,需要的可以收藏,退出。不不不,收藏,看完再退出。 1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2. 应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。 3. 应尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。 关于 MySQL 相关的文章和教程发布了很多,关注微信公众号 Java后端,回复 666 下载就行了。 4. 应尽量避免在 where 子句中使用 or 来连接条件, 否则将导致引擎放弃使用索引而进行全表扫描, 可以 使用UNION合并查询: select id from t where num = 10 union all select id from t where num = 20 5. in 和 not in 也要慎用,否则会导致全表扫描,对于连续的数值,能用 between 就不要用 in 了: Select id

Flutter应用——解密Flutter响应式布局

核能气质少年 提交于 2021-02-18 15:37:26
解密Flutter响应式布局 Flutter是一个跨平台的应用开发框架,支持各种屏幕大小的设备,它可以在智能手表这样的小设备上运行,也可以在电视这样的大设备上运行。使用相同的代码来适应不同的屏幕大小和像素密度是一个挑战。 Flutter响应式布局的设计没有硬性的规则。在本文中,我将向您展示在设计响应式布局时可以遵循的一些方法。 在使用Flutter构建响应式布局之前,我想说明一下Android和iOS是如何处理不同屏幕大小的布局的。 Android的方法 为了处理不同的屏幕尺寸和像素密度,在Android中使用了以下概念: 1. ConstraintLayout Android UI设计中引入的一个革命性的东西是ConstraintLayout。它可以用于创建灵活的、响应性强的UI设计,以适应不同的屏幕大小和尺寸。它允许您根据与布局中其他视图的空间关系来指定每个视图的位置和大小。 但这并不能解决大型设备的问题,在大型设备中,拉伸或只是调整UI组件的大小并不是利用屏幕面积的最优雅的方式。在屏幕面积很小的智能手表,调整组件以适应屏幕大小可能会导致奇怪的UI。 2. Alternative layouts 要解决上述问题,您可以为不同大小的设备使用alternative layouts。例如,你可以在平板电脑等设备上使用分屏视图来提供良好的用户体验,并明智地使用大屏幕。

2021新年最新分享:阿里Java岗5轮技术面经整理

北慕城南 提交于 2021-02-18 15:37:05
写在前面 又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一 定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。 面经分享 今天给大家分享一个面试大厂的完整面经,小伙伴们可以对照下,这些面试题自己是否都会了呢? 同时后面还整理了这些问题的一套面试解析文档及架构学习笔记资料,有需要的小伙伴 一轮技术面(90分钟) hashmap和hashtable区别 为什么会产生死锁 jvm类加载 java反射获取私有属性,改变值 反射用途 所用数据库 项目难点,问题 如何解决项目中遇到的问题 项目中遇到的最难解决的地方 二轮技术面(120分钟) 讲项目 数据库乐观锁使用 如何分库分表 MySQL极限 HashMap源码 设计一个线程安全的HashMap 快排的实现,时间复杂度和空间复杂度 会什么算法 如何把项目变成SOA架构 Spring源码,最深刻的模块,aop用途 JVM内存模型 垃圾回收机制 项目中查看垃圾回收 三轮技术面(150分钟) ConcurrentHashMap底层原理? 手写一个LRU(用LinkedHashMap) HashMap底层数据结构? JDK1.8中的HashMap为什么用红黑树不用普通的AVL树? 为什么在8的时候链表变成树?

go-admin在线开发平台学习-2[程序结构分析]

点点圈 提交于 2021-02-18 15:36:48
紧接着上一篇,本文我们对go-admin下载后的源码进行分析。 首先对项目所使用的第三方库进行分析,了解作者使用的库是否是通用的官方库可以有助于我们更快地阅读程序。接着对项目的main()方法进行分析,因为程序使用cli的方式启动,对cli不同的命令进行分析。基于此俩点开始工作。 go-admin中使用的第三方库 cobra 强大的cli封装,支持命令嵌套 cast 简单安全的类型转换 casbin 轻量级开源访问控制框架,采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等 gorm 一个神奇的,对开发人员友好的 Golang ORM 库 sentinel-golang 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。 opentracing-go 分布式追踪库 cron 定时任务库,支持cron表达式 启动分析 main.go作为程序第一个入口文件,main()方法作为程序入口 使用corboa命令行的方式进行启动,有多个不同的命令,如下所示 查看系统版本 go-admin version 查看系统配置 go-admin config 服务启动 go-admin

峰回路转,为什么总是做白帽会笑道最后?

↘锁芯ラ 提交于 2021-02-18 15:36:24
峰回路转主要是指一件事情短时间只是一个表象,而经过长时间会有一个比较好的转变,这对于我们形容如今做白帽SEO来说,在贴切不过了,因为曾经的白帽SEO已经被严重的边缘化,达到了,谈及SEO便会不自主的谈快排,好像快排是做SEO的必经之路一样,但峰回路转终究百度还是站在了白帽的一侧,让白帽笑道最后。 那么,峰回路转,为什么总是做白帽会笑道最后? 根据以往做SEO推广的经验,我们将通过如下内容阐述: 一.理念不同 其实峰回路转,主要原因是做白帽的理念不同,如果是做SEO快排,首先你是为了自己的利益而选择了作弊,利用一些假数据来获取高排名,其实如果你的网站质量尚可,通过快排提高排名还可以,但人终归是贪婪的,新站基础搭建好就开始刷,就算排名靠前这也是一种资源浪费。 1.用户思维 而做白帽则不同,做白帽首先你是要满足用户需求,因此要不断创作优质文章来提高用户需求,让搜索引擎和用户来判断网站质量,如果一个网站有有价值的内容,必然会排名提升,这就形成了一个良性循环,不断的增加网站各种排名指标,这也是做正规SEO为什么网站数据上涨比较慢的主要原因。 2.发展思维 再者,做白帽seo有发展思维,当你不断提高网站价值时,这个过程是累计式的,短暂是不容易看出来的,你看利用快排所做的排名,虽然排名会靠前但转化并比不过白帽站,究其原因是做白帽SEO有发展思维,网站是不断提高价值,而对用户有更大的价值

流程图控件GoJS教程:内置GraphObject类各指数介绍(三)

旧城冷巷雨未停 提交于 2021-02-18 15:35:22
GoJS 是一款功能强大,快速且轻量级的流程图控件,可帮助你在JavaScript 和HTML5 Canvas程序中创建流程图,且极大地简化您的JavaScript / Canvas 程序。 点击下载GoJS最新版 相关内容推荐 流程图控件GoJS教程:内置GraphObject类各指数介绍(一) 流程图控件GoJS教程:内置GraphObject类各指数介绍(二) fromMaxLinks : number 获取或设置此端口可能发出的最大链接数。LinkingBaseTool.isValidFrom使用此属性。 该值必须为非负数。默认值为无穷大。 除非整个Node都充当单个端口,否则必须在portId不为null的GraphObject上设置此属性,在这种情况下,应在Node上设置此属性。 fromShortLength : number 获取或设置来自该端口的链接的末段停止到实际端口的距离。正值受fromEndSegmentLength或Link.fromEndSegmentLength限制。负值会导致链接扩展到端口。默认值为零。 当您具有粗链接和尖的箭头时,此属性很有用。通常,链接Shape一直延伸到箭头的末端。如果链接“形状”较宽,则会在箭头后面看到其边缘。通过将此属性设置为较小的正值,链接形状可以在箭头的主体内结束,而仅箭头的点在链接的末端可见。

AtCoder Beginner Contest 104

∥☆過路亽.° 提交于 2021-02-18 15:30:15
A - Rated for Me Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100 100 points Problem Statement A programming competition site AtCode regularly holds programming contests. The next contest on AtCode is called ABC, which is rated for contestants with ratings less than 1200 1200 . The contest after the ABC is called ARC, which is rated for contestants with ratings less than 2800 2800 . The contest after the ARC is called AGC, which is rated for all contestants. Takahashi's rating on AtCode is R R . What is the next contest rated for him? Constraints 0 ≤ R ≤ 4208 0≤R≤4208 R R is an integer.

python接口自动化(二十一)--unittest简介(详解)

半世苍凉 提交于 2021-02-18 15:29:42
简介   前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest。熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG,这个招聘的需求上也是经常见到的。python 里面也有单元 测试框架-unittest,相当于是一个 python 版的 junit。python 里面的单元测试框架除了 unittest,还有一个 pytest 框架,这个实际上用的比较少,后面有空再继续介绍和分享。unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测 试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。 学习和了解unittest 1、查看其中文官网: https://docs.python.org/zh-cn/3/library/unittest.html 英文官网: https://docs.python.org/3/library/unittest.html 2、先导入 unittest用 help 函数查看源码解析查看描述: Python unit testing framework, based on Erich Gamma's JUnit and Kent Beck's Smalltalk

技术人自己的KPI

本小妞迷上赌 提交于 2021-02-18 15:29:12
为什么需要技术KPI 在业务技术团队,有一个不好的趋势,就是团队越来越业务,越来越没有技术味道。每个人都在谈业务,技术大会上在谈业务,周会上在聊业务,周报里写的是业务项目...... 唯独少被谈及的是技术本身。此处并不是说业务不重要,而是说理解业务和把控业务需求是技术人员的base,而不是全部。 将就的代价 这种技术味道的缺失对技术团队来说是非常可惜的,也不利于技术人员的成长和发展。因为很难想象一个没有技术追求的团队能开发出一个健壮的、可维护性好、可扩展性好的系统。相反,这种业务代码的堆砌,从短期看也许是“较快”实现了业务需求,但是从长远来看,这种烂系统的增加会极大的阻碍业务的发展,形成一个个的黑洞应用(吃人不吐骨头),而工程师被裹挟在业务需求和烂系统之间,疲于应对,心力交瘁。 这种将就将导致系统腐化堕落,技术债越垒越高,丑陋的代码疯狂滋长,像肿瘤一样消耗你所有的能量。就像Robert C. Martin说的“不管你们有多敬业,加多少班,在面对烂系统时,你任然会寸步难行,因为你大部分的精力不是在开发需求,还是在应对混乱。” 作为技术人员,我们不能忘记我们技术人的首要技术使命是治理软件复杂度。 技术Leader的失职 造成这种局面,我们的技术管理者,我们的TL要负有主要责任。说的重一点,是工作上的失职,这种失职主要体现在两个方面,一个是技术不作为,另一个是业务不思考。 技术不作为

SEOer:为什么要定期参加SEO大会!

梦想与她 提交于 2021-02-18 15:28:51
对于SEOer而言,在日常工作中,我们只有不断的学习与实践,才能够快速的积累自己的职业技能,特别是参加一些行业会议。 那么,SEOer,为什么要定期参加SEO大会? 在国内,每年都会举行SEO会议,它是SEOer的盛宴,它是知识共享与建立人脉关系链的有效渠道,值得每个SEO人员参与,主要的原因: 1、学习前沿知识 几乎每年国内SEO专业大会,都会有来自百度搜索的专业人士,分享百度搜索最近一年的搜索动态,你可以了解到: ① 算法最新动向,比如:原创的扶植,采集的打击。 ② 网站优化的注意事项,比如:robots.txt最新使用策略。 ③ 网站的运营策略,比如:熊掌号的用户运营,以及对优质站点扶植的春笋计划。 2、建立人脉关系 几乎,每参加一次会议,你都会遇到一批新的SEO人才,他们在每个领域都有自己的独门秘籍,在相互交流的过程中,往往经常形成了小范围的社群。 特别是在固定区域中,对方经常不存在竞争状态,而是习惯分享: ① 便捷的SEO工具,比如:关键词挖掘 ② 本地SEO优化的策略,资源共享,比如:本地新闻媒体的共享。 3、扩大品牌影响力 如果你具有一定的SEO实战能力,那么你经常会被SEO大会选择为案例分享嘉宾,虽然它并没有给你带来直接的经济效益,但它却可以给你带来:品牌曝光与产品宣讲的机会。 这也是为什么最近,这几年SEO会议,偶尔被诟病的问题,但仍然值得参与。