java

使用Redis和Java进行数据库缓存

为什么数据库缓存如此重要?您在数据库中获得的信息越多,随着时间的推移它就越慢。即使是为支持许多并发请求而精心设计的数据库管理系统也将最终达到极限。数据库缓存是处理这些性能问题的最常见策略之一。缓存涉及将数据库查询的结果保存在更快,更容易访问的位置。正确完成后,缓存将减少查询响应时间,减少数据库负载并降低成本。但是,缓存也需要小心处理,因为它们实际上是在另一个位置创建另一个信息副本。保持数据库和缓存同步并保持最新可能比您预期的更棘手。在下一节中,我们将讨论一些最常见的数据库缓存策略。什么是不同的缓存策略?手动缓存(也称为缓存搁置策略)涉及直接管理数据库和缓存。您的应用程序在启动数据库查询之前检查缓存,并在对数据库进行任何更改后更新缓存。虽然如果正确实现有效,但手动缓存可能非常繁琐,尤其是在您需要查询多个数据库时。出于这些原因,开发人员发明了许多替代缓存策略。直读缓存策略在读取缓存中,应用程序首先查询缓存以查看其所需的信息是否在内部。如果没有,它将从数据库中检索信息并使用它来更新缓存。缓存提供程序或缓存库负责查询和更新缓存的详细逻辑。当应用程序重复请求相同的数据时,

  • yhblog
6 min read
编程

Python列表推导(list comprehension)VS 生成器表达式(generator expression)

你知道以下语法之间的区别吗? [x for x in range(5)] (x for x in range(5)) tuple(range(5)) 本文将向您介绍这里的区别。 关于列表的5个事实 首先,对列表进行简短回顾(在其他编程语言中通常称为“数组”): 列表是一种可以表示为元素集合的数据。一个简单的列表如下所示:[0, 1, 2, 3, 4, 5] 列表将所有可能类型的数据和数据组合作为其元素: >>

  • yhblog
7 min read
精选

We need to use gene editing wisely but also embrace its vast potential | Mary Warnock | Opinion 我们需要明智地使用基因编辑,但也要接受其巨大的潜力玛丽沃诺克|意见

中英文模式阅读 中文模式阅读 英文模式阅读 A new survey reveals Britons are keen to understand the possibilities offered by the groundbreaking science but also concerned it is properly regulated 一项新的调查显示,英国人热衷于了解开创性科学所提供的可能性,但也关注它是否得到了适当的监管 A scientist prepares DNA

  • yhblog
10 min read
java

Spring Data的魔力

企业应用程序处理数据处理,企业技术提供商努力使这样的处理尽可能容易。Spring Data项目可能是处理这类问题最先进的方法之一。该项目实际上由几个子项目组成,其中大多数子项目侧重于各种数据库的数据持久性。Spring Data最有趣的特性是能够基于存储库规范界面自动创建存储库。我们只需要定义我们的功能接口,Spring Data引擎就可以为我们生成所有的数据访问内容。更重要的是,使用Spring Data REST,我们还可以获得REST API来访问我们的数据,而无需编写一行代码!这听起来很神奇,所以让我们来看看Spring Data技术可以带来什么样的魔力。1.开箱即用的CRUD现在我们将讨论Spring Data JPA项目,该项目为关系数据库提供持久性支持。让我们用这篇文章收集的域模型:清单1.1。CollectionItem.javapackage com.collections.

  • yhblog
21 min read
AI

10个学习Python的理由

如果你是本博客的读者,那么你可能想知道我为什么要写一篇博客来告诉人们在Java博客中学习Python?几年前我不是说更喜欢Java而不是Python吗?现在,事情发生了很大的变化。2016年,Python取代Java成为大学中最受欢迎的语言,从那时起它就再也没有回来了。Python正在不断发展壮大。如果你阅读编程和技术新闻或博客文章,那么你可能已经注意到Python的兴起,因为许多流行的开发人员社区,包括StackOverflow和CodeAcademy都提到了Python作为主要编程语言的兴起。  但是,最大的问题是为什么程序员应该学习Python?Python正在发展中,这很好,但这并不意味着Java或C ++正在被淘汰。 好吧,我是一个自豪的Java开发人员,它是我最喜欢的编程语言,并且一直保持着,但是,这并不能阻止我们学习潜在的新工具和编程语言,这将使你成为一个更好的程序员,Python就是这种。  初学者从Python开始理由很简单,因为它易于学习,功能强大,足以构建Web应用程序并自动化枯燥无聊的东西。  实际上,几年前,

  • yhblog
10 min read

OAuth 2.0初学者指南

本文概述了OAuth 2.0协议。它讨论了OAuth 2.0实现过程中涉及的不同参与者和步骤。介绍:OAuth代表开放授权。它是一个免费开放的协议,建立在IETF标准和Open Web Foundation的许可之上。它允许用户与第三方共享其私有资源,同时保密自己的凭据。这些资源可以是照片,视频,联系人列表,位置和计费功能等,并且通常与其他服务提供商一起存储。OAuth通过在用户批准访问权限时向请求(客户端)应用程序授予令牌来执行此操作。每个令牌在特定时间段内授予对特定资源的有限访问权限。1. Oauth2是一个授权协议:OAuth2支持“委派身份验证”,即授予对其他人或应用程序的访问权限以代表您执行操作。考虑一下这种情况:你开车去一家优雅的酒店,他们可能会提供代客泊车服务。然后,您授权代客服务员通过将钥匙交给他来开车,

  • yhblog
