Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例


Posted in Python onMarch 18, 2020

非关系型图数据库Neo4j简介

Neo4j是现今最火爆的图数据。在2010年发布,产品的发展势头还算不错。

作为图数据库,Neo4j最大的特点是关系数据的存储。

图数据库除了能够像普通的数据库一样存储一行一行的数据之外,还可以很方便的看出存储数据之间的关系信息。

适合存储”修改较少,查询较多,没有超大节点“的图数据。

图数据库Neo4j应用场景

社交网络

根据用户与其他用户的关系为用户推荐新的朋友。例如,在QQ中给你推荐朋友的朋友 。

智能推荐引擎

通过分析用户有哪些朋友、用户朋友喜好的产品、用户的浏览记录等关系信息推测用户的喜好进而为用户推荐商品。

知识图谱

根据知识点间的关系建立图谱,帮助用户搜索到关联的知识。例如在百度上搜索Neo4j,会同时出现MySQL等类似的内容。

恶意软件检测

通过记录软件行为的各种关系数据,例如其访问了哪些IP、访问了哪些系统资源,进而分析软件行为是否具有恶意。

网络、数据中心管理

网络、数据中心这些基础设施自身就是一个包含复杂关系的网络,利用Neo4j可以方便的建立设备之间的关系,以便于对整个系统的管理。

Neo4j优点

  • 数据的插入,查询操作很直观,不用再像之前要考虑各个表之间的关系。
  • 提供的图搜索和图遍历方法很方便,速度也是比较快的。

Neo4j缺点

  • 最不能让人忍受的就是极慢的插入速度。可能是因为创建节点和边的时候需要保存一些额外信息(为了查询服务)。不知道是不是我代码的问题,插入10000个节点,10000条边花了将近10分钟…
  • 超大节点。当有一个节点的边非常多时(常见于大V),有关这个节点的操作的速度将大大下降。这个问题很早就有了,官方也说过会处理,然而现在仍然不能让人满意。
  • 提高数据库速度的常用方法就是多分配内存,然而看了官方操作手册,貌似无法直接设置数据库内存占用量,而是需要计算后为其”预留“内存…

CentOS安装启动Neo4j

下载Neo4j

下载地址:https://neo4j.com/download-center/#community

包地址:https://neo4j.com/artifact.php?name=neo4j-community-3.5.6-unix.tar.gz

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

下载 3.5.6 版本

curl -O https://neo4j.com/artifact.php?name=neo4j-community-3.5.6-unix.tar.gz

安装Neo4j

tar -zxvf neo4j-community-3.5.6-unix.tar.gz

移动文件夹

mv neo4j-community-3.5.6/ /usr/local/neo4j

效果

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

修改Neo4j配置文件

配置文件路径

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

1、修改第22行load csv时路径,在前面加个#注释掉,可从任意路径读取文件

#dbms.directories.import=import

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

2、修改35行和36行,去除注释,设置JVM初始堆内存和JVM最大堆内存

(理论上JVM最大 堆内存越大越好,但是要小于机器的物理内存)

dbms.memory.heap.initial_size=512m

dbms.memory.heap.max_size=1g

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

如果不知道还剩多少,可以用linux命令free -m

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

3、修改46行,可以认为这个是缓存,如果机器配置高,这个越大越好

dbms.memory.pagecache.size=5g

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

4、修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库

dbms.connectors.default_listen_address=0.0.0.

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

5、默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

dbms.connector.bolt.listen_address=:

dbms.connector.http.listen_address=:

dbms.connector.https.listen_address=:

去掉注释

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

6、修改245行,去掉#,允许从远程url来load csv

dbms.security.allow_csv_import_from_file_urls=true

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

7、修改265行,去除注释设置neo4j可读可写

dbms.read_only=false

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

8、3.5.6 版本配置文件(注:各个版本中配置文件是不同的)

#*****************************************************************
# Neo4j configuration
#
# For more details and a complete list of settings, please see
# https://neo4j.com/docs/operations-manual/current/reference/configuration-settings/
#*****************************************************************

# The name of the database to mount
#dbms.active_database=graph.db

# Paths of directories in the installation.
#dbms.directories.data=data
#dbms.directories.plugins=plugins
#dbms.directories.certificates=certificates
#dbms.directories.logs=logs
#dbms.directories.lib=lib
#dbms.directories.run=run

