图书管理系统 基于form组件
models:
- from django.db import models
- # Create your models here.
- class Book(models.Model):
- name = models.CharField(max_length = 30)
- price = models.DecimalField(max_digits=30,decimal_places=3)
- date = models.DateTimeField()
- publish = models.ForeignKey(to="Publish",to_field='id',on_delete = models.CASCADE)
- authors = models.ManyToManyField(to='Author')
- class Publish(models.Model):
- title = models.CharField(max_length = 30)
- addr = models.CharField(max_length = 30)
- class Author(models.Model):
- name = models.CharField(max_length = 30)
- addr = models.CharField(max_length = 30)
- gf = models.OneToOneField(to='Gfriend',to_field='id',on_delete=models.CASCADE)
- class Gfriend(models.Model):
- name = models.CharField(max_length =30)
- age = models.IntegerField()
- class User(models.Model):
- name = models.CharField(max_length = 30)
- pwd = models.IntegerField()
- date = models.DateTimeField()
- email = models.EmailField()
models
settings配置:
- 配置数据库
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME':'test1', # 要连接的数据库,连接前需要创建好
- 'USER':'root', # 连接数据库的用户名
- 'PASSWORD':'zhaoyun', # 连接数据库的密码
- 'HOST':'127.0.0.1', # 连接主机,默认本级
- 'PORT':3306 # 端口 默认3306
- }
- }
- 配置静态文件
- STATICFILES_DIRS=[
- os.path.join(BASE_DIR,'static'),
- ]
init:
- import pymysql
- pymysql.install_as_MySQLdb()
urls:
- from django.contrib import admin
- from django.urls import path,re_path
- from first import views
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('index/',views.index, name='index'),
- path('add_book/',views.add_book,name='add_book'),
- re_path('del_book/',views.del_book ,name='del_book'),
- re_path('edit_book/(\d+)/',views.edit_book,name = 'edit_book'),
- path('login/',views.login_session,name='login'),
- path('logout/',views.logout,name = 'logout'),
- path('register/',views.register, name = 'register'),
- path('hint/',views.hint,name = 'hint') #这个是你的 跳转注册的界面
- ]
urls
views:
- from django.shortcuts import render,redirect,reverse,HttpResponse
- import json,datetime
- from first.models import Book,Author,Publish,User
- from first .form import U_ser
- # Create your views here.
- #定义一个装饰器 然后所有的 函数都用装饰器进行封装
- def wrapper(func):
- def inner(*args,**kwargs):
- request = args[0]
- # if request.COOKIES.get('is_login'):
- if request.session.get('is_login'):
- return func(*args,**kwargs)
- else:
- return redirect(reverse('login'))
- return inner
- #登陆函数 cookie
- # def login(request):
- # print('11111111111111111')
- # if request.method == 'POST':
- # name = request.POST.get('user')
- # pwd = request.POST.get('pwd')
- # print(name,pwd)
- # log_obj = User.objects.filter(name = name ,pwd=pwd).first()
- # if log_obj: #登陆成功
- # ret = redirect(reverse('index'))
- # ret.set_cookie('name',name)
- # ret.set_cookie('pwd',pwd)
- # ret.set_cookie('is_login',True)
- # ret.set_cookie('last_time',log_obj.date)
- # log_obj.date = datetime.datetime.now()
- # log_obj.save()
- #
- # return ret
- # # return redirect(reverse('login'))
- # return render(request,'login.html')
- @wrapper
- #主界面
- def index(request):
- book_list = Book.objects.all()
- publish_list = Publish.objects.all()
- author_list = Author.objects.all()
- return render(request,'index.html',locals())
- @wrapper
- def add_book(request):
- '''
- 这是对书籍的信息进行增加的函数
- :param request:
- :return:
- '''
- book_list = Book.objects.all()
- publish_list = Publish.objects.all()
- author_list = Author.objects.all()
- if request.method == 'POST':
- name = request.POST.get('name')
- price = request.POST.get('price')
- date = request.POST.get('date')
- publish = request.POST.get('publish')
- author = request.POST.getlist('author')
- print(author)
- book = Book.objects.create(name = name,price = price, date = date ,publish_id=publish)
- book .authors.set(author) #给你的这个书籍对象 添加作者
- return redirect(reverse('index')) #添加完之后就重新定向到主界面
- return render(request,'add_book.html',locals())
- @wrapper
- def del_book(request): #删除函数
- deid = request.POST.get('deid')
- print(deid)
- del_book = Book.objects.filter(id = deid) #获取你前端点击的那个id的书籍对象
- del_book.delete()
- print(111*100)
- return HttpResponse(json.dumps({'status':1}))
- @wrapper
- def edit_book(request ,edid):
- # print('___________________________')
- book_list = Book.objects.filter(id=edid).first()
- publish_list = Publish.objects.all()
- author_list = Author.objects.all()
- print(book_list)
- print(6666666666666)
- if request.method =='POST':
- print(2222222222)
- name = request.POST.get('name')
- price = request.POST.get('price')
- date = request.POST.get('date')
- publish = request.POST.get('publish')
- author = request.POST.getlist('author')
- # bk_bj =Book.objects.filter(id=edid).update(name=name, price=price, date=date, publish=publish)
- # bk_bj.author.set(author)
- print(3333333333333)
- book_list.name = name
- book_list.price = price
- book_list.publish_id = publish
- book_list.authors.set(author)
- book_list.save()
- return redirect(reverse('index'))
- print(55555555555555)
- return render(request,'edit_book.html',locals())
- @wrapper
- def logout(request): #注销
- ret = redirect(reverse('login'))
- # ret.delete_cookie('name')
- # ret.set_cookie('last_time')
- # ret.delete_cookie('pwd')
- request.session.flush()
- return ret
- #这个使用session
- def login_session(request):
- print(request.POST)
- if request.method == 'POST':
- name = request.POST.get('user','')
- pwd = request.POST.get('pwd','')
- user_obj = User.objects.filter(name=name ,pwd =pwd).first()
- if user_obj:
- ret = redirect(reverse('index'))
- request.session['is_login'] = True
- request.session['name'] = name
- request.session['pwd'] = pwd
- request.session['last_time'] = str(user_obj.date) # 你去出的是一个date兑现 但是要存起来就要用 str
- user_obj.date = datetime.datetime.now()
- user_obj.save()
- return ret
- # else: #这一步是你输入的账号和密码不对的时候
- # return HttpResponse('您输入用户名不对')
- return redirect(reverse('hint'))
- return render(request,'login.html')
- #定义一个注册用户的函数
- def register(request):
- if request.method == 'POST':
- form = U_ser(request.POST) #把前端的信息和form组件对比判断
- if form.is_valid():#正确
- name = request.POST.get('name')
- pwd = request.POST.get('pwd')
- date = request.POST.get('date')
- email = request.POST.get('email')
- User.objects.create(name = name ,pwd = pwd,date = date,email = email)
- return redirect(reverse('login')) #注册成功就去登陆界面
- else:
- g_error = form.errors.get('__all__') #获取所有的错误
- if g_error:
- g_error = g_error[0]
- print(locals())
- return render(request,'register.html',locals())
- form = U_ser()
- print(55555555555555)
- return render(request,'register.html',locals())
- def hint(request):
- return render(request,'hint.html')
views
templates:
登陆界面:login
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
- <style>
- body {
- padding-top: 40px;
- padding-bottom: 40px;
- background-color: #eee;
- }
- .form-signin {
- max-width: 330px;
- padding: 15px;
- margin: 0 auto;
- }
- .form-signin .form-signin-heading,
- .form-signin .checkbox {
- margin-bottom: 10px;
- }
- .form-signin .checkbox {
- font-weight: normal;
- }
- .form-signin .form-control {
- position: relative;
- height: auto;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- padding: 10px;
- font-size: 16px;
- }
- .form-signin .form-control:focus {
- z-index: 2;
- }
- .form-signin input[type="email"] {
- margin-bottom: -1px;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
- }
- .form-signin input[type="password"] {
- margin-bottom: 10px;
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- }
- </style>
- </head>
- <body>
- <div class="container">
- <form class="form-signin" action = '{% url 'login' %}' method = 'post' novalidate>
- {% csrf_token %}
- <h2 class="form-signin-heading">Please </h2>
- <label for="inputEmail" class="sr-only">Email address</label>
- <input type="email" id="inputEmail" class="form-control" placeholder="Email address" required="" autofocus="" name="user">
- <label for="inputPassword" class="sr-only">Password</label>
- <input type="password" id="inputPassword" class="form-control" placeholder="Password" required="" name="pwd">
- <div class="checkbox">
- <label>
- <input type="checkbox" value="remember-me"> Remember me
- </label>
- </div>
- <button class="btn btn-lg btn-primary btn-block" type="submit" >Sign in</button>
- {# <button class="btn btn-lg btn-info btn-block" type="submit">Register</button>#}
- <a href="{% url 'register' %}" class="btn btn-lg btn-info btn-block" >Register</a>
- </form>
- </div>
- </body>
- </html>
login
注册:register
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
- <style>
- .container {
- margin-top: 80px;
- }
- {#body {#}
- {# background-color: darkslategray;#}
- .nide{
- margin-top: 10px;
- }
- </style>
- </head>
- <body>
- {#<div class="container col-md-3 col-md-offset-4">#}
- {# <div>#}
- {# <div>#}
- {# <div class="bs-example" data-example-id="form-validation-states">#}
- {# <form>#}
- {# <div class="form-group has-success">#}
- {# <label class="control-label" for="inputSuccess1">请输入用户名</label>#}
- {# <input type="text" class="form-control" id="inputSuccess1" aria-describedby="helpBlock2">#}
- {##}
- {# </div>#}
- {# <div class="form-group has-warning">#}
- {# <label class="control-label" for="inputWarning1">请输入密码</label>#}
- {# <input type="text" class="form-control" id="inputWarning1">#}
- {# </div>#}
- {# <div class="form-group has-error">#}
- {# <label class="control-label" for="inputError1">请确认密码</label>#}
- {# <input type="text" class="form-control" id="inputError1">#}
- {# </div>#}
- {# <div class="has-warning form-group">#}
- {# <input type="submit" value="提交" class="btn btn-info pull-right">#}
- {##}
- {# </div>#}
- {##}
- {##}
- {##}
- {# </form>#}
- {# </div>#}
- {# </div>#}
- {# </div>#}
- {#</div>#}
- <div class="container col-md-5 col-md-offset-3">
- <div >
- <div>
- <form action="" method='post' novalidate>
- {% csrf_token %}
- {% for foo in form %}
- {# 循环你的 报错的信息#}
- <div class="form-group">
- <label for="">{{ foo.label }}</label>
- {{ foo }}
- <span class="pull-right">{{ foo.errors.0 }}</span>
- {% if foo.label == 'R pwd' %}
- <span class="pull-right">{{ g_error|default_if_none:'' }}</span>
- {% endif %}
- </div>
- {% endfor %}
- <div class="nide">
- <input type="submit" value = '提交' class="pull-right btn btn-info">
- </div>
- </form>
- </div>
- </div>
- </div>
- </body>
- </html>
注册
主界面:index
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
- </head>
- <body>
- <div class="bs-example" data-example-id="inverted-navbar">
- <nav class="navbar navbar-inverse">
- <div class="container-fluid">
- <!-- Brand and toggle get grouped for better mobile display -->
- <div class="navbar-header">
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-9" aria-expanded="false">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- <a class="navbar-brand" href="#">图书管理</a>
- </div>
- <!-- Collect the nav links, forms, and other content for toggling -->
- <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-9">
- <ul class="nav navbar-nav pull-right" >
- {# <li class="active"><a href="#">{{ request.COOKIES.name }}</a></li>#}
- {# <li><a href="#">{{ request.COOKIES.last_time }}</a></li>#}
- <li class="active"><a href="#">{{ request.session.name }}</a></li>
- <li><a href="#">{{ request.session.last_time }}</a></li>
- <li><a href="{% url 'logout' %}">注销</a></li>
- </ul>
- </div><!-- /.navbar-collapse -->
- </div><!-- /.container-fluid -->
- </nav>
- </div>
- <div class="bs-example" data-example-id="contextual-table">
- <a href="{% url 'add_book' %}" class="btn btn-info pull-right">添加书籍</a>
- <table class="table">
- <thead>
- <tr>
- <th >序号</th>
- <th class="info">名字</th>
- <th>价格</th>
- <th class="warning">出版时间</th>
- <th>出版社</th>
- <th class="success">作者</th>
- <th>操作</th>
- <th>操作</th>
- </tr>
- </thead>
- <tbody>
- {% for book in book_list %}
- <tr class="active">
- <th scope="row">{{ forloop.counter }}</th>
- <td class="info">{{ book.name }}</td>
- <td class="danger">{{book.price}}</td>
- <td class="success">{{ book.date|date:'Y-m-d' }}</td>
- <td class="active"> {{ book.publish.title }}</td>
- <td class="warning">
- {% for author in book.authors.all %}
- {% if not forloop.last %}
- {{ author.name }}{{ '|' }}
- {% else %}
- {{ author.name }}
- {% endif %}
- {% endfor %}
- </td>
- <td><a href="{% url 'edit_book' book.id %}" class="danger btn btn-info">编辑</a></td>
- <td><a edid = '{{ book.id }}' class=' btn btn-danger'>删除</a></td>
- {# 让这个删除按钮获取要删除的书籍id#}
- </tr>
- </tbody>
- {% endfor %}
- </table>
- </div>
- {% csrf_token %}
- <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
- <script>
- $('.btn-danger').click(function(){
- _this = $(this);
- console.log(111,_this)
- $.ajax({
- url:{% url 'del_book' %},
- type:'post',
- data:{
- deid:_this.attr('edid'),
- {#当你点击的时候获取你点击的那个对象的id传送到后台#}
- csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val()
- },
- success: function (data){
- var data = JSON.parse(data);
- if(data.status){
- _this.parent().parent().remove()
- }
- }
- })
- })
- </script>
- </body>
- </html>
index
编辑:edit_book:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
- <style>
- .container{
- margin-top: 80px;
- }
- </style>
- </head>
- <body>
- <div class="container">
- <div>
- <div>
- <div class="bs-example" data-example-id="form-validation-states">
- <form action="{% url 'edit_book' book_list.id %}}" method="post">
- {% csrf_token %}
- <div class="form-group has-success">
- <label class="control-label" for="inputSuccess1">书籍名称</label>
- <input type="text" class="form-control" id="inputSuccess1" aria-describedby="helpBlock2" name="name" value="{{ book_list.name }}">
- </div>
- <div class="form-group has-warning">
- <label class="control-label" for="inputWarning1">价格</label>
- <input type="text" class="form-control" id="inputWarning1" name="price" value = {{ book_list.price }}>
- </div>
- <div class="form-group has-error">
- <label class="control-label" for="inputError1">出版时间</label>
- <input type="date" class="form-control" id="inputError1" name="date" value="{{ book_list.date|date:'Y-n-d:x' }}">
- </div>
- {# <div class="form-group has-success">#}
- {# <label class="control-label" for="inputSuccess1">书籍名称</label>#}
- {# <input type="text" class="form-control" id="inputSuccess1" aria-describedby="helpBlock2" name="">#}
- {##}
- {# </div>#}
- <div class="form-group has-error">
- <label class="control-label" for="inputError1" >出版社</label>
- {# <input type="text" class="form-control" id="inputError1" name="publish">#}
- <select name="publish" id="inputError1" class="form-control" >
- {% for pub in publish_list %}
- {% if book_list.publish == pub %}
- <option value="{{ pub.id }}" selected>{{ pub.title }}</option>
- {% else %}
- <option value="{{ pub.id }}" >{{ pub.title }}</option>
- {% endif %}
- {% endfor %}
- </select>
- </div>
- <div class="form-group has-warning">
- <label class="control-label" for="inputWarning1">作者</label>
- {# <input type="text" class="form-control" id="inputWarning1" name="author">#}
- <select name="author" id="" multiple class="form-control">
- {% for author in author_list %}
- {% if author in book_list.authors.all %}
- <option value="{{ author.id }}" selected >{{ author.name }}</option>
- {% else %}
- <option value="{{ author.id }}" >{{ author.name }}</option>
- {% endif %}
- {% endfor %}
- </select>
- </div>
- <input type="submit" value="提交" class="btn btn-info pull-right">
- </form>
- </div>
- </div>
- </div>
- </div>
- </body>
- </html>
编辑
添加:add_book
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
- <style>
- .container{
- margin-top: 80px;
- }
- </style>
- </head>
- <body>
- <div class="container">
- <div>
- <div>
- <div class="bs-example" data-example-id="form-validation-states">
- <form action="{% url 'add_book' %}" method="post">
- {% csrf_token %}
- <div class="form-group has-success">
- <label class="control-label" for="inputSuccess1">书籍名称</label>
- <input type="text" class="form-control" id="inputSuccess1" aria-describedby="helpBlock2" name="name" value = {{ book_list.name }} >
- </div>
- <div class="form-group has-warning">
- <label class="control-label" for="inputWarning1">价格</label>
- <input type="text" class="form-control" id="inputWarning1" name="price">
- </div>
- <div class="form-group has-error">
- <label class="control-label" for="inputError1">出版时间</label>
- <input type="date" class="form-control" id="inputError1" name="date">
- </div>
- {# <div class="form-group has-success">#}
- {# <label class="control-label" for="inputSuccess1">书籍名称</label>#}
- {# <input type="text" class="form-control" id="inputSuccess1" aria-describedby="helpBlock2" name="">#}
- {##}
- {# </div>#}
- <div class="form-group has-error">
- <label class="control-label" for="inputError1">出版社</label>
- {# <input type="text" class="form-control" id="inputError1" name="publish">#}
- <select name="publish" id="inputError1" class="form-control" selected>
- {% for publish in publish_list %}
- <option value="{{ publish.id }}">{{ publish.title }}</option>
- {% endfor %}
- </select>
- </div>
- <div class="form-group has-warning">
- <label class="control-label" for="inputWarning1">作者</label>
- {# <input type="text" class="form-control" id="inputWarning1" name="author">#}
- <select name="author" id="" multiple class="form-control" multiple>
- {% for author in author_list.all %}
- <option value="{{ author.id }}" >{{ author.name }}</option>
- {% endfor %}
- </select>
- </div>
- <input type="submit" value="提交" class="btn btn-info pull-right">
- </form>
- </div>
- </div>
- </div>
- </div>
- </body>
- </html>
add_book
跳转 hint
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <style>
- .container{
- margin-top: 80px;
- }
- </style>
- </head>
- <body>
- <script type="text/javascript">
- alert('您输入的用户名不存在 请去注册');
- setTimeout()
- </script>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
- <div class="container">
- <div>
- <div>
- <a href="{% url 'register' %}" class="btn btn-lg btn-info btn-block" >Register</a>
- </div>
- </div>
- </div>
- </body>
- </html>
hint
图书管理系统 基于form组件的更多相关文章
- 基于Form组件实现的增删改和基于ModelForm实现的增删改
一.ModelForm的介绍 ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 lab ...
- 图书管理系统(无中间件,用装饰器的)-----未基于FORM组件
目的:实现图书的增删改查 models.py from django.db import models # Create your models here. class Book(models.Mod ...
- 2.1博客系统 |基于form组件和Ajax实现注册登录
基于forms组件和Ajax实现注册功能 1 基于forms组件设计注册页面 --点击头像 === 点击input --头像预览: 修改用户选中的文件对象:获取文件对象的路径:修改img的src属性, ...
- Django基于form组件实现注册校验
一 基本流程 1 创建form组件对应的类,比如LoginForm 2 前端的三种渲染方式: 渲染方式三种: 1 <form action="" novalidate met ...
- x学生管理系统(用中间件)-------基于FORM组件
目的:实现学生,老师,课程的增删改查 models.py from django.db import models # Create your models here. class UserInfo( ...
- 基于FORM组件学生管理系统【中间件】
目的:实现学生,老师,课程的增删改查 models.py from django.db import models # Create your models here. class UserInfo( ...
- day 77 基于form组件的注册功能
Form 表单 py文件 from django import forms #定义一个form类注册用 class RegForm (forms.Form): username =forms.Char ...
- 书籍管理系统 -----没有form组件
urls: from django.contrib import admin from django.urls import path,re_path from first import views ...
- django----基于Form组件实现的增删改和基于ModelForm实现的增删改
一.ModelForm的介绍 ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 lab ...
随机推荐
- hibernate_annotation字段映射位置
@Id private int id; private String name; private String wifeName; private Date birthDate; //Title是En ...
- Jquery 在多个相同标签click的问题
最近在做文章的删除动作,用Jquery来执行操作.但是实现时一开始总是只能对第一个起作用,其他的点击删除后没反应. 一开始的jquery代码是这样的, $('#articledelete').on(' ...
- C++中文件流操作
一.C++中流和流操作符 C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流.C++输入输出除了 ...
- 数据库SQLITE3初识
数据库DataBase,我们都没有接触过数据库,那么数据库是什么? 它是一个有结构的.集成的.可共享的统一管理的数据集合! 所谓有结构的,指的是数据是按一定的模型组织起来的. 简单的说,拿个箱子,用隔 ...
- iOS仿今日头条滑动导航
之前写了篇博客网易首页导航封装类.网易首页导航封装类优化,今天在前两个的基础上仿下今日头条. 1.网易首页导航封装类中主要解决了上面导航的ScrollView和下面的页面的ScrollView联动的问 ...
- 应输入 #endregion 指令报错的排查技巧
VS2010中错误排查的一个小技巧,欢迎大家吐槽: 错误 9 应输入 #endregion 指令sses.cs 3778 2 xxx.xx 这个错很明显,是缺少#endr ...
- iOS开源项目周报0216
由OpenDigg 出品的iOS开源项目周报第八期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等.Animated ...
- guava文档API制作成chm文件
将HTML制作成CHM.EXE需要用到一个小工具“HUGECHM”,将HTML打包成CHM文件 1.下载guava的最新的版本,网址:https://github.com/google/guava/w ...
- [javaSE] IO流(对象序列化)
写入 获取ObjectOutputStream对象,new出来,构造参数:FileOutputStream对象目标文件 调用ObjectOutputStream对象的writeObject()方法,参 ...
- megajson 高性能的json序列化、反序列化工具
go 自带的 encoding/json 支持json的序列化和反序列化, 然而它是基于反射的,有下面几个缺点: 反射是性能差的代名词, 并且无法在编译时进行优化. 只有 Public 字段才可以,反 ...