8 min read

前5个REST API开发安全准则

在开发REST API时,必须从一开始就注意安全方面。在这篇文章中,我将在开发和测试REST API时查看并解释前5个安全准则。REST(或REpresentational State Transfer)是一种通过URL路径元素在系统中表达特定实体的方法。REST不是一种架构,但它是一种在Web上构建服务的架构风格。REST允许通过简化的URL而不是复杂的请求主体或POST参数与基于Web的系统进行交互,以从系统中请求特定项目。1/5 - 授权保护HTTP方法RESTful API通常使用GET(读取),POST(创建),PUT(替换/更新)和DELETE(删除记录)。并非所有这些都是每个资源集合,用户或操作的有效选择。确保传入的HTTP方法对会话令牌/ API密钥以及关联的资源集合,操作和记录有效。

  • yhblog
11 min read
精选

At Singapore’s Test Center, Self-Driving Cars Battle Fake Monsoons 在新加坡的测试中心,自动驾驶汽车对抗假季风

中英文模式阅读 中文模式阅读 英文模式阅读 Image: SMART A self-driving car designed and built by the Singapore-MIT Alliance for Research and Technology (SMART) passes through CETRAN's rain simulator. 图片:SMART由新加坡 - 麻省理工学院研究与技术联盟(SMART)设计和制造的自动驾驶汽车通过CETRAN的雨模拟器。 In the

  • yhblog
11 min read
架构

Redis中存储亿级键值对

迁移系统时,有时你必须建立一个小脚手架。我们最近不得不这样做:在Instagram上,于遗留原因,我们需要将大约3亿张照片映射到创建它们的用户的ID,以便了解要查询的分片(请参阅有关我们的更多信息)分片设置)。虽然所有客户端和API应用程序都已更新并向我们返回 完整信息,但仍有许多人缓存的旧数据。我们需要一个解决方案:1. 查找键并快速返回值2. 将数据存在内存中,理想情况下是在EC2高内存类型(17GB或34GB,而不是68GB实例类型)中3. 兼容我们现有的基础结构4. 持久化,以便在服务器宕机时我们不必重跑这个问题的一个简单解决方案是将它们简单地存储在数据库行中,其中包含“Media ID”和“User ID”列。但是,考虑到这些ID从未更新(仅插入)

  • yhblog
4 min read
java

使用Akka实现并发

介绍我开始分配读取包含100列和10万行的CSV文件并将其写入数据库。方法1:简单的Java程序所以我从一个简单的Java程序开始,运行一个while循环直到EOF,然后进行JDBC调用来存储值。这是需要花一个小时才完成了,但后来我意识到程序的运行时比创建程序花费的时间更长。因此,任务并不像看起来那么容易。那可以做些什么呢?当然,我意识到我需要并行完成任务。方法2:线程Java程序线程对我来说似乎总是很复杂。“Mutex”,“Semaphores”和“Monitors”的概念让我望而却步。所以我试着理解这个概念。Java使用Monitors来实现同步。Java的Monitors支持两种线程同步:互斥和合作。通过虚拟机对象锁在Java中支持的互斥操作,使多个线程能够独立地处理共享数据而不会相互干扰。合作,是通过等待和通知来实现的。此方法使线程能够朝着共同的目标一起工作。Monitor区域当线程到达监视区域的开头时,它将被放入相关监视器的条目集中。这个集就像银行柜台的队列一样。当一个人到达线路前端时,他们就可以进行交易。

  • yhblog
6 min read
java

Hystrix与 Sentinel:两个断路器的故事(第一部分)

Hystrix在过去几年中非常受欢迎。现在它处于维护模式,许多人正在寻找替代方案。在本文中,我将介绍Sentinel:一个开源Java限流项目。我将通过与Hystrix进行比较来做到这一点,因为更多的人都熟悉它。在这一部分,我们将在更高的层次上比较这两个项目。在下一篇文章中,我们将介绍一些代码示例。什么是Sentinel?简而言之,它是一个断路器。当某些资源一直出现故障时,将触发断路器。断路器不会继续访问已经发生故障的资源,而是拦截请求并返回故障信号。这听起来类似于断路器模式。但是,Sentinel提供了更多选择,例如流量整形,过载保护和容错。Sentinel的历史2012年:Sentinel开始作为阿里巴巴的流量控制组件。2013-2017:随着微服务的疯狂增长带来了可靠性的挑战。Sentinel迅速成长为防止级联灾难的工具。2018年:Sentinel由阿里巴巴开源。Sentinel看起来是怎么样的?Sential提供了许多处理流量控制的选项。

  • yhblog
3 min read
编程