# This setting constrains all `LOAD CSV` import files to be under the `import` directory. Remove or comment it out to
# allow files to be loaded from anywhere in the filesystem; this introduces possible security problems. See the
# `LOAD CSV` section of the manual for details.
# dbms.directories.import=import

# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
#dbms.security.auth_enabled=false

# Enable this to be able to upgrade a store from an older version.
#dbms.allow_upgrade=true

# Java Heap Size: by default the Java heap size is dynamically
# calculated based on available system resources.
# Uncomment these lines to set specific initial and maximum
# heap size.
dbms.memory.heap.initial_size=512m
dbms.memory.heap.max_size=1g

# The amount of memory to use for mapping the store files, in bytes (or
# kilobytes with the 'k' suffix, megabytes with 'm' and gigabytes with 'g').
# If Neo4j is running on a dedicated server, then it is generally recommended
# to leave about 2-4 gigabytes for the operating system, give the JVM enough
# heap to hold all your transaction state and query context, and then leave the
# rest for the page cache.
# The default page cache memory assumes the machine is dedicated to running
# Neo4j, and is heuristically set to 50% of RAM minus the max Java heap size.
dbms.memory.pagecache.size=5g

#*****************************************************************
# Network connector configuration
#*****************************************************************

# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0

# You can also choose a specific network interface, and configure a non-default
# port for each connector, by setting their individual listen_address.

# The address at which this server can be reached by its clients. This may be the server's IP address or DNS name, or
# it may be the address of a reverse proxy which sits in front of the server. This setting may be overridden for
# individual connectors below.
#dbms.connectors.default_advertised_address=localhost

# You can also choose a specific advertised hostname or IP address, and
# configure an advertised port for each connector, by setting their
# individual advertised_address.

# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=:7687

# HTTP Connector. There can be zero or one HTTP connectors.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474

# HTTPS Connector. There can be zero or one HTTPS connectors.
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=:7473

# Number of Neo4j worker threads.
#dbms.threads.worker_count=

#*****************************************************************
# SSL system configuration
#*****************************************************************

# Names of the SSL policies to be used for the respective components.

# The legacy policy is a special policy which is not defined in
# the policy configuration section, but rather derives from
# dbms.directories.certificates and associated files
# (by default: neo4j.key and neo4j.cert). Its use will be deprecated.

# The policies to be used for connectors.
#
# N.B: Note that a connector must be configured to support/require
#   SSL/TLS for the policy to actually be utilized.
#
# see: dbms.connector.*.tls_level

#bolt.ssl_policy=legacy
#https.ssl_policy=legacy

#*****************************************************************
# SSL policy configuration
#*****************************************************************

# Each policy is configured under a separate namespace, e.g.
#  dbms.ssl.policy.<policyname>.*
#
# The example settings below are for a new policy named 'default'.

# The base directory for cryptographic objects. Each policy will by
# default look for its associated objects (keys, certificates, ...)
# under the base directory.
#
# Every such setting can be overridden using a full path to
# the respective object, but every policy will by default look
# for cryptographic objects in its base location.
#
# Mandatory setting

#dbms.ssl.policy.default.base_directory=certificates/default

# Allows the generation of a fresh private key and a self-signed
# certificate if none are found in the expected locations. It is
# recommended to turn this off again after keys have been generated.
#
# Keys should in general be generated and distributed offline
# by a trusted certificate authority (CA) and not by utilizing
# this mode.

#dbms.ssl.policy.default.allow_key_generation=false

# Enabling this makes it so that this policy ignores the contents
# of the trusted_dir and simply resorts to trusting everything.
#
# Use of this mode is discouraged. It would offer encryption but no security.

#dbms.ssl.policy.default.trust_all=false

# The private key for the default SSL policy. By default a file
# named private.key is expected under the base directory of the policy.
# It is mandatory that a key can be found or generated.

#dbms.ssl.policy.default.private_key=

# The private key for the default SSL policy. By default a file
# named public.crt is expected under the base directory of the policy.
# It is mandatory that a certificate can be found or generated.

#dbms.ssl.policy.default.public_certificate=

