话说这篇文章真是在没有任何实例的情况下帮了大忙
另外附上我自己的一个完整demo:https://github.com/LearnForInterest/material
结合了ci框架的doctrine使用
原文地址:http://www.xuejiehome.com/blread-1920.html#index_6
一、配置数据库
二、创建和生成数据库表结构
三、从已有数据库生成Entity
四、保存数据到数据库
五、从数据库读取
六、更新记录
七、删除记录
八、工作笔记记录(可跳过):
Symfony和Doctrine进行了集成,Doctrine类库全部目标就是给你一个强大的工具,让你的工作更加容易。
Doctrine是完全解耦与Symfony的,所以并不一定要使用它。
一个简单例子:一个产品,我们首先来配置数据库,创建一个Product对象,添加到数据库并把它读回来。
首先,我们需要创建一个bundle:
1 |
$php app/console generate:bundle --namespace=Blog/StoreBundle |
一、配置数据库
在开始之前,首先需要配置数据库连接信息。根据惯例,这些信息通常会配置在app/config/parameters.yml 文件中。
01 |
#app/config/parameters.yml |
02 |
# This file is auto-generated during the composer install |
04 |
mailer_transport: smtp |
05 |
mailer_host: 127.0.0.1 |
09 |
secret: 256d7de0d269e37752b49fec38f5fc5e |
11 |
debug_redirects: false |
12 |
use_assetic_controller: true |
15 |
database_driver: pdo_mysql |
16 |
database_host: 127.0.0.1 |
18 |
database_name: symfony |
20 |
database_password: 123 |
将配置信息定义到parameters.yml文件中也是一个常用的做法。定义在该文件中的配置信息将会被主配置文件在安装Doctrine时引用。
01 |
#app/config/doctrine.yml |
03 |
# Doctrine Configuration |
06 |
default_connection: default |
09 |
driver: "%database_driver%" |
10 |
host: "%database_host%" |
11 |
port: "%database_port%" |
12 |
user: "%database_user%" |
13 |
password: "%database_password%" |
15 |
dbname: "%database_name%" |
17 |
# if using pdo_sqlite as your database driver, add the path in parameters.yml |
18 |
# e.g. database_path: "%kernel.root_dir%/data/data.db3" |
19 |
# path: "%database_path%" |
22 |
auto_generate_proxy_classes: "%kernel.debug%" |
以上文件中dbal和orm中的default均可以复制后更改以实现多个数据库链接。
在config.yml中导入上面的两个yml配置文件:
4 |
- { resource: parameters.yml } |
5 |
- { resource: doctrine.yml } |
6 |
- { resource: security.yml } |
通过把数据库信息分离到一个特定的文件中,你可以很容易的为每个服务器保存不同的版本。现在Doctrine知道你的数据库配置了,你可以用它来创建一个数据库了。
二、创建和生成数据库表结构
(1)创建数据库
1 |
$php app/console doctrine:database:create —em=“default” |
执行上面命令的时候可能会出现“[DoctrineDBALExceptionConnectionException]An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory ”的错误,将database_host由localhost改为127.0.0.1即可。
(2)通过entity生成数据库表结构
创建基础的Entity实体类:
假设你创建一个应用程序,其中有些产品需要展示。即时不考虑Doctrine或者数据库,你也应该知道你需要一个Product对象来表现这些产品。在你的StoreBundle的Entity目录下创建一个实体类(Entity)。
01 |
// src/Blog/StoreBundle/Entity/Product.php |
03 |
namespace Blog\StoreBundle\Entity; |
09 |
protected $description ; |
这样的类经常被称为“Entity”,把表中的字段映射到该类。不过现在它还不能被保存到数据库中,因为现在它只不过还是个简单的PHP类。一旦你学习了Doctrine背后的概念,你可以让Doctrine来为你创建实体类。
创建完整的Entity实体类:
1 |
php app/console doctrine:generate:entity --entity= "StoreBundle:Product" --fields= "name:string(255) price:float description:text" --with-repository |
001 |
// src/Blog/StoreBundle/Entity/Product.php |
005 |
namespace Blog\StoreBundle\Entity; |
007 |
use DoctrineORMMapping as ORM; |
013 |
* @ORMEntity(repositoryClass="BlogStoreBundleEntityProductRepository") |
020 |
* @ORMColumn(name="id", type="integer") |
022 |
* @ORMGeneratedValue(strategy="AUTO") |
029 |
* @ORMColumn(name="name", type="string", length=255) |
036 |
* @ORMColumn(name="price", type="float") |
043 |
* @ORMColumn(name="description", type="text") |
045 |
private $description ; |
053 |
public function getId() |
061 |
* @param string $name |
064 |
public function setName( $name ) |
076 |
public function getName() |
084 |
* @param float $price |
087 |
public function setPrice( $price ) |
089 |
$this ->price = $price ; |
099 |
public function getPrice() |
107 |
* @param string $description |
110 |
public function setDescription( $description ) |
112 |
$this ->description = $description ; |
122 |
public function getDescription() |
124 |
return $this ->description; |
根据Entity生成数据库:
1 |
php app/console doctrine:schema:update --force --em= "default" |
看到如下提示即为成功:
Updating database schema...
Database schema updated successfully! "1" queries were executed
三、从已有数据库生成Entity
2 |
php app/console doctrine:mapping: import --force StoreBundle annotation |
3 |
#根据数据库结构生成Product表的Entity |
4 |
app/console doctrine:mapping: import --em= "default" StoreBundle --filter=Product annotation |
6 |
php app/console doctrine:generate:entities BlogStoreBundle |
注意:
(1)--em="default"中的default是指connection,对应第一步配置数据库信息(doctrine.yml)中的default
(2)--filter=Product 这里的P是大写的,它的规则跟生成的类名是一致的(采用驼峰型)
例如:
1 |
表名: article --filter=Article |
2 |
表名:test_article --filter=TestArticle |
3 |
表名:test_article_detail --filter=TestArticleDetail |
四、保存数据到数据库
01 |
// src/Blog/TestBundle/Controller/DefaultController.php |
04 |
use Blog\StoreBundle\Entity\Product; |
06 |
use Symfony\Component\HttpFoundation\Response; |
07 |
use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
10 |
public function createAction() |
12 |
$product = new Product(); |
13 |
$product ->setName( 'A Foo Bar' ); |
14 |
$product ->setPrice( '19.99' ); |
15 |
$product ->setDescription( 'Lorem ipsum dolor' ); |
17 |
$em = $this ->getDoctrine()->getManager(); |
19 |
$em ->persist( $product ); |
22 |
return new Response( 'Created product id ' . $product ->getId()); |
配置路由:
1 |
#src/Blog/TestBundle/Resources/config/routing.yml |
5 |
defaults: { _controller: TestBundle:Default:create } |
五、从数据库读取
01 |
public function showAction( $id ) |
03 |
$product = $this ->getDoctrine() |
04 |
->getRepository( 'AcmeStoreBundle:Product' ) |
07 |
throw $this ->createNotFoundException( 'No product found for id ' . $id ); |
09 |
//do something,想把$product对象传递给一个template等。 |
配置路由:
1 |
#src/Blog/TestBundle/Resources/config/routing.yml |
5 |
defaults: { _controller: TestBundle:Default:show } |
其他查询方式可参考:Symfony2 Doctrine 数据库查询方法总结
六、更新记录
01 |
public function updateAction( $id ) |
03 |
$em = $this ->getDoctrine()->getEntityManager(); |
04 |
$product = $em ->getRepository( 'AcmeStoreBundle:Product' )->find( $id ); |
07 |
throw $this ->createNotFoundException( 'No product found for id ' . $id ); |
10 |
$product ->setName( 'New product name!' ); |
13 |
return $this ->redirect( $this ->generateUrl( 'homepage' )); |
更新记录仅需要三步:
1. 从Doctrine找到对象
2. 修改这个对象
3. 调用entity manager的flush函数
注意:
$em->persist($product)没有必要,这个方法仅仅是要告诉Doctrine去管理或者观看$product对象,当你从Doctrine中找到了$product对象,它已经被管理了。
Notice that calling $em->persist($product) isn't necessary. Recall that this method simply tells
Doctrine to manage or "watch" the $product object. In this case, since you fetched the $product object
from Doctrine, it's already managed.
七、删除记录
八、工作笔记记录(可跳过):
1. 增加记录:
1.1 单表增加
01 |
use Acme\StoreBundle\Entity\Product; |
03 |
public function createAction() |
05 |
$product = new Product(); |
06 |
$product ->setName( 'A Foo Bar' ); |
07 |
$product ->setPrice( '19.99' ); |
08 |
$product ->setDescription( 'Lorem ipsum dolor' ); |
09 |
$em = $this ->getDoctrine()->getManager(); |
10 |
$em ->persist( $product ); |
12 |
return new Response( 'Created product id ' . $product ->getId()); |
1.2 多表增加
01 |
use Acme\StoreBundle\Entity\Category; |
02 |
use Acme\StoreBundle\Entity\Product; |
04 |
use Symfony\Component\HttpFoundation\Response; |
05 |
class DefaultController extends Controller |
07 |
public function createProductAction() |
09 |
$category = new Category(); |
10 |
$category ->setName( 'Main Products' ); |
11 |
$product = new Product(); |
12 |
$product ->setName( 'Foo' ); |
13 |
$product ->setPrice(19.99); |
14 |
// relate this product to the category |
15 |
$product ->setCategory( $category ); |
16 |
$em = $this ->getDoctrine()->getManager(); |
17 |
$em ->persist( $category ); |
18 |
$em ->persist( $product ); |
21 |
'Created product id: ' . $product ->getId() |
22 |
. ' and category id: ' . $category ->getId() |
1.3 批量插入函数
08 |
function ucWords( $str ) |
10 |
$str = ucwords( str_replace ( '_' , ' ' , $str )); |
11 |
$str = str_replace ( ' ' , '' , $str ); |
19 |
* @param string $entity |
20 |
* @param array $dataList |
23 |
function batchInsertByEntity( $entity , $dataList , $per = 1000) |
25 |
$count = count ( $dataList ); |
26 |
for ( $i = 0; $i < $count ; $i ++) { |
28 |
foreach ( $dataList [ $i ] as $k => $v ) { |
29 |
$obj ->{ "set" . $this ->ucWords( $k )}( $v ); |
31 |
$this ->em->persist( $obj ); |
32 |
if (( $count % $per ) === 0) { |
(2)删除记录:
01 |
public function deleteAction( $id ) |
03 |
$em = $this ->getDoctrine()->getManager(); |
04 |
$product = $em ->getRepository( 'AcmeStoreBundle:Product' )->find( $id ); |
07 |
throw $this ->createNotFoundException( |
08 |
'No product found for id ' . $id |
12 |
$em ->remove( $product ); //注意:此处是remove函数 |
14 |
return $this ->redirect( $this ->generateUrl( 'homepage' )); |
(3)查询记录:
参看这篇文章:Symfony2 Doctrine 数据库查询方法总结
一、配置数据库
二、创建和生成数据库表结构
三、从已有数据库生成Entity
四、保存数据到数据库
五、从数据库读取
六、更新记录
七、删除记录
八、工作笔记记录(可跳过):
Symfony和Doctrine进行了集成,Doctrine类库全部目标就是给你一个强大的工具,让你的工作更加容易。
Doctrine是完全解耦与Symfony的,所以并不一定要使用它。
一个简单例子:一个产品,我们首先来配置数据库,创建一个Product对象,添加到数据库并把它读回来。
首先,我们需要创建一个bundle:
1 |
$php app/console generate:bundle --namespace=Blog/StoreBundle |
一、配置数据库
在开始之前,首先需要配置数据库连接信息。根据惯例,这些信息通常会配置在app/config/parameters.yml 文件中。
01 |
#app/config/parameters.yml |
02 |
# This file is auto-generated during the composer install |
04 |
mailer_transport: smtp |
05 |
mailer_host: 127.0.0.1 |
09 |
secret: 256d7de0d269e37752b49fec38f5fc5e |
11 |
debug_redirects: false |
12 |
use_assetic_controller: true |
15 |
database_driver: pdo_mysql |
16 |
database_host: 127.0.0.1 |
18 |
database_name: symfony |
20 |
database_password: 123 |
将配置信息定义到parameters.yml文件中也是一个常用的做法。定义在该文件中的配置信息将会被主配置文件在安装Doctrine时引用。
01 |
#app/config/doctrine.yml |
03 |
# Doctrine Configuration |
06 |
default_connection: default |
09 |
driver: "%database_driver%" |
10 |
host: "%database_host%" |
11 |
port: "%database_port%" |
12 |
user: "%database_user%" |
13 |
password: "%database_password%" |
15 |
dbname: "%database_name%" |
17 |
# if using pdo_sqlite as your database driver, add the path in parameters.yml |
18 |
# e.g. database_path: "%kernel.root_dir%/data/data.db3" |
19 |
# path: "%database_path%" |
22 |
auto_generate_proxy_classes: "%kernel.debug%" |
以上文件中dbal和orm中的default均可以复制后更改以实现多个数据库链接。
在config.yml中导入上面的两个yml配置文件:
4 |
- { resource: parameters.yml } |
5 |
- { resource: doctrine.yml } |
6 |
- { resource: security.yml } |
通过把数据库信息分离到一个特定的文件中,你可以很容易的为每个服务器保存不同的版本。现在Doctrine知道你的数据库配置了,你可以用它来创建一个数据库了。
二、创建和生成数据库表结构
(1)创建数据库
1 |
$php app/console doctrine:database:create —em=“default” |
执行上面命令的时候可能会出现“[DoctrineDBALExceptionConnectionException]An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory ”的错误,将database_host由localhost改为127.0.0.1即可。
(2)通过entity生成数据库表结构
创建基础的Entity实体类:
假设你创建一个应用程序,其中有些产品需要展示。即时不考虑Doctrine或者数据库,你也应该知道你需要一个Product对象来表现这些产品。在你的StoreBundle的Entity目录下创建一个实体类(Entity)。
01 |
// src/Blog/StoreBundle/Entity/Product.php |
03 |
namespace Blog\StoreBundle\Entity; |
09 |
protected $description ; |
这样的类经常被称为“Entity”,把表中的字段映射到该类。不过现在它还不能被保存到数据库中,因为现在它只不过还是个简单的PHP类。一旦你学习了Doctrine背后的概念,你可以让Doctrine来为你创建实体类。
创建完整的Entity实体类:
1 |
php app/console doctrine:generate:entity --entity= "StoreBundle:Product" --fields= "name:string(255) price:float description:text" --with-repository |
001 |
// src/Blog/StoreBundle/Entity/Product.php |
005 |
namespace Blog\StoreBundle\Entity; |
007 |
use DoctrineORMMapping as ORM; |
013 |
* @ORMEntity(repositoryClass="BlogStoreBundleEntityProductRepository") |
020 |
* @ORMColumn(name="id", type="integer") |
022 |
* @ORMGeneratedValue(strategy="AUTO") |
029 |
* @ORMColumn(name="name", type="string", length=255) |
036 |
* @ORMColumn(name="price", type="float") |
043 |
* @ORMColumn(name="description", type="text") |
045 |
private $description ; |
053 |
public function getId() |
061 |
* @param string $name |
064 |
public function setName( $name ) |
076 |
public function getName() |
084 |
* @param float $price |
087 |
public function setPrice( $price ) |
089 |
$this ->price = $price ; |
099 |
public function getPrice() |
107 |
* @param string $description |
110 |
public function setDescription( $description ) |
112 |
$this ->description = $description ; |
122 |
public function getDescription() |
124 |
return $this ->description; |
根据Entity生成数据库:
1 |
php app/console doctrine:schema:update --force --em= "default" |
看到如下提示即为成功:
Updating database schema...
Database schema updated successfully! "1" queries were executed
三、从已有数据库生成Entity
2 |
php app/console doctrine:mapping: import --force StoreBundle annotation |
3 |
#根据数据库结构生成Product表的Entity |
4 |
app/console doctrine:mapping: import --em= "default" StoreBundle --filter=Product annotation |
6 |
php app/console doctrine:generate:entities BlogStoreBundle |
注意:
(1)--em="default"中的default是指connection,对应第一步配置数据库信息(doctrine.yml)中的default
(2)--filter=Product 这里的P是大写的,它的规则跟生成的类名是一致的(采用驼峰型)
例如:
1 |
表名: article --filter=Article |
2 |
表名:test_article --filter=TestArticle |
3 |
表名:test_article_detail --filter=TestArticleDetail |
四、保存数据到数据库
01 |
// src/Blog/TestBundle/Controller/DefaultController.php |
04 |
use Blog\StoreBundle\Entity\Product; |
06 |
use Symfony\Component\HttpFoundation\Response; |
07 |
use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
10 |
public function createAction() |
12 |
$product = new Product(); |
13 |
$product ->setName( 'A Foo Bar' ); |
14 |
$product ->setPrice( '19.99' ); |
15 |
$product ->setDescription( 'Lorem ipsum dolor' ); |
17 |
$em = $this ->getDoctrine()->getManager(); |
19 |
$em ->persist( $product ); |
22 |
return new Response( 'Created product id ' . $product ->getId()); |
配置路由:
1 |
#src/Blog/TestBundle/Resources/config/routing.yml |
5 |
defaults: { _controller: TestBundle:Default:create } |
五、从数据库读取
01 |
public function showAction( $id ) |
03 |
$product = $this ->getDoctrine() |
04 |
->getRepository( 'AcmeStoreBundle:Product' ) |
07 |
throw $this ->createNotFoundException( 'No product found for id ' . $id ); |
09 |
//do something,想把$product对象传递给一个template等。 |
配置路由:
1 |
#src/Blog/TestBundle/Resources/config/routing.yml |
5 |
defaults: { _controller: TestBundle:Default:show } |
其他查询方式可参考:Symfony2 Doctrine 数据库查询方法总结
六、更新记录
01 |
public function updateAction( $id ) |
03 |
$em = $this ->getDoctrine()->getEntityManager(); |
04 |
$product = $em ->getRepository( 'AcmeStoreBundle:Product' )->find( $id ); |
07 |
throw $this ->createNotFoundException( 'No product found for id ' . $id ); |
10 |
$product ->setName( 'New product name!' ); |
13 |
return $this ->redirect( $this ->generateUrl( 'homepage' )); |
更新记录仅需要三步:
1. 从Doctrine找到对象
2. 修改这个对象
3. 调用entity manager的flush函数
注意:
$em->persist($product)没有必要,这个方法仅仅是要告诉Doctrine去管理或者观看$product对象,当你从Doctrine中找到了$product对象,它已经被管理了。
Notice that calling $em->persist($product) isn't necessary. Recall that this method simply tells
Doctrine to manage or "watch" the $product object. In this case, since you fetched the $product object
from Doctrine, it's already managed.
七、删除记录
八、工作笔记记录(可跳过):
1. 增加记录:
1.1 单表增加
01 |
use Acme\StoreBundle\Entity\Product; |
03 |
public function createAction() |
05 |
$product = new Product(); |
06 |
$product ->setName( 'A Foo Bar' ); |
07 |
$product ->setPrice( '19.99' ); |
08 |
$product ->setDescription( 'Lorem ipsum dolor' ); |
09 |
$em = $this ->getDoctrine()->getManager(); |
10 |
$em ->persist( $product ); |
12 |
return new Response( 'Created product id ' . $product ->getId()); |
1.2 多表增加
01 |
use Acme\StoreBundle\Entity\Category; |
02 |
use Acme\StoreBundle\Entity\Product; |
04 |
use Symfony\Component\HttpFoundation\Response; |
05 |
class DefaultController extends Controller |
07 |
public function createProductAction() |
09 |
$category = new Category(); |
10 |
$category ->setName( 'Main Products' ); |
11 |
$product = new Product(); |
12 |
$product ->setName( 'Foo' ); |
13 |
$product ->setPrice(19.99); |
14 |
// relate this product to the category |
15 |
$product ->setCategory( $category ); |
16 |
$em = $this ->getDoctrine()->getManager(); |
17 |
$em ->persist( $category ); |
18 |
$em ->persist( $product ); |
21 |
'Created product id: ' . $product ->getId() |
22 |
. ' and category id: ' . $category ->getId() |
1.3 批量插入函数
08 |
function ucWords( $str ) |
10 |
$str = ucwords( str_replace ( '_' , ' ' , $str )); |
11 |
$str = str_replace ( ' ' , '' , $str ); |
19 |
* @param string $entity |
20 |
* @param array $dataList |
23 |
function batchInsertByEntity( $entity , $dataList , $per = 1000) |
25 |
$count = count ( $dataList ); |
26 |
for ( $i = 0; $i < $count ; $i ++) { |
28 |
foreach ( $dataList [ $i ] as $k => $v ) { |
29 |
$obj ->{ "set" . $this ->ucWords( $k )}( $v ); |
31 |
$this ->em->persist( $obj ); |
32 |
if (( $count % $per ) === 0) { |
(2)删除记录:
01 |
public function deleteAction( $id ) |
03 |
$em = $this ->getDoctrine()->getManager(); |
04 |
$product = $em ->getRepository( 'AcmeStoreBundle:Product' )->find( $id ); |
07 |
throw $this ->createNotFoundException( |
08 |
'No product found for id ' . $id |
12 |
$em ->remove( $product ); //注意:此处是remove函数 |
14 |
return $this ->redirect( $this ->generateUrl( 'homepage' )); |
(3)查询记录:
参看这篇文章:Symfony2 Doctrine 数据库查询方法总结
- CentOS 配置防火墙操作实例(启、停、开、闭端口):
CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service iptables status< ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- 安卓 SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- 在安卓开发中使用SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)
Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...
- CentOS 配置防火墙操作实例(启、停、开、闭端口)CentOS Linux-FTP/对外开放端口(接口)TomCat相关
链接地址:http://blog.csdn.net/jemlee2002/article/details/7042991 CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作 ...
- Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)
Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...
- FTP命令具体解释(含操作实例)
以下是微软命令行FTPclient命令大全.假设你想使用"未加工(RAW)"FTP命令而非以下翻译过的请參考:http://www.nsftools.com/tips/RawFTP ...
- CentOS配置防火墙操作实例
CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service iptables status<回 ...
随机推荐
- course & time
- java正则表达式校验移动电话、固话、邮编的校验
package com.tmall.epp.web.module.util; import java.util.regex.Pattern; /** * 移动电话.固话.邮编的校验 * @since ...
- setfacl 命令的常用用法
setfacl命令----可以用来细分linux下的文件权限. chmod命令----可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限. 换句话说,set ...
- Lua操作mysql
require "luasql.mysql" --创建环境对象 env = luasql.mysql() --连接数据库 conn = env:connect("数据库名 ...
- [日常] NOIWC2019 冬眠记
NOIWC 2019 冬眠记 辣鸡rvalue天天写意识流流水账 Day 0 早上没有跑操(极度舒服.png) 和春哥在博客颓图的时候突然被来送笔电的老爹查水表(捂脸) 母上大人骗我说这功能机不能放存 ...
- [BZOJ 1972][Sdoi2010]猪国杀
1972: [Sdoi2010]猪国杀 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 364 Solved: 204[Submit][Status][D ...
- Radix Sorts
基数排序 Strings In Java Char Data Type C 语言中的字符数据类型占一个字节(8 比特),最多只能表示 256 个字符.支持 7 位的标准 ASCII(American ...
- 【[CQOI2016]手机号码】
递推版的数位dp 绝对的暴力美学 我们设\(dp[l][i][j][0/1][0/1][0/1]\)表示到了第\(l\)位,这一位上选择的数是\(i\),\(l-1\)位选择的数是\(j\),第一个\ ...
- Python中的类(一)
Python中的类(一) 一. 应用场景 如果多个函数中有一些相同的参数时,转换成面向对象. 二. 如何创建类 类是用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法 ...
- mongodb3.2副本集配置
网上的资料太乱了,等弄好了再看官网才发现官网写的最清晰和简洁 推荐官网的副本集配置:https://docs.mongodb.com/manual/tutorial/deploy-replica-se ...