相对不常见,但非常有用的Python技巧

​交换变量值​将一列表中的所有元素拼接成字符串查找list中最高频率的值检查两个单词是否是字谜(组成的字母和对应数量一致)反转字符串反转列表转置2维数组链式比较链式函数调用复制列表Dictionary Get按值排序字典For Else将列表转换为逗号分隔的字符串合并字典list中的最小和最大索引从列表中删除重复项查看英文原文查看更多文章公众号:银河系1号联系邮箱:public@space-explore.com(未经同意,请勿转载)

  • yhblog
2 min read
后端

Java中的不可变数据结构

作为我最近一直在进行的一些编码访谈的一部分,有时会出现不变性问题。我自己并不过分教条,但每当不需要可变状态时,我会试图摆脱导致可变性的代码,这在数据结构中通常是最明显的。然而,似乎对不可变性的概念存在一些误解,开发人员通常认为拥有final引用,或者val在Kotlin或Scala中,足以使对象不可变。这篇博客文章深入研究了不可变引用和不可变数据结构。不可变数据结构的好处不可变数据结构具有显着优势,例如:没有无效的状态线程安全易于理解的代码更容易测试代码可用于值类型没有无效的状态当一个对象是不可变的时,很难让对象处于无效状态。该对象只能通过其构造函数实例化,这将强制对象的有效性。这样,可以强制执行有效状态所需的参数。一个例子: Address address = new Address(); address.setCity("Sydney"); // address is in

  • yhblog
6 min read
java

Java创建Annotation

注解是Java很强大的部分,但大多数时候我们倾向于使用而不是去创建注解。例如,在Java源代码里不难找到Java编译器处理的@Override注解,Spring框架的@Autowired注解, 或Hibernate框架使用的@Entity 注解,但我们很少看到自定义注解。虽然自定义注解是Java语言中经常被忽视的一个方面,但在开发可读性代码时它可能是非常有用的资产,同样有助于理解常见框架(如Spring或Hibernate)如何简洁地实现其目标。在本文中,我们将介绍注解的基础知识,包括注解是什么,它们如何在示例中使用,以及如何处理它们。为了演示注解在实践中的工作原理,我们将创建一个Javascript Object Notation(JSON)序列化程序,用于处理带注解的对象并生成表示每个对象的JSON字符串。在此过程中,我们将介绍许多常见的注解块,包括Java反射框架和注解可见性问题。感兴趣的读者可以在GitHub上找到已完成的JSON序列化程序的源代码。什么是注解?

  • yhblog
15 min read

什么是JPA?Java Persistence API简介

作为规范,Java Persistence API关注持久性,它将Java对象的创建过程和具体的创建形式解耦。并非所有Java对象都需要持久化,但大多数应用程序都会保留关键业务对象。JPA规范允许您定义应该保留哪些对象,以及如何在Java应用程序中保留这些对象。JPA本身不是一个工具或框架; 相反,它定义了一组可以由任何工具或框架实现的概念。虽然JPA的对象关系映射(ORM)模型最初基于Hibernate,但它已经发展了。同样,虽然JPA最初打算用于关系/ SQL数据库,但是一些JPA实现已经扩展用于NoSQL数据存储。支持JPA和NoSQL的流行框架是EclipseLink,它是JPA 2.2的参考实现。JPA和Hibernate由于它们交织在一起的历史,Hibernate和JPA经常混为一谈。但是,与Java Servlet规范一样,JPA产生了许多兼容的工具和框架; Hibernate只是其中之一。Hibernate由Gavin King开发,

  • yhblog
14 min read
AI

使用Gensim进行主题建模(二)

​在上一篇文章中,我们将使用Mallet版本的LDA算法对此模型进行改进,然后我们将重点介绍如何在给定任何大型文本语料库的情况下获得最佳主题数。16.构建LDA Mallet模型到目前为止,您已经看到了Gensim内置的LDA算法版本。然而,Mallet的版本通常会提供更高质量的主题。Gensim提供了一个包装器,用于在Gensim内部实现Mallet的LDA。您只需要下载 zip 文件,解压缩它并在解压缩的目录中提供mallet的路径。看看我在下面如何做到这一点。gensim.models.wrappers.LdaMallet# Download File: http://mallet.cs.umass.edu/dist/mallet-2.0.8.zipmallet_path

  • yhblog
8 min read
精选

The problem with self-driving cars: who controls the code? | Technology 自动驾驶汽车的问题:谁控制代码? |技术

中英文模式阅读 中文模式阅读 英文模式阅读 Should autonomous vehicles be programmed to choose who they kill when they crash? And who gets access to the code that determines those decisions? 是否应该对自动驾驶汽车进行编程,以便选择在碰撞时杀死谁?谁可以访问决定这些决策的代码? Google's prototype self-driving

  • yhblog
15 min read

Subscribe to 银河系技术日报

旨在发现全球技术深度好文,拒绝热点浮躁浅文,对于外文,受限于鄙人英语水平和效率,都采用AI机器翻译,如果觉得翻译不好,可以直接看原文。 希望对大家有启发帮助。