# The certificates of trusted parties. By default a directory named
# 'trusted' is expected under the base directory of the policy. It is
# mandatory to create the directory so that it exists, because it cannot
# be auto-created (for security purposes).
#
# To enforce client authentication client_auth must be set to 'require'!

#dbms.ssl.policy.default.trusted_dir=

# Client authentication setting. Values: none, optional, require
# The default is to require client authentication.
#
# Servers are always authenticated unless explicitly overridden
# using the trust_all setting. In a mutual authentication setup this
# should be kept at the default of require and trusted certificates
# must be installed in the trusted_dir.

#dbms.ssl.policy.default.client_auth=require

# It is possible to verify the hostname that the client uses
# to connect to the remote server. In order for this to work, the server public
# certificate must have a valid CN and/or matching Subject Alternative Names.

# Note that this is irrelevant on host side connections (sockets receiving
# connections).

# To enable hostname verification client side on nodes, set this to true.

#dbms.ssl.policy.default.verify_hostname=false

# A comma-separated list of allowed TLS versions.
# By default only TLSv1.2 is allowed.

#dbms.ssl.policy.default.tls_versions=

# A comma-separated list of allowed ciphers.
# The default ciphers are the defaults of the JVM platform.

#dbms.ssl.policy.default.ciphers=

#*****************************************************************
# Logging configuration
#*****************************************************************

# To enable HTTP logging, uncomment this line
#dbms.logs.http.enabled=true

# Number of HTTP logs to keep.
#dbms.logs.http.rotation.keep_number=5

# Size of each HTTP log that is kept.
#dbms.logs.http.rotation.size=20m

# To enable GC Logging, uncomment this line
#dbms.logs.gc.enabled=true

# GC Logging Options
# see http://docs.oracle.com/cd/E19957-01/819-0084-10/pt_tuningjava.html#wp57013 for more information.
#dbms.logs.gc.options=-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+PrintTenuringDistribution

# For Java 9 and newer GC Logging Options
# see https://docs.oracle.com/javase/10/tools/java.htm#JSWOR-GUID-BE93ABDC-999C-4CB5-A88B-1994AAAC74D5
#dbms.logs.gc.options=-Xlog:gc*,safepoint,age*=trace

# Number of GC logs to keep.
#dbms.logs.gc.rotation.keep_number=5

# Size of each GC log that is kept.
#dbms.logs.gc.rotation.size=20m

# Log level for the debug log. One of DEBUG, INFO, WARN and ERROR. Be aware that logging at DEBUG level can be very verbose.
#dbms.logs.debug.level=INFO

# Size threshold for rotation of the debug log. If set to zero then no rotation will occur. Accepts a binary suffix "k",
# "m" or "g".
#dbms.logs.debug.rotation.size=20m

# Maximum number of history files for the internal log.
#dbms.logs.debug.rotation.keep_number=7

#*****************************************************************
# Miscellaneous configuration
#*****************************************************************

# Enable this to specify a parser other than the default one.
#cypher.default_language_version=3.0

# Determines if Cypher will allow using file URLs when loading data using
# `LOAD CSV`. Setting this value to `false` will cause Neo4j to fail `LOAD CSV`
# clauses that load data from the file system.
dbms.security.allow_csv_import_from_file_urls=true


# Value of the Access-Control-Allow-Origin header sent over any HTTP or HTTPS
# connector. This defaults to '*', which allows broadest compatibility. Note
# that any URI provided here limits HTTP/HTTPS access to that URI only.
#dbms.security.http_access_control_allow_origin=*

# Value of the HTTP Strict-Transport-Security (HSTS) response header. This header
# tells browsers that a webpage should only be accessed using HTTPS instead of HTTP.
# It is attached to every HTTPS response. Setting is not set by default so
# 'Strict-Transport-Security' header is not sent. Value is expected to contain
# directives like 'max-age', 'includeSubDomains' and 'preload'.
#dbms.security.http_strict_transport_security=

# Retention policy for transaction logs needed to perform recovery and backups.
dbms.tx_log.rotation.retention_policy=1 days

# Only allow read operations from this Neo4j instance. This mode still requires
# write access to the directory for lock purposes.
dbms.read_only=false

# Comma separated list of JAX-RS packages containing JAX-RS resources, one
# package name for each mountpoint. The listed package names will be loaded
# under the mountpoints specified. Uncomment this line to mount the
# org.neo4j.examples.server.unmanaged.HelloWorldResource.java from
# neo4j-server-examples under /examples/unmanaged, resulting in a final URL of
# http://localhost:7474/examples/unmanaged/helloworld/{nodeId}
#dbms.unmanaged_extension_classes=org.neo4j.examples.server.unmanaged=/examples/unmanaged

# A comma separated list of procedures and user defined functions that are allowed
# full access to the database through unsupported/insecure internal APIs.
#dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.*

# A comma separated list of procedures to be loaded by default.
# Leaving this unconfigured will load all procedures found.
#dbms.security.procedures.whitelist=apoc.coll.*,apoc.load.*

#********************************************************************
# JVM Parameters
#********************************************************************

# G1GC generally strikes a good balance between throughput and tail
# latency, without too much tuning.
dbms.jvm.additional=-XX:+UseG1GC

# Have common exceptions keep producing stack traces, so they can be
# debugged regardless of how often logs are rotated.
dbms.jvm.additional=-XX:-OmitStackTraceInFastThrow

# Make sure that `initmemory` is not only allocated, but committed to
# the process, before starting the database. This reduces memory
# fragmentation, increasing the effectiveness of transparent huge
# pages. It also reduces the possibility of seeing performance drop
# due to heap-growing GC events, where a decrease in available page
# cache leads to an increase in mean IO response time.
# Try reducing the heap memory, if this flag degrades performance.
dbms.jvm.additional=-XX:+AlwaysPreTouch

# Trust that non-static final fields are really final.
# This allows more optimizations and improves overall performance.
# NOTE: Disable this if you use embedded mode, or have extensions or dependencies that may use reflection or
# serialization to change the value of final fields!
dbms.jvm.additional=-XX:+UnlockExperimentalVMOptions
dbms.jvm.additional=-XX:+TrustFinalNonStaticFields

# Disable explicit garbage collection, which is occasionally invoked by the JDK itself.
dbms.jvm.additional=-XX:+DisableExplicitGC

# Remote JMX monitoring, uncomment and adjust the following lines as needed. Absolute paths to jmx.access and
# jmx.password files are required.
# Also make sure to update the jmx.access and jmx.password files with appropriate permission roles and passwords,
# the shipped configuration contains only a read only role called 'monitor' with password 'Neo4j'.
# For more details, see: http://download.oracle.com/javase/8/docs/technotes/guides/management/agent.html
# On Unix based systems the jmx.password file needs to be owned by the user that will run the server,
# and have permissions set to 0600.
# For details on setting these file permissions on Windows see:
#   http://docs.oracle.com/javase/8/docs/technotes/guides/management/security-windows.html
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.port=3637
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.authenticate=true
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.ssl=false
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.password.file=/absolute/path/to/conf/jmx.password
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.access.file=/absolute/path/to/conf/jmx.access

# Some systems cannot discover host name automatically, and need this line configured:
#dbms.jvm.additional=-Djava.rmi.server.hostname=$THE_NEO4J_SERVER_HOSTNAME

# Expand Diffie Hellman (DH) key size from default 1024 to 2048 for DH-RSA cipher suites used in server TLS handshakes.
# This is to protect the server from any potential passive eavesdropping.
dbms.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048

# This mitigates a DDoS vector.
dbms.jvm.additional=-Djdk.tls.rejectClientInitiatedRenegotiation=true

#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
# using this configuration file has been installed as a service.
# Please uninstall the service before modifying this section. The
# service can then be reinstalled.

# Name of the service
dbms.windows_service_name=neo4j

#********************************************************************
# Other Neo4j system properties
#********************************************************************
dbms.jvm.additional=-Dunsupported.dbms.udc.source=tarball

查看Neo4j是否启动

启动:进入bin目录执行./neo4j start

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

停止:进入bin目录执行./neo4j stop

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

查看状态:进入bin目录执行./neo4j status

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

web访问Neo4j

http://服务器ip:7474/browser/

在浏览器访问图数据库所在的机器上的7474端口(第一次访问账号neo4j,密码neo4j,会提示修改初始密码)

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

设置完密码后,点击左上角数据库,就能看到图数据库里面的信息了

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

Python3操作Neo4j

安装py2neo模块

pip install py2neo

如果安不上,请用:

pip install git+https://github.com/nigelsmall/py2neo.git

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

官网地址:https://py2neo.org/v3/index.html

更多内容请参考官网给的命令:

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

效果图

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例

简单讲解

如上图,是本示例的效果。

其中,我加了5个节点信息,3种关系(7个分支的关系),还有3种属性。

这里是给了节点加了属性,例如我给自己加了“博客地址”的属性,属性值为“https://3water.com/”。

还可以给关系加属性,这里没做展示,方法是类似的。

完整源码

from py2neo import Graph, Node, Relationship

graph = Graph(host='IP地址', http_port=7474, user='neo4j', password='123456')

# 清空库
graph.delete_all()

# 创建结点
test_node_0 = Node('西游记', name='唐僧') # 修改的部分
test_node_1 = Node('西游记', name='孙悟空') # 修改的部分
test_node_2 = Node('西游记', name='猪八戒') # 修改的部分
test_node_3 = Node('西游记', name='沙师弟') # 修改的部分
test_node_4 = Node('西游记', name='白龙马') # 修改的部分

test_node_3.setdefault("博客地址",'https://shazhenyu.blog.csdn.net/')

graph.create(test_node_0)
graph.create(test_node_1)
graph.create(test_node_2)
graph.create(test_node_3)
graph.create(test_node_4)

# 创建关系
# 分别建立了test_node_1指向test_node_2和test_node_2指向test_node_1两条关系,关系的类型为"丈夫、妻子",两条关系都有属性count,且值为1。
node_0_node_1 = Relationship(test_node_0, '师傅', test_node_1)
node_0_node_2 = Relationship(test_node_0, '师傅', test_node_2)
node_0_node_3 = Relationship(test_node_0, '师傅', test_node_3)
node_1_node_0 = Relationship(test_node_1, '徒弟', test_node_0)
node_2_node_0 = Relationship(test_node_2, '徒弟', test_node_0)
node_3_node_0 = Relationship(test_node_3, '徒弟', test_node_0)
node_4_node_0 = Relationship(test_node_4, '坐骑', test_node_0)
node_0_node_1['count'] = 1
node_4_node_0['count'] = 1

graph.create(node_0_node_1)
graph.create(node_0_node_2)
graph.create(node_0_node_3)
graph.create(node_1_node_0)
graph.create(node_2_node_0)
graph.create(node_3_node_0)
graph.create(node_4_node_0)

print(graph)
print(test_node_0)
print(test_node_1)
print(test_node_2)
print(test_node_3)
print(test_node_4)
print(node_0_node_1)
print(node_0_node_2)
print(node_0_node_3)
print(node_1_node_0)
print(node_2_node_0)
print(node_3_node_0)
print(node_4_node_0)

本文详细讲解了非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例,更多关于Python3操作Neo4j的知识请查看下面的相关链接

Python 相关文章推荐
使用Python脚本将Bing的每日图片作为桌面的教程
May 04 Python
python使用matplotlib绘制折线图教程
Feb 08 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
用Python实现读写锁的示例代码
Nov 05 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
Python获取时间范围内日期列表和周列表的函数
Aug 05 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
Python实现自动签到脚本的示例代码
Aug 19 Python
Python使用Pygame绘制时钟
Nov 29 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 #Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 #Python
python selenium操作cookie的实现
Mar 18 #Python
Selenium 滚动页面至元素可见的方法
Mar 18 #Python
python字符串判断密码强弱
Mar 18 #Python
详解Python3中的 input() 函数
Mar 18 #Python
Python通过socketserver处理多个链接
Mar 18 #Python
You might like
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
破解Session cookie的方法
2006/07/28 Javascript
javascript forEach通用循环遍历方法
2010/10/11 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
js单例模式的两种方案
2013/10/22 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
用python写的一个wordpress的采集程序
2016/02/27 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
一套.net面试题及答案
2016/11/02 面试题
电子商务专业推荐信范文
2013/12/02 职场文书
运动会广播稿200字
2014/01/15 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
情人节寄语大全
2014/04/11 职场文书
美化环境标语
2014/06/20